poe-code 15.0.21 → 15.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/metafile.json +1 -1
- package/package.json +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-UO33SQJU.js → chunk-2PQ3XOCQ.js} +239 -2
- package/packages/safe-bash/dist/chunks/chunk-2PQ3XOCQ.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-WISNTI7E.js → chunk-3Y5PKSHX.js} +7 -11
- package/packages/safe-bash/dist/chunks/{chunk-WISNTI7E.js.map → chunk-3Y5PKSHX.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-VY5N6O6I.js → chunk-BXVGCJXW.js} +108 -21
- package/packages/safe-bash/dist/chunks/chunk-BXVGCJXW.js.map +7 -0
- package/packages/safe-bash/dist/chunks/chunk-C7QNJ3D4.js +13 -0
- package/packages/safe-bash/dist/chunks/chunk-C7QNJ3D4.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-AWP6Z3RR.js → chunk-E3NZKSTA.js} +8 -12
- package/packages/safe-bash/dist/chunks/{chunk-AWP6Z3RR.js.map → chunk-E3NZKSTA.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-WXUZXY35.js → chunk-FMTBJ7SG.js} +3 -3
- package/packages/safe-bash/dist/chunks/{chunk-QX2X5EC5.js → chunk-H6E6F5KJ.js} +7 -11
- package/packages/safe-bash/dist/chunks/{chunk-QX2X5EC5.js.map → chunk-H6E6F5KJ.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-IDJQT32M.js → chunk-HQCBEAFK.js} +7 -11
- package/packages/safe-bash/dist/chunks/{chunk-IDJQT32M.js.map → chunk-HQCBEAFK.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-4V3NGZAG.js → chunk-IYFB6VED.js} +6 -10
- package/packages/safe-bash/dist/chunks/{chunk-4V3NGZAG.js.map → chunk-IYFB6VED.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/chunk-KJYVSFGF.js +284 -0
- package/packages/safe-bash/dist/chunks/chunk-KJYVSFGF.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-O7BRWSKX.js → chunk-LHKAA57T.js} +60 -17
- package/packages/safe-bash/dist/chunks/chunk-LHKAA57T.js.map +7 -0
- package/packages/safe-bash/dist/chunks/chunk-LR32SJ3D.js +915 -0
- package/packages/safe-bash/dist/chunks/chunk-LR32SJ3D.js.map +7 -0
- package/packages/safe-bash/dist/chunks/{chunk-EUNOVYVT.js → chunk-OECKXHVJ.js} +2 -2
- package/packages/safe-bash/dist/chunks/{chunk-DKT746UJ.js → chunk-PE5NZIA2.js} +5 -9
- package/packages/safe-bash/dist/chunks/{chunk-DKT746UJ.js.map → chunk-PE5NZIA2.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-4JW32W4B.js → chunk-PMBBUNNN.js} +7 -11
- package/packages/safe-bash/dist/chunks/{chunk-4JW32W4B.js.map → chunk-PMBBUNNN.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-YFFFBLBC.js → chunk-TJVKGNKA.js} +6 -10
- package/packages/safe-bash/dist/chunks/{chunk-YFFFBLBC.js.map → chunk-TJVKGNKA.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-FIY2BMTU.js → chunk-W3TLNFDB.js} +8 -12
- package/packages/safe-bash/dist/chunks/{chunk-FIY2BMTU.js.map → chunk-W3TLNFDB.js.map} +1 -1
- package/packages/safe-bash/dist/chunks/{chunk-PPFWG34Y.js → chunk-XBLVOMEJ.js} +2 -2
- package/packages/safe-bash/dist/chunks/{chunk-WJWYJDQE.js → chunk-XYVCXUGM.js} +7 -11
- package/packages/safe-bash/dist/chunks/{chunk-WJWYJDQE.js.map → chunk-XYVCXUGM.js.map} +1 -1
- package/packages/safe-bash/dist/commands/csplit/index.browser.js +4 -6
- package/packages/safe-bash/dist/commands/factor/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/getopt/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/hexdump/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/iconv/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/line-endings/index.browser.js +4 -6
- package/packages/safe-bash/dist/commands/llm/command.d.ts +3 -2
- package/packages/safe-bash/dist/commands/llm/command.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/command.js +260 -181
- package/packages/safe-bash/dist/commands/llm/command.js.map +1 -1
- package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.d.ts +3 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.js +118 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs-stream.js.map +1 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs.d.ts +16 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs.js +120 -0
- package/packages/safe-bash/dist/commands/llm/elevenlabs.js.map +1 -0
- package/packages/safe-bash/dist/commands/llm/index.browser.js +10 -4
- package/packages/safe-bash/dist/commands/llm/index.d.ts +5 -5
- package/packages/safe-bash/dist/commands/llm/index.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/index.js +3 -11
- package/packages/safe-bash/dist/commands/llm/index.js.map +1 -1
- package/packages/safe-bash/dist/commands/llm/mime.d.ts +2 -1
- package/packages/safe-bash/dist/commands/llm/mime.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/mime.js +125 -21
- package/packages/safe-bash/dist/commands/llm/mime.js.map +1 -1
- package/packages/safe-bash/dist/commands/llm/openai-http.d.ts +9 -0
- package/packages/safe-bash/dist/commands/llm/openai-http.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/llm/openai-http.js +144 -0
- package/packages/safe-bash/dist/commands/llm/openai-http.js.map +1 -0
- package/packages/safe-bash/dist/commands/llm/openai-sse.d.ts +3 -0
- package/packages/safe-bash/dist/commands/llm/openai-sse.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/llm/openai-sse.js +67 -0
- package/packages/safe-bash/dist/commands/llm/openai-sse.js.map +1 -0
- package/packages/safe-bash/dist/commands/llm/openai.d.ts +15 -0
- package/packages/safe-bash/dist/commands/llm/openai.d.ts.map +1 -0
- package/packages/safe-bash/dist/commands/llm/openai.js +203 -0
- package/packages/safe-bash/dist/commands/llm/openai.js.map +1 -0
- package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.d.ts +1 -15
- package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.js +1 -50
- package/packages/safe-bash/dist/commands/llm/providers/elevenlabs.js.map +1 -1
- package/packages/safe-bash/dist/commands/llm/providers/index.browser.js +2 -4
- package/packages/safe-bash/dist/commands/llm/providers/openai.d.ts +1 -14
- package/packages/safe-bash/dist/commands/llm/providers/openai.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/providers/openai.js +1 -77
- package/packages/safe-bash/dist/commands/llm/providers/openai.js.map +1 -1
- package/packages/safe-bash/dist/commands/llm/providers/shared.d.ts +4 -14
- package/packages/safe-bash/dist/commands/llm/providers/shared.d.ts.map +1 -1
- package/packages/safe-bash/dist/commands/llm/providers/shared.js +3 -156
- package/packages/safe-bash/dist/commands/llm/providers/shared.js.map +1 -1
- package/packages/safe-bash/dist/commands/network/index.browser.js +8 -13
- package/packages/safe-bash/dist/commands/pr/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/tsort/index.browser.js +3 -5
- package/packages/safe-bash/dist/commands/xml/index.browser.js +4 -7
- package/packages/safe-bash/dist/commands/yq/index.browser.js +5 -8
- package/packages/safe-bash/dist/core.browser.js +36 -43
- package/packages/safe-bash/dist/core.browser.js.map +1 -1
- package/packages/safe-bash/dist/chunks/chunk-BZUQJTOZ.js +0 -322
- package/packages/safe-bash/dist/chunks/chunk-BZUQJTOZ.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-EUTSYRNM.js +0 -111
- package/packages/safe-bash/dist/chunks/chunk-EUTSYRNM.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-F5AOPLRZ.js +0 -355
- package/packages/safe-bash/dist/chunks/chunk-F5AOPLRZ.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-FDGESHPB.js +0 -224
- package/packages/safe-bash/dist/chunks/chunk-FDGESHPB.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-KYU6MXVK.js +0 -58
- package/packages/safe-bash/dist/chunks/chunk-KYU6MXVK.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-O7BRWSKX.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-TTTOMUAY.js +0 -33
- package/packages/safe-bash/dist/chunks/chunk-TTTOMUAY.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-UO33SQJU.js.map +0 -7
- package/packages/safe-bash/dist/chunks/chunk-VY5N6O6I.js.map +0 -7
- /package/packages/safe-bash/dist/chunks/{chunk-WXUZXY35.js.map → chunk-FMTBJ7SG.js.map} +0 -0
- /package/packages/safe-bash/dist/chunks/{chunk-EUNOVYVT.js.map → chunk-OECKXHVJ.js.map} +0 -0
- /package/packages/safe-bash/dist/chunks/{chunk-PPFWG34Y.js.map → chunk-XBLVOMEJ.js.map} +0 -0
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/commands/csplit/index.ts", "../../src/commands/regex-execution/bounded-provider.ts", "../../src/commands/regex-execution/ascii.ts", "../../src/commands/expr/bre-engine.ts", "../../src/commands/regex-execution/protocol.ts", "../../src/commands/regex-execution/ere/errors.ts", "../../src/commands/regex-execution/ere/limits.ts", "../../src/commands/regex-execution/ere/syntax.ts", "../../src/commands/regex-execution/ere/matcher.ts", "../../src/commands/regex-execution/utf8.ts", "../../src/commands/regex-execution/portable.ts", "../../src/commands/csplit/command.ts", "../../src/commands/csplit/internal.ts", "../../src/commands/csplit/quoting.ts", "../../src/commands/csplit/io.ts", "../../src/commands/csplit/options.ts", "../../src/commands/csplit/patterns.ts", "../../src/commands/csplit/split.ts"],
|
|
4
4
|
"sourcesContent": ["import type { CommandDefinition, VirtualShellPlugin } from \"../../contracts/index.js\";\nimport { createBoundedRegexProvider } from \"../regex-execution/bounded-provider.js\";\nimport { RegexExecutor } from \"../regex-execution/portable.js\";\nimport { createCsplitCommandWithExecutor } from \"./command.js\";\nimport type { CsplitCommandsOptions } from \"./internal.js\";\n\nexport type { CsplitCommandsOptions, CsplitLimits } from \"./internal.js\";\n\nexport function createCsplitCommand(options: CsplitCommandsOptions = {}): CommandDefinition {\n const provider = options.regexExecutor === undefined ? createBoundedRegexProvider() : options.regexExecutor;\n return createCsplitCommandWithExecutor(new RegexExecutor(provider, options.regex), options);\n}\n\nexport function createCsplitCommands(options: CsplitCommandsOptions = {}): readonly CommandDefinition[] {\n return [createCsplitCommand(options)];\n}\n\nexport function csplitCommands(options: CsplitCommandsOptions = {}): VirtualShellPlugin {\n const provider = options.regexExecutor === undefined ? createBoundedRegexProvider() : options.regexExecutor;\n const executor = new RegexExecutor(provider, options.regex);\n const command = createCsplitCommandWithExecutor(executor, options);\n return { name: \"csplit-commands\", setup(host) {\n if (!options.replace && host.commands.has(\"csplit\")) throw new Error(\"Command already registered: csplit\");\n host.commands.register(command, { replace: options.replace ?? false });\n }, async dispose() { await executor.dispose(); } };\n}\n", "import { PublicDiagnostic } from \"../../diagnostics.js\";\nimport { foldAscii } from \"./ascii.js\";\nimport { yieldTurn } from \"../../contracts/yield.js\";\nimport { matchExprSteps, searchBreSteps } from \"../expr/bre-engine.js\";\nimport { EreSyntaxError, EreUnsupportedError, EreProfileLimitError, EreUsageUnknownError } from \"./ere/errors.js\";\nimport { EreLedger } from \"./ere/limits.js\";\nimport { compileEre } from \"./ere/syntax.js\";\nimport { prepareUtf8EreSubject } from \"./ere/matcher.js\";\nimport { validateUtf8 } from \"./utf8.js\";\nimport type { EreFragment, EreProgram } from \"./ere/types.js\";\nimport type { BoundedRegexProvider, RegexWorker, RegexWorkerRequest } from \"./provider.js\";\nimport { ExprMatchError, exprMatchCeilings, type BreSearchDescriptor, type BreSearchReply, type ExprMatchDescriptor, type ExprMatchLimits, type ExprMatchReply, type GrepDescriptor, type Reply, type Row, type SearchDescriptor } from \"./protocol.js\";\n\nexport interface BoundedRegexProviderOptions {\n readonly maxWorkers?: number;\n readonly maxPatterns?: number;\n readonly maxPatternBytes?: number;\n readonly maxRows?: number;\n readonly maxInputBytes?: number;\n readonly maxResultBytes?: number;\n readonly maxWork?: number;\n readonly maxAllocationUnits?: number;\n readonly maxStates?: number;\n readonly maxMatchesPerLine?: number;\n readonly maxTotalMatches?: number;\n}\n\nconst defaults: Required<BoundedRegexProviderOptions> = Object.freeze({\n maxWorkers: 2, maxPatterns: 32, maxPatternBytes: 8192, maxRows: 128,\n maxInputBytes: 65_536, maxResultBytes: 2048, maxWork: 2_000_000,\n maxAllocationUnits: 1_000_000, maxStates: 65_536, maxMatchesPerLine: 128, maxTotalMatches: 128,\n});\nconst ceilings: Required<BoundedRegexProviderOptions> = Object.freeze({\n maxWorkers: 32, maxPatterns: 128, maxPatternBytes: 65_532, maxRows: 4096,\n maxInputBytes: 1_048_576, maxResultBytes: 65_536, maxWork: 33_554_432,\n maxAllocationUnits: 4_000_000, maxStates: 65_536, maxMatchesPerLine: 100_000, maxTotalMatches: 100_000,\n});\n\ntype SelectionDescriptor = GrepDescriptor | SearchDescriptor;\ninterface OwnedRequest {\n readonly id: number;\n readonly descriptor: SelectionDescriptor;\n readonly rows: readonly Row[];\n readonly ledger: EreLedger;\n readonly limits: Required<BoundedRegexProviderOptions>;\n}\ninterface OwnedExprRequest {\n readonly id: number;\n readonly descriptor: ExprMatchDescriptor | BreSearchDescriptor;\n readonly subject: Uint8Array;\n readonly ownedUnits: number;\n}\ntype WorkerEvent = \"message\" | \"error\" | \"messageerror\" | \"exit\";\ntype Listener = ((value: unknown) => void) | ((error: Error) => void) | (() => void) | ((code: number) => void);\nconst typedArrayPrototype = Object.getPrototypeOf(Uint8Array.prototype) as object;\nconst byteLength = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"byteLength\")!.get!;\nconst byteOffset = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"byteOffset\")!.get!;\nconst byteBuffer = Object.getOwnPropertyDescriptor(typedArrayPrototype, \"buffer\")!.get!;\n\nfunction fail(kind: \"protocol\" | \"unsupported\" | \"limit\", message: string): never {\n throw new PublicDiagnostic(`bounded regex ${kind}: ${message}`);\n}\n\nfunction record(value: unknown, keys: readonly string[], optional: readonly string[] = []): asserts value is Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) fail(\"protocol\", \"expected a data record\");\n const ownKeys = Reflect.ownKeys(value);\n if (ownKeys.length < keys.length || ownKeys.length > keys.length + optional.length\n || ownKeys.some(key => typeof key !== \"string\" || !keys.includes(key) && !optional.includes(key))) fail(\"protocol\", \"unexpected data-record fields\");\n for (const key of [...keys, ...optional]) {\n const property = Object.getOwnPropertyDescriptor(value, key);\n if (property === undefined ? keys.includes(key) : !(\"value\" in property)) fail(\"protocol\", \"missing field or accessor\");\n }\n}\n\nfunction array(value: unknown, limit: number, label: string): asserts value is unknown[] {\n if (!Array.isArray(value)) fail(\"protocol\", `${label} must be an array`);\n if (value.length > limit) fail(\"limit\", `${label} count limit exceeded`);\n // The length bound precedes enumeration, including sparse-array admission.\n const keys = Reflect.ownKeys(value);\n if (keys.length !== value.length + 1) fail(\"protocol\", `${label} must be a dense data array`);\n for (let index = 0; index < value.length; index++) {\n const property = Object.getOwnPropertyDescriptor(value, index);\n if (!property || !(\"value\" in property)) fail(\"protocol\", `${label} must be a dense data array`);\n }\n}\n\nfunction options(input: BoundedRegexProviderOptions): Required<BoundedRegexProviderOptions> {\n const keys = Object.keys(defaults) as (keyof BoundedRegexProviderOptions)[];\n try { record(input, [], keys); }\n catch { throw new TypeError(\"bounded regex options require supported own data fields\"); }\n const result = { ...defaults };\n for (const key of keys) {\n if (!Object.hasOwn(input, key)) continue;\n const value = input[key];\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1 || value > ceilings[key]) throw new RangeError(`bounded regex option ${key} is outside its limit`);\n result[key] = value;\n }\n return Object.freeze(result);\n}\n\nfunction descriptor(value: unknown, limits: Required<BoundedRegexProviderOptions>): SelectionDescriptor {\n if (value === null || typeof value !== \"object\") fail(\"protocol\", \"invalid descriptor\");\n const kind = Object.getOwnPropertyDescriptor(value, \"kind\");\n if (!kind || !(\"value\" in kind)) fail(\"protocol\", \"invalid descriptor kind\");\n if (kind.value !== \"grep\" && kind.value !== \"rg\") fail(\"unsupported\", \"only grep and fixed rg selection descriptors are supported\");\n const flags = kind.value === \"grep\" ? [\"fixed\", \"extended\", \"insensitive\", \"whole\", \"word\"] : [\"fixed\", \"whole\", \"word\", \"nullData\"];\n record(value, [\"kind\", \"patterns\", ...flags, ...(kind.value === \"rg\" ? [\"case\"] : [])]);\n for (const flag of flags) if (typeof value[flag] !== \"boolean\") fail(\"protocol\", `invalid ${flag} flag`);\n if (kind.value === \"rg\" && ![\"sensitive\", \"insensitive\", \"smart\"].includes(value.case as string)) fail(\"protocol\", \"invalid case flag\");\n if (value.word || kind.value === \"rg\" && value.case !== \"sensitive\") fail(\"unsupported\", \"word matching and rg case-insensitive selection are unsupported\");\n if (kind.value === \"rg\" && !value.fixed) fail(\"unsupported\", \"rg regex modes are unsupported; use fixed UTF-8 patterns\");\n array(value.patterns, limits.maxPatterns, \"pattern\");\n let bytes = 0;\n for (let index = 0; index < value.patterns.length; index++) {\n const pattern = value.patterns[index];\n if (typeof pattern !== \"string\") fail(\"protocol\", \"patterns must be strings\");\n if (pattern.length > limits.maxPatternBytes - bytes) fail(\"limit\", \"aggregate pattern byte limit exceeded\");\n bytes += pattern.length;\n }\n return value as unknown as SelectionDescriptor;\n}\n\nfunction admit(input: RegexWorkerRequest, limits: Required<BoundedRegexProviderOptions>, signal: AbortSignal): OwnedRequest {\n record(input, [\"id\", \"descriptor\", \"rows\"]);\n const selected = descriptor(input.descriptor, limits);\n array(input.rows, limits.maxRows, \"row\");\n if (input.rows.length > Math.floor(limits.maxResultBytes / 16)) fail(\"limit\", \"result byte limit exceeded\");\n let bytes = 0;\n for (let index = 0; index < input.rows.length; index++) {\n const row = input.rows[index]!;\n record(row, [\"bytes\", \"all\", \"terminated\"], [\"directory\", \"ancestors\"]);\n if (!(row.bytes instanceof Uint8Array) || typeof row.all !== \"boolean\" || typeof row.terminated !== \"boolean\"\n || Object.hasOwn(row, \"directory\") && typeof row.directory !== \"boolean\"\n || Object.hasOwn(row, \"ancestors\") && typeof row.ancestors !== \"boolean\") fail(\"protocol\", \"invalid row\");\n if (Object.hasOwn(row, \"directory\") || Object.hasOwn(row, \"ancestors\")) fail(\"unsupported\", \"glob row flags are unsupported\");\n if (row.all && selected.kind !== \"grep\") fail(\"unsupported\", \"rg all-match enumeration is unsupported\");\n const length = byteLength.call(row.bytes) as number;\n if (length > limits.maxInputBytes - bytes) fail(\"limit\", \"aggregate input byte limit exceeded\");\n bytes += length;\n }\n const ledger = new EreLedger({ maxExpansionBytes: 1_048_576, maxExpansionFields: 8192 }, {\n patternBytes: limits.maxPatternBytes + (selected.fixed ? 0 : 4), subjectBytes: limits.maxInputBytes,\n work: limits.maxWork, allocationUnits: limits.maxAllocationUnits, states: limits.maxStates,\n });\n // Include snapshots, row/result metadata and worst-case match storage before copying.\n ledger.charge(\"allocationUnits\", bytes + input.rows.length * 12 + selected.patterns.length * 2 + 16, signal);\n const patterns: string[] = [];\n for (let index = 0; index < selected.patterns.length; index++) patterns.push(selected.patterns[index]!);\n const ownedDescriptor: SelectionDescriptor = selected.kind === \"grep\"\n ? { kind: \"grep\", patterns, fixed: selected.fixed, extended: selected.extended, insensitive: selected.insensitive, whole: selected.whole, word: selected.word }\n : { kind: \"rg\", patterns, fixed: selected.fixed, case: selected.case, whole: selected.whole, word: selected.word, nullData: selected.nullData };\n const rows: Row[] = [];\n for (let index = 0; index < input.rows.length; index++) {\n const row = input.rows[index]!;\n const source = new Uint8Array(byteBuffer.call(row.bytes) as ArrayBuffer, byteOffset.call(row.bytes) as number, byteLength.call(row.bytes) as number);\n const copy = new Uint8Array(source.length);\n copy.set(source);\n rows.push({ bytes: copy, all: row.all, terminated: row.terminated });\n }\n return { id: input.id, descriptor: ownedDescriptor, rows, ledger, limits };\n}\n\nfunction admitExpr(input: RegexWorkerRequest, limits: Required<BoundedRegexProviderOptions>, signal: AbortSignal): OwnedExprRequest {\n signal.throwIfAborted();\n record(input, [\"id\", \"descriptor\", \"rows\"]);\n const selected: unknown = input.descriptor;\n record(selected, [\"kind\", \"pattern\", \"profile\", \"limits\"]);\n if (selected.kind !== \"expr-match\" && selected.kind !== \"bre-search\" || selected.profile !== \"byte\" && selected.profile !== \"utf8-scalar\") fail(\"protocol\", \"invalid expr descriptor\");\n const keys = Object.keys(exprMatchCeilings) as (keyof ExprMatchLimits)[];\n record(selected.limits, keys);\n for (const key of keys) {\n const value = selected.limits[key];\n if (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1 || value > exprMatchCeilings[key]) fail(\"protocol\", \"invalid expr limits\");\n }\n array(input.rows, 1, \"expr row\");\n if (input.rows.length !== 1) fail(\"protocol\", \"expr requires exactly one subject\");\n const row: unknown = input.rows[0];\n record(row, [\"bytes\", \"all\", \"terminated\"]);\n if (!(selected.pattern instanceof Uint8Array) || !(row.bytes instanceof Uint8Array) || row.all !== false || row.terminated !== false) fail(\"protocol\", \"invalid expr pattern or subject\");\n const requested = selected.limits as unknown as ExprMatchLimits;\n const allowance: ExprMatchLimits = {\n ...requested,\n maxPatternBytes: Math.min(requested.maxPatternBytes, limits.maxPatternBytes),\n maxSubjectBytes: Math.min(requested.maxSubjectBytes, limits.maxInputBytes),\n maxSteps: Math.min(requested.maxSteps, limits.maxWork),\n maxStates: Math.min(requested.maxStates, limits.maxStates),\n maxAllocatedUnits: Math.min(requested.maxAllocatedUnits, limits.maxAllocationUnits),\n };\n const patternLength = byteLength.call(selected.pattern) as number;\n const subjectLength = byteLength.call(row.bytes) as number;\n if (patternLength > allowance.maxPatternBytes) throw new ExprMatchError(\"limit\", \"bounded regex pattern byte limit exceeded\");\n if (subjectLength > allowance.maxSubjectBytes) throw new ExprMatchError(\"limit\", \"bounded regex input byte limit exceeded\");\n if (limits.maxResultBytes < 32) throw new ExprMatchError(\"limit\", \"bounded regex result byte limit exceeded\");\n const ownedUnits = patternLength + subjectLength + 64;\n if (ownedUnits > allowance.maxSteps) throw new ExprMatchError(\"limit\", \"bounded regex work limit exceeded\");\n if (ownedUnits > allowance.maxAllocatedUnits) throw new ExprMatchError(\"limit\", \"bounded regex allocation limit exceeded\");\n const copy = (bytes: Uint8Array): Uint8Array => {\n const source = new Uint8Array(byteBuffer.call(bytes) as ArrayBuffer, byteOffset.call(bytes) as number, byteLength.call(bytes) as number);\n const owned = new Uint8Array(source.length);\n owned.set(source);\n return owned;\n };\n return {\n id: input.id,\n descriptor: { kind: selected.kind, pattern: copy(selected.pattern), profile: selected.profile, limits: allowance },\n subject: copy(row.bytes), ownedUnits,\n };\n}\n\nasync function executeExpr(input: OwnedExprRequest, signal: AbortSignal): Promise<ExprMatchReply | BreSearchReply> {\n if (input.descriptor.kind === \"bre-search\") {\n const execution = searchBreSteps(input.descriptor, input.subject, { ownedUnits: input.ownedUnits });\n while (true) {\n signal.throwIfAborted();\n const step = execution.next();\n if (step.done) return { id: input.id, operation: \"bre-search\", result: step.value };\n await yieldTurn(signal);\n }\n }\n const execution = matchExprSteps(input.descriptor, input.subject, { asciiOnly: true, ownedUnits: input.ownedUnits });\n while (true) {\n signal.throwIfAborted();\n const step = execution.next();\n if (step.done) return { id: input.id, operation: \"expr-match\", result: step.value };\n await yieldTurn(signal);\n }\n}\n\nasync function breFragments(pattern: string, ledger: EreLedger, signal: AbortSignal): Promise<EreFragment[]> {\n ledger.charge(\"allocationUnits\", 1, signal);\n const fragments: EreFragment[] = [];\n let bracket = -1;\n let member = false;\n let namedClass = false;\n for (let index = 0; index < pattern.length; index++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n let character = pattern[index]!;\n let literal = false;\n if (bracket >= 0) {\n if (index === bracket + 1 && character === \"^\") {\n // The initial complement marker is not a bracket member.\n } else if (namedClass) {\n if (character === \"]\" && pattern[index - 1] === \":\") namedClass = false;\n } else if (character === \"]\" && member) bracket = -1;\n else if (character === \"[\" && pattern[index + 1] === \":\") namedClass = true;\n if (!(index === bracket + 1 && character === \"^\")) member = true;\n } else if (character === \"\\\\\") {\n character = pattern[++index]!;\n ledger.charge(\"work\", 1, signal);\n if (character === undefined || !\"\\\\.^$[]*\".includes(character)) fail(\"unsupported\", \"BRE groups, intervals, backreferences and escape extensions are unsupported; use grep -E where applicable\");\n literal = true;\n } else if (\"()+?{}|\".includes(character)) literal = true;\n else if (character === \"[\") { bracket = index; member = false; }\n else if (character === \"^\" && index !== 0 || character === \"$\" && index !== pattern.length - 1) {\n fail(\"unsupported\", \"BRE anchors are supported only at record boundaries\");\n } else if (character === \"*\" && (index === 0 || index === 1 && pattern[0] === \"^\")) {\n fail(\"unsupported\", \"BRE leading literal star is unsupported; use fixed matching\");\n }\n ledger.charge(\"allocationUnits\", 4, signal);\n fragments.push({ text: character, literal });\n }\n return fragments;\n}\n\n\nasync function literalBytes(pattern: string, selected: SelectionDescriptor, ledger: EreLedger, signal: AbortSignal): Promise<Uint8Array> {\n const { kind } = selected;\n let length = 0;\n if (kind === \"grep\") {\n // grep transports raw pattern bytes in Latin-1 code units, not Unicode text.\n await validateUtf8(pattern, ledger, signal);\n length = pattern.length;\n } else {\n for (let index = 0; index < pattern.length;) {\n const scalar = pattern.codePointAt(index)!;\n const units = scalar > 0xffff ? 2 : 1;\n ledger.charge(\"work\", units, signal);\n if (scalar === 0 || scalar >= 0xd800 && scalar <= 0xdfff) fail(\"unsupported\", \"rg literal patterns require non-NUL Unicode scalars for UTF-8\");\n if (scalar === 10 && selected.kind === \"rg\" && !selected.nullData) fail(\"unsupported\", \"rg multiline matching is unsupported\");\n length += scalar < 0x80 ? 1 : scalar < 0x800 ? 2 : scalar < 0x10000 ? 3 : 4;\n index += units;\n await ledger.checkpoint(signal);\n }\n }\n ledger.charge(\"patternBytes\", length, signal);\n ledger.charge(\"allocationUnits\", length + 1, signal);\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (let index = 0; index < pattern.length;) {\n const scalar = kind === \"grep\" ? pattern.charCodeAt(index) : pattern.codePointAt(index)!;\n const width = kind === \"grep\" || scalar < 0x80 ? 1 : scalar < 0x800 ? 2 : scalar < 0x10000 ? 3 : 4;\n ledger.charge(\"work\", width, signal);\n if (width === 1) bytes[offset++] = scalar;\n else {\n bytes[offset++] = width === 2 ? 0xc0 | scalar >> 6 : width === 3 ? 0xe0 | scalar >> 12 : 0xf0 | scalar >> 18;\n if (width === 4) bytes[offset++] = 0x80 | scalar >> 12 & 0x3f;\n if (width >= 3) bytes[offset++] = 0x80 | scalar >> 6 & 0x3f;\n bytes[offset++] = 0x80 | scalar & 0x3f;\n }\n index += kind === \"rg\" && scalar > 0xffff ? 2 : 1;\n await ledger.checkpoint(signal);\n }\n return bytes;\n}\n\ninterface LiteralProgram { readonly bytes: Uint8Array; readonly fallback: Uint32Array; readonly insensitive: boolean }\n\nasync function compileLiteral(bytes: Uint8Array, ledger: EreLedger, signal: AbortSignal, insensitive = false): Promise<LiteralProgram> {\n if (insensitive) for (let index = 0; index < bytes.length; index++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n bytes[index] = foldAscii(bytes[index]!);\n }\n ledger.charge(\"states\", bytes.length, signal);\n ledger.charge(\"allocationUnits\", bytes.length * 4 + 4, signal);\n const fallback = new Uint32Array(bytes.length);\n // KMP failure links bound prefix-heavy matching to linear work per pattern/row.\n for (let index = 1, prefix = 0; index < bytes.length;) {\n ledger.charge(\"work\", 1, signal);\n if (bytes[index] === bytes[prefix]) fallback[index++] = ++prefix;\n else if (prefix > 0) prefix = fallback[prefix - 1]!;\n else index++;\n await ledger.checkpoint(signal);\n }\n return { bytes, fallback, insensitive };\n}\n\nasync function literalStart(program: LiteralProgram, subject: Uint8Array, whole: boolean, ledger: EreLedger, signal: AbortSignal, from = 0): Promise<number> {\n const { bytes, fallback } = program;\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n if (whole && (from !== 0 || bytes.length !== subject.length) || bytes.length > subject.length - from) return -1;\n if (bytes.length === 0) return from;\n for (let index = from, prefix = 0; index < subject.length;) {\n ledger.charge(\"work\", 1, signal);\n if ((program.insensitive ? foldAscii(subject[index]!) : subject[index]) === bytes[prefix]) {\n index++;\n if (++prefix === bytes.length) return index - prefix;\n } else if (prefix > 0) prefix = fallback[prefix - 1]!;\n else index++;\n await ledger.checkpoint(signal);\n }\n return -1;\n}\n\ninterface Span { readonly start: number; readonly end: number }\ninterface MatchUsage { count: number }\n\nasync function enumerate(input: OwnedRequest, row: Row, finders: readonly ((from: number) => Promise<Span | undefined>)[], usage: MatchUsage, signal: AbortSignal): Promise<Float64Array> {\n const { ledger, limits } = input;\n ledger.charge(\"allocationUnits\", finders.length + 2, signal);\n const cached: (Span | null | undefined)[] = new Array(finders.length);\n const ranges: number[] = [];\n for (let from = 0; from <= row.bytes.length;) {\n let best: Span | undefined;\n for (let index = 0; index < finders.length; index++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n let candidate = cached[index];\n if (candidate === undefined || candidate !== null && candidate.start < from) {\n candidate = await finders[index]!(from) ?? null;\n cached[index] = candidate;\n }\n if (candidate && (!best || candidate.start < best.start || candidate.start === best.start && candidate.end > best.end)) best = candidate;\n }\n if (!best) break;\n if (ranges.length / 2 >= limits.maxMatchesPerLine) fail(\"limit\", \"matches per line limit exceeded\");\n if (usage.count >= limits.maxTotalMatches) fail(\"limit\", \"total match limit exceeded\");\n if (usage.count >= Math.floor(limits.maxResultBytes / 16)) fail(\"limit\", \"result byte limit exceeded\");\n ledger.charge(\"work\", 2, signal);\n // Charge temporary number pairs and the final Float64Array before retaining either.\n ledger.charge(\"allocationUnits\", 24, signal);\n usage.count++;\n ranges.push(best.start, best.end);\n if (best.end > best.start) from = best.end;\n else {\n const byte = row.bytes[best.end];\n from = best.end + (byte === undefined || byte < 0x80 ? 1 : byte < 0xe0 ? 2 : byte < 0xf0 ? 3 : 4);\n }\n }\n ledger.charge(\"work\", ranges.length, signal);\n await ledger.checkpoint(signal);\n return new Float64Array(ranges);\n}\n\nasync function executeLiteral(input: OwnedRequest, signal: AbortSignal): Promise<Reply> {\n const { descriptor: selected, rows, ledger } = input;\n const programs: LiteralProgram[] = [];\n for (const pattern of selected.patterns) {\n programs.push(await compileLiteral(await literalBytes(pattern, selected, ledger, signal), ledger, signal, selected.kind === \"grep\" && selected.insensitive));\n }\n ledger.charge(\"allocationUnits\", 3, signal);\n const results: Float64Array[] = [];\n const usage: MatchUsage = { count: 0 };\n for (const row of rows) {\n await validateUtf8(row.bytes, ledger, signal);\n if (row.all) {\n ledger.charge(\"allocationUnits\", programs.length * 2, signal);\n const finders = programs.map(program => async (from: number): Promise<Span | undefined> => {\n const start = await literalStart(program, row.bytes, selected.whole, ledger, signal, from);\n if (start < 0) return undefined;\n ledger.charge(\"allocationUnits\", 2, signal);\n return { start, end: start + program.bytes.length };\n });\n results.push(await enumerate(input, row, finders, usage, signal));\n continue;\n }\n let start = -1;\n let end = -1;\n for (const program of programs) {\n const candidate = await literalStart(program, row.bytes, selected.whole, ledger, signal);\n if (candidate < 0) continue;\n if (start < 0 || candidate < start) { start = candidate; end = start + program.bytes.length; }\n if (selected.kind === \"grep\") break;\n }\n signal.throwIfAborted();\n if (start >= 0) {\n if (usage.count >= input.limits.maxTotalMatches || usage.count >= Math.floor(input.limits.maxResultBytes / 16)) fail(\"limit\", \"total match or result byte limit exceeded\");\n usage.count++;\n }\n results.push(start < 0 ? new Float64Array() : new Float64Array([start, end]));\n }\n return { id: input.id, results };\n}\n\nasync function execute(input: OwnedRequest, signal: AbortSignal): Promise<Reply> {\n const { descriptor: selected, rows, ledger } = input;\n if (selected.fixed) return executeLiteral(input, signal);\n const programs: EreProgram[] = [];\n for (const pattern of selected.patterns) {\n if (selected.kind === \"rg\" && !selected.nullData && pattern.includes(\"\\n\")) fail(\"unsupported\", \"rg multiline matching is unsupported\");\n ledger.charge(\"allocationUnits\", (selected.whole ? 3 : 1) * 3 + 2, signal);\n const fragments: EreFragment[] = selected.kind === \"grep\" && !selected.extended\n ? await breFragments(pattern, ledger, signal)\n : [{ text: pattern, literal: false }];\n if (selected.whole) {\n ledger.charge(\"work\", fragments.length, signal);\n await ledger.checkpoint(signal);\n fragments.unshift({ text: \"^(\", literal: false });\n fragments.push({ text: \")$\", literal: false });\n }\n programs.push(await compileEre(fragments, ledger, signal, selected.kind === \"grep\" && selected.insensitive));\n }\n ledger.charge(\"allocationUnits\", 3, signal);\n const results: Float64Array[] = [];\n const usage: MatchUsage = { count: 0 };\n for (const row of rows) {\n const subject = await prepareUtf8EreSubject(row.bytes, ledger, signal);\n if (row.all) {\n ledger.charge(\"allocationUnits\", programs.length + 1, signal);\n const finders: ((from: number) => Promise<Span | undefined>)[] = [];\n for (const program of programs) finders.push(subject(program));\n results.push(await enumerate(input, row, finders, usage, signal));\n continue;\n }\n let span: { readonly start: number; readonly end: number } | undefined;\n for (const program of programs) {\n const candidate = await subject(program)(0);\n if (!candidate) continue;\n if (selected.kind === \"grep\") { span = candidate; break; }\n // Fixed rg patterns select the first occurrence, breaking ties by pattern order.\n if (!span || candidate.start < span.start) span = candidate;\n }\n signal.throwIfAborted();\n if (span) {\n if (usage.count >= input.limits.maxTotalMatches || usage.count >= Math.floor(input.limits.maxResultBytes / 16)) fail(\"limit\", \"total match or result byte limit exceeded\");\n usage.count++;\n }\n results.push(span ? new Float64Array([span.start, span.end]) : new Float64Array());\n }\n return { id: input.id, results };\n}\n\nclass CooperativeWorker implements RegexWorker {\n readonly #controller = new AbortController();\n readonly #listeners = new Map<WorkerEvent, Set<Listener>>();\n readonly #tasks = new Set<Promise<void>>();\n #busy = false;\n #closing: Promise<void> | undefined;\n\n constructor(private readonly limits: Required<BoundedRegexProviderOptions>, private readonly release: () => void) {\n queueMicrotask(() => { if (!this.#closing) this.emit({ ready: true }); });\n }\n\n on(event: WorkerEvent, listener: Listener): void {\n if (this.#closing) return;\n let listeners = this.#listeners.get(event);\n if (!listeners) { listeners = new Set(); this.#listeners.set(event, listeners); }\n listeners.add(listener);\n }\n\n off(event: WorkerEvent, listener: Listener): void { this.#listeners.get(event)?.delete(listener); }\n\n private emit(value: unknown): void {\n for (const listener of this.#listeners.get(\"message\") ?? []) (listener as (message: unknown) => void)(value);\n }\n\n postMessage(input: RegexWorkerRequest): void {\n if (this.#closing) throw new Error(\"bounded regex worker is closed\");\n if (this.#busy) throw new Error(\"bounded regex worker is busy\");\n const identity = input !== null && typeof input === \"object\" ? Object.getOwnPropertyDescriptor(input, \"id\") : undefined;\n if (!identity || !(\"value\" in identity) || !Number.isSafeInteger(identity.value) || identity.value < 1) fail(\"protocol\", \"invalid request identity\");\n const id = identity.value as number;\n const submitted = Object.getOwnPropertyDescriptor(input, \"descriptor\")?.value as unknown;\n const operation: unknown = submitted !== null && typeof submitted === \"object\" ? Object.getOwnPropertyDescriptor(submitted, \"kind\")?.value : undefined;\n const expression = operation === \"expr-match\" || operation === \"bre-search\";\n let owned: OwnedRequest | OwnedExprRequest | undefined;\n let failure: string | undefined;\n let category: ExprMatchError[\"category\"] = \"unsupported\";\n try { owned = expression ? admitExpr(input, this.limits, this.#controller.signal) : admit(input, this.limits, this.#controller.signal); }\n catch (error) {\n if (!(error instanceof ExprMatchError || error instanceof PublicDiagnostic || error instanceof EreSyntaxError || error instanceof EreUnsupportedError || error instanceof EreProfileLimitError || error instanceof EreUsageUnknownError)) throw error;\n if (error instanceof ExprMatchError) category = error.category;\n failure = error.message.slice(0, 512);\n }\n this.#busy = true;\n const task = Promise.resolve().then(async () => {\n let reply: Reply | ExprMatchReply | BreSearchReply;\n try {\n this.#controller.signal.throwIfAborted();\n reply = owned ? \"subject\" in owned ? await executeExpr(owned, this.#controller.signal) : await execute(owned, this.#controller.signal) : { id, error: failure! };\n } catch (error) {\n if (!(error instanceof ExprMatchError || error instanceof PublicDiagnostic || error instanceof EreSyntaxError || error instanceof EreUnsupportedError || error instanceof EreProfileLimitError || error instanceof EreUsageUnknownError)) {\n owned = undefined;\n this.#busy = false;\n for (const listener of this.#listeners.get(\"error\") ?? []) (listener as (reason: unknown) => void)(error);\n return;\n }\n if (error instanceof ExprMatchError) category = error.category;\n reply = { id, error: error.message.slice(0, 512) };\n }\n if (expression && \"error\" in reply) reply = { id, operation: operation === \"bre-search\" ? \"bre-search\" : \"expr-match\", category, error: reply.error };\n // Clear request-owned payloads before notifying the consumer or allowing reuse.\n owned = undefined;\n this.#busy = false;\n if (!this.#closing) this.emit(reply);\n });\n this.#tasks.add(task);\n void task.then(() => this.#tasks.delete(task), () => this.#tasks.delete(task));\n }\n\n terminate(): Promise<void> {\n if (!this.#closing) {\n this.#closing = Promise.allSettled([...this.#tasks]).then(() => {\n this.#listeners.clear();\n this.#tasks.clear();\n this.release();\n });\n this.#controller.abort(new Error(\"bounded regex worker terminated\"));\n }\n return this.#closing;\n }\n}\n\n/** Cooperative ASCII grep patterns over UTF-8 scalars, ASCII expr, and UTF-8 literals; not a native-worker/RSS sandbox. */\nexport function createBoundedRegexProvider(input: BoundedRegexProviderOptions = {}): BoundedRegexProvider {\n const limits = options(input);\n let active = 0;\n return Object.freeze({\n createWorker(): RegexWorker {\n if (active >= limits.maxWorkers) fail(\"limit\", \"worker count limit exceeded\");\n active++;\n return new CooperativeWorker(limits, () => { active--; });\n },\n });\n}\n", "/** Locale-independent ASCII folding; other byte/scalar values remain exact. */\nexport function foldAscii(code: number): number {\n return code >= 65 && code <= 90 ? code + 32 : code;\n}\n", "import { ExprMatchError, breSearchSymbolWidth, type BreSearchDescriptor, type BreSearchResult, type ExprMatchDescriptor, type ExprMatchLimits, type ExprMatchResult } from \"../regex-execution/protocol.js\";\n\ntype CharacterSet = { negate: boolean; ranges: [number, number][]; classes: string[] };\ntype Atom = { kind: \"literal\"; value: number } | { kind: \"dot\" } | { kind: \"set\"; set: CharacterSet }\n | { kind: \"start\" | \"end\" } | { kind: \"backref\"; group: number }\n | { kind: \"assertion\"; value: \"word\" | \"not-word\" | \"word-start\" | \"word-end\" };\ntype Tree = Atom | { kind: \"sequence\"; children: Tree[] } | { kind: \"alternative\"; children: Tree[] }\n | { kind: \"group\"; group: number; child: Tree }\n | { kind: \"repeat\"; child: Tree; minimum: number; maximum: number };\ntype Instruction = Atom | { kind: \"split\"; first: number; second: number }\n | { kind: \"jump\"; target: number } | { kind: \"save\"; slot: number } | { kind: \"accept\" };\n\nclass Work {\n steps = 0;\n private nodes = 0;\n private allocated = 0;\n private states = 0;\n private checkpointSteps = 0;\n constructor(readonly limits: ExprMatchLimits) {}\n charge(amount = 1): void {\n if (amount > this.limits.maxSteps - this.steps) throw new ExprMatchError(\"limit\", \"regex work limit exceeded\");\n this.steps += amount;\n }\n allocate(amount: number): void {\n this.charge(amount);\n if (amount > this.limits.maxAllocatedUnits - this.allocated) throw new ExprMatchError(\"limit\", \"regex allocation limit exceeded\");\n this.allocated += amount;\n }\n node(): void {\n this.allocate(8);\n if (++this.nodes > this.limits.maxNodes) throw new ExprMatchError(\"limit\", \"regex nodes limit exceeded\");\n }\n state(): void {\n this.charge();\n if (++this.states > this.limits.maxStates) throw new ExprMatchError(\"limit\", \"regex states limit exceeded\");\n }\n checkpoint(): boolean {\n if (this.steps - this.checkpointSteps >= 256) {\n this.checkpointSteps = this.steps;\n return true;\n }\n return false;\n }\n}\n\nfunction syntax(message: string): never { throw new ExprMatchError(\"syntax\", message); }\nfunction unsupported(message: string): never { throw new ExprMatchError(\"unsupported\", `unsupported BRE: ${message}`); }\nconst classes = [\"alnum\", \"alpha\", \"blank\", \"cntrl\", \"digit\", \"graph\", \"lower\", \"print\", \"punct\", \"space\", \"upper\", \"xdigit\"];\nconst unicode121Classes: Readonly<Record<string, readonly number[]>> = {\n alpha: [\n 0x41, 0x5a, 0x61, 0x7a, 0xaa, 0xaa, 0xb5, 0xb5, 0xba, 0xba, 0xc0, 0xd6, 0xd8, 0xf6, 0xf8, 0x2c1, 0x2c6, 0x2d1, 0x2e0, 0x2e4,\n 0x2ec, 0x2ec, 0x2ee, 0x2ee, 0x345, 0x345, 0x370, 0x374, 0x376, 0x377, 0x37a, 0x37d, 0x37f, 0x37f, 0x386, 0x386, 0x388, 0x38a, 0x38c, 0x38c,\n 0x38e, 0x3a1, 0x3a3, 0x3f5, 0x3f7, 0x481, 0x48a, 0x52f, 0x531, 0x556, 0x559, 0x559, 0x561, 0x587, 0x5b0, 0x5bd, 0x5bf, 0x5bf, 0x5c1, 0x5c2,\n 0x5c4, 0x5c5, 0x5c7, 0x5c7, 0x5d0, 0x5ea, 0x5f0, 0x5f2, 0x610, 0x61a, 0x620, 0x657, 0x659, 0x669, 0x66e, 0x6d3, 0x6d5, 0x6dc, 0x6e1, 0x6e8,\n 0x6ed, 0x6fc, 0x6ff, 0x6ff, 0x710, 0x73f, 0x74d, 0x7b1, 0x7c0, 0x7ea, 0x7f4, 0x7f5, 0x7fa, 0x7fa, 0x800, 0x817, 0x81a, 0x82c, 0x840, 0x858,\n 0x8a0, 0x8b4, 0x8b6, 0x8bd, 0x8d4, 0x8df, 0x8e3, 0x8e9, 0x8f0, 0x93b, 0x93d, 0x94c, 0x94e, 0x950, 0x955, 0x963, 0x966, 0x96f, 0x971, 0x983,\n 0x985, 0x98c, 0x98f, 0x990, 0x993, 0x9a8, 0x9aa, 0x9b0, 0x9b2, 0x9b2, 0x9b6, 0x9b9, 0x9bd, 0x9c4, 0x9c7, 0x9c8, 0x9cb, 0x9cc, 0x9ce, 0x9ce,\n 0x9d7, 0x9d7, 0x9dc, 0x9dd, 0x9df, 0x9e3, 0x9e6, 0x9f1, 0xa01, 0xa03, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28, 0xa2a, 0xa30, 0xa32, 0xa33,\n 0xa35, 0xa36, 0xa38, 0xa39, 0xa3e, 0xa42, 0xa47, 0xa48, 0xa4b, 0xa4c, 0xa51, 0xa51, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa66, 0xa75, 0xa81, 0xa83,\n 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8, 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabd, 0xac5, 0xac7, 0xac9, 0xacb, 0xacc, 0xad0, 0xad0,\n 0xae0, 0xae3, 0xae6, 0xaef, 0xaf9, 0xaf9, 0xb01, 0xb03, 0xb05, 0xb0c, 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33, 0xb35, 0xb39,\n 0xb3d, 0xb44, 0xb47, 0xb48, 0xb4b, 0xb4c, 0xb56, 0xb57, 0xb5c, 0xb5d, 0xb5f, 0xb63, 0xb66, 0xb6f, 0xb71, 0xb71, 0xb82, 0xb83, 0xb85, 0xb8a,\n 0xb8e, 0xb90, 0xb92, 0xb95, 0xb99, 0xb9a, 0xb9c, 0xb9c, 0xb9e, 0xb9f, 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbbe, 0xbc2, 0xbc6, 0xbc8,\n 0xbca, 0xbcc, 0xbd0, 0xbd0, 0xbd7, 0xbd7, 0xbe6, 0xbef, 0xc00, 0xc03, 0xc05, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28, 0xc2a, 0xc39, 0xc3d, 0xc44,\n 0xc46, 0xc48, 0xc4a, 0xc4c, 0xc55, 0xc56, 0xc58, 0xc5a, 0xc60, 0xc63, 0xc66, 0xc6f, 0xc80, 0xc83, 0xc85, 0xc8c, 0xc8e, 0xc90, 0xc92, 0xca8,\n 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbd, 0xcc4, 0xcc6, 0xcc8, 0xcca, 0xccc, 0xcd5, 0xcd6, 0xcde, 0xcde, 0xce0, 0xce3, 0xce6, 0xcef, 0xcf1, 0xcf2,\n 0xd01, 0xd03, 0xd05, 0xd0c, 0xd0e, 0xd10, 0xd12, 0xd3a, 0xd3d, 0xd44, 0xd46, 0xd48, 0xd4a, 0xd4c, 0xd4e, 0xd4e, 0xd54, 0xd57, 0xd5f, 0xd63,\n 0xd66, 0xd6f, 0xd7a, 0xd7f, 0xd82, 0xd83, 0xd85, 0xd96, 0xd9a, 0xdb1, 0xdb3, 0xdbb, 0xdbd, 0xdbd, 0xdc0, 0xdc6, 0xdcf, 0xdd4, 0xdd6, 0xdd6,\n 0xdd8, 0xddf, 0xde6, 0xdef, 0xdf2, 0xdf3, 0xe01, 0xe3a, 0xe40, 0xe46, 0xe4d, 0xe4d, 0xe50, 0xe59, 0xe81, 0xe82, 0xe84, 0xe84, 0xe87, 0xe88,\n 0xe8a, 0xe8a, 0xe8d, 0xe8d, 0xe94, 0xe97, 0xe99, 0xe9f, 0xea1, 0xea3, 0xea5, 0xea5, 0xea7, 0xea7, 0xeaa, 0xeab, 0xead, 0xeb9, 0xebb, 0xebd,\n 0xec0, 0xec4, 0xec6, 0xec6, 0xecd, 0xecd, 0xed0, 0xed9, 0xedc, 0xedf, 0xf00, 0xf00, 0xf20, 0xf29, 0xf40, 0xf47, 0xf49, 0xf6c, 0xf71, 0xf81,\n 0xf88, 0xf97, 0xf99, 0xfbc, 0x1000, 0x1036, 0x1038, 0x1038, 0x103b, 0x1049, 0x1050, 0x1062, 0x1065, 0x1068, 0x106e, 0x1086, 0x108e, 0x108e, 0x1090, 0x1099,\n 0x109c, 0x109d, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, 0x10d0, 0x10fa, 0x10fc, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d,\n 0x1260, 0x1288, 0x128a, 0x128d, 0x1290, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310, 0x1312, 0x1315,\n 0x1318, 0x135a, 0x135f, 0x135f, 0x1380, 0x138f, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1401, 0x166c, 0x166f, 0x167f, 0x1681, 0x169a, 0x16a0, 0x16ea, 0x16ee, 0x16f8,\n 0x1700, 0x170c, 0x170e, 0x1713, 0x1720, 0x1733, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17b3, 0x17b6, 0x17c8, 0x17d7, 0x17d7,\n 0x17dc, 0x17dc, 0x17e0, 0x17e9, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x1938, 0x1946, 0x196d,\n 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19d9, 0x1a00, 0x1a1b, 0x1a20, 0x1a5e, 0x1a61, 0x1a74, 0x1a80, 0x1a89, 0x1a90, 0x1a99, 0x1aa7, 0x1aa7,\n 0x1b00, 0x1b33, 0x1b35, 0x1b43, 0x1b45, 0x1b4b, 0x1b50, 0x1b59, 0x1b80, 0x1ba9, 0x1bac, 0x1be5, 0x1be7, 0x1bf1, 0x1c00, 0x1c35, 0x1c40, 0x1c49, 0x1c4d, 0x1c7d,\n 0x1c80, 0x1c88, 0x1ce9, 0x1cec, 0x1cee, 0x1cf3, 0x1cf5, 0x1cf6, 0x1d00, 0x1dbf, 0x1de7, 0x1df4, 0x1e00, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d,\n 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fbc, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fcc,\n 0x1fd0, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fe0, 0x1fec, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffc, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x2102, 0x2102, 0x2107, 0x2107,\n 0x210a, 0x2113, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x212f, 0x2139, 0x213c, 0x213f, 0x2145, 0x2149,\n 0x214e, 0x214e, 0x2160, 0x2188, 0x24b6, 0x24e9, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2ce4, 0x2ceb, 0x2cee, 0x2cf2, 0x2cf3, 0x2d00, 0x2d25, 0x2d27, 0x2d27,\n 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d6f, 0x2d80, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce,\n 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2dff, 0x2e2f, 0x2e2f, 0x3005, 0x3007, 0x3021, 0x3029, 0x3031, 0x3035, 0x3038, 0x303c, 0x3041, 0x3096, 0x309d, 0x309f,\n 0x30a1, 0x30fa, 0x30fc, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x31a0, 0x31ba, 0x31f0, 0x31ff, 0x3400, 0x4db5, 0x4e00, 0x9fd5, 0xa000, 0xa48c, 0xa4d0, 0xa4fd,\n 0xa500, 0xa60c, 0xa610, 0xa62b, 0xa640, 0xa66e, 0xa674, 0xa67b, 0xa67f, 0xa6ef, 0xa717, 0xa71f, 0xa722, 0xa788, 0xa78b, 0xa7ae, 0xa7b0, 0xa7b7, 0xa7f7, 0xa801,\n 0xa803, 0xa805, 0xa807, 0xa80a, 0xa80c, 0xa827, 0xa840, 0xa873, 0xa880, 0xa8c3, 0xa8c5, 0xa8c5, 0xa8d0, 0xa8d9, 0xa8f2, 0xa8f7, 0xa8fb, 0xa8fb, 0xa8fd, 0xa8fd,\n 0xa900, 0xa92a, 0xa930, 0xa952, 0xa960, 0xa97c, 0xa980, 0xa9b2, 0xa9b4, 0xa9bf, 0xa9cf, 0xa9d9, 0xa9e0, 0xa9e4, 0xa9e6, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d,\n 0xaa50, 0xaa59, 0xaa60, 0xaa76, 0xaa7a, 0xaa7a, 0xaa7e, 0xaabe, 0xaac0, 0xaac0, 0xaac2, 0xaac2, 0xaadb, 0xaadd, 0xaae0, 0xaaef, 0xaaf2, 0xaaf5, 0xab01, 0xab06,\n 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabea, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6,\n 0xd7cb, 0xd7fb, 0xf900, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb28, 0xfb2a, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41,\n 0xfb43, 0xfb44, 0xfb46, 0xfbb1, 0xfbd3, 0xfd3d, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfb, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xff10, 0xff19, 0xff21, 0xff3a,\n 0xff41, 0xff5a, 0xff66, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, 0x1003c, 0x1003d,\n 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10140, 0x10174, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x10300, 0x1031f, 0x10330, 0x1034a, 0x10350, 0x1037a, 0x10380, 0x1039d,\n 0x103a0, 0x103c3, 0x103c8, 0x103cf, 0x103d1, 0x103d5, 0x10400, 0x1049d, 0x104a0, 0x104a9, 0x104b0, 0x104d3, 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x10600, 0x10736,\n 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855, 0x10860, 0x10876, 0x10880, 0x1089e,\n 0x108e0, 0x108f2, 0x108f4, 0x108f5, 0x10900, 0x10915, 0x10920, 0x10939, 0x10980, 0x109b7, 0x109be, 0x109bf, 0x10a00, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17,\n 0x10a19, 0x10a33, 0x10a60, 0x10a7c, 0x10a80, 0x10a9c, 0x10ac0, 0x10ac7, 0x10ac9, 0x10ae4, 0x10b00, 0x10b35, 0x10b40, 0x10b55, 0x10b60, 0x10b72, 0x10b80, 0x10b91, 0x10c00, 0x10c48,\n 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x11000, 0x11045, 0x11066, 0x1106f, 0x11082, 0x110b8, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11132, 0x11136, 0x1113f, 0x11150, 0x11172,\n 0x11176, 0x11176, 0x11180, 0x111bf, 0x111c1, 0x111c4, 0x111d0, 0x111da, 0x111dc, 0x111dc, 0x11200, 0x11211, 0x11213, 0x11234, 0x11237, 0x11237, 0x1123e, 0x1123e, 0x11280, 0x11286,\n 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a8, 0x112b0, 0x112e8, 0x112f0, 0x112f9, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328,\n 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133d, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134c, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11400, 0x11441,\n 0x11443, 0x11445, 0x11447, 0x1144a, 0x11450, 0x11459, 0x11480, 0x114c1, 0x114c4, 0x114c5, 0x114c7, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115be, 0x115d8, 0x115dd,\n 0x11600, 0x1163e, 0x11640, 0x11640, 0x11644, 0x11644, 0x11650, 0x11659, 0x11680, 0x116b5, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172a, 0x11730, 0x11739, 0x118a0, 0x118e9,\n 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, 0x11c38, 0x11c3e, 0x11c40, 0x11c40, 0x11c50, 0x11c59, 0x11c72, 0x11c8f, 0x11c92, 0x11ca7, 0x11ca9, 0x11cb6,\n 0x12000, 0x12399, 0x12400, 0x1246e, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16ad0, 0x16aed, 0x16b00, 0x16b36,\n 0x16b40, 0x16b43, 0x16b50, 0x16b59, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f93, 0x16f9f, 0x16fe0, 0x16fe0, 0x17000, 0x187ec, 0x18800, 0x18af2,\n 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9e, 0x1bc9e, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2,\n 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539,\n 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, 0x1d6a8, 0x1d6c0, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6fa, 0x1d6fc, 0x1d714, 0x1d716, 0x1d734,\n 0x1d736, 0x1d74e, 0x1d750, 0x1d76e, 0x1d770, 0x1d788, 0x1d78a, 0x1d7a8, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7cb, 0x1d7ce, 0x1d7ff, 0x1e000, 0x1e006, 0x1e008, 0x1e018, 0x1e01b, 0x1e021,\n 0x1e023, 0x1e024, 0x1e026, 0x1e02a, 0x1e800, 0x1e8c4, 0x1e900, 0x1e943, 0x1e947, 0x1e947, 0x1e950, 0x1e959, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee24,\n 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32, 0x1ee34, 0x1ee37, 0x1ee39, 0x1ee39, 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49, 0x1ee4b, 0x1ee4b, 0x1ee4d, 0x1ee4f,\n 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee54, 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d, 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64, 0x1ee67, 0x1ee6a,\n 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77, 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e, 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, 0x1f130, 0x1f149,\n 0x1f150, 0x1f169, 0x1f170, 0x1f189, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d,\n ],\n upper: [\n 0x41, 0x5a, 0xc0, 0xd6, 0xd8, 0xde, 0x100, 0x100, 0x102, 0x102, 0x104, 0x104, 0x106, 0x106, 0x108, 0x108, 0x10a, 0x10a, 0x10c, 0x10c,\n 0x10e, 0x10e, 0x110, 0x110, 0x112, 0x112, 0x114, 0x114, 0x116, 0x116, 0x118, 0x118, 0x11a, 0x11a, 0x11c, 0x11c, 0x11e, 0x11e, 0x120, 0x120,\n 0x122, 0x122, 0x124, 0x124, 0x126, 0x126, 0x128, 0x128, 0x12a, 0x12a, 0x12c, 0x12c, 0x12e, 0x12e, 0x130, 0x130, 0x132, 0x132, 0x134, 0x134,\n 0x136, 0x136, 0x139, 0x139, 0x13b, 0x13b, 0x13d, 0x13d, 0x13f, 0x13f, 0x141, 0x141, 0x143, 0x143, 0x145, 0x145, 0x147, 0x147, 0x14a, 0x14a,\n 0x14c, 0x14c, 0x14e, 0x14e, 0x150, 0x150, 0x152, 0x152, 0x154, 0x154, 0x156, 0x156, 0x158, 0x158, 0x15a, 0x15a, 0x15c, 0x15c, 0x15e, 0x15e,\n 0x160, 0x160, 0x162, 0x162, 0x164, 0x164, 0x166, 0x166, 0x168, 0x168, 0x16a, 0x16a, 0x16c, 0x16c, 0x16e, 0x16e, 0x170, 0x170, 0x172, 0x172,\n 0x174, 0x174, 0x176, 0x176, 0x178, 0x179, 0x17b, 0x17b, 0x17d, 0x17d, 0x181, 0x182, 0x184, 0x184, 0x186, 0x187, 0x189, 0x18b, 0x18e, 0x191,\n 0x193, 0x194, 0x196, 0x198, 0x19c, 0x19d, 0x19f, 0x1a0, 0x1a2, 0x1a2, 0x1a4, 0x1a4, 0x1a6, 0x1a7, 0x1a9, 0x1a9, 0x1ac, 0x1ac, 0x1ae, 0x1af,\n 0x1b1, 0x1b3, 0x1b5, 0x1b5, 0x1b7, 0x1b8, 0x1bc, 0x1bc, 0x1c4, 0x1c5, 0x1c7, 0x1c8, 0x1ca, 0x1cb, 0x1cd, 0x1cd, 0x1cf, 0x1cf, 0x1d1, 0x1d1,\n 0x1d3, 0x1d3, 0x1d5, 0x1d5, 0x1d7, 0x1d7, 0x1d9, 0x1d9, 0x1db, 0x1db, 0x1de, 0x1de, 0x1e0, 0x1e0, 0x1e2, 0x1e2, 0x1e4, 0x1e4, 0x1e6, 0x1e6,\n 0x1e8, 0x1e8, 0x1ea, 0x1ea, 0x1ec, 0x1ec, 0x1ee, 0x1ee, 0x1f1, 0x1f2, 0x1f4, 0x1f4, 0x1f6, 0x1f8, 0x1fa, 0x1fa, 0x1fc, 0x1fc, 0x1fe, 0x1fe,\n 0x200, 0x200, 0x202, 0x202, 0x204, 0x204, 0x206, 0x206, 0x208, 0x208, 0x20a, 0x20a, 0x20c, 0x20c, 0x20e, 0x20e, 0x210, 0x210, 0x212, 0x212,\n 0x214, 0x214, 0x216, 0x216, 0x218, 0x218, 0x21a, 0x21a, 0x21c, 0x21c, 0x21e, 0x21e, 0x220, 0x220, 0x222, 0x222, 0x224, 0x224, 0x226, 0x226,\n 0x228, 0x228, 0x22a, 0x22a, 0x22c, 0x22c, 0x22e, 0x22e, 0x230, 0x230, 0x232, 0x232, 0x23a, 0x23b, 0x23d, 0x23e, 0x241, 0x241, 0x243, 0x246,\n 0x248, 0x248, 0x24a, 0x24a, 0x24c, 0x24c, 0x24e, 0x24e, 0x370, 0x370, 0x372, 0x372, 0x376, 0x376, 0x37f, 0x37f, 0x386, 0x386, 0x388, 0x38a,\n 0x38c, 0x38c, 0x38e, 0x38f, 0x391, 0x3a1, 0x3a3, 0x3ab, 0x3cf, 0x3cf, 0x3d2, 0x3d4, 0x3d8, 0x3d8, 0x3da, 0x3da, 0x3dc, 0x3dc, 0x3de, 0x3de,\n 0x3e0, 0x3e0, 0x3e2, 0x3e2, 0x3e4, 0x3e4, 0x3e6, 0x3e6, 0x3e8, 0x3e8, 0x3ea, 0x3ea, 0x3ec, 0x3ec, 0x3ee, 0x3ee, 0x3f4, 0x3f4, 0x3f7, 0x3f7,\n 0x3f9, 0x3fa, 0x3fd, 0x42f, 0x460, 0x460, 0x462, 0x462, 0x464, 0x464, 0x466, 0x466, 0x468, 0x468, 0x46a, 0x46a, 0x46c, 0x46c, 0x46e, 0x46e,\n 0x470, 0x470, 0x472, 0x472, 0x474, 0x474, 0x476, 0x476, 0x478, 0x478, 0x47a, 0x47a, 0x47c, 0x47c, 0x47e, 0x47e, 0x480, 0x480, 0x48a, 0x48a,\n 0x48c, 0x48c, 0x48e, 0x48e, 0x490, 0x490, 0x492, 0x492, 0x494, 0x494, 0x496, 0x496, 0x498, 0x498, 0x49a, 0x49a, 0x49c, 0x49c, 0x49e, 0x49e,\n 0x4a0, 0x4a0, 0x4a2, 0x4a2, 0x4a4, 0x4a4, 0x4a6, 0x4a6, 0x4a8, 0x4a8, 0x4aa, 0x4aa, 0x4ac, 0x4ac, 0x4ae, 0x4ae, 0x4b0, 0x4b0, 0x4b2, 0x4b2,\n 0x4b4, 0x4b4, 0x4b6, 0x4b6, 0x4b8, 0x4b8, 0x4ba, 0x4ba, 0x4bc, 0x4bc, 0x4be, 0x4be, 0x4c0, 0x4c1, 0x4c3, 0x4c3, 0x4c5, 0x4c5, 0x4c7, 0x4c7,\n 0x4c9, 0x4c9, 0x4cb, 0x4cb, 0x4cd, 0x4cd, 0x4d0, 0x4d0, 0x4d2, 0x4d2, 0x4d4, 0x4d4, 0x4d6, 0x4d6, 0x4d8, 0x4d8, 0x4da, 0x4da, 0x4dc, 0x4dc,\n 0x4de, 0x4de, 0x4e0, 0x4e0, 0x4e2, 0x4e2, 0x4e4, 0x4e4, 0x4e6, 0x4e6, 0x4e8, 0x4e8, 0x4ea, 0x4ea, 0x4ec, 0x4ec, 0x4ee, 0x4ee, 0x4f0, 0x4f0,\n 0x4f2, 0x4f2, 0x4f4, 0x4f4, 0x4f6, 0x4f6, 0x4f8, 0x4f8, 0x4fa, 0x4fa, 0x4fc, 0x4fc, 0x4fe, 0x4fe, 0x500, 0x500, 0x502, 0x502, 0x504, 0x504,\n 0x506, 0x506, 0x508, 0x508, 0x50a, 0x50a, 0x50c, 0x50c, 0x50e, 0x50e, 0x510, 0x510, 0x512, 0x512, 0x514, 0x514, 0x516, 0x516, 0x518, 0x518,\n 0x51a, 0x51a, 0x51c, 0x51c, 0x51e, 0x51e, 0x520, 0x520, 0x522, 0x522, 0x524, 0x524, 0x526, 0x526, 0x528, 0x528, 0x52a, 0x52a, 0x52c, 0x52c,\n 0x52e, 0x52e, 0x531, 0x556, 0x10a0, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, 0x13a0, 0x13f5, 0x1e00, 0x1e00, 0x1e02, 0x1e02, 0x1e04, 0x1e04, 0x1e06, 0x1e06,\n 0x1e08, 0x1e08, 0x1e0a, 0x1e0a, 0x1e0c, 0x1e0c, 0x1e0e, 0x1e0e, 0x1e10, 0x1e10, 0x1e12, 0x1e12, 0x1e14, 0x1e14, 0x1e16, 0x1e16, 0x1e18, 0x1e18, 0x1e1a, 0x1e1a,\n 0x1e1c, 0x1e1c, 0x1e1e, 0x1e1e, 0x1e20, 0x1e20, 0x1e22, 0x1e22, 0x1e24, 0x1e24, 0x1e26, 0x1e26, 0x1e28, 0x1e28, 0x1e2a, 0x1e2a, 0x1e2c, 0x1e2c, 0x1e2e, 0x1e2e,\n 0x1e30, 0x1e30, 0x1e32, 0x1e32, 0x1e34, 0x1e34, 0x1e36, 0x1e36, 0x1e38, 0x1e38, 0x1e3a, 0x1e3a, 0x1e3c, 0x1e3c, 0x1e3e, 0x1e3e, 0x1e40, 0x1e40, 0x1e42, 0x1e42,\n 0x1e44, 0x1e44, 0x1e46, 0x1e46, 0x1e48, 0x1e48, 0x1e4a, 0x1e4a, 0x1e4c, 0x1e4c, 0x1e4e, 0x1e4e, 0x1e50, 0x1e50, 0x1e52, 0x1e52, 0x1e54, 0x1e54, 0x1e56, 0x1e56,\n 0x1e58, 0x1e58, 0x1e5a, 0x1e5a, 0x1e5c, 0x1e5c, 0x1e5e, 0x1e5e, 0x1e60, 0x1e60, 0x1e62, 0x1e62, 0x1e64, 0x1e64, 0x1e66, 0x1e66, 0x1e68, 0x1e68, 0x1e6a, 0x1e6a,\n 0x1e6c, 0x1e6c, 0x1e6e, 0x1e6e, 0x1e70, 0x1e70, 0x1e72, 0x1e72, 0x1e74, 0x1e74, 0x1e76, 0x1e76, 0x1e78, 0x1e78, 0x1e7a, 0x1e7a, 0x1e7c, 0x1e7c, 0x1e7e, 0x1e7e,\n 0x1e80, 0x1e80, 0x1e82, 0x1e82, 0x1e84, 0x1e84, 0x1e86, 0x1e86, 0x1e88, 0x1e88, 0x1e8a, 0x1e8a, 0x1e8c, 0x1e8c, 0x1e8e, 0x1e8e, 0x1e90, 0x1e90, 0x1e92, 0x1e92,\n 0x1e94, 0x1e94, 0x1e9e, 0x1e9e, 0x1ea0, 0x1ea0, 0x1ea2, 0x1ea2, 0x1ea4, 0x1ea4, 0x1ea6, 0x1ea6, 0x1ea8, 0x1ea8, 0x1eaa, 0x1eaa, 0x1eac, 0x1eac, 0x1eae, 0x1eae,\n 0x1eb0, 0x1eb0, 0x1eb2, 0x1eb2, 0x1eb4, 0x1eb4, 0x1eb6, 0x1eb6, 0x1eb8, 0x1eb8, 0x1eba, 0x1eba, 0x1ebc, 0x1ebc, 0x1ebe, 0x1ebe, 0x1ec0, 0x1ec0, 0x1ec2, 0x1ec2,\n 0x1ec4, 0x1ec4, 0x1ec6, 0x1ec6, 0x1ec8, 0x1ec8, 0x1eca, 0x1eca, 0x1ecc, 0x1ecc, 0x1ece, 0x1ece, 0x1ed0, 0x1ed0, 0x1ed2, 0x1ed2, 0x1ed4, 0x1ed4, 0x1ed6, 0x1ed6,\n 0x1ed8, 0x1ed8, 0x1eda, 0x1eda, 0x1edc, 0x1edc, 0x1ede, 0x1ede, 0x1ee0, 0x1ee0, 0x1ee2, 0x1ee2, 0x1ee4, 0x1ee4, 0x1ee6, 0x1ee6, 0x1ee8, 0x1ee8, 0x1eea, 0x1eea,\n 0x1eec, 0x1eec, 0x1eee, 0x1eee, 0x1ef0, 0x1ef0, 0x1ef2, 0x1ef2, 0x1ef4, 0x1ef4, 0x1ef6, 0x1ef6, 0x1ef8, 0x1ef8, 0x1efa, 0x1efa, 0x1efc, 0x1efc, 0x1efe, 0x1efe,\n 0x1f08, 0x1f0f, 0x1f18, 0x1f1d, 0x1f28, 0x1f2f, 0x1f38, 0x1f3f, 0x1f48, 0x1f4d, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f5f, 0x1f68, 0x1f6f,\n 0x1f88, 0x1f8f, 0x1f98, 0x1f9f, 0x1fa8, 0x1faf, 0x1fb8, 0x1fbc, 0x1fc8, 0x1fcc, 0x1fd8, 0x1fdb, 0x1fe8, 0x1fec, 0x1ff8, 0x1ffc, 0x2102, 0x2102, 0x2107, 0x2107,\n 0x210b, 0x210d, 0x2110, 0x2112, 0x2115, 0x2115, 0x2119, 0x211d, 0x2124, 0x2124, 0x2126, 0x2126, 0x2128, 0x2128, 0x212a, 0x212d, 0x2130, 0x2133, 0x213e, 0x213f,\n 0x2145, 0x2145, 0x2160, 0x216f, 0x2183, 0x2183, 0x24b6, 0x24cf, 0x2c00, 0x2c2e, 0x2c60, 0x2c60, 0x2c62, 0x2c64, 0x2c67, 0x2c67, 0x2c69, 0x2c69, 0x2c6b, 0x2c6b,\n 0x2c6d, 0x2c70, 0x2c72, 0x2c72, 0x2c75, 0x2c75, 0x2c7e, 0x2c80, 0x2c82, 0x2c82, 0x2c84, 0x2c84, 0x2c86, 0x2c86, 0x2c88, 0x2c88, 0x2c8a, 0x2c8a, 0x2c8c, 0x2c8c,\n 0x2c8e, 0x2c8e, 0x2c90, 0x2c90, 0x2c92, 0x2c92, 0x2c94, 0x2c94, 0x2c96, 0x2c96, 0x2c98, 0x2c98, 0x2c9a, 0x2c9a, 0x2c9c, 0x2c9c, 0x2c9e, 0x2c9e, 0x2ca0, 0x2ca0,\n 0x2ca2, 0x2ca2, 0x2ca4, 0x2ca4, 0x2ca6, 0x2ca6, 0x2ca8, 0x2ca8, 0x2caa, 0x2caa, 0x2cac, 0x2cac, 0x2cae, 0x2cae, 0x2cb0, 0x2cb0, 0x2cb2, 0x2cb2, 0x2cb4, 0x2cb4,\n 0x2cb6, 0x2cb6, 0x2cb8, 0x2cb8, 0x2cba, 0x2cba, 0x2cbc, 0x2cbc, 0x2cbe, 0x2cbe, 0x2cc0, 0x2cc0, 0x2cc2, 0x2cc2, 0x2cc4, 0x2cc4, 0x2cc6, 0x2cc6, 0x2cc8, 0x2cc8,\n 0x2cca, 0x2cca, 0x2ccc, 0x2ccc, 0x2cce, 0x2cce, 0x2cd0, 0x2cd0, 0x2cd2, 0x2cd2, 0x2cd4, 0x2cd4, 0x2cd6, 0x2cd6, 0x2cd8, 0x2cd8, 0x2cda, 0x2cda, 0x2cdc, 0x2cdc,\n 0x2cde, 0x2cde, 0x2ce0, 0x2ce0, 0x2ce2, 0x2ce2, 0x2ceb, 0x2ceb, 0x2ced, 0x2ced, 0x2cf2, 0x2cf2, 0xa640, 0xa640, 0xa642, 0xa642, 0xa644, 0xa644, 0xa646, 0xa646,\n 0xa648, 0xa648, 0xa64a, 0xa64a, 0xa64c, 0xa64c, 0xa64e, 0xa64e, 0xa650, 0xa650, 0xa652, 0xa652, 0xa654, 0xa654, 0xa656, 0xa656, 0xa658, 0xa658, 0xa65a, 0xa65a,\n 0xa65c, 0xa65c, 0xa65e, 0xa65e, 0xa660, 0xa660, 0xa662, 0xa662, 0xa664, 0xa664, 0xa666, 0xa666, 0xa668, 0xa668, 0xa66a, 0xa66a, 0xa66c, 0xa66c, 0xa680, 0xa680,\n 0xa682, 0xa682, 0xa684, 0xa684, 0xa686, 0xa686, 0xa688, 0xa688, 0xa68a, 0xa68a, 0xa68c, 0xa68c, 0xa68e, 0xa68e, 0xa690, 0xa690, 0xa692, 0xa692, 0xa694, 0xa694,\n 0xa696, 0xa696, 0xa698, 0xa698, 0xa69a, 0xa69a, 0xa722, 0xa722, 0xa724, 0xa724, 0xa726, 0xa726, 0xa728, 0xa728, 0xa72a, 0xa72a, 0xa72c, 0xa72c, 0xa72e, 0xa72e,\n 0xa732, 0xa732, 0xa734, 0xa734, 0xa736, 0xa736, 0xa738, 0xa738, 0xa73a, 0xa73a, 0xa73c, 0xa73c, 0xa73e, 0xa73e, 0xa740, 0xa740, 0xa742, 0xa742, 0xa744, 0xa744,\n 0xa746, 0xa746, 0xa748, 0xa748, 0xa74a, 0xa74a, 0xa74c, 0xa74c, 0xa74e, 0xa74e, 0xa750, 0xa750, 0xa752, 0xa752, 0xa754, 0xa754, 0xa756, 0xa756, 0xa758, 0xa758,\n 0xa75a, 0xa75a, 0xa75c, 0xa75c, 0xa75e, 0xa75e, 0xa760, 0xa760, 0xa762, 0xa762, 0xa764, 0xa764, 0xa766, 0xa766, 0xa768, 0xa768, 0xa76a, 0xa76a, 0xa76c, 0xa76c,\n 0xa76e, 0xa76e, 0xa779, 0xa779, 0xa77b, 0xa77b, 0xa77d, 0xa77e, 0xa780, 0xa780, 0xa782, 0xa782, 0xa784, 0xa784, 0xa786, 0xa786, 0xa78b, 0xa78b, 0xa78d, 0xa78d,\n 0xa790, 0xa790, 0xa792, 0xa792, 0xa796, 0xa796, 0xa798, 0xa798, 0xa79a, 0xa79a, 0xa79c, 0xa79c, 0xa79e, 0xa79e, 0xa7a0, 0xa7a0, 0xa7a2, 0xa7a2, 0xa7a4, 0xa7a4,\n 0xa7a6, 0xa7a6, 0xa7a8, 0xa7a8, 0xa7aa, 0xa7ae, 0xa7b0, 0xa7b4, 0xa7b6, 0xa7b6, 0xff21, 0xff3a, 0x10400, 0x10427, 0x104b0, 0x104d3, 0x10c80, 0x10cb2, 0x118a0, 0x118bf,\n 0x1d400, 0x1d419, 0x1d434, 0x1d44d, 0x1d468, 0x1d481, 0x1d49c, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b5, 0x1d4d0, 0x1d4e9,\n 0x1d504, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d538, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d56c, 0x1d585,\n 0x1d5a0, 0x1d5b9, 0x1d5d4, 0x1d5ed, 0x1d608, 0x1d621, 0x1d63c, 0x1d655, 0x1d670, 0x1d689, 0x1d6a8, 0x1d6c0, 0x1d6e2, 0x1d6fa, 0x1d71c, 0x1d734, 0x1d756, 0x1d76e, 0x1d790, 0x1d7a8,\n 0x1d7ca, 0x1d7ca, 0x1e900, 0x1e921, 0x1f130, 0x1f149, 0x1f150, 0x1f169, 0x1f170, 0x1f189,\n ],\n lower: [\n 0x61, 0x7a, 0xaa, 0xaa, 0xb5, 0xb5, 0xba, 0xba, 0xdf, 0xf6, 0xf8, 0xff, 0x101, 0x101, 0x103, 0x103, 0x105, 0x105, 0x107, 0x107,\n 0x109, 0x109, 0x10b, 0x10b, 0x10d, 0x10d, 0x10f, 0x10f, 0x111, 0x111, 0x113, 0x113, 0x115, 0x115, 0x117, 0x117, 0x119, 0x119, 0x11b, 0x11b,\n 0x11d, 0x11d, 0x11f, 0x11f, 0x121, 0x121, 0x123, 0x123, 0x125, 0x125, 0x127, 0x127, 0x129, 0x129, 0x12b, 0x12b, 0x12d, 0x12d, 0x12f, 0x12f,\n 0x131, 0x131, 0x133, 0x133, 0x135, 0x135, 0x137, 0x138, 0x13a, 0x13a, 0x13c, 0x13c, 0x13e, 0x13e, 0x140, 0x140, 0x142, 0x142, 0x144, 0x144,\n 0x146, 0x146, 0x148, 0x149, 0x14b, 0x14b, 0x14d, 0x14d, 0x14f, 0x14f, 0x151, 0x151, 0x153, 0x153, 0x155, 0x155, 0x157, 0x157, 0x159, 0x159,\n 0x15b, 0x15b, 0x15d, 0x15d, 0x15f, 0x15f, 0x161, 0x161, 0x163, 0x163, 0x165, 0x165, 0x167, 0x167, 0x169, 0x169, 0x16b, 0x16b, 0x16d, 0x16d,\n 0x16f, 0x16f, 0x171, 0x171, 0x173, 0x173, 0x175, 0x175, 0x177, 0x177, 0x17a, 0x17a, 0x17c, 0x17c, 0x17e, 0x180, 0x183, 0x183, 0x185, 0x185,\n 0x188, 0x188, 0x18c, 0x18d, 0x192, 0x192, 0x195, 0x195, 0x199, 0x19b, 0x19e, 0x19e, 0x1a1, 0x1a1, 0x1a3, 0x1a3, 0x1a5, 0x1a5, 0x1a8, 0x1a8,\n 0x1aa, 0x1ab, 0x1ad, 0x1ad, 0x1b0, 0x1b0, 0x1b4, 0x1b4, 0x1b6, 0x1b6, 0x1b9, 0x1ba, 0x1bd, 0x1bf, 0x1c5, 0x1c6, 0x1c8, 0x1c9, 0x1cb, 0x1cc,\n 0x1ce, 0x1ce, 0x1d0, 0x1d0, 0x1d2, 0x1d2, 0x1d4, 0x1d4, 0x1d6, 0x1d6, 0x1d8, 0x1d8, 0x1da, 0x1da, 0x1dc, 0x1dd, 0x1df, 0x1df, 0x1e1, 0x1e1,\n 0x1e3, 0x1e3, 0x1e5, 0x1e5, 0x1e7, 0x1e7, 0x1e9, 0x1e9, 0x1eb, 0x1eb, 0x1ed, 0x1ed, 0x1ef, 0x1f0, 0x1f2, 0x1f3, 0x1f5, 0x1f5, 0x1f9, 0x1f9,\n 0x1fb, 0x1fb, 0x1fd, 0x1fd, 0x1ff, 0x1ff, 0x201, 0x201, 0x203, 0x203, 0x205, 0x205, 0x207, 0x207, 0x209, 0x209, 0x20b, 0x20b, 0x20d, 0x20d,\n 0x20f, 0x20f, 0x211, 0x211, 0x213, 0x213, 0x215, 0x215, 0x217, 0x217, 0x219, 0x219, 0x21b, 0x21b, 0x21d, 0x21d, 0x21f, 0x21f, 0x221, 0x221,\n 0x223, 0x223, 0x225, 0x225, 0x227, 0x227, 0x229, 0x229, 0x22b, 0x22b, 0x22d, 0x22d, 0x22f, 0x22f, 0x231, 0x231, 0x233, 0x239, 0x23c, 0x23c,\n 0x23f, 0x240, 0x242, 0x242, 0x247, 0x247, 0x249, 0x249, 0x24b, 0x24b, 0x24d, 0x24d, 0x24f, 0x293, 0x295, 0x2b8, 0x2c0, 0x2c1, 0x2e0, 0x2e4,\n 0x345, 0x345, 0x371, 0x371, 0x373, 0x373, 0x377, 0x377, 0x37a, 0x37d, 0x390, 0x390, 0x3ac, 0x3ce, 0x3d0, 0x3d1, 0x3d5, 0x3d7, 0x3d9, 0x3d9,\n 0x3db, 0x3db, 0x3dd, 0x3dd, 0x3df, 0x3df, 0x3e1, 0x3e1, 0x3e3, 0x3e3, 0x3e5, 0x3e5, 0x3e7, 0x3e7, 0x3e9, 0x3e9, 0x3eb, 0x3eb, 0x3ed, 0x3ed,\n 0x3ef, 0x3f3, 0x3f5, 0x3f5, 0x3f8, 0x3f8, 0x3fb, 0x3fc, 0x430, 0x45f, 0x461, 0x461, 0x463, 0x463, 0x465, 0x465, 0x467, 0x467, 0x469, 0x469,\n 0x46b, 0x46b, 0x46d, 0x46d, 0x46f, 0x46f, 0x471, 0x471, 0x473, 0x473, 0x475, 0x475, 0x477, 0x477, 0x479, 0x479, 0x47b, 0x47b, 0x47d, 0x47d,\n 0x47f, 0x47f, 0x481, 0x481, 0x48b, 0x48b, 0x48d, 0x48d, 0x48f, 0x48f, 0x491, 0x491, 0x493, 0x493, 0x495, 0x495, 0x497, 0x497, 0x499, 0x499,\n 0x49b, 0x49b, 0x49d, 0x49d, 0x49f, 0x49f, 0x4a1, 0x4a1, 0x4a3, 0x4a3, 0x4a5, 0x4a5, 0x4a7, 0x4a7, 0x4a9, 0x4a9, 0x4ab, 0x4ab, 0x4ad, 0x4ad,\n 0x4af, 0x4af, 0x4b1, 0x4b1, 0x4b3, 0x4b3, 0x4b5, 0x4b5, 0x4b7, 0x4b7, 0x4b9, 0x4b9, 0x4bb, 0x4bb, 0x4bd, 0x4bd, 0x4bf, 0x4bf, 0x4c2, 0x4c2,\n 0x4c4, 0x4c4, 0x4c6, 0x4c6, 0x4c8, 0x4c8, 0x4ca, 0x4ca, 0x4cc, 0x4cc, 0x4ce, 0x4cf, 0x4d1, 0x4d1, 0x4d3, 0x4d3, 0x4d5, 0x4d5, 0x4d7, 0x4d7,\n 0x4d9, 0x4d9, 0x4db, 0x4db, 0x4dd, 0x4dd, 0x4df, 0x4df, 0x4e1, 0x4e1, 0x4e3, 0x4e3, 0x4e5, 0x4e5, 0x4e7, 0x4e7, 0x4e9, 0x4e9, 0x4eb, 0x4eb,\n 0x4ed, 0x4ed, 0x4ef, 0x4ef, 0x4f1, 0x4f1, 0x4f3, 0x4f3, 0x4f5, 0x4f5, 0x4f7, 0x4f7, 0x4f9, 0x4f9, 0x4fb, 0x4fb, 0x4fd, 0x4fd, 0x4ff, 0x4ff,\n 0x501, 0x501, 0x503, 0x503, 0x505, 0x505, 0x507, 0x507, 0x509, 0x509, 0x50b, 0x50b, 0x50d, 0x50d, 0x50f, 0x50f, 0x511, 0x511, 0x513, 0x513,\n 0x515, 0x515, 0x517, 0x517, 0x519, 0x519, 0x51b, 0x51b, 0x51d, 0x51d, 0x51f, 0x51f, 0x521, 0x521, 0x523, 0x523, 0x525, 0x525, 0x527, 0x527,\n 0x529, 0x529, 0x52b, 0x52b, 0x52d, 0x52d, 0x52f, 0x52f, 0x561, 0x587, 0x13f8, 0x13fd, 0x1c80, 0x1c88, 0x1d00, 0x1dbf, 0x1e01, 0x1e01, 0x1e03, 0x1e03,\n 0x1e05, 0x1e05, 0x1e07, 0x1e07, 0x1e09, 0x1e09, 0x1e0b, 0x1e0b, 0x1e0d, 0x1e0d, 0x1e0f, 0x1e0f, 0x1e11, 0x1e11, 0x1e13, 0x1e13, 0x1e15, 0x1e15, 0x1e17, 0x1e17,\n 0x1e19, 0x1e19, 0x1e1b, 0x1e1b, 0x1e1d, 0x1e1d, 0x1e1f, 0x1e1f, 0x1e21, 0x1e21, 0x1e23, 0x1e23, 0x1e25, 0x1e25, 0x1e27, 0x1e27, 0x1e29, 0x1e29, 0x1e2b, 0x1e2b,\n 0x1e2d, 0x1e2d, 0x1e2f, 0x1e2f, 0x1e31, 0x1e31, 0x1e33, 0x1e33, 0x1e35, 0x1e35, 0x1e37, 0x1e37, 0x1e39, 0x1e39, 0x1e3b, 0x1e3b, 0x1e3d, 0x1e3d, 0x1e3f, 0x1e3f,\n 0x1e41, 0x1e41, 0x1e43, 0x1e43, 0x1e45, 0x1e45, 0x1e47, 0x1e47, 0x1e49, 0x1e49, 0x1e4b, 0x1e4b, 0x1e4d, 0x1e4d, 0x1e4f, 0x1e4f, 0x1e51, 0x1e51, 0x1e53, 0x1e53,\n 0x1e55, 0x1e55, 0x1e57, 0x1e57, 0x1e59, 0x1e59, 0x1e5b, 0x1e5b, 0x1e5d, 0x1e5d, 0x1e5f, 0x1e5f, 0x1e61, 0x1e61, 0x1e63, 0x1e63, 0x1e65, 0x1e65, 0x1e67, 0x1e67,\n 0x1e69, 0x1e69, 0x1e6b, 0x1e6b, 0x1e6d, 0x1e6d, 0x1e6f, 0x1e6f, 0x1e71, 0x1e71, 0x1e73, 0x1e73, 0x1e75, 0x1e75, 0x1e77, 0x1e77, 0x1e79, 0x1e79, 0x1e7b, 0x1e7b,\n 0x1e7d, 0x1e7d, 0x1e7f, 0x1e7f, 0x1e81, 0x1e81, 0x1e83, 0x1e83, 0x1e85, 0x1e85, 0x1e87, 0x1e87, 0x1e89, 0x1e89, 0x1e8b, 0x1e8b, 0x1e8d, 0x1e8d, 0x1e8f, 0x1e8f,\n 0x1e91, 0x1e91, 0x1e93, 0x1e93, 0x1e95, 0x1e9d, 0x1e9f, 0x1e9f, 0x1ea1, 0x1ea1, 0x1ea3, 0x1ea3, 0x1ea5, 0x1ea5, 0x1ea7, 0x1ea7, 0x1ea9, 0x1ea9, 0x1eab, 0x1eab,\n 0x1ead, 0x1ead, 0x1eaf, 0x1eaf, 0x1eb1, 0x1eb1, 0x1eb3, 0x1eb3, 0x1eb5, 0x1eb5, 0x1eb7, 0x1eb7, 0x1eb9, 0x1eb9, 0x1ebb, 0x1ebb, 0x1ebd, 0x1ebd, 0x1ebf, 0x1ebf,\n 0x1ec1, 0x1ec1, 0x1ec3, 0x1ec3, 0x1ec5, 0x1ec5, 0x1ec7, 0x1ec7, 0x1ec9, 0x1ec9, 0x1ecb, 0x1ecb, 0x1ecd, 0x1ecd, 0x1ecf, 0x1ecf, 0x1ed1, 0x1ed1, 0x1ed3, 0x1ed3,\n 0x1ed5, 0x1ed5, 0x1ed7, 0x1ed7, 0x1ed9, 0x1ed9, 0x1edb, 0x1edb, 0x1edd, 0x1edd, 0x1edf, 0x1edf, 0x1ee1, 0x1ee1, 0x1ee3, 0x1ee3, 0x1ee5, 0x1ee5, 0x1ee7, 0x1ee7,\n 0x1ee9, 0x1ee9, 0x1eeb, 0x1eeb, 0x1eed, 0x1eed, 0x1eef, 0x1eef, 0x1ef1, 0x1ef1, 0x1ef3, 0x1ef3, 0x1ef5, 0x1ef5, 0x1ef7, 0x1ef7, 0x1ef9, 0x1ef9, 0x1efb, 0x1efb,\n 0x1efd, 0x1efd, 0x1eff, 0x1f07, 0x1f10, 0x1f15, 0x1f20, 0x1f27, 0x1f30, 0x1f37, 0x1f40, 0x1f45, 0x1f50, 0x1f57, 0x1f60, 0x1f67, 0x1f70, 0x1f7d, 0x1f80, 0x1f87,\n 0x1f90, 0x1f97, 0x1fa0, 0x1fa7, 0x1fb0, 0x1fb4, 0x1fb6, 0x1fb7, 0x1fbe, 0x1fbe, 0x1fc2, 0x1fc4, 0x1fc6, 0x1fc7, 0x1fd0, 0x1fd3, 0x1fd6, 0x1fd7, 0x1fe0, 0x1fe7,\n 0x1ff2, 0x1ff4, 0x1ff6, 0x1ff7, 0x2071, 0x2071, 0x207f, 0x207f, 0x2090, 0x209c, 0x210a, 0x210a, 0x210e, 0x210f, 0x2113, 0x2113, 0x212f, 0x212f, 0x2134, 0x2134,\n 0x2139, 0x2139, 0x213c, 0x213d, 0x2146, 0x2149, 0x214e, 0x214e, 0x2170, 0x217f, 0x2184, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x2c61, 0x2c65, 0x2c66,\n 0x2c68, 0x2c68, 0x2c6a, 0x2c6a, 0x2c6c, 0x2c6c, 0x2c71, 0x2c71, 0x2c73, 0x2c74, 0x2c76, 0x2c7d, 0x2c81, 0x2c81, 0x2c83, 0x2c83, 0x2c85, 0x2c85, 0x2c87, 0x2c87,\n 0x2c89, 0x2c89, 0x2c8b, 0x2c8b, 0x2c8d, 0x2c8d, 0x2c8f, 0x2c8f, 0x2c91, 0x2c91, 0x2c93, 0x2c93, 0x2c95, 0x2c95, 0x2c97, 0x2c97, 0x2c99, 0x2c99, 0x2c9b, 0x2c9b,\n 0x2c9d, 0x2c9d, 0x2c9f, 0x2c9f, 0x2ca1, 0x2ca1, 0x2ca3, 0x2ca3, 0x2ca5, 0x2ca5, 0x2ca7, 0x2ca7, 0x2ca9, 0x2ca9, 0x2cab, 0x2cab, 0x2cad, 0x2cad, 0x2caf, 0x2caf,\n 0x2cb1, 0x2cb1, 0x2cb3, 0x2cb3, 0x2cb5, 0x2cb5, 0x2cb7, 0x2cb7, 0x2cb9, 0x2cb9, 0x2cbb, 0x2cbb, 0x2cbd, 0x2cbd, 0x2cbf, 0x2cbf, 0x2cc1, 0x2cc1, 0x2cc3, 0x2cc3,\n 0x2cc5, 0x2cc5, 0x2cc7, 0x2cc7, 0x2cc9, 0x2cc9, 0x2ccb, 0x2ccb, 0x2ccd, 0x2ccd, 0x2ccf, 0x2ccf, 0x2cd1, 0x2cd1, 0x2cd3, 0x2cd3, 0x2cd5, 0x2cd5, 0x2cd7, 0x2cd7,\n 0x2cd9, 0x2cd9, 0x2cdb, 0x2cdb, 0x2cdd, 0x2cdd, 0x2cdf, 0x2cdf, 0x2ce1, 0x2ce1, 0x2ce3, 0x2ce4, 0x2cec, 0x2cec, 0x2cee, 0x2cee, 0x2cf3, 0x2cf3, 0x2d00, 0x2d25,\n 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0xa641, 0xa641, 0xa643, 0xa643, 0xa645, 0xa645, 0xa647, 0xa647, 0xa649, 0xa649, 0xa64b, 0xa64b, 0xa64d, 0xa64d, 0xa64f, 0xa64f,\n 0xa651, 0xa651, 0xa653, 0xa653, 0xa655, 0xa655, 0xa657, 0xa657, 0xa659, 0xa659, 0xa65b, 0xa65b, 0xa65d, 0xa65d, 0xa65f, 0xa65f, 0xa661, 0xa661, 0xa663, 0xa663,\n 0xa665, 0xa665, 0xa667, 0xa667, 0xa669, 0xa669, 0xa66b, 0xa66b, 0xa66d, 0xa66d, 0xa681, 0xa681, 0xa683, 0xa683, 0xa685, 0xa685, 0xa687, 0xa687, 0xa689, 0xa689,\n 0xa68b, 0xa68b, 0xa68d, 0xa68d, 0xa68f, 0xa68f, 0xa691, 0xa691, 0xa693, 0xa693, 0xa695, 0xa695, 0xa697, 0xa697, 0xa699, 0xa699, 0xa69b, 0xa69d, 0xa723, 0xa723,\n 0xa725, 0xa725, 0xa727, 0xa727, 0xa729, 0xa729, 0xa72b, 0xa72b, 0xa72d, 0xa72d, 0xa72f, 0xa731, 0xa733, 0xa733, 0xa735, 0xa735, 0xa737, 0xa737, 0xa739, 0xa739,\n 0xa73b, 0xa73b, 0xa73d, 0xa73d, 0xa73f, 0xa73f, 0xa741, 0xa741, 0xa743, 0xa743, 0xa745, 0xa745, 0xa747, 0xa747, 0xa749, 0xa749, 0xa74b, 0xa74b, 0xa74d, 0xa74d,\n 0xa74f, 0xa74f, 0xa751, 0xa751, 0xa753, 0xa753, 0xa755, 0xa755, 0xa757, 0xa757, 0xa759, 0xa759, 0xa75b, 0xa75b, 0xa75d, 0xa75d, 0xa75f, 0xa75f, 0xa761, 0xa761,\n 0xa763, 0xa763, 0xa765, 0xa765, 0xa767, 0xa767, 0xa769, 0xa769, 0xa76b, 0xa76b, 0xa76d, 0xa76d, 0xa76f, 0xa778, 0xa77a, 0xa77a, 0xa77c, 0xa77c, 0xa77f, 0xa77f,\n 0xa781, 0xa781, 0xa783, 0xa783, 0xa785, 0xa785, 0xa787, 0xa787, 0xa78c, 0xa78c, 0xa78e, 0xa78e, 0xa791, 0xa791, 0xa793, 0xa795, 0xa797, 0xa797, 0xa799, 0xa799,\n 0xa79b, 0xa79b, 0xa79d, 0xa79d, 0xa79f, 0xa79f, 0xa7a1, 0xa7a1, 0xa7a3, 0xa7a3, 0xa7a5, 0xa7a5, 0xa7a7, 0xa7a7, 0xa7a9, 0xa7a9, 0xa7b5, 0xa7b5, 0xa7b7, 0xa7b7,\n 0xa7f8, 0xa7fa, 0xab30, 0xab5a, 0xab5c, 0xab65, 0xab70, 0xabbf, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x104d8, 0x104fb, 0x10cc0, 0x10cf2,\n 0x118c0, 0x118df, 0x1d41a, 0x1d433, 0x1d44e, 0x1d454, 0x1d456, 0x1d467, 0x1d482, 0x1d49b, 0x1d4b6, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d4cf, 0x1d4ea, 0x1d503,\n 0x1d51e, 0x1d537, 0x1d552, 0x1d56b, 0x1d586, 0x1d59f, 0x1d5ba, 0x1d5d3, 0x1d5ee, 0x1d607, 0x1d622, 0x1d63b, 0x1d656, 0x1d66f, 0x1d68a, 0x1d6a5, 0x1d6c2, 0x1d6da, 0x1d6dc, 0x1d6e1,\n 0x1d6fc, 0x1d714, 0x1d716, 0x1d71b, 0x1d736, 0x1d74e, 0x1d750, 0x1d755, 0x1d770, 0x1d788, 0x1d78a, 0x1d78f, 0x1d7aa, 0x1d7c2, 0x1d7c4, 0x1d7c9, 0x1d7cb, 0x1d7cb, 0x1e922, 0x1e943,\n ],\n space: [\n 0x9, 0xd, 0x20, 0x20,\n ],\n cntrl: [\n 0x0, 0x1f, 0x7f, 0x7f,\n ],\n punct: [\n 0x21, 0x2f, 0x3a, 0x40, 0x5b, 0x60, 0x7b, 0x7e, 0xa0, 0xa9, 0xab, 0xb4, 0xb6, 0xb9, 0xbb, 0xbf, 0xd7, 0xd7, 0xf7, 0xf7,\n 0x2c2, 0x2c5, 0x2d2, 0x2df, 0x2e5, 0x2eb, 0x2ed, 0x2ed, 0x2ef, 0x344, 0x346, 0x36f, 0x375, 0x375, 0x37e, 0x37e, 0x384, 0x385, 0x387, 0x387,\n 0x3f6, 0x3f6, 0x482, 0x489, 0x55a, 0x55f, 0x589, 0x58a, 0x58d, 0x58f, 0x591, 0x5af, 0x5be, 0x5be, 0x5c0, 0x5c0, 0x5c3, 0x5c3, 0x5c6, 0x5c6,\n 0x5f3, 0x5f4, 0x600, 0x60f, 0x61b, 0x61c, 0x61e, 0x61f, 0x658, 0x658, 0x66a, 0x66d, 0x6d4, 0x6d4, 0x6dd, 0x6e0, 0x6e9, 0x6ec, 0x6fd, 0x6fe,\n 0x700, 0x70d, 0x70f, 0x70f, 0x740, 0x74a, 0x7eb, 0x7f3, 0x7f6, 0x7f9, 0x818, 0x819, 0x82d, 0x82d, 0x830, 0x83e, 0x859, 0x85b, 0x85e, 0x85e,\n 0x8e0, 0x8e2, 0x8ea, 0x8ef, 0x93c, 0x93c, 0x94d, 0x94d, 0x951, 0x954, 0x964, 0x965, 0x970, 0x970, 0x9bc, 0x9bc, 0x9cd, 0x9cd, 0x9f2, 0x9fb,\n 0xa3c, 0xa3c, 0xa4d, 0xa4d, 0xabc, 0xabc, 0xacd, 0xacd, 0xaf0, 0xaf1, 0xb3c, 0xb3c, 0xb4d, 0xb4d, 0xb70, 0xb70, 0xb72, 0xb77, 0xbcd, 0xbcd,\n 0xbf0, 0xbfa, 0xc4d, 0xc4d, 0xc78, 0xc7f, 0xcbc, 0xcbc, 0xccd, 0xccd, 0xd4d, 0xd4d, 0xd4f, 0xd4f, 0xd58, 0xd5e, 0xd70, 0xd79, 0xdca, 0xdca,\n 0xdf4, 0xdf4, 0xe3f, 0xe3f, 0xe47, 0xe4c, 0xe4e, 0xe4f, 0xe5a, 0xe5b, 0xec8, 0xecc, 0xf01, 0xf1f, 0xf2a, 0xf3f, 0xf82, 0xf87, 0xfbe, 0xfcc,\n 0xfce, 0xfda, 0x1037, 0x1037, 0x1039, 0x103a, 0x104a, 0x104f, 0x1063, 0x1064, 0x1069, 0x106d, 0x1087, 0x108d, 0x108f, 0x108f, 0x109a, 0x109b, 0x109e, 0x109f,\n 0x10fb, 0x10fb, 0x135d, 0x135e, 0x1360, 0x137c, 0x1390, 0x1399, 0x1400, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x16eb, 0x16ed, 0x1714, 0x1714, 0x1734, 0x1736,\n 0x17b4, 0x17b5, 0x17c9, 0x17d6, 0x17d8, 0x17db, 0x17dd, 0x17dd, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1939, 0x193b, 0x1940, 0x1940, 0x1944, 0x1945, 0x19da, 0x19da,\n 0x19de, 0x19ff, 0x1a1e, 0x1a1f, 0x1a60, 0x1a60, 0x1a75, 0x1a7c, 0x1a7f, 0x1a7f, 0x1aa0, 0x1aa6, 0x1aa8, 0x1aad, 0x1ab0, 0x1abe, 0x1b34, 0x1b34, 0x1b44, 0x1b44,\n 0x1b5a, 0x1b7c, 0x1baa, 0x1bab, 0x1be6, 0x1be6, 0x1bf2, 0x1bf3, 0x1bfc, 0x1bff, 0x1c36, 0x1c37, 0x1c3b, 0x1c3f, 0x1c7e, 0x1c7f, 0x1cc0, 0x1cc7, 0x1cd0, 0x1ce8,\n 0x1ced, 0x1ced, 0x1cf4, 0x1cf4, 0x1cf8, 0x1cf9, 0x1dc0, 0x1de6, 0x1df5, 0x1df5, 0x1dfb, 0x1dff, 0x1fbd, 0x1fbd, 0x1fbf, 0x1fc1, 0x1fcd, 0x1fcf, 0x1fdd, 0x1fdf,\n 0x1fed, 0x1fef, 0x1ffd, 0x1ffe, 0x2007, 0x2007, 0x200b, 0x2027, 0x202a, 0x205e, 0x2060, 0x2064, 0x2066, 0x2070, 0x2074, 0x207e, 0x2080, 0x208e, 0x20a0, 0x20be,\n 0x20d0, 0x20f0, 0x2100, 0x2101, 0x2103, 0x2106, 0x2108, 0x2109, 0x2114, 0x2114, 0x2116, 0x2118, 0x211e, 0x2123, 0x2125, 0x2125, 0x2127, 0x2127, 0x2129, 0x2129,\n 0x212e, 0x212e, 0x213a, 0x213b, 0x2140, 0x2144, 0x214a, 0x214d, 0x214f, 0x215f, 0x2189, 0x218b, 0x2190, 0x23fe, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x24b5,\n 0x24ea, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2bec, 0x2bef, 0x2ce5, 0x2cea, 0x2cef, 0x2cf1, 0x2cf9, 0x2cff, 0x2d70, 0x2d70,\n 0x2d7f, 0x2d7f, 0x2e00, 0x2e2e, 0x2e30, 0x2e44, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x3004, 0x3008, 0x3020, 0x302a, 0x3030,\n 0x3036, 0x3037, 0x303d, 0x303f, 0x3099, 0x309c, 0x30a0, 0x30a0, 0x30fb, 0x30fb, 0x3190, 0x319f, 0x31c0, 0x31e3, 0x3200, 0x321e, 0x3220, 0x32fe, 0x3300, 0x33ff,\n 0x4dc0, 0x4dff, 0xa490, 0xa4c6, 0xa4fe, 0xa4ff, 0xa60d, 0xa60f, 0xa66f, 0xa673, 0xa67c, 0xa67e, 0xa6f0, 0xa6f7, 0xa700, 0xa716, 0xa720, 0xa721, 0xa789, 0xa78a,\n 0xa802, 0xa802, 0xa806, 0xa806, 0xa80b, 0xa80b, 0xa828, 0xa82b, 0xa830, 0xa839, 0xa874, 0xa877, 0xa8c4, 0xa8c4, 0xa8ce, 0xa8cf, 0xa8e0, 0xa8f1, 0xa8f8, 0xa8fa,\n 0xa8fc, 0xa8fc, 0xa92b, 0xa92f, 0xa953, 0xa953, 0xa95f, 0xa95f, 0xa9b3, 0xa9b3, 0xa9c0, 0xa9cd, 0xa9de, 0xa9df, 0xa9e5, 0xa9e5, 0xaa5c, 0xaa5f, 0xaa77, 0xaa79,\n 0xaa7b, 0xaa7d, 0xaabf, 0xaabf, 0xaac1, 0xaac1, 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xaaf6, 0xaaf6, 0xab5b, 0xab5b, 0xabeb, 0xabed, 0xe000, 0xf8ff, 0xfb29, 0xfb29,\n 0xfbb2, 0xfbc1, 0xfd3e, 0xfd3f, 0xfdfc, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfeff, 0xfeff, 0xff01, 0xff0f, 0xff1a, 0xff20,\n 0xff3b, 0xff40, 0xff5b, 0xff65, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 0xfffd, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1013f, 0x10175, 0x1018e, 0x10190, 0x1019b,\n 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x102e0, 0x102fb, 0x10320, 0x10323, 0x1039f, 0x1039f, 0x103d0, 0x103d0, 0x1056f, 0x1056f, 0x10857, 0x1085f, 0x10877, 0x1087f, 0x108a7, 0x108af,\n 0x108fb, 0x108ff, 0x10916, 0x1091b, 0x1091f, 0x1091f, 0x1093f, 0x1093f, 0x109bc, 0x109bd, 0x109c0, 0x109cf, 0x109d2, 0x109ff, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58,\n 0x10a7d, 0x10a7f, 0x10a9d, 0x10a9f, 0x10ac8, 0x10ac8, 0x10ae5, 0x10ae6, 0x10aeb, 0x10af6, 0x10b39, 0x10b3f, 0x10b58, 0x10b5f, 0x10b78, 0x10b7f, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf,\n 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11046, 0x1104d, 0x11052, 0x11065, 0x1107f, 0x11081, 0x110b9, 0x110c1, 0x11133, 0x11134, 0x11140, 0x11143, 0x11173, 0x11175, 0x111c0, 0x111c0,\n 0x111c5, 0x111cd, 0x111db, 0x111db, 0x111dd, 0x111df, 0x111e1, 0x111f4, 0x11235, 0x11236, 0x11238, 0x1123d, 0x112a9, 0x112a9, 0x112e9, 0x112ea, 0x1133c, 0x1133c, 0x1134d, 0x1134d,\n 0x11366, 0x1136c, 0x11370, 0x11374, 0x11442, 0x11442, 0x11446, 0x11446, 0x1144b, 0x1144f, 0x1145b, 0x1145b, 0x1145d, 0x1145d, 0x114c2, 0x114c3, 0x114c6, 0x114c6, 0x115bf, 0x115d7,\n 0x1163f, 0x1163f, 0x11641, 0x11643, 0x11660, 0x1166c, 0x116b6, 0x116b7, 0x1172b, 0x1172b, 0x1173a, 0x1173f, 0x118ea, 0x118f2, 0x11c3f, 0x11c3f, 0x11c41, 0x11c45, 0x11c5a, 0x11c6c,\n 0x11c70, 0x11c71, 0x12470, 0x12474, 0x16a6e, 0x16a6f, 0x16af0, 0x16af5, 0x16b37, 0x16b3f, 0x16b44, 0x16b45, 0x16b5b, 0x16b61, 0x16f8f, 0x16f92, 0x1bc9c, 0x1bc9d, 0x1bc9f, 0x1bca3,\n 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d6c1, 0x1d6c1, 0x1d6db, 0x1d6db, 0x1d6fb, 0x1d6fb, 0x1d715, 0x1d715,\n 0x1d735, 0x1d735, 0x1d74f, 0x1d74f, 0x1d76f, 0x1d76f, 0x1d789, 0x1d789, 0x1d7a9, 0x1d7a9, 0x1d7c3, 0x1d7c3, 0x1d800, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e8c7, 0x1e8d6,\n 0x1e944, 0x1e946, 0x1e948, 0x1e94a, 0x1e95e, 0x1e95f, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5,\n 0x1f100, 0x1f10c, 0x1f110, 0x1f12e, 0x1f14a, 0x1f14f, 0x1f16a, 0x1f16b, 0x1f18a, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f6d2,\n 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f6, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f910, 0x1f91e,\n 0x1f920, 0x1f927, 0x1f930, 0x1f930, 0x1f933, 0x1f93e, 0x1f940, 0x1f94b, 0x1f950, 0x1f95e, 0x1f980, 0x1f991, 0x1f9c0, 0x1f9c0, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef,\n 0xf0000, 0xffffd, 0x100000, 0x10fffd,\n ],\n graph: [\n 0x21, 0x7e, 0xa0, 0x377, 0x37a, 0x37f, 0x384, 0x38a, 0x38c, 0x38c, 0x38e, 0x3a1, 0x3a3, 0x52f, 0x531, 0x556, 0x559, 0x55f, 0x561, 0x587,\n 0x589, 0x58a, 0x58d, 0x58f, 0x591, 0x5c7, 0x5d0, 0x5ea, 0x5f0, 0x5f4, 0x600, 0x61c, 0x61e, 0x70d, 0x70f, 0x74a, 0x74d, 0x7b1, 0x7c0, 0x7fa,\n 0x800, 0x82d, 0x830, 0x83e, 0x840, 0x85b, 0x85e, 0x85e, 0x8a0, 0x8b4, 0x8b6, 0x8bd, 0x8d4, 0x983, 0x985, 0x98c, 0x98f, 0x990, 0x993, 0x9a8,\n 0x9aa, 0x9b0, 0x9b2, 0x9b2, 0x9b6, 0x9b9, 0x9bc, 0x9c4, 0x9c7, 0x9c8, 0x9cb, 0x9ce, 0x9d7, 0x9d7, 0x9dc, 0x9dd, 0x9df, 0x9e3, 0x9e6, 0x9fb,\n 0xa01, 0xa03, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28, 0xa2a, 0xa30, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, 0xa39, 0xa3c, 0xa3c, 0xa3e, 0xa42,\n 0xa47, 0xa48, 0xa4b, 0xa4d, 0xa51, 0xa51, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa66, 0xa75, 0xa81, 0xa83, 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8,\n 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabc, 0xac5, 0xac7, 0xac9, 0xacb, 0xacd, 0xad0, 0xad0, 0xae0, 0xae3, 0xae6, 0xaf1, 0xaf9, 0xaf9,\n 0xb01, 0xb03, 0xb05, 0xb0c, 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33, 0xb35, 0xb39, 0xb3c, 0xb44, 0xb47, 0xb48, 0xb4b, 0xb4d,\n 0xb56, 0xb57, 0xb5c, 0xb5d, 0xb5f, 0xb63, 0xb66, 0xb77, 0xb82, 0xb83, 0xb85, 0xb8a, 0xb8e, 0xb90, 0xb92, 0xb95, 0xb99, 0xb9a, 0xb9c, 0xb9c,\n 0xb9e, 0xb9f, 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbbe, 0xbc2, 0xbc6, 0xbc8, 0xbca, 0xbcd, 0xbd0, 0xbd0, 0xbd7, 0xbd7, 0xbe6, 0xbfa,\n 0xc00, 0xc03, 0xc05, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28, 0xc2a, 0xc39, 0xc3d, 0xc44, 0xc46, 0xc48, 0xc4a, 0xc4d, 0xc55, 0xc56, 0xc58, 0xc5a,\n 0xc60, 0xc63, 0xc66, 0xc6f, 0xc78, 0xc83, 0xc85, 0xc8c, 0xc8e, 0xc90, 0xc92, 0xca8, 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbc, 0xcc4, 0xcc6, 0xcc8,\n 0xcca, 0xccd, 0xcd5, 0xcd6, 0xcde, 0xcde, 0xce0, 0xce3, 0xce6, 0xcef, 0xcf1, 0xcf2, 0xd01, 0xd03, 0xd05, 0xd0c, 0xd0e, 0xd10, 0xd12, 0xd3a,\n 0xd3d, 0xd44, 0xd46, 0xd48, 0xd4a, 0xd4f, 0xd54, 0xd63, 0xd66, 0xd7f, 0xd82, 0xd83, 0xd85, 0xd96, 0xd9a, 0xdb1, 0xdb3, 0xdbb, 0xdbd, 0xdbd,\n 0xdc0, 0xdc6, 0xdca, 0xdca, 0xdcf, 0xdd4, 0xdd6, 0xdd6, 0xdd8, 0xddf, 0xde6, 0xdef, 0xdf2, 0xdf4, 0xe01, 0xe3a, 0xe3f, 0xe5b, 0xe81, 0xe82,\n 0xe84, 0xe84, 0xe87, 0xe88, 0xe8a, 0xe8a, 0xe8d, 0xe8d, 0xe94, 0xe97, 0xe99, 0xe9f, 0xea1, 0xea3, 0xea5, 0xea5, 0xea7, 0xea7, 0xeaa, 0xeab,\n 0xead, 0xeb9, 0xebb, 0xebd, 0xec0, 0xec4, 0xec6, 0xec6, 0xec8, 0xecd, 0xed0, 0xed9, 0xedc, 0xedf, 0xf00, 0xf47, 0xf49, 0xf6c, 0xf71, 0xf97,\n 0xf99, 0xfbc, 0xfbe, 0xfcc, 0xfce, 0xfda, 0x1000, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, 0x10d0, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258,\n 0x125a, 0x125d, 0x1260, 0x1288, 0x128a, 0x128d, 0x1290, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310,\n 0x1312, 0x1315, 0x1318, 0x135a, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x167f, 0x1681, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c,\n 0x170e, 0x1714, 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e,\n 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974,\n 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe,\n 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c88, 0x1cc0, 0x1cc7, 0x1cd0, 0x1cf6, 0x1cf8, 0x1cf9, 0x1d00, 0x1df5,\n 0x1dfb, 0x1f15, 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4,\n 0x1fb6, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2007, 0x2007, 0x200b, 0x2027, 0x202a, 0x205e, 0x2060, 0x2064,\n 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 0x2100, 0x218b, 0x2190, 0x23fe, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73,\n 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2bec, 0x2bef, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27,\n 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70, 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce,\n 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e44, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3001, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff,\n 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6,\n 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ae, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd,\n 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd, 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6,\n 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6,\n 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44,\n 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74,\n 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe, 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 0xfffd,\n 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a, 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e,\n 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 0x10380, 0x1039d,\n 0x1039f, 0x103c3, 0x103c8, 0x103d5, 0x10400, 0x1049d, 0x104a0, 0x104a9, 0x104b0, 0x104d3, 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x1056f, 0x1056f, 0x10600, 0x10736,\n 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805, 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855, 0x10857, 0x1089e, 0x108a7, 0x108af,\n 0x108e0, 0x108f2, 0x108f4, 0x108f5, 0x108fb, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109bc, 0x109cf, 0x109d2, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13,\n 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55,\n 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11000, 0x1104d,\n 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8, 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4,\n 0x11200, 0x11211, 0x11213, 0x1123e, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11300, 0x11303,\n 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11350, 0x11350,\n 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, 0x1145d, 0x1145d, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5,\n 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659, 0x11660, 0x1166c, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 0x11730, 0x1173f, 0x118a0, 0x118f2,\n 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, 0x11c38, 0x11c45, 0x11c50, 0x11c6c, 0x11c70, 0x11c8f, 0x11c92, 0x11ca7, 0x11ca9, 0x11cb6, 0x12000, 0x12399,\n 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed,\n 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe0,\n 0x17000, 0x187ec, 0x18800, 0x18af2, 0x1b000, 0x1b001, 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126,\n 0x1d129, 0x1d1e8, 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac,\n 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544,\n 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, 0x1d6a8, 0x1d7cb, 0x1d7ce, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e000, 0x1e006, 0x1e008, 0x1e018, 0x1e01b, 0x1e021,\n 0x1e023, 0x1e024, 0x1e026, 0x1e02a, 0x1e800, 0x1e8c4, 0x1e8c7, 0x1e8d6, 0x1e900, 0x1e94a, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22,\n 0x1ee24, 0x1ee24, 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32, 0x1ee34, 0x1ee37, 0x1ee39, 0x1ee39, 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49, 0x1ee4b, 0x1ee4b,\n 0x1ee4d, 0x1ee4f, 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee54, 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d, 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64,\n 0x1ee67, 0x1ee6a, 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77, 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e, 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb,\n 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093, 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b,\n 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f6d2, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f6, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4,\n 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f910, 0x1f91e, 0x1f920, 0x1f927, 0x1f930, 0x1f930, 0x1f933, 0x1f93e, 0x1f940, 0x1f94b,\n 0x1f950, 0x1f95e, 0x1f980, 0x1f991, 0x1f9c0, 0x1f9c0, 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f,\n 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd,\n ],\n print: [\n 0x20, 0x7e, 0xa0, 0x377, 0x37a, 0x37f, 0x384, 0x38a, 0x38c, 0x38c, 0x38e, 0x3a1, 0x3a3, 0x52f, 0x531, 0x556, 0x559, 0x55f, 0x561, 0x587,\n 0x589, 0x58a, 0x58d, 0x58f, 0x591, 0x5c7, 0x5d0, 0x5ea, 0x5f0, 0x5f4, 0x600, 0x61c, 0x61e, 0x70d, 0x70f, 0x74a, 0x74d, 0x7b1, 0x7c0, 0x7fa,\n 0x800, 0x82d, 0x830, 0x83e, 0x840, 0x85b, 0x85e, 0x85e, 0x8a0, 0x8b4, 0x8b6, 0x8bd, 0x8d4, 0x983, 0x985, 0x98c, 0x98f, 0x990, 0x993, 0x9a8,\n 0x9aa, 0x9b0, 0x9b2, 0x9b2, 0x9b6, 0x9b9, 0x9bc, 0x9c4, 0x9c7, 0x9c8, 0x9cb, 0x9ce, 0x9d7, 0x9d7, 0x9dc, 0x9dd, 0x9df, 0x9e3, 0x9e6, 0x9fb,\n 0xa01, 0xa03, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28, 0xa2a, 0xa30, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, 0xa39, 0xa3c, 0xa3c, 0xa3e, 0xa42,\n 0xa47, 0xa48, 0xa4b, 0xa4d, 0xa51, 0xa51, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa66, 0xa75, 0xa81, 0xa83, 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8,\n 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabc, 0xac5, 0xac7, 0xac9, 0xacb, 0xacd, 0xad0, 0xad0, 0xae0, 0xae3, 0xae6, 0xaf1, 0xaf9, 0xaf9,\n 0xb01, 0xb03, 0xb05, 0xb0c, 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33, 0xb35, 0xb39, 0xb3c, 0xb44, 0xb47, 0xb48, 0xb4b, 0xb4d,\n 0xb56, 0xb57, 0xb5c, 0xb5d, 0xb5f, 0xb63, 0xb66, 0xb77, 0xb82, 0xb83, 0xb85, 0xb8a, 0xb8e, 0xb90, 0xb92, 0xb95, 0xb99, 0xb9a, 0xb9c, 0xb9c,\n 0xb9e, 0xb9f, 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbbe, 0xbc2, 0xbc6, 0xbc8, 0xbca, 0xbcd, 0xbd0, 0xbd0, 0xbd7, 0xbd7, 0xbe6, 0xbfa,\n 0xc00, 0xc03, 0xc05, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28, 0xc2a, 0xc39, 0xc3d, 0xc44, 0xc46, 0xc48, 0xc4a, 0xc4d, 0xc55, 0xc56, 0xc58, 0xc5a,\n 0xc60, 0xc63, 0xc66, 0xc6f, 0xc78, 0xc83, 0xc85, 0xc8c, 0xc8e, 0xc90, 0xc92, 0xca8, 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbc, 0xcc4, 0xcc6, 0xcc8,\n 0xcca, 0xccd, 0xcd5, 0xcd6, 0xcde, 0xcde, 0xce0, 0xce3, 0xce6, 0xcef, 0xcf1, 0xcf2, 0xd01, 0xd03, 0xd05, 0xd0c, 0xd0e, 0xd10, 0xd12, 0xd3a,\n 0xd3d, 0xd44, 0xd46, 0xd48, 0xd4a, 0xd4f, 0xd54, 0xd63, 0xd66, 0xd7f, 0xd82, 0xd83, 0xd85, 0xd96, 0xd9a, 0xdb1, 0xdb3, 0xdbb, 0xdbd, 0xdbd,\n 0xdc0, 0xdc6, 0xdca, 0xdca, 0xdcf, 0xdd4, 0xdd6, 0xdd6, 0xdd8, 0xddf, 0xde6, 0xdef, 0xdf2, 0xdf4, 0xe01, 0xe3a, 0xe3f, 0xe5b, 0xe81, 0xe82,\n 0xe84, 0xe84, 0xe87, 0xe88, 0xe8a, 0xe8a, 0xe8d, 0xe8d, 0xe94, 0xe97, 0xe99, 0xe9f, 0xea1, 0xea3, 0xea5, 0xea5, 0xea7, 0xea7, 0xeaa, 0xeab,\n 0xead, 0xeb9, 0xebb, 0xebd, 0xec0, 0xec4, 0xec6, 0xec6, 0xec8, 0xecd, 0xed0, 0xed9, 0xedc, 0xedf, 0xf00, 0xf47, 0xf49, 0xf6c, 0xf71, 0xf97,\n 0xf99, 0xfbc, 0xfbe, 0xfcc, 0xfce, 0xfda, 0x1000, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd, 0x10d0, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258,\n 0x125a, 0x125d, 0x1260, 0x1288, 0x128a, 0x128d, 0x1290, 0x12b0, 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310,\n 0x1312, 0x1315, 0x1318, 0x135a, 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714,\n 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9, 0x1800, 0x180e, 0x1810, 0x1819,\n 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b, 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab,\n 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e, 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b,\n 0x1b50, 0x1b7c, 0x1b80, 0x1bf3, 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c88, 0x1cc0, 0x1cc7, 0x1cd0, 0x1cf6, 0x1cf8, 0x1cf9, 0x1d00, 0x1df5, 0x1dfb, 0x1f15,\n 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d, 0x1f80, 0x1fb4, 0x1fb6, 0x1fc4,\n 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027, 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c,\n 0x20a0, 0x20be, 0x20d0, 0x20f0, 0x2100, 0x218b, 0x2190, 0x23fe, 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8,\n 0x2bca, 0x2bd1, 0x2bec, 0x2bef, 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70,\n 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6, 0x2dd8, 0x2dde, 0x2de0, 0x2e44,\n 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096, 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba,\n 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5, 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ae,\n 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b, 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd,\n 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06, 0xab09, 0xab0e, 0xab11, 0xab16,\n 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3, 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9,\n 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c, 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f,\n 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd, 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe,\n 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 0xfffd, 0x10000, 0x1000b, 0x1000d, 0x10026, 0x10028, 0x1003a,\n 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10100, 0x10102, 0x10107, 0x10133, 0x10137, 0x1018e, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fd,\n 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323, 0x10330, 0x1034a, 0x10350, 0x1037a, 0x10380, 0x1039d, 0x1039f, 0x103c3, 0x103c8, 0x103d5, 0x10400, 0x1049d,\n 0x104a0, 0x104a9, 0x104b0, 0x104d3, 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x1056f, 0x1056f, 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805,\n 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855, 0x10857, 0x1089e, 0x108a7, 0x108af, 0x108e0, 0x108f2, 0x108f4, 0x108f5, 0x108fb, 0x1091b,\n 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109bc, 0x109cf, 0x109d2, 0x10a03, 0x10a05, 0x10a06, 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a,\n 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6, 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c,\n 0x10ba9, 0x10baf, 0x10c00, 0x10c48, 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8,\n 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211, 0x11213, 0x1123e, 0x11280, 0x11286,\n 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 0x112b0, 0x112ea, 0x112f0, 0x112f9, 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328,\n 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344, 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c,\n 0x11370, 0x11374, 0x11400, 0x11459, 0x1145b, 0x1145b, 0x1145d, 0x1145d, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659,\n 0x11660, 0x1166c, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 0x11730, 0x1173f, 0x118a0, 0x118f2, 0x118ff, 0x118ff, 0x11ac0, 0x11af8, 0x11c00, 0x11c08,\n 0x11c0a, 0x11c36, 0x11c38, 0x11c45, 0x11c50, 0x11c6c, 0x11c70, 0x11c8f, 0x11c92, 0x11ca7, 0x11ca9, 0x11cb6, 0x12000, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543,\n 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e, 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59,\n 0x16b5b, 0x16b61, 0x16b63, 0x16b77, 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe0, 0x17000, 0x187ec, 0x18800, 0x18af2, 0x1b000, 0x1b001,\n 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8, 0x1d200, 0x1d245, 0x1d300, 0x1d356,\n 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3,\n 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c, 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5,\n 0x1d6a8, 0x1d7cb, 0x1d7ce, 0x1da8b, 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e000, 0x1e006, 0x1e008, 0x1e018, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, 0x1e800, 0x1e8c4,\n 0x1e8c7, 0x1e8d6, 0x1e900, 0x1e94a, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee24, 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32,\n 0x1ee34, 0x1ee37, 0x1ee39, 0x1ee39, 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49, 0x1ee4b, 0x1ee4b, 0x1ee4d, 0x1ee4f, 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee54,\n 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d, 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64, 0x1ee67, 0x1ee6a, 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77,\n 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e, 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093,\n 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b, 0x1f170, 0x1f1ac, 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b,\n 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f6d2, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f6, 0x1f700, 0x1f773, 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859,\n 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f910, 0x1f91e, 0x1f920, 0x1f927, 0x1f930, 0x1f930, 0x1f933, 0x1f93e, 0x1f940, 0x1f94b, 0x1f950, 0x1f95e, 0x1f980, 0x1f991, 0x1f9c0, 0x1f9c0,\n 0x20000, 0x2a6d6, 0x2a700, 0x2b734, 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd,\n ],\n blank: [\n 0x9, 0x9, 0x20, 0x20,\n ],\n};\n\nclass Parser {\n private position = 0;\n groups = 0;\n private readonly closed = new Set<number>();\n constructor(private readonly tokens: readonly string[], private readonly work: Work, private readonly search = false, private readonly unicode = false) {}\n private at(value: string): boolean { return this.tokens[this.position] === value; }\n private escaped(value: string): boolean { return this.at(\"\\\\\") && this.tokens[this.position + 1] === value; }\n private tree<TreeNode extends Tree>(node: TreeNode): TreeNode { this.work.node(); return node; }\n *parse(depth = 0): Generator<void, Tree> {\n if (depth > this.work.limits.maxDepth) throw new ExprMatchError(\"limit\", \"regex depth limit exceeded\");\n const branches: Tree[] = [];\n do {\n if (branches.length) this.position += 2;\n const children: Tree[] = [];\n while (this.position < this.tokens.length && !this.escaped(\"|\") && !this.escaped(\")\")) {\n this.work.charge();\n if (this.work.checkpoint()) yield;\n let child = yield* this.atom(depth, children.length === 0);\n while ((this.at(\"*\") || this.escaped(\"+\") || this.escaped(\"?\") || this.escaped(\"{\"))\n && (!this.search || child.kind !== \"start\" && child.kind !== \"end\" && child.kind !== \"assertion\")) {\n const repetition = this.repetition();\n if (child.kind === \"start\" || child.kind === \"end\") unsupported(\"repeated anchor\");\n child = this.tree({ kind: \"repeat\", child, ...repetition });\n if (!this.search && (this.at(\"*\") || this.escaped(\"+\") || this.escaped(\"?\") || this.escaped(\"{\"))) unsupported(\"stacked repetition operators\");\n }\n children.push(child);\n }\n branches.push(this.tree({ kind: \"sequence\", children }));\n } while (this.escaped(\"|\"));\n if (depth === 0 && this.position !== this.tokens.length) syntax(\"Unmatched ) or \\\\)\");\n return branches.length === 1 ? branches[0]! : this.tree({ kind: \"alternative\", children: branches });\n }\n private *atom(depth: number, initial: boolean): Generator<void, Tree> {\n const token = this.tokens[this.position++]!;\n if (token === \"[\") return this.tree({ kind: \"set\", set: yield* (this.search ? this.searchBracket() : this.bracket()) });\n if (token === \".\") return this.tree({ kind: \"dot\" });\n if (token === \"^\" && initial) return this.tree({ kind: \"start\" });\n if (token === \"$\" && (this.position === this.tokens.length || this.escaped(\"|\") || this.escaped(\")\"))) return this.tree({ kind: \"end\" });\n if (token !== \"\\\\\") return this.tree({ kind: \"literal\", value: token.codePointAt(0)! });\n const escaped = this.tokens[this.position++];\n if (escaped === undefined) syntax(\"Trailing backslash\");\n if (escaped === \"(\") {\n const group = ++this.groups;\n if (group > 32) throw new ExprMatchError(\"limit\", \"regex capture groups limit exceeded\");\n const child = yield* this.parse(depth + 1);\n if (!this.escaped(\")\")) syntax(\"Unmatched ( or \\\\(\");\n this.position += 2;\n this.closed.add(group);\n return this.tree({ kind: \"group\", group, child });\n }\n if (escaped >= \"1\" && escaped <= \"9\") {\n const group = Number(escaped);\n if (!this.closed.has(group)) syntax(\"Invalid back reference\");\n return this.tree({ kind: \"backref\", group });\n }\n if (this.search) {\n if (escaped === \"`\" || escaped === \"'\") return this.tree({ kind: escaped === \"`\" ? \"start\" : \"end\" });\n if (escaped === \"b\" || escaped === \"B\" || escaped === \"<\" || escaped === \">\") {\n return this.tree({ kind: \"assertion\", value: escaped === \"b\" ? \"word\" : escaped === \"B\" ? \"not-word\" : escaped === \"<\" ? \"word-start\" : \"word-end\" });\n }\n if (escaped === \"w\" || escaped === \"W\" || escaped === \"s\" || escaped === \"S\") {\n return this.tree({ kind: \"set\", set: { negate: escaped === \"W\" || escaped === \"S\", ranges: [], classes: [escaped === \"w\" || escaped === \"W\" ? \"word\" : \"space\"] } });\n }\n } else {\n if (escaped === \"{\" || escaped === \"+\" || escaped === \"?\") unsupported(\"leading escaped repetition operator\");\n if (escaped === \"`\" || escaped === \"'\" || escaped === \"<\" || escaped === \">\"\n || escaped >= \"a\" && escaped <= \"z\" || escaped >= \"A\" && escaped <= \"Z\" || escaped === \"0\") unsupported(\"alphabetic, word or buffer escape\");\n }\n return this.tree({ kind: \"literal\", value: escaped.codePointAt(0)! });\n }\n private repetition(): { minimum: number; maximum: number } {\n if (this.at(\"*\")) { this.position++; return { minimum: 0, maximum: Infinity }; }\n if (this.escaped(\"+\")) { this.position += 2; return { minimum: 1, maximum: Infinity }; }\n if (this.escaped(\"?\")) { this.position += 2; return { minimum: 0, maximum: 1 }; }\n this.position += 2;\n const number = (): number | undefined => {\n let value = 0, count = 0;\n while (this.tokens[this.position]! >= \"0\" && this.tokens[this.position]! <= \"9\") {\n this.work.charge();\n value = value * 10 + Number(this.tokens[this.position++]);\n if (++count > 5 || value > 32767) syntax(\"Regular expression too big\");\n }\n return count ? value : undefined;\n };\n const minimum = number() ?? (this.search && this.at(\",\") ? 0 : undefined);\n if (minimum === undefined) syntax(\"Invalid content of \\\\{\\\\}\");\n let maximum: number = minimum;\n if (this.at(\",\")) { this.position++; maximum = number() ?? Infinity; }\n if (!this.escaped(\"}\")) syntax(\"Unmatched \\\\{\");\n this.position += 2;\n if (maximum < minimum) syntax(\"Invalid content of \\\\{\\\\}\");\n return { minimum, maximum };\n }\n private *searchBracket(): Generator<void, CharacterSet> {\n if (this.position === this.tokens.length) syntax(\"Invalid regular expression\");\n const set: CharacterSet = { negate: this.at(\"^\"), ranges: [], classes: [] };\n if (set.negate) this.position++;\n const element = (): number | string => {\n if (this.at(\"[\") && [\":\", \".\", \"=\"].includes(this.tokens[this.position + 1]!)) {\n const marker = this.tokens[this.position + 1]!;\n this.position += 2;\n let name = \"\";\n while (this.position < this.tokens.length && !(this.at(marker) && this.tokens[this.position + 1] === \"]\")) {\n this.work.charge();\n if (name.length >= 16) syntax(marker === \":\" ? \"Invalid character class name\" : \"Invalid collation character\");\n name += this.tokens[this.position++];\n }\n if (!this.at(marker) || this.tokens[this.position + 1] !== \"]\") syntax(\"Unmatched [, [^, [:, [., or [=\");\n this.position += 2;\n if (marker === \":\") {\n if (!classes.includes(name)) syntax(\"Invalid character class name\");\n return name;\n }\n if (Array.from(name).length !== 1) syntax(\"Invalid collation character\");\n return name.codePointAt(0)!;\n }\n return this.tokens[this.position++]!.codePointAt(0)!;\n };\n let first = true;\n while (this.position < this.tokens.length) {\n this.work.allocate(4);\n if (this.work.checkpoint()) yield;\n if (this.at(\"]\") && !first) { this.position++; return set; }\n first = false;\n const start = element();\n if (this.at(\"-\") && this.tokens[this.position + 1] !== \"]\" && this.position + 1 < this.tokens.length) {\n this.position++;\n const end = element();\n if (typeof start !== \"number\" || typeof end !== \"number\") syntax(\"Invalid range end\");\n if (this.unicode && (start >= 0xdc80 && start <= 0xdcff || end >= 0xdc80 && end <= 0xdcff)) syntax(\"Invalid collation character\");\n set.ranges.push([start, end]);\n } else if (typeof start === \"string\") set.classes.push(start);\n else set.ranges.push([start, start]);\n }\n syntax(\"Unmatched [, [^, [:, [., or [=\");\n }\n private *bracket(): Generator<void, CharacterSet> {\n if (this.position === this.tokens.length) syntax(\"Invalid regular expression\");\n const set: CharacterSet = { negate: this.at(\"^\"), ranges: [], classes: [] };\n if (set.negate) this.position++;\n let first = true;\n while (this.position < this.tokens.length) {\n this.work.allocate(4);\n if (this.work.checkpoint()) yield;\n if (this.at(\"]\") && !first) { this.position++; return set; }\n first = false;\n if (this.at(\"[\") && [\":\", \".\", \"=\"].includes(this.tokens[this.position + 1]!)) {\n const marker = this.tokens[this.position + 1]!;\n if (marker !== \":\") unsupported(\"collating symbols and equivalence classes\");\n this.position += 2;\n let name = \"\";\n while (this.position < this.tokens.length && !this.at(\":\")) {\n this.work.charge();\n if (name.length >= 16) syntax(\"Invalid character class name\");\n name += this.tokens[this.position++];\n }\n if (!this.at(\":\") || this.tokens[this.position + 1] !== \"]\" || !classes.includes(name)) syntax(\"Invalid character class name\");\n this.position += 2;\n set.classes.push(name);\n if (this.at(\"-\") && this.tokens[this.position + 1] !== \"]\") unsupported(\"character class range endpoint\");\n continue;\n }\n const start = this.tokens[this.position++]!.codePointAt(0)!;\n if (this.at(\"-\") && this.tokens[this.position + 1] !== \"]\" && this.position + 1 < this.tokens.length) {\n this.position++;\n if (this.at(\"[\") && [\":\", \".\", \"=\"].includes(this.tokens[this.position + 1]!)) unsupported(\"character class range endpoint\");\n const end = this.tokens[this.position++]!.codePointAt(0)!;\n if (start > 127 || end > 127) unsupported(\"non-ASCII range endpoints\");\n set.ranges.push([start, end]);\n } else set.ranges.push([start, start]);\n }\n syntax(\"Unmatched [, [^, [:, [., or [=\");\n }\n}\n\nfunction* validateCaptureRepetition(tree: Tree, work: Work): Generator<void> {\n const references = new Set<number>(), ambiguous = new Set<number>();\n const cached = new Map<Tree, boolean>();\n function* nullable(node: Tree): Generator<void, boolean> {\n work.charge();\n if (work.checkpoint()) yield;\n const prior = cached.get(node);\n if (prior !== undefined) return prior;\n let result = node.kind === \"start\" || node.kind === \"end\" || node.kind === \"backref\";\n if (node.kind === \"group\") result = yield* nullable(node.child);\n else if (node.kind === \"repeat\") result = node.minimum === 0 || (yield* nullable(node.child));\n else if (node.kind === \"sequence\" || node.kind === \"alternative\") {\n result = node.kind === \"sequence\";\n for (const child of node.children) {\n const childNullable = yield* nullable(child);\n if (childNullable !== result) { result = childNullable; break; }\n }\n }\n work.allocate(2); cached.set(node, result);\n return result;\n }\n function* visit(node: Tree, repeatedNullable: boolean): Generator<void> {\n work.charge();\n if (work.checkpoint()) yield;\n if (node.kind === \"backref\") { work.allocate(1); references.add(node.group); }\n else if (node.kind === \"group\") {\n if (repeatedNullable) { work.allocate(1); ambiguous.add(node.group); }\n yield* visit(node.child, repeatedNullable);\n } else if (node.kind === \"repeat\") yield* visit(node.child, repeatedNullable || node.maximum > 1 && (yield* nullable(node.child)));\n else if (node.kind === \"sequence\" || node.kind === \"alternative\") for (const child of node.children) yield* visit(child, repeatedNullable);\n }\n yield* visit(tree, false);\n for (const group of references) if (ambiguous.has(group)) unsupported(\"backreference to a capture in nullable repetition\");\n}\n\nfunction* compile(tree: Tree, work: Work, captureHistory = false): Generator<void, Instruction[]> {\n if (!captureHistory) yield* validateCaptureRepetition(tree, work);\n const instructions: Instruction[] = [];\n const emit = (instruction: Instruction): number => { work.node(); instructions.push(instruction); return instructions.length - 1; };\n function* build(node: Tree): Generator<void> {\n work.charge();\n if (work.checkpoint()) yield;\n if (node.kind === \"sequence\") { for (const child of node.children) yield* build(child); }\n else if (node.kind === \"alternative\") {\n const ends: { kind: \"jump\"; target: number }[] = [];\n for (let index = 0; index < node.children.length - 1; index++) {\n const branch: Instruction & { kind: \"split\" } = { kind: \"split\", first: instructions.length + 1, second: 0 };\n emit(branch);\n yield* build(node.children[index]!);\n const end: Instruction & { kind: \"jump\" } = { kind: \"jump\", target: 0 };\n emit(end); ends.push(end);\n branch.second = instructions.length;\n }\n yield* build(node.children.at(-1)!);\n for (const end of ends) end.target = instructions.length;\n } else if (node.kind === \"group\") {\n emit({ kind: \"save\", slot: (node.group - 1) * 2 });\n yield* build(node.child);\n emit({ kind: \"save\", slot: (node.group - 1) * 2 + 1 });\n } else if (node.kind === \"repeat\") {\n for (let count = 0; count < node.minimum; count++) yield* build(node.child);\n if (node.maximum === Infinity) {\n const start = instructions.length;\n const branch: Instruction & { kind: \"split\" } = { kind: \"split\", first: start + 1, second: 0 };\n emit(branch); yield* build(node.child); emit({ kind: \"jump\", target: start });\n branch.second = instructions.length;\n } else if (captureHistory) {\n const branches: (Instruction & { kind: \"split\" })[] = [];\n for (let count = node.minimum; count < node.maximum; count++) {\n const branch: Instruction & { kind: \"split\" } = { kind: \"split\", first: instructions.length + 1, second: 0 };\n emit(branch); branches.push(branch);\n }\n for (let index = 0; index < branches.length; index++) {\n yield* build(node.child);\n branches[branches.length - index - 1]!.second = instructions.length;\n }\n } else {\n for (let count = node.minimum; count < node.maximum; count++) {\n const branch: Instruction & { kind: \"split\" } = { kind: \"split\", first: instructions.length + 1, second: 0 };\n emit(branch); yield* build(node.child); branch.second = instructions.length;\n }\n }\n } else emit(node);\n }\n yield* build(tree); emit({ kind: \"accept\" });\n return instructions;\n}\n\nfunction member(value: number, name: string): boolean {\n const lower = value >= 97 && value <= 122, upper = value >= 65 && value <= 90;\n const digit = value >= 48 && value <= 57, alpha = lower || upper;\n const graph = value >= 33 && value <= 126;\n switch (name) {\n case \"word\": return alpha || digit || value === 95;\n case \"alnum\": return alpha || digit;\n case \"alpha\": return alpha;\n case \"blank\": return value === 32 || value === 9;\n case \"cntrl\": return value < 32 || value === 127;\n case \"digit\": return digit;\n case \"graph\": return graph;\n case \"lower\": return lower;\n case \"print\": return value >= 32 && value <= 126;\n case \"punct\": return graph && !alpha && !digit;\n case \"space\": return value === 32 || value >= 9 && value <= 13;\n case \"upper\": return upper;\n case \"xdigit\": return digit || value >= 65 && value <= 70 || value >= 97 && value <= 102;\n default: return false;\n }\n}\n\nexport function* searchBreSteps(descriptor: BreSearchDescriptor, subject: Uint8Array, options: { readonly ownedUnits?: number } = {}): Generator<void, BreSearchResult> {\n const work = new Work(descriptor.limits);\n if (descriptor.pattern.length > descriptor.limits.maxPatternBytes || subject.length > descriptor.limits.maxSubjectBytes) throw new ExprMatchError(\"limit\", \"regex input bytes limit exceeded\");\n if (options.ownedUnits) work.allocate(options.ownedUnits);\n const unicode = descriptor.profile === \"utf8-scalar\";\n const pattern = yield* searchSymbols(descriptor.pattern, unicode, work);\n work.allocate(pattern.values.length);\n const tokens: string[] = [];\n for (let index = 0; index < pattern.values.length; index++) {\n tokens.push(String.fromCodePoint(pattern.values[index]!));\n if ((index + 1) % 256 === 0) yield;\n }\n const parser = new Parser(tokens, work, true, unicode);\n const instructions = yield* compile(yield* parser.parse(), work, true);\n const input = yield* searchSymbols(subject, unicode, work);\n work.allocate(parser.groups * 2 + 4);\n const closes: number[][] = Array.from({ length: parser.groups }, () => []);\n for (let index = 0; index < instructions.length; index++) {\n work.charge();\n if (work.checkpoint()) yield;\n const instruction = instructions[index]!;\n if (instruction.kind === \"save\" && instruction.slot % 2 === 1) {\n work.allocate(1);\n closes[Math.floor(instruction.slot / 2)]!.push(index);\n }\n }\n const program: SearchProgram = { instructions, input, groups: parser.groups, unicode, closes };\n for (let candidate = 0; candidate <= input.values.length; candidate++) {\n const end = yield* searchCandidate(program, candidate, work);\n if (end !== undefined) return { offsetUnit: \"byte\", matched: true, overall: { start: input.boundaries[candidate]!, end: input.boundaries[end]! }, steps: work.steps };\n }\n return { offsetUnit: \"byte\", matched: false, overall: null, steps: work.steps };\n}\n\ninterface SearchProgram {\n readonly instructions: readonly Instruction[];\n readonly input: { readonly values: readonly number[]; readonly boundaries: readonly number[] };\n readonly groups: number;\n readonly unicode: boolean;\n readonly closes: readonly (readonly number[])[];\n}\n\nfunction* searchCandidate(program: SearchProgram, candidate: number, work: Work, target?: { readonly program: number; readonly position: number }): Generator<void, number | undefined> {\n interface Visit { program: number; captures: readonly number[] }\n interface State { program: number; position: number; captures: number[]; visited: Visit[] }\n work.allocate(program.groups * 3 + 4);\n work.state();\n const stack: State[] = [{ program: 0, position: candidate, captures: new Array<number>(program.groups * 3).fill(-1), visited: [] }];\n const closingCache = new Map<string, boolean>();\n let end: number | undefined;\n while (stack.length) {\n const state = stack.pop()!;\n while (true) {\n if (target && state.position > target.position) break;\n work.charge(state.visited.length * (state.captures.length + 1) + 1);\n if (work.checkpoint()) yield;\n let visited = false;\n for (let index = 0; index < state.visited.length; index++) {\n const visit = state.visited[index]!;\n if (visit.program === state.program && visit.captures.every((value, capture) => value === state.captures[capture])) { visited = true; break; }\n if ((index + 1) % 256 === 0) yield;\n }\n if (visited) break;\n work.allocate(state.captures.length + 2);\n state.visited.push({ program: state.program, captures: [...state.captures] });\n const instruction = program.instructions[state.program++]!;\n if (instruction.kind === \"accept\") { if (!target) end = Math.max(end ?? candidate, state.position); break; }\n if (instruction.kind === \"split\") {\n work.state(); work.allocate(state.captures.length + state.visited.length + 4);\n stack.push({ program: instruction.second, position: state.position, captures: [...state.captures], visited: [...state.visited] });\n state.program = instruction.first;\n } else if (instruction.kind === \"jump\") state.program = instruction.target;\n else if (instruction.kind === \"save\") {\n const group = Math.floor(instruction.slot / 2);\n state.captures[group * 3 + instruction.slot % 2] = state.position;\n if (instruction.slot % 2 === 1) {\n state.captures[group * 3 + 2] = state.program - 1;\n if (target?.program === state.program - 1 && target.position === state.position) return state.position;\n }\n }\n else if (instruction.kind === \"start\") { if (state.position !== 0) break; }\n else if (instruction.kind === \"end\") { if (state.position !== program.input.values.length) break; }\n else if (instruction.kind === \"assertion\") {\n const before = state.position > 0 && searchMember(program.input.values[state.position - 1]!, \"word\", program.unicode, work);\n const after = state.position < program.input.values.length && searchMember(program.input.values[state.position]!, \"word\", program.unicode, work);\n if (!(instruction.value === \"word\" ? before !== after : instruction.value === \"not-word\" ? before === after : instruction.value === \"word-start\" ? !before && after : before && !after)) break;\n } else if (instruction.kind === \"backref\") {\n const start = state.captures[(instruction.group - 1) * 3]!, finish = state.captures[(instruction.group - 1) * 3 + 1]!;\n if (start < 0 || finish < start || finish - start > program.input.values.length - state.position) break;\n if (!target && !(state.position === candidate && start === candidate && finish === candidate)) {\n const closing = state.captures[(instruction.group - 1) * 3 + 2]!;\n let shadowed = false;\n for (const earlier of program.closes[instruction.group - 1]!) {\n work.charge();\n if (earlier >= closing) break;\n const key = earlier + \":\" + finish;\n work.allocate(key.length);\n let reachable = closingCache.get(key);\n if (reachable === undefined) {\n work.allocate(4);\n reachable = (yield* searchCandidate(program, candidate, work, { program: earlier, position: finish })) !== undefined;\n closingCache.set(key, reachable);\n }\n if (reachable) { shadowed = true; break; }\n }\n if (shadowed) break;\n }\n work.charge(finish - start);\n if (work.checkpoint()) yield;\n let equal = true;\n for (let offset = 0; offset < finish - start; offset++) {\n if (program.input.values[start + offset] !== program.input.values[state.position + offset]) { equal = false; break; }\n if ((offset + 1) % 256 === 0) yield;\n }\n if (!equal) break;\n state.position += finish - start;\n if (finish > start) { work.allocate(1); state.visited = []; }\n } else {\n const value = program.input.values[state.position];\n if (value === undefined || instruction.kind === \"dot\" && value === 0\n || program.unicode && value >= 0xdc80 && value <= 0xdcff && instruction.kind !== \"literal\") break;\n if (instruction.kind === \"literal\" && value !== instruction.value) break;\n if (instruction.kind === \"set\") {\n work.charge(instruction.set.ranges.length + instruction.set.classes.length);\n if (work.checkpoint()) yield;\n let included = false;\n for (let index = 0; index < instruction.set.ranges.length; index++) {\n const [start, finish] = instruction.set.ranges[index]!;\n if (value >= start && value <= finish) { included = true; break; }\n if ((index + 1) % 256 === 0) yield;\n }\n if (!included) for (let index = 0; index < instruction.set.classes.length; index++) {\n if (searchMember(value, instruction.set.classes[index]!, program.unicode, work)) { included = true; break; }\n if ((index + 1) % 256 === 0) yield;\n }\n if (included === instruction.set.negate) break;\n }\n work.allocate(1); state.position++; state.visited = [];\n }\n }\n }\n return end;\n}\n\nfunction searchMember(value: number, name: string, unicode: boolean, work: Work): boolean {\n if (!unicode || value <= 127) return member(value, name);\n if (value >= 0xdc80 && value <= 0xdcff) value -= 0xdc00;\n if (name === \"digit\" || name === \"xdigit\") return false;\n const ranges = unicode121Classes[name === \"word\" || name === \"alnum\" ? \"alpha\" : name]!;\n let lower = 0, upper = ranges.length / 2;\n while (lower < upper) {\n work.charge();\n const middle = Math.floor((lower + upper) / 2);\n if (value < ranges[middle * 2]!) upper = middle;\n else if (value > ranges[middle * 2 + 1]!) lower = middle + 1;\n else return true;\n }\n return false;\n}\n\nfunction* searchSymbols(bytes: Uint8Array, unicode: boolean, work: Work): Generator<void, { values: number[]; boundaries: number[] }> {\n if (!unicode) return yield* symbols(bytes, false, work, false);\n work.allocate(bytes.length * 3 + 1);\n if (work.checkpoint()) yield;\n const values: number[] = [], boundaries: number[] = [0];\n for (let offset = 0; offset < bytes.length;) {\n const first = bytes[offset]!, width = breSearchSymbolWidth(bytes, offset);\n let value = width === 1 ? first < 0x80 ? first : 0xdc00 + first : first & (1 << (7 - width)) - 1;\n for (let continuation = 1; continuation < width; continuation++) value = value * 64 + (bytes[offset + continuation]! & 63);\n values.push(value);\n offset += width;\n boundaries.push(offset);\n if (values.length % 256 === 0) yield;\n }\n return { values, boundaries };\n}\n\nfunction* symbols(bytes: Uint8Array, unicode: boolean, work: Work, asciiOnly: boolean): Generator<void, { values: number[]; boundaries: number[] }> {\n work.allocate(bytes.length * 3 + 1);\n if (work.checkpoint()) yield;\n const values: number[] = [], boundaries: number[] = [0];\n if (!unicode || asciiOnly) {\n for (let offset = 0; offset < bytes.length; offset++) {\n const value = bytes[offset]!;\n if (asciiOnly && (value === 0 || value > 127)) unsupported(\"portable expr requires non-NUL ASCII patterns and subjects\");\n values.push(value); boundaries.push(offset + 1);\n if ((offset + 1) % 256 === 0) yield;\n }\n } else {\n let text: string;\n try { text = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes); }\n catch { unsupported(\"invalid UTF-8 in scalar profile\"); }\n let offset = 0;\n for (const character of text) {\n const value = character.codePointAt(0)!;\n values.push(value);\n offset += value < 0x80 ? 1 : value < 0x800 ? 2 : value < 0x10000 ? 3 : 4;\n boundaries.push(offset);\n if (values.length % 256 === 0) yield;\n }\n }\n return { values, boundaries };\n}\n\nexport function* matchExprSteps(descriptor: ExprMatchDescriptor, subject: Uint8Array, options: { readonly asciiOnly?: boolean; readonly ownedUnits?: number } = {}): Generator<void, ExprMatchResult> {\n const work = new Work(descriptor.limits);\n if (options.ownedUnits) work.allocate(options.ownedUnits);\n const pattern = yield* symbols(descriptor.pattern, descriptor.profile === \"utf8-scalar\", work, options.asciiOnly ?? false);\n work.allocate(pattern.values.length * 2);\n if (work.checkpoint()) yield;\n const tokens: string[] = [];\n for (let index = 0; index < pattern.values.length; index++) {\n tokens.push(String.fromCodePoint(pattern.values[index]!));\n if ((index + 1) % 256 === 0) yield;\n }\n const parser = new Parser(tokens, work);\n const instructions = yield* compile(yield* parser.parse(), work);\n const input = yield* symbols(subject, descriptor.profile === \"utf8-scalar\", work, options.asciiOnly ?? false);\n if (!options.asciiOnly && descriptor.profile === \"utf8-scalar\" && input.values.some(value => value > 127)\n && instructions.some(instruction => instruction.kind === \"set\" && instruction.set.classes.length)) unsupported(\"non-ASCII subject with locale character classes\");\n interface State { program: number; position: number; captures: number[]; visited: number[] }\n work.allocate(parser.groups * 2 + 4);\n const stack: State[] = [{ program: 0, position: 0, captures: new Array<number>(parser.groups * 2).fill(-1), visited: [] }];\n work.state();\n let best: State | undefined;\n while (stack.length) {\n const state = stack.pop()!;\n while (true) {\n work.charge(state.visited.length + 1);\n if (work.checkpoint()) yield;\n if (state.visited.includes(state.program)) break;\n work.allocate(1); state.visited.push(state.program);\n const instruction = instructions[state.program]!;\n state.program++;\n if (instruction.kind === \"accept\") {\n if (!best || state.position > best.position) best = state;\n break;\n }\n if (instruction.kind === \"split\") {\n work.state(); work.allocate(state.captures.length + state.visited.length + 4);\n stack.push({ program: instruction.second, position: state.position, captures: [...state.captures], visited: [...state.visited] });\n state.program = instruction.first;\n } else if (instruction.kind === \"jump\") state.program = instruction.target;\n else if (instruction.kind === \"save\") state.captures[instruction.slot] = state.position;\n else if (instruction.kind === \"start\") { if (state.position !== 0) break; }\n else if (instruction.kind === \"end\") { if (state.position !== input.values.length) break; }\n else if (instruction.kind === \"backref\") {\n const start = state.captures[(instruction.group - 1) * 2]!, end = state.captures[(instruction.group - 1) * 2 + 1]!;\n if (start < 0 || end < start || end - start > input.values.length - state.position) break;\n work.charge(end - start);\n if (work.checkpoint()) yield;\n let equal = true;\n for (let offset = 0; offset < end - start; offset++) {\n if (input.values[start + offset] !== input.values[state.position + offset]) { equal = false; break; }\n if ((offset + 1) % 256 === 0) yield;\n }\n if (!equal) break;\n state.position += end - start;\n if (end > start) { work.allocate(1); state.visited = []; }\n } else {\n const value = input.values[state.position];\n if (value === undefined) break;\n if (instruction.kind === \"literal\" && value !== instruction.value) break;\n if (instruction.kind === \"set\") {\n work.charge(instruction.set.ranges.length + instruction.set.classes.length);\n if (work.checkpoint()) yield;\n let included = false;\n for (let index = 0; index < instruction.set.ranges.length; index++) {\n const [start, end] = instruction.set.ranges[index]!;\n if (value >= start && value <= end) { included = true; break; }\n if ((index + 1) % 256 === 0) yield;\n }\n if (!included) for (let index = 0; index < instruction.set.classes.length; index++) {\n if (member(value, instruction.set.classes[index]!)) { included = true; break; }\n if ((index + 1) % 256 === 0) yield;\n }\n if (included === instruction.set.negate) break;\n }\n work.allocate(1); state.position++; state.visited = [];\n }\n }\n }\n const captureStart = best?.captures[0] ?? -1, captureEnd = best?.captures[1] ?? -1;\n return {\n offsetUnit: \"byte\", matched: best !== undefined, hasCapture: parser.groups > 0,\n overall: best ? { start: 0, end: input.boundaries[best.position]! } : null,\n capture: captureStart < 0 || captureEnd < captureStart ? null : { start: input.boundaries[captureStart]!, end: input.boundaries[captureEnd]! },\n steps: work.steps,\n };\n}\n", "import { PublicDiagnostic } from \"../../diagnostics.js\";\nexport interface RegexExecutionOptions {\n readonly requestTimeoutMs?: number;\n readonly startupTimeoutMs?: number;\n readonly maxWorkers?: number;\n readonly maxQueuedRequests?: number;\n readonly maxQueuedBytes?: number;\n readonly idleTimeoutMs?: number;\n readonly workerOldGenerationMb?: number;\n readonly workerStackMb?: number;\n}\n\nexport const defaults: Required<RegexExecutionOptions> = Object.freeze({\n requestTimeoutMs: 1000, startupTimeoutMs: 3000, maxWorkers: 2,\n maxQueuedRequests: 64, maxQueuedBytes: 128 * 1024 * 1024,\n idleTimeoutMs: 100, workerOldGenerationMb: 128, workerStackMb: 4,\n});\n\nexport type RegexErrorCode = \"QUEUE_EXHAUSTED\" | \"REQUEST_TIMEOUT\" | \"STARTUP_TIMEOUT\" | \"WORKER_EXIT\" | \"WORKER_ERROR\" | \"PROTOCOL\" | \"CLOSED\" | \"MATCH\";\n\nexport class RegexExecutionError extends PublicDiagnostic {\n constructor(readonly code: RegexErrorCode, message: string, options?: ErrorOptions) {\n super(code === \"MATCH\" ? message : `regex ${code}: ${message}`, options);\n this.name = \"RegexExecutionError\";\n }\n}\n\nexport interface GrepDescriptor {\n readonly kind: \"grep\";\n readonly patterns: readonly string[];\n readonly fixed: boolean;\n readonly extended: boolean;\n readonly insensitive: boolean;\n readonly whole: boolean;\n readonly word: boolean;\n}\n\nexport interface SearchDescriptor {\n readonly kind: \"rg\";\n readonly patterns: readonly string[];\n readonly fixed: boolean;\n readonly case: \"sensitive\" | \"insensitive\" | \"smart\";\n readonly whole: boolean;\n readonly word: boolean;\n readonly nullData: boolean;\n}\n\nexport interface GlobDescriptor {\n readonly kind: \"glob\";\n readonly patterns: readonly string[];\n readonly globOptions: readonly { readonly insensitive: boolean; readonly literalUnclosedClass: boolean }[];\n}\n\nexport type Descriptor = GrepDescriptor | SearchDescriptor | GlobDescriptor;\nexport interface Row { readonly bytes: Uint8Array; readonly all: boolean; readonly terminated: boolean; readonly directory?: boolean; readonly ancestors?: boolean }\nexport interface Match { readonly start: number; readonly end: number }\nexport const matchRangeLimits = Object.freeze({ perRow: 100_000, perReply: 100_000 });\nexport interface Request { readonly id: number; readonly descriptor: Descriptor; readonly rows: readonly Row[] }\nexport type Reply = { readonly id: number; readonly results: readonly Float64Array[] } | { readonly id: number; readonly error: string };\n\nexport interface ExprMatchLimits {\n readonly maxPatternBytes: number;\n readonly maxSubjectBytes: number;\n readonly maxNodes: number;\n readonly maxDepth: number;\n readonly maxSteps: number;\n readonly maxStates: number;\n readonly maxAllocatedUnits: number;\n}\nexport const exprMatchCeilings: ExprMatchLimits = Object.freeze({\n maxPatternBytes: 65_536, maxSubjectBytes: 1_048_576, maxNodes: 8192,\n maxDepth: 128, maxSteps: 50_000_000, maxStates: 65_536, maxAllocatedUnits: 4_000_000,\n});\nexport interface ExprMatchDescriptor {\n readonly kind: \"expr-match\";\n readonly pattern: Uint8Array;\n readonly profile: \"byte\" | \"utf8-scalar\";\n readonly limits: ExprMatchLimits;\n}\nexport interface ExprMatchResult {\n readonly offsetUnit: \"byte\";\n readonly matched: boolean;\n readonly hasCapture: boolean;\n readonly overall: Match | null;\n readonly capture: Match | null;\n readonly steps: number;\n}\nexport interface BreSearchDescriptor {\n readonly kind: \"bre-search\";\n readonly pattern: Uint8Array;\n readonly profile: \"byte\" | \"utf8-scalar\";\n readonly limits: ExprMatchLimits;\n}\nexport interface BreSearchResult {\n readonly offsetUnit: \"byte\";\n readonly matched: boolean;\n readonly overall: Match | null;\n readonly steps: number;\n}\nexport function breSearchSymbolWidth(bytes: Uint8Array, offset: number): number {\n const first = bytes[offset]!;\n const width = first >= 0xc2 && first <= 0xdf ? 2 : first >= 0xe0 && first <= 0xef ? 3 : first >= 0xf0 && first <= 0xf4 ? 4 : 1;\n if (width > bytes.length - offset) return 1;\n for (let continuation = 1; continuation < width; continuation++) {\n const value = bytes[offset + continuation]!;\n if (value < 0x80 || value > 0xbf || continuation === 1 && (first === 0xe0 && value < 0xa0\n || first === 0xed && value > 0x9f || first === 0xf0 && value < 0x90 || first === 0xf4 && value > 0x8f)) return 1;\n }\n return width;\n}\nexport interface BreSearchRequest { readonly id: number; readonly descriptor: BreSearchDescriptor; readonly rows: readonly Row[] }\nexport type BreSearchReply = { readonly id: number; readonly operation: \"bre-search\"; readonly result: BreSearchResult }\n | { readonly id: number; readonly operation: \"bre-search\"; readonly error: string; readonly category: \"syntax\" | \"unsupported\" | \"limit\" };\nexport interface ExprMatchRequest { readonly id: number; readonly descriptor: ExprMatchDescriptor; readonly rows: readonly Row[] }\nexport type ExprMatchReply = { readonly id: number; readonly operation: \"expr-match\"; readonly result: ExprMatchResult }\n | { readonly id: number; readonly operation: \"expr-match\"; readonly error: string; readonly category: \"syntax\" | \"unsupported\" | \"limit\" };\n\nexport class ExprMatchError extends Error {\n constructor(readonly category: \"syntax\" | \"unsupported\" | \"limit\", message: string) { super(message); }\n}\n\nfunction exactObject(value: unknown, keys: readonly string[]): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n && Object.keys(value).length === keys.length && keys.every(key => Object.hasOwn(value, key));\n}\n\nfunction breSearchRecord(value: unknown, keys: readonly string[]): value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value) || Reflect.ownKeys(value).length !== keys.length) return false;\n return keys.every(key => {\n const property = Object.getOwnPropertyDescriptor(value, key);\n return property !== undefined && \"value\" in property;\n });\n}\n\nexport function validateExprInput(descriptor: ExprMatchDescriptor, rows: readonly Row[], signal: AbortSignal): void {\n signal.throwIfAborted();\n const invalid = () => { throw new RegexExecutionError(\"PROTOCOL\", \"invalid expr request\"); };\n if (!exactObject(descriptor, [\"kind\", \"pattern\", \"profile\", \"limits\"]) || descriptor.kind !== \"expr-match\"\n || !(descriptor.pattern instanceof Uint8Array) || ![\"byte\", \"utf8-scalar\"].includes(descriptor.profile)) invalid();\n const keys = Object.keys(exprMatchCeilings) as (keyof ExprMatchLimits)[];\n if (!exactObject(descriptor.limits, keys)) invalid();\n for (const key of keys) {\n if (!Number.isSafeInteger(descriptor.limits[key]) || descriptor.limits[key] < 1 || descriptor.limits[key] > exprMatchCeilings[key]) invalid();\n }\n if (!Array.isArray(rows) || rows.length !== 1) invalid();\n const row = rows[0]!;\n if (!exactObject(row, [\"bytes\", \"all\", \"terminated\"]) || !(row.bytes instanceof Uint8Array) || row.all !== false || row.terminated !== false) invalid();\n if (descriptor.pattern.length > descriptor.limits.maxPatternBytes || row.bytes.length > descriptor.limits.maxSubjectBytes) {\n throw new ExprMatchError(\"limit\", \"regex input bytes limit exceeded\");\n }\n}\n\nexport function validateBreSearchInput(descriptor: BreSearchDescriptor, rows: readonly Row[], signal: AbortSignal): void {\n signal.throwIfAborted();\n if (!breSearchRecord(descriptor, [\"kind\", \"pattern\", \"profile\", \"limits\"]) || descriptor.kind !== \"bre-search\"\n || !breSearchRecord(descriptor.limits, Object.keys(exprMatchCeilings)) || !Array.isArray(rows)\n || rows.length !== 1 || Reflect.ownKeys(rows).length !== 2) {\n throw new RegexExecutionError(\"PROTOCOL\", \"invalid BRE search request\");\n }\n const row = Object.getOwnPropertyDescriptor(rows, \"0\");\n if (!row || !(\"value\" in row) || !breSearchRecord(row.value, [\"bytes\", \"all\", \"terminated\"])) {\n throw new RegexExecutionError(\"PROTOCOL\", \"invalid BRE search subject\");\n }\n validateExprInput({ ...descriptor, kind: \"expr-match\" }, rows, signal);\n}\n\nexport function validateBreSearchRequest(value: unknown): asserts value is BreSearchRequest {\n if (!breSearchRecord(value, [\"id\", \"descriptor\", \"rows\"]) || !Number.isSafeInteger(value.id) || (value.id as number) < 1) {\n throw new RegexExecutionError(\"PROTOCOL\", \"invalid BRE search request identity\");\n }\n validateBreSearchInput(value.descriptor as BreSearchDescriptor, value.rows as readonly Row[], new AbortController().signal);\n}\n\nexport function validateBreSearchReply(value: unknown, id: number, descriptor: BreSearchDescriptor, subject: Uint8Array, signal: AbortSignal): BreSearchResult {\n signal.throwIfAborted();\n const invalid = (): never => { throw new RegexExecutionError(\"PROTOCOL\", \"invalid BRE search reply\"); };\n if (!breSearchRecord(value, Object.hasOwn(value ?? {}, \"error\") ? [\"id\", \"operation\", \"error\", \"category\"] : [\"id\", \"operation\", \"result\"])) return invalid();\n const reply = value as Record<string, unknown>;\n if (reply.id !== id || reply.operation !== \"bre-search\") return invalid();\n if (\"error\" in reply) {\n if (!breSearchRecord(reply, [\"id\", \"operation\", \"error\", \"category\"]) || typeof reply.error !== \"string\"\n || reply.error.length > 512 || ![\"syntax\", \"unsupported\", \"limit\"].includes(reply.category as string)) return invalid();\n throw new ExprMatchError(reply.category as \"syntax\" | \"unsupported\" | \"limit\", reply.error);\n }\n if (!breSearchRecord(reply, [\"id\", \"operation\", \"result\"])) return invalid();\n const result = reply.result;\n if (!breSearchRecord(result, [\"offsetUnit\", \"matched\", \"overall\", \"steps\"]) || result.offsetUnit !== \"byte\"\n || typeof result.matched !== \"boolean\" || !Number.isSafeInteger(result.steps)\n || (result.steps as number) < 1 || (result.steps as number) > descriptor.limits.maxSteps) return invalid();\n let overall: Match | null = null;\n if (result.overall !== null) {\n if (!breSearchRecord(result.overall, [\"start\", \"end\"])) return invalid();\n const { start, end } = result.overall;\n if (!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || (start as number) < 0\n || (end as number) < (start as number) || (end as number) > subject.length) return invalid();\n if (descriptor.profile === \"utf8-scalar\") {\n for (const offset of [start as number, end as number]) {\n for (let previous = Math.max(0, offset - 3); previous < offset; previous++) {\n if (previous + breSearchSymbolWidth(subject, previous) > offset) return invalid();\n }\n }\n }\n overall = { start: start as number, end: end as number };\n }\n if (result.matched !== (overall !== null)) return invalid();\n return { offsetUnit: \"byte\", matched: result.matched, overall, steps: result.steps as number };\n}\n\nexport function validateExprRequest(value: unknown): asserts value is ExprMatchRequest {\n if (!exactObject(value, [\"id\", \"descriptor\", \"rows\"]) || !Number.isSafeInteger(value.id) || (value.id as number) < 1) {\n throw new RegexExecutionError(\"PROTOCOL\", \"invalid expr request identity\");\n }\n validateExprInput(value.descriptor as ExprMatchDescriptor, value.rows as readonly Row[], new AbortController().signal);\n}\n\nexport function validateExprReply(value: unknown, id: number, descriptor: ExprMatchDescriptor, subject: Uint8Array, signal: AbortSignal): ExprMatchResult {\n signal.throwIfAborted();\n const invalid = (): never => { throw new RegexExecutionError(\"PROTOCOL\", \"invalid expr reply\"); };\n if (!value || typeof value !== \"object\") return invalid();\n const reply = value as Record<string, unknown>;\n if (reply.id !== id || reply.operation !== \"expr-match\") return invalid();\n if (\"error\" in reply) {\n if (!exactObject(reply, [\"id\", \"operation\", \"error\", \"category\"]) || typeof reply.error !== \"string\"\n || reply.error.length > 512 || ![\"syntax\", \"unsupported\", \"limit\"].includes(reply.category as string)) return invalid();\n throw new ExprMatchError(reply.category as \"syntax\" | \"unsupported\" | \"limit\", reply.error);\n }\n if (!exactObject(reply, [\"id\", \"operation\", \"result\"])) return invalid();\n const result = reply.result;\n if (!exactObject(result, [\"offsetUnit\", \"matched\", \"hasCapture\", \"overall\", \"capture\", \"steps\"])\n || result.offsetUnit !== \"byte\" || typeof result.matched !== \"boolean\" || typeof result.hasCapture !== \"boolean\"\n || !Number.isSafeInteger(result.steps) || (result.steps as number) < 1 || (result.steps as number) > descriptor.limits.maxSteps) return invalid();\n const span = (value: unknown): Match | null => {\n if (value === null) return null;\n if (!exactObject(value, [\"start\", \"end\"]) || !Number.isSafeInteger(value.start) || !Number.isSafeInteger(value.end)) return invalid();\n const start = value.start as number, end = value.end as number;\n if (start < 0 || end < start || end > subject.length) return invalid();\n if (descriptor.profile === \"utf8-scalar\") {\n for (const offset of [start, end]) if (offset < subject.length && subject[offset]! >= 0x80 && subject[offset]! <= 0xbf) return invalid();\n }\n return { start, end };\n };\n const overall = span(result.overall), capture = span(result.capture);\n if (result.matched !== (overall !== null) || overall && overall.start !== 0\n || capture && (!result.hasCapture || !overall || capture.start < overall.start || capture.end > overall.end)) return invalid();\n return { offsetUnit: \"byte\", matched: result.matched, hasCapture: result.hasCapture, overall, capture, steps: result.steps as number };\n}\n\nexport function policy(options: RegexExecutionOptions): Required<RegexExecutionOptions> {\n const result = { ...defaults, ...options };\n for (const key of Object.keys(defaults) as (keyof RegexExecutionOptions)[]) {\n const minimum = key === \"maxQueuedRequests\" || key === \"maxQueuedBytes\" ? 0 : 1;\n if (!Number.isSafeInteger(result[key]) || result[key] < minimum) throw new RangeError(`regex ${key} must be a safe integer >= ${minimum}`);\n }\n for (const key of [\"requestTimeoutMs\", \"startupTimeoutMs\", \"idleTimeoutMs\"] as const) {\n if (result[key] > 2147483647) throw new RangeError(`regex ${key} exceeds the Node timer range`);\n }\n return Object.freeze(result);\n}\n\nexport function inputBytes(descriptor: Descriptor, rows: readonly Row[], signal: AbortSignal): number {\n let total = 128 + (descriptor.kind === \"glob\" ? descriptor.globOptions.length * 32 : 0);\n for (const pattern of descriptor.patterns) {\n signal.throwIfAborted();\n total += 16 + pattern.length * 2;\n if (!Number.isSafeInteger(total)) throw new RegexExecutionError(\"QUEUE_EXHAUSTED\", \"input accounting overflow\");\n }\n for (const row of rows) {\n signal.throwIfAborted();\n total += 32 + row.bytes.byteLength;\n if (!Number.isSafeInteger(total)) throw new RegexExecutionError(\"QUEUE_EXHAUSTED\", \"input accounting overflow\");\n }\n return total;\n}\n\nexport function validateReply(value: unknown, id: number, rows: readonly Row[], signal: AbortSignal): Match[][] {\n signal.throwIfAborted();\n const reply = value as Partial<Reply> | undefined;\n if (!reply || typeof reply !== \"object\" || reply.id !== id) throw new RegexExecutionError(\"PROTOCOL\", \"invalid reply identity\");\n if (\"error\" in reply) {\n if (typeof reply.error !== \"string\") throw new RegexExecutionError(\"PROTOCOL\", \"invalid error reply\");\n throw new RegexExecutionError(\"MATCH\", reply.error);\n }\n if (!(\"results\" in reply) || !Array.isArray(reply.results) || reply.results.length !== rows.length) throw new RegexExecutionError(\"PROTOCOL\", \"invalid reply rows\");\n let total = 0;\n const lengths: number[] = [];\n for (let index = 0; index < reply.results.length; index++) {\n signal.throwIfAborted();\n const ranges: unknown = reply.results[index];\n const row = rows[index]!;\n if (!(ranges instanceof Float64Array)) throw new RegexExecutionError(\"PROTOCOL\", \"invalid match ranges\");\n const length = ranges.length;\n if (length % 2 || length > 2 * (row.bytes.length + 1)) throw new RegexExecutionError(\"PROTOCOL\", \"invalid match ranges\");\n if (!row.all && length > 2) throw new RegexExecutionError(\"PROTOCOL\", \"unexpected multiple matches\");\n const count = length / 2;\n if (count > matchRangeLimits.perRow || count > matchRangeLimits.perReply - total) throw new RegexExecutionError(\"PROTOCOL\", \"match range limit exceeded\");\n total += count;\n lengths.push(length);\n }\n const results = reply.results.map((ranges: Float64Array, index: number) => {\n signal.throwIfAborted();\n const length = lengths[index]!;\n if (ranges.length !== length) throw new RegexExecutionError(\"PROTOCOL\", \"match ranges changed after admission\");\n const result: Match[] = [];\n const row = rows[index]!;\n for (let offset = 0; offset < length; offset += 2) {\n signal.throwIfAborted();\n const start = ranges[offset]!;\n const end = ranges[offset + 1]!;\n if (!Number.isSafeInteger(start) || !Number.isSafeInteger(end) || start < 0 || end < start || end > row.bytes.length || start < (result.at(-1)?.start ?? 0)) throw new RegexExecutionError(\"PROTOCOL\", \"invalid match bounds\");\n result.push({ start, end });\n }\n return result;\n });\n for (let index = 0; index < reply.results.length; index++) {\n signal.throwIfAborted();\n if (reply.results[index]!.length !== lengths[index]) throw new RegexExecutionError(\"PROTOCOL\", \"match ranges changed after admission\");\n }\n return results;\n}\n", "import type { EreResource } from \"./types.js\";\n\nexport class EreSyntaxError extends Error {\n readonly status = 2;\n constructor(message: string, readonly offset: number) {\n super(`invalid ERE at ${offset}: ${message}`);\n this.name = \"EreSyntaxError\";\n }\n}\n\nexport class EreUnsupportedError extends Error {\n readonly status = 2;\n constructor(message: string, readonly offset: number) {\n super(`unsupported ERE profile at ${offset}: ${message}`);\n this.name = \"EreUnsupportedError\";\n }\n}\n\nexport class EreProfileLimitError extends Error {\n readonly status = 3;\n constructor(readonly resource: EreResource, readonly limit: number) {\n super(`ERE profile limit exceeded: ${resource} (${limit})`);\n this.name = \"EreProfileLimitError\";\n }\n}\n\nexport class EreUsageUnknownError extends Error {\n readonly status = 3;\n constructor(reason: unknown) {\n super(\"ERE invocation usage is unknown; further work is refused\", { cause: reason });\n this.name = \"EreUsageUnknownError\";\n }\n}\n", "import { yieldTurn } from \"../../../contracts/yield.js\";\nimport { EreProfileLimitError, EreUsageUnknownError } from \"./errors.js\";\nimport type { EreExpansionBounds, EreLimits, EreResource, EreUsage } from \"./types.js\";\n\nconst resources: readonly EreResource[] = Object.freeze([\n \"patternBytes\", \"subjectBytes\", \"work\", \"states\", \"allocationUnits\", \"captureBytes\", \"captureSlots\",\n]);\n\nfunction integer(value: number): void {\n if (!Number.isSafeInteger(value) || value < 0) throw new TypeError(\"ERE bounds must be nonnegative safe integers\");\n}\n\nfunction multiply(value: number, factor: number, ceiling: number): number {\n return value > Math.floor(ceiling / factor) ? ceiling : value * factor;\n}\n\nexport function deriveEreLimits(bounds: EreExpansionBounds): EreLimits {\n integer(bounds.maxExpansionBytes);\n integer(bounds.maxExpansionFields);\n const bytes = bounds.maxExpansionBytes;\n const fields = bounds.maxExpansionFields;\n const byteUnits = multiply(bytes, 8, 4_000_000);\n const fieldUnits = multiply(fields, 128, 4_000_000);\n return Object.freeze({\n patternBytes: Math.min(bytes, 65_536),\n subjectBytes: Math.min(bytes, 1_048_576),\n work: multiply(bytes, 32, 50_000_000),\n states: multiply(fields, 8, 65_536),\n allocationUnits: byteUnits >= 4_000_000 - fieldUnits ? 4_000_000 : byteUnits + fieldUnits,\n captureBytes: bytes,\n captureSlots: fields,\n });\n}\n\nexport class EreLedger {\n readonly limits: EreLimits;\n #usage: Record<EreResource, number> = {\n patternBytes: 0, subjectBytes: 0, work: 0, states: 0, allocationUnits: 0, captureBytes: 0, captureSlots: 0,\n };\n #poison: EreUsageUnknownError | undefined;\n #lastYield = 0;\n\n constructor(bounds: EreExpansionBounds, lowering: Partial<EreLimits> = {}) {\n const limits = { ...deriveEreLimits(bounds) };\n for (const resource of Object.keys(lowering)) {\n if (!resources.includes(resource as EreResource)) throw new TypeError(\"unknown ERE limit\");\n const key = resource as EreResource;\n const value = lowering[key];\n if (value === undefined) throw new TypeError(\"undefined ERE limit\");\n integer(value);\n if (value > limits[key]) throw new RangeError(\"ERE limits may only be lowered\");\n limits[key] = value;\n }\n this.limits = Object.freeze(limits);\n }\n\n get usage(): EreUsage { return Object.freeze({ ...this.#usage }); }\n\n check(signal?: AbortSignal): void {\n if (signal?.aborted) throw signal.reason;\n if (this.#poison) throw this.#poison;\n }\n\n charge(resource: EreResource, amount: number, signal?: AbortSignal): void {\n this.check(signal);\n integer(amount);\n if (amount > this.limits[resource] - this.#usage[resource]) {\n throw new EreProfileLimitError(resource, this.limits[resource]);\n }\n this.#usage[resource] += amount;\n }\n\n admitInput(resource: \"patternBytes\" | \"subjectBytes\", length: number, signal?: AbortSignal): void {\n this.check(signal);\n integer(length);\n if (length > this.limits[resource]) throw new EreProfileLimitError(resource, this.limits[resource]);\n this.#usage[resource] = Math.max(this.#usage[resource], length);\n }\n\n async checkpoint(signal?: AbortSignal): Promise<void> {\n this.check(signal);\n if (this.#usage.work - this.#lastYield >= 256) {\n this.#lastYield = this.#usage.work;\n await yieldTurn(signal);\n this.check(signal);\n }\n }\n\n markUnknownUsage(reason: unknown): void {\n this.#poison ??= new EreUsageUnknownError(reason);\n }\n}\n", "import { EreSyntaxError, EreUnsupportedError } from \"./errors.js\";\nimport { EreLedger } from \"./limits.js\";\nimport type { EreFragment, EreNode, EreProgram } from \"./types.js\";\n\nconst programs = new WeakMap<EreProgram, { root: EreNode; ledger: EreLedger }>();\nconst special = \"\\\\.^$[]()|*+?{}\";\nconst classes = new Set([\"alnum\", \"alpha\", \"blank\", \"cntrl\", \"digit\", \"graph\", \"lower\", \"print\", \"punct\", \"space\", \"upper\", \"xdigit\"]);\n\nfunction classMember(name: string, code: number): boolean {\n const upper = code >= 65 && code <= 90;\n const lower = code >= 97 && code <= 122;\n const digit = code >= 48 && code <= 57;\n switch (name) {\n case \"alnum\": return upper || lower || digit;\n case \"alpha\": return upper || lower;\n case \"blank\": return code === 9 || code === 32;\n case \"cntrl\": return code < 32 || code === 127;\n case \"digit\": return digit;\n case \"graph\": return code >= 33 && code <= 126;\n case \"lower\": return lower;\n case \"print\": return code >= 32 && code <= 126;\n case \"punct\": return code >= 33 && code <= 126 && !upper && !lower && !digit;\n case \"space\": return code === 32 || code >= 9 && code <= 13;\n case \"upper\": return upper;\n case \"xdigit\": return digit || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n default: return false;\n }\n}\n\nexport async function admitAscii(text: string, ledger: EreLedger, signal?: AbortSignal): Promise<void> {\n for (let offset = 0; offset < text.length; offset++) {\n ledger.charge(\"work\", 1, signal);\n const code = text.charCodeAt(offset);\n if (code === 0 || code > 127) throw new EreUnsupportedError(\"only non-NUL ASCII in the C/POSIX profile\", offset);\n await ledger.checkpoint(signal);\n }\n}\n\nasync function flatten(input: string | readonly EreFragment[], ledger: EreLedger, signal?: AbortSignal): Promise<{ pattern: string; quoted: readonly boolean[] | null }> {\n if (typeof input === \"string\") {\n ledger.admitInput(\"patternBytes\", input.length, signal);\n await admitAscii(input, ledger, signal);\n return { pattern: input, quoted: null };\n }\n let size = 0;\n for (const fragment of input) {\n if (typeof fragment.text !== \"string\" || typeof fragment.literal !== \"boolean\") throw new TypeError(\"invalid ERE fragment\");\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n ledger.admitInput(\"patternBytes\", fragment.text.length, signal);\n await admitAscii(fragment.text, ledger, signal);\n if (fragment.text.length > ledger.limits.patternBytes - size) ledger.admitInput(\"patternBytes\", ledger.limits.patternBytes + 1, signal);\n size += fragment.text.length;\n ledger.admitInput(\"patternBytes\", size, signal);\n }\n ledger.charge(\"allocationUnits\", size * 2 + input.length + 2, signal);\n const output: string[] = [];\n const quoted: boolean[] = [];\n for (const fragment of input) {\n for (let offset = 0; offset < fragment.text.length; offset++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n quoted.push(fragment.literal);\n }\n output.push(fragment.text);\n await ledger.checkpoint(signal);\n }\n return { pattern: output.join(\"\"), quoted: Object.freeze(quoted) };\n}\n\nclass Parser {\n offset = 0;\n groups = 0;\n nodes = 0;\n constructor(readonly pattern: string, readonly quoted: readonly boolean[] | null, readonly ledger: EreLedger, readonly signal: AbortSignal | undefined, readonly insensitive: boolean) {}\n\n at(character: string, offset = this.offset): boolean { return !this.quoted?.[offset] && this.pattern[offset] === character; }\n\n node(create: () => EreNode): EreNode {\n if (this.nodes >= 4096) throw new EreUnsupportedError(\"4096-node grammar ceiling\", this.offset);\n this.ledger.charge(\"allocationUnits\", 8, this.signal);\n this.nodes++;\n return Object.freeze(create());\n }\n\n async expression(depth: number): Promise<EreNode> {\n if (depth > 64) throw new EreUnsupportedError(\"64-level grammar ceiling\", this.offset);\n this.ledger.charge(\"allocationUnits\", 1, this.signal);\n const alternatives: EreNode[] = [];\n while (true) {\n const child = await this.sequence(depth);\n this.ledger.charge(\"allocationUnits\", 1, this.signal);\n alternatives.push(child);\n if (!this.at(\"|\")) break;\n this.offset++;\n }\n if (alternatives.length === 1) return alternatives[0]!;\n this.ledger.charge(\"work\", alternatives.length * 2, this.signal);\n await this.ledger.checkpoint(this.signal);\n return this.node(() => ({ kind: \"alternative\", children: Object.freeze(alternatives), nullable: alternatives.some(value => value.nullable), captured: alternatives.some(value => value.captured) }));\n }\n\n async sequence(depth: number): Promise<EreNode> {\n this.ledger.charge(\"allocationUnits\", 1, this.signal);\n const children: EreNode[] = [];\n while (this.offset < this.pattern.length && !this.at(\"|\") && !this.at(\")\")) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n let child = await this.atom(depth);\n const operator = this.quoted?.[this.offset] ? undefined : this.pattern[this.offset];\n if (operator === \"*\" || operator === \"+\" || operator === \"?\" || operator === \"{\") {\n const begin = this.offset++;\n let min = operator === \"+\" ? 1 : 0;\n let max = operator === \"?\" ? 1 : Infinity;\n if (operator === \"{\") {\n min = await this.count();\n max = min;\n if (this.at(\",\")) {\n this.offset++;\n max = this.at(\"}\") ? Infinity : await this.count();\n }\n if (!this.at(\"}\") || max < min) throw new EreSyntaxError(\"invalid interval\", begin);\n this.offset++;\n }\n if (child.kind === \"start\" || child.kind === \"end\") throw new EreUnsupportedError(\"repeated anchor\", begin);\n if (child.nullable && child.captured && max > 1) throw new EreUnsupportedError(\"nullable captured repetition\", begin);\n const repeated = child;\n child = this.node(() => ({ kind: \"repeat\", child: repeated, min, max, nullable: min === 0 || repeated.nullable, captured: repeated.captured }));\n const next = this.quoted?.[this.offset] ? undefined : this.pattern[this.offset];\n if (next === \"*\" || next === \"+\" || next === \"?\" || next === \"{\") throw new EreUnsupportedError(\"stacked repetition\", this.offset);\n }\n this.ledger.charge(\"allocationUnits\", 1, this.signal);\n children.push(child);\n }\n if (children.length === 0) return this.node(() => ({ kind: \"empty\", nullable: true, captured: false }));\n if (children.length === 1) return children[0]!;\n this.ledger.charge(\"work\", children.length * 2, this.signal);\n await this.ledger.checkpoint(this.signal);\n return this.node(() => ({ kind: \"sequence\", children: Object.freeze(children), nullable: children.every(value => value.nullable), captured: children.some(value => value.captured) }));\n }\n\n async count(): Promise<number> {\n const begin = this.offset;\n let value = 0;\n while (!this.quoted?.[this.offset] && this.pattern[this.offset] !== undefined && this.pattern[this.offset]! >= \"0\" && this.pattern[this.offset]! <= \"9\") {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n value = value * 10 + this.pattern.charCodeAt(this.offset++) - 48;\n if (value > 255) throw new EreUnsupportedError(\"interval counts exceed 255\", begin);\n }\n if (begin === this.offset) throw new EreSyntaxError(\"missing interval count\", begin);\n return value;\n }\n\n async atom(depth: number): Promise<EreNode> {\n const begin = this.offset;\n const character = this.pattern[this.offset++]!;\n if (this.quoted?.[begin]) return this.node(() => ({ kind: \"literal\", code: character.charCodeAt(0), insensitive: this.insensitive, nullable: false, captured: false }));\n if (character === \"(\") {\n if (this.at(\"?\")) throw new EreUnsupportedError(\"extended group syntax\", begin);\n if (this.groups >= 32) throw new EreUnsupportedError(\"32-group grammar ceiling\", begin);\n const index = ++this.groups;\n const child = await this.expression(depth + 1);\n if (!this.at(\")\")) throw new EreSyntaxError(\"unclosed group\", begin);\n this.offset++;\n return this.node(() => ({ kind: \"group\", index, child, nullable: child.nullable, captured: true }));\n }\n if (character === \"[\") return this.set(begin);\n if (character === \"\\\\\") {\n const escaped = this.pattern[this.offset++];\n if (escaped === undefined) throw new EreSyntaxError(\"trailing escape\", begin);\n if (!special.includes(escaped)) throw new EreUnsupportedError(\"backreference or escape extension\", begin);\n return this.node(() => ({ kind: \"literal\", code: escaped.charCodeAt(0), insensitive: this.insensitive, nullable: false, captured: false }));\n }\n if (character === \"*\" || character === \"+\" || character === \"?\" || character === \"{\") throw new EreSyntaxError(\"repetition without operand\", begin);\n if (character === \".\") return this.node(() => ({ kind: \"dot\", nullable: false, captured: false }));\n if (character === \"^\") return this.node(() => ({ kind: \"start\", nullable: true, captured: false }));\n if (character === \"$\") return this.node(() => ({ kind: \"end\", nullable: true, captured: false }));\n return this.node(() => ({ kind: \"literal\", code: character.charCodeAt(0), insensitive: this.insensitive, nullable: false, captured: false }));\n }\n\n async set(begin: number): Promise<EreNode> {\n this.ledger.charge(\"allocationUnits\", 128, this.signal);\n const members: boolean[] = new Array<boolean>(128).fill(false);\n const negate = this.at(\"^\");\n if (negate) this.offset++;\n let first = true;\n while (this.offset < this.pattern.length) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n if (this.at(\"]\") && !first) {\n this.offset++;\n if (this.insensitive) for (let upper = 65; upper <= 90; upper++) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n if (members[upper] || members[upper + 32]) members[upper] = members[upper + 32] = true;\n }\n if (negate) for (let code = 1; code < 128; code++) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n members[code] = !members[code];\n }\n return this.node(() => ({ kind: \"set\", members: Object.freeze(members), nonAscii: negate, nullable: false, captured: false }));\n }\n first = false;\n if (this.at(\"[\") && (this.at(\".\", this.offset + 1) || this.at(\"=\", this.offset + 1))) {\n throw new EreUnsupportedError(\"collating or equivalence element\", this.offset);\n }\n if (this.at(\"[\") && this.at(\":\", this.offset + 1)) {\n const classBegin = this.offset;\n this.offset += 2;\n let name = \"\";\n while (this.offset < this.pattern.length && !this.at(\":\")) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n if (name.length >= 6) throw new EreSyntaxError(\"unknown character class\", classBegin);\n name += this.pattern[this.offset++];\n }\n if (!this.at(\":\") || !this.at(\"]\", this.offset + 1) || !classes.has(name)) throw new EreSyntaxError(\"unknown character class\", classBegin);\n this.offset += 2;\n for (let code = 1; code < 128; code++) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n if (classMember(name, code)) members[code] = true;\n }\n if (this.at(\"-\") && !this.at(\"]\", this.offset + 1)) throw new EreSyntaxError(\"class cannot be a range endpoint\", this.offset);\n } else {\n const lower = this.pattern.charCodeAt(this.offset++);\n if (this.at(\"-\") && !this.at(\"]\", this.offset + 1) && this.pattern[this.offset + 1] !== undefined) {\n this.offset++;\n if (this.at(\"[\")) throw new EreSyntaxError(\"nonliteral range endpoint\", this.offset);\n const upper = this.pattern.charCodeAt(this.offset++);\n if (lower > upper) throw new EreSyntaxError(\"descending range\", this.offset - 3);\n for (let code = lower; code <= upper; code++) {\n this.ledger.charge(\"work\", 1, this.signal);\n await this.ledger.checkpoint(this.signal);\n members[code] = true;\n }\n } else members[lower] = true;\n }\n }\n throw new EreSyntaxError(\"unclosed bracket expression\", begin);\n }\n}\n\nexport async function compileEre(input: string | readonly EreFragment[], ledger: EreLedger, signal?: AbortSignal, asciiInsensitive = false): Promise<EreProgram> {\n ledger.check(signal);\n if (typeof asciiInsensitive !== \"boolean\") throw new TypeError(\"ASCII case mode must be boolean\");\n const { pattern, quoted } = await flatten(input, ledger, signal);\n const parser = new Parser(pattern, quoted, ledger, signal, asciiInsensitive);\n const root = await parser.expression(0);\n if (parser.offset !== pattern.length) throw new EreSyntaxError(\"unmatched closing group\", parser.offset);\n ledger.charge(\"allocationUnits\", 3, signal);\n const program = Object.freeze({ pattern, groups: parser.groups });\n programs.set(program, { root, ledger });\n return program;\n}\n\nexport function resolveEreProgram(program: EreProgram, ledger: EreLedger): EreNode {\n const entry = programs.get(program);\n if (!entry || entry.ledger !== ledger) throw new TypeError(\"ERE program is not bound to this invocation ledger\");\n return entry.root;\n}\n", "import { validateUtf8 } from \"../utf8.js\";\nimport { foldAscii } from \"../ascii.js\";\nimport { EreLedger } from \"./limits.js\";\nimport { admitAscii, resolveEreProgram } from \"./syntax.js\";\nimport type { EreNode, EreProgram, EreResult, EreSpan } from \"./types.js\";\n\ninterface History {\n readonly span: EreSpan;\n readonly previous: History | null;\n readonly count: number;\n}\n\ntype Task =\n | { readonly kind: \"node\"; readonly node: EreNode; readonly next: Task | null }\n | { readonly kind: \"close\"; readonly group: number; readonly start: number; readonly next: Task | null }\n | { readonly kind: \"repeat\"; readonly node: Extract<EreNode, { kind: \"repeat\" }>; readonly count: number; readonly previous: number; readonly next: Task | null };\n\ninterface State {\n readonly position: number;\n readonly task: Task | null;\n readonly captures: readonly (EreSpan | null)[];\n readonly histories: readonly (History | null)[];\n}\n\nfunction spanOrder(left: EreSpan | null, right: EreSpan | null): number {\n if (left === null) return right === null ? 0 : -1;\n if (right === null) return 1;\n const length = left.end - left.start - (right.end - right.start);\n return length === 0 ? right.start - left.start : length;\n}\n\nasync function historySpans(history: History, ledger: EreLedger, signal?: AbortSignal): Promise<readonly EreSpan[]> {\n ledger.charge(\"work\", history.count, signal);\n ledger.charge(\"allocationUnits\", history.count + 1, signal);\n await ledger.checkpoint(signal);\n const spans = new Array<EreSpan>(history.count);\n for (let entry: History | null = history; entry !== null; entry = entry.previous) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n spans[entry.count - 1] = entry.span;\n }\n return spans;\n}\n\nasync function historyOrder(left: History | null, right: History | null, ledger: EreLedger, signal?: AbortSignal): Promise<number> {\n const leftCount = left?.count ?? 0;\n const rightCount = right?.count ?? 0;\n if (left === null || right === null) return leftCount - rightCount;\n const leftSpans = await historySpans(left, ledger, signal);\n const rightSpans = await historySpans(right, ledger, signal);\n for (let ordinal = 0; ordinal < Math.min(leftCount, rightCount); ordinal++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const compared = spanOrder(leftSpans[ordinal]!, rightSpans[ordinal]!);\n if (compared !== 0) return compared;\n }\n return leftCount - rightCount;\n}\n\nasync function preferred(candidate: State, incumbent: State, ledger: EreLedger, signal?: AbortSignal): Promise<boolean> {\n if (candidate.position !== incumbent.position) return candidate.position > incumbent.position;\n for (let group = 1; group < candidate.captures.length; group++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const compared = await historyOrder(candidate.histories[group]!, incumbent.histories[group]!, ledger, signal);\n if (compared !== 0) return compared > 0;\n }\n return false;\n}\n\nasync function resetDescendants(node: EreNode, previous: readonly (EreSpan | null)[], ledger: EreLedger, signal?: AbortSignal): Promise<readonly (EreSpan | null)[]> {\n ledger.charge(\"work\", previous.length, signal);\n ledger.charge(\"allocationUnits\", previous.length + 3, signal);\n await ledger.checkpoint(signal);\n const captures = previous.slice();\n const pending: EreNode[] = [node];\n while (pending.length > 0) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const current = pending.pop()!;\n if (current.kind === \"group\") captures[current.index] = null;\n if (current.kind === \"group\" || current.kind === \"repeat\") {\n if (current.child.captured) {\n ledger.charge(\"allocationUnits\", 1, signal);\n pending.push(current.child);\n }\n } else if (current.kind === \"sequence\" || current.kind === \"alternative\") {\n for (const child of current.children) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n if (child.captured) {\n ledger.charge(\"allocationUnits\", 1, signal);\n pending.push(child);\n }\n }\n }\n }\n return captures;\n}\n\nexport async function matchEre(program: EreProgram, subject: string, ledger: EreLedger, signal?: AbortSignal): Promise<EreResult> {\n ledger.check(signal);\n resolveEreProgram(program, ledger);\n ledger.admitInput(\"subjectBytes\", subject.length, signal);\n await admitAscii(subject, ledger, signal);\n return runMatcher(program, subject, ledger, signal, 0, true);\n}\n\n/** Owns one validated immutable subject; cursor searches preserve original anchors. */\nexport async function createEreSpanMatcher(program: EreProgram, subject: string, ledger: EreLedger, signal?: AbortSignal): Promise<(start: number) => Promise<EreSpan | undefined>> {\n ledger.check(signal);\n resolveEreProgram(program, ledger);\n ledger.admitInput(\"subjectBytes\", subject.length, signal);\n await admitAscii(subject, ledger, signal);\n ledger.charge(\"allocationUnits\", 2, signal);\n return async start => {\n if (!Number.isSafeInteger(start) || start < 0 || start > subject.length) throw new RangeError(\"Invalid ERE search cursor\");\n return runMatcher(program, subject, ledger, signal, start, false);\n };\n}\n\n/** Validated, owned UTF-8 subject with one internal code unit per Unicode scalar. */\nexport async function prepareUtf8EreSubject(bytes: Uint8Array, ledger: EreLedger, signal?: AbortSignal): Promise<(program: EreProgram) => (start: number) => Promise<EreSpan | undefined>> {\n ledger.check(signal);\n ledger.admitInput(\"subjectBytes\", bytes.length, signal);\n // Logical allocation units per byte: copy 1, offset storage 8, character\n // slot 1, normalized string 1. Scalar counts never exceed byte counts.\n ledger.charge(\"allocationUnits\", bytes.length * 11 + 16, signal);\n ledger.charge(\"work\", bytes.length, signal);\n const owned = new Uint8Array(bytes);\n await validateUtf8(owned, ledger, signal);\n const characters: string[] = [];\n const offsets: number[] = [];\n for (let offset = 0; offset < owned.length;) {\n const first = owned[offset]!;\n const width = first < 0x80 ? 1 : first < 0xe0 ? 2 : first < 0xf0 ? 3 : 4;\n ledger.charge(\"work\", width, signal);\n await ledger.checkpoint(signal);\n offsets.push(offset);\n // ASCII patterns cannot distinguish non-ASCII scalar values. U+0080 is\n // private matcher input, never reconstructed output or user-visible text.\n characters.push(String.fromCharCode(first < 0x80 ? first : 128));\n offset += width;\n }\n offsets.push(owned.length);\n ledger.charge(\"work\", characters.length, signal);\n await ledger.checkpoint(signal);\n const subject = characters.join(\"\");\n return program => {\n resolveEreProgram(program, ledger);\n ledger.charge(\"allocationUnits\", 2, signal);\n return async start => {\n if (!Number.isSafeInteger(start) || start < 0 || start > owned.length) throw new RangeError(\"Invalid UTF-8 ERE search cursor\");\n let lower = 0, upper = offsets.length - 1;\n while (lower < upper) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const middle = Math.floor((lower + upper) / 2);\n if (offsets[middle]! < start) lower = middle + 1;\n else upper = middle;\n }\n if (offsets[lower] !== start) throw new RangeError(\"UTF-8 ERE cursor must be a scalar boundary\");\n const span = await runMatcher(program, subject, ledger, signal, lower, false);\n if (!span) return undefined;\n ledger.charge(\"allocationUnits\", 2, signal);\n return Object.freeze({ start: offsets[span.start]!, end: offsets[span.end]! });\n };\n };\n}\n\nasync function runMatcher(program: EreProgram, subject: string, ledger: EreLedger, signal: AbortSignal | undefined, from: number, materialize: true): Promise<EreResult>;\nasync function runMatcher(program: EreProgram, subject: string, ledger: EreLedger, signal: AbortSignal | undefined, from: number, materialize: false): Promise<EreSpan | undefined>;\nasync function runMatcher(program: EreProgram, subject: string, ledger: EreLedger, signal: AbortSignal | undefined, from: number, materialize: boolean): Promise<EreResult | EreSpan | undefined> {\n const root = resolveEreProgram(program, ledger);\n const width = program.groups + 1;\n ledger.charge(\"work\", width * 2, signal);\n ledger.charge(\"allocationUnits\", width * 2 + 1, signal);\n await ledger.checkpoint(signal);\n const emptyCaptures: readonly (EreSpan | null)[] = Object.freeze(new Array<EreSpan | null>(width).fill(null));\n const emptyHistories: readonly (History | null)[] = Object.freeze(new Array<History | null>(width).fill(null));\n const pending: State[] = [];\n const task = (create: () => Task): Task => {\n ledger.charge(\"allocationUnits\", 5, signal);\n return create();\n };\n const push = (position: number, next: Task | null, captures: readonly (EreSpan | null)[], histories: readonly (History | null)[]): void => {\n ledger.charge(\"states\", 1, signal);\n ledger.charge(\"allocationUnits\", 5, signal);\n pending.push({ position, task: next, captures, histories });\n };\n for (let start = from; start <= subject.length; start++) {\n push(start, task(() => ({ kind: \"node\", node: root, next: null })), emptyCaptures, emptyHistories);\n let best: State | undefined;\n while (pending.length > 0) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const state = pending.pop()!;\n const current = state.task;\n if (current === null) {\n if (!best || await preferred(state, best, ledger, signal)) best = state;\n continue;\n }\n if (current.kind === \"close\") {\n ledger.charge(\"work\", width * 2, signal);\n ledger.charge(\"allocationUnits\", width * 2 + 6, signal);\n await ledger.checkpoint(signal);\n const span = Object.freeze({ start: current.start, end: state.position });\n const captures = state.captures.slice();\n captures[current.group] = span;\n const histories = state.histories.slice();\n const previous = histories[current.group]!;\n histories[current.group] = { span, previous, count: (previous?.count ?? 0) + 1 };\n push(state.position, current.next, captures, histories);\n continue;\n }\n if (current.kind === \"repeat\") {\n const { node, count } = current;\n if (count >= node.min) push(state.position, current.next, state.captures, state.histories);\n const noProgress = count > 0 && state.position === current.previous;\n if (count < node.max && (!noProgress || count < node.min)) {\n const repeat = task(() => ({ kind: \"repeat\", node, count: count + 1, previous: state.position, next: current.next }));\n push(state.position, task(() => ({ kind: \"node\", node: node.child, next: repeat })), state.captures, state.histories);\n }\n continue;\n }\n const node = current.node;\n switch (node.kind) {\n case \"empty\": push(state.position, current.next, state.captures, state.histories); break;\n case \"start\": if (state.position === 0) push(state.position, current.next, state.captures, state.histories); break;\n case \"end\": if (state.position === subject.length) push(state.position, current.next, state.captures, state.histories); break;\n case \"dot\":\n case \"literal\":\n case \"set\": {\n const code = subject.charCodeAt(state.position);\n if (state.position < subject.length && (node.kind === \"dot\" || node.kind === \"literal\" && (node.insensitive ? foldAscii(node.code) === foldAscii(code) : node.code === code) || node.kind === \"set\" && (code < 128 ? node.members[code] : node.nonAscii))) {\n push(state.position + 1, current.next, state.captures, state.histories);\n }\n break;\n }\n case \"sequence\": {\n let next = current.next;\n for (let index = node.children.length - 1; index >= 0; index--) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const following = next;\n next = task(() => ({ kind: \"node\", node: node.children[index]!, next: following }));\n }\n push(state.position, next, state.captures, state.histories);\n break;\n }\n case \"alternative\":\n for (let index = node.children.length - 1; index >= 0; index--) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n push(state.position, task(() => ({ kind: \"node\", node: node.children[index]!, next: current.next })), state.captures, state.histories);\n }\n break;\n case \"group\": {\n const captures = node.child.captured ? await resetDescendants(node.child, state.captures, ledger, signal) : state.captures;\n const close = task(() => ({ kind: \"close\", group: node.index, start: state.position, next: current.next }));\n push(state.position, task(() => ({ kind: \"node\", node: node.child, next: close })), captures, state.histories);\n break;\n }\n case \"repeat\":\n push(state.position, task(() => ({ kind: \"repeat\", node, count: 0, previous: -1, next: current.next })), state.captures, state.histories);\n break;\n }\n }\n if (best) {\n if (!materialize) {\n ledger.charge(\"allocationUnits\", 2, signal);\n ledger.check(signal);\n return Object.freeze({ start, end: best.position });\n }\n ledger.charge(\"captureSlots\", width, signal);\n let bytes = best.position - start;\n for (let group = 1; group < width; group++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const span = best.captures[group];\n if (span) bytes += span.end - span.start;\n }\n ledger.charge(\"captureBytes\", bytes, signal);\n ledger.charge(\"work\", width * 2 + bytes, signal);\n ledger.charge(\"allocationUnits\", width * 2 + bytes + 4, signal);\n await ledger.checkpoint(signal);\n const captures = best.captures.slice();\n captures[0] = Object.freeze({ start, end: best.position });\n const values = new Array<string>(width);\n for (let group = 0; group < width; group++) {\n ledger.charge(\"work\", 1, signal);\n await ledger.checkpoint(signal);\n const span = captures[group]!;\n values[group] = span === null ? \"\" : subject.slice(span.start, span.end);\n }\n ledger.check(signal);\n return Object.freeze({ matched: true, captures: Object.freeze(captures), values: Object.freeze(values) });\n }\n }\n ledger.check(signal);\n if (!materialize) return undefined;\n ledger.charge(\"allocationUnits\", 3, signal);\n return Object.freeze({ matched: false, captures: Object.freeze([] as const), values: Object.freeze([] as const) });\n}\n", "import { PublicDiagnostic } from \"../../diagnostics.js\";\nimport { EreLedger } from \"./ere/limits.js\";\n\nfunction invalidUtf8(): never {\n throw new PublicDiagnostic(\"bounded regex unsupported: literal patterns and subjects require valid non-NUL UTF-8 bytes\");\n}\n\nexport async function validateUtf8(input: Uint8Array | string, ledger: EreLedger, signal?: AbortSignal): Promise<void> {\n for (let index = 0; index < input.length;) {\n const first = typeof input === \"string\" ? input.charCodeAt(index) : input[index]!;\n const width = first < 0x80 ? 1 : first >= 0xc2 && first <= 0xdf ? 2\n : first >= 0xe0 && first <= 0xef ? 3 : first >= 0xf0 && first <= 0xf4 ? 4 : 0;\n ledger.charge(\"work\", Math.max(width, 1), signal);\n if (first === 0 || width === 0 || width > input.length - index) invalidUtf8();\n for (let continuation = 1; continuation < width; continuation++) {\n const byte = typeof input === \"string\" ? input.charCodeAt(index + continuation) : input[index + continuation]!;\n if (byte < 0x80 || byte > 0xbf || continuation === 1 && (\n first === 0xe0 && byte < 0xa0 || first === 0xed && byte > 0x9f\n || first === 0xf0 && byte < 0x90 || first === 0xf4 && byte > 0x8f\n )) invalidUtf8();\n }\n index += width;\n await ledger.checkpoint(signal);\n }\n}\n\n", "import type { BoundedRegexProvider, RegexWorker } from \"./provider.js\";\nimport type { CommandContext, CommandResult } from \"../../contracts/command.js\";\nimport type { ByteSource } from \"../../contracts/io.js\";\nimport { defaults, inputBytes, policy, RegexExecutionError, validateReply, validateExprInput, validateExprReply, validateBreSearchInput, validateBreSearchReply, type BreSearchDescriptor, type BreSearchResult, type ExprMatchDescriptor, type ExprMatchResult, type Descriptor, type Match, type RegexExecutionOptions, type Row } from \"./protocol.js\";\n\nexport type { RegexExecutionOptions } from \"./protocol.js\";\nexport { RegexExecutionError } from \"./protocol.js\";\n\ninterface Pending {\n readonly descriptor: Descriptor | ExprMatchDescriptor | BreSearchDescriptor;\n readonly rows: readonly Row[];\n readonly signal: AbortSignal;\n readonly bytes: number;\n readonly resolve: (matches: Match[][] | ExprMatchResult | BreSearchResult) => void;\n readonly reject: (error: unknown) => void;\n readonly abort: () => void;\n readonly retirements: Set<Promise<void>>;\n slot?: Slot;\n}\n\nasync function awaitRetirements(retirements: Iterable<Promise<void>>): Promise<void> {\n const results = await Promise.allSettled(retirements);\n const failures = results.filter(result => result.status === \"rejected\").map(result => result.reason as unknown);\n if (failures.length === 1) throw failures[0];\n if (failures.length > 1) throw new AggregateError(failures, \"regex retirement failed\");\n}\n\nexport async function withRegexSession(\n context: CommandContext,\n executor: RegexExecutor,\n execute: (session: RegexSession) => CommandResult | Promise<CommandResult>,\n): Promise<CommandResult> {\n context.signal.throwIfAborted();\n let session: RegexSession | undefined;\n let closing: Promise<void> | undefined;\n const close = () => closing ??= (async () => { await session?.close(); })();\n try { context.registerCleanup?.(close); }\n catch (error) { context.signal.throwIfAborted(); throw error; }\n let outcome: { result: CommandResult } | { error: unknown };\n try {\n context.signal.throwIfAborted();\n if (closing) throw new RegexExecutionError(\"CLOSED\", \"invocation is closed\");\n session = executor.open(context.signal);\n outcome = { result: await execute(session) };\n } catch (error) {\n outcome = { error };\n }\n let cleanupFailure: { error: unknown } | undefined;\n try { await close(); }\n catch (error) { cleanupFailure = { error }; }\n context.signal.throwIfAborted();\n if (\"error\" in outcome) throw outcome.error;\n if (cleanupFailure) throw cleanupFailure.error;\n return outcome.result;\n}\n\nclass Slot {\n readonly worker: RegexWorker;\n busy = true;\n ready = false;\n retired: Promise<void> | undefined;\n idleTimer: ReturnType<typeof setTimeout> | undefined;\n private receiver: ((value: unknown) => void) | undefined;\n private failure: ((error: unknown) => void) | undefined;\n private terminal: unknown;\n private exited = false;\n private readonly message = (value: unknown) => {\n if (this.receiver) this.receiver(value);\n else this.fail(new RegexExecutionError(\"PROTOCOL\", \"unexpected idle message\"));\n };\n private readonly error = (error: Error) => this.fail(new RegexExecutionError(\"WORKER_ERROR\", \"internal error\", { cause: error }));\n private readonly messageerror = () => this.fail(new RegexExecutionError(\"PROTOCOL\", \"worker message could not be deserialized\"));\n private readonly exit = (code: number) => {\n this.exited = true;\n this.fail(new RegexExecutionError(\"WORKER_EXIT\", `worker exited (${code})`));\n };\n constructor(private readonly owner: RegexExecutor) {\n this.worker = owner.provider.createWorker(owner.options);\n this.worker.on(\"message\", this.message);\n this.worker.on(\"messageerror\", this.messageerror);\n this.worker.on(\"error\", this.error);\n this.worker.on(\"exit\", this.exit);\n }\n fail(error: unknown): void {\n this.terminal ??= error;\n if (this.failure) this.failure(error);\n else if (!this.busy) void this.retire();\n }\n exchange(timeout: number, startup: boolean, signal: AbortSignal, send?: () => void): Promise<unknown> {\n signal.throwIfAborted();\n if (this.terminal !== undefined) return Promise.reject(this.terminal);\n return new Promise((resolve, reject) => {\n const finish = (rejected: boolean, value: unknown) => {\n clearTimeout(timer);\n this.receiver = undefined;\n this.failure = undefined;\n if (rejected) reject(value); else resolve(value);\n };\n const timer = setTimeout(() => finish(true, new RegexExecutionError(startup ? \"STARTUP_TIMEOUT\" : \"REQUEST_TIMEOUT\", `${startup ? \"startup\" : \"active request\"} exceeded ${timeout}ms`)), timeout);\n this.receiver = value => finish(false, value);\n this.failure = error => finish(true, error);\n try { signal.throwIfAborted(); send?.(); } catch (error) { finish(true, error); }\n });\n }\n retire(): Promise<void> {\n if (this.retired) return this.retired;\n clearTimeout(this.idleTimer);\n this.worker.ref?.();\n this.retired = (async () => {\n if (!this.exited) await this.worker.terminate();\n })().finally(() => {\n this.worker.off(\"message\", this.message);\n this.worker.off(\"messageerror\", this.messageerror);\n this.worker.off(\"error\", this.error);\n this.worker.off(\"exit\", this.exit);\n this.receiver = undefined;\n this.failure = undefined;\n if (!this.busy) this.owner.retired(this);\n });\n void this.retired.catch(() => {});\n return this.retired;\n }\n}\n\nexport class RegexExecutor {\n readonly options: Required<RegexExecutionOptions>;\n private readonly slots = new Set<Slot>();\n private readonly queue: Pending[] = [];\n private queuedBytes = 0;\n private sessions = 0;\n private sequence = 0;\n private disposed = false;\n constructor(readonly provider: BoundedRegexProvider, options: RegexExecutionOptions = defaults) {\n if (!provider || typeof provider.createWorker !== \"function\") throw new TypeError(\"a bounded regex provider is required\");\n this.options = policy(options);\n }\n open(signal: AbortSignal): RegexSession {\n signal.throwIfAborted();\n if (this.disposed) throw new RegexExecutionError(\"CLOSED\", \"executor is disposed\");\n this.sessions++;\n return new RegexSession(this, signal);\n }\n async close(): Promise<void> {\n this.sessions--;\n if (this.sessions === 0) await awaitRetirements([...this.slots].filter(slot => !slot.busy || slot.retired).map(slot => slot.retire()));\n }\n async dispose(): Promise<void> {\n this.disposed = true;\n const error = new RegexExecutionError(\"CLOSED\", \"executor is disposed\");\n for (const pending of this.queue.splice(0)) {\n pending.signal.removeEventListener(\"abort\", pending.abort);\n pending.reject(error);\n }\n this.queuedBytes = 0;\n for (const slot of this.slots) slot.fail(error);\n await Promise.all([...this.slots].map(slot => slot.retire()));\n }\n retired(slot: Slot): void {\n this.slots.delete(slot);\n this.pump();\n }\n request(descriptor: Descriptor, rows: readonly Row[], signal: AbortSignal, retirements?: Set<Promise<void>>): Promise<Match[][]>;\n request(descriptor: ExprMatchDescriptor, rows: readonly Row[], signal: AbortSignal, retirements?: Set<Promise<void>>): Promise<ExprMatchResult>;\n request(descriptor: BreSearchDescriptor, rows: readonly Row[], signal: AbortSignal, retirements?: Set<Promise<void>>): Promise<BreSearchResult>;\n request(descriptor: Descriptor | ExprMatchDescriptor | BreSearchDescriptor, rows: readonly Row[], signal: AbortSignal, retirements = new Set<Promise<void>>()): Promise<Match[][] | ExprMatchResult | BreSearchResult> {\n signal.throwIfAborted();\n if (this.disposed) return Promise.reject(new RegexExecutionError(\"CLOSED\", \"executor is disposed\"));\n if (descriptor.kind === \"expr-match\") validateExprInput(descriptor, rows, signal);\n if (descriptor.kind === \"bre-search\") validateBreSearchInput(descriptor, rows, signal);\n const bytes = (descriptor.kind === \"expr-match\" || descriptor.kind === \"bre-search\") ? 256 + descriptor.pattern.length + rows[0]!.bytes.length : inputBytes(descriptor, rows, signal);\n const available = this.queue.length === 0 && ([...this.slots].some(slot => !slot.busy && !slot.retired) || this.slots.size < this.options.maxWorkers);\n if (!available && (this.queue.length >= this.options.maxQueuedRequests || bytes > this.options.maxQueuedBytes - this.queuedBytes)) return Promise.reject(new RegexExecutionError(\"QUEUE_EXHAUSTED\", \"queued request count or input byte limit exceeded\"));\n const ownedDescriptor: Descriptor | ExprMatchDescriptor | BreSearchDescriptor = (descriptor.kind === \"expr-match\" || descriptor.kind === \"bre-search\")\n ? { ...descriptor, pattern: Uint8Array.from(descriptor.pattern), limits: { ...descriptor.limits } }\n : { ...descriptor, patterns: descriptor.patterns.map(pattern => { signal.throwIfAborted(); return pattern; }) };\n if (ownedDescriptor.kind === \"glob\") {\n const globOptions = ownedDescriptor.globOptions.map(options => { signal.throwIfAborted(); return { ...options }; });\n Object.assign(ownedDescriptor, { globOptions });\n }\n const ownedRows = rows.map(row => { signal.throwIfAborted(); return { ...row, bytes: Uint8Array.from(row.bytes) }; });\n return new Promise((resolve, reject) => {\n const pending: Pending = {\n descriptor: ownedDescriptor, rows: ownedRows, signal, bytes, resolve, reject, retirements,\n abort: () => {\n if (pending.slot) pending.slot.fail(signal.reason);\n else {\n const index = this.queue.indexOf(pending);\n if (index >= 0) { this.queue.splice(index, 1); this.queuedBytes -= bytes; }\n signal.removeEventListener(\"abort\", pending.abort);\n reject(signal.reason);\n this.pump();\n }\n },\n };\n signal.addEventListener(\"abort\", pending.abort, { once: true });\n this.queue.push(pending);\n this.queuedBytes += bytes;\n this.pump();\n });\n }\n private pump(): void {\n if (this.disposed) return;\n while (this.queue.length) {\n let slot = [...this.slots].find(candidate => !candidate.busy && !candidate.retired);\n if (!slot && this.slots.size >= this.options.maxWorkers) return;\n const pending = this.queue.shift()!;\n this.queuedBytes -= pending.bytes;\n try {\n pending.signal.throwIfAborted();\n if (!slot) { slot = new Slot(this); this.slots.add(slot); }\n slot.busy = true;\n pending.slot = slot;\n clearTimeout(slot.idleTimer);\n slot.worker.ref?.();\n void this.run(slot, pending);\n } catch (error) {\n pending.signal.removeEventListener(\"abort\", pending.abort);\n pending.reject(error);\n }\n }\n }\n private async run(slot: Slot, pending: Pending): Promise<void> {\n let result: Match[][] | ExprMatchResult | BreSearchResult | undefined;\n let failure: unknown;\n let rejected = false;\n try {\n pending.signal.throwIfAborted();\n if (!slot.ready) {\n const ready = await slot.exchange(this.options.startupTimeoutMs, true, pending.signal);\n if (!ready || typeof ready !== \"object\" || !(\"ready\" in ready) || ready.ready !== true) throw new RegexExecutionError(\"PROTOCOL\", \"invalid startup reply\");\n slot.ready = true;\n }\n pending.signal.throwIfAborted();\n const id = ++this.sequence;\n const started = performance.now();\n const reply = await slot.exchange(this.options.requestTimeoutMs, false, pending.signal, () => slot.worker.postMessage({ id, descriptor: pending.descriptor, rows: pending.rows }));\n result = pending.descriptor.kind === \"expr-match\"\n ? validateExprReply(reply, id, pending.descriptor, pending.rows[0]!.bytes, pending.signal)\n : pending.descriptor.kind === \"bre-search\"\n ? validateBreSearchReply(reply, id, pending.descriptor, pending.rows[0]!.bytes, pending.signal)\n : validateReply(reply, id, pending.rows, pending.signal);\n if (performance.now() - started > this.options.requestTimeoutMs) throw new RegexExecutionError(\"REQUEST_TIMEOUT\", `active request exceeded ${this.options.requestTimeoutMs}ms`);\n pending.signal.throwIfAborted();\n } catch (error) {\n rejected = true;\n failure = pending.signal.aborted ? pending.signal.reason : error;\n const retirement = slot.retire();\n pending.retirements.add(retirement);\n try { await retirement; } catch { }\n } finally {\n pending.signal.removeEventListener(\"abort\", pending.abort);\n slot.busy = false;\n if (slot.retired) this.retired(slot);\n else {\n slot.worker.unref?.();\n slot.idleTimer = setTimeout(() => { if (!slot.busy) void slot.retire(); }, this.options.idleTimeoutMs);\n slot.idleTimer.unref?.();\n }\n this.pump();\n }\n if (rejected) pending.reject(failure); else pending.resolve(result!);\n }\n}\n\nexport class RegexSession {\n private closed: Promise<void> | undefined;\n private readonly pending = new Set<Promise<Match[][] | ExprMatchResult | BreSearchResult>>();\n private readonly retirements = new Set<Promise<void>>();\n private readonly controller = new AbortController();\n private readonly requestSignal: AbortSignal;\n constructor(private readonly executor: RegexExecutor, private readonly signal: AbortSignal) {\n this.requestSignal = AbortSignal.any([signal, this.controller.signal]);\n }\n run(descriptor: Descriptor, rows: readonly Row[]): Promise<Match[][]> {\n this.signal.throwIfAborted();\n if (this.closed) throw new RegexExecutionError(\"CLOSED\", \"invocation is closed\");\n const result = this.executor.request(descriptor, rows, this.requestSignal, this.retirements);\n this.pending.add(result);\n void result.then(() => this.pending.delete(result), () => this.pending.delete(result));\n return result;\n }\n matchExpr(descriptor: ExprMatchDescriptor, subject: Uint8Array): Promise<ExprMatchResult> {\n this.signal.throwIfAborted();\n if (this.closed) throw new RegexExecutionError(\"CLOSED\", \"invocation is closed\");\n const result = this.executor.request(descriptor, [{ bytes: subject, all: false, terminated: false }], this.requestSignal, this.retirements);\n this.pending.add(result);\n void result.then(() => this.pending.delete(result), () => this.pending.delete(result));\n return result;\n }\n searchBre(descriptor: BreSearchDescriptor, subject: Uint8Array): Promise<BreSearchResult> {\n this.signal.throwIfAborted();\n if (this.closed) throw new RegexExecutionError(\"CLOSED\", \"invocation is closed\");\n const result = this.executor.request(descriptor, [{ bytes: subject, all: false, terminated: false }], this.requestSignal, this.retirements);\n this.pending.add(result);\n void result.then(() => this.pending.delete(result), () => this.pending.delete(result));\n return result;\n }\n close(): Promise<void> {\n return this.closed ??= Promise.resolve().then(async () => {\n this.controller.abort(this.signal.aborted ? this.signal.reason : new RegexExecutionError(\"CLOSED\", \"invocation is closed\"));\n try { await Promise.allSettled([...this.pending]); }\n finally {\n await awaitRetirements([...this.retirements, this.executor.close()]);\n }\n });\n }\n}\n\nexport class AvailableRecords {\n private chunk = new Uint8Array(0);\n private offset = 0;\n constructor(private readonly delimiter: number, private readonly maxLineBytes: number, private readonly extraDelimiter = -1) {}\n async *source(source: ByteSource): ByteSource {\n for await (const chunk of source) {\n this.chunk = Uint8Array.from(chunk);\n this.offset = 0;\n yield this.chunk;\n }\n }\n private end(): number {\n for (let offset = this.offset; offset < this.chunk.length; offset++) {\n if (this.chunk[offset] === this.delimiter || this.chunk[offset] === this.extraDelimiter) return offset;\n }\n return -1;\n }\n async *batches<Line>(source: AsyncIterable<Line>, size: (line: Line) => number, maxRecords: () => number = () => 128): AsyncGenerator<Line[]> {\n let batch: Line[] = [];\n let bytes = 0;\n for await (const line of source) {\n const end = this.end();\n this.offset = end < 0 ? this.chunk.length : end + 1;\n batch.push(line);\n bytes += size(line);\n const next = this.end();\n if (batch.length >= maxRecords() || bytes >= 64 * 1024 || next < 0 || bytes + next - this.offset > 64 * 1024 || next - this.offset > this.maxLineBytes) {\n yield batch;\n batch = [];\n bytes = 0;\n }\n }\n if (batch.length) yield batch;\n }\n}\n", "import { FsError, type CommandDefinition } from \"../../contracts/index.js\";\nimport { publicDiagnosticMessage } from \"../../diagnostics.js\";\nimport { RegexExecutor, withRegexSession } from \"../regex-execution/portable.js\";\nimport { ExprMatchError } from \"../regex-execution/protocol.js\";\nimport { Budget, CsplitError, fsDetail, settings, type CsplitCommandsOptions } from \"./internal.js\";\nimport { Lifecycle, Lines, Outputs } from \"./io.js\";\nimport { parseOptions, suffixFormatter } from \"./options.js\";\nimport { Matcher, preparePatterns } from \"./patterns.js\";\nimport { Splitter } from \"./split.js\";\n\nexport type { CsplitCommandsOptions, CsplitLimits } from \"./internal.js\";\n\nexport function createCsplitCommandWithExecutor(executor: RegexExecutor, options: CsplitCommandsOptions = {}): CommandDefinition {\n const limits = settings(options);\n return { name: \"csplit\", description: \"Split files at bounded line and BRE boundaries\",\n filesystemRequirements: [{ id: \"split\", description: \"Atomically mutate owned VFS outputs\", capabilities: [\"atomicFileMutation\"], mutates: true }],\n async execute(context) {\n return withRegexSession(context, executor, async session => {\n const budget = new Budget(context, limits);\n const lifecycle = new Lifecycle(budget);\n let output: Outputs | undefined;\n let failure: { reason: unknown } | undefined;\n let primary: { reason: unknown } | undefined;\n let exitCode = 0;\n try {\n const parsed = parseOptions(budget.arguments(), budget);\n if (parsed.information) {\n await budget.print(parsed.information === \"version\" ? \"csplit (virtual-bash)\\n\" : \"Usage: csplit [OPTION]... FILE PATTERN...\\nOptions: -f PREFIX, -b SUFFIX, -k, -z, -n DIGITS, -s, --suppress-matched\\nPatterns: INTEGER, /REGEXP/[OFFSET], %REGEXP%[OFFSET], {INTEGER}, {*}\\n\");\n } else {\n const format = suffixFormatter(parsed, budget);\n const input = new Lines(lifecycle);\n try { await input.open(parsed.operands[0]!); }\n catch (error) {\n if (error instanceof FsError) throw new CsplitError(`cannot open ${budget.quote(parsed.operands[0]!)} for reading: ${fsDetail(error)}`);\n throw error;\n }\n const matcher = new Matcher(session, budget);\n const patterns = await preparePatterns(parsed.operands.slice(1), matcher);\n output = new Outputs(lifecycle, parsed, format, input);\n await new Splitter(input, output, matcher).run(patterns);\n output.succeeded = true;\n }\n } catch (error) {\n primary = { reason: error };\n failure = { reason: error };\n if (output && error instanceof CsplitError && error.preserve) output.preserve = true;\n if (!context.signal.aborted) {\n exitCode = 1;\n try {\n const message = error instanceof ExprMatchError ? error.message : error instanceof FsError ? fsDetail(error) : publicDiagnosticMessage(error, context.onInternalError);\n await budget.print(`csplit: ${message}\\n`, true);\n if (error instanceof CsplitError && error.usage) await budget.print(\"Try 'csplit --help' for more information.\\n\", true);\n if (!(error instanceof CsplitError && error.preserve)) await output?.finish();\n failure = undefined;\n } catch (reporting) { failure = { reason: new AggregateError([error, reporting], \"csplit failure reporting failed\") }; }\n }\n }\n try { await lifecycle.close(); }\n catch (cleanup) {\n const previous = failure ?? primary;\n failure = { reason: previous ? new AggregateError([previous.reason, cleanup], \"csplit execution and cleanup failed\") : cleanup };\n }\n context.signal.throwIfAborted();\n if (failure) throw failure.reason;\n return { exitCode };\n });\n } };\n}\n", "import { FsError, getCommandArguments, writeBytes, type CommandContext } from \"../../contracts/index.js\";\nimport { shellValueByteLength, shellValueBytes } from \"../../contracts/value.js\";\nimport { yieldTurn } from \"../../contracts/yield.js\";\nimport { PublicDiagnostic } from \"../../diagnostics.js\";\nimport type { RegexExecutionOptions } from \"../regex-execution/portable.js\";\nimport type { BoundedRegexProvider } from \"../regex-execution/provider.js\";\nimport { exprMatchCeilings } from \"../regex-execution/protocol.js\";\nimport { quoteBytes } from \"./quoting.js\";\n\nexport interface CsplitLimits {\n readonly maxArguments: number;\n readonly maxArgumentBytes: number;\n readonly maxPatterns: number;\n readonly maxInputBytes: number;\n readonly maxBufferedBytes: number;\n readonly maxLines: number;\n readonly maxLineBytes: number;\n readonly maxFiles: number;\n readonly maxFileAttempts: number;\n readonly maxOutputBytes: number;\n readonly maxDiagnosticBytes: number;\n readonly maxPathBytes: number;\n readonly maxPathDepth: number;\n readonly maxWork: number;\n readonly maxEmptyChunks: number;\n readonly maxRegexPatternBytes: number;\n readonly maxRegexNodes: number;\n readonly maxRegexDepth: number;\n readonly maxRegexStates: number;\n readonly maxRegexAllocatedUnits: number;\n}\n\nexport interface CsplitCommandsOptions {\n readonly replace?: boolean;\n readonly limits?: Partial<CsplitLimits>;\n readonly regex?: RegexExecutionOptions;\n readonly regexExecutor?: BoundedRegexProvider;\n}\n\nexport class CsplitError extends PublicDiagnostic {\n constructor(message: string, readonly usage = false, readonly preserve = false) { super(message); }\n}\n\nexport function settings(options: CsplitCommandsOptions): CsplitLimits {\n const limits: CsplitLimits = {\n maxArguments: 4096, maxArgumentBytes: 65_536, maxPatterns: 1024,\n maxInputBytes: 33_554_432, maxBufferedBytes: 67_108_864, maxLines: 262_144,\n maxLineBytes: 1_048_576, maxFiles: 4096, maxFileAttempts: 8192,\n maxOutputBytes: 33_554_432, maxDiagnosticBytes: 65_536,\n maxPathBytes: 4096, maxPathDepth: 128, maxWork: 67_108_864, maxEmptyChunks: 4096,\n maxRegexPatternBytes: 8192, maxRegexNodes: 4096, maxRegexDepth: 64,\n maxRegexStates: 16_384, maxRegexAllocatedUnits: 1_000_000, ...options.limits,\n };\n for (const [name, value] of Object.entries(limits)) {\n if (!Number.isSafeInteger(value) || value < 1) throw new RangeError(`Invalid csplit limit: ${name}`);\n }\n if (limits.maxPathDepth > 4090) throw new RangeError(\"csplit path depth exceeds cleanup ceiling\");\n for (const [name, maximum] of [\n [\"maxRegexPatternBytes\", exprMatchCeilings.maxPatternBytes], [\"maxRegexNodes\", exprMatchCeilings.maxNodes],\n [\"maxRegexDepth\", exprMatchCeilings.maxDepth], [\"maxRegexStates\", exprMatchCeilings.maxStates],\n [\"maxRegexAllocatedUnits\", exprMatchCeilings.maxAllocatedUnits],\n ] as const) if (limits[name] > maximum) throw new RangeError(`csplit ${name} exceeds regex ceiling`);\n return Object.freeze(limits);\n}\n\nexport function raw(bytes: Uint8Array): string {\n let result = \"\";\n for (const byte of bytes) result += String.fromCharCode(byte);\n return result;\n}\n\nexport function bytes(value: string): Uint8Array {\n return Uint8Array.from(value, character => character.charCodeAt(0));\n}\n\nexport function pathText(value: string): string {\n if (value.includes(\"\\0\")) throw new CsplitError(\"NUL is not supported in paths\");\n try { return new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true }).decode(bytes(value)); }\n catch { throw new CsplitError(\"filesystem paths must be valid UTF-8\"); }\n}\n\nexport function missing(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && error.code === \"ENOENT\";\n}\n\nexport class Budget {\n private readonly buffers = new Map<object, number>();\n private work = 0;\n private checkpoint = 0;\n private diagnostics = 0;\n private output = 0;\n constructor(readonly context: CommandContext, readonly limits: CsplitLimits) {}\n reserveBuffered(owner: object, bytes: number): void {\n let total = bytes;\n for (const [key, value] of this.buffers) if (key !== owner) total += value;\n this.check(total, this.limits.maxBufferedBytes, \"buffered bytes\");\n if (bytes) this.buffers.set(owner, bytes);\n else this.buffers.delete(owner);\n }\n quote(value: string): string {\n const locale = this.context.env.LC_ALL || this.context.env.LC_CTYPE || this.context.env.LANG || \"C\";\n this.charge(value.length);\n this.check(value.length * 4 + 6, this.limits.maxDiagnosticBytes, \"quoted diagnostic bytes\");\n return quoteBytes(value, locale === \"C.UTF-8\" || locale === \"C.utf8\");\n }\n check(value: number, maximum: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 0 || value > maximum) throw new CsplitError(`${label} limit exceeded`);\n }\n charge(amount = 1): void {\n this.context.signal.throwIfAborted();\n this.work += amount;\n this.check(this.work, this.limits.maxWork, \"work\");\n }\n remaining(): number { return this.limits.maxWork - this.work; }\n async checkpointWork(): Promise<void> {\n this.charge();\n if (this.work - this.checkpoint >= 4096) {\n this.checkpoint = this.work;\n await yieldTurn(this.context.signal);\n }\n }\n arguments(): string[] {\n this.check(this.context.args.length, this.limits.maxArguments, \"argument count\");\n let total = 0;\n for (const argument of this.context.args) {\n total += argument.length;\n this.check(total, this.limits.maxArgumentBytes, \"argument bytes\");\n for (let offset = 0; offset < argument.length; offset++) {\n const unit = argument.charCodeAt(offset);\n if (unit >= 0xd800 && unit <= 0xdbff) {\n const next = argument.charCodeAt(++offset);\n if (!(next >= 0xdc00 && next <= 0xdfff)) throw new CsplitError(\"arguments must contain well-formed Unicode\");\n } else if (unit >= 0xdc00 && unit <= 0xdfff) throw new CsplitError(\"arguments must contain well-formed Unicode\");\n }\n }\n const argumentsWithBytes = getCommandArguments(this.context);\n total = 0;\n const result: string[] = [];\n for (const argument of argumentsWithBytes.values) {\n total += shellValueByteLength(argument);\n this.check(total, this.limits.maxArgumentBytes, \"argument bytes\");\n const value = shellValueBytes(argument);\n this.charge(value.length);\n if (value.includes(0)) throw new CsplitError(\"NUL is not supported in arguments\");\n result.push(raw(value));\n }\n return result;\n }\n fileBytes(amount: number): void {\n this.output += amount;\n this.check(this.output, this.limits.maxOutputBytes, \"output bytes\");\n this.charge(amount);\n }\n async print(value: string, stderr = false): Promise<void> {\n this.diagnostics += value.length;\n this.check(this.diagnostics, this.limits.maxDiagnosticBytes, \"count and diagnostic bytes\");\n await writeBytes(stderr ? this.context.stderr : this.context.stdout, bytes(value), this.context.signal);\n }\n}\n\nexport function fsDetail(error: FsError): string {\n const details: Partial<Record<FsError[\"code\"], string>> = {\n EACCES: \"Permission denied\", EPERM: \"Operation not permitted\", EIO: \"Input/output error\", ENOENT: \"No such file or directory\",\n EISDIR: \"Is a directory\", ENOTDIR: \"Not a directory\", ELOOP: \"Too many levels of symbolic links\", EROFS: \"Read-only file system\",\n ENOSPC: \"No space left on device\", ENAMETOOLONG: \"File name too long\", ENOTSUP: \"Operation not supported\", EEXIST: \"File exists\",\n };\n return details[error.code] ?? error.message;\n}\n", "const glibc231PrintableRanges = [\n 0x20, 0x7e, 0xa0, 0x377, 0x37a, 0x37f, 0x384, 0x38a, 0x38c, 0x38c, 0x38e, 0x3a1, 0x3a3, 0x52f, 0x531, 0x556,\n 0x559, 0x55f, 0x561, 0x587, 0x589, 0x58a, 0x58d, 0x58f, 0x591, 0x5c7, 0x5d0, 0x5ea, 0x5f0, 0x5f4, 0x600, 0x61c,\n 0x61e, 0x70d, 0x70f, 0x74a, 0x74d, 0x7b1, 0x7c0, 0x7fa, 0x800, 0x82d, 0x830, 0x83e, 0x840, 0x85b, 0x85e, 0x85e,\n 0x8a0, 0x8b4, 0x8b6, 0x8bd, 0x8d4, 0x983, 0x985, 0x98c, 0x98f, 0x990, 0x993, 0x9a8, 0x9aa, 0x9b0, 0x9b2, 0x9b2,\n 0x9b6, 0x9b9, 0x9bc, 0x9c4, 0x9c7, 0x9c8, 0x9cb, 0x9ce, 0x9d7, 0x9d7, 0x9dc, 0x9dd, 0x9df, 0x9e3, 0x9e6, 0x9fb,\n 0xa01, 0xa03, 0xa05, 0xa0a, 0xa0f, 0xa10, 0xa13, 0xa28, 0xa2a, 0xa30, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, 0xa39,\n 0xa3c, 0xa3c, 0xa3e, 0xa42, 0xa47, 0xa48, 0xa4b, 0xa4d, 0xa51, 0xa51, 0xa59, 0xa5c, 0xa5e, 0xa5e, 0xa66, 0xa75,\n 0xa81, 0xa83, 0xa85, 0xa8d, 0xa8f, 0xa91, 0xa93, 0xaa8, 0xaaa, 0xab0, 0xab2, 0xab3, 0xab5, 0xab9, 0xabc, 0xac5,\n 0xac7, 0xac9, 0xacb, 0xacd, 0xad0, 0xad0, 0xae0, 0xae3, 0xae6, 0xaf1, 0xaf9, 0xaf9, 0xb01, 0xb03, 0xb05, 0xb0c,\n 0xb0f, 0xb10, 0xb13, 0xb28, 0xb2a, 0xb30, 0xb32, 0xb33, 0xb35, 0xb39, 0xb3c, 0xb44, 0xb47, 0xb48, 0xb4b, 0xb4d,\n 0xb56, 0xb57, 0xb5c, 0xb5d, 0xb5f, 0xb63, 0xb66, 0xb77, 0xb82, 0xb83, 0xb85, 0xb8a, 0xb8e, 0xb90, 0xb92, 0xb95,\n 0xb99, 0xb9a, 0xb9c, 0xb9c, 0xb9e, 0xb9f, 0xba3, 0xba4, 0xba8, 0xbaa, 0xbae, 0xbb9, 0xbbe, 0xbc2, 0xbc6, 0xbc8,\n 0xbca, 0xbcd, 0xbd0, 0xbd0, 0xbd7, 0xbd7, 0xbe6, 0xbfa, 0xc00, 0xc03, 0xc05, 0xc0c, 0xc0e, 0xc10, 0xc12, 0xc28,\n 0xc2a, 0xc39, 0xc3d, 0xc44, 0xc46, 0xc48, 0xc4a, 0xc4d, 0xc55, 0xc56, 0xc58, 0xc5a, 0xc60, 0xc63, 0xc66, 0xc6f,\n 0xc78, 0xc83, 0xc85, 0xc8c, 0xc8e, 0xc90, 0xc92, 0xca8, 0xcaa, 0xcb3, 0xcb5, 0xcb9, 0xcbc, 0xcc4, 0xcc6, 0xcc8,\n 0xcca, 0xccd, 0xcd5, 0xcd6, 0xcde, 0xcde, 0xce0, 0xce3, 0xce6, 0xcef, 0xcf1, 0xcf2, 0xd01, 0xd03, 0xd05, 0xd0c,\n 0xd0e, 0xd10, 0xd12, 0xd3a, 0xd3d, 0xd44, 0xd46, 0xd48, 0xd4a, 0xd4f, 0xd54, 0xd63, 0xd66, 0xd7f, 0xd82, 0xd83,\n 0xd85, 0xd96, 0xd9a, 0xdb1, 0xdb3, 0xdbb, 0xdbd, 0xdbd, 0xdc0, 0xdc6, 0xdca, 0xdca, 0xdcf, 0xdd4, 0xdd6, 0xdd6,\n 0xdd8, 0xddf, 0xde6, 0xdef, 0xdf2, 0xdf4, 0xe01, 0xe3a, 0xe3f, 0xe5b, 0xe81, 0xe82, 0xe84, 0xe84, 0xe87, 0xe88,\n 0xe8a, 0xe8a, 0xe8d, 0xe8d, 0xe94, 0xe97, 0xe99, 0xe9f, 0xea1, 0xea3, 0xea5, 0xea5, 0xea7, 0xea7, 0xeaa, 0xeab,\n 0xead, 0xeb9, 0xebb, 0xebd, 0xec0, 0xec4, 0xec6, 0xec6, 0xec8, 0xecd, 0xed0, 0xed9, 0xedc, 0xedf, 0xf00, 0xf47,\n 0xf49, 0xf6c, 0xf71, 0xf97, 0xf99, 0xfbc, 0xfbe, 0xfcc, 0xfce, 0xfda, 0x1000, 0x10c5, 0x10c7, 0x10c7, 0x10cd, 0x10cd,\n 0x10d0, 0x1248, 0x124a, 0x124d, 0x1250, 0x1256, 0x1258, 0x1258, 0x125a, 0x125d, 0x1260, 0x1288, 0x128a, 0x128d, 0x1290, 0x12b0,\n 0x12b2, 0x12b5, 0x12b8, 0x12be, 0x12c0, 0x12c0, 0x12c2, 0x12c5, 0x12c8, 0x12d6, 0x12d8, 0x1310, 0x1312, 0x1315, 0x1318, 0x135a,\n 0x135d, 0x137c, 0x1380, 0x1399, 0x13a0, 0x13f5, 0x13f8, 0x13fd, 0x1400, 0x169c, 0x16a0, 0x16f8, 0x1700, 0x170c, 0x170e, 0x1714,\n 0x1720, 0x1736, 0x1740, 0x1753, 0x1760, 0x176c, 0x176e, 0x1770, 0x1772, 0x1773, 0x1780, 0x17dd, 0x17e0, 0x17e9, 0x17f0, 0x17f9,\n 0x1800, 0x180e, 0x1810, 0x1819, 0x1820, 0x1877, 0x1880, 0x18aa, 0x18b0, 0x18f5, 0x1900, 0x191e, 0x1920, 0x192b, 0x1930, 0x193b,\n 0x1940, 0x1940, 0x1944, 0x196d, 0x1970, 0x1974, 0x1980, 0x19ab, 0x19b0, 0x19c9, 0x19d0, 0x19da, 0x19de, 0x1a1b, 0x1a1e, 0x1a5e,\n 0x1a60, 0x1a7c, 0x1a7f, 0x1a89, 0x1a90, 0x1a99, 0x1aa0, 0x1aad, 0x1ab0, 0x1abe, 0x1b00, 0x1b4b, 0x1b50, 0x1b7c, 0x1b80, 0x1bf3,\n 0x1bfc, 0x1c37, 0x1c3b, 0x1c49, 0x1c4d, 0x1c88, 0x1cc0, 0x1cc7, 0x1cd0, 0x1cf6, 0x1cf8, 0x1cf9, 0x1d00, 0x1df5, 0x1dfb, 0x1f15,\n 0x1f18, 0x1f1d, 0x1f20, 0x1f45, 0x1f48, 0x1f4d, 0x1f50, 0x1f57, 0x1f59, 0x1f59, 0x1f5b, 0x1f5b, 0x1f5d, 0x1f5d, 0x1f5f, 0x1f7d,\n 0x1f80, 0x1fb4, 0x1fb6, 0x1fc4, 0x1fc6, 0x1fd3, 0x1fd6, 0x1fdb, 0x1fdd, 0x1fef, 0x1ff2, 0x1ff4, 0x1ff6, 0x1ffe, 0x2000, 0x2027,\n 0x202a, 0x2064, 0x2066, 0x2071, 0x2074, 0x208e, 0x2090, 0x209c, 0x20a0, 0x20be, 0x20d0, 0x20f0, 0x2100, 0x218b, 0x2190, 0x23fe,\n 0x2400, 0x2426, 0x2440, 0x244a, 0x2460, 0x2b73, 0x2b76, 0x2b95, 0x2b98, 0x2bb9, 0x2bbd, 0x2bc8, 0x2bca, 0x2bd1, 0x2bec, 0x2bef,\n 0x2c00, 0x2c2e, 0x2c30, 0x2c5e, 0x2c60, 0x2cf3, 0x2cf9, 0x2d25, 0x2d27, 0x2d27, 0x2d2d, 0x2d2d, 0x2d30, 0x2d67, 0x2d6f, 0x2d70,\n 0x2d7f, 0x2d96, 0x2da0, 0x2da6, 0x2da8, 0x2dae, 0x2db0, 0x2db6, 0x2db8, 0x2dbe, 0x2dc0, 0x2dc6, 0x2dc8, 0x2dce, 0x2dd0, 0x2dd6,\n 0x2dd8, 0x2dde, 0x2de0, 0x2e44, 0x2e80, 0x2e99, 0x2e9b, 0x2ef3, 0x2f00, 0x2fd5, 0x2ff0, 0x2ffb, 0x3000, 0x303f, 0x3041, 0x3096,\n 0x3099, 0x30ff, 0x3105, 0x312d, 0x3131, 0x318e, 0x3190, 0x31ba, 0x31c0, 0x31e3, 0x31f0, 0x321e, 0x3220, 0x32fe, 0x3300, 0x4db5,\n 0x4dc0, 0x9fd5, 0xa000, 0xa48c, 0xa490, 0xa4c6, 0xa4d0, 0xa62b, 0xa640, 0xa6f7, 0xa700, 0xa7ae, 0xa7b0, 0xa7b7, 0xa7f7, 0xa82b,\n 0xa830, 0xa839, 0xa840, 0xa877, 0xa880, 0xa8c5, 0xa8ce, 0xa8d9, 0xa8e0, 0xa8fd, 0xa900, 0xa953, 0xa95f, 0xa97c, 0xa980, 0xa9cd,\n 0xa9cf, 0xa9d9, 0xa9de, 0xa9fe, 0xaa00, 0xaa36, 0xaa40, 0xaa4d, 0xaa50, 0xaa59, 0xaa5c, 0xaac2, 0xaadb, 0xaaf6, 0xab01, 0xab06,\n 0xab09, 0xab0e, 0xab11, 0xab16, 0xab20, 0xab26, 0xab28, 0xab2e, 0xab30, 0xab65, 0xab70, 0xabed, 0xabf0, 0xabf9, 0xac00, 0xd7a3,\n 0xd7b0, 0xd7c6, 0xd7cb, 0xd7fb, 0xe000, 0xfa6d, 0xfa70, 0xfad9, 0xfb00, 0xfb06, 0xfb13, 0xfb17, 0xfb1d, 0xfb36, 0xfb38, 0xfb3c,\n 0xfb3e, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfb46, 0xfbc1, 0xfbd3, 0xfd3f, 0xfd50, 0xfd8f, 0xfd92, 0xfdc7, 0xfdf0, 0xfdfd,\n 0xfe00, 0xfe19, 0xfe20, 0xfe52, 0xfe54, 0xfe66, 0xfe68, 0xfe6b, 0xfe70, 0xfe74, 0xfe76, 0xfefc, 0xfeff, 0xfeff, 0xff01, 0xffbe,\n 0xffc2, 0xffc7, 0xffca, 0xffcf, 0xffd2, 0xffd7, 0xffda, 0xffdc, 0xffe0, 0xffe6, 0xffe8, 0xffee, 0xfff9, 0xfffd, 0x10000, 0x1000b,\n 0x1000d, 0x10026, 0x10028, 0x1003a, 0x1003c, 0x1003d, 0x1003f, 0x1004d, 0x10050, 0x1005d, 0x10080, 0x100fa, 0x10100, 0x10102, 0x10107, 0x10133,\n 0x10137, 0x1018e, 0x10190, 0x1019b, 0x101a0, 0x101a0, 0x101d0, 0x101fd, 0x10280, 0x1029c, 0x102a0, 0x102d0, 0x102e0, 0x102fb, 0x10300, 0x10323,\n 0x10330, 0x1034a, 0x10350, 0x1037a, 0x10380, 0x1039d, 0x1039f, 0x103c3, 0x103c8, 0x103d5, 0x10400, 0x1049d, 0x104a0, 0x104a9, 0x104b0, 0x104d3,\n 0x104d8, 0x104fb, 0x10500, 0x10527, 0x10530, 0x10563, 0x1056f, 0x1056f, 0x10600, 0x10736, 0x10740, 0x10755, 0x10760, 0x10767, 0x10800, 0x10805,\n 0x10808, 0x10808, 0x1080a, 0x10835, 0x10837, 0x10838, 0x1083c, 0x1083c, 0x1083f, 0x10855, 0x10857, 0x1089e, 0x108a7, 0x108af, 0x108e0, 0x108f2,\n 0x108f4, 0x108f5, 0x108fb, 0x1091b, 0x1091f, 0x10939, 0x1093f, 0x1093f, 0x10980, 0x109b7, 0x109bc, 0x109cf, 0x109d2, 0x10a03, 0x10a05, 0x10a06,\n 0x10a0c, 0x10a13, 0x10a15, 0x10a17, 0x10a19, 0x10a33, 0x10a38, 0x10a3a, 0x10a3f, 0x10a47, 0x10a50, 0x10a58, 0x10a60, 0x10a9f, 0x10ac0, 0x10ae6,\n 0x10aeb, 0x10af6, 0x10b00, 0x10b35, 0x10b39, 0x10b55, 0x10b58, 0x10b72, 0x10b78, 0x10b91, 0x10b99, 0x10b9c, 0x10ba9, 0x10baf, 0x10c00, 0x10c48,\n 0x10c80, 0x10cb2, 0x10cc0, 0x10cf2, 0x10cfa, 0x10cff, 0x10e60, 0x10e7e, 0x11000, 0x1104d, 0x11052, 0x1106f, 0x1107f, 0x110c1, 0x110d0, 0x110e8,\n 0x110f0, 0x110f9, 0x11100, 0x11134, 0x11136, 0x11143, 0x11150, 0x11176, 0x11180, 0x111cd, 0x111d0, 0x111df, 0x111e1, 0x111f4, 0x11200, 0x11211,\n 0x11213, 0x1123e, 0x11280, 0x11286, 0x11288, 0x11288, 0x1128a, 0x1128d, 0x1128f, 0x1129d, 0x1129f, 0x112a9, 0x112b0, 0x112ea, 0x112f0, 0x112f9,\n 0x11300, 0x11303, 0x11305, 0x1130c, 0x1130f, 0x11310, 0x11313, 0x11328, 0x1132a, 0x11330, 0x11332, 0x11333, 0x11335, 0x11339, 0x1133c, 0x11344,\n 0x11347, 0x11348, 0x1134b, 0x1134d, 0x11350, 0x11350, 0x11357, 0x11357, 0x1135d, 0x11363, 0x11366, 0x1136c, 0x11370, 0x11374, 0x11400, 0x11459,\n 0x1145b, 0x1145b, 0x1145d, 0x1145d, 0x11480, 0x114c7, 0x114d0, 0x114d9, 0x11580, 0x115b5, 0x115b8, 0x115dd, 0x11600, 0x11644, 0x11650, 0x11659,\n 0x11660, 0x1166c, 0x11680, 0x116b7, 0x116c0, 0x116c9, 0x11700, 0x11719, 0x1171d, 0x1172b, 0x11730, 0x1173f, 0x118a0, 0x118f2, 0x118ff, 0x118ff,\n 0x11ac0, 0x11af8, 0x11c00, 0x11c08, 0x11c0a, 0x11c36, 0x11c38, 0x11c45, 0x11c50, 0x11c6c, 0x11c70, 0x11c8f, 0x11c92, 0x11ca7, 0x11ca9, 0x11cb6,\n 0x12000, 0x12399, 0x12400, 0x1246e, 0x12470, 0x12474, 0x12480, 0x12543, 0x13000, 0x1342e, 0x14400, 0x14646, 0x16800, 0x16a38, 0x16a40, 0x16a5e,\n 0x16a60, 0x16a69, 0x16a6e, 0x16a6f, 0x16ad0, 0x16aed, 0x16af0, 0x16af5, 0x16b00, 0x16b45, 0x16b50, 0x16b59, 0x16b5b, 0x16b61, 0x16b63, 0x16b77,\n 0x16b7d, 0x16b8f, 0x16f00, 0x16f44, 0x16f50, 0x16f7e, 0x16f8f, 0x16f9f, 0x16fe0, 0x16fe0, 0x17000, 0x187ec, 0x18800, 0x18af2, 0x1b000, 0x1b001,\n 0x1bc00, 0x1bc6a, 0x1bc70, 0x1bc7c, 0x1bc80, 0x1bc88, 0x1bc90, 0x1bc99, 0x1bc9c, 0x1bca3, 0x1d000, 0x1d0f5, 0x1d100, 0x1d126, 0x1d129, 0x1d1e8,\n 0x1d200, 0x1d245, 0x1d300, 0x1d356, 0x1d360, 0x1d371, 0x1d400, 0x1d454, 0x1d456, 0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a2, 0x1d4a5, 0x1d4a6,\n 0x1d4a9, 0x1d4ac, 0x1d4ae, 0x1d4b9, 0x1d4bb, 0x1d4bb, 0x1d4bd, 0x1d4c3, 0x1d4c5, 0x1d505, 0x1d507, 0x1d50a, 0x1d50d, 0x1d514, 0x1d516, 0x1d51c,\n 0x1d51e, 0x1d539, 0x1d53b, 0x1d53e, 0x1d540, 0x1d544, 0x1d546, 0x1d546, 0x1d54a, 0x1d550, 0x1d552, 0x1d6a5, 0x1d6a8, 0x1d7cb, 0x1d7ce, 0x1da8b,\n 0x1da9b, 0x1da9f, 0x1daa1, 0x1daaf, 0x1e000, 0x1e006, 0x1e008, 0x1e018, 0x1e01b, 0x1e021, 0x1e023, 0x1e024, 0x1e026, 0x1e02a, 0x1e800, 0x1e8c4,\n 0x1e8c7, 0x1e8d6, 0x1e900, 0x1e94a, 0x1e950, 0x1e959, 0x1e95e, 0x1e95f, 0x1ee00, 0x1ee03, 0x1ee05, 0x1ee1f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee24,\n 0x1ee27, 0x1ee27, 0x1ee29, 0x1ee32, 0x1ee34, 0x1ee37, 0x1ee39, 0x1ee39, 0x1ee3b, 0x1ee3b, 0x1ee42, 0x1ee42, 0x1ee47, 0x1ee47, 0x1ee49, 0x1ee49,\n 0x1ee4b, 0x1ee4b, 0x1ee4d, 0x1ee4f, 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee54, 0x1ee57, 0x1ee57, 0x1ee59, 0x1ee59, 0x1ee5b, 0x1ee5b, 0x1ee5d, 0x1ee5d,\n 0x1ee5f, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee64, 0x1ee67, 0x1ee6a, 0x1ee6c, 0x1ee72, 0x1ee74, 0x1ee77, 0x1ee79, 0x1ee7c, 0x1ee7e, 0x1ee7e,\n 0x1ee80, 0x1ee89, 0x1ee8b, 0x1ee9b, 0x1eea1, 0x1eea3, 0x1eea5, 0x1eea9, 0x1eeab, 0x1eebb, 0x1eef0, 0x1eef1, 0x1f000, 0x1f02b, 0x1f030, 0x1f093,\n 0x1f0a0, 0x1f0ae, 0x1f0b1, 0x1f0bf, 0x1f0c1, 0x1f0cf, 0x1f0d1, 0x1f0f5, 0x1f100, 0x1f10c, 0x1f110, 0x1f12e, 0x1f130, 0x1f16b, 0x1f170, 0x1f1ac,\n 0x1f1e6, 0x1f202, 0x1f210, 0x1f23b, 0x1f240, 0x1f248, 0x1f250, 0x1f251, 0x1f300, 0x1f6d2, 0x1f6e0, 0x1f6ec, 0x1f6f0, 0x1f6f6, 0x1f700, 0x1f773,\n 0x1f780, 0x1f7d4, 0x1f800, 0x1f80b, 0x1f810, 0x1f847, 0x1f850, 0x1f859, 0x1f860, 0x1f887, 0x1f890, 0x1f8ad, 0x1f910, 0x1f91e, 0x1f920, 0x1f927,\n 0x1f930, 0x1f930, 0x1f933, 0x1f93e, 0x1f940, 0x1f94b, 0x1f950, 0x1f95e, 0x1f980, 0x1f991, 0x1f9c0, 0x1f9c0, 0x20000, 0x2a6d6, 0x2a700, 0x2b734,\n 0x2b740, 0x2b81d, 0x2b820, 0x2cea1, 0x2f800, 0x2fa1d, 0xe0001, 0xe0001, 0xe0020, 0xe007f, 0xe0100, 0xe01ef, 0xf0000, 0xffffd, 0x100000, 0x10fffd,\n];\n\nconst utf8Decoder = new TextDecoder(\"utf-8\", { fatal: true, ignoreBOM: true });\n\nexport function quoteBytes(text: string, unicode: boolean): string {\n const right = unicode ? \"\\xe2\\x80\\x99\" : \"'\";\n let result = unicode ? \"\\xe2\\x80\\x98\" : \"'\";\n const escapes: Readonly<Record<string, string>> = { \"\\x07\": \"\\\\a\", \"\\b\": \"\\\\b\", \"\\f\": \"\\\\f\", \"\\n\": \"\\\\n\", \"\\r\": \"\\\\r\", \"\\t\": \"\\\\t\", \"\\v\": \"\\\\v\" };\n for (let index = 0; index < text.length;) {\n if (text.startsWith(right, index)) { result += `\\\\${right}`; index += right.length; continue; }\n const character = text[index]!;\n const code = character.charCodeAt(0);\n if (character === \"\\\\\") result += \"\\\\\\\\\";\n else if (code >= 32 && code < 127) result += character;\n else if (unicode && code >= 194 && code <= 244) {\n const width = code < 224 ? 2 : code < 240 ? 3 : 4;\n const candidate = text.slice(index, index + width);\n let decoded: string | undefined;\n try { decoded = utf8Decoder.decode(Uint8Array.from(candidate, character => character.charCodeAt(0))); } catch { decoded = undefined; }\n const point = decoded?.codePointAt(0) ?? -1;\n let low = 0;\n let high = glibc231PrintableRanges.length / 2;\n let printable = false;\n while (low < high) {\n const middle = Math.trunc((low + high) / 2);\n if (point < glibc231PrintableRanges[middle * 2]!) high = middle;\n else if (point > glibc231PrintableRanges[middle * 2 + 1]!) low = middle + 1;\n else { printable = true; break; }\n }\n if (decoded !== undefined && printable) { result += candidate; index += width; continue; }\n result += `\\\\${code.toString(8).padStart(3, \"0\")}`;\n } else result += escapes[character] ?? `\\\\${code.toString(8).padStart(3, \"0\")}`;\n index++;\n }\n return result + right;\n}\n", "import { FsError, dirname, resolvePath, type ByteSource, type FileStat } from \"../../contracts/index.js\";\nimport { writeFileOutput } from \"../../contracts/filesystem-output.js\";\nimport { retainFileSystemCleanup } from \"poe-code/safe-fs/core\";\nimport { Budget, CsplitError, fsDetail, missing, pathText } from \"./internal.js\";\nimport type { Options } from \"./options.js\";\n\nconst retainedLineUnits = 128;\nconst retainedOutputUnits = 256;\nconst outputBufferBytes = 65_536;\n\nexport function sameIdentity(first: FileStat, second: FileStat): boolean {\n return ((typeof first.identityScope === \"object\" && first.identityScope !== null) || typeof first.identityScope === \"symbol\")\n && first.identityScope === second.identityScope && Number.isSafeInteger(first.dev) && Number.isSafeInteger(first.ino)\n && first.dev! >= 0 && first.ino! >= 0 && first.dev === second.dev && first.ino === second.ino;\n}\n\nexport class Lifecycle {\n private readonly pending = new Set<Promise<unknown>>();\n private readonly cleanups = new Set<() => Promise<void>>();\n private closing: Promise<void> | undefined;\n constructor(readonly budget: Budget) { budget.context.registerCleanup?.(() => this.close()); }\n cleanup(action: () => Promise<void>): () => Promise<void> {\n this.assertOpen();\n const owned = async () => { try { await action(); } finally { this.cleanups.delete(owned); } };\n this.cleanups.add(owned);\n return owned;\n }\n assertOpen(): void {\n this.budget.context.signal.throwIfAborted();\n if (this.closing) throw new CsplitError(\"command is closed\");\n }\n async operation<Value>(action: () => Promise<Value>): Promise<Value> {\n this.assertOpen();\n this.budget.charge();\n const pending = Promise.resolve().then(() => { this.assertOpen(); return action(); });\n this.pending.add(pending);\n try { const value = await pending; this.assertOpen(); return value; }\n finally { this.pending.delete(pending); }\n }\n close(): Promise<void> {\n return this.closing ??= (async () => {\n while (this.pending.size) await Promise.allSettled([...this.pending]);\n const failures: unknown[] = [];\n for (const cleanup of this.cleanups) {\n try { await cleanup(); }\n catch (error) { failures.push(error); }\n }\n if (failures.length === 1) throw failures[0];\n if (failures.length > 1) throw new AggregateError(failures, \"csplit cleanup failed\");\n })();\n }\n}\n\nexport class Lines {\n private readonly fallbackAllocation = {};\n private readonly lines: Uint8Array[] = [];\n private partial: Uint8Array[] = [];\n private partialBytes = 0;\n private total = 0;\n private emptyChunks = 0;\n private iterator: AsyncIterator<Uint8Array> | undefined;\n private ended = false;\n private path: string | undefined;\n identity: FileStat | undefined;\n constructor(readonly lifecycle: Lifecycle) {\n lifecycle.cleanup(async () => {\n try { if (!this.ended) await this.iterator?.return?.(); }\n finally {\n this.lines.length = 0; this.partial = [];\n lifecycle.budget.reserveBuffered(this, 0);\n lifecycle.budget.reserveBuffered(this.fallbackAllocation, 0);\n }\n });\n }\n private reserve(extraLines = 0, extraParts = 0): void {\n this.lifecycle.budget.reserveBuffered(this, this.total * 2 + (this.lines.length + extraLines + this.partial.length + extraParts) * retainedLineUnits);\n }\n async open(name: string): Promise<void> {\n if (name === \"-\") { this.identity = this.lifecycle.budget.context.stdinInput?.stat; return; }\n const { context, limits } = this.lifecycle.budget;\n this.lifecycle.budget.check(name.length, limits.maxPathBytes, \"input path bytes\");\n this.path = resolvePath(context.cwd, pathText(name));\n this.identity = await this.lifecycle.operation(() => context.fs.stat(this.path!, { signal: context.signal }));\n if (this.identity.type !== \"file\") throw new CsplitError(\"read error: Is a directory\");\n }\n assertOutput(path: string, existing: FileStat | undefined): void {\n if (path === this.path || existing && this.identity && sameIdentity(existing, this.identity)) throw new CsplitError(\"output would overwrite the input file\");\n if (existing && this.identity && !sameIdentity(this.identity, this.identity)) throw new CsplitError(\"cannot overwrite an existing output with unknown input identity\");\n }\n private async source(): Promise<ByteSource> {\n const { context, limits } = this.lifecycle.budget;\n if (this.path === undefined) return context.stdin;\n const { fs, signal } = context;\n const capabilities = await this.lifecycle.operation(async () => await fs.capabilitiesFor?.(this.path!, { signal }) ?? fs.capabilities);\n if (fs.readStream && capabilities.streamingRead !== false) return fs.readStream(this.path, { signal, chunkSize: 65_536 });\n if (this.identity!.size > Math.min(limits.maxInputBytes, limits.maxBufferedBytes / 2)) throw new CsplitError(\"buffered input bytes limit exceeded\");\n const admittedBytes = this.identity!.size;\n this.lifecycle.budget.reserveBuffered(this.fallbackAllocation, admittedBytes);\n this.lifecycle.budget.reserveBuffered(this, admittedBytes * 2);\n const value = await this.lifecycle.operation(() => fs.readFile(this.path!, { signal, maxBytes: admittedBytes }));\n this.lifecycle.budget.check(value.length, admittedBytes, \"input bytes\");\n return { async *[Symbol.asyncIterator]() { yield value; } };\n }\n private appendLine(): void {\n const { budget } = this.lifecycle;\n budget.check(this.lines.length + 1, budget.limits.maxLines, \"line count\");\n this.reserve(1);\n const line = new Uint8Array(this.partialBytes);\n let offset = 0;\n for (const part of this.partial) { line.set(part, offset); offset += part.length; }\n this.lines.push(line);\n this.partial = [];\n this.partialBytes = 0;\n this.reserve();\n }\n async get(number: number): Promise<Uint8Array | undefined> {\n const { budget } = this.lifecycle;\n while (this.lines.length < number && !this.ended) {\n this.lifecycle.assertOpen();\n if (!this.iterator) await this.lifecycle.operation(async () => {\n this.iterator = (await this.source())[Symbol.asyncIterator]();\n });\n const result = await this.lifecycle.operation(() => this.iterator!.next());\n if (result.done) {\n this.ended = true;\n if (this.partialBytes) this.appendLine();\n break;\n }\n const chunk = result.value;\n if (!(chunk instanceof Uint8Array)) throw new CsplitError(\"input produced a non-byte chunk\");\n this.total += chunk.length;\n budget.check(this.total, budget.limits.maxInputBytes, \"input bytes\");\n this.reserve();\n if (!chunk.length) budget.check(++this.emptyChunks, budget.limits.maxEmptyChunks, \"empty input chunks\");\n budget.charge(chunk.length);\n const owned = Uint8Array.from(chunk);\n let start = 0;\n for (let offset = 0; offset < owned.length; offset++) {\n if (owned[offset] === 10) {\n this.partialBytes += offset + 1 - start;\n budget.check(this.partialBytes, budget.limits.maxLineBytes, \"line bytes\");\n this.reserve(0, 1);\n this.partial.push(owned.subarray(start, offset + 1));\n this.appendLine(); start = offset + 1;\n }\n if (offset % 4096 === 0) {\n budget.charge(Math.min(4096, owned.length - offset));\n await budget.checkpointWork();\n }\n }\n if (start < owned.length) {\n this.partialBytes += owned.length - start;\n budget.check(this.partialBytes, budget.limits.maxLineBytes, \"line bytes\");\n this.reserve(0, 1);\n this.partial.push(owned.subarray(start));\n }\n await budget.checkpointWork();\n }\n return this.lines[number - 1];\n }\n}\n\ninterface Output {\n readonly path: string;\n readonly parent: FileStat;\n readonly metadataBytes: number;\n identity?: FileStat;\n created: boolean;\n removed: boolean;\n elided: boolean;\n failed: boolean;\n size: number;\n buffer?: Uint8Array;\n buffered: number;\n cleanup(): Promise<void>;\n}\n\nexport class Outputs {\n private index = 0;\n private attempts = 0;\n private current: Output | undefined;\n preserve = false;\n succeeded = false;\n constructor(readonly lifecycle: Lifecycle, readonly options: Options, readonly format: (index: number) => string, readonly input: Lines) {}\n private async parents(path: string): Promise<{ path: string; identity: FileStat }[]> {\n const { budget } = this.lifecycle;\n const { context, limits } = budget;\n const components = dirname(path).split(\"/\").filter(Boolean);\n budget.check(components.length, limits.maxPathDepth, \"path depth\");\n const parents: { path: string; identity: FileStat }[] = [];\n let current = \"/\";\n for (const component of [\"\", ...components]) {\n if (component) current = resolvePath(current, component);\n const identity = Object.freeze({ ...await this.lifecycle.operation(() => context.fs.lstat(current, { signal: context.signal })) });\n if (identity.type !== \"directory\" || !sameIdentity(identity, identity)) throw new CsplitError(\"unsafe output directory identity\");\n parents.push({ path: current, identity });\n }\n return parents;\n }\n private async checkedParents(parents: readonly { path: string; identity: FileStat }[]): Promise<void> {\n const { context } = this.lifecycle.budget;\n for (const parent of parents) {\n const current = await this.lifecycle.operation(() => context.fs.lstat(parent.path, { signal: context.signal }));\n if (current.type !== \"directory\" || !sameIdentity(current, parent.identity)) throw new CsplitError(\"output parent changed before mutation\");\n }\n }\n async open(): Promise<void> {\n const { budget } = this.lifecycle;\n const { context, limits } = budget;\n budget.check(++this.attempts, limits.maxFileAttempts, \"output file attempts\");\n budget.check(this.index + 1, limits.maxFiles, \"output file count\");\n const name = this.options.prefix + this.format(this.index);\n budget.check(name.length, limits.maxPathBytes, \"output filename bytes\");\n const path = resolvePath(context.cwd, pathText(name));\n try {\n const capabilities = await this.lifecycle.operation(async () => await context.fs.capabilitiesFor?.(path, { signal: context.signal, create: true }) ?? context.fs.capabilities);\n if (capabilities.atomicFileMutation !== true || !context.fs.writeFileConditional || !context.fs.removeFileConditional) throw new CsplitError(\"atomic output mutations are not supported\");\n const parents = await this.parents(path);\n let existing: FileStat | undefined;\n try { existing = Object.freeze({ ...await this.lifecycle.operation(() => context.fs.lstat(path, { signal: context.signal })) }); }\n catch (error) { context.signal.throwIfAborted(); if (!missing(error)) throw error; }\n if (existing && (existing.type !== \"file\" || !sameIdentity(existing, existing))) throw new CsplitError(`unsafe output file ${budget.quote(name)}`);\n this.input.assertOutput(path, existing);\n const metadataBytes = retainedOutputUnits + path.length * 2;\n const output: Output = { path, parent: parents.at(-1)!.identity, metadataBytes, created: false, removed: false, elided: false, failed: false, size: 0, buffered: 0, cleanup: async () => {} };\n budget.reserveBuffered(output, metadataBytes);\n output.cleanup = this.lifecycle.cleanup(retainFileSystemCleanup(context.fs, async view => {\n delete output.buffer;\n output.buffered = 0;\n budget.reserveBuffered(output, 0);\n if (!output.created || !output.identity || !output.elided && (this.succeeded || this.options.keep || this.preserve)) return;\n try {\n if (!view.removeFileConditional) throw new FsError(\"ENOTSUP\");\n await view.removeFileConditional(path, { expected: output.identity, parent: output.parent });\n output.removed = true;\n } catch (error) { if (!missing(error) && !(error instanceof FsError && error.code === \"EAGAIN\")) throw error; }\n }, { maxOperations: 1 }));\n try {\n await this.checkedParents(parents);\n await this.lifecycle.operation(async () => {\n output.identity = Object.freeze({ ...await context.fs.writeFileConditional!(path, new Uint8Array(), {\n signal: context.signal, expected: existing ?? null, parent: output.parent,\n }) });\n output.created = true;\n });\n } finally { parents.length = 0; }\n this.index++;\n this.current = output;\n } catch (error) {\n if (error instanceof FsError) throw new CsplitError(`${name}: ${fsDetail(error)}`);\n throw error;\n }\n }\n private async flush(output: Output): Promise<void> {\n if (!output.buffered) return;\n const { context } = this.lifecycle.budget;\n try {\n await this.lifecycle.operation(() => writeFileOutput(context, output.buffer!.subarray(0, output.buffered), async chunk => {\n output.identity = Object.freeze({ ...await context.fs.writeFileConditional!(output.path, chunk, {\n signal: context.signal, expected: output.identity!, parent: output.parent, append: true,\n }) });\n output.buffered = 0;\n }));\n } catch (error) { output.failed = true; throw error; }\n }\n async write(value: Uint8Array): Promise<void> {\n const output = this.current;\n if (!output) throw new CsplitError(\"output is not open\");\n const { budget } = this.lifecycle;\n budget.fileBytes(value.length);\n if (!output.buffer) {\n const capacity = Math.min(outputBufferBytes, budget.limits.maxBufferedBytes);\n budget.reserveBuffered(output, output.metadataBytes + capacity);\n output.buffer = new Uint8Array(capacity);\n }\n for (let offset = 0; offset < value.length;) {\n this.lifecycle.assertOpen();\n const count = Math.min(value.length - offset, output.buffer.length - output.buffered);\n output.buffer.set(value.subarray(offset, offset + count), output.buffered);\n output.buffered += count;\n output.size += count;\n offset += count;\n if (output.buffered === output.buffer.length) await this.flush(output);\n }\n }\n async finish(): Promise<void> {\n const output = this.current;\n if (!output) return;\n this.current = undefined;\n if (output.failed) return;\n await this.flush(output);\n delete output.buffer;\n this.lifecycle.budget.reserveBuffered(output, output.metadataBytes);\n if (!output.size && this.options.elide) {\n output.elided = true;\n await output.cleanup();\n if (!output.removed) throw new CsplitError(\"output changed before empty-file removal\");\n this.index--;\n } else if (!this.options.quiet) await this.lifecycle.budget.print(`${output.size}\\n`);\n }\n}\n", "import { Budget, CsplitError, pathText } from \"./internal.js\";\n\nexport interface Options {\n prefix: string;\n suffix?: string;\n digits: number;\n keep: boolean;\n elide: boolean;\n quiet: boolean;\n suppress: boolean;\n information?: \"help\" | \"version\";\n operands: string[];\n}\n\nexport function integer(value: string, signed = false): bigint | undefined {\n let offset = 0;\n while (offset < value.length && \" \\t\\n\\r\\v\\f\".includes(value[offset]!)) offset++;\n const negative = value[offset] === \"-\";\n if (negative && !signed) return undefined;\n if (negative || value[offset] === \"+\") offset++;\n const start = offset;\n let result = 0n;\n const maximum = signed ? negative ? 9_223_372_036_854_775_808n : 9_223_372_036_854_775_807n : 18_446_744_073_709_551_615n;\n for (; offset < value.length; offset++) {\n const digit = value.charCodeAt(offset) - 48;\n if (digit < 0 || digit > 9) return undefined;\n result = result * 10n + BigInt(digit);\n if (result > maximum) return undefined;\n }\n return offset === start ? undefined : negative ? -result : result;\n}\n\nexport function parseOptions(args: readonly string[], budget: Budget): Options {\n const parsed: Options = { prefix: \"xx\", digits: 2, keep: false, elide: false, quiet: false, suppress: false, operands: [] };\n const long: Readonly<Record<string, string>> = {\n prefix: \"f\", \"suffix-format\": \"b\", \"keep-files\": \"k\", \"elide-empty-files\": \"z\",\n digits: \"n\", quiet: \"q\", silent: \"s\", \"suppress-matched\": \"suppress\", help: \"help\", version: \"version\",\n };\n let ended = false;\n const apply = (key: string, value?: string): void => {\n if (key === \"f\") parsed.prefix = value!;\n else if (key === \"b\") parsed.suffix = value!;\n else if (key === \"k\") parsed.keep = true;\n else if (key === \"z\") parsed.elide = true;\n else if (key === \"q\" || key === \"s\") parsed.quiet = true;\n else if (key === \"suppress\") parsed.suppress = true;\n else if (key === \"n\") {\n const count = integer(value!, true);\n if (count === undefined || count < 0n || count > 2_147_483_647n) throw new CsplitError(`invalid number: ${budget.quote(value!)}`);\n budget.check(Number(count), budget.limits.maxPathBytes, \"suffix width\");\n parsed.digits = Number(count);\n } else parsed.information = key as \"help\" | \"version\";\n };\n for (let index = 0; index < args.length; index++) {\n const argument = args[index]!;\n budget.charge();\n if (ended || argument === \"-\" || !argument.startsWith(\"-\")) {\n parsed.operands.push(argument);\n if (Object.hasOwn(budget.context.env, \"POSIXLY_CORRECT\")) ended = true;\n } else if (argument === \"--\") ended = true;\n else if (argument.startsWith(\"--\")) {\n const equals = argument.indexOf(\"=\");\n const name = argument.slice(2, equals < 0 ? undefined : equals);\n const candidates = Object.keys(long).filter(key => key.startsWith(name));\n if (!Object.hasOwn(long, name) && candidates.length > 1) throw new CsplitError(`option ${budget.quote(argument)} is ambiguous; possibilities: ${candidates.map(key => budget.quote(`--${key}`)).join(\" \")}`, true);\n const selected = Object.hasOwn(long, name) ? name : candidates[0];\n if (!selected) throw new CsplitError(`unrecognized option ${budget.quote(argument)}`, true);\n const key = long[selected]!;\n let value: string | undefined;\n if (\"fbn\".includes(key) && key.length === 1) {\n value = equals < 0 ? args[++index] : argument.slice(equals + 1);\n if (value === undefined) throw new CsplitError(`option '--${selected}' requires an argument`, true);\n } else if (equals >= 0) throw new CsplitError(`option '--${selected}' doesn't allow an argument`, true);\n apply(key, value);\n } else {\n for (let offset = 1; offset < argument.length; offset++) {\n const key = argument[offset]!;\n if (!\"fbknsqz\".includes(key)) throw new CsplitError(`invalid option -- ${budget.quote(key)}`, true);\n let value: string | undefined;\n if (\"fbn\".includes(key)) {\n value = argument.slice(offset + 1) || args[++index];\n if (value === undefined) throw new CsplitError(`option requires an argument -- ${budget.quote(key)}`, true);\n offset = argument.length;\n }\n apply(key, value);\n }\n }\n if (parsed.information) return parsed;\n }\n if (parsed.operands.length < 2) throw new CsplitError(parsed.operands.length ? `missing operand after ${budget.quote(args.at(-1)!)}` : \"missing operand\", true);\n budget.check(parsed.prefix.length, budget.limits.maxPathBytes, \"prefix bytes\");\n pathText(parsed.prefix);\n return parsed;\n}\n\nexport function suffixFormatter(options: Options, budget: Budget): (index: number) => string {\n if (options.suffix === undefined) return index => String(index).padStart(options.digits, \"0\");\n const format = options.suffix;\n let before = \"\", after = \"\";\n let conversion: { width: number; precision?: number; flags: string; type: string } | undefined;\n for (let offset = 0; offset < format.length; offset++) {\n const character = format[offset]!;\n if (character !== \"%\" || format[offset + 1] === \"%\") {\n if (character === \"%\") offset++;\n if (conversion) after += character; else before += character;\n continue;\n }\n if (conversion) throw new CsplitError(\"too many % conversion specifications in suffix\");\n let flags = \"\";\n offset++;\n while (offset < format.length && \"-0'#\".includes(format[offset]!)) flags += format[offset++]!;\n let width = 0;\n while (offset < format.length && format[offset]! >= \"0\" && format[offset]! <= \"9\") {\n width = width * 10 + Number(format[offset++]);\n budget.check(width, budget.limits.maxPathBytes, \"suffix width\");\n }\n let precision: number | undefined;\n if (format[offset] === \".\") {\n precision = 0; offset++;\n while (offset < format.length && format[offset]! >= \"0\" && format[offset]! <= \"9\") {\n precision = precision * 10 + Number(format[offset++]);\n budget.check(precision, budget.limits.maxPathBytes, \"suffix precision\");\n }\n }\n const type = format[offset];\n if (type === undefined) throw new CsplitError(\"missing conversion specifier in suffix\");\n if (!\"diuoxX\".includes(type)) throw new CsplitError(`invalid conversion specifier in suffix: ${type >= \" \" && type <= \"~\" ? type : `\\\\${type.charCodeAt(0).toString(8).padStart(3, \"0\")}`}`);\n const invalid = \"diu\".includes(type) ? flags.includes(\"#\") ? \"#\" : \"\" : flags.includes(\"'\") ? \"'\" : \"\";\n if (invalid) throw new CsplitError(`invalid flags in conversion specification: %${invalid}${type}`);\n conversion = { width, flags, type, ...(precision === undefined ? {} : { precision }) };\n }\n if (!conversion) throw new CsplitError(\"missing % conversion specification in suffix\");\n const { width, precision, flags, type } = conversion;\n budget.check(options.prefix.length + before.length + after.length + Math.max(width, precision ?? 0, 10) + 2, budget.limits.maxPathBytes, \"output filename bytes\");\n return index => {\n let number = index === 0 && precision === 0 ? \"\" : index.toString(type === \"o\" ? 8 : type === \"x\" || type === \"X\" ? 16 : 10);\n if (type === \"X\") number = number.toUpperCase();\n number = number.padStart(precision ?? 0, \"0\");\n let prefix = \"\";\n if (flags.includes(\"#\")) {\n if (type === \"o\" && !number.startsWith(\"0\")) prefix = \"0\";\n else if ((type === \"x\" || type === \"X\") && index !== 0) prefix = type === \"X\" ? \"0X\" : \"0x\";\n }\n if (flags.includes(\"0\") && !flags.includes(\"-\") && precision === undefined) number = number.padStart(Math.max(0, width - prefix.length), \"0\");\n let rendered = prefix + number;\n rendered = flags.includes(\"-\") ? rendered.padEnd(width) : rendered.padStart(width);\n return before + rendered + after;\n };\n}\n", "import type { RegexSession } from \"../regex-execution/portable.js\";\nimport { ExprMatchError, exprMatchCeilings } from \"../regex-execution/protocol.js\";\nimport { Budget, bytes, CsplitError } from \"./internal.js\";\nimport { integer } from \"./options.js\";\n\nexport interface Pattern {\n readonly argument: string;\n readonly line?: bigint;\n readonly expression?: Uint8Array;\n readonly ignore: boolean;\n readonly offset: bigint;\n repeat: bigint;\n forever: boolean;\n}\n\nexport class Matcher {\n constructor(readonly session: RegexSession, readonly budget: Budget) {}\n async search(pattern: Uint8Array, subject: Uint8Array): Promise<boolean> {\n const { limits, context } = this.budget;\n this.budget.charge();\n const locale = context.env.LC_ALL || context.env.LC_CTYPE || context.env.LANG || \"C\";\n const collate = context.env.LC_ALL || context.env.LC_COLLATE || context.env.LANG || \"C\";\n const supported = [\"C\", \"POSIX\", \"C.UTF-8\", \"C.utf8\"];\n if (!supported.includes(locale) || !supported.includes(collate)) throw new CsplitError(\"BRE requires C/POSIX or C.UTF-8/C.utf8 locale\");\n if (this.budget.remaining() < 1) throw new CsplitError(\"work limit exceeded\");\n const result = await this.session.searchBre({ kind: \"bre-search\", pattern, profile: locale === \"C\" || locale === \"POSIX\" ? \"byte\" : \"utf8-scalar\", limits: {\n maxPatternBytes: limits.maxRegexPatternBytes, maxSubjectBytes: Math.min(limits.maxLineBytes, exprMatchCeilings.maxSubjectBytes),\n maxNodes: limits.maxRegexNodes, maxDepth: limits.maxRegexDepth,\n maxSteps: Math.min(this.budget.remaining(), exprMatchCeilings.maxSteps), maxStates: limits.maxRegexStates,\n maxAllocatedUnits: limits.maxRegexAllocatedUnits,\n } }, subject);\n this.budget.charge(result.steps);\n await this.budget.checkpointWork();\n return result.matched;\n }\n}\n\nexport async function preparePatterns(args: readonly string[], matcher: Matcher): Promise<readonly Pattern[]> {\n const { budget } = matcher;\n const patterns: Pattern[] = [];\n let last = 0n;\n for (let index = 0; index < args.length; index++) {\n budget.check(patterns.length + 1, budget.limits.maxPatterns, \"pattern count\");\n const argument = args[index]!;\n let pattern: Pattern;\n if (argument.startsWith(\"/\") || argument.startsWith(\"%\")) {\n const delimiter = argument[0]!;\n const closing = argument.lastIndexOf(delimiter);\n if (closing === 0) throw new CsplitError(`${argument}: closing delimiter '${delimiter}' missing`);\n budget.check(closing - 1, budget.limits.maxRegexPatternBytes, \"regex pattern bytes\");\n const expression = bytes(argument.slice(1, closing));\n try { await matcher.search(expression, new Uint8Array()); }\n catch (error) {\n if (error instanceof ExprMatchError && error.category === \"syntax\") throw new CsplitError(`${budget.quote(argument)}: invalid regular expression: ${error.message}`);\n throw error;\n }\n const offset = closing + 1 === argument.length ? 0n : integer(argument.slice(closing + 1), true);\n if (offset === undefined) throw new CsplitError(`${budget.quote(argument)}: integer expected after delimiter`);\n pattern = { argument, expression, ignore: delimiter === \"%\", offset, repeat: 0n, forever: false };\n } else {\n const line = integer(argument);\n if (line === undefined) throw new CsplitError(`${budget.quote(argument)}: invalid pattern`);\n if (line === 0n) throw new CsplitError(`${argument}: line number must be greater than zero`);\n if (line < last) throw new CsplitError(`line number ${budget.quote(argument)} is smaller than preceding line number, ${last}`);\n if (line === last) await budget.print(`csplit: warning: line number ${budget.quote(argument)} is the same as preceding line number\\n`, true);\n last = line;\n pattern = { argument, line, ignore: false, offset: 0n, repeat: 0n, forever: false };\n }\n const repeat = args[index + 1];\n if (repeat?.startsWith(\"{\")) {\n index++;\n if (!repeat.endsWith(\"}\")) throw new CsplitError(`${budget.quote(repeat)}: '}' is required in repeat count`);\n if (repeat === \"{*}\") pattern.forever = true;\n else {\n const count = integer(repeat.slice(1, -1));\n if (count === undefined) throw new CsplitError(`${budget.quote(repeat.slice(0, -1))}}: integer required between '{' and '}'`);\n pattern.repeat = count;\n }\n }\n patterns.push(pattern);\n await budget.checkpointWork();\n }\n return patterns;\n}\n", "import { CsplitError } from \"./internal.js\";\nimport { Lines, Outputs } from \"./io.js\";\nimport { Matcher, type Pattern } from \"./patterns.js\";\n\nexport class Splitter {\n private next = 1;\n private current = 0;\n constructor(readonly input: Lines, readonly output: Outputs, readonly matcher: Matcher) {}\n private async remove(): Promise<Uint8Array | undefined> {\n const line = await this.input.get(this.next);\n if (line) { this.current = Math.max(this.current, this.next); this.next++; }\n return line;\n }\n private range(pattern: Pattern, repetition: bigint): CsplitError {\n return new CsplitError(`${this.matcher.budget.quote(String(pattern.line))}: line number out of range${repetition ? ` on repetition ${repetition}` : \"\"}`);\n }\n private async first(): Promise<void> {\n if (!await this.input.get(this.next)) throw new CsplitError(\"input disappeared\", false, true);\n }\n private async rest(): Promise<void> {\n let line: Uint8Array | undefined;\n while ((line = await this.remove()) !== undefined) {\n await this.output.write(line);\n await this.matcher.budget.checkpointWork();\n }\n }\n private async numeric(pattern: Pattern, repetition: bigint): Promise<void> {\n const target = BigInt.asUintN(64, pattern.line! * (repetition + 1n));\n await this.output.open();\n if (this.output.options.suppress && !await this.input.get(this.current + 1)) throw this.range(pattern, repetition);\n await this.first();\n while (BigInt(this.next) < target) {\n const line = await this.remove();\n if (!line) throw this.range(pattern, repetition);\n await this.output.write(line);\n await this.matcher.budget.checkpointWork();\n }\n await this.output.finish();\n if (this.output.options.suppress) await this.remove();\n else if (!await this.input.get(this.current + 1)) throw this.range(pattern, repetition);\n }\n private async regex(pattern: Pattern, repetition: bigint): Promise<boolean> {\n if (!pattern.ignore) await this.output.open();\n if (this.output.options.suppress && this.current > 0) await this.remove();\n for (;;) {\n const line = await this.input.get(++this.current);\n if (!line) {\n if (!pattern.forever) {\n const message = `${this.matcher.budget.quote(pattern.argument)}: match not found${repetition ? ` on repetition ${repetition}` : \"\"}`;\n if (!pattern.ignore) await this.rest();\n throw new CsplitError(message);\n }\n if (!pattern.ignore) { await this.rest(); await this.output.finish(); }\n return true;\n }\n const subject = line.at(-1) === 10 ? line.subarray(0, -1) : line;\n if (await this.matcher.search(pattern.expression!, subject)) break;\n if (pattern.offset >= 0n) {\n const removed = await this.remove();\n if (removed && !pattern.ignore) await this.output.write(removed);\n }\n await this.matcher.budget.checkpointWork();\n }\n const target = BigInt.asUintN(64, BigInt(this.current) + pattern.offset);\n await this.first();\n if (BigInt(this.next) > target) throw new CsplitError(`${this.matcher.budget.quote(pattern.argument)}: line number out of range`);\n while (BigInt(this.next) < target) {\n const line = await this.remove();\n if (!line) throw new CsplitError(`${this.matcher.budget.quote(pattern.argument)}: line number out of range`);\n if (!pattern.ignore) await this.output.write(line);\n await this.matcher.budget.checkpointWork();\n }\n if (!pattern.ignore) await this.output.finish();\n if (pattern.offset > 0n) this.current = Number(target);\n return false;\n }\n async run(patterns: readonly Pattern[]): Promise<void> {\n for (const pattern of patterns) {\n for (let repetition = 0n; pattern.forever || repetition <= pattern.repeat; repetition++) {\n this.matcher.budget.charge();\n if (pattern.expression !== undefined) {\n if (await this.regex(pattern, repetition)) return;\n } else await this.numeric(pattern, repetition);\n await this.matcher.budget.checkpointWork();\n }\n }\n await this.output.open();\n await this.rest();\n await this.output.finish();\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;ACAA;;;ACAA;AACO,SAAS,UAAU,MAAsB;AAC9C,SAAO,QAAQ,MAAM,QAAQ,KAAK,OAAO,KAAK;AAChD;;;ACHA;;;ACAA;AAYO,IAAM,WAA4C,OAAO,OAAO;AAAA,EACrE,kBAAkB;AAAA,EAAM,kBAAkB;AAAA,EAAM,YAAY;AAAA,EAC5D,mBAAmB;AAAA,EAAI,gBAAgB,MAAM,OAAO;AAAA,EACpD,eAAe;AAAA,EAAK,uBAAuB;AAAA,EAAK,eAAe;AACjE,CAAC;AAIM,IAAM,sBAAN,cAAkC,iBAAiB;AAAA,EACxD,YAAqB,MAAsB,SAAiBA,UAAwB;AAClF,UAAM,SAAS,UAAU,UAAU,SAAS,IAAI,KAAK,OAAO,IAAIA,QAAO;AADpD;AAEnB,SAAK,OAAO;AAAA,EACd;AAAA,EAHqB;AAIvB;AA+BO,IAAM,mBAAmB,OAAO,OAAO,EAAE,QAAQ,KAAS,UAAU,IAAQ,CAAC;AAa7E,IAAM,oBAAqC,OAAO,OAAO;AAAA,EAC9D,iBAAiB;AAAA,EAAQ,iBAAiB;AAAA,EAAW,UAAU;AAAA,EAC/D,UAAU;AAAA,EAAK,UAAU;AAAA,EAAY,WAAW;AAAA,EAAQ,mBAAmB;AAC7E,CAAC;AA2BM,SAAS,qBAAqBC,QAAmB,QAAwB;AAC9E,QAAM,QAAQA,OAAM,MAAM;AAC1B,QAAM,QAAQ,SAAS,OAAQ,SAAS,MAAO,IAAI,SAAS,OAAQ,SAAS,MAAO,IAAI,SAAS,OAAQ,SAAS,MAAO,IAAI;AAC7H,MAAI,QAAQA,OAAM,SAAS,OAAQ,QAAO;AAC1C,WAAS,eAAe,GAAG,eAAe,OAAO,gBAAgB;AAC/D,UAAM,QAAQA,OAAM,SAAS,YAAY;AACzC,QAAI,QAAQ,OAAQ,QAAQ,OAAQ,iBAAiB,MAAM,UAAU,OAAQ,QAAQ,OAChF,UAAU,OAAQ,QAAQ,OAAQ,UAAU,OAAQ,QAAQ,OAAQ,UAAU,OAAQ,QAAQ,KAAO,QAAO;AAAA,EACnH;AACA,SAAO;AACT;AAQO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,YAAqB,UAA8C,SAAiB;AAAE,UAAM,OAAO;AAA9E;AAAA,EAAiF;AAAA,EAAjF;AACvB;AAEA,SAAS,YAAY,OAAgB,MAA2D;AAC9F,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,KACrE,OAAO,KAAK,KAAK,EAAE,WAAW,KAAK,UAAU,KAAK,MAAM,SAAO,OAAO,OAAO,OAAO,GAAG,CAAC;AAC/F;AAEA,SAAS,gBAAgB,OAAgB,MAA2D;AAClG,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,KAAK,QAAQ,QAAQ,KAAK,EAAE,WAAW,KAAK,OAAQ,QAAO;AACzH,SAAO,KAAK,MAAM,SAAO;AACvB,UAAM,WAAW,OAAO,yBAAyB,OAAO,GAAG;AAC3D,WAAO,aAAa,UAAa,WAAW;AAAA,EAC9C,CAAC;AACH;AAEO,SAAS,kBAAkBC,aAAiC,MAAsB,QAA2B;AAClH,SAAO,eAAe;AACtB,QAAM,UAAU,MAAM;AAAE,UAAM,IAAI,oBAAoB,YAAY,sBAAsB;AAAA,EAAG;AAC3F,MAAI,CAAC,YAAYA,aAAY,CAAC,QAAQ,WAAW,WAAW,QAAQ,CAAC,KAAKA,YAAW,SAAS,gBACzF,EAAEA,YAAW,mBAAmB,eAAe,CAAC,CAAC,QAAQ,aAAa,EAAE,SAASA,YAAW,OAAO,EAAG,SAAQ;AACnH,QAAM,OAAO,OAAO,KAAK,iBAAiB;AAC1C,MAAI,CAAC,YAAYA,YAAW,QAAQ,IAAI,EAAG,SAAQ;AACnD,aAAW,OAAO,MAAM;AACtB,QAAI,CAAC,OAAO,cAAcA,YAAW,OAAO,GAAG,CAAC,KAAKA,YAAW,OAAO,GAAG,IAAI,KAAKA,YAAW,OAAO,GAAG,IAAI,kBAAkB,GAAG,EAAG,SAAQ;AAAA,EAC9I;AACA,MAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAG,SAAQ;AACvD,QAAM,MAAM,KAAK,CAAC;AAClB,MAAI,CAAC,YAAY,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,iBAAiB,eAAe,IAAI,QAAQ,SAAS,IAAI,eAAe,MAAO,SAAQ;AACtJ,MAAIA,YAAW,QAAQ,SAASA,YAAW,OAAO,mBAAmB,IAAI,MAAM,SAASA,YAAW,OAAO,iBAAiB;AACzH,UAAM,IAAI,eAAe,SAAS,kCAAkC;AAAA,EACtE;AACF;AAEO,SAAS,uBAAuBA,aAAiC,MAAsB,QAA2B;AACvH,SAAO,eAAe;AACtB,MAAI,CAAC,gBAAgBA,aAAY,CAAC,QAAQ,WAAW,WAAW,QAAQ,CAAC,KAAKA,YAAW,SAAS,gBAC7F,CAAC,gBAAgBA,YAAW,QAAQ,OAAO,KAAK,iBAAiB,CAAC,KAAK,CAAC,MAAM,QAAQ,IAAI,KAC1F,KAAK,WAAW,KAAK,QAAQ,QAAQ,IAAI,EAAE,WAAW,GAAG;AAC5D,UAAM,IAAI,oBAAoB,YAAY,4BAA4B;AAAA,EACxE;AACA,QAAM,MAAM,OAAO,yBAAyB,MAAM,GAAG;AACrD,MAAI,CAAC,OAAO,EAAE,WAAW,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,SAAS,OAAO,YAAY,CAAC,GAAG;AAC5F,UAAM,IAAI,oBAAoB,YAAY,4BAA4B;AAAA,EACxE;AACA,oBAAkB,EAAE,GAAGA,aAAY,MAAM,aAAa,GAAG,MAAM,MAAM;AACvE;AASO,SAAS,uBAAuB,OAAgB,IAAYC,aAAiC,SAAqB,QAAsC;AAC7J,SAAO,eAAe;AACtB,QAAM,UAAU,MAAa;AAAE,UAAM,IAAI,oBAAoB,YAAY,0BAA0B;AAAA,EAAG;AACtG,MAAI,CAAC,gBAAgB,OAAO,OAAO,OAAO,SAAS,CAAC,GAAG,OAAO,IAAI,CAAC,MAAM,aAAa,SAAS,UAAU,IAAI,CAAC,MAAM,aAAa,QAAQ,CAAC,EAAG,QAAO,QAAQ;AAC5J,QAAM,QAAQ;AACd,MAAI,MAAM,OAAO,MAAM,MAAM,cAAc,aAAc,QAAO,QAAQ;AACxE,MAAI,WAAW,OAAO;AACpB,QAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,aAAa,SAAS,UAAU,CAAC,KAAK,OAAO,MAAM,UAAU,YAC3F,MAAM,MAAM,SAAS,OAAO,CAAC,CAAC,UAAU,eAAe,OAAO,EAAE,SAAS,MAAM,QAAkB,EAAG,QAAO,QAAQ;AACxH,UAAM,IAAI,eAAe,MAAM,UAAgD,MAAM,KAAK;AAAA,EAC5F;AACA,MAAI,CAAC,gBAAgB,OAAO,CAAC,MAAM,aAAa,QAAQ,CAAC,EAAG,QAAO,QAAQ;AAC3E,QAAM,SAAS,MAAM;AACrB,MAAI,CAAC,gBAAgB,QAAQ,CAAC,cAAc,WAAW,WAAW,OAAO,CAAC,KAAK,OAAO,eAAe,UAChG,OAAO,OAAO,YAAY,aAAa,CAAC,OAAO,cAAc,OAAO,KAAK,KACxE,OAAO,QAAmB,KAAM,OAAO,QAAmBA,YAAW,OAAO,SAAU,QAAO,QAAQ;AAC3G,MAAI,UAAwB;AAC5B,MAAI,OAAO,YAAY,MAAM;AAC3B,QAAI,CAAC,gBAAgB,OAAO,SAAS,CAAC,SAAS,KAAK,CAAC,EAAG,QAAO,QAAQ;AACvE,UAAM,EAAE,OAAO,IAAI,IAAI,OAAO;AAC9B,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,cAAc,GAAG,KAAM,QAAmB,KAChF,MAAkB,SAAqB,MAAiB,QAAQ,OAAQ,QAAO,QAAQ;AAC7F,QAAIA,YAAW,YAAY,eAAe;AACxC,iBAAW,UAAU,CAAC,OAAiB,GAAa,GAAG;AACrD,iBAAS,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC,GAAG,WAAW,QAAQ,YAAY;AAC1E,cAAI,WAAW,qBAAqB,SAAS,QAAQ,IAAI,OAAQ,QAAO,QAAQ;AAAA,QAClF;AAAA,MACF;AAAA,IACF;AACA,cAAU,EAAE,OAAwB,IAAmB;AAAA,EACzD;AACA,MAAI,OAAO,aAAa,YAAY,MAAO,QAAO,QAAQ;AAC1D,SAAO,EAAE,YAAY,QAAQ,SAAS,OAAO,SAAS,SAAS,OAAO,OAAO,MAAgB;AAC/F;AASO,SAAS,kBAAkB,OAAgB,IAAYC,aAAiC,SAAqB,QAAsC;AACxJ,SAAO,eAAe;AACtB,QAAM,UAAU,MAAa;AAAE,UAAM,IAAI,oBAAoB,YAAY,oBAAoB;AAAA,EAAG;AAChG,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO,QAAQ;AACxD,QAAM,QAAQ;AACd,MAAI,MAAM,OAAO,MAAM,MAAM,cAAc,aAAc,QAAO,QAAQ;AACxE,MAAI,WAAW,OAAO;AACpB,QAAI,CAAC,YAAY,OAAO,CAAC,MAAM,aAAa,SAAS,UAAU,CAAC,KAAK,OAAO,MAAM,UAAU,YACvF,MAAM,MAAM,SAAS,OAAO,CAAC,CAAC,UAAU,eAAe,OAAO,EAAE,SAAS,MAAM,QAAkB,EAAG,QAAO,QAAQ;AACxH,UAAM,IAAI,eAAe,MAAM,UAAgD,MAAM,KAAK;AAAA,EAC5F;AACA,MAAI,CAAC,YAAY,OAAO,CAAC,MAAM,aAAa,QAAQ,CAAC,EAAG,QAAO,QAAQ;AACvE,QAAM,SAAS,MAAM;AACrB,MAAI,CAAC,YAAY,QAAQ,CAAC,cAAc,WAAW,cAAc,WAAW,WAAW,OAAO,CAAC,KAC1F,OAAO,eAAe,UAAU,OAAO,OAAO,YAAY,aAAa,OAAO,OAAO,eAAe,aACpG,CAAC,OAAO,cAAc,OAAO,KAAK,KAAM,OAAO,QAAmB,KAAM,OAAO,QAAmBA,YAAW,OAAO,SAAU,QAAO,QAAQ;AAClJ,QAAM,OAAO,CAACC,WAAiC;AAC7C,QAAIA,WAAU,KAAM,QAAO;AAC3B,QAAI,CAAC,YAAYA,QAAO,CAAC,SAAS,KAAK,CAAC,KAAK,CAAC,OAAO,cAAcA,OAAM,KAAK,KAAK,CAAC,OAAO,cAAcA,OAAM,GAAG,EAAG,QAAO,QAAQ;AACpI,UAAM,QAAQA,OAAM,OAAiB,MAAMA,OAAM;AACjD,QAAI,QAAQ,KAAK,MAAM,SAAS,MAAM,QAAQ,OAAQ,QAAO,QAAQ;AACrE,QAAID,YAAW,YAAY,eAAe;AACxC,iBAAW,UAAU,CAAC,OAAO,GAAG,EAAG,KAAI,SAAS,QAAQ,UAAU,QAAQ,MAAM,KAAM,OAAQ,QAAQ,MAAM,KAAM,IAAM,QAAO,QAAQ;AAAA,IACzI;AACA,WAAO,EAAE,OAAO,IAAI;AAAA,EACtB;AACA,QAAM,UAAU,KAAK,OAAO,OAAO,GAAG,UAAU,KAAK,OAAO,OAAO;AACnE,MAAI,OAAO,aAAa,YAAY,SAAS,WAAW,QAAQ,UAAU,KACrE,YAAY,CAAC,OAAO,cAAc,CAAC,WAAW,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,MAAM,QAAQ,KAAM,QAAO,QAAQ;AAC/H,SAAO,EAAE,YAAY,QAAQ,SAAS,OAAO,SAAS,YAAY,OAAO,YAAY,SAAS,SAAS,OAAO,OAAO,MAAgB;AACvI;AAEO,SAAS,OAAOE,UAAiE;AACtF,QAAM,SAAS,EAAE,GAAG,UAAU,GAAGA,SAAQ;AACzC,aAAW,OAAO,OAAO,KAAK,QAAQ,GAAsC;AAC1E,UAAM,UAAU,QAAQ,uBAAuB,QAAQ,mBAAmB,IAAI;AAC9E,QAAI,CAAC,OAAO,cAAc,OAAO,GAAG,CAAC,KAAK,OAAO,GAAG,IAAI,QAAS,OAAM,IAAI,WAAW,SAAS,GAAG,8BAA8B,OAAO,EAAE;AAAA,EAC3I;AACA,aAAW,OAAO,CAAC,oBAAoB,oBAAoB,eAAe,GAAY;AACpF,QAAI,OAAO,GAAG,IAAI,WAAY,OAAM,IAAI,WAAW,SAAS,GAAG,+BAA+B;AAAA,EAChG;AACA,SAAO,OAAO,OAAO,MAAM;AAC7B;AAEO,SAAS,WAAWF,aAAwB,MAAsB,QAA6B;AACpG,MAAI,QAAQ,OAAOA,YAAW,SAAS,SAASA,YAAW,YAAY,SAAS,KAAK;AACrF,aAAW,WAAWA,YAAW,UAAU;AACzC,WAAO,eAAe;AACtB,aAAS,KAAK,QAAQ,SAAS;AAC/B,QAAI,CAAC,OAAO,cAAc,KAAK,EAAG,OAAM,IAAI,oBAAoB,mBAAmB,2BAA2B;AAAA,EAChH;AACA,aAAW,OAAO,MAAM;AACtB,WAAO,eAAe;AACtB,aAAS,KAAK,IAAI,MAAM;AACxB,QAAI,CAAC,OAAO,cAAc,KAAK,EAAG,OAAM,IAAI,oBAAoB,mBAAmB,2BAA2B;AAAA,EAChH;AACA,SAAO;AACT;AAEO,SAAS,cAAc,OAAgB,IAAY,MAAsB,QAAgC;AAC9G,SAAO,eAAe;AACtB,QAAM,QAAQ;AACd,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,OAAO,GAAI,OAAM,IAAI,oBAAoB,YAAY,wBAAwB;AAC9H,MAAI,WAAW,OAAO;AACpB,QAAI,OAAO,MAAM,UAAU,SAAU,OAAM,IAAI,oBAAoB,YAAY,qBAAqB;AACpG,UAAM,IAAI,oBAAoB,SAAS,MAAM,KAAK;AAAA,EACpD;AACA,MAAI,EAAE,aAAa,UAAU,CAAC,MAAM,QAAQ,MAAM,OAAO,KAAK,MAAM,QAAQ,WAAW,KAAK,OAAQ,OAAM,IAAI,oBAAoB,YAAY,oBAAoB;AAClK,MAAI,QAAQ;AACZ,QAAM,UAAoB,CAAC;AAC3B,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,QAAQ,SAAS;AACzD,WAAO,eAAe;AACtB,UAAM,SAAkB,MAAM,QAAQ,KAAK;AAC3C,UAAM,MAAM,KAAK,KAAK;AACtB,QAAI,EAAE,kBAAkB,cAAe,OAAM,IAAI,oBAAoB,YAAY,sBAAsB;AACvG,UAAM,SAAS,OAAO;AACtB,QAAI,SAAS,KAAK,SAAS,KAAK,IAAI,MAAM,SAAS,GAAI,OAAM,IAAI,oBAAoB,YAAY,sBAAsB;AACvH,QAAI,CAAC,IAAI,OAAO,SAAS,EAAG,OAAM,IAAI,oBAAoB,YAAY,6BAA6B;AACnG,UAAM,QAAQ,SAAS;AACvB,QAAI,QAAQ,iBAAiB,UAAU,QAAQ,iBAAiB,WAAW,MAAO,OAAM,IAAI,oBAAoB,YAAY,4BAA4B;AACxJ,aAAS;AACT,YAAQ,KAAK,MAAM;AAAA,EACrB;AACA,QAAM,UAAU,MAAM,QAAQ,IAAI,CAAC,QAAsB,UAAkB;AACzE,WAAO,eAAe;AACtB,UAAM,SAAS,QAAQ,KAAK;AAC5B,QAAI,OAAO,WAAW,OAAQ,OAAM,IAAI,oBAAoB,YAAY,sCAAsC;AAC9G,UAAM,SAAkB,CAAC;AACzB,UAAM,MAAM,KAAK,KAAK;AACtB,aAAS,SAAS,GAAG,SAAS,QAAQ,UAAU,GAAG;AACjD,aAAO,eAAe;AACtB,YAAM,QAAQ,OAAO,MAAM;AAC3B,YAAM,MAAM,OAAO,SAAS,CAAC;AAC7B,UAAI,CAAC,OAAO,cAAc,KAAK,KAAK,CAAC,OAAO,cAAc,GAAG,KAAK,QAAQ,KAAK,MAAM,SAAS,MAAM,IAAI,MAAM,UAAU,SAAS,OAAO,GAAG,EAAE,GAAG,SAAS,GAAI,OAAM,IAAI,oBAAoB,YAAY,sBAAsB;AAC7N,aAAO,KAAK,EAAE,OAAO,IAAI,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACT,CAAC;AACD,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,QAAQ,SAAS;AACzD,WAAO,eAAe;AACtB,QAAI,MAAM,QAAQ,KAAK,EAAG,WAAW,QAAQ,KAAK,EAAG,OAAM,IAAI,oBAAoB,YAAY,sCAAsC;AAAA,EACvI;AACA,SAAO;AACT;;;ADlTA,IAAM,OAAN,MAAW;AAAA,EAMT,YAAqB,QAAyB;AAAzB;AAAA,EAA0B;AAAA,EAA1B;AAAA,EALrB,QAAQ;AAAA,EACA,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,kBAAkB;AAAA,EAE1B,OAAO,SAAS,GAAS;AACvB,QAAI,SAAS,KAAK,OAAO,WAAW,KAAK,MAAO,OAAM,IAAI,eAAe,SAAS,2BAA2B;AAC7G,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,SAAS,QAAsB;AAC7B,SAAK,OAAO,MAAM;AAClB,QAAI,SAAS,KAAK,OAAO,oBAAoB,KAAK,UAAW,OAAM,IAAI,eAAe,SAAS,iCAAiC;AAChI,SAAK,aAAa;AAAA,EACpB;AAAA,EACA,OAAa;AACX,SAAK,SAAS,CAAC;AACf,QAAI,EAAE,KAAK,QAAQ,KAAK,OAAO,SAAU,OAAM,IAAI,eAAe,SAAS,4BAA4B;AAAA,EACzG;AAAA,EACA,QAAc;AACZ,SAAK,OAAO;AACZ,QAAI,EAAE,KAAK,SAAS,KAAK,OAAO,UAAW,OAAM,IAAI,eAAe,SAAS,6BAA6B;AAAA,EAC5G;AAAA,EACA,aAAsB;AACpB,QAAI,KAAK,QAAQ,KAAK,mBAAmB,KAAK;AAC5C,WAAK,kBAAkB,KAAK;AAC5B,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACF;AAEA,SAAS,OAAO,SAAwB;AAAE,QAAM,IAAI,eAAe,UAAU,OAAO;AAAG;AACvF,SAAS,YAAY,SAAwB;AAAE,QAAM,IAAI,eAAe,eAAe,oBAAoB,OAAO,EAAE;AAAG;AACvH,IAAM,UAAU,CAAC,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ;AAC5H,IAAM,oBAAiE;AAAA,EACrE,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACtH;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACpJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC/J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EACvH;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAC/H;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACpJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC/J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EACnF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACzH;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAC9I;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC7J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EAC7K;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,EACnB;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAClH;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACtJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IACjK;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAU;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAClI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAClJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAU;AAAA,EAChD;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAClI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAClJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC7J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AA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A,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAC9G;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAS;AAAA,EACzH;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACv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",
|
|
5
|
+
"mappings": "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O;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACpJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC/J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EACvH;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAC/H;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACpJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC/J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EACnF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACzH;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAC9I;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC7J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,EAC7K;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAK;AAAA,IAAK;AAAA,IAAM;AAAA,EAClB;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAK;AAAA,IAAM;AAAA,IAAM;AAAA,EACnB;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAClH;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACtJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IACjK;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAU;AAAA,EAC9B;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAClI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAClJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAU;AAAA,EAChD;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IAAM;AAAA,IAAM;AAAA,IAAM;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAClI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IACrI;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAClJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IACxJ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC7J;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3K;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,I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AO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EACzG;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAC9G;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxH;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAS;AAAA,EACzH;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EACvI;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAS;AAAA,EAAU;AAC1I;AAEA,IAAM,cAAc,IAAI,YAAY,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC;AAEtE,SAAS,WAAW,MAAc,SAA0B;AACjE,QAAM,QAAQ,UAAU,iBAAiB;AACzC,MAAI,SAAS,UAAU,iBAAiB;AACxC,QAAM,UAA4C,EAAE,QAAQ,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,KAAM,OAAO,MAAM,MAAM;AAChJ,WAAS,QAAQ,GAAG,QAAQ,KAAK,UAAS;AACxC,QAAI,KAAK,WAAW,OAAO,KAAK,GAAG;AAAE,gBAAU,KAAK,KAAK;AAAI,eAAS,MAAM;AAAQ;AAAA,IAAU;AAC9F,UAAM,YAAY,KAAK,KAAK;AAC5B,UAAM,OAAO,UAAU,WAAW,CAAC;AACnC,QAAI,cAAc,KAAM,WAAU;AAAA,aACzB,QAAQ,MAAM,OAAO,IAAK,WAAU;AAAA,aACpC,WAAW,QAAQ,OAAO,QAAQ,KAAK;AAC9C,YAAM,QAAQ,OAAO,MAAM,IAAI,OAAO,MAAM,IAAI;AAChD,YAAM,YAAY,KAAK,MAAM,OAAO,QAAQ,KAAK;AACjD,UAAI;AACJ,UAAI;AAAE,kBAAU,YAAY,OAAO,WAAW,KAAK,WAAW,CAAAC,eAAaA,WAAU,WAAW,CAAC,CAAC,CAAC;AAAA,MAAG,QAAQ;AAAE,kBAAU;AAAA,MAAW;AACrI,YAAM,QAAQ,SAAS,YAAY,CAAC,KAAK;AACzC,UAAI,MAAM;AACV,UAAI,OAAO,wBAAwB,SAAS;AAC5C,UAAI,YAAY;AAChB,aAAO,MAAM,MAAM;AACjB,cAAM,SAAS,KAAK,OAAO,MAAM,QAAQ,CAAC;AAC1C,YAAI,QAAQ,wBAAwB,SAAS,CAAC,EAAI,QAAO;AAAA,iBAChD,QAAQ,wBAAwB,SAAS,IAAI,CAAC,EAAI,OAAM,SAAS;AAAA,aACrE;AAAE,sBAAY;AAAM;AAAA,QAAO;AAAA,MAClC;AACA,UAAI,YAAY,UAAa,WAAW;AAAE,kBAAU;AAAW,iBAAS;AAAO;AAAA,MAAU;AACzF,gBAAU,KAAK,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAAA,IAClD,MAAO,WAAU,QAAQ,SAAS,KAAK,KAAK,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAC7E;AAAA,EACF;AACA,SAAO,SAAS;AAClB;;;AD7EO,IAAM,cAAN,cAA0B,iBAAiB;AAAA,EAChD,YAAY,SAA0B,QAAQ,OAAgB,WAAW,OAAO;AAAE,UAAM,OAAO;AAAzD;AAAwB;AAAA,EAAoC;AAAA,EAA5D;AAAA,EAAwB;AAChE;AAEO,SAAS,SAASC,UAA8C;AACrE,QAAM,SAAuB;AAAA,IAC3B,cAAc;AAAA,IAAM,kBAAkB;AAAA,IAAQ,aAAa;AAAA,IAC3D,eAAe;AAAA,IAAY,kBAAkB;AAAA,IAAY,UAAU;AAAA,IACnE,cAAc;AAAA,IAAW,UAAU;AAAA,IAAM,iBAAiB;AAAA,IAC1D,gBAAgB;AAAA,IAAY,oBAAoB;AAAA,IAChD,cAAc;AAAA,IAAM,cAAc;AAAA,IAAK,SAAS;AAAA,IAAY,gBAAgB;AAAA,IAC5E,sBAAsB;AAAA,IAAM,eAAe;AAAA,IAAM,eAAe;AAAA,IAChE,gBAAgB;AAAA,IAAQ,wBAAwB;AAAA,IAAW,GAAGA,SAAQ;AAAA,EACxE;AACA,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AAClD,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,EAAG,OAAM,IAAI,WAAW,yBAAyB,IAAI,EAAE;AAAA,EACrG;AACA,MAAI,OAAO,eAAe,KAAM,OAAM,IAAI,WAAW,2CAA2C;AAChG,aAAW,CAAC,MAAM,OAAO,KAAK;AAAA,IAC5B,CAAC,wBAAwB,kBAAkB,eAAe;AAAA,IAAG,CAAC,iBAAiB,kBAAkB,QAAQ;AAAA,IACzG,CAAC,iBAAiB,kBAAkB,QAAQ;AAAA,IAAG,CAAC,kBAAkB,kBAAkB,SAAS;AAAA,IAC7F,CAAC,0BAA0B,kBAAkB,iBAAiB;AAAA,EAChE,EAAY,KAAI,OAAO,IAAI,IAAI,QAAS,OAAM,IAAI,WAAW,UAAU,IAAI,wBAAwB;AACnG,SAAO,OAAO,OAAO,MAAM;AAC7B;AAEO,SAAS,IAAIC,QAA2B;AAC7C,MAAI,SAAS;AACb,aAAW,QAAQA,OAAO,WAAU,OAAO,aAAa,IAAI;AAC5D,SAAO;AACT;AAEO,SAAS,MAAM,OAA2B;AAC/C,SAAO,WAAW,KAAK,OAAO,eAAa,UAAU,WAAW,CAAC,CAAC;AACpE;AAEO,SAAS,SAAS,OAAuB;AAC9C,MAAI,MAAM,SAAS,IAAI,EAAG,OAAM,IAAI,YAAY,+BAA+B;AAC/E,MAAI;AAAE,WAAO,IAAI,YAAY,SAAS,EAAE,OAAO,MAAM,WAAW,KAAK,CAAC,EAAE,OAAO,MAAM,KAAK,CAAC;AAAA,EAAG,QACxF;AAAE,UAAM,IAAI,YAAY,sCAAsC;AAAA,EAAG;AACzE;AAEO,SAAS,QAAQ,OAAyB;AAC/C,SAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,UAAU,SAAS,MAAM,SAAS;AAC1F;AAEO,IAAM,SAAN,MAAa;AAAA,EAMlB,YAAqB,SAAkC,QAAsB;AAAxD;AAAkC;AAAA,EAAuB;AAAA,EAAzD;AAAA,EAAkC;AAAA,EALtC,UAAU,oBAAI,IAAoB;AAAA,EAC3C,OAAO;AAAA,EACP,aAAa;AAAA,EACb,cAAc;AAAA,EACd,SAAS;AAAA,EAEjB,gBAAgB,OAAeA,QAAqB;AAClD,QAAI,QAAQA;AACZ,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,QAAS,KAAI,QAAQ,MAAO,UAAS;AACrE,SAAK,MAAM,OAAO,KAAK,OAAO,kBAAkB,gBAAgB;AAChE,QAAIA,OAAO,MAAK,QAAQ,IAAI,OAAOA,MAAK;AAAA,QACnC,MAAK,QAAQ,OAAO,KAAK;AAAA,EAChC;AAAA,EACA,MAAM,OAAuB;AAC3B,UAAM,SAAS,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,IAAI,QAAQ;AAChG,SAAK,OAAO,MAAM,MAAM;AACxB,SAAK,MAAM,MAAM,SAAS,IAAI,GAAG,KAAK,OAAO,oBAAoB,yBAAyB;AAC1F,WAAO,WAAW,OAAO,WAAW,aAAa,WAAW,QAAQ;AAAA,EACtE;AAAA,EACA,MAAM,OAAe,SAAiB,OAAqB;AACzD,QAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,KAAK,QAAQ,QAAS,OAAM,IAAI,YAAY,GAAG,KAAK,iBAAiB;AAAA,EACnH;AAAA,EACA,OAAO,SAAS,GAAS;AACvB,SAAK,QAAQ,OAAO,eAAe;AACnC,SAAK,QAAQ;AACb,SAAK,MAAM,KAAK,MAAM,KAAK,OAAO,SAAS,MAAM;AAAA,EACnD;AAAA,EACA,YAAoB;AAAE,WAAO,KAAK,OAAO,UAAU,KAAK;AAAA,EAAM;AAAA,EAC9D,MAAM,iBAAgC;AACpC,SAAK,OAAO;AACZ,QAAI,KAAK,OAAO,KAAK,cAAc,MAAM;AACvC,WAAK,aAAa,KAAK;AACvB,YAAM,UAAU,KAAK,QAAQ,MAAM;AAAA,IACrC;AAAA,EACF;AAAA,EACA,YAAsB;AACpB,SAAK,MAAM,KAAK,QAAQ,KAAK,QAAQ,KAAK,OAAO,cAAc,gBAAgB;AAC/E,QAAI,QAAQ;AACZ,eAAW,YAAY,KAAK,QAAQ,MAAM;AACxC,eAAS,SAAS;AAClB,WAAK,MAAM,OAAO,KAAK,OAAO,kBAAkB,gBAAgB;AAChE,eAAS,SAAS,GAAG,SAAS,SAAS,QAAQ,UAAU;AACvD,cAAM,OAAO,SAAS,WAAW,MAAM;AACvC,YAAI,QAAQ,SAAU,QAAQ,OAAQ;AACpC,gBAAM,OAAO,SAAS,WAAW,EAAE,MAAM;AACzC,cAAI,EAAE,QAAQ,SAAU,QAAQ,OAAS,OAAM,IAAI,YAAY,4CAA4C;AAAA,QAC7G,WAAW,QAAQ,SAAU,QAAQ,MAAQ,OAAM,IAAI,YAAY,4CAA4C;AAAA,MACjH;AAAA,IACF;AACA,UAAM,qBAAqB,oBAAoB,KAAK,OAAO;AAC3D,YAAQ;AACR,UAAM,SAAmB,CAAC;AAC1B,eAAW,YAAY,mBAAmB,QAAQ;AAChD,eAAS,qBAAqB,QAAQ;AACtC,WAAK,MAAM,OAAO,KAAK,OAAO,kBAAkB,gBAAgB;AAChE,YAAM,QAAQ,gBAAgB,QAAQ;AACtC,WAAK,OAAO,MAAM,MAAM;AACxB,UAAI,MAAM,SAAS,CAAC,EAAG,OAAM,IAAI,YAAY,mCAAmC;AAChF,aAAO,KAAK,IAAI,KAAK,CAAC;AAAA,IACxB;AACA,WAAO;AAAA,EACT;AAAA,EACA,UAAU,QAAsB;AAC9B,SAAK,UAAU;AACf,SAAK,MAAM,KAAK,QAAQ,KAAK,OAAO,gBAAgB,cAAc;AAClE,SAAK,OAAO,MAAM;AAAA,EACpB;AAAA,EACA,MAAM,MAAM,OAAe,SAAS,OAAsB;AACxD,SAAK,eAAe,MAAM;AAC1B,SAAK,MAAM,KAAK,aAAa,KAAK,OAAO,oBAAoB,4BAA4B;AACzF,UAAM,WAAW,SAAS,KAAK,QAAQ,SAAS,KAAK,QAAQ,QAAQ,MAAM,KAAK,GAAG,KAAK,QAAQ,MAAM;AAAA,EACxG;AACF;AAEO,SAAS,SAAS,OAAwB;AAC/C,QAAM,UAAoD;AAAA,IACxD,QAAQ;AAAA,IAAqB,OAAO;AAAA,IAA2B,KAAK;AAAA,IAAsB,QAAQ;AAAA,IAClG,QAAQ;AAAA,IAAkB,SAAS;AAAA,IAAmB,OAAO;AAAA,IAAqC,OAAO;AAAA,IACzG,QAAQ;AAAA,IAA2B,cAAc;AAAA,IAAsB,SAAS;AAAA,IAA2B,QAAQ;AAAA,EACrH;AACA,SAAO,QAAQ,MAAM,IAAI,KAAK,MAAM;AACtC;;;AEvKA;AAEA,SAAS,+BAA+B;AAIxC,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB;AAEnB,SAAS,aAAa,OAAiB,QAA2B;AACvE,UAAS,OAAO,MAAM,kBAAkB,YAAY,MAAM,kBAAkB,QAAS,OAAO,MAAM,kBAAkB,aAC/G,MAAM,kBAAkB,OAAO,iBAAiB,OAAO,cAAc,MAAM,GAAG,KAAK,OAAO,cAAc,MAAM,GAAG,KACjH,MAAM,OAAQ,KAAK,MAAM,OAAQ,KAAK,MAAM,QAAQ,OAAO,OAAO,MAAM,QAAQ,OAAO;AAC9F;AAEO,IAAM,YAAN,MAAgB;AAAA,EAIrB,YAAqB,QAAgB;AAAhB;AAAkB,WAAO,QAAQ,kBAAkB,MAAM,KAAK,MAAM,CAAC;AAAA,EAAG;AAAA,EAAxE;AAAA,EAHJ,UAAU,oBAAI,IAAsB;AAAA,EACpC,WAAW,oBAAI,IAAyB;AAAA,EACjD;AAAA,EAER,QAAQ,QAAkD;AACxD,SAAK,WAAW;AAChB,UAAM,QAAQ,YAAY;AAAE,UAAI;AAAE,cAAM,OAAO;AAAA,MAAG,UAAE;AAAU,aAAK,SAAS,OAAO,KAAK;AAAA,MAAG;AAAA,IAAE;AAC7F,SAAK,SAAS,IAAI,KAAK;AACvB,WAAO;AAAA,EACT;AAAA,EACA,aAAmB;AACjB,SAAK,OAAO,QAAQ,OAAO,eAAe;AAC1C,QAAI,KAAK,QAAS,OAAM,IAAI,YAAY,mBAAmB;AAAA,EAC7D;AAAA,EACA,MAAM,UAAiB,QAA8C;AACnE,SAAK,WAAW;AAChB,SAAK,OAAO,OAAO;AACnB,UAAM,UAAU,QAAQ,QAAQ,EAAE,KAAK,MAAM;AAAE,WAAK,WAAW;AAAG,aAAO,OAAO;AAAA,IAAG,CAAC;AACpF,SAAK,QAAQ,IAAI,OAAO;AACxB,QAAI;AAAE,YAAM,QAAQ,MAAM;AAAS,WAAK,WAAW;AAAG,aAAO;AAAA,IAAO,UACpE;AAAU,WAAK,QAAQ,OAAO,OAAO;AAAA,IAAG;AAAA,EAC1C;AAAA,EACA,QAAuB;AACrB,WAAO,KAAK,aAAa,YAAY;AACnC,aAAO,KAAK,QAAQ,KAAM,OAAM,QAAQ,WAAW,CAAC,GAAG,KAAK,OAAO,CAAC;AACpE,YAAM,WAAsB,CAAC;AAC7B,iBAAW,WAAW,KAAK,UAAU;AACnC,YAAI;AAAE,gBAAM,QAAQ;AAAA,QAAG,SAChB,OAAO;AAAE,mBAAS,KAAK,KAAK;AAAA,QAAG;AAAA,MACxC;AACA,UAAI,SAAS,WAAW,EAAG,OAAM,SAAS,CAAC;AAC3C,UAAI,SAAS,SAAS,EAAG,OAAM,IAAI,eAAe,UAAU,uBAAuB;AAAA,IACrF,GAAG;AAAA,EACL;AACF;AAEO,IAAM,QAAN,MAAY;AAAA,EAWjB,YAAqB,WAAsB;AAAtB;AACnB,cAAU,QAAQ,YAAY;AAC5B,UAAI;AAAE,YAAI,CAAC,KAAK,MAAO,OAAM,KAAK,UAAU,SAAS;AAAA,MAAG,UACxD;AACE,aAAK,MAAM,SAAS;AAAG,aAAK,UAAU,CAAC;AACvC,kBAAU,OAAO,gBAAgB,MAAM,CAAC;AACxC,kBAAU,OAAO,gBAAgB,KAAK,oBAAoB,CAAC;AAAA,MAC7D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EATqB;AAAA,EAVJ,qBAAqB,CAAC;AAAA,EACtB,QAAsB,CAAC;AAAA,EAChC,UAAwB,CAAC;AAAA,EACzB,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,cAAc;AAAA,EACd;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACR;AAAA,EAWQ,QAAQ,aAAa,GAAG,aAAa,GAAS;AACpD,SAAK,UAAU,OAAO,gBAAgB,MAAM,KAAK,QAAQ,KAAK,KAAK,MAAM,SAAS,aAAa,KAAK,QAAQ,SAAS,cAAc,iBAAiB;AAAA,EACtJ;AAAA,EACA,MAAM,KAAK,MAA6B;AACtC,QAAI,SAAS,KAAK;AAAE,WAAK,WAAW,KAAK,UAAU,OAAO,QAAQ,YAAY;AAAM;AAAA,IAAQ;AAC5F,UAAM,EAAE,SAAS,OAAO,IAAI,KAAK,UAAU;AAC3C,SAAK,UAAU,OAAO,MAAM,KAAK,QAAQ,OAAO,cAAc,kBAAkB;AAChF,SAAK,OAAO,YAAY,QAAQ,KAAK,SAAS,IAAI,CAAC;AACnD,SAAK,WAAW,MAAM,KAAK,UAAU,UAAU,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAO,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC;AAC5G,QAAI,KAAK,SAAS,SAAS,OAAQ,OAAM,IAAI,YAAY,4BAA4B;AAAA,EACvF;AAAA,EACA,aAAa,MAAc,UAAsC;AAC/D,QAAI,SAAS,KAAK,QAAQ,YAAY,KAAK,YAAY,aAAa,UAAU,KAAK,QAAQ,EAAG,OAAM,IAAI,YAAY,uCAAuC;AAC3J,QAAI,YAAY,KAAK,YAAY,CAAC,aAAa,KAAK,UAAU,KAAK,QAAQ,EAAG,OAAM,IAAI,YAAY,iEAAiE;AAAA,EACvK;AAAA,EACA,MAAc,SAA8B;AAC1C,UAAM,EAAE,SAAS,OAAO,IAAI,KAAK,UAAU;AAC3C,QAAI,KAAK,SAAS,OAAW,QAAO,QAAQ;AAC5C,UAAM,EAAE,IAAI,OAAO,IAAI;AACvB,UAAM,eAAe,MAAM,KAAK,UAAU,UAAU,YAAY,MAAM,GAAG,kBAAkB,KAAK,MAAO,EAAE,OAAO,CAAC,KAAK,GAAG,YAAY;AACrI,QAAI,GAAG,cAAc,aAAa,kBAAkB,MAAO,QAAO,GAAG,WAAW,KAAK,MAAM,EAAE,QAAQ,WAAW,MAAO,CAAC;AACxH,QAAI,KAAK,SAAU,OAAO,KAAK,IAAI,OAAO,eAAe,OAAO,mBAAmB,CAAC,EAAG,OAAM,IAAI,YAAY,qCAAqC;AAClJ,UAAM,gBAAgB,KAAK,SAAU;AACrC,SAAK,UAAU,OAAO,gBAAgB,KAAK,oBAAoB,aAAa;AAC5E,SAAK,UAAU,OAAO,gBAAgB,MAAM,gBAAgB,CAAC;AAC7D,UAAM,QAAQ,MAAM,KAAK,UAAU,UAAU,MAAM,GAAG,SAAS,KAAK,MAAO,EAAE,QAAQ,UAAU,cAAc,CAAC,CAAC;AAC/G,SAAK,UAAU,OAAO,MAAM,MAAM,QAAQ,eAAe,aAAa;AACtE,WAAO,EAAE,QAAQ,OAAO,aAAa,IAAI;AAAE,YAAM;AAAA,IAAO,EAAE;AAAA,EAC5D;AAAA,EACQ,aAAmB;AACzB,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,WAAO,MAAM,KAAK,MAAM,SAAS,GAAG,OAAO,OAAO,UAAU,YAAY;AACxE,SAAK,QAAQ,CAAC;AACd,UAAM,OAAO,IAAI,WAAW,KAAK,YAAY;AAC7C,QAAI,SAAS;AACb,eAAW,QAAQ,KAAK,SAAS;AAAE,WAAK,IAAI,MAAM,MAAM;AAAG,gBAAU,KAAK;AAAA,IAAQ;AAClF,SAAK,MAAM,KAAK,IAAI;AACpB,SAAK,UAAU,CAAC;AAChB,SAAK,eAAe;AACpB,SAAK,QAAQ;AAAA,EACf;AAAA,EACA,MAAM,IAAI,QAAiD;AACzD,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,WAAO,KAAK,MAAM,SAAS,UAAU,CAAC,KAAK,OAAO;AAChD,WAAK,UAAU,WAAW;AAC1B,UAAI,CAAC,KAAK,SAAU,OAAM,KAAK,UAAU,UAAU,YAAY;AAC7D,aAAK,YAAY,MAAM,KAAK,OAAO,GAAG,OAAO,aAAa,EAAE;AAAA,MAC9D,CAAC;AACD,YAAM,SAAS,MAAM,KAAK,UAAU,UAAU,MAAM,KAAK,SAAU,KAAK,CAAC;AACzE,UAAI,OAAO,MAAM;AACf,aAAK,QAAQ;AACb,YAAI,KAAK,aAAc,MAAK,WAAW;AACvC;AAAA,MACF;AACA,YAAM,QAAQ,OAAO;AACrB,UAAI,EAAE,iBAAiB,YAAa,OAAM,IAAI,YAAY,iCAAiC;AAC3F,WAAK,SAAS,MAAM;AACpB,aAAO,MAAM,KAAK,OAAO,OAAO,OAAO,eAAe,aAAa;AACnE,WAAK,QAAQ;AACb,UAAI,CAAC,MAAM,OAAQ,QAAO,MAAM,EAAE,KAAK,aAAa,OAAO,OAAO,gBAAgB,oBAAoB;AACtG,aAAO,OAAO,MAAM,MAAM;AAC1B,YAAM,QAAQ,WAAW,KAAK,KAAK;AACnC,UAAI,QAAQ;AACZ,eAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU;AACpD,YAAI,MAAM,MAAM,MAAM,IAAI;AACxB,eAAK,gBAAgB,SAAS,IAAI;AAClC,iBAAO,MAAM,KAAK,cAAc,OAAO,OAAO,cAAc,YAAY;AACxE,eAAK,QAAQ,GAAG,CAAC;AACjB,eAAK,QAAQ,KAAK,MAAM,SAAS,OAAO,SAAS,CAAC,CAAC;AACnD,eAAK,WAAW;AAAG,kBAAQ,SAAS;AAAA,QACtC;AACA,YAAI,SAAS,SAAS,GAAG;AACvB,iBAAO,OAAO,KAAK,IAAI,MAAM,MAAM,SAAS,MAAM,CAAC;AACnD,gBAAM,OAAO,eAAe;AAAA,QAC9B;AAAA,MACF;AACA,UAAI,QAAQ,MAAM,QAAQ;AACxB,aAAK,gBAAgB,MAAM,SAAS;AACpC,eAAO,MAAM,KAAK,cAAc,OAAO,OAAO,cAAc,YAAY;AACxE,aAAK,QAAQ,GAAG,CAAC;AACjB,aAAK,QAAQ,KAAK,MAAM,SAAS,KAAK,CAAC;AAAA,MACzC;AACA,YAAM,OAAO,eAAe;AAAA,IAC9B;AACA,WAAO,KAAK,MAAM,SAAS,CAAC;AAAA,EAC9B;AACF;AAiBO,IAAM,UAAN,MAAc;AAAA,EAMnB,YAAqB,WAA+BC,UAA2B,QAA4C,OAAc;AAApH;AAA+B,mBAAAA;AAA2B;AAA4C;AAAA,EAAe;AAAA,EAArH;AAAA,EAA+B;AAAA,EAA2B;AAAA,EAA4C;AAAA,EALnH,QAAQ;AAAA,EACR,WAAW;AAAA,EACX;AAAA,EACR,WAAW;AAAA,EACX,YAAY;AAAA,EAEZ,MAAc,QAAQ,MAA+D;AACnF,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,UAAM,aAAa,QAAQ,IAAI,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAC1D,WAAO,MAAM,WAAW,QAAQ,OAAO,cAAc,YAAY;AACjE,UAAM,UAAkD,CAAC;AACzD,QAAI,UAAU;AACd,eAAW,aAAa,CAAC,IAAI,GAAG,UAAU,GAAG;AAC3C,UAAI,UAAW,WAAU,YAAY,SAAS,SAAS;AACvD,YAAM,WAAW,OAAO,OAAO,EAAE,GAAG,MAAM,KAAK,UAAU,UAAU,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC;AACjI,UAAI,SAAS,SAAS,eAAe,CAAC,aAAa,UAAU,QAAQ,EAAG,OAAM,IAAI,YAAY,kCAAkC;AAChI,cAAQ,KAAK,EAAE,MAAM,SAAS,SAAS,CAAC;AAAA,IAC1C;AACA,WAAO;AAAA,EACT;AAAA,EACA,MAAc,eAAe,SAAyE;AACpG,UAAM,EAAE,QAAQ,IAAI,KAAK,UAAU;AACnC,eAAW,UAAU,SAAS;AAC5B,YAAM,UAAU,MAAM,KAAK,UAAU,UAAU,MAAM,QAAQ,GAAG,MAAM,OAAO,MAAM,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC;AAC9G,UAAI,QAAQ,SAAS,eAAe,CAAC,aAAa,SAAS,OAAO,QAAQ,EAAG,OAAM,IAAI,YAAY,uCAAuC;AAAA,IAC5I;AAAA,EACF;AAAA,EACA,MAAM,OAAsB;AAC1B,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,UAAM,EAAE,SAAS,OAAO,IAAI;AAC5B,WAAO,MAAM,EAAE,KAAK,UAAU,OAAO,iBAAiB,sBAAsB;AAC5E,WAAO,MAAM,KAAK,QAAQ,GAAG,OAAO,UAAU,mBAAmB;AACjE,UAAM,OAAO,KAAK,QAAQ,SAAS,KAAK,OAAO,KAAK,KAAK;AACzD,WAAO,MAAM,KAAK,QAAQ,OAAO,cAAc,uBAAuB;AACtE,UAAM,OAAO,YAAY,QAAQ,KAAK,SAAS,IAAI,CAAC;AACpD,QAAI;AACJ,YAAM,eAAe,MAAM,KAAK,UAAU,UAAU,YAAY,MAAM,QAAQ,GAAG,kBAAkB,MAAM,EAAE,QAAQ,QAAQ,QAAQ,QAAQ,KAAK,CAAC,KAAK,QAAQ,GAAG,YAAY;AAC7K,UAAI,aAAa,uBAAuB,QAAQ,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,GAAG,sBAAuB,OAAM,IAAI,YAAY,2CAA2C;AACxL,YAAM,UAAU,MAAM,KAAK,QAAQ,IAAI;AACvC,UAAI;AACJ,UAAI;AAAE,mBAAW,OAAO,OAAO,EAAE,GAAG,MAAM,KAAK,UAAU,UAAU,MAAM,QAAQ,GAAG,MAAM,MAAM,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC,EAAE,CAAC;AAAA,MAAG,SAC1H,OAAO;AAAE,gBAAQ,OAAO,eAAe;AAAG,YAAI,CAAC,QAAQ,KAAK,EAAG,OAAM;AAAA,MAAO;AACnF,UAAI,aAAa,SAAS,SAAS,UAAU,CAAC,aAAa,UAAU,QAAQ,GAAI,OAAM,IAAI,YAAY,sBAAsB,OAAO,MAAM,IAAI,CAAC,EAAE;AACjJ,WAAK,MAAM,aAAa,MAAM,QAAQ;AACtC,YAAM,gBAAgB,sBAAsB,KAAK,SAAS;AAC1D,YAAM,SAAiB,EAAE,MAAM,QAAQ,QAAQ,GAAG,EAAE,EAAG,UAAU,eAAe,SAAS,OAAO,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,MAAM,GAAG,UAAU,GAAG,SAAS,YAAY;AAAA,MAAC,EAAE;AAC5L,aAAO,gBAAgB,QAAQ,aAAa;AAC5C,aAAO,UAAU,KAAK,UAAU,QAAQ,wBAAwB,QAAQ,IAAI,OAAM,SAAQ;AACxF,eAAO,OAAO;AACd,eAAO,WAAW;AAClB,eAAO,gBAAgB,QAAQ,CAAC;AAChC,YAAI,CAAC,OAAO,WAAW,CAAC,OAAO,YAAY,CAAC,OAAO,WAAW,KAAK,aAAa,KAAK,QAAQ,QAAQ,KAAK,UAAW;AACrH,YAAI;AACF,cAAI,CAAC,KAAK,sBAAuB,OAAM,IAAI,QAAQ,SAAS;AAC5D,gBAAM,KAAK,sBAAsB,MAAM,EAAE,UAAU,OAAO,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC3F,iBAAO,UAAU;AAAA,QACnB,SAAS,OAAO;AAAE,cAAI,CAAC,QAAQ,KAAK,KAAK,EAAE,iBAAiB,WAAW,MAAM,SAAS,UAAW,OAAM;AAAA,QAAO;AAAA,MAChH,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;AACxB,UAAI;AACF,cAAM,KAAK,eAAe,OAAO;AACjC,cAAM,KAAK,UAAU,UAAU,YAAY;AACzC,iBAAO,WAAW,OAAO,OAAO,EAAE,GAAG,MAAM,QAAQ,GAAG,qBAAsB,MAAM,IAAI,WAAW,GAAG;AAAA,YAClG,QAAQ,QAAQ;AAAA,YAAQ,UAAU,YAAY;AAAA,YAAM,QAAQ,OAAO;AAAA,UACrE,CAAC,EAAE,CAAC;AACJ,iBAAO,UAAU;AAAA,QACnB,CAAC;AAAA,MACH,UAAE;AAAU,gBAAQ,SAAS;AAAA,MAAG;AAChC,WAAK;AACL,WAAK,UAAU;AAAA,IACf,SAAS,OAAO;AACd,UAAI,iBAAiB,QAAS,OAAM,IAAI,YAAY,GAAG,IAAI,KAAK,SAAS,KAAK,CAAC,EAAE;AACjF,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EACA,MAAc,MAAM,QAA+B;AACjD,QAAI,CAAC,OAAO,SAAU;AACtB,UAAM,EAAE,QAAQ,IAAI,KAAK,UAAU;AACnC,QAAI;AACF,YAAM,KAAK,UAAU,UAAU,MAAM,gBAAgB,SAAS,OAAO,OAAQ,SAAS,GAAG,OAAO,QAAQ,GAAG,OAAM,UAAS;AACxH,eAAO,WAAW,OAAO,OAAO,EAAE,GAAG,MAAM,QAAQ,GAAG,qBAAsB,OAAO,MAAM,OAAO;AAAA,UAC9F,QAAQ,QAAQ;AAAA,UAAQ,UAAU,OAAO;AAAA,UAAW,QAAQ,OAAO;AAAA,UAAQ,QAAQ;AAAA,QACrF,CAAC,EAAE,CAAC;AACJ,eAAO,WAAW;AAAA,MACpB,CAAC,CAAC;AAAA,IACJ,SAAS,OAAO;AAAE,aAAO,SAAS;AAAM,YAAM;AAAA,IAAO;AAAA,EACvD;AAAA,EACA,MAAM,MAAM,OAAkC;AAC5C,UAAM,SAAS,KAAK;AACpB,QAAI,CAAC,OAAQ,OAAM,IAAI,YAAY,oBAAoB;AACvD,UAAM,EAAE,OAAO,IAAI,KAAK;AACxB,WAAO,UAAU,MAAM,MAAM;AAC7B,QAAI,CAAC,OAAO,QAAQ;AAClB,YAAM,WAAW,KAAK,IAAI,mBAAmB,OAAO,OAAO,gBAAgB;AAC3E,aAAO,gBAAgB,QAAQ,OAAO,gBAAgB,QAAQ;AAC9D,aAAO,SAAS,IAAI,WAAW,QAAQ;AAAA,IACzC;AACA,aAAS,SAAS,GAAG,SAAS,MAAM,UAAS;AAC3C,WAAK,UAAU,WAAW;AAC1B,YAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,QAAQ,OAAO,OAAO,SAAS,OAAO,QAAQ;AACpF,aAAO,OAAO,IAAI,MAAM,SAAS,QAAQ,SAAS,KAAK,GAAG,OAAO,QAAQ;AACzE,aAAO,YAAY;AACnB,aAAO,QAAQ;AACf,gBAAU;AACV,UAAI,OAAO,aAAa,OAAO,OAAO,OAAQ,OAAM,KAAK,MAAM,MAAM;AAAA,IACvE;AAAA,EACF;AAAA,EACA,MAAM,SAAwB;AAC5B,UAAM,SAAS,KAAK;AACpB,QAAI,CAAC,OAAQ;AACb,SAAK,UAAU;AACf,QAAI,OAAO,OAAQ;AACnB,UAAM,KAAK,MAAM,MAAM;AACvB,WAAO,OAAO;AACd,SAAK,UAAU,OAAO,gBAAgB,QAAQ,OAAO,aAAa;AAClE,QAAI,CAAC,OAAO,QAAQ,KAAK,QAAQ,OAAO;AACtC,aAAO,SAAS;AAChB,YAAM,OAAO,QAAQ;AACrB,UAAI,CAAC,OAAO,QAAS,OAAM,IAAI,YAAY,0CAA0C;AACrF,WAAK;AAAA,IACP,WAAW,CAAC,KAAK,QAAQ,MAAO,OAAM,KAAK,UAAU,OAAO,MAAM,GAAG,OAAO,IAAI;AAAA,CAAI;AAAA,EACtF;AACF;;;AC5SA;AAcO,SAASC,SAAQ,OAAe,SAAS,OAA2B;AACzE,MAAI,SAAS;AACb,SAAO,SAAS,MAAM,UAAU,aAAc,SAAS,MAAM,MAAM,CAAE,EAAG;AACxE,QAAM,WAAW,MAAM,MAAM,MAAM;AACnC,MAAI,YAAY,CAAC,OAAQ,QAAO;AAChC,MAAI,YAAY,MAAM,MAAM,MAAM,IAAK;AACvC,QAAM,QAAQ;AACd,MAAI,SAAS;AACb,QAAM,UAAU,SAAS,WAAW,uBAA6B,uBAA6B;AAC9F,SAAO,SAAS,MAAM,QAAQ,UAAU;AACtC,UAAM,QAAQ,MAAM,WAAW,MAAM,IAAI;AACzC,QAAI,QAAQ,KAAK,QAAQ,EAAG,QAAO;AACnC,aAAS,SAAS,MAAM,OAAO,KAAK;AACpC,QAAI,SAAS,QAAS,QAAO;AAAA,EAC/B;AACA,SAAO,WAAW,QAAQ,SAAY,WAAW,CAAC,SAAS;AAC7D;AAEO,SAAS,aAAa,MAAyB,QAAyB;AAC7E,QAAM,SAAkB,EAAE,QAAQ,MAAM,QAAQ,GAAG,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,UAAU,OAAO,UAAU,CAAC,EAAE;AAC1H,QAAM,OAAyC;AAAA,IAC7C,QAAQ;AAAA,IAAK,iBAAiB;AAAA,IAAK,cAAc;AAAA,IAAK,qBAAqB;AAAA,IAC3E,QAAQ;AAAA,IAAK,OAAO;AAAA,IAAK,QAAQ;AAAA,IAAK,oBAAoB;AAAA,IAAY,MAAM;AAAA,IAAQ,SAAS;AAAA,EAC/F;AACA,MAAI,QAAQ;AACZ,QAAM,QAAQ,CAAC,KAAa,UAAyB;AACnD,QAAI,QAAQ,IAAK,QAAO,SAAS;AAAA,aACxB,QAAQ,IAAK,QAAO,SAAS;AAAA,aAC7B,QAAQ,IAAK,QAAO,OAAO;AAAA,aAC3B,QAAQ,IAAK,QAAO,QAAQ;AAAA,aAC5B,QAAQ,OAAO,QAAQ,IAAK,QAAO,QAAQ;AAAA,aAC3C,QAAQ,WAAY,QAAO,WAAW;AAAA,aACtC,QAAQ,KAAK;AACpB,YAAM,QAAQA,SAAQ,OAAQ,IAAI;AAClC,UAAI,UAAU,UAAa,QAAQ,MAAM,QAAQ,YAAgB,OAAM,IAAI,YAAY,mBAAmB,OAAO,MAAM,KAAM,CAAC,EAAE;AAChI,aAAO,MAAM,OAAO,KAAK,GAAG,OAAO,OAAO,cAAc,cAAc;AACtE,aAAO,SAAS,OAAO,KAAK;AAAA,IAC9B,MAAO,QAAO,cAAc;AAAA,EAC9B;AACA,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS;AAChD,UAAM,WAAW,KAAK,KAAK;AAC3B,WAAO,OAAO;AACd,QAAI,SAAS,aAAa,OAAO,CAAC,SAAS,WAAW,GAAG,GAAG;AAC1D,aAAO,SAAS,KAAK,QAAQ;AAC7B,UAAI,OAAO,OAAO,OAAO,QAAQ,KAAK,iBAAiB,EAAG,SAAQ;AAAA,IACpE,WAAW,aAAa,KAAM,SAAQ;AAAA,aAC7B,SAAS,WAAW,IAAI,GAAG;AAClC,YAAM,SAAS,SAAS,QAAQ,GAAG;AACnC,YAAM,OAAO,SAAS,MAAM,GAAG,SAAS,IAAI,SAAY,MAAM;AAC9D,YAAM,aAAa,OAAO,KAAK,IAAI,EAAE,OAAO,CAAAC,SAAOA,KAAI,WAAW,IAAI,CAAC;AACvE,UAAI,CAAC,OAAO,OAAO,MAAM,IAAI,KAAK,WAAW,SAAS,EAAG,OAAM,IAAI,YAAY,UAAU,OAAO,MAAM,QAAQ,CAAC,iCAAiC,WAAW,IAAI,CAAAA,SAAO,OAAO,MAAM,KAAKA,IAAG,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,IAAI;AACjN,YAAM,WAAW,OAAO,OAAO,MAAM,IAAI,IAAI,OAAO,WAAW,CAAC;AAChE,UAAI,CAAC,SAAU,OAAM,IAAI,YAAY,uBAAuB,OAAO,MAAM,QAAQ,CAAC,IAAI,IAAI;AAC1F,YAAM,MAAM,KAAK,QAAQ;AACzB,UAAI;AACJ,UAAI,MAAM,SAAS,GAAG,KAAK,IAAI,WAAW,GAAG;AAC3C,gBAAQ,SAAS,IAAI,KAAK,EAAE,KAAK,IAAI,SAAS,MAAM,SAAS,CAAC;AAC9D,YAAI,UAAU,OAAW,OAAM,IAAI,YAAY,aAAa,QAAQ,0BAA0B,IAAI;AAAA,MACpG,WAAW,UAAU,EAAG,OAAM,IAAI,YAAY,aAAa,QAAQ,+BAA+B,IAAI;AACtG,YAAM,KAAK,KAAK;AAAA,IAClB,OAAO;AACL,eAAS,SAAS,GAAG,SAAS,SAAS,QAAQ,UAAU;AACvD,cAAM,MAAM,SAAS,MAAM;AAC3B,YAAI,CAAC,UAAU,SAAS,GAAG,EAAG,OAAM,IAAI,YAAY,qBAAqB,OAAO,MAAM,GAAG,CAAC,IAAI,IAAI;AAClG,YAAI;AACJ,YAAI,MAAM,SAAS,GAAG,GAAG;AACvB,kBAAQ,SAAS,MAAM,SAAS,CAAC,KAAK,KAAK,EAAE,KAAK;AAClD,cAAI,UAAU,OAAW,OAAM,IAAI,YAAY,kCAAkC,OAAO,MAAM,GAAG,CAAC,IAAI,IAAI;AAC1G,mBAAS,SAAS;AAAA,QACpB;AACA,cAAM,KAAK,KAAK;AAAA,MAClB;AAAA,IACF;AACA,QAAI,OAAO,YAAa,QAAO;AAAA,EACjC;AACA,MAAI,OAAO,SAAS,SAAS,EAAG,OAAM,IAAI,YAAY,OAAO,SAAS,SAAS,yBAAyB,OAAO,MAAM,KAAK,GAAG,EAAE,CAAE,CAAC,KAAK,mBAAmB,IAAI;AAC9J,SAAO,MAAM,OAAO,OAAO,QAAQ,OAAO,OAAO,cAAc,cAAc;AAC7E,WAAS,OAAO,MAAM;AACtB,SAAO;AACT;AAEO,SAAS,gBAAgBC,UAAkB,QAA2C;AAC3F,MAAIA,SAAQ,WAAW,OAAW,QAAO,WAAS,OAAO,KAAK,EAAE,SAASA,SAAQ,QAAQ,GAAG;AAC5F,QAAM,SAASA,SAAQ;AACvB,MAAI,SAAS,IAAI,QAAQ;AACzB,MAAI;AACJ,WAAS,SAAS,GAAG,SAAS,OAAO,QAAQ,UAAU;AACrD,UAAM,YAAY,OAAO,MAAM;AAC/B,QAAI,cAAc,OAAO,OAAO,SAAS,CAAC,MAAM,KAAK;AACnD,UAAI,cAAc,IAAK;AACvB,UAAI,WAAY,UAAS;AAAA,UAAgB,WAAU;AACnD;AAAA,IACF;AACA,QAAI,WAAY,OAAM,IAAI,YAAY,gDAAgD;AACtF,QAAIC,SAAQ;AACZ;AACA,WAAO,SAAS,OAAO,UAAU,OAAO,SAAS,OAAO,MAAM,CAAE,EAAG,CAAAA,UAAS,OAAO,QAAQ;AAC3F,QAAIC,SAAQ;AACZ,WAAO,SAAS,OAAO,UAAU,OAAO,MAAM,KAAM,OAAO,OAAO,MAAM,KAAM,KAAK;AACjF,MAAAA,SAAQA,SAAQ,KAAK,OAAO,OAAO,QAAQ,CAAC;AAC5C,aAAO,MAAMA,QAAO,OAAO,OAAO,cAAc,cAAc;AAAA,IAChE;AACA,QAAIC;AACJ,QAAI,OAAO,MAAM,MAAM,KAAK;AAC1B,MAAAA,aAAY;AAAG;AACf,aAAO,SAAS,OAAO,UAAU,OAAO,MAAM,KAAM,OAAO,OAAO,MAAM,KAAM,KAAK;AACjF,QAAAA,aAAYA,aAAY,KAAK,OAAO,OAAO,QAAQ,CAAC;AACpD,eAAO,MAAMA,YAAW,OAAO,OAAO,cAAc,kBAAkB;AAAA,MACxE;AAAA,IACF;AACA,UAAMC,QAAO,OAAO,MAAM;AAC1B,QAAIA,UAAS,OAAW,OAAM,IAAI,YAAY,wCAAwC;AACtF,QAAI,CAAC,SAAS,SAASA,KAAI,EAAG,OAAM,IAAI,YAAY,2CAA2CA,SAAQ,OAAOA,SAAQ,MAAMA,QAAO,KAAKA,MAAK,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,EAAE;AAC3L,UAAM,UAAU,MAAM,SAASA,KAAI,IAAIH,OAAM,SAAS,GAAG,IAAI,MAAM,KAAKA,OAAM,SAAS,GAAG,IAAI,MAAM;AACpG,QAAI,QAAS,OAAM,IAAI,YAAY,+CAA+C,OAAO,GAAGG,KAAI,EAAE;AAClG,iBAAa,EAAE,OAAAF,QAAO,OAAAD,QAAO,MAAAG,OAAM,GAAID,eAAc,SAAY,CAAC,IAAI,EAAE,WAAAA,WAAU,EAAG;AAAA,EACvF;AACA,MAAI,CAAC,WAAY,OAAM,IAAI,YAAY,8CAA8C;AACrF,QAAM,EAAE,OAAO,WAAW,OAAO,KAAK,IAAI;AAC1C,SAAO,MAAMH,SAAQ,OAAO,SAAS,OAAO,SAAS,MAAM,SAAS,KAAK,IAAI,OAAO,aAAa,GAAG,EAAE,IAAI,GAAG,OAAO,OAAO,cAAc,uBAAuB;AAChK,SAAO,WAAS;AACd,QAAI,SAAS,UAAU,KAAK,cAAc,IAAI,KAAK,MAAM,SAAS,SAAS,MAAM,IAAI,SAAS,OAAO,SAAS,MAAM,KAAK,EAAE;AAC3H,QAAI,SAAS,IAAK,UAAS,OAAO,YAAY;AAC9C,aAAS,OAAO,SAAS,aAAa,GAAG,GAAG;AAC5C,QAAI,SAAS;AACb,QAAI,MAAM,SAAS,GAAG,GAAG;AACvB,UAAI,SAAS,OAAO,CAAC,OAAO,WAAW,GAAG,EAAG,UAAS;AAAA,gBAC5C,SAAS,OAAO,SAAS,QAAQ,UAAU,EAAG,UAAS,SAAS,MAAM,OAAO;AAAA,IACzF;AACA,QAAI,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,SAAS,GAAG,KAAK,cAAc,OAAW,UAAS,OAAO,SAAS,KAAK,IAAI,GAAG,QAAQ,OAAO,MAAM,GAAG,GAAG;AAC5I,QAAI,WAAW,SAAS;AACxB,eAAW,MAAM,SAAS,GAAG,IAAI,SAAS,OAAO,KAAK,IAAI,SAAS,SAAS,KAAK;AACjF,WAAO,SAAS,WAAW;AAAA,EAC7B;AACF;;;ACpJA;AAeO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAqB,SAAgC,QAAgB;AAAhD;AAAgC;AAAA,EAAiB;AAAA,EAAjD;AAAA,EAAgC;AAAA,EACrD,MAAM,OAAO,SAAqB,SAAuC;AACvE,UAAM,EAAE,QAAQ,QAAQ,IAAI,KAAK;AACjC,SAAK,OAAO,OAAO;AACnB,UAAM,SAAS,QAAQ,IAAI,UAAU,QAAQ,IAAI,YAAY,QAAQ,IAAI,QAAQ;AACjF,UAAM,UAAU,QAAQ,IAAI,UAAU,QAAQ,IAAI,cAAc,QAAQ,IAAI,QAAQ;AACpF,UAAM,YAAY,CAAC,KAAK,SAAS,WAAW,QAAQ;AACpD,QAAI,CAAC,UAAU,SAAS,MAAM,KAAK,CAAC,UAAU,SAAS,OAAO,EAAG,OAAM,IAAI,YAAY,+CAA+C;AACtI,QAAI,KAAK,OAAO,UAAU,IAAI,EAAG,OAAM,IAAI,YAAY,qBAAqB;AAC5E,UAAM,SAAS,MAAM,KAAK,QAAQ,UAAU,EAAE,MAAM,cAAc,SAAS,SAAS,WAAW,OAAO,WAAW,UAAU,SAAS,eAAe,QAAQ;AAAA,MACzJ,iBAAiB,OAAO;AAAA,MAAsB,iBAAiB,KAAK,IAAI,OAAO,cAAc,kBAAkB,eAAe;AAAA,MAC9H,UAAU,OAAO;AAAA,MAAe,UAAU,OAAO;AAAA,MACjD,UAAU,KAAK,IAAI,KAAK,OAAO,UAAU,GAAG,kBAAkB,QAAQ;AAAA,MAAG,WAAW,OAAO;AAAA,MAC3F,mBAAmB,OAAO;AAAA,IAC5B,EAAE,GAAG,OAAO;AACZ,SAAK,OAAO,OAAO,OAAO,KAAK;AAC/B,UAAM,KAAK,OAAO,eAAe;AACjC,WAAO,OAAO;AAAA,EAChB;AACF;AAEA,eAAsB,gBAAgB,MAAyB,SAA+C;AAC5G,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,WAAsB,CAAC;AAC7B,MAAI,OAAO;AACX,WAAS,QAAQ,GAAG,QAAQ,KAAK,QAAQ,SAAS;AAChD,WAAO,MAAM,SAAS,SAAS,GAAG,OAAO,OAAO,aAAa,eAAe;AAC5E,UAAM,WAAW,KAAK,KAAK;AAC3B,QAAI;AACJ,QAAI,SAAS,WAAW,GAAG,KAAK,SAAS,WAAW,GAAG,GAAG;AACxD,YAAM,YAAY,SAAS,CAAC;AAC5B,YAAM,UAAU,SAAS,YAAY,SAAS;AAC9C,UAAI,YAAY,EAAG,OAAM,IAAI,YAAY,GAAG,QAAQ,wBAAwB,SAAS,WAAW;AAChG,aAAO,MAAM,UAAU,GAAG,OAAO,OAAO,sBAAsB,qBAAqB;AACnF,YAAM,aAAa,MAAM,SAAS,MAAM,GAAG,OAAO,CAAC;AACnD,UAAI;AAAE,cAAM,QAAQ,OAAO,YAAY,IAAI,WAAW,CAAC;AAAA,MAAG,SACnD,OAAO;AACZ,YAAI,iBAAiB,kBAAkB,MAAM,aAAa,SAAU,OAAM,IAAI,YAAY,GAAG,OAAO,MAAM,QAAQ,CAAC,iCAAiC,MAAM,OAAO,EAAE;AACnK,cAAM;AAAA,MACR;AACA,YAAM,SAAS,UAAU,MAAM,SAAS,SAAS,KAAKK,SAAQ,SAAS,MAAM,UAAU,CAAC,GAAG,IAAI;AAC/F,UAAI,WAAW,OAAW,OAAM,IAAI,YAAY,GAAG,OAAO,MAAM,QAAQ,CAAC,oCAAoC;AAC7G,gBAAU,EAAE,UAAU,YAAY,QAAQ,cAAc,KAAK,QAAQ,QAAQ,IAAI,SAAS,MAAM;AAAA,IAClG,OAAO;AACL,YAAM,OAAOA,SAAQ,QAAQ;AAC7B,UAAI,SAAS,OAAW,OAAM,IAAI,YAAY,GAAG,OAAO,MAAM,QAAQ,CAAC,mBAAmB;AAC1F,UAAI,SAAS,GAAI,OAAM,IAAI,YAAY,GAAG,QAAQ,yCAAyC;AAC3F,UAAI,OAAO,KAAM,OAAM,IAAI,YAAY,eAAe,OAAO,MAAM,QAAQ,CAAC,2CAA2C,IAAI,EAAE;AAC7H,UAAI,SAAS,KAAM,OAAM,OAAO,MAAM,gCAAgC,OAAO,MAAM,QAAQ,CAAC;AAAA,GAA2C,IAAI;AAC3I,aAAO;AACP,gBAAU,EAAE,UAAU,MAAM,QAAQ,OAAO,QAAQ,IAAI,QAAQ,IAAI,SAAS,MAAM;AAAA,IACpF;AACA,UAAM,SAAS,KAAK,QAAQ,CAAC;AAC7B,QAAI,QAAQ,WAAW,GAAG,GAAG;AAC3B;AACA,UAAI,CAAC,OAAO,SAAS,GAAG,EAAG,OAAM,IAAI,YAAY,GAAG,OAAO,MAAM,MAAM,CAAC,mCAAmC;AAC3G,UAAI,WAAW,MAAO,SAAQ,UAAU;AAAA,WACnC;AACH,cAAM,QAAQA,SAAQ,OAAO,MAAM,GAAG,EAAE,CAAC;AACzC,YAAI,UAAU,OAAW,OAAM,IAAI,YAAY,GAAG,OAAO,MAAM,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC,yCAAyC;AAC5H,gBAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AACA,aAAS,KAAK,OAAO;AACrB,UAAM,OAAO,eAAe;AAAA,EAC9B;AACA,SAAO;AACT;;;ACnFA;AAIO,IAAM,WAAN,MAAe;AAAA,EAGpB,YAAqB,OAAuB,QAA0B,SAAkB;AAAnE;AAAuB;AAA0B;AAAA,EAAmB;AAAA,EAApE;AAAA,EAAuB;AAAA,EAA0B;AAAA,EAF9D,OAAO;AAAA,EACP,UAAU;AAAA,EAElB,MAAc,SAA0C;AACtD,UAAM,OAAO,MAAM,KAAK,MAAM,IAAI,KAAK,IAAI;AAC3C,QAAI,MAAM;AAAE,WAAK,UAAU,KAAK,IAAI,KAAK,SAAS,KAAK,IAAI;AAAG,WAAK;AAAA,IAAQ;AAC3E,WAAO;AAAA,EACT;AAAA,EACQ,MAAM,SAAkB,YAAiC;AAC/D,WAAO,IAAI,YAAY,GAAG,KAAK,QAAQ,OAAO,MAAM,OAAO,QAAQ,IAAI,CAAC,CAAC,6BAA6B,aAAa,kBAAkB,UAAU,KAAK,EAAE,EAAE;AAAA,EAC1J;AAAA,EACA,MAAc,QAAuB;AACnC,QAAI,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,IAAI,EAAG,OAAM,IAAI,YAAY,qBAAqB,OAAO,IAAI;AAAA,EAC9F;AAAA,EACA,MAAc,OAAsB;AAClC,QAAI;AACJ,YAAQ,OAAO,MAAM,KAAK,OAAO,OAAO,QAAW;AACjD,YAAM,KAAK,OAAO,MAAM,IAAI;AAC5B,YAAM,KAAK,QAAQ,OAAO,eAAe;AAAA,IAC3C;AAAA,EACF;AAAA,EACA,MAAc,QAAQ,SAAkB,YAAmC;AACzE,UAAM,SAAS,OAAO,QAAQ,IAAI,QAAQ,QAAS,aAAa,GAAG;AACnE,UAAM,KAAK,OAAO,KAAK;AACvB,QAAI,KAAK,OAAO,QAAQ,YAAY,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,UAAU,CAAC,EAAG,OAAM,KAAK,MAAM,SAAS,UAAU;AACjH,UAAM,KAAK,MAAM;AACjB,WAAO,OAAO,KAAK,IAAI,IAAI,QAAQ;AACjC,YAAM,OAAO,MAAM,KAAK,OAAO;AAC/B,UAAI,CAAC,KAAM,OAAM,KAAK,MAAM,SAAS,UAAU;AAC/C,YAAM,KAAK,OAAO,MAAM,IAAI;AAC5B,YAAM,KAAK,QAAQ,OAAO,eAAe;AAAA,IAC3C;AACA,UAAM,KAAK,OAAO,OAAO;AACzB,QAAI,KAAK,OAAO,QAAQ,SAAU,OAAM,KAAK,OAAO;AAAA,aAC3C,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,UAAU,CAAC,EAAG,OAAM,KAAK,MAAM,SAAS,UAAU;AAAA,EACxF;AAAA,EACA,MAAc,MAAM,SAAkB,YAAsC;AAC1E,QAAI,CAAC,QAAQ,OAAQ,OAAM,KAAK,OAAO,KAAK;AAC5C,QAAI,KAAK,OAAO,QAAQ,YAAY,KAAK,UAAU,EAAG,OAAM,KAAK,OAAO;AACxE,eAAS;AACP,YAAM,OAAO,MAAM,KAAK,MAAM,IAAI,EAAE,KAAK,OAAO;AAChD,UAAI,CAAC,MAAM;AACT,YAAI,CAAC,QAAQ,SAAS;AACpB,gBAAM,UAAU,GAAG,KAAK,QAAQ,OAAO,MAAM,QAAQ,QAAQ,CAAC,oBAAoB,aAAa,kBAAkB,UAAU,KAAK,EAAE;AAClI,cAAI,CAAC,QAAQ,OAAQ,OAAM,KAAK,KAAK;AACrC,gBAAM,IAAI,YAAY,OAAO;AAAA,QAC/B;AACA,YAAI,CAAC,QAAQ,QAAQ;AAAE,gBAAM,KAAK,KAAK;AAAG,gBAAM,KAAK,OAAO,OAAO;AAAA,QAAG;AACtE,eAAO;AAAA,MACT;AACA,YAAM,UAAU,KAAK,GAAG,EAAE,MAAM,KAAK,KAAK,SAAS,GAAG,EAAE,IAAI;AAC5D,UAAI,MAAM,KAAK,QAAQ,OAAO,QAAQ,YAAa,OAAO,EAAG;AAC7D,UAAI,QAAQ,UAAU,IAAI;AACxB,cAAM,UAAU,MAAM,KAAK,OAAO;AAClC,YAAI,WAAW,CAAC,QAAQ,OAAQ,OAAM,KAAK,OAAO,MAAM,OAAO;AAAA,MACjE;AACA,YAAM,KAAK,QAAQ,OAAO,eAAe;AAAA,IAC3C;AACA,UAAM,SAAS,OAAO,QAAQ,IAAI,OAAO,KAAK,OAAO,IAAI,QAAQ,MAAM;AACvE,UAAM,KAAK,MAAM;AACjB,QAAI,OAAO,KAAK,IAAI,IAAI,OAAQ,OAAM,IAAI,YAAY,GAAG,KAAK,QAAQ,OAAO,MAAM,QAAQ,QAAQ,CAAC,4BAA4B;AAChI,WAAO,OAAO,KAAK,IAAI,IAAI,QAAQ;AACjC,YAAM,OAAO,MAAM,KAAK,OAAO;AAC/B,UAAI,CAAC,KAAM,OAAM,IAAI,YAAY,GAAG,KAAK,QAAQ,OAAO,MAAM,QAAQ,QAAQ,CAAC,4BAA4B;AAC3G,UAAI,CAAC,QAAQ,OAAQ,OAAM,KAAK,OAAO,MAAM,IAAI;AACjD,YAAM,KAAK,QAAQ,OAAO,eAAe;AAAA,IAC3C;AACA,QAAI,CAAC,QAAQ,OAAQ,OAAM,KAAK,OAAO,OAAO;AAC9C,QAAI,QAAQ,SAAS,GAAI,MAAK,UAAU,OAAO,MAAM;AACrD,WAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,UAA6C;AACrD,eAAW,WAAW,UAAU;AAC9B,eAAS,aAAa,IAAI,QAAQ,WAAW,cAAc,QAAQ,QAAQ,cAAc;AACvF,aAAK,QAAQ,OAAO,OAAO;AAC3B,YAAI,QAAQ,eAAe,QAAW;AACpC,cAAI,MAAM,KAAK,MAAM,SAAS,UAAU,EAAG;AAAA,QAC7C,MAAO,OAAM,KAAK,QAAQ,SAAS,UAAU;AAC7C,cAAM,KAAK,QAAQ,OAAO,eAAe;AAAA,MAC3C;AAAA,IACF;AACA,UAAM,KAAK,OAAO,KAAK;AACvB,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,OAAO,OAAO;AAAA,EAC3B;AACF;;;AN9EO,SAAS,gCAAgC,UAAyBC,WAAiC,CAAC,GAAsB;AAC/H,QAAM,SAAS,SAASA,QAAO;AAC/B,SAAO;AAAA,IAAE,MAAM;AAAA,IAAU,aAAa;AAAA,IACpC,wBAAwB,CAAC,EAAE,IAAI,SAAS,aAAa,uCAAuC,cAAc,CAAC,oBAAoB,GAAG,SAAS,KAAK,CAAC;AAAA,IACjJ,MAAM,QAAQ,SAAS;AACvB,aAAO,iBAAiB,SAAS,UAAU,OAAM,YAAW;AAC1D,cAAM,SAAS,IAAI,OAAO,SAAS,MAAM;AACzC,cAAM,YAAY,IAAI,UAAU,MAAM;AACtC,YAAI;AACJ,YAAI;AACJ,YAAI;AACJ,YAAI,WAAW;AACf,YAAI;AACF,gBAAM,SAAS,aAAa,OAAO,UAAU,GAAG,MAAM;AACtD,cAAI,OAAO,aAAa;AACtB,kBAAM,OAAO,MAAM,OAAO,gBAAgB,YAAY,4BAA4B,8LAA8L;AAAA,UAClR,OAAO;AACL,kBAAM,SAAS,gBAAgB,QAAQ,MAAM;AAC7C,kBAAM,QAAQ,IAAI,MAAM,SAAS;AACjC,gBAAI;AAAE,oBAAM,MAAM,KAAK,OAAO,SAAS,CAAC,CAAE;AAAA,YAAG,SACtC,OAAO;AACZ,kBAAI,iBAAiB,QAAS,OAAM,IAAI,YAAY,eAAe,OAAO,MAAM,OAAO,SAAS,CAAC,CAAE,CAAC,iBAAiB,SAAS,KAAK,CAAC,EAAE;AACtI,oBAAM;AAAA,YACR;AACA,kBAAM,UAAU,IAAI,QAAQ,SAAS,MAAM;AAC3C,kBAAM,WAAW,MAAM,gBAAgB,OAAO,SAAS,MAAM,CAAC,GAAG,OAAO;AACxE,qBAAS,IAAI,QAAQ,WAAW,QAAQ,QAAQ,KAAK;AACrD,kBAAM,IAAI,SAAS,OAAO,QAAQ,OAAO,EAAE,IAAI,QAAQ;AACvD,mBAAO,YAAY;AAAA,UACrB;AAAA,QACF,SAAS,OAAO;AACd,oBAAU,EAAE,QAAQ,MAAM;AAC1B,oBAAU,EAAE,QAAQ,MAAM;AAC1B,cAAI,UAAU,iBAAiB,eAAe,MAAM,SAAU,QAAO,WAAW;AAChF,cAAI,CAAC,QAAQ,OAAO,SAAS;AAC3B,uBAAW;AACX,gBAAI;AACF,oBAAM,UAAU,iBAAiB,iBAAiB,MAAM,UAAU,iBAAiB,UAAU,SAAS,KAAK,IAAI,wBAAwB,OAAO,QAAQ,eAAe;AACrK,oBAAM,OAAO,MAAM,WAAW,OAAO;AAAA,GAAM,IAAI;AAC/C,kBAAI,iBAAiB,eAAe,MAAM,MAAO,OAAM,OAAO,MAAM,+CAA+C,IAAI;AACvH,kBAAI,EAAE,iBAAiB,eAAe,MAAM,UAAW,OAAM,QAAQ,OAAO;AAC5E,wBAAU;AAAA,YACZ,SAAS,WAAW;AAAE,wBAAU,EAAE,QAAQ,IAAI,eAAe,CAAC,OAAO,SAAS,GAAG,iCAAiC,EAAE;AAAA,YAAG;AAAA,UACzH;AAAA,QACF;AACA,YAAI;AAAE,gBAAM,UAAU,MAAM;AAAA,QAAG,SACxB,SAAS;AACd,gBAAM,WAAW,WAAW;AAC5B,oBAAU,EAAE,QAAQ,WAAW,IAAI,eAAe,CAAC,SAAS,QAAQ,OAAO,GAAG,qCAAqC,IAAI,QAAQ;AAAA,QACjI;AACA,gBAAQ,OAAO,eAAe;AAC9B,YAAI,QAAS,OAAM,QAAQ;AAC3B,eAAO,EAAE,SAAS;AAAA,MACpB,CAAC;AAAA,IACH;AAAA,EAAE;AACJ;;;AX3DO,SAAS,oBAAoBC,WAAiC,CAAC,GAAsB;AAC1F,QAAM,WAAWA,SAAQ,kBAAkB,SAAY,2BAA2B,IAAIA,SAAQ;AAC9F,SAAO,gCAAgC,IAAI,cAAc,UAAUA,SAAQ,KAAK,GAAGA,QAAO;AAC5F;AAEO,SAAS,qBAAqBA,WAAiC,CAAC,GAAiC;AACtG,SAAO,CAAC,oBAAoBA,QAAO,CAAC;AACtC;AAEO,SAAS,eAAeA,WAAiC,CAAC,GAAuB;AACtF,QAAM,WAAWA,SAAQ,kBAAkB,SAAY,2BAA2B,IAAIA,SAAQ;AAC9F,QAAM,WAAW,IAAI,cAAc,UAAUA,SAAQ,KAAK;AAC1D,QAAM,UAAU,gCAAgC,UAAUA,QAAO;AACjE,SAAO,EAAE,MAAM,mBAAmB,MAAM,MAAM;AAC5C,QAAI,CAACA,SAAQ,WAAW,KAAK,SAAS,IAAI,QAAQ,EAAG,OAAM,IAAI,MAAM,oCAAoC;AACzG,SAAK,SAAS,SAAS,SAAS,EAAE,SAASA,SAAQ,WAAW,MAAM,CAAC;AAAA,EACvE,GAAG,MAAM,UAAU;AAAE,UAAM,SAAS,QAAQ;AAAA,EAAG,EAAE;AACnD;",
|
|
6
6
|
"names": ["options", "bytes", "descriptor", "descriptor", "descriptor", "value", "options", "descriptor", "options", "bytes", "bytes", "classes", "Parser", "bytes", "node", "defaults", "bytes", "execution", "member", "programs", "start", "execute", "options", "descriptor", "bytes", "character", "options", "bytes", "options", "integer", "key", "options", "flags", "width", "precision", "type", "integer", "options", "options"]
|
|
7
7
|
}
|