@llui/vite-plugin 0.0.14 → 0.0.16
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/transform.js +17 -2
- package/dist/transform.js.map +1 -1
- package/package.json +1 -1
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript'\nimport { collectDeps } from './collect-deps.js'\nimport { extractMsgSchema, extractEffectSchema } from './msg-schema.js'\nimport { extractStateSchema, type StateType } from './state-schema.js'\n\nfunction createMaskLiteral(f: ts.NodeFactory, mask: number): ts.Expression {\n if (mask >= 0) return f.createNumericLiteral(mask)\n // -1 (0xFFFFFFFF | 0) — emit as bitwise OR: 0xFFFFFFFF | 0\n return f.createBinaryExpression(\n f.createNumericLiteral(0xffffffff),\n ts.SyntaxKind.BarToken,\n f.createNumericLiteral(0),\n )\n}\n\n// HTML element helper names that the compiler can transform\nconst ELEMENT_HELPERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'section',\n 'select',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'video',\n])\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * Walk from `use` outward toward the source file root, looking for a\n * `const <name> = <initializer>` (or `let`/`var`) declaration that binds\n * this identifier in an enclosing scope. Returns the initializer if found.\n *\n * This enables reactive-binding detection for hoisted accessors:\n *\n * const cls = (s: State) => isActive(item, s.path) ? 'on' : 'off'\n * return a({ class: cls }, ...)\n *\n * Without resolution, `class: cls` would fall through the static path\n * and emit `__e.className = cls`, coercing the function to its source\n * string. With resolution, we see that `cls` is an arrow and emit a\n * binding exactly as if the arrow had been inlined.\n *\n * Scope rules:\n * - Only single-binding `const`/`let`/`var` declarations with an\n * initializer are considered. No destructuring, no multi-declarator\n * statements (too easy to get wrong without a type checker).\n * - Later reassignments are NOT tracked — if the identifier is `let`\n * and gets reassigned, the resolution is unreliable. We conservatively\n * refuse to resolve `let` bindings for now (arrow-valued accessors\n * are ~always `const` in practice).\n * - The declaration must dominate the use (same block or an enclosing\n * one). TypeScript's block semantics mean walking up parent blocks\n * is sufficient.\n */\nfunction resolveLocalConstInitializer(use: ts.Identifier): ts.Expression | null {\n const name = use.text\n let node: ts.Node = use\n while (node.parent) {\n const parent = node.parent\n // Scan statements of an enclosing block/source-file for a matching declaration\n let statements: readonly ts.Statement[] | null = null\n if (ts.isBlock(parent) || ts.isSourceFile(parent) || ts.isModuleBlock(parent)) {\n statements = parent.statements\n } else if (ts.isCaseClause(parent) || ts.isDefaultClause(parent)) {\n statements = parent.statements\n }\n if (statements) {\n for (const stmt of statements) {\n if (!ts.isVariableStatement(stmt)) continue\n // Skip `let` — reassignment would invalidate our resolution\n const flags = stmt.declarationList.flags\n if (!(flags & ts.NodeFlags.Const)) continue\n if (stmt.declarationList.declarations.length !== 1) continue\n const decl = stmt.declarationList.declarations[0]!\n if (!ts.isIdentifier(decl.name) || decl.name.text !== name) continue\n if (!decl.initializer) continue\n return decl.initializer\n }\n }\n node = parent\n }\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n/**\n * Transform a source file containing @llui/dom imports.\n * Returns the transformed source or null if no transformation needed.\n */\nexport interface TransformEdit {\n start: number\n end: number\n replacement: string\n}\n\nexport function transformLlui(\n source: string,\n _filename: string,\n devMode = false,\n mcpPort: number | null = 5200,\n): { output: string; edits: TransformEdit[] } | null {\n const sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the @llui/dom import\n const imp = findLluiImport(sourceFile)\n if (!imp) return null\n const lluiImport = imp\n\n // Collect imported element helper names (local → original)\n const importedHelpers = getImportedHelpers(lluiImport)\n if (importedHelpers.size === 0 && !hasReactiveAccessors(sourceFile)) return null\n\n // Pass 2 pre-scan: collect all state access paths\n // Only use precise masks in files that define a component() — the __dirty\n // function is generated per-component, so bit assignments in other files\n // won't match. Files without component() get FULL_MASK on all bindings.\n const fileHasComponent = hasComponentDef(sourceFile, lluiImport)\n const fieldBits = fileHasComponent ? collectDeps(source) : new Map<string, number>()\n\n // Identifier names bound to the View<S,M> helpers parameter of a `view` callback.\n // When the user writes `h.text(...)` / `h.show(...)` / `h.each(...)`, the\n // compiler treats the call as if it were a bare import call.\n const viewHelperNames = collectViewHelperNames(sourceFile, lluiImport)\n // Destructured aliases: `view: (_, { show, text: t }) => [...]` → { show→show, t→text }.\n const viewHelperAliases = collectViewHelperAliases(sourceFile, lluiImport, viewHelperNames)\n\n // Track which helpers were compiled vs bailed out\n const compiledHelpers = new Set<string>()\n const bailedHelpers = new Set<string>()\n let usesElTemplate = false\n let usesElSplit = false\n let usesMemo = false\n let usesApplyBinding = false\n\n const f = ts.factory\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n\n // Collect source positions of transformed nodes for source mapping\n const edits: TransformEdit[] = []\n\n function visitor(node: ts.Node): ts.Node {\n // Synthetic nodes (created by ts.factory) don't have real positions\n const hasPos = node.pos >= 0 && node.end >= 0\n const origStart = hasPos ? node.getStart(sourceFile) : -1\n const origEnd = hasPos ? node.getEnd() : -1\n\n // Pass 0: each() optimizations — dedup item() selectors + auto-wrap items in memo\n if (\n ts.isCallExpression(node) &&\n isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n ) {\n let current: ts.CallExpression = node\n let changed = false\n const memoWrapped = tryWrapEachItemsWithMemo(current, fieldBits, f)\n if (memoWrapped) {\n current = memoWrapped\n changed = true\n usesMemo = true\n }\n const deduped = tryDeduplicateItemSelectors(current, f, printer, sourceFile)\n if (deduped) {\n current = deduped\n changed = true\n }\n // Inject __mask for Phase 1 gating\n const masked = tryInjectStructuralMask(\n current,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (masked) {\n current = masked\n changed = true\n }\n if (changed) {\n const result = ts.visitEachChild(current, visitor, undefined!)\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n // Row factory: try after children are transformed\n if (ts.isCallExpression(result)) {\n try {\n const rf = tryEmitRowFactory(result, f, source)\n if (rf) return rf\n } catch (err) {\n const line = ts.getLineAndCharacterOfPosition(sourceFile, result.getStart())\n console.warn(\n `[llui] Row factory failed in ${_filename}:${line.line + 1} — ${(err as Error).message}`,\n )\n }\n }\n return result\n }\n }\n\n // Pass 1: Transform element helper calls to elSplit or elTemplate\n if (ts.isCallExpression(node)) {\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n compiledHelpers,\n bailedHelpers,\n f,\n )\n if (transformed) {\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') usesElSplit = true\n }\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(transformed, visitor, undefined!)\n }\n\n // Pass 2: Inject mask into text() calls\n const textTransformed = tryInjectTextMask(\n node,\n lluiImport,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (textTransformed) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return textTransformed\n }\n\n // Inject __mask into each()/branch()/show() options for Phase 1 gating\n const structuralMasked = tryInjectStructuralMask(\n node,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (structuralMasked) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(structuralMasked, visitor, undefined!)\n }\n }\n\n // Pass 2: Inject __dirty, __update, and __msgSchema into component() calls\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n let result = tryInjectDirty(node, fieldBits, f)\n if (result) usesApplyBinding = true\n if (devMode) {\n const schema = extractMsgSchema(source)\n if (schema) {\n result = injectMsgSchema(result ?? node, schema, f)\n }\n const stateSchema = extractStateSchema(source)\n if (stateSchema) {\n result = injectStateSchema(result ?? node, stateSchema.fields, f)\n }\n const effectSchema = extractEffectSchema(source)\n if (effectSchema) {\n result = injectEffectSchema(result ?? node, effectSchema, f)\n }\n result = injectComponentMeta(result ?? node, node, sourceFile, _filename, f)\n }\n if (result) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(result, visitor, undefined!)\n }\n }\n\n return ts.visitEachChild(node, visitor, undefined!)\n }\n\n let transformed = ts.visitNode(sourceFile, visitor) as ts.SourceFile\n\n // Pass 3: Clean up imports — use the old cleanupImports approach\n // which operates on the transformed SourceFile safely\n const safeToRemove = new Set([...compiledHelpers].filter((h) => !bailedHelpers.has(h)))\n transformed = cleanupImports(\n transformed,\n lluiImport,\n importedHelpers,\n safeToRemove,\n usesElSplit,\n usesElTemplate,\n usesMemo,\n usesApplyBinding,\n f,\n )\n\n if (edits.length === 0) return null\n\n // Find component declarations for HMR\n const componentDecls = devMode ? findComponentDeclarations(sourceFile, lluiImport) : []\n\n // Build per-statement edits by comparing original vs transformed.\n // Only emit edits for statements that actually changed.\n // Untouched code keeps its original positions → accurate source maps.\n const finalEdits: TransformEdit[] = []\n const origStmts = sourceFile.statements\n const xfStmts = transformed.statements\n\n for (let i = 0; i < origStmts.length && i < xfStmts.length; i++) {\n const origStart = origStmts[i]!.getStart(sourceFile)\n const origEnd = origStmts[i]!.getEnd()\n const origText = source.slice(origStart, origEnd)\n\n let xfText: string\n try {\n xfText = printer.printNode(ts.EmitHint.Unspecified, xfStmts[i]!, transformed)\n } catch {\n // Synthetic nodes may fail to print individually — fall back to full reprint\n const { top: _top, bottom: _bottom } = devMode\n ? generateDevCode(componentDecls, mcpPort)\n : { top: '', bottom: '' }\n const output =\n (_top ? _top + '\\n' : '') + printer.printFile(transformed) + (_bottom ? '\\n' + _bottom : '')\n return { output, edits: [{ start: 0, end: source.length, replacement: output }] }\n }\n\n // Compare ignoring trailing semicolons and whitespace (printer adds them)\n const origNorm = origText.trim().replace(/;$/, '')\n const xfNorm = xfText.trim().replace(/;$/, '')\n if (origNorm !== xfNorm) {\n // Match the original style: if the original didn't end with a semicolon,\n // strip the one the printer added\n const origHasSemi = origText.trimEnd().endsWith(';')\n const replacement = origHasSemi ? xfText : xfText.replace(/;(\\s*)$/, '$1')\n finalEdits.push({ start: origStart, end: origEnd, replacement })\n }\n }\n\n // Dev setup: enable* must run BEFORE user's mountApp (top of file),\n // but import.meta.hot.accept needs to reference user's component vars\n // (bottom of file). So split the injection.\n if (devMode) {\n const { top, bottom } = generateDevCode(componentDecls, mcpPort)\n if (top) finalEdits.push({ start: 0, end: 0, replacement: top + '\\n' })\n if (bottom)\n finalEdits.push({ start: source.length, end: source.length, replacement: '\\n' + bottom })\n }\n\n if (finalEdits.length === 0) return null\n\n // Build the full output by applying edits (for backward compat)\n const sorted = [...finalEdits].sort((a, b) => b.start - a.start)\n let output = source\n for (const edit of sorted) {\n output = output.slice(0, edit.start) + edit.replacement + output.slice(edit.end)\n }\n\n return { output, edits: finalEdits }\n}\n\n// ── HMR ──────────────────────────────────────────────────────────\n\nfunction generateDevCode(\n components: Array<{ varName: string; componentName: string }>,\n mcpPort: number | null,\n): { top: string; bottom: string } {\n if (components.length === 0) {\n return {\n top: '',\n bottom: `if (import.meta.hot) {\\n import.meta.hot.accept()\\n}`,\n }\n }\n\n const relayImport = mcpPort !== null ? ', startRelay as __startRelay' : ''\n const relayCall = mcpPort !== null ? `\\n__startRelay(${mcpPort})` : ''\n\n const top = `\nimport { enableHmr as __enableHmr, replaceComponent as __replaceComponent } from '@llui/dom/hmr'\nimport { enableDevTools as __enableDevTools${relayImport} } from '@llui/dom/devtools'\n__enableHmr()\n__enableDevTools()${relayCall}\n`.trim()\n\n const replaceCalls = components\n .map(({ varName, componentName }) => ` __replaceComponent(\"${componentName}\", ${varName})`)\n .join('\\n')\n\n // HMR auto-connect: when the Vite plugin detects that @llui/mcp's\n // active marker file exists or appears, it sends `llui:mcp-ready`\n // with the MCP bridge port. We forward that to __lluiConnect so the\n // browser connects automatically — no console gymnastics, no retry\n // spam, regardless of whether MCP or Vite started first.\n const mcpHmrHandler =\n mcpPort !== null\n ? `\n import.meta.hot.on('llui:mcp-ready', (data) => {\n if (typeof globalThis.__lluiConnect === 'function') {\n globalThis.__lluiConnect(data?.port)\n }\n })`\n : ''\n\n const bottom = `\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n${replaceCalls}\n })${mcpHmrHandler}\n}\n`.trim()\n\n return { top, bottom }\n}\n\n/** Find all component() calls and extract the variable name and component name */\nfunction findComponentDeclarations(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n): Array<{ varName: string; componentName: string }> {\n const result: Array<{ varName: string; componentName: string }> = []\n\n function visit(node: ts.Node): void {\n // Match: const Foo = component({ name: 'Foo', ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n isComponentCall(node.initializer, lluiImport)\n ) {\n const varName = node.name.text\n const config = node.initializer.arguments[0]\n if (config && ts.isObjectLiteralExpression(config)) {\n for (const prop of config.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n result.push({ varName, componentName: prop.initializer.text })\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n return result\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nfunction findLluiImport(sf: ts.SourceFile): ts.ImportDeclaration | null {\n for (const stmt of sf.statements) {\n if (\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom'\n ) {\n return stmt\n }\n }\n return null\n}\n\nfunction getImportedHelpers(imp: ts.ImportDeclaration): Map<string, string> {\n const map = new Map<string, string>()\n const clause = imp.importClause\n if (!clause || !clause.namedBindings || !ts.isNamedImports(clause.namedBindings)) return map\n\n for (const spec of clause.namedBindings.elements) {\n const original = (spec.propertyName ?? spec.name).text\n const local = spec.name.text\n if (ELEMENT_HELPERS.has(original)) {\n map.set(local, original)\n }\n }\n return map\n}\n\nfunction hasReactiveAccessors(sf: ts.SourceFile): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (node.expression.text === 'text' || node.expression.text === 'component') {\n found = true\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\nfunction hasComponentDef(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n found = true\n return\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\n/**\n * Scan for `component({ view: (h) => ... })` arrow functions and collect\n * the identifier name used as the View-bundle parameter. When the user\n * writes `h.show(...)` / `h.text(...)` inside the view, the compiler treats\n * it the same as bare `show(...)` / `text(...)` for mask injection.\n */\nfunction collectViewHelperNames(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): Set<string> {\n const names = new Set<string>()\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isIdentifier(first.name)) {\n names.add(first.name.text)\n }\n }\n }\n }\n }\n }\n // Also: any function parameter annotated as `View<...>` — covers extracted\n // view-functions like `function repoPage(h: View<State, Msg>, ...)`.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isIdentifier(node.name)\n ) {\n names.add(node.name.text)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return names\n}\n\nfunction isViewTypeReference(t: ts.TypeNode): boolean {\n return ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName) && t.typeName.text === 'View'\n}\n\n/**\n * Scan for `component({ view: ({ show, each, text, ... }) => ... })`\n * destructured parameters and return a map from the locally-bound name to\n * the primitive name it aliases. This lets users write the bare `show(...)` /\n * `text(...)` forms without importing them, while the compiler still\n * applies mask injection etc.\n *\n * view: ({ show, text: t }) => [...]\n * // returns { show → \"show\", t → \"text\" }\n */\nconst VIEW_HELPER_PRIMITIVES = new Set([\n 'show',\n 'branch',\n 'each',\n 'text',\n 'memo',\n 'selector',\n 'ctx',\n 'slice',\n 'send',\n])\n\nfunction collectViewHelperAliases(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n helperNames: Set<string>,\n): Map<string, string> {\n const aliases = new Map<string, string>()\n function addFromBindingPattern(pattern: ts.ObjectBindingPattern): void {\n for (const elem of pattern.elements) {\n // { show } → propertyName=undefined, name=show\n // { show: mySh } → propertyName=show, name=mySh\n const sourceName =\n elem.propertyName && ts.isIdentifier(elem.propertyName)\n ? elem.propertyName.text\n : ts.isIdentifier(elem.name)\n ? elem.name.text\n : null\n const localName = ts.isIdentifier(elem.name) ? elem.name.text : null\n if (sourceName && localName && VIEW_HELPER_PRIMITIVES.has(sourceName)) {\n aliases.set(localName, sourceName)\n }\n }\n }\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isObjectBindingPattern(first.name)) {\n addFromBindingPattern(first.name)\n }\n }\n }\n }\n }\n }\n // Also: function parameters like `(…, { show, text }: View<State, Msg>) => …`\n // on extracted helpers — allow the same destructuring ergonomics.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isObjectBindingPattern(node.name)\n ) {\n addFromBindingPattern(node.name)\n }\n // Also: `const { show, text } = h` assignments where `h` is a known\n // helper binding — lets helpers destructure once at the top of the\n // function body.\n if (\n ts.isVariableDeclaration(node) &&\n ts.isObjectBindingPattern(node.name) &&\n node.initializer &&\n ts.isIdentifier(node.initializer) &&\n helperNames.has(node.initializer.text)\n ) {\n addFromBindingPattern(node.name)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return aliases\n}\n\nfunction isComponentCall(node: ts.CallExpression, lluiImport: ts.ImportDeclaration): boolean {\n if (!ts.isIdentifier(node.expression)) return false\n const name = node.expression.text\n if (name !== 'component') return false\n // Verify it's from the llui import\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return false\n return clause.namedBindings.elements.some(\n (s) => s.name.text === 'component' || (s.propertyName && s.propertyName.text === 'component'),\n )\n}\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // If the value is an Identifier that refers to a local const-bound\n // arrow/function, resolve it and treat it as if the arrow had been\n // inlined. Without this, `class: cls` where `const cls = (s) => ...`\n // falls through to the static path and emits `.className = cls`,\n // coercing the function to its source string in the DOM.\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding — value is an arrow function or function expression\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, readsState } = computeAccessorMask(value, fieldBits)\n\n // Zero-mask constant folding: accessor doesn't read state → treat as static\n if (mask === 0 && !readsState) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(value, undefined, []),\n )\n continue\n }\n\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Call expression — check if it's a per-item accessor: item(t => t.field)\n if (ts.isCallExpression(value)) {\n if (isPerItemCall(value)) {\n // Emit as a binding with FULL_MASK — the accessor is the item() call itself\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n // Unknown call expression — bail out\n bailed.add(localName)\n return null\n }\n\n // Per-item property access: item.field — equivalent to item(t => t.field)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup pass.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Static prop\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [])\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ── Pass 2: Mask injection ───────────────────────────────────────\n\n/**\n * Match a call expression against a primitive name across all three binding\n * forms:\n * - bare imported identifier: `name(...)` where `name` was imported from @llui/dom\n * - destructured alias: `name(...)` where `name` is bound via\n * `view: (_, { name }) => ...` (or `{ name: alias }`)\n * - member call: `<h>.name(...)` where `<h>` is the 2nd view parameter\n *\n * The compiler treats all three identically for mask injection / each()\n * optimization purposes.\n */\nfunction isHelperCall(\n expr: ts.Expression,\n name: string,\n helperNames: Set<string>,\n aliases?: Map<string, string>,\n): boolean {\n if (ts.isIdentifier(expr)) {\n if (expr.text === name) return true\n if (aliases && aliases.get(expr.text) === name) return true\n return false\n }\n if (\n ts.isPropertyAccessExpression(expr) &&\n ts.isIdentifier(expr.expression) &&\n helperNames.has(expr.expression.text) &&\n ts.isIdentifier(expr.name) &&\n expr.name.text === name\n ) {\n return true\n }\n return false\n}\n\nfunction tryInjectTextMask(\n node: ts.CallExpression,\n lluiImport: ts.ImportDeclaration,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!isHelperCall(node.expression, 'text', viewHelperNames, viewHelperAliases)) {\n return null\n }\n\n // For a bare identifier `text`, verify it actually resolves to the @llui/dom\n // import (otherwise a user-defined `text` in scope would be rewritten).\n // Destructured-alias and member-expression forms are already provenance-safe.\n if (ts.isIdentifier(node.expression) && !viewHelperAliases.has(node.expression.text)) {\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return null\n const hasText = clause.namedBindings.elements.some(\n (s) => s.name.text === 'text' || s.propertyName?.text === 'text',\n )\n if (!hasText) return null\n }\n\n const firstArg = node.arguments[0]\n if (!firstArg) return null\n // Only inject mask for accessor functions, not static strings\n if (!ts.isArrowFunction(firstArg) && !ts.isFunctionExpression(firstArg)) return null\n // Don't inject if mask already provided\n if (node.arguments.length >= 2) return null\n\n const { mask } = computeAccessorMask(firstArg, fieldBits)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n firstArg,\n createMaskLiteral(f, mask === 0 ? 0xffffffff | 0 : mask),\n ])\n}\n\n/**\n * Inject `__mask` into the options object of each()/branch()/show() calls.\n *\n * Analyzes the driving accessor (`items` for each, `on` for branch, `when`\n * for show) and computes the bitmask of state fields it reads. The runtime\n * uses this to skip Phase 1 reconciliation when irrelevant state changed\n * (e.g., each() that reads `rows` is skipped when only `selected` changed).\n */\nfunction tryInjectStructuralMask(\n node: ts.CallExpression,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n\n // Match each(), branch(), show() — bare, aliased, or member-call\n const isEach = isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n const isBranch = isHelperCall(node.expression, 'branch', viewHelperNames, viewHelperAliases)\n const isShow = isHelperCall(node.expression, 'show', viewHelperNames, viewHelperAliases)\n if (!isEach && !isBranch && !isShow) return null\n\n const optsArg = node.arguments[0]\n if (!optsArg || !ts.isObjectLiteralExpression(optsArg)) return null\n\n // Already has __mask\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n return null\n }\n }\n\n // Find the driving accessor property: items/on/when\n const driverProp = isEach ? 'items' : isBranch ? 'on' : 'when'\n let driverAccessor: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n driverAccessor = prop.initializer\n }\n break\n }\n }\n\n if (!driverAccessor) return null\n\n const { mask } = computeAccessorMask(driverAccessor, fieldBits)\n if (mask === 0 || mask === (0xffffffff | 0)) return null // no benefit\n\n // Inject __mask into the options object\n const maskProp = f.createPropertyAssignment('__mask', createMaskLiteral(f, mask))\n const newProps = [...optsArg.properties, maskProp]\n const newOpts = f.createObjectLiteralExpression(newProps, optsArg.properties.hasTrailingComma)\n return f.createCallExpression(node.expression, node.typeArguments, [\n newOpts,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction tryInjectDirty(\n node: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n\n // Check if __dirty already exists\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__dirty'\n ) {\n return null\n }\n }\n\n // Build __dirty: (o, n) => (Object.is(o.field, n.field) ? 0 : bit) | ...\n // Compare at top-level field (depth 1) — nested path changes within a\n // field must trigger the bit even if the specific sub-path isn't tracked.\n // e.g., route.page tracked but route.data changes → must fire.\n const topLevelBits = new Map<string, number>()\n for (const [path, bit] of fieldBits) {\n const topField = path.split('.')[0]!\n topLevelBits.set(topField, (topLevelBits.get(topField) ?? 0) | bit)\n }\n\n const comparisons: ts.Expression[] = []\n for (const [field, bit] of topLevelBits) {\n const oAccess = buildAccess(f, 'o', [field])\n const nAccess = buildAccess(f, 'n', [field])\n\n comparisons.push(\n f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [oAccess, nAccess],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, bit),\n ),\n ),\n )\n }\n\n let dirtyBody: ts.Expression = comparisons[0]!\n for (let i = 1; i < comparisons.length; i++) {\n dirtyBody = f.createBinaryExpression(dirtyBody, ts.SyntaxKind.BarToken, comparisons[i]!)\n }\n\n // Fallback: if no tracked bit fired but the state reference changed, some\n // untracked field must have changed — return FULL_MASK so bindings whose\n // accessors came from external modules (spread parts) still fire.\n // tracked || (Object.is(o, n) ? 0 : FULL_MASK)\n const fallback = f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [f.createIdentifier('o'), f.createIdentifier('n')],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, -1),\n ),\n )\n dirtyBody = f.createBinaryExpression(\n f.createParenthesizedExpression(dirtyBody),\n ts.SyntaxKind.BarBarToken,\n fallback,\n )\n\n const dirtyFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'o'),\n f.createParameterDeclaration(undefined, undefined, 'n'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n dirtyBody,\n )\n\n const dirtyProp = f.createPropertyAssignment('__dirty', dirtyFn)\n\n // __maskLegend: maps each top-level state field to the bit(s) that fire when\n // it changes. Lets introspection tools decode runtime dirty masks to field names.\n const legendProps: ts.PropertyAssignment[] = []\n for (const [field, bit] of topLevelBits) {\n legendProps.push(f.createPropertyAssignment(field, createMaskLiteral(f, bit)))\n }\n const legendProp = f.createPropertyAssignment(\n '__maskLegend',\n f.createObjectLiteralExpression(legendProps, false),\n )\n\n // Structural mask — used by both __update and __handlers\n const structuralMask = computeStructuralMask(configArg, fieldBits)\n const phase2Mask = computePhase2Mask(configArg, fieldBits)\n\n const updateBody = buildUpdateBody(f, structuralMask, phase2Mask)\n const updateFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 's'),\n f.createParameterDeclaration(undefined, undefined, 'd'),\n f.createParameterDeclaration(undefined, undefined, 'b'),\n f.createParameterDeclaration(undefined, undefined, 'bl'),\n f.createParameterDeclaration(undefined, undefined, 'p'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n updateBody,\n )\n const updateProp = f.createPropertyAssignment('__update', updateFn)\n\n // __handlers: per-message-type specialized update functions.\n // Analyzes the update() switch/case and generates direct handlers\n // that bypass the generic Phase 1/2 pipeline for single-message updates.\n const handlersProp = tryBuildHandlers(configArg, topLevelBits, structuralMask, f)\n\n // Keep __update even when __handlers is present — it provides Phase 1\n // mask gating for multi-message batches that bypass __handlers.\n const extraProps = [dirtyProp, legendProp, updateProp]\n if (handlersProp) extraProps.push(handlersProp)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, ...extraProps], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Analyze update() switch/case and generate per-message-type handlers.\n *\n * Each handler receives (inst, msg) and returns [newState, effects].\n * The handler calls update() to get the new state, then directly invokes\n * the appropriate runtime primitives (reconcileItems, __directUpdate, etc.)\n * instead of going through the generic Phase 1/2 pipeline.\n *\n * Conservative: only generates handlers for cases where the field\n * modifications are statically determinable. Complex cases are skipped.\n */\nfunction tryBuildHandlers(\n configArg: ts.ObjectLiteralExpression,\n topLevelBits: Map<string, number>,\n structuralMask: number,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (topLevelBits.size === 0) return null\n\n // Find the update function in the component config\n let updateFn: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'update'\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n updateFn = prop.initializer\n }\n break\n }\n }\n if (!updateFn) return null\n\n // Find the switch statement in the update body\n const body = ts.isBlock(updateFn.body) ? updateFn.body : null\n if (!body) return null\n\n let switchStmt: ts.SwitchStatement | null = null\n for (const stmt of body.statements) {\n if (ts.isSwitchStatement(stmt)) {\n switchStmt = stmt\n break\n }\n }\n if (!switchStmt) return null\n\n // Check the switch discriminant is msg.type pattern\n const stateParam = updateFn.parameters[0]?.name\n const msgParam = updateFn.parameters[1]?.name\n if (!stateParam || !msgParam || !ts.isIdentifier(stateParam) || !ts.isIdentifier(msgParam))\n return null\n const stateName = stateParam.text\n const _msgName = msgParam.text\n\n // Analyze each case clause\n const handlers: ts.PropertyAssignment[] = []\n\n for (const clause of switchStmt.caseBlock.clauses) {\n if (!ts.isCaseClause(clause)) continue\n\n // Extract the case label — must be a string literal like 'select'\n if (!ts.isStringLiteral(clause.expression)) continue\n const msgType = clause.expression.text\n\n // Collect ALL return [newState, effects] statements recursively from the\n // case body. Multiple returns (from if/else branches) must all be analyzed\n // so the handler's dirty mask covers every possible modified field.\n const returnExprs: ts.ArrayLiteralExpression[] = []\n const collectReturns = (node: ts.Node): void => {\n if (\n ts.isReturnStatement(node) &&\n node.expression &&\n ts.isArrayLiteralExpression(node.expression) &&\n node.expression.elements.length >= 2\n ) {\n returnExprs.push(node.expression)\n return\n }\n // Don't descend into nested functions — their returns are unrelated.\n if (\n ts.isFunctionDeclaration(node) ||\n ts.isFunctionExpression(node) ||\n ts.isArrowFunction(node) ||\n ts.isMethodDeclaration(node)\n ) {\n return\n }\n ts.forEachChild(node, collectReturns)\n }\n for (const stmt of clause.statements) {\n collectReturns(stmt)\n }\n if (returnExprs.length === 0) continue\n\n // Union modified fields across all return paths.\n const allModified = new Set<string>()\n let bailOut = false\n for (const returnExpr of returnExprs) {\n const stateExpr = returnExpr.elements[0]!\n const fields = analyzeModifiedFields(stateExpr, stateName, topLevelBits)\n if (!fields) {\n bailOut = true\n break\n }\n for (const f of fields) allModified.add(f)\n }\n if (bailOut) continue // at least one return path was too complex\n\n const modifiedFields = Array.from(allModified)\n\n // Compute the dirty mask for this case\n let caseDirty = 0\n for (const field of modifiedFields) {\n caseDirty |= topLevelBits.get(field) ?? 0xffffffff | 0\n }\n\n // Detect array operation pattern for structural block optimization\n const arrayOp = detectArrayOp(clause, stateName, modifiedFields, structuralMask, caseDirty)\n\n const handler = buildCaseHandler(f, caseDirty, arrayOp)\n handlers.push(f.createPropertyAssignment(f.createStringLiteral(msgType), handler))\n }\n\n if (handlers.length === 0) return null\n\n return f.createPropertyAssignment('__handlers', f.createObjectLiteralExpression(handlers, true))\n}\n\ntype ArrayOp =\n | 'none'\n | 'clear'\n | 'mutate'\n | 'remove'\n | 'general'\n | { type: 'strided'; stride: number } // for (i = 0; i < len; i += stride) pattern\n\n/**\n * Detect the array operation pattern in a case body.\n * - 'none': no array field modified (e.g., only `selected` changes)\n * - 'clear': array set to empty literal `[]`\n * - 'mutate': array created via `.slice()` then mutated in place (same keys)\n * - 'general': unknown pattern, use generic reconcile\n */\nfunction detectArrayOp(\n clause: ts.CaseClause,\n stateName: string,\n modifiedFields: string[],\n structuralMask?: number,\n caseDirty?: number,\n): ArrayOp {\n // No fields modified or dirty bits don't intersect any structural block →\n // skip structural blocks entirely (e.g., only `selected` changes)\n if (modifiedFields.length === 0) return 'none'\n if (structuralMask !== undefined && caseDirty !== undefined && (structuralMask & caseDirty) === 0)\n return 'none'\n\n // Look at the return expression's array field values\n for (const stmt of clause.statements) {\n const returnExpr = findReturnArray(stmt)\n if (!returnExpr) continue\n\n const stateExpr = returnExpr.elements[0]\n if (!stateExpr || !ts.isObjectLiteralExpression(stateExpr)) continue\n\n for (const prop of stateExpr.properties) {\n const name =\n ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)\n ? prop.name.text\n : ts.isShorthandPropertyAssignment(prop)\n ? prop.name.text\n : null\n if (!name) continue\n\n // Check for empty array literal: `field: []`\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isArrayLiteralExpression(prop.initializer) &&\n prop.initializer.elements.length === 0\n ) {\n return 'clear'\n }\n\n // Check for shorthand `field` where field was assigned via `.slice()` earlier\n // This catches: `const rows = state.rows.slice(); rows[i] = ...; return { ...state, rows }`\n if (ts.isShorthandPropertyAssignment(prop)) {\n const varName = prop.name.text\n if (hasSliceAssignment(clause, stateName, varName)) {\n // Check for strided for-loop: for (let i = 0; i < arr.length; i += STRIDE)\n const stride = detectStrideLoop(clause, varName)\n if (stride > 1) return { type: 'strided', stride }\n return 'mutate'\n }\n }\n\n // Check for property assignment with filter: `field: state.field.filter(...)`\n if (ts.isPropertyAssignment(prop) && ts.isCallExpression(prop.initializer)) {\n const call = prop.initializer\n if (\n ts.isPropertyAccessExpression(call.expression) &&\n call.expression.name.text === 'filter'\n ) {\n return 'remove'\n }\n }\n }\n }\n\n return 'general'\n}\n\nfunction findReturnArray(stmt: ts.Statement): ts.ArrayLiteralExpression | null {\n if (ts.isReturnStatement(stmt) && stmt.expression && ts.isArrayLiteralExpression(stmt.expression))\n return stmt.expression\n if (ts.isBlock(stmt)) {\n for (const inner of stmt.statements) {\n const result = findReturnArray(inner)\n if (result) return result\n }\n }\n return null\n}\n\n/**\n * Detect a strided for-loop: `for (let i = 0; i < arr.length; i += STRIDE)`\n * where `arr` is the named variable. Returns the stride or 0 if not found.\n */\nfunction detectStrideLoop(clause: ts.CaseClause, _arrName: string): number {\n function walk(node: ts.Node): number {\n if (ts.isForStatement(node) && node.incrementor) {\n // Check incrementor: i += STRIDE\n const inc = node.incrementor\n if (\n ts.isBinaryExpression(inc) &&\n inc.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken &&\n ts.isNumericLiteral(inc.right)\n ) {\n const stride = parseInt(inc.right.text, 10)\n if (stride > 1) return stride\n }\n }\n return ts.forEachChild(node, walk) ?? 0\n }\n for (const stmt of clause.statements) {\n const result = walk(stmt)\n if (result > 0) return result\n }\n return 0\n}\n\nfunction hasSliceAssignment(clause: ts.CaseClause, stateName: string, varName: string): boolean {\n function walk(node: ts.Node): boolean {\n // Look for: const varName = stateName.field.slice()\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === varName &&\n node.initializer\n ) {\n const init = node.initializer\n if (\n ts.isCallExpression(init) &&\n ts.isPropertyAccessExpression(init.expression) &&\n init.expression.name.text === 'slice'\n ) {\n return true\n }\n }\n return ts.forEachChild(node, walk) ?? false\n }\n for (const stmt of clause.statements) {\n if (walk(stmt)) return true\n }\n return false\n}\n\n/**\n * Analyze which top-level state fields are modified in a return expression.\n * Returns the set of field names, or null if too complex to determine.\n */\nfunction analyzeModifiedFields(\n stateExpr: ts.Expression,\n stateName: string,\n topLevelBits: Map<string, number>,\n): string[] | null {\n // Pattern: { ...state, field1: ..., field2: ... } or { field1: ..., field2: ... }\n if (ts.isObjectLiteralExpression(stateExpr)) {\n const modified: string[] = []\n for (const prop of stateExpr.properties) {\n if (ts.isSpreadAssignment(prop)) {\n // { ...state } — the spread doesn't modify fields\n continue\n }\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n const fieldName = prop.name.text\n if (topLevelBits.has(fieldName)) {\n modified.push(fieldName)\n }\n }\n // Handle shorthand: { ...state, rows } where rows is a local variable\n if (ts.isShorthandPropertyAssignment(prop)) {\n const fieldName = prop.name.text\n if (topLevelBits.has(fieldName)) {\n modified.push(fieldName)\n }\n }\n }\n return modified.length > 0 ? modified : null\n }\n\n // Pattern: state (no change — early return)\n if (ts.isIdentifier(stateExpr) && stateExpr.text === stateName) {\n return [] // no fields modified\n }\n\n return null // too complex\n}\n\n/**\n * Build a handler function for a specific message type case.\n *\n * Generated: (inst, msg) => {\n * const [s, e] = inst.def.update(inst.state, msg)\n * inst.state = s\n * const bl = inst.structuralBlocks, b = inst.allBindings, p = b.length\n * // Phase 1: gated by caseDirty\n * for (let i = 0; i < bl.length; i++) {\n * if (bl[i].mask & caseDirty) bl[i].reconcile(s, caseDirty)\n * }\n * // Phase 2\n * __runPhase2(s, caseDirty, b, p)\n * return [s, e]\n * }\n */\n/**\n * Build a handler that delegates to __handleMsg(inst, msg, dirty, method).\n * method: 0=reconcile, 1=reconcileItems, 2=reconcileClear, 3=reconcileRemove, -1=skip blocks\n */\nfunction buildCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const method =\n typeof arrayOp === 'object' && arrayOp.type === 'strided'\n ? 10 + arrayOp.stride // reconcileChanged with stride\n : arrayOp === 'none'\n ? -1\n : arrayOp === 'mutate'\n ? 1\n : arrayOp === 'clear'\n ? 2\n : arrayOp === 'remove'\n ? 3\n : 0 // general\n\n // (inst, msg) => __handleMsg(inst, msg, dirty, method)\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createCallExpression(f.createIdentifier('__handleMsg'), undefined, [\n f.createIdentifier('inst'),\n f.createIdentifier('msg'),\n createMaskLiteral(f, caseDirty),\n method >= 0\n ? f.createNumericLiteral(method)\n : f.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, f.createNumericLiteral(1)),\n ]),\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction _deadCode_legacyCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const stmts: ts.Statement[] = []\n\n // const [s, e] = inst.def.update(inst.state, msg)\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n f.createArrayBindingPattern([\n f.createBindingElement(undefined, undefined, 's'),\n f.createBindingElement(undefined, undefined, 'e'),\n ]),\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'def'),\n 'update',\n ),\n undefined,\n [\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n f.createIdentifier('msg'),\n ],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // inst.state = s\n stmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('s'),\n ),\n ),\n )\n\n // Phase 1 + Phase 2, specialized by array operation pattern\n if (caseDirty !== 0) {\n // Determine the reconcile method based on array operation\n const reconcileMethod =\n arrayOp === 'clear'\n ? 'reconcileClear'\n : arrayOp === 'mutate'\n ? 'reconcileItems'\n : arrayOp === 'remove'\n ? 'reconcileRemove'\n : 'reconcile'\n\n if (arrayOp === 'none') {\n // No structural changes — skip Phase 1, only run Phase 2\n // (e.g., select: only selector binding needs updating)\n } else {\n // Phase 1: call specialized reconciler on matching blocks\n // const bl = inst.structuralBlocks\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bl',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'structuralBlocks'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // for (let i = 0; i < bl.length; i++) { if (bl[i].mask & dirty) bl[i].METHOD(s, dirty) }\n const blockEl = f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n )\n const reconcileArgs =\n reconcileMethod === 'reconcileClear'\n ? []\n : [\n f.createIdentifier('s'),\n ...(reconcileMethod === 'reconcile' ? [createMaskLiteral(f, caseDirty)] : []),\n ]\n\n stmts.push(\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(blockEl, 'mask'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, caseDirty),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n // Use specialized method if available, fall back to reconcile\n // bl[i].reconcileItems?.(s) ?? bl[i].reconcile(s, dirty)\n // Simplified: just call the method — it exists on each() blocks\n f.createPropertyAccessExpression(blockEl, reconcileMethod),\n undefined,\n reconcileArgs as ts.Expression[],\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n )\n }\n\n // Phase 2: compact + update bindings\n // const b = inst.allBindings, p = b.length\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'b',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'allBindings'),\n ),\n f.createVariableDeclaration(\n 'p',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // __runPhase2(s, caseDirty, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n createMaskLiteral(f, caseDirty),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n }\n\n // return [s, e]\n stmts.push(\n f.createReturnStatement(\n f.createArrayLiteralExpression([f.createIdentifier('s'), f.createIdentifier('e')]),\n ),\n )\n\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n}\n\n// ── Row Factory ─────────────────────────────────────────────────\n\n/**\n * Transform an eligible each() render to use a row factory — shared update\n * function with zero per-row closures for bindings.\n *\n * Runs AFTER the element transform pass has converted tr/td/text() calls\n * into elTemplate() calls, so we can analyze the template structure.\n */\nfunction tryEmitRowFactory(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n _originalSource: string,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n const body = ts.isBlock(renderFn.body) ? renderFn.body : null\n if (!body) return null\n\n // Find the elTemplate call in the transformed render body\n let templateCall: ts.CallExpression | null = null\n let templateVarName: string | null = null\n\n for (const stmt of body.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n ts.isCallExpression(decl.initializer)\n ) {\n if (\n ts.isIdentifier(decl.initializer.expression) &&\n decl.initializer.expression.text === 'elTemplate'\n ) {\n if (templateCall) return null // multiple templates — bail\n templateCall = decl.initializer\n templateVarName = decl.name.text\n }\n }\n }\n }\n // Check for nested structural primitives — bail\n if (containsStructuralCall(stmt)) return null\n // Bail on selector.bind() — row factory + selector causes V8 deopt\n // even without per-row disposers (selector fn declarations per render)\n if (_containsSelectorBind(stmt)) return null\n }\n\n if (!templateCall || templateCall.arguments.length < 2) return null\n\n // Extract HTML string\n const htmlArg = templateCall.arguments[0]\n if (!htmlArg || !ts.isStringLiteral(htmlArg)) return null\n const html = htmlArg.text\n\n // Extract patch function\n const patchFn = templateCall.arguments[1]\n if (!patchFn || (!ts.isArrowFunction(patchFn) && !ts.isFunctionExpression(patchFn))) return null\n const patchBody = ts.isBlock(patchFn.body) ? patchFn.body : null\n if (!patchBody) return null\n\n const rootParam = patchFn.parameters[0]\n const bindParam = patchFn.parameters[1]\n if (!rootParam || !bindParam) return null\n const rootName = ts.isIdentifier(rootParam.name) ? rootParam.name.text : null\n const bindName = ts.isIdentifier(bindParam.name) ? bindParam.name.text : null\n if (!rootName || !bindName) return null\n\n // Extract bindings from patch function\n interface RowBinding {\n nodeInitializer: ts.Expression // the node path expression (e.g., root.firstChild)\n kind: string\n key: string | undefined\n accessor: ts.Expression\n }\n const bindings: RowBinding[] = []\n const nodeVarInitializers = new Map<string, ts.Expression>()\n\n for (const stmt of patchBody.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.initializer) {\n nodeVarInitializers.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n if (ts.isExpressionStatement(stmt) && ts.isCallExpression(stmt.expression)) {\n const call = stmt.expression\n if (\n ts.isIdentifier(call.expression) &&\n call.expression.text === bindName &&\n call.arguments.length >= 5\n ) {\n const nodeArg = call.arguments[0]!\n const maskArg = call.arguments[1]!\n const kindArg = call.arguments[2]!\n const keyArg = call.arguments[3]!\n const accessorArg = call.arguments[4]!\n\n // Must be per-item (mask -1)\n if (ts.isPrefixUnaryExpression(maskArg) && maskArg.operator === ts.SyntaxKind.MinusToken) {\n // -1 → per-item ✓\n } else if (ts.isBinaryExpression(maskArg)) {\n // -1 | 0 or 4294967295 | 0 → per-item ✓\n } else {\n return null // state-level binding — bail\n }\n\n const kind = ts.isStringLiteral(kindArg) ? kindArg.text : ''\n const key = ts.isStringLiteral(keyArg) ? keyArg.text : undefined\n\n // Resolve node path — recursively expand variable references to get\n // the full path from root, then create fresh factory nodes\n function resolveNodePath(expr: ts.Expression): ts.Expression {\n if (ts.isIdentifier(expr)) {\n if (expr.text === rootName) return f.createIdentifier(rootName)\n const init = nodeVarInitializers.get(expr.text)\n if (init) return resolveNodePath(init)\n return f.createIdentifier(expr.text)\n }\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n resolveNodePath(expr.expression),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n resolveNodePath(expr.expression),\n expr.argumentExpression,\n )\n }\n return expr\n }\n const nodeInit = resolveNodePath(nodeArg)\n\n // Clone accessor to strip source position — prevents mixed-position errors\n const clonedAccessor = ts.isIdentifier(accessorArg)\n ? f.createIdentifier(accessorArg.text)\n : accessorArg\n bindings.push({ nodeInitializer: nodeInit, kind, key, accessor: clonedAccessor })\n }\n }\n }\n\n if (bindings.length === 0) return null\n\n // Build map of __a{N} → __s{N} for rewriting accessor references.\n // After dedup, `__a{N} = acc(__s{N})`. In the row factory, __a{N} declarations\n // are eliminated, so all references must be rewritten to __s{N}.\n const accToSelector = new Map<string, string>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.name.text.startsWith('__a')) continue\n if (!decl.initializer || !ts.isCallExpression(decl.initializer)) continue\n const callArg0 = decl.initializer.arguments[0]\n if (callArg0 && ts.isIdentifier(callArg0) && callArg0.text.startsWith('__s')) {\n accToSelector.set(decl.name.text, callArg0.text)\n }\n }\n }\n\n // Rewrite binding accessors: __a{N} → __s{N}\n for (const b of bindings) {\n if (ts.isIdentifier(b.accessor) && accToSelector.has(b.accessor.text)) {\n b.accessor = f.createIdentifier(accToSelector.get(b.accessor.text)!)\n }\n }\n\n // Collect __s{N} selector definitions — needed by __rowUpd and render init.\n // These are currently scoped to the render body; we'll hoist them into the\n // __rowUpd IIFE so they're accessible.\n const selectorDefs = new Map<string, ts.Expression>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text.startsWith('__s') && decl.initializer) {\n selectorDefs.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n // === Generate the row factory ===\n\n // 1. __tpl: IIFE that creates + caches the template element\n const tplInit = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createElement',\n ),\n undefined,\n [f.createStringLiteral('template')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('t'), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(f.createIdentifier('t')),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n // 2. __rowUpd: (e) => { const t = e.current; for each binding: check + write }\n const updStmts: ts.Statement[] = []\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const vId = f.createIdentifier(`v${i}`)\n const cachedProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n const nodeProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n\n // const v{i} = accessor(t)\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n vId,\n undefined,\n undefined,\n f.createCallExpression(b.accessor, undefined, [f.createIdentifier('t')]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // DOM write expression\n const domWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n\n // if (v{i} !== e['_v{i}']) { e['_v{i}'] = v{i}; DOM_WRITE }\n updStmts.push(\n f.createIfStatement(\n f.createBinaryExpression(vId, ts.SyntaxKind.ExclamationEqualsEqualsToken, cachedProp),\n f.createBlock(\n [\n f.createExpressionStatement(\n f.createBinaryExpression(cachedProp, ts.SyntaxKind.EqualsToken, vId),\n ),\n f.createExpressionStatement(domWrite),\n ],\n true,\n ),\n ),\n )\n }\n\n // Wrap __rowUpd in IIFE that declares selectors (they're scoped to the\n // render body but __rowUpd lives on the options object outside render).\n const rawUpdFn = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 'e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(updStmts, true),\n )\n\n // Build: (() => { const __s0 = ...; const __s1 = ...; return (e) => { ... } })()\n const selectorDecls: ts.Statement[] = []\n for (const [name, init] of selectorDefs) {\n selectorDecls.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n selectorDecls.push(f.createReturnStatement(rawUpdFn))\n\n const rowUpdFn = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(selectorDecls, true),\n ),\n ),\n undefined,\n [],\n )\n\n // 3. New render callback: ({ entry: e, __tpl, __rowUpd }) => { ... }\n const renderStmts: ts.Statement[] = []\n\n // Declare selectors at the top of render body (they're used for initial values)\n for (const [name, init] of selectorDefs) {\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // const r = __tpl.content.firstElementChild.cloneNode(true)\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'r',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__tpl'), 'content'),\n 'firstElementChild',\n ),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // For each binding: store node ref, compute initial, apply\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const nProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n const vProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n\n // Rewrite node path: replace root param name with 'r'\n const rewrittenPath = rewriteRoot(b.nodeInitializer, rootName, 'r', f)\n\n // e['_n{i}'] = rewrittenPath\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(nProp, ts.SyntaxKind.EqualsToken, rewrittenPath),\n ),\n )\n\n // e['_v{i}'] = accessor(e.current)\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n vProp,\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(b.accessor, undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ]),\n ),\n ),\n )\n\n // DOM write: e['_n{i}'].nodeValue = e['_v{i}']\n const initWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n renderStmts.push(f.createExpressionStatement(initWrite))\n }\n\n // e.__rowUpdate = __rowUpd\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('e'), '__rowUpdate'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('__rowUpd'),\n ),\n ),\n )\n\n // Rewrite a statement: replace __a{N}() → __s{N}(e.current),\n // replace template var → r, strip positions via deep clone.\n function rewriteStmt(stmt: ts.Statement): ts.Statement {\n function visit(node: ts.Node): ts.Node {\n // Rewrite __a{N}() → __s{N}(e.current)\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n accToSelector.has(node.expression.text) &&\n node.arguments.length === 0\n ) {\n const selectorName = accToSelector.get(node.expression.text)!\n return f.createCallExpression(f.createIdentifier(selectorName), undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ])\n }\n // Rewrite template variable → r\n if (ts.isIdentifier(node) && templateVarName && node.text === templateVarName) {\n return f.createIdentifier('r')\n }\n // Clone identifiers to strip positions\n if (ts.isIdentifier(node)) {\n return f.createIdentifier(node.text)\n }\n return ts.visitEachChild(node, visit, undefined!)\n }\n return ts.visitEachChild(stmt, visit, undefined!) as ts.Statement\n }\n\n // Preserve non-template, non-compiler-generated, non-return statements.\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt)) continue\n\n if (ts.isVariableStatement(stmt)) {\n // Skip template declaration\n const isTemplate = stmt.declarationList.declarations.some(\n (d) => ts.isIdentifier(d.name) && d.name.text === templateVarName,\n )\n if (isTemplate) continue\n // Skip __a{N} and __s{N} declarations (compiler-generated acc/selector)\n const isCompilerOnly = stmt.declarationList.declarations.every(\n (d) =>\n ts.isIdentifier(d.name) &&\n (d.name.text.startsWith('__a') || d.name.text.startsWith('__s')),\n )\n if (isCompilerOnly) continue\n }\n\n // Rewrite and include\n renderStmts.push(rewriteStmt(stmt))\n }\n\n // return [r]\n renderStmts.push(\n f.createReturnStatement(f.createArrayLiteralExpression([f.createIdentifier('r')])),\n )\n\n const newRenderFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(\n undefined,\n undefined,\n f.createObjectBindingPattern([\n f.createBindingElement(undefined, 'entry', 'e'),\n f.createBindingElement(undefined, undefined, '__tpl'),\n f.createBindingElement(undefined, undefined, '__rowUpd'),\n ]),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(renderStmts, true),\n )\n\n // 4. Build new each options. To avoid mixed-position AST issues, we keep\n // original properties unchanged and only ADD __tpl, __rowUpd, and replace render.\n // The trick: return the original node structure but with the render property\n // swapped. Use ts.factory.updateObjectLiteralExpression which preserves positions.\n const updatedProps = arg.properties.map(\n (p): ts.ObjectLiteralElementLike =>\n p === renderProp ? f.createPropertyAssignment('render', newRenderFn) : p,\n )\n updatedProps.push(f.createPropertyAssignment('__tpl', tplInit))\n updatedProps.push(f.createPropertyAssignment('__rowUpd', rowUpdFn))\n\n const newOpts = f.updateObjectLiteralExpression(arg, updatedProps)\n\n return f.updateCallExpression(eachCall, eachCall.expression, eachCall.typeArguments, [\n newOpts,\n ...eachCall.arguments.slice(1),\n ])\n}\n\nfunction _containsSelectorBind(node: ts.Node): boolean {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === 'bind'\n ) {\n return true\n }\n return ts.forEachChild(node, _containsSelectorBind) ?? false\n}\n\nfunction containsStructuralCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (['each', 'branch', 'show', 'child', 'foreign'].includes(node.expression.text)) return true\n }\n return ts.forEachChild(node, containsStructuralCall) ?? false\n}\n\n/** Rewrite property access chains replacing oldRoot identifier with newRoot */\nfunction rewriteRoot(\n expr: ts.Expression,\n oldRoot: string,\n newRoot: string,\n f: ts.NodeFactory,\n): ts.Expression {\n if (ts.isIdentifier(expr) && expr.text === oldRoot) return f.createIdentifier(newRoot)\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.argumentExpression,\n )\n }\n return expr\n}\n\n/** Parse a statement string into a fresh AST node (no source positions) */\nfunction _parseStmt(code: string): ts.Statement | null {\n const sf = ts.createSourceFile('__gen.ts', code, ts.ScriptTarget.Latest, false)\n return (sf.statements[0] as ts.Statement | undefined) ?? null\n}\n\n/**\n * Compute the OR of all structural block masks found in the view function.\n * Returns FULL_MASK if any structural block uses FULL_MASK or if no blocks found.\n */\nfunction computeStructuralMask(\n configArg: ts.ObjectLiteralExpression,\n fieldBits: Map<string, number>,\n): number {\n const viewProp = configArg.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === 'view',\n )\n if (!viewProp || !ts.isPropertyAssignment(viewProp)) return 0xffffffff | 0\n\n let mask = 0\n let foundStructural = false\n\n function walk(node: ts.Node): void {\n if (ts.isCallExpression(node)) {\n const name = ts.isIdentifier(node.expression) ? node.expression.text : ''\n if (['each', 'branch', 'show'].includes(name) && node.arguments[0]) {\n foundStructural = true\n const opts = node.arguments[0]\n if (ts.isObjectLiteralExpression(opts)) {\n // Check for __mask property (already injected by tryInjectStructuralMask)\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n if (ts.isNumericLiteral(prop.initializer)) {\n mask |= parseInt(prop.initializer.text, 10)\n return\n }\n if (ts.isPrefixUnaryExpression(prop.initializer)) {\n // Handle negative literals like -1\n mask = 0xffffffff | 0\n return\n }\n }\n }\n // No __mask found — use driving accessor mask\n const driverProp = name === 'each' ? 'items' : name === 'branch' ? 'on' : 'when'\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (\n ts.isArrowFunction(prop.initializer) ||\n ts.isFunctionExpression(prop.initializer)\n ) {\n const { mask: m } = computeAccessorMask(prop.initializer, fieldBits)\n mask |= m || 0xffffffff | 0\n }\n break\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(viewProp.initializer)\n return foundStructural ? mask || 0xffffffff | 0 : 0\n}\n\n/**\n * Compute the OR of all component-level binding masks from text() calls\n * and element bindings in the view. Returns 0 if no component-level bindings.\n */\nfunction computePhase2Mask(\n _configArg: ts.ObjectLiteralExpression,\n _fieldBits: Map<string, number>,\n): number {\n // For now, return FULL_MASK — a future pass can analyze all binding sites\n // in the view to compute the precise aggregate. The key optimization is\n // already in Phase 1 gating: when structuralMask doesn't intersect dirty,\n // the entire reconciliation is skipped.\n return 0xffffffff | 0\n}\n\n/**\n * Build the __update function body:\n * {\n * // Phase 1 — structural reconciliation (gated by structuralMask)\n * if (d & structuralMask) {\n * for (let i = 0; i < bl.length; i++) {\n * const bk = bl[i]\n * if (!bk || (bk.mask & d) === 0) continue\n * bk.reconcile(s, d)\n * }\n * // Compact dead bindings\n * if (b.length > p || (p > 0 && b[0].dead)) {\n * let w = 0\n * for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n * b.length = w\n * p = Math.min(w, p)\n * }\n * }\n * // Phase 2 — binding updates\n * if (d !== 0) {\n * for (let i = 0; i < p; i++) {\n * const bn = b[i]\n * if (bn.dead || (bn.mask & d) === 0) continue\n * const v = bn.accessor(s)\n * const l = bn.lastValue\n * if (v === l || (v !== v && l !== l)) continue\n * bn.lastValue = v\n * __runPhase2(s, d, b, p)\n * }\n * }\n * }\n */\nfunction buildUpdateBody(f: ts.NodeFactory, structuralMask: number, _phase2Mask: number): ts.Block {\n const stmts: ts.Statement[] = []\n\n // Phase 1: structural block reconciliation, gated by aggregate mask\n if (structuralMask !== 0) {\n const phase1Stmts: ts.Statement[] = []\n\n // for (let i = 0; i < bl.length; i++) {\n // const bk = bl[i];\n // if (!bk || (bk.mask & d) === 0) continue;\n // bk.reconcile(s, d)\n // }\n // Re-read bl.length each iteration and null-check bk — a branch's\n // reconcile may dispose the old scope, whose disposers splice child\n // structural blocks out of this shared array mid-iteration.\n const blockLoop = f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bk',\n undefined,\n undefined,\n f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createIdentifier('bk'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'mask'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('d'),\n ),\n ),\n ts.SyntaxKind.EqualsEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n ),\n f.createContinueStatement(),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'reconcile'),\n undefined,\n [f.createIdentifier('s'), f.createIdentifier('d')],\n ),\n ),\n ],\n true,\n ),\n )\n phase1Stmts.push(blockLoop)\n\n // Compaction: if (b.length > p || (p > 0 && b[0].dead)) { ... }\n const compactBody = f.createBlock(\n [\n // let w = 0\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('w', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n ),\n // for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('r', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('r'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('r'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n 'dead',\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createPostfixUnaryExpression(\n f.createIdentifier('w'),\n ts.SyntaxKind.PlusPlusToken,\n ),\n ),\n ts.SyntaxKind.EqualsToken,\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n // b.length = w\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('w'),\n ),\n ),\n // p = Math.min(w, p)\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Math'), 'min'),\n undefined,\n [f.createIdentifier('w'), f.createIdentifier('p')],\n ),\n ),\n ),\n ],\n true,\n )\n\n const compactCondition = f.createBinaryExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.GreaterThanToken,\n f.createIdentifier('p'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.GreaterThanToken,\n f.createNumericLiteral(0),\n ),\n ts.SyntaxKind.AmpersandAmpersandToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(f.createIdentifier('b'), f.createNumericLiteral(0)),\n 'dead',\n ),\n ),\n ),\n )\n phase1Stmts.push(f.createIfStatement(compactCondition, compactBody))\n\n // Wrap Phase 1 in mask gate\n if (structuralMask !== (0xffffffff | 0)) {\n stmts.push(\n f.createIfStatement(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createIdentifier('d'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, structuralMask),\n ),\n ),\n ts.SyntaxKind.ExclamationEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n f.createBlock(phase1Stmts, true),\n ),\n )\n } else {\n stmts.push(...phase1Stmts)\n }\n }\n\n // Phase 2: delegate to shared runtime — __runPhase2(s, d, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n f.createIdentifier('d'),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n\n return f.createBlock(stmts, true)\n}\n\nfunction buildAccess(f: ts.NodeFactory, root: string, parts: string[]): ts.Expression {\n let expr: ts.Expression = f.createIdentifier(root)\n for (const part of parts) {\n // Use optional chaining for nested paths\n if (parts.length > 1) {\n expr = f.createPropertyAccessChain(expr, f.createToken(ts.SyntaxKind.QuestionDotToken), part)\n } else {\n expr = f.createPropertyAccessExpression(expr, part)\n }\n }\n return expr\n}\n\n// ── Pass 3: Import cleanup ───────────────────────────────────────\n\nfunction cleanupImports(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n _helpers: Map<string, string>,\n compiled: Set<string>,\n usesElSplit: boolean,\n usesElTemplate: boolean,\n usesMemo: boolean,\n usesApplyBinding: boolean,\n f: ts.NodeFactory,\n): ts.SourceFile {\n if (compiled.size === 0 && !usesElTemplate && !usesElSplit && !usesMemo && !usesApplyBinding)\n return sf\n\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return sf\n\n const remaining = clause.namedBindings.elements.filter((spec) => !compiled.has(spec.name.text))\n\n const hasElSplit = clause.namedBindings.elements.some((s) => s.name.text === 'elSplit')\n if (!hasElSplit && usesElSplit) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elSplit')))\n }\n\n const hasElTemplate = clause.namedBindings.elements.some((s) => s.name.text === 'elTemplate')\n if (!hasElTemplate && usesElTemplate) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elTemplate')))\n }\n\n const hasMemo = clause.namedBindings.elements.some((s) => s.name.text === 'memo')\n if (!hasMemo && usesMemo) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('memo')))\n }\n\n if (usesApplyBinding) {\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__runPhase2')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__runPhase2')))\n }\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__handleMsg')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__handleMsg')))\n }\n }\n\n const newBindings = f.createNamedImports(remaining)\n const newClause = f.createImportClause(false, undefined, newBindings)\n const newImportDecl = f.createImportDeclaration(undefined, newClause, lluiImport.moduleSpecifier)\n\n let replaced = false\n const statements = sf.statements.map((stmt) => {\n if (\n !replaced &&\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom' &&\n !stmt.importClause?.isTypeOnly\n ) {\n replaced = true\n return newImportDecl\n }\n return stmt\n })\n\n return f.updateSourceFile(sf, statements as unknown as ts.Statement[])\n}\n\n// ── __msgSchema injection ────────────────────────────────────────\n\nfunction injectStateSchema(\n node: ts.CallExpression,\n fields: Record<string, StateType>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__stateSchema'\n ) {\n return node\n }\n }\n\n const schemaProp = f.createPropertyAssignment(\n '__stateSchema',\n stateTypeToLiteral({ kind: 'object', fields }, f),\n )\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction stateTypeToLiteral(t: StateType, f: ts.NodeFactory): ts.Expression {\n if (typeof t === 'string') return f.createStringLiteral(t)\n if (t.kind === 'enum') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('enum')),\n f.createPropertyAssignment(\n 'values',\n f.createArrayLiteralExpression(t.values.map((v) => f.createStringLiteral(v))),\n ),\n ])\n }\n if (t.kind === 'array') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'optional') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('optional')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'union') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('union')),\n f.createPropertyAssignment(\n 'of',\n f.createArrayLiteralExpression(t.of.map((m) => stateTypeToLiteral(m, f))),\n ),\n ])\n }\n // object\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(t.fields)) {\n fieldProps.push(f.createPropertyAssignment(k, stateTypeToLiteral(v, f)))\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('fields', f.createObjectLiteralExpression(fieldProps, true)),\n ])\n}\n\nfunction injectComponentMeta(\n nodeWithMaybeEdits: ts.CallExpression,\n originalNode: ts.CallExpression,\n sourceFile: ts.SourceFile,\n filename: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = nodeWithMaybeEdits.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return nodeWithMaybeEdits\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__componentMeta'\n ) {\n return nodeWithMaybeEdits\n }\n }\n\n // Line number from the original (real-position) node\n const pos = originalNode.pos >= 0 ? originalNode.getStart(sourceFile) : 0\n const { line } = sourceFile.getLineAndCharacterOfPosition(pos)\n\n const meta = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('file', f.createStringLiteral(filename)),\n f.createPropertyAssignment('line', f.createNumericLiteral(line + 1)),\n ],\n false,\n )\n\n const metaProp = f.createPropertyAssignment('__componentMeta', meta)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, metaProp], true)\n\n return f.createCallExpression(nodeWithMaybeEdits.expression, nodeWithMaybeEdits.typeArguments, [\n newConfig,\n ...nodeWithMaybeEdits.arguments.slice(1),\n ])\n}\n\nfunction injectMsgSchema(\n node: ts.CallExpression,\n schema: {\n discriminant: string\n variants: Record<string, Record<string, string | { enum: string[] }>>\n },\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgSchema'\n ) {\n return node\n }\n }\n\n // Build the schema object literal\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, type] of Object.entries(fields)) {\n if (typeof type === 'string') {\n fieldProps.push(f.createPropertyAssignment(field, f.createStringLiteral(type)))\n } else {\n fieldProps.push(\n f.createPropertyAssignment(\n field,\n f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(type.enum.map((v) => f.createStringLiteral(v))),\n ),\n ]),\n ),\n )\n }\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__msgSchema', schemaObj)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectEffectSchema(\n node: ts.CallExpression,\n schema: {\n discriminant: string\n variants: Record<string, Record<string, string | { enum: string[] }>>\n },\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__effectSchema'\n ) {\n return node\n }\n }\n\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, type] of Object.entries(fields)) {\n if (typeof type === 'string') {\n fieldProps.push(f.createPropertyAssignment(field, f.createStringLiteral(type)))\n } else {\n fieldProps.push(\n f.createPropertyAssignment(\n field,\n f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(type.enum.map((v) => f.createStringLiteral(v))),\n ),\n ]),\n ),\n )\n }\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__effectSchema', schemaObj)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n// ── Per-item accessor detection ──────────────────────────────────\n\n// ── Item selector deduplication ──────────────────────────────────\n\n/**\n * In each() render callbacks, deduplicate repeated item(selector) calls.\n *\n * Before: item((r) => r.id) appears 4 times → 4 selector closures + 4 accessor closures\n * After: const __s0 = (r) => r.id; const __a0 = item(__s0); → 1 selector + 1 accessor\n */\nfunction tryDeduplicateItemSelectors(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n printer: ts.Printer,\n sourceFile: ts.SourceFile,\n): ts.CallExpression | null {\n // each() takes a single object literal argument\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find the render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n\n // Get the item parameter name from the options bag: ({ item, ... }) => ...\n const renderParam = renderFn.parameters[0]\n if (!renderParam) return null\n\n let itemName: string | null = null\n if (ts.isIdentifier(renderParam.name)) {\n // Old style: (item) => ... or (item, index) => ...\n itemName = renderParam.name.text\n } else if (ts.isObjectBindingPattern(renderParam.name)) {\n // New style: ({ item, send, ... }) => ...\n for (const el of renderParam.name.elements) {\n if (ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'item') {\n itemName = 'item'\n break\n }\n }\n }\n if (!itemName) return null\n\n // Collect all item(selector) calls AND item.FIELD property-access expressions.\n // Both forms produce the same accessor; they dedup together via the field-name key.\n type Occurrence =\n | { kind: 'call'; node: ts.CallExpression; selector: ts.Expression; key: string }\n | { kind: 'access'; node: ts.PropertyAccessExpression; field: string; key: string }\n\n const occurrences: Occurrence[] = []\n\n // Try to extract a simple field name from an arrow selector: (t) => t.FIELD → \"FIELD\"\n function extractSimpleField(sel: ts.ArrowFunction | ts.FunctionExpression): string | null {\n if (sel.parameters.length !== 1) return null\n const paramName = sel.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return null\n const body = ts.isArrowFunction(sel) ? sel.body : null\n if (!body) return null\n const expr = ts.isBlock(body) ? null : body\n if (!expr || !ts.isPropertyAccessExpression(expr)) return null\n if (!ts.isIdentifier(expr.expression) || expr.expression.text !== paramName.text) return null\n if (!ts.isIdentifier(expr.name)) return null\n return expr.name.text\n }\n\n function collectItemCalls(node: ts.Node): void {\n // item(selector) calls\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n node.arguments.length === 1\n ) {\n const sel = node.arguments[0]!\n if (ts.isArrowFunction(sel) || ts.isFunctionExpression(sel)) {\n const field = extractSimpleField(sel)\n const key =\n field !== null\n ? `field:${field}`\n : `expr:${printer.printNode(ts.EmitHint.Expression, sel, sourceFile)}`\n occurrences.push({ kind: 'call', node, selector: sel, key })\n }\n }\n // item.FIELD property access — but NOT when it's the callee of a call expression\n // where we want the original to stay (e.g. item.id() we still replace, because the\n // accessor itself becomes __a0 and we keep the trailing ()).\n else if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n ts.isIdentifier(node.name)\n ) {\n const field = node.name.text\n occurrences.push({ kind: 'access', node, field, key: `field:${field}` })\n }\n ts.forEachChild(node, collectItemCalls)\n }\n collectItemCalls(renderFn.body)\n\n if (occurrences.length < 2) return null // nothing to deduplicate\n\n // Group by normalized key (field:name or expr:text)\n const groups = new Map<string, Occurrence[]>()\n for (const occ of occurrences) {\n const existing = groups.get(occ.key)\n if (existing) existing.push(occ)\n else groups.set(occ.key, [occ])\n }\n\n // Hoist ALL occurrences (even unique ones) so compiled code uses `acc()` (plain\n // function) instead of `item(fn)` (Proxy-wrapped) or `item.FIELD` (Proxy.get trap).\n // Unique accesses get their own __a* var; duplicates share one.\n const allGroups = [...groups.entries()]\n if (allGroups.length === 0) return null\n\n // Build hoisted declarations and replacement map\n const hoistedStmts: ts.Statement[] = []\n const replacements = new Map<ts.Node, ts.Identifier>()\n let sIdx = 0\n\n for (const [key, occs] of allGroups) {\n const selVar = `__s${sIdx}`\n const accVar = `__a${sIdx}`\n sIdx++\n\n // Build the selector expression.\n // For field:FIELD, synthesize (t) => t.FIELD (or reuse an existing call's selector).\n // For expr:..., reuse the existing selector expression.\n let selector: ts.Expression\n const callOccurrence = occs.find((o) => o.kind === 'call')\n if (callOccurrence && callOccurrence.kind === 'call') {\n selector = callOccurrence.selector\n } else {\n // All occurrences are property-access form — synthesize (t) => t.FIELD\n const firstAccess = occs[0]!\n if (firstAccess.kind !== 'access') throw new Error('unreachable')\n selector = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 't')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createPropertyAccessExpression(f.createIdentifier('t'), firstAccess.field),\n )\n }\n\n // const __s0 = (r) => r.id\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(selVar, undefined, undefined, selector)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n // const __a0 = acc(__s0) — use the plain-function `acc` instead of `item` (which\n // is a Proxy). Adds `acc` to the destructure binding below if not already present.\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n accVar,\n undefined,\n undefined,\n f.createCallExpression(f.createIdentifier('acc'), undefined, [\n f.createIdentifier(selVar),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // Map all occurrences to the cached accessor identifier\n void key // silence unused\n for (const occ of occs) {\n replacements.set(occ.node, f.createIdentifier(accVar))\n }\n }\n\n // Rewrite the render function body to replace item(sel)/item.field with cached refs\n function replaceVisitor(node: ts.Node): ts.Node {\n if (replacements.has(node)) {\n return replacements.get(node)!\n }\n return ts.visitEachChild(node, replaceVisitor, undefined!)\n }\n\n const newBody = ts.visitNode(renderFn.body, replaceVisitor)!\n\n // Prepend hoisted declarations to the body\n let finalBody: ts.ConciseBody\n if (ts.isBlock(newBody)) {\n finalBody = f.createBlock([...hoistedStmts, ...(newBody as ts.Block).statements], true)\n } else {\n // Arrow with expression body → convert to block with return\n finalBody = f.createBlock(\n [...hoistedStmts, f.createReturnStatement(newBody as ts.Expression)],\n true,\n )\n }\n\n // Ensure `acc` is in the destructure binding pattern of the render param.\n // Hoisted code references it; if user didn't destructure it, add it.\n const newParameters = renderFn.parameters.map((p, idx) => {\n if (idx !== 0) return p\n if (!ts.isObjectBindingPattern(p.name)) return p\n const hasAcc = p.name.elements.some(\n (el) => ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'acc',\n )\n if (hasAcc) return p\n const newBinding = f.createObjectBindingPattern([\n ...p.name.elements,\n f.createBindingElement(undefined, undefined, f.createIdentifier('acc')),\n ])\n return f.createParameterDeclaration(\n p.modifiers,\n p.dotDotDotToken,\n newBinding,\n p.questionToken,\n p.type,\n p.initializer,\n )\n })\n\n // Build new render function\n const newRenderFn = ts.isArrowFunction(renderFn)\n ? f.createArrowFunction(\n renderFn.modifiers,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n finalBody,\n )\n : f.createFunctionExpression(\n renderFn.modifiers,\n renderFn.asteriskToken,\n renderFn.name,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n finalBody as ts.Block,\n )\n\n // Rebuild the each() call with the new render property\n const newProps = arg.properties.map((prop) =>\n prop === renderProp ? f.createPropertyAssignment('render', newRenderFn) : prop,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Auto-memoize each() items accessor ──────────────────────────\n\nconst ALLOCATING_METHODS = new Set([\n 'filter',\n 'map',\n 'slice',\n 'sort',\n 'reverse',\n 'concat',\n 'flat',\n 'flatMap',\n 'reduce',\n])\n\n/**\n * Detect whether an expression body contains array-allocating operations\n * that would produce a new array on every call.\n */\nfunction accessorAllocatesArray(body: ts.ConciseBody | ts.Expression): boolean {\n let found = false\n function walk(n: ts.Node): void {\n if (found) return\n // .method() on something — check the method name\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.name) &&\n ALLOCATING_METHODS.has(n.expression.name.text)\n ) {\n found = true\n return\n }\n // Spread in array literal: [...x, y]\n if (ts.isArrayLiteralExpression(n) && n.elements.some((el) => ts.isSpreadElement(el))) {\n found = true\n return\n }\n // Array.from(...)\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.expression) &&\n n.expression.expression.text === 'Array' &&\n ts.isIdentifier(n.expression.name) &&\n n.expression.name.text === 'from'\n ) {\n found = true\n return\n }\n ts.forEachChild(n, walk)\n }\n walk(body)\n return found\n}\n\n/**\n * Wrap `each({ items: (s) => s.x.filter(...) })` in `memo()` with a bitmask,\n * so the filter is only re-run when its dependencies change. For items accessors\n * that don't allocate (e.g. `(s) => s.items`), each's built-in same-ref fast\n * path already suffices — no wrap needed.\n *\n * Returns null if no wrapping was applied.\n */\nfunction tryWrapEachItemsWithMemo(\n eachCall: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n let itemsProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'items') {\n itemsProp = prop\n break\n }\n }\n if (!itemsProp) return null\n\n const accessor = itemsProp.initializer\n if (!ts.isArrowFunction(accessor) && !ts.isFunctionExpression(accessor)) return null\n\n // Don't wrap if it's already wrapped (call expression like memo(...) or similar)\n // We only wrap raw arrow functions.\n\n // Skip if the body doesn't allocate — each's own ref check handles those.\n const body = ts.isArrowFunction(accessor) ? accessor.body : accessor.body\n if (!accessorAllocatesArray(body)) return null\n\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n if (mask === 0 && !readsState) return null // constant, nothing to memoize\n const finalMask = mask === 0 && readsState ? 0xffffffff | 0 : mask\n\n // Wrap: memo(accessor, mask)\n const wrapped = f.createCallExpression(f.createIdentifier('memo'), undefined, [\n accessor,\n createMaskLiteral(f, finalMask),\n ])\n\n const newProps = arg.properties.map((p) =>\n p === itemsProp ? f.createPropertyAssignment('items', wrapped) : p,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Subtree collapse: nested elements → elTemplate ──────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, kind, key, accessor] */\n bindings: Array<[number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | { type: 'reactiveText'; accessor: ts.Expression; mask: number; childIdx: number }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, readsState } = computeAccessorMask(value, fieldBits)\n if (mask === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n bindings.push([mask === 0 && readsState ? 0xffffffff | 0 : mask, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && readsState ? 0xffffffff | 0 : mask,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(child, helpers, fieldBits, [...path, childIdx])\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += ` ${key}=\"${escapeAttr(value)}\"`\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind */\n bindings: Array<[number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{ accessor: ts.Expression; mask: number; childIdx: number }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createTextNode',\n ),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor)\n for (const [mask, kind, key, accessor] of op.bindings) {\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += ` class=\"${escapeAttr(expr.right.text)}\"`\n }\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += ` ${key.text}=\"${escapeAttr(val.text)}\"`\n } else {\n return null // non-literal attribute\n }\n }\n }\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&').replace(/\"/g, '"')\n}\n\nlet templateCounter = 0\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n const varName = `__tmpl${templateCounter++}`\n // Emit: (() => { const t = document.createElement('template'); t.innerHTML = 'html'; return t.content.cloneNode(true).firstChild })()\n // Simplified: we use an IIFE that creates and caches a template\n // Actually, for simplicity, just emit the cloneNode inline\n const tmplCreate = f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('document'), 'createElement'),\n undefined,\n [f.createStringLiteral('template')],\n )\n const iife = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(varName, undefined, undefined, tmplCreate)],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier(varName), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(\n f.createPropertyAccessExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(varName), 'content'),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n 'firstChild',\n ),\n ),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n return iife\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Scope-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\nfunction computeAccessorMask(\n accessor: ts.ArrowFunction | ts.FunctionExpression,\n fieldBits: Map<string, number>,\n): { mask: number; readsState: boolean } {\n if (accessor.parameters.length === 0) return { mask: 0xffffffff | 0, readsState: false }\n\n const paramName = accessor.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return { mask: 0xffffffff | 0, readsState: false }\n\n const stateParam = paramName.text\n let mask = 0\n let readsState = false\n\n function walk(node: ts.Node): void {\n if (ts.isIdentifier(node) && node.text === stateParam && !ts.isParameter(node.parent)) {\n readsState = true\n }\n if (ts.isPropertyAccessExpression(node)) {\n if (!ts.isPropertyAccessExpression(node.parent)) {\n const chain = resolveChain(node, stateParam)\n if (chain) {\n const bit = fieldBits.get(chain)\n if (bit !== undefined) {\n mask |= bit\n } else {\n for (const [path, b] of fieldBits) {\n if (path.startsWith(chain + '.') || path === chain) {\n mask |= b\n }\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(accessor.body)\n\n if (mask === 0 && readsState) {\n return { mask: 0xffffffff | 0, readsState: true }\n }\n return { mask, readsState }\n}\n\nfunction resolveChain(node: ts.PropertyAccessExpression, paramName: string): string | null {\n const parts: string[] = []\n let current: ts.Expression = node\n\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.text)\n current = current.expression\n }\n\n if (!ts.isIdentifier(current) || current.text !== paramName) return null\n if (parts.length > 2) return parts.slice(0, 2).join('.')\n return parts.join('.')\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAkB,MAAM,mBAAmB,CAAA;AAEtE,SAAS,iBAAiB,CAAC,CAAiB,EAAE,IAAY;IACxD,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAClD,2DAA2D;IAC3D,OAAO,CAAC,CAAC,sBAAsB,CAC7B,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAClC,EAAE,CAAC,UAAU,CAAC,QAAQ,EACtB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC1B,CAAA;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,GAAG;IACH,MAAM;IACN,SAAS;IACT,OAAO;IACP,GAAG;IACH,YAAY;IACZ,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,SAAS;IACT,QAAQ;IACR,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,GAAG;IACH,QAAQ;IACR,KAAK;IACL,OAAO;IACP,OAAO;IACP,QAAQ;IACR,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,GAAG;IACH,KAAK;IACL,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,MAAM;IACN,QAAQ;IACR,KAAK;IACL,SAAS;IACT,KAAK;IACL,OAAO;IACP,OAAO;IACP,IAAI;IACJ,UAAU;IACV,OAAO;IACP,IAAI;IACJ,OAAO;IACP,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,OAAO;CACR,CAAC,CAAA;AAEF,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,OAAO;IACP,SAAS;IACT,UAAU;IACV,UAAU;IACV,UAAU;IACV,UAAU;IACV,eAAe;IACf,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,aAAa;CACd,CAAC,CAAA;AAIF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,4BAA4B,CAAC,GAAkB;IACtD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,IAAI,IAAI,GAAY,GAAG,CAAA;IACvB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,+EAA+E;QAC/E,IAAI,UAAU,GAAmC,IAAI,CAAA;QACrD,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9E,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QAChC,CAAC;aAAM,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QAChC,CAAC;QACD,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBAC3C,4DAA4D;gBAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAA;gBACxC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAC3C,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAQ;gBAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAE,CAAA;gBAClD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI;oBAAE,SAAQ;gBACpE,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE,SAAQ;gBAC/B,OAAO,IAAI,CAAC,WAAW,CAAA;YACzB,CAAC;QACH,CAAC;QACD,IAAI,GAAG,MAAM,CAAA;IACf,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,OAAO,CAAA;IAC1D,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAA;IAC5C,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IACrC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAiB;IAChD,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IACpC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,GAAG,CAAA;IAC/B,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,GAAG,CAAA;AACZ,CAAC;AAYD,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,SAAiB,EACjB,OAAO,GAAG,KAAK,EACf,UAAyB,IAAI;IAE7B,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAExF,4BAA4B;IAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,UAAU,GAAG,GAAG,CAAA;IAEtB,2DAA2D;IAC3D,MAAM,eAAe,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;IACtD,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAEhF,kDAAkD;IAClD,0EAA0E;IAC1E,yEAAyE;IACzE,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAkB,CAAA;IAEpF,kFAAkF;IAClF,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,eAAe,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IACtE,yFAAyF;IACzF,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,UAAU,EAAE,UAAU,EAAE,eAAe,CAAC,CAAA;IAE3F,kDAAkD;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IACvC,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAA;IACpB,MAAM,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtE,mEAAmE;IACnE,MAAM,KAAK,GAAoB,EAAE,CAAA;IAEjC,SAAS,OAAO,CAAC,IAAa;QAC5B,oEAAoE;QACpE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE3C,kFAAkF;QAClF,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EACzE,CAAC;YACD,IAAI,OAAO,GAAsB,IAAI,CAAA;YACrC,IAAI,OAAO,GAAG,KAAK,CAAA;YACnB,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YACnE,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,GAAG,WAAW,CAAA;gBACrB,OAAO,GAAG,IAAI,CAAA;gBACd,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC;YACD,MAAM,OAAO,GAAG,2BAA2B,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;YAC5E,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,GAAG,OAAO,CAAA;gBACjB,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,mCAAmC;YACnC,MAAM,MAAM,GAAG,uBAAuB,CACpC,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,CAAC,CACF,CAAA;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,GAAG,MAAM,CAAA;gBAChB,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;gBAC9D,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3E,kDAAkD;gBAClD,IAAI,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;wBAC/C,IAAI,EAAE;4BAAE,OAAO,EAAE,CAAA;oBACnB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,IAAI,GAAG,EAAE,CAAC,6BAA6B,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;wBAC5E,OAAO,CAAC,IAAI,CACV,gCAAgC,SAAS,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,MAAO,GAAa,CAAC,OAAO,EAAE,CACzF,CAAA;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,MAAM,CAAA;YACf,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,uBAAuB,CACzC,IAAI,EACJ,eAAe,EACf,SAAS,EACT,eAAe,EACf,aAAa,EACb,CAAC,CACF,CAAA;YACD,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5C,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY;wBAAE,cAAc,GAAG,IAAI,CAAA;yBAClE,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS;wBAAE,WAAW,GAAG,IAAI,CAAA;gBACxE,CAAC;gBACD,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3E,OAAO,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;YAC5D,CAAC;YAED,wCAAwC;YACxC,MAAM,eAAe,GAAG,iBAAiB,CACvC,IAAI,EACJ,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,CAAC,CACF,CAAA;YACD,IAAI,eAAe,EAAE,CAAC;gBACpB,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3E,OAAO,eAAe,CAAA;YACxB,CAAC;YAED,uEAAuE;YACvE,MAAM,gBAAgB,GAAG,uBAAuB,CAC9C,IAAI,EACJ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,CAAC,CACF,CAAA;YACD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3E,OAAO,EAAE,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACnE,IAAI,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YAC/C,IAAI,MAAM;gBAAE,gBAAgB,GAAG,IAAI,CAAA;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBACvC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;gBACrD,CAAC;gBACD,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;gBAC9C,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,GAAG,iBAAiB,CAAC,MAAM,IAAI,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;gBACnE,CAAC;gBACD,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;gBAChD,IAAI,YAAY,EAAE,CAAC;oBACjB,MAAM,GAAG,kBAAkB,CAAC,MAAM,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;gBAC9D,CAAC;gBACD,MAAM,GAAG,mBAAmB,CAAC,MAAM,IAAI,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC3E,OAAO,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;IACrD,CAAC;IAED,IAAI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAkB,CAAA;IAEpE,iEAAiE;IACjE,sDAAsD;IACtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvF,WAAW,GAAG,cAAc,CAC1B,WAAW,EACX,UAAU,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,CAAC,CACF,CAAA;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnC,sCAAsC;IACtC,MAAM,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAEvF,kEAAkE;IAClE,wDAAwD;IACxD,sEAAsE;IACtE,MAAM,UAAU,GAAoB,EAAE,CAAA;IACtC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAA;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,CAAA;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QAEjD,IAAI,MAAc,CAAA;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,WAAW,CAAC,CAAA;QAC/E,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;YAC7E,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO;gBAC5C,CAAC,CAAC,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC;gBAC1C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;YAC3B,MAAM,MAAM,GACV,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC9F,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QACnF,CAAC;QAED,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,yEAAyE;YACzE,kCAAkC;YAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YACpD,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YAC1E,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,4CAA4C;IAC5C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;QAChE,IAAI,GAAG;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,GAAG,IAAI,EAAE,CAAC,CAAA;QACvE,IAAI,MAAM;YACR,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,MAAM,EAAE,CAAC,CAAA;IAC7F,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAExC,gEAAgE;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAA;IAChE,IAAI,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;AACtC,CAAC;AAED,oEAAoE;AAEpE,SAAS,eAAe,CACtB,UAA6D,EAC7D,OAAsB;IAEtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,GAAG,EAAE,EAAE;YACP,MAAM,EAAE,uDAAuD;SAChE,CAAA;IACH,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1E,MAAM,SAAS,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAEtE,MAAM,GAAG,GAAG;;6CAE+B,WAAW;;oBAEpC,SAAS;CAC5B,CAAC,IAAI,EAAE,CAAA;IAEN,MAAM,YAAY,GAAG,UAAU;SAC5B,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,6BAA6B,aAAa,MAAM,OAAO,GAAG,CAAC;SAC/F,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,kEAAkE;IAClE,kEAAkE;IAClE,oEAAoE;IACpE,mEAAmE;IACnE,yDAAyD;IACzD,MAAM,aAAa,GACjB,OAAO,KAAK,IAAI;QACd,CAAC,CAAC;;;;;KAKH;QACC,CAAC,CAAC,EAAE,CAAA;IAER,MAAM,MAAM,GAAG;;;EAGf,YAAY;MACR,aAAa;;CAElB,CAAC,IAAI,EAAE,CAAA;IAEN,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AACxB,CAAC;AAED,kFAAkF;AAClF,SAAS,yBAAyB,CAChC,EAAiB,EACjB,UAAgC;IAEhC,MAAM,MAAM,GAAsD,EAAE,CAAA;IAEpE,SAAS,KAAK,CAAC,IAAa;QAC1B,qDAAqD;QACrD,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,WAAW;YAChB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EAC7C,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC5C,IAAI,MAAM,IAAI,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;oBACrC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;wBACzB,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EACpC,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;oBAChE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,OAAO,MAAM,CAAA;AACf,CAAC;AAED,oEAAoE;AAEpE,SAAS,cAAc,CAAC,EAAiB;IACvC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QACjC,IACE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,WAAW,EACzC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAyB;IACnD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,CAAA;IAC/B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,GAAG,CAAA;IAE5F,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;QAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAiB;IAC7C,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,KAAK;YAAE,OAAM;QACjB,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC5E,KAAK,GAAG,IAAI,CAAA;YACd,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,eAAe,CAAC,EAAiB,EAAE,UAAgC;IAC1E,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,KAAK;YAAE,OAAM;QACjB,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACnE,KAAK,GAAG,IAAI,CAAA;YACZ,OAAM;QACR,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,EAAiB,EAAE,UAAgC;IACjF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,GAAG,IAAI,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBAClC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;wBACzB,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACnF,CAAC;wBACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;wBAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;4BACvB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;4BACxB,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gCAChC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;4BAC5B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,2EAA2E;QAC3E,qEAAqE;QACrE,IACE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI;YACT,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1B,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAc;IACzC,OAAO,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,CAAA;AAC/F,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,UAAU;IACV,KAAK;IACL,OAAO;IACP,MAAM;CACP,CAAC,CAAA;AAEF,SAAS,wBAAwB,CAC/B,EAAiB,EACjB,UAAgC,EAChC,WAAwB;IAExB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACzC,SAAS,qBAAqB,CAAC,OAAgC;QAC7D,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACpC,+CAA+C;YAC/C,gDAAgD;YAChD,MAAM,UAAU,GACd,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;gBACxB,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAChB,CAAC,CAAC,IAAI,CAAA;YACZ,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YACpE,IAAI,UAAU,IAAI,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,SAAS,KAAK,CAAC,IAAa;QAC1B,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,GAAG,IAAI,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBAClC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;wBACzB,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EACnF,CAAC;wBACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAA;wBAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;4BACvB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;4BACxB,IAAI,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gCAC1C,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;4BACnC,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,8EAA8E;QAC9E,kEAAkE;QAClE,IACE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,IAAI;YACT,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,CAAC;YACD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QACD,oEAAoE;QACpE,mEAAmE;QACnE,iBAAiB;QACjB,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,WAAW;YAChB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;YACjC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EACtC,CAAC;YACD,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClC,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC9B,CAAC;IACD,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB,EAAE,UAAgC;IAChF,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IACjC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IACtC,mCAAmC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,CAC9F,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CACrB,WAA2B,EAC3B,CAAiB,EACjB,IAAiB,EACjB,WAAmB,EACnB,KAAoB;IAEpB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EACxE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,KAAK,CACN,CACF,CACF,CAAA;YACD,MAAK;QACP,KAAK,MAAM;YACT,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,EACxE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,KAAK,CACN,CACF,CACF,CAAA;YACD,MAAK;QACP,KAAK,OAAO;YACV,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EACpE,aAAa,CACd,EACD,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAC5C,CACF,CACF,CAAA;YACD,MAAK;QACP,SAAS,OAAO;YACd,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAC3E,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAC5C,CACF,CACF,CAAA;IACL,CAAC;AACH,CAAC;AAED,oEAAoE;AAEpE,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,OAA4B,EAC5B,SAA8B,EAC9B,QAAqB,EACrB,MAAmB,EACnB,CAAiB;IAEjB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IACtC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC3C,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAA;IAE9B,iFAAiF;IACjF,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,wBAAwB,GAAG,QAAQ,IAAI,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAClF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAChE,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,qEAAqE;IACrE,wEAAwE;IACxE,wEAAwE;IACxE,8DAA8D;IAC9D,IACE,QAAQ;QACR,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC;QACtC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EACzD,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAA;IAE/C,iBAAiB;IACjB,MAAM,WAAW,GAAmB,EAAE,CAAA;IACtC,MAAM,MAAM,GAAgC,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAgC,EAAE,CAAA;IAEhD,IAAI,QAAQ,IAAI,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvC,uFAAuF;YACvF,IAAI,GAAW,CAAA;YACf,IAAI,KAAoB,CAAA;YAExB,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAQ;gBAC3E,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAClE,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;YAC1B,CAAC;iBAAM,IAAI,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBACpB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA,CAAC,qCAAqC;YACzD,CAAC;iBAAM,CAAC;gBACN,SAAQ;YACV,CAAC;YACD,IAAI,GAAG,KAAK,KAAK;gBAAE,SAAQ;YAE3B,gBAAgB;YAChB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;gBAC5C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;gBACtF,SAAQ;YACV,CAAC;YAED,mEAAmE;YACnE,mEAAmE;YACnE,qEAAqE;YACrE,iEAAiE;YACjE,yDAAyD;YACzD,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAA;gBACpD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACpF,KAAK,GAAG,QAAQ,CAAA;gBAClB,CAAC;YACH,CAAC;YAED,uEAAuE;YACvE,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAElE,4EAA4E;gBAC5E,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,cAAc,CACZ,WAAW,EACX,CAAC,EACD,IAAI,EACJ,WAAW,EACX,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAC7C,CAAA;oBACD,SAAQ;gBACV,CAAC;gBAED,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,4BAA4B,CAAC;oBAC7B,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;oBAC1B,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC3B,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;oBAClC,KAAK;iBACN,CAAC,CACH,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,0EAA0E;YAC1E,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,4EAA4E;oBAC5E,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;oBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;oBACzC,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,4BAA4B,CAAC;wBAC7B,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;wBACpC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;wBAC3B,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;wBAClC,KAAK;qBACN,CAAC,CACH,CAAA;oBACD,SAAQ;gBACV,CAAC;gBACD,qCAAqC;gBACrC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACrB,OAAO,IAAI,CAAA;YACb,CAAC;YAED,0EAA0E;YAC1E,uEAAuE;YACvE,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,4BAA4B,CAAC;oBAC7B,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC;oBACpC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;oBAC3B,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC;oBAClC,KAAK;iBACN,CAAC,CACH,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,cAAc;YACd,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;YAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACzC,cAAc,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GACZ,WAAW,CAAC,MAAM,GAAG,CAAC;QACpB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAC3D,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CACjC;QACH,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAEpB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAE7F,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;IAEjF,MAAM,QAAQ,GAAG,wBAAwB;QACvC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE;QACpB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAEzC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAEvB,gEAAgE;IAChE,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IAC7D,IAAI,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,6DAA6D;QAC7D,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACtC,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;QAChE,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,uEAAuE;IACvE,+CAA+C;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,GAAG,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;QACpE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAsB,CAAA;QACxD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE;QAC5E,GAAG;QACH,QAAQ;QACR,SAAS;QACT,WAAW;QACX,QAAQ;KACT,CAAC,CAAA;IACF,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,sBAAsB,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;IAC7F,OAAO,IAAI,CAAA;AACb,CAAC;AAED,oEAAoE;AAEpE;;;;;;;;;;GAUG;AACH,SAAS,YAAY,CACnB,IAAmB,EACnB,IAAY,EACZ,WAAwB,EACxB,OAA6B;IAE7B,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACnC,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC3D,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;QACnC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAChC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACrC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,EACvB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAuB,EACvB,UAAgC,EAChC,eAA4B,EAC5B,iBAAsC,EACtC,SAA8B,EAC9B,CAAiB;IAEjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,8EAA8E;IAC9E,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAA;QACtC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;YAAE,OAAO,IAAI,CAAA;QACnF,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI,KAAK,MAAM,CACjE,CAAA;QACD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACpF,wCAAwC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3C,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAEzD,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,QAAQ;QACR,iBAAiB,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACzD,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,eAA4B,EAC5B,iBAAsC,EACtC,SAA8B,EAC9B,CAAiB;IAEjB,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAErC,iEAAiE;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAA;IACxF,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAA;IAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAA;IACxF,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAEhD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnE,qBAAqB;IACrB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC3B,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,oDAAoD;IACpD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;IAC9D,IAAI,cAAc,GAAoD,IAAI,CAAA;IAC1E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAC7B,CAAC;YACD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtF,cAAc,GAAG,IAAI,CAAC,WAAW,CAAA;YACnC,CAAC;YACD,MAAK;QACP,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc;QAAE,OAAO,IAAI,CAAA;IAEhC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAmB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;IAC/D,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA,CAAC,aAAa;IAEtE,wCAAwC;IACxC,MAAM,QAAQ,GAAG,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IACjF,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,CAAC,CAAC,6BAA6B,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAC9F,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,OAAO;QACP,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,IAAuB,EACvB,SAA8B,EAC9B,CAAiB;IAEjB,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,kCAAkC;IAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,EAC5B,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,sEAAsE;IACtE,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;QACpC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IACrE,CAAC;IAED,MAAM,WAAW,GAAoB,EAAE,CAAA;IACvC,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAE5C,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,2BAA2B,CAC3B,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EACpE,SAAS,EACT,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,EACD,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAC1C,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACzB,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EACvC,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAC1B,CACF,CACF,CAAA;IACH,CAAC;IAED,IAAI,SAAS,GAAkB,WAAW,CAAC,CAAC,CAAE,CAAA;IAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,SAAS,GAAG,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAE,CAAC,CAAA;IAC1F,CAAC;IAED,0EAA0E;IAC1E,yEAAyE;IACzE,kEAAkE;IAClE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,CAAC,CAAC,6BAA6B,CAC9C,CAAC,CAAC,2BAA2B,CAC3B,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,EACpE,SAAS,EACT,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CACnD,EACD,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAC1C,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EACzB,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EACvC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACzB,CACF,CAAA;IACD,SAAS,GAAG,CAAC,CAAC,sBAAsB,CAClC,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,EAC1C,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,QAAQ,CACT,CAAA;IAED,MAAM,OAAO,GAAG,CAAC,CAAC,mBAAmB,CACnC,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;QACvD,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;KACxD,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,SAAS,CACV,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAEhE,6EAA6E;IAC7E,kFAAkF;IAClF,MAAM,WAAW,GAA4B,EAAE,CAAA;IAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAChF,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,CAAC,wBAAwB,CAC3C,cAAc,EACd,CAAC,CAAC,6BAA6B,CAAC,WAAW,EAAE,KAAK,CAAC,CACpD,CAAA;IAED,yDAAyD;IACzD,MAAM,cAAc,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE1D,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,EAAE,cAAc,EAAE,UAAU,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,CAAC,CAAC,mBAAmB,CACpC,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;QACvD,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;QACvD,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;QACvD,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC;QACxD,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;KACxD,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,UAAU,CACX,CAAA;IACD,MAAM,UAAU,GAAG,CAAC,CAAC,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAEnE,6DAA6D;IAC7D,kEAAkE;IAClE,yEAAyE;IACzE,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAA;IAEjF,sEAAsE;IACtE,gEAAgE;IAChE,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;IACtD,IAAI,YAAY;QAAE,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAE/C,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;IAEjG,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,SAAS;QACT,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,gBAAgB,CACvB,SAAqC,EACrC,YAAiC,EACjC,cAAsB,EACtB,CAAiB;IAEjB,IAAI,YAAY,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAExC,mDAAmD;IACnD,IAAI,QAAQ,GAAoD,IAAI,CAAA;IACpE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC3B,CAAC;YACD,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtF,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;YAC7B,CAAC;YACD,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,+CAA+C;IAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,IAAI,UAAU,GAA8B,IAAI,CAAA;IAChD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,UAAU,GAAG,IAAI,CAAA;YACjB,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,oDAAoD;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;IAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAA;IAC7C,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;QACxF,OAAO,IAAI,CAAA;IACb,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAA;IACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAA;IAE9B,2BAA2B;IAC3B,MAAM,QAAQ,GAA4B,EAAE,CAAA;IAE5C,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAClD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC;YAAE,SAAQ;QAEtC,kEAAkE;QAClE,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;YAAE,SAAQ;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAA;QAEtC,yEAAyE;QACzE,2EAA2E;QAC3E,oEAAoE;QACpE,MAAM,WAAW,GAAgC,EAAE,CAAA;QACnD,MAAM,cAAc,GAAG,CAAC,IAAa,EAAQ,EAAE;YAC7C,IACE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAC1B,IAAI,CAAC,UAAU;gBACf,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EACpC,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBACjC,OAAM;YACR,CAAC;YACD,qEAAqE;YACrE,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;gBAC9B,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxB,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAC5B,CAAC;gBACD,OAAM;YACR,CAAC;YACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QACvC,CAAC,CAAA;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;QACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAEtC,iDAAiD;QACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QACrC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAA;YACzC,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,GAAG,IAAI,CAAA;gBACd,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,IAAI,MAAM;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC5C,CAAC;QACD,IAAI,OAAO;YAAE,SAAQ,CAAC,2CAA2C;QAEjE,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAE9C,uCAAuC;QACvC,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;QACxD,CAAC;QAED,mEAAmE;QACnE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;QAE3F,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QACvD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;IACpF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtC,OAAO,CAAC,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC,CAAC,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AAClG,CAAC;AAUD;;;;;;GAMG;AACH,SAAS,aAAa,CACpB,MAAqB,EACrB,SAAiB,EACjB,cAAwB,EACxB,cAAuB,EACvB,SAAkB;IAElB,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAA;IAC9C,IAAI,cAAc,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC;QAC/F,OAAO,MAAM,CAAA;IAEf,qDAAqD;IACrD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU;YAAE,SAAQ;QAEzB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;YAAE,SAAQ;QAEpE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,IAAI,GACR,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;gBAChB,CAAC,CAAC,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC;oBACtC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAChB,CAAC,CAAC,IAAI,CAAA;YACZ,IAAI,CAAC,IAAI;gBAAE,SAAQ;YAEnB,6CAA6C;YAC7C,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC7B,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC7C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;gBACD,OAAO,OAAO,CAAA;YAChB,CAAC;YAED,8EAA8E;YAC9E,4FAA4F;YAC5F,IAAI,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAC9B,IAAI,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;oBACnD,2EAA2E;oBAC3E,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBAChD,IAAI,MAAM,GAAG,CAAC;wBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;oBAClD,OAAO,QAAQ,CAAA;gBACjB,CAAC;YACH,CAAC;YAED,8EAA8E;YAC9E,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAA;gBAC7B,IACE,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;oBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EACtC,CAAC;oBACD,OAAO,QAAQ,CAAA;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,eAAe,CAAC,IAAkB;IACzC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/F,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YACrC,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,MAAqB,EAAE,QAAgB;IAC/D,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAChD,iCAAiC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAA;YAC5B,IACE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC;gBAC1B,GAAG,CAAC,aAAa,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,eAAe;gBACxD,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAC9B,CAAC;gBACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBAC3C,IAAI,MAAM,GAAG,CAAC;oBAAE,OAAO,MAAM,CAAA;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,MAAM,CAAA;IAC/B,CAAC;IACD,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAqB,EAAE,SAAiB,EAAE,OAAe;IACnF,SAAS,IAAI,CAAC,IAAa;QACzB,oDAAoD;QACpD,IACE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;YAC1B,IAAI,CAAC,WAAW,EAChB,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAA;YAC7B,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACzB,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EACrC,CAAC;gBACD,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,CAAA;IAC7C,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IAC7B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,SAAwB,EACxB,SAAiB,EACjB,YAAiC;IAEjC,kFAAkF;IAClF,IAAI,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;YACxC,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,kDAAkD;gBAClD,SAAQ;YACV,CAAC;YACD,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAChC,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;YACD,sEAAsE;YACtE,IAAI,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAChC,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9C,CAAC;IAED,4CAA4C;IAC5C,IAAI,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,EAAE,CAAA,CAAC,qBAAqB;IACjC,CAAC;IAED,OAAO,IAAI,CAAA,CAAC,cAAc;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;GAGG;AACH,SAAS,gBAAgB,CACvB,CAAiB,EACjB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QACvD,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,+BAA+B;QACrD,CAAC,CAAC,OAAO,KAAK,MAAM;YAClB,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,OAAO,KAAK,QAAQ;gBACpB,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,OAAO,KAAK,OAAO;oBACnB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,OAAO,KAAK,QAAQ;wBACpB,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,CAAC,CAAA,CAAC,UAAU;IAE1B,uDAAuD;IACvD,OAAO,CAAC,CAAC,mBAAmB,CAC1B,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;QAC1D,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;KAC1D,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE;QACnE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;QAC1B,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACzB,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC;QAC/B,MAAM,IAAI,CAAC;YACT,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;KACvF,CAAC,CACH,CAAA;AACH,CAAC;AAED,6DAA6D;AAC7D,SAAS,2BAA2B,CAClC,CAAiB,EACjB,SAAiB,EACjB,OAAgB;IAEhB,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,kDAAkD;IAClD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;QACE,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,yBAAyB,CAAC;YAC1B,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;YACjD,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC;SAClD,CAAC,EACF,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EACnE,QAAQ,CACT,EACD,SAAS,EACT;YACE,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;YACrE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;SAC1B,CACF,CACF;KACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;IAED,iBAAiB;IACjB,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EACrE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CACF,CACF,CAAA;IAED,4DAA4D;IAC5D,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,0DAA0D;QAC1D,MAAM,eAAe,GACnB,OAAO,KAAK,OAAO;YACjB,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,OAAO,KAAK,QAAQ;gBACpB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,OAAO,KAAK,QAAQ;oBACpB,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,WAAW,CAAA;QAErB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YACvB,yDAAyD;YACzD,uDAAuD;QACzD,CAAC;aAAM,CAAC;YACN,0DAA0D;YAC1D,mCAAmC;YACnC,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;gBACE,CAAC,CAAC,yBAAyB,CACzB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CACjF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;YAED,yFAAyF;YACzF,MAAM,OAAO,GAAG,CAAC,CAAC,6BAA6B,CAC7C,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACxB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CAAA;YACD,MAAM,aAAa,GACjB,eAAe,KAAK,gBAAgB;gBAClC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;oBACvB,GAAG,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9E,CAAA;YAEP,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,kBAAkB,CAClB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,EAAE,CAAC,SAAS,CAAC,GAAG,CACjB,EACD,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,aAAa,EAC3B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CACrE,EACD,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACpF,CAAC,CAAC,WAAW,CACX;gBACE,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,EACjD,EAAE,CAAC,UAAU,CAAC,cAAc,EAC5B,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,CAChC,EACD,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB;gBACpB,8DAA8D;gBAC9D,yDAAyD;gBACzD,gEAAgE;gBAChE,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,eAAe,CAAC,EAC1D,SAAS,EACT,aAAgC,CACjC,CACF,CACF;aACF,EACD,IAAI,CACL,CACF,CACF,CAAA;QACH,CAAC;QAED,qCAAqC;QACrC,2CAA2C;QAC3C,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;YACE,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAC5E;YACD,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CACpE;SACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;QAED,kCAAkC;QAClC,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE;YACnE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACvB,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC;YAC/B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;SACxB,CAAC,CACH,CACF,CAAA;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,qBAAqB,CACrB,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CACnF,CACF,CAAA;IAED,OAAO,CAAC,CAAC,mBAAmB,CAC1B,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;QAC1D,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC;KAC1D,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAC3B,CAAA;AACH,CAAC;AAED,mEAAmE;AAEnE;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,QAA2B,EAC3B,CAAiB,EACjB,eAAuB;IAEvB,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3D,uBAAuB;IACvB,IAAI,UAAU,GAAiC,IAAI,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAClC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC3B,CAAC;YACD,UAAU,GAAG,IAAI,CAAA;YACjB,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAA;IACvC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IACpF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,0DAA0D;IAC1D,IAAI,YAAY,GAA6B,IAAI,CAAA;IACjD,IAAI,eAAe,GAAkB,IAAI,CAAA;IAEzC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBACrD,IACE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,WAAW;oBAChB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EACrC,CAAC;oBACD,IACE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;wBAC5C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,EACjD,CAAC;wBACD,IAAI,YAAY;4BAAE,OAAO,IAAI,CAAA,CAAC,4BAA4B;wBAC1D,YAAY,GAAG,IAAI,CAAC,WAAW,CAAA;wBAC/B,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,gDAAgD;QAChD,IAAI,sBAAsB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC7C,mEAAmE;QACnE,uEAAuE;QACvE,IAAI,qBAAqB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEnE,sBAAsB;IACtB,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAA;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IAEzB,yBAAyB;IACzB,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IAChG,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAChE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7E,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAC7E,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IASvC,MAAM,QAAQ,GAAiB,EAAE,CAAA;IACjC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAyB,CAAA;IAE5D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBACrD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnD,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;YAC5B,IACE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;gBACjC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAC1B,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBACjC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBAEtC,6BAA6B;gBAC7B,IAAI,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;oBACzF,kBAAkB;gBACpB,CAAC;qBAAM,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,wCAAwC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAA,CAAC,6BAA6B;gBAC3C,CAAC;gBAED,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC5D,MAAM,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;gBAEhE,oEAAoE;gBACpE,2DAA2D;gBAC3D,SAAS,eAAe,CAAC,IAAmB;oBAC1C,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;4BAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;wBAC/D,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC/C,IAAI,IAAI;4BAAE,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;wBACtC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtC,CAAC;oBACD,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxC,OAAO,CAAC,CAAC,8BAA8B,CACrC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CACf,CAAA;oBACH,CAAC;oBACD,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;wBACvC,OAAO,CAAC,CAAC,6BAA6B,CACpC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAChC,IAAI,CAAC,kBAAkB,CACxB,CAAA;oBACH,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;gBAEzC,2EAA2E;gBAC3E,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC;oBACjD,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC;oBACtC,CAAC,CAAC,WAAW,CAAA;gBACf,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAA;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEtC,kEAAkE;IAClE,+EAA+E;IAC/E,iEAAiE;IACjE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC/C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACrD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;gBAAE,SAAQ;YAC9E,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;gBAAE,SAAQ;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,QAAQ,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7E,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACtE,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC,CAAA;QACtE,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,uCAAuC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAA;IACrD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YACrD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvF,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IAEnC,4DAA4D;IAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,oBAAoB,CACpC,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,EAAE,EACF,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CACX;QACE,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;YACE,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAC9B,eAAe,CAChB,EACD,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CACpC,CACF;SACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;QACD,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,EACtE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAC5B,CACF;QACD,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;KACjD,EACD,IAAI,CACL,CACF,CACF,EACD,SAAS,EACT,EAAE,CACH,CAAA;IAED,+EAA+E;IAC/E,MAAM,QAAQ,GAAmB,EAAE,CAAA;IACnC,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;QACE,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CACrE;KACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAA;QACtB,MAAM,GAAG,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvC,MAAM,UAAU,GAAG,CAAC,CAAC,6BAA6B,CAChD,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAA;QACD,MAAM,QAAQ,GAAG,CAAC,CAAC,6BAA6B,CAC9C,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAA;QAED,2BAA2B;QAC3B,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;YACE,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CACzE;SACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;QAED,uBAAuB;QACvB,MAAM,QAAQ,GACZ,CAAC,CAAC,IAAI,KAAK,MAAM;YACf,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,GAAG,CACJ;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;gBAClB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,GAAG,CACJ;gBACH,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,QAAQ,EAAE,WAAW,CAAC,EACvD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,GAAG,CACJ,CAAA;QAET,4DAA4D;QAC5D,QAAQ,CAAC,IAAI,CACX,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,sBAAsB,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAAE,UAAU,CAAC,EACrF,CAAC,CAAC,WAAW,CACX;YACE,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CACrE;YACD,CAAC,CAAC,yBAAyB,CAAC,QAAQ,CAAC;SACtC,EACD,IAAI,CACL,CACF,CACF,CAAA;IACH,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,QAAQ,GAAG,CAAC,CAAC,mBAAmB,CACpC,SAAS,EACT,SAAS,EACT,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EACzD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC9B,CAAA;IAED,iFAAiF;IACjF,MAAM,aAAa,GAAmB,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,aAAa,CAAC,IAAI,CAChB,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,EAC/D,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;IACH,CAAC;IACD,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAErD,MAAM,QAAQ,GAAG,CAAC,CAAC,oBAAoB,CACrC,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,EAAE,EACF,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,CACnC,CACF,EACD,SAAS,EACT,EAAE,CACH,CAAA;IAED,qEAAqE;IACrE,MAAM,WAAW,GAAmB,EAAE,CAAA;IAEtC,gFAAgF;IAChF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,EAC/D,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;IACH,CAAC;IAED,4DAA4D;IAC5D,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;QACE,CAAC,CAAC,yBAAyB,CACzB,GAAG,EACH,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EACxE,mBAAmB,CACpB,EACD,WAAW,CACZ,EACD,SAAS,EACT,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CACjB,CACF;KACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;IAED,2DAA2D;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAA;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,6BAA6B,CAC3C,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAA;QACD,MAAM,KAAK,GAAG,CAAC,CAAC,6BAA6B,CAC3C,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAChC,CAAA;QAED,sDAAsD;QACtD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAEtE,6BAA6B;QAC7B,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAC,CAC1E,CACF,CAAA;QAED,mCAAmC;QACnC,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,KAAK,EACL,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE;YAC5C,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;SACrE,CAAC,CACH,CACF,CACF,CAAA;QAED,+CAA+C;QAC/C,MAAM,SAAS,GACb,CAAC,CAAC,IAAI,KAAK,MAAM;YACf,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC,EACpD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,KAAK,CACN;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO;gBAClB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC,EACpD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,KAAK,CACN;gBACH,CAAC,CAAC,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC,EACpD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,KAAK,CACN,CAAA;QACT,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,2BAA2B;IAC3B,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,EACxE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAC/B,CACF,CACF,CAAA;IAED,6DAA6D;IAC7D,4DAA4D;IAC5D,SAAS,WAAW,CAAC,IAAkB;QACrC,SAAS,KAAK,CAAC,IAAa;YAC1B,uCAAuC;YACvC,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACzB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBAChC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;gBACD,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAE,CAAA;gBAC7D,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE;oBACzE,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;iBACrE,CAAC,CAAA;YACJ,CAAC;YACD,gCAAgC;YAChC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,eAAe,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC9E,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAA;YAChC,CAAC;YACD,uCAAuC;YACvC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,CAAC;YACD,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,SAAU,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,SAAU,CAAiB,CAAA;IACnE,CAAC;IAED,wEAAwE;IACxE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,SAAQ;QAExC,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,4BAA4B;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAClE,CAAA;YACD,IAAI,UAAU;gBAAE,SAAQ;YACxB,wEAAwE;YACxE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,KAAK,CAC5D,CAAC,CAAC,EAAE,EAAE,CACJ,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CACnE,CAAA;YACD,IAAI,cAAc;gBAAE,SAAQ;QAC9B,CAAC;QAED,sBAAsB;QACtB,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IACrC,CAAC;IAED,aAAa;IACb,WAAW,CAAC,IAAI,CACd,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACnF,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,mBAAmB,CACvC,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAC1B,SAAS,EACT,SAAS,EACT,CAAC,CAAC,0BAA0B,CAAC;YAC3B,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC;YAC/C,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;YACrD,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;SACzD,CAAC,CACH;KACF,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CACjC,CAAA;IAED,yEAAyE;IACzE,kFAAkF;IAClF,6EAA6E;IAC7E,mFAAmF;IACnF,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CACrC,CAAC,CAAC,EAA+B,EAAE,CACjC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3E,CAAA;IACD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/D,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEnE,MAAM,OAAO,GAAG,CAAC,CAAC,6BAA6B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;IAElE,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE;QACnF,OAAO;QACP,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAa;IAC1C,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QACzB,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EACpC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,qBAAqB,CAAC,IAAI,KAAK,CAAA;AAC9D,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa;IAC3C,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IAChG,CAAC;IACD,OAAO,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC,IAAI,KAAK,CAAA;AAC/D,CAAC;AAED,+EAA+E;AAC/E,SAAS,WAAW,CAClB,IAAmB,EACnB,OAAe,EACf,OAAe,EACf,CAAiB;IAEjB,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACtF,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC,8BAA8B,CACrC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,IAAI,CAAC,IAAI,CAAC,IAAI,CACf,CAAA;IACH,CAAC;IACD,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,CAAC,6BAA6B,CACpC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EACjD,IAAI,CAAC,kBAAkB,CACxB,CAAA;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,2EAA2E;AAC3E,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/E,OAAQ,EAAE,CAAC,UAAU,CAAC,CAAC,CAA8B,IAAI,IAAI,CAAA;AAC/D,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB,CAC5B,SAAqC,EACrC,SAA8B;IAE9B,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CACvF,CAAA;IACD,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,GAAG,CAAC,CAAA;IAE1E,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,eAAe,GAAG,KAAK,CAAA;IAE3B,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;YACzE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,eAAe,GAAG,IAAI,CAAA;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC9B,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACvC,0EAA0E;oBAC1E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACnC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;4BAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC3B,CAAC;4BACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gCAC1C,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gCAC3C,OAAM;4BACR,CAAC;4BACD,IAAI,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gCACjD,mCAAmC;gCACnC,IAAI,GAAG,UAAU,GAAG,CAAC,CAAA;gCACrB,OAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,8CAA8C;oBAC9C,MAAM,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;oBAChF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;wBACnC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;4BAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;4BAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAC7B,CAAC;4BACD,IACE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;gCACpC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,EACzC,CAAC;gCACD,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;gCACpE,IAAI,IAAI,CAAC,IAAI,UAAU,GAAG,CAAC,CAAA;4BAC7B,CAAC;4BACD,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC1B,OAAO,eAAe,CAAC,CAAC,CAAC,IAAI,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,UAAsC,EACtC,UAA+B;IAE/B,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,wCAAwC;IACxC,OAAO,UAAU,GAAG,CAAC,CAAA;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAS,eAAe,CAAC,CAAiB,EAAE,cAAsB,EAAE,WAAmB;IACrF,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,oEAAoE;IACpE,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,WAAW,GAAmB,EAAE,CAAA;QAEtC,wCAAwC;QACxC,sBAAsB;QACtB,8CAA8C;QAC9C,uBAAuB;QACvB,IAAI;QACJ,kEAAkE;QAClE,oEAAoE;QACpE,4DAA4D;QAC5D,MAAM,SAAS,GAAG,CAAC,CAAC,kBAAkB,CACpC,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,EAAE,CAAC,SAAS,CAAC,GAAG,CACjB,EACD,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,aAAa,EAC3B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CACrE,EACD,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACpF,CAAC,CAAC,WAAW,CACX;YACE,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;gBACE,CAAC,CAAC,yBAAyB,CACzB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACxB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CACF;aACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;YACD,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,2BAA2B,CAC3B,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAC9B,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CACzB,EACD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,EAClE,EAAE,CAAC,UAAU,CAAC,cAAc,EAC5B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CACF,EACD,EAAE,CAAC,UAAU,CAAC,uBAAuB,EACrC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC1B,CACF,EACD,CAAC,CAAC,uBAAuB,EAAE,CAC5B;YACD,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,EACvE,SAAS,EACT,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CACnD,CACF;SACF,EACD,IAAI,CACL,CACF,CAAA;QACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAE3B,gEAAgE;QAChE,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAC/B;YACE,YAAY;YACZ,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,EAAE,CAAC,SAAS,CAAC,GAAG,CACjB,CACF;YACD,uEAAuE;YACvE,CAAC,CAAC,kBAAkB,CAClB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,EACnF,EAAE,CAAC,SAAS,CAAC,GAAG,CACjB,EACD,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,aAAa,EAC3B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CACpE,EACD,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EACpF,CAAC,CAAC,WAAW,CACX;gBACE,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,2BAA2B,CAC3B,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAC9B,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,EACD,MAAM,CACP,CACF,EACD,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,4BAA4B,CAC5B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,aAAa,CAC5B,CACF,EACD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CACF,CACF,CACF;aACF,EACD,IAAI,CACL,CACF;YACD,eAAe;YACf,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EACnE,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,CACF;YACD,qBAAqB;YACrB,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EACnE,SAAS,EACT,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CACnD,CACF,CACF;SACF,EACD,IAAI,CACL,CAAA;QAED,MAAM,gBAAgB,GAAG,CAAC,CAAC,sBAAsB,CAC/C,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,EACnE,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAC9B,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACxB,EACD,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAC9B,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC1B,EACD,EAAE,CAAC,UAAU,CAAC,uBAAuB,EACrC,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EACnF,MAAM,CACP,CACF,CACF,CACF,CAAA;QACD,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAA;QAEpE,4BAA4B;QAC5B,IAAI,cAAc,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EACvB,EAAE,CAAC,UAAU,CAAC,cAAc,EAC5B,iBAAiB,CAAC,CAAC,EAAE,cAAc,CAAC,CACrC,CACF,EACD,EAAE,CAAC,UAAU,CAAC,4BAA4B,EAC1C,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAC1B,EACD,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CACjC,CACF,CAAA;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE;QACnE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;QACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC;KACxB,CAAC,CACH,CACF,CAAA;IAED,OAAO,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,WAAW,CAAC,CAAiB,EAAE,IAAY,EAAE,KAAe;IACnE,IAAI,IAAI,GAAkB,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,yCAAyC;QACzC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,GAAG,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAA;QAC/F,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,oEAAoE;AAEpE,SAAS,cAAc,CACrB,EAAiB,EACjB,UAAgC,EAChC,QAA6B,EAC7B,QAAqB,EACrB,WAAoB,EACpB,cAAuB,EACvB,QAAiB,EACjB,gBAAyB,EACzB,CAAiB;IAEjB,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB;QAC1F,OAAO,EAAE,CAAA;IAEX,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAA;IACtC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAA;IAEjF,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAE/F,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IACvF,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;QAC/B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1F,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IAC7F,IAAI,CAAC,aAAa,IAAI,cAAc,EAAE,CAAC;QACrC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC7F,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;IACjF,IAAI,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QACzB,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACvF,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;YAC9E,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAC9F,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;YAC9E,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAC9F,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;IACnD,MAAM,SAAS,GAAG,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IAEjG,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,IACE,CAAC,QAAQ;YACT,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,WAAW;YACzC,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAC9B,CAAC;YACD,QAAQ,GAAG,IAAI,CAAA;YACf,OAAO,aAAa,CAAA;QACtB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAuC,CAAC,CAAA;AACxE,CAAC;AAED,oEAAoE;AAEpE,SAAS,iBAAiB,CACxB,IAAuB,EACvB,MAAiC,EACjC,CAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,EAClC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,wBAAwB,CAC3C,eAAe,EACf,kBAAkB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAClD,CAAA;IACD,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;IAE9F,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,SAAS;QACT,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,CAAY,EAAE,CAAiB;IACzD,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAA;IAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,CAAC,6BAA6B,CAAC;YACrC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,wBAAwB,CACxB,QAAQ,EACR,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9E;SACF,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,6BAA6B,CAAC;YACrC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClE,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SAC9D,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC,6BAA6B,CAAC;YACrC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACrE,CAAC,CAAC,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;SAC9D,CAAC,CAAA;IACJ,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,CAAC,CAAC,6BAA6B,CAAC;YACrC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAClE,CAAC,CAAC,wBAAwB,CACxB,IAAI,EACJ,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1E;SACF,CAAC,CAAA;IACJ,CAAC;IACD,SAAS;IACT,MAAM,UAAU,GAA4B,EAAE,CAAA;IAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,CAAC,CAAC,6BAA6B,CAAC;QACrC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,6BAA6B,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;KACxF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,kBAAqC,EACrC,YAA+B,EAC/B,UAAyB,EACzB,QAAgB,EAChB,CAAiB;IAEjB,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjD,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAAE,OAAO,kBAAkB,CAAA;IAErF,kCAAkC;IAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,EACpC,CAAC;YACD,OAAO,kBAAkB,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAA;IAE9D,MAAM,IAAI,GAAG,CAAC,CAAC,6BAA6B,CAC1C;QACE,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;KACrE,EACD,KAAK,CACN,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,CAAC,wBAAwB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;IACpE,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAE5F,OAAO,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,aAAa,EAAE;QAC7F,SAAS;QACT,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KACzC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAAuB,EACvB,MAGC,EACD,CAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,kCAAkC;IAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,aAAa,EAChC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,MAAM,YAAY,GAA4B,EAAE,CAAA;IAChD,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,MAAM,UAAU,GAA4B,EAAE,CAAA;QAC9C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,wBAAwB,CACxB,KAAK,EACL,CAAC,CAAC,6BAA6B,CAAC;oBAC9B,CAAC,CAAC,wBAAwB,CACxB,MAAM,EACN,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E;iBACF,CAAC,CACH,CACF,CAAA;YACH,CAAC;QACH,CAAC;QACD,YAAY,CAAC,IAAI,CACf,CAAC,CAAC,wBAAwB,CACxB,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC9B,CAAC,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAC5C,CACF,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAC/C;QACE,CAAC,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC,6BAA6B,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAC5F,EACD,IAAI,CACL,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IAEvE,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;IAE9F,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,SAAS;QACT,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAuB,EACvB,MAGC,EACD,CAAiB;IAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvE,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,UAAU,EAAE,CAAC;QACxC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EACnC,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAA4B,EAAE,CAAA;IAChD,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChE,MAAM,UAAU,GAA4B,EAAE,CAAA;QAC9C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjF,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,wBAAwB,CACxB,KAAK,EACL,CAAC,CAAC,6BAA6B,CAAC;oBAC9B,CAAC,CAAC,wBAAwB,CACxB,MAAM,EACN,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E;iBACF,CAAC,CACH,CACF,CAAA;YACH,CAAC;QACH,CAAC;QACD,YAAY,CAAC,IAAI,CACf,CAAC,CAAC,wBAAwB,CACxB,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAC9B,CAAC,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAC5C,CACF,CAAA;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAC/C;QACE,CAAC,CAAC,wBAAwB,CAAC,cAAc,EAAE,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtF,CAAC,CAAC,wBAAwB,CAAC,UAAU,EAAE,CAAC,CAAC,6BAA6B,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;KAC5F,EACD,IAAI,CACL,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAA;IAC1E,MAAM,SAAS,GAAG,CAAC,CAAC,6BAA6B,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;IAE9F,OAAO,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE;QACjE,SAAS;QACT,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3B,CAAC,CAAA;AACJ,CAAC;AAED,oEAAoE;AAEpE,oEAAoE;AAEpE;;;;;GAKG;AACH,SAAS,2BAA2B,CAClC,QAA2B,EAC3B,CAAiB,EACjB,OAAmB,EACnB,UAAyB;IAEzB,gDAAgD;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3D,2BAA2B;IAC3B,IAAI,UAAU,GAAiC,IAAI,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAClC,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC3B,CAAC;YACD,UAAU,GAAG,IAAI,CAAA;YACjB,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAA;IACvC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpF,2EAA2E;IAC3E,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC1C,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAE7B,IAAI,QAAQ,GAAkB,IAAI,CAAA;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,mDAAmD;QACnD,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAA;IAClC,CAAC;SAAM,IAAI,EAAE,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,0CAA0C;QAC1C,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACnF,QAAQ,GAAG,MAAM,CAAA;gBACjB,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAQ1B,MAAM,WAAW,GAAiB,EAAE,CAAA;IAEpC,sFAAsF;IACtF,SAAS,kBAAkB,CAAC,GAA6C;QACvE,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,CAAA;QACzC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QACtD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QACtB,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC9D,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAC7F,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;IACvB,CAAC;IAED,SAAS,gBAAgB,CAAC,IAAa;QACrC,uBAAuB;QACvB,IACE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YACzB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;YACjC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAC3B,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;YAC9B,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;gBACrC,MAAM,GAAG,GACP,KAAK,KAAK,IAAI;oBACZ,CAAC,CAAC,SAAS,KAAK,EAAE;oBAClB,CAAC,CAAC,QAAQ,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,CAAA;gBAC1E,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;YAC9D,CAAC;QACH,CAAC;QACD,iFAAiF;QACjF,mFAAmF;QACnF,6DAA6D;aACxD,IACH,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;YACnC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;YACjC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAC1B,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YAC5B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,KAAK,EAAE,EAAE,CAAC,CAAA;QAC1E,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAA;IACzC,CAAC;IACD,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAE/B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA,CAAC,yBAAyB;IAEjE,oDAAoD;IACpD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAA;IAC9C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,gFAAgF;IAChF,oFAAoF;IACpF,gEAAgE;IAChE,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAEvC,iDAAiD;IACjD,MAAM,YAAY,GAAmB,EAAE,CAAA;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAA;IACtD,IAAI,IAAI,GAAG,CAAC,CAAA;IAEZ,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;QAC3B,IAAI,EAAE,CAAA;QAEN,iCAAiC;QACjC,qFAAqF;QACrF,wDAAwD;QACxD,IAAI,QAAuB,CAAA;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;QAC1D,IAAI,cAAc,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACrD,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAA;QACpC,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;YAC5B,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAA;YACjE,QAAQ,GAAG,CAAC,CAAC,mBAAmB,CAC9B,SAAS,EACT,SAAS,EACT,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,EACzD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAC7E,CAAA;QACH,CAAC;QAED,2BAA2B;QAC3B,YAAY,CAAC,IAAI,CACf,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,EACrE,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;QACD,iFAAiF;QACjF,mFAAmF;QACnF,YAAY,CAAC,IAAI,CACf,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;YACE,CAAC,CAAC,yBAAyB,CACzB,MAAM,EACN,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE;gBAC3D,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;aAC3B,CAAC,CACH;SACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;QAED,wDAAwD;QACxD,KAAK,GAAG,CAAA,CAAC,iBAAiB;QAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,SAAS,cAAc,CAAC,IAAa;QACnC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAChC,CAAC;QACD,OAAO,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,SAAU,CAAC,CAAA;IAC5D,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAE,CAAA;IAE5D,2CAA2C;IAC3C,IAAI,SAAyB,CAAA;IAC7B,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,YAAY,EAAE,GAAI,OAAoB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAA;IACzF,CAAC;SAAM,CAAC;QACN,4DAA4D;QAC5D,SAAS,GAAG,CAAC,CAAC,WAAW,CACvB,CAAC,GAAG,YAAY,EAAE,CAAC,CAAC,qBAAqB,CAAC,OAAwB,CAAC,CAAC,EACpE,IAAI,CACL,CAAA;IACH,CAAC;IAED,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;QACvD,IAAI,GAAG,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACvB,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QAChD,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACjC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CACtF,CAAA;QACD,IAAI,MAAM;YAAE,OAAO,CAAC,CAAA;QACpB,MAAM,UAAU,GAAG,CAAC,CAAC,0BAA0B,CAAC;YAC9C,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ;YAClB,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACxE,CAAC,CAAA;QACF,OAAO,CAAC,CAAC,0BAA0B,CACjC,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,cAAc,EAChB,UAAU,EACV,CAAC,CAAC,aAAa,EACf,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,WAAW,CACd,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,4BAA4B;IAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC;QAC9C,CAAC,CAAC,CAAC,CAAC,mBAAmB,CACnB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,cAAc,EACvB,aAAa,EACb,QAAQ,CAAC,IAAI,EACb,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,SAAS,CACV;QACH,CAAC,CAAC,CAAC,CAAC,wBAAwB,CACxB,QAAQ,CAAC,SAAS,EAClB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,cAAc,EACvB,aAAa,EACb,QAAQ,CAAC,IAAI,EACb,SAAqB,CACtB,CAAA;IAEL,uDAAuD;IACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAC3C,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAC/E,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAE9D,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE;QACzE,MAAM;QACN,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,mEAAmE;AAEnE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,QAAQ;IACR,KAAK;IACL,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;CACT,CAAC,CAAA;AAEF;;;GAGG;AACH,SAAS,sBAAsB,CAAC,IAAoC;IAClE,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,SAAS,IAAI,CAAC,CAAU;QACtB,IAAI,KAAK;YAAE,OAAM;QACjB,iDAAiD;QACjD,IACE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtB,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3C,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAClC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,IAAI,CAAA;YACZ,OAAM;QACR,CAAC;QACD,qCAAqC;QACrC,IAAI,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACtF,KAAK,GAAG,IAAI,CAAA;YACZ,OAAM;QACR,CAAC;QACD,kBAAkB;QAClB,IACE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtB,EAAE,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3C,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACxC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO;YACxC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EACjC,CAAC;YACD,KAAK,GAAG,IAAI,CAAA;YACZ,OAAM;QACR,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACV,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,wBAAwB,CAC/B,QAA2B,EAC3B,SAA8B,EAC9B,CAAiB;IAEjB,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE3D,IAAI,SAAS,GAAiC,IAAI,CAAA;IAClD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC9F,SAAS,GAAG,IAAI,CAAA;YAChB,MAAK;QACP,CAAC;IACH,CAAC;IACD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAE3B,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAA;IACtC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpF,iFAAiF;IACjF,oCAAoC;IAEpC,0EAA0E;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAA;IACzE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9C,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACrE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA,CAAC,+BAA+B;IAC1E,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAElE,6BAA6B;IAC7B,MAAM,OAAO,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE;QAC5E,QAAQ;QACR,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC;KAChC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CACnE,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,CAAC,6BAA6B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAE9D,OAAO,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,aAAa,EAAE;QACzE,MAAM;QACN,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;KAC/B,CAAC,CAAA;AACJ,CAAC;AAED,mEAAmE;AAEnE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,OAAO;IACP,IAAI;IACJ,KAAK;IACL,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,KAAK;CACN,CAAC,CAAA;AAsBF;;;GAGG;AACH,SAAS,cAAc,CACrB,IAAuB,EACvB,OAA4B,EAC5B,SAA8B,EAC9B,IAAc;IAEd,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAA;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAA;IAErB,iFAAiF;IACjF,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,wBAAwB,GAAG,QAAQ,IAAI,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAA;IAClF,MAAM,QAAQ,GAAG,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAA;IAChE,MAAM,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAE3E,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAEpE,MAAM,WAAW,GAA4B,EAAE,CAAA;IAC/C,MAAM,MAAM,GAAmC,EAAE,CAAA;IACjD,MAAM,QAAQ,GAAmD,EAAE,CAAA;IAEnE,IAAI,QAAQ,IAAI,EAAE,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,GAAW,CAAA;YACf,IAAI,KAAoB,CAAA;YAExB,IAAI,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,IAAI,CAAA;gBAC9E,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAClE,KAAK,GAAG,IAAI,CAAC,WAAW,CAAA;YAC1B,CAAC;iBAAM,IAAI,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBACpB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;YACnB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAA;YACb,CAAC;YACD,IAAI,GAAG,KAAK,KAAK;gBAAE,SAAQ;YAE3B,gBAAgB;YAChB,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;gBAChD,SAAQ;YACV,CAAC;YAED,kEAAkE;YAClE,gCAAgC;YAChC,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAA;gBACpD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;oBACpF,KAAK,GAAG,QAAQ,CAAA;gBAClB,CAAC;YACH,CAAC;YAED,mBAAmB;YACnB,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;gBAClE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC9B,6DAA6D;oBAC7D,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;oBAC/C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;wBACvB,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAA;wBACxD,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAA;wBACtC,SAAQ;oBACV,CAAC;gBACH,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC3F,SAAQ;YACV,CAAC;YAED,yBAAyB;YACzB,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YAED,gEAAgE;YAChE,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBACzC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;gBACzD,SAAQ;YACV,CAAC;YAED,sBAAsB;YACtB,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBAClE,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBACvC,SAAQ;YACV,CAAC;YACD,IAAI,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBAClE,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;gBACvC,SAAQ;YACV,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;gBAC9B,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;gBAClE,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC/B,SAAQ;YACV,CAAC;YAED,oCAAoC;YACpC,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAoB,EAAE,CAAA;IAEpC,IAAI,WAAW,IAAI,EAAE,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzC,0CAA0C;YAC1C,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;gBACxD,QAAQ,EAAE,CAAA;gBACV,SAAQ;YACV,CAAC;YAED,gCAAgC;YAChC,IACE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC1B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBACjC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAChC,CAAC;gBACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;oBAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;oBACtE,QAAQ,EAAE,CAAA,CAAC,sDAAsD;oBACjE,SAAQ;gBACV,CAAC;gBACD,wCAAwC;gBACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;gBACpC,IAAI,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACtE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;oBACrE,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,cAAc;wBACpB,QAAQ;wBACR,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;wBACtD,QAAQ;qBACT,CAAC,CAAA;oBACF,QAAQ,EAAE,CAAA,CAAC,oCAAoC;oBAC/C,SAAQ;gBACV,CAAC;gBACD,0CAA0C;gBAC1C,IAAI,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7D,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,cAAc;wBACpB,QAAQ;wBACR,IAAI,EAAE,UAAU,GAAG,CAAC;wBACpB,QAAQ;qBACT,CAAC,CAAA;oBACF,QAAQ,EAAE,CAAA,CAAC,oCAAoC;oBAC/C,SAAQ;gBACV,CAAC;gBACD,sDAAsD;gBACtD,kEAAkE;gBAClE,IAAI,oBAAoB,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACjE,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,cAAc;wBACpB,QAAQ;wBACR,IAAI,EAAE,UAAU,GAAG,CAAC;wBACpB,QAAQ;qBACT,CAAC,CAAA;oBACF,QAAQ,EAAE,CAAA;oBACV,SAAQ;gBACV,CAAC;gBACD,OAAO,IAAI,CAAA,CAAC,0BAA0B;YACxC,CAAC;YAED,gCAAgC;YAChC,IACE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC1B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAClC,CAAC;gBACD,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;gBAChF,IAAI,CAAC,SAAS;oBAAE,OAAO,IAAI,CAAA;gBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;gBACnD,QAAQ,EAAE,CAAA;gBACV,SAAQ;YACV,CAAC;YAED,mEAAmE;YACnE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,yEAAyE;QACzE,sEAAsE;QACtE,mCAAmC;IACrC,CAAC;SAAM,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QACzE,qDAAqD;QACrD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAC1E,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAkD;IAChF,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAChE,IAAI,IAAI,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAA;IACtD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AACxD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAkB,EAAE,GAAgB;IAC9D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;YAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACnE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,IAAkB;IAC3C,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IACzB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,IAAI,IAAI,GAAG,KAAK,UAAU,CAAC,KAAK,CAAC,GAAG,CAAA;IAC1C,CAAC;IACD,IAAI,IAAI,GAAG,CAAA;IAEX,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAE5C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAE,CAAA;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,IAAI,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvC,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACzC,qEAAqE;YACrE,mEAAmE;YACnE,4DAA4D;YAC5D,oEAAoE;YACpE,4BAA4B;YAC5B,EAAE;YACF,qEAAqE;YACrE,+DAA+D;YAC/D,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YACnD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAA;YAC1E,MAAM,OAAO,GACX,IAAI,EAAE,IAAI,KAAK,YAAY;gBAC3B,IAAI,EAAE,IAAI,KAAK,cAAc;gBAC7B,IAAI,EAAE,IAAI,KAAK,YAAY;gBAC3B,IAAI,EAAE,IAAI,KAAK,cAAc,CAAA;YAC/B,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,IAAI,UAAU,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,8DAA8D;gBAC9D,kEAAkE;gBAClE,IAAI,IAAI,GAAG,CACV;gBAAC,KAAkC,CAAC,UAAU,GAAG,IAAI,CAAA;YACxD,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,IAAI,CAAC,GAAG,GAAG,CAAA;IACxB,OAAO,IAAI,CAAA;AACb,CAAC;AAeD;;GAEG;AACH,SAAS,eAAe,CACtB,IAAkB,EAClB,CAAiB,EACjB,QAAuB,EACvB,GAAc,EACd,OAAiC;IAEjC,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;IAEtD,IAAI,QAAQ,GAAG,QAAQ,CAAA;IAEvB,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAA;QACnC,6DAA6D;QAC7D,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAA;QACtC,GAAG,CAAC,IAAI,CAAC;YACP,OAAO;YACP,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CACjC,CAAC,CAAC,EAAyD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CACxF;SACF,CAAC,CAAA;IACJ,CAAC;IAED,gCAAgC;IAChC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAc,EAAE,CAAiB;IACtD,IAAI,IAAI,GAAkB,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,8DAA8D;QAC9D,mFAAmF;QACnF,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;QAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,QAAsB,EACtB,SAA8B,EAC9B,CAAiB;IAEjB,MAAM,IAAI,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACxC,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAE9B,6BAA6B;IAC7B,MAAM,cAAc,GAClB,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC5B,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;IAE1D,IAAI,cAAc,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,sBAAsB;YACnC,QAAQ,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC;YACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,aAAa,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CACrC,CAAC,CAAC,EAAyD,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CACxF;SACF,CAAC,CAAA;IACJ,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QAC1E,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA8D,CAAA;IAC/F,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBAChB,gDAAgD;gBAChD,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC7C,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;;gBAChD,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;QAC3E,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,KAAK,GAAmB,EAAE,CAAA;IAEhC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAExF,2CAA2C;QAC3C,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAC5E,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;QACH,CAAC;QAED,gEAAgE;QAChE,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAClD,IAAI,EAAE,CAAC,OAAO,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;gBAAE,SAAQ,CAAC,gBAAgB;YAC/E,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAC7D,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAC5C,CACF,CACF,CAAA;QACH,CAAC;QAED,uEAAuE;QACvE,KAAK,MAAM,EAAE,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC,EAAE,EAAE,CAAA;YAChC,MAAM,QAAQ,GAAG,CAAC,CAAE,EAA+B,CAAC,UAAU,CAAA;YAE9D,IAAI,QAAQ,EAAE,CAAC;gBACb,mEAAmE;gBACnE,gEAAgE;gBAChE,sDAAsD;gBACtD,IAAI,IAAI,GAAkB,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;gBACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;gBAC9D,CAAC;gBACD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,EAC/D,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,uEAAuE;gBACvE,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;gBAClC,IAAI,IAAI,GAAkB,CAAC,CAAC,8BAA8B,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;gBACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,IAAI,GAAG,CAAC,CAAC,8BAA8B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;gBAC9D,CAAC;gBACD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,EAC/D,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;gBACD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B;oBACE,CAAC,CAAC,yBAAyB,CACzB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAC9B,gBAAgB,CACjB,EACD,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAC5B,CACF;iBACF,EACD,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF,CACF,CAAA;gBACD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,EACxE,cAAc,CACf,EACD,SAAS,EACT,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACrD,CACF,CACF,CAAA;YACH,CAAC;YACD,kDAAkD;YAClD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE;gBAC9D,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;gBACxB,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC;gBAC7B,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAC/B,EAAE,CAAC,QAAQ;aACZ,CAAC,CACH,CACF,CAAA;QACH,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE;gBAC9D,OAAO;gBACP,iBAAiB,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC1B,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;gBAC3B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC;gBAClE,QAAQ;aACT,CAAC,CACH,CACF,CAAA;QACH,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,iBAAiB,EAAE,CAAC;QACrD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,SAAQ;QAChC,oHAAoH;QACpH,MAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACxC,MAAM,OAAO,GAAG,CAAC,CAAC,8BAA8B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAElE,MAAM,OAAO,GAAmB,EAAE,CAAA;QAClC,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;YAC3C,yDAAyD;YACzD,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,EACzE,SAAS,EACT,CAAC,OAAO,CAAC,CACV,EACD,CAAC,CAAC,WAAW,CACX;gBACE,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjF,CAAC,CAAC,qBAAqB,EAAE;aAC1B,EACD,IAAI,CACL,CACF,CACF,CAAA;QACH,CAAC;QAED,MAAM,eAAe,GAAG,CAAC,CAAC,mBAAmB,CAC3C,SAAS,EACT,SAAS,EACT,CAAC,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,EAC3D,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAC7B,CAAA;QAED,4CAA4C;QAC5C,KAAK,CAAC,IAAI,CACR,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,EAChF,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CACpD,CACF,CACF,CAAA;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,CAAC,CAAC,mBAAmB,CACnC,SAAS,EACT,SAAS,EACT;QACE,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;QAC1D,CAAC,CAAC,0BAA0B,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC;KAC7D,EACD,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAC3B,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE;QAC/E,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;QAC3B,OAAO;KACR,CAAC,CAAA;IAEF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,oEAAoE;AAEpE,SAAS,gBAAgB,CAAC,QAAuB;IAC/C,IAAI,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW;QAAE,OAAO,IAAI,CAAA;IAC5D,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACxD,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACvC,gCAAgC;QAChC,IACE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAC1B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;YACjC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAChC,CAAC;YACD,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAA;QAChF,CAAC;QACD,uEAAuE;QACvE,uCAAuC;QACvC,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,GAAW,EACX,WAA2B,EAC3B,QAAuB,EACvB,EAAkB;IAElB,qDAAqD;IACrD,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;QAC5B,0BAA0B;QAC1B,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;YAChC,IAAI,IAAI,KAAK,WAAW,IAAI,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3D,KAAK,IAAI,WAAW,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAA;YACpD,CAAC;QACH,CAAC;QACD,mCAAmC;QACnC,IAAI,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChF,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC7B,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrE,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAA,CAAC,wBAAwB;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,EAAE,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACtC,IACE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;gBAC1B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC;gBACjC,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,EAChC,CAAC;gBACD,IAAI,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;oBAC5C,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAA;gBAC/C,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,CAAA;gBACb,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,GAAG,GAAG,KAAK,IAAI,KAAK,KAAK,GAAG,GAAG,CAAA;AAC5C,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACzD,CAAC;AAED,IAAI,eAAe,GAAG,CAAC,CAAA;AAEvB,SAAS,iBAAiB,CAAC,IAAY,EAAE,CAAiB;IACxD,MAAM,OAAO,GAAG,SAAS,eAAe,EAAE,EAAE,CAAA;IAC5C,sIAAsI;IACtI,gEAAgE;IAChE,2DAA2D;IAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,oBAAoB,CACvC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,EACjF,SAAS,EACT,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CACpC,CAAA;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,oBAAoB,CACjC,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,mBAAmB,CACnB,SAAS,EACT,SAAS,EACT,EAAE,EACF,SAAS,EACT,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACnD,CAAC,CAAC,WAAW,CACX;QACE,CAAC,CAAC,uBAAuB,CACvB,SAAS,EACT,CAAC,CAAC,6BAA6B,CAC7B,CAAC,CAAC,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,EACxE,EAAE,CAAC,SAAS,CAAC,KAAK,CACnB,CACF;QACD,CAAC,CAAC,yBAAyB,CACzB,CAAC,CAAC,sBAAsB,CACtB,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,EAC1E,EAAE,CAAC,UAAU,CAAC,WAAW,EACzB,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAC5B,CACF;QACD,CAAC,CAAC,qBAAqB,CACrB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,oBAAoB,CACpB,CAAC,CAAC,8BAA8B,CAC9B,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EACxE,WAAW,CACZ,EACD,SAAS,EACT,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CACjB,EACD,YAAY,CACb,CACF;KACF,EACD,IAAI,CACL,CACF,CACF,EACD,SAAS,EACT,EAAE,CACH,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,aAAa,CAAC,IAAuB;IAC5C,iDAAiD;IACjD,uEAAuE;IACvE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACnD,oEAAoE;IACpE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAE,CAAA;IAC9B,OAAO,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAA;AAChE,CAAC;AAED,mFAAmF;AACnF,yEAAyE;AACzE,yDAAyD;AACzD,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,0BAA0B;AAC1B,SAAS,oBAAoB,CAAC,IAAa;IACzC,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7C,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAA;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,IAAa;IAC5C,IAAI,OAAO,GAAwB,IAAI,CAAC,MAAM,CAAA;IAC9C,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,IAAI,sBAAsB,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpC,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAA;YACtC,CAAC;QACH,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;IAC1B,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,EAA4C;IAC1E,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;IACnD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAoB;IAChD,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAA;IACtD,IAAI,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtE,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EAAE,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAA;QAC3E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,EAA4C;IACxE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAA;IACxB,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACrD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACtF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,yFAAyF;AACzF,qDAAqD;AACrD,SAAS,gBAAgB,CAAC,IAAa;IACrC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,oEAAoE;AAEpE,+BAA+B;AAC/B,gEAAgE;AAChE,uEAAuE;AACvE,0BAA0B;AAC1B,SAAS,mBAAmB,CAC1B,QAAkD,EAClD,SAA8B;IAE9B,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAExF,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,CAAA;IAC9C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAEnF,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAA;IACjC,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,SAAS,IAAI,CAAC,IAAa;QACzB,iEAAiE;QACjE,gEAAgE;QAChE,gEAAgE;QAChE,8DAA8D;QAC9D,kEAAkE;QAClE,+DAA+D;QAC/D,iEAAiE;QACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAC1B,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YAC9F,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;QACD,IAAI,EAAE,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,+DAA+D;YAC/D,gEAAgE;YAChE,+DAA+D;YAC/D,6DAA6D;YAC7D,6DAA6D;YAC7D,6DAA6D;YAC7D,0DAA0D;YAC1D,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;gBAC5C,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAChC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;wBACtB,IAAI,IAAI,GAAG,CAAA;oBACb,CAAC;yBAAM,CAAC;wBACN,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;4BAClC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gCACnD,IAAI,IAAI,CAAC,CAAA;4BACX,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAEnB,IAAI,IAAI,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IACnD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;AAC7B,CAAC;AAED,SAAS,YAAY,CAAC,IAAiC,EAAE,SAAiB;IACxE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,OAAO,GAAkB,IAAI,CAAA;IAEjC,OAAO,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,OAAO,GAAG,OAAO,CAAC,UAAU,CAAA;IAC9B,CAAC;IAED,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACxE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC","sourcesContent":["import ts from 'typescript'\nimport { collectDeps } from './collect-deps.js'\nimport { extractMsgSchema, extractEffectSchema } from './msg-schema.js'\nimport { extractStateSchema, type StateType } from './state-schema.js'\n\nfunction createMaskLiteral(f: ts.NodeFactory, mask: number): ts.Expression {\n if (mask >= 0) return f.createNumericLiteral(mask)\n // -1 (0xFFFFFFFF | 0) — emit as bitwise OR: 0xFFFFFFFF | 0\n return f.createBinaryExpression(\n f.createNumericLiteral(0xffffffff),\n ts.SyntaxKind.BarToken,\n f.createNumericLiteral(0),\n )\n}\n\n// HTML element helper names that the compiler can transform\nconst ELEMENT_HELPERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'section',\n 'select',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'video',\n])\n\nconst PROP_KEYS = new Set([\n 'value',\n 'checked',\n 'selected',\n 'disabled',\n 'readOnly',\n 'multiple',\n 'indeterminate',\n 'defaultValue',\n 'defaultChecked',\n 'innerHTML',\n 'textContent',\n])\n\ntype BindingKind = 'text' | 'prop' | 'attr' | 'class' | 'style'\n\n/**\n * Walk from `use` outward toward the source file root, looking for a\n * `const <name> = <initializer>` (or `let`/`var`) declaration that binds\n * this identifier in an enclosing scope. Returns the initializer if found.\n *\n * This enables reactive-binding detection for hoisted accessors:\n *\n * const cls = (s: State) => isActive(item, s.path) ? 'on' : 'off'\n * return a({ class: cls }, ...)\n *\n * Without resolution, `class: cls` would fall through the static path\n * and emit `__e.className = cls`, coercing the function to its source\n * string. With resolution, we see that `cls` is an arrow and emit a\n * binding exactly as if the arrow had been inlined.\n *\n * Scope rules:\n * - Only single-binding `const`/`let`/`var` declarations with an\n * initializer are considered. No destructuring, no multi-declarator\n * statements (too easy to get wrong without a type checker).\n * - Later reassignments are NOT tracked — if the identifier is `let`\n * and gets reassigned, the resolution is unreliable. We conservatively\n * refuse to resolve `let` bindings for now (arrow-valued accessors\n * are ~always `const` in practice).\n * - The declaration must dominate the use (same block or an enclosing\n * one). TypeScript's block semantics mean walking up parent blocks\n * is sufficient.\n */\nfunction resolveLocalConstInitializer(use: ts.Identifier): ts.Expression | null {\n const name = use.text\n let node: ts.Node = use\n while (node.parent) {\n const parent = node.parent\n // Scan statements of an enclosing block/source-file for a matching declaration\n let statements: readonly ts.Statement[] | null = null\n if (ts.isBlock(parent) || ts.isSourceFile(parent) || ts.isModuleBlock(parent)) {\n statements = parent.statements\n } else if (ts.isCaseClause(parent) || ts.isDefaultClause(parent)) {\n statements = parent.statements\n }\n if (statements) {\n for (const stmt of statements) {\n if (!ts.isVariableStatement(stmt)) continue\n // Skip `let` — reassignment would invalidate our resolution\n const flags = stmt.declarationList.flags\n if (!(flags & ts.NodeFlags.Const)) continue\n if (stmt.declarationList.declarations.length !== 1) continue\n const decl = stmt.declarationList.declarations[0]!\n if (!ts.isIdentifier(decl.name) || decl.name.text !== name) continue\n if (!decl.initializer) continue\n return decl.initializer\n }\n }\n node = parent\n }\n return null\n}\n\nfunction classifyKind(key: string): BindingKind {\n if (key === 'class' || key === 'className') return 'class'\n if (key.startsWith('style.')) return 'style'\n if (PROP_KEYS.has(key)) return 'prop'\n return 'attr'\n}\n\nfunction resolveKey(key: string, kind: BindingKind): string {\n if (kind === 'class') return 'class'\n if (kind === 'style') return key.slice(6)\n if (kind === 'prop') return key\n if (key === 'className') return 'class'\n return key\n}\n\n/**\n * Transform a source file containing @llui/dom imports.\n * Returns the transformed source or null if no transformation needed.\n */\nexport interface TransformEdit {\n start: number\n end: number\n replacement: string\n}\n\nexport function transformLlui(\n source: string,\n _filename: string,\n devMode = false,\n mcpPort: number | null = 5200,\n): { output: string; edits: TransformEdit[] } | null {\n const sourceFile = ts.createSourceFile('input.ts', source, ts.ScriptTarget.Latest, true)\n\n // Find the @llui/dom import\n const imp = findLluiImport(sourceFile)\n if (!imp) return null\n const lluiImport = imp\n\n // Collect imported element helper names (local → original)\n const importedHelpers = getImportedHelpers(lluiImport)\n if (importedHelpers.size === 0 && !hasReactiveAccessors(sourceFile)) return null\n\n // Pass 2 pre-scan: collect all state access paths\n // Only use precise masks in files that define a component() — the __dirty\n // function is generated per-component, so bit assignments in other files\n // won't match. Files without component() get FULL_MASK on all bindings.\n const fileHasComponent = hasComponentDef(sourceFile, lluiImport)\n const fieldBits = fileHasComponent ? collectDeps(source) : new Map<string, number>()\n\n // Identifier names bound to the View<S,M> helpers parameter of a `view` callback.\n // When the user writes `h.text(...)` / `h.show(...)` / `h.each(...)`, the\n // compiler treats the call as if it were a bare import call.\n const viewHelperNames = collectViewHelperNames(sourceFile, lluiImport)\n // Destructured aliases: `view: (_, { show, text: t }) => [...]` → { show→show, t→text }.\n const viewHelperAliases = collectViewHelperAliases(sourceFile, lluiImport, viewHelperNames)\n\n // Track which helpers were compiled vs bailed out\n const compiledHelpers = new Set<string>()\n const bailedHelpers = new Set<string>()\n let usesElTemplate = false\n let usesElSplit = false\n let usesMemo = false\n let usesApplyBinding = false\n\n const f = ts.factory\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n\n // Collect source positions of transformed nodes for source mapping\n const edits: TransformEdit[] = []\n\n function visitor(node: ts.Node): ts.Node {\n // Synthetic nodes (created by ts.factory) don't have real positions\n const hasPos = node.pos >= 0 && node.end >= 0\n const origStart = hasPos ? node.getStart(sourceFile) : -1\n const origEnd = hasPos ? node.getEnd() : -1\n\n // Pass 0: each() optimizations — dedup item() selectors + auto-wrap items in memo\n if (\n ts.isCallExpression(node) &&\n isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n ) {\n let current: ts.CallExpression = node\n let changed = false\n const memoWrapped = tryWrapEachItemsWithMemo(current, fieldBits, f)\n if (memoWrapped) {\n current = memoWrapped\n changed = true\n usesMemo = true\n }\n const deduped = tryDeduplicateItemSelectors(current, f, printer, sourceFile)\n if (deduped) {\n current = deduped\n changed = true\n }\n // Inject __mask for Phase 1 gating\n const masked = tryInjectStructuralMask(\n current,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (masked) {\n current = masked\n changed = true\n }\n if (changed) {\n const result = ts.visitEachChild(current, visitor, undefined!)\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n // Row factory: try after children are transformed\n if (ts.isCallExpression(result)) {\n try {\n const rf = tryEmitRowFactory(result, f, source)\n if (rf) return rf\n } catch (err) {\n const line = ts.getLineAndCharacterOfPosition(sourceFile, result.getStart())\n console.warn(\n `[llui] Row factory failed in ${_filename}:${line.line + 1} — ${(err as Error).message}`,\n )\n }\n }\n return result\n }\n }\n\n // Pass 1: Transform element helper calls to elSplit or elTemplate\n if (ts.isCallExpression(node)) {\n const transformed = tryTransformElementCall(\n node,\n importedHelpers,\n fieldBits,\n compiledHelpers,\n bailedHelpers,\n f,\n )\n if (transformed) {\n if (ts.isIdentifier(transformed.expression)) {\n if (transformed.expression.text === 'elTemplate') usesElTemplate = true\n else if (transformed.expression.text === 'elSplit') usesElSplit = true\n }\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(transformed, visitor, undefined!)\n }\n\n // Pass 2: Inject mask into text() calls\n const textTransformed = tryInjectTextMask(\n node,\n lluiImport,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (textTransformed) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return textTransformed\n }\n\n // Inject __mask into each()/branch()/show() options for Phase 1 gating\n const structuralMasked = tryInjectStructuralMask(\n node,\n viewHelperNames,\n viewHelperAliases,\n fieldBits,\n f,\n )\n if (structuralMasked) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(structuralMasked, visitor, undefined!)\n }\n }\n\n // Pass 2: Inject __dirty, __update, and __msgSchema into component() calls\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n let result = tryInjectDirty(node, fieldBits, f)\n if (result) usesApplyBinding = true\n if (devMode) {\n const schema = extractMsgSchema(source)\n if (schema) {\n result = injectMsgSchema(result ?? node, schema, f)\n }\n const stateSchema = extractStateSchema(source)\n if (stateSchema) {\n result = injectStateSchema(result ?? node, stateSchema.fields, f)\n }\n const effectSchema = extractEffectSchema(source)\n if (effectSchema) {\n result = injectEffectSchema(result ?? node, effectSchema, f)\n }\n result = injectComponentMeta(result ?? node, node, sourceFile, _filename, f)\n }\n if (result) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(result, visitor, undefined!)\n }\n }\n\n return ts.visitEachChild(node, visitor, undefined!)\n }\n\n let transformed = ts.visitNode(sourceFile, visitor) as ts.SourceFile\n\n // Pass 3: Clean up imports — use the old cleanupImports approach\n // which operates on the transformed SourceFile safely\n const safeToRemove = new Set([...compiledHelpers].filter((h) => !bailedHelpers.has(h)))\n transformed = cleanupImports(\n transformed,\n lluiImport,\n importedHelpers,\n safeToRemove,\n usesElSplit,\n usesElTemplate,\n usesMemo,\n usesApplyBinding,\n f,\n )\n\n if (edits.length === 0) return null\n\n // Find component declarations for HMR\n const componentDecls = devMode ? findComponentDeclarations(sourceFile, lluiImport) : []\n\n // Build per-statement edits by comparing original vs transformed.\n // Only emit edits for statements that actually changed.\n // Untouched code keeps its original positions → accurate source maps.\n const finalEdits: TransformEdit[] = []\n const origStmts = sourceFile.statements\n const xfStmts = transformed.statements\n\n for (let i = 0; i < origStmts.length && i < xfStmts.length; i++) {\n const origStart = origStmts[i]!.getStart(sourceFile)\n const origEnd = origStmts[i]!.getEnd()\n const origText = source.slice(origStart, origEnd)\n\n let xfText: string\n try {\n xfText = printer.printNode(ts.EmitHint.Unspecified, xfStmts[i]!, transformed)\n } catch {\n // Synthetic nodes may fail to print individually — fall back to full reprint\n const { top: _top, bottom: _bottom } = devMode\n ? generateDevCode(componentDecls, mcpPort)\n : { top: '', bottom: '' }\n const output =\n (_top ? _top + '\\n' : '') + printer.printFile(transformed) + (_bottom ? '\\n' + _bottom : '')\n return { output, edits: [{ start: 0, end: source.length, replacement: output }] }\n }\n\n // Compare ignoring trailing semicolons and whitespace (printer adds them)\n const origNorm = origText.trim().replace(/;$/, '')\n const xfNorm = xfText.trim().replace(/;$/, '')\n if (origNorm !== xfNorm) {\n // Match the original style: if the original didn't end with a semicolon,\n // strip the one the printer added\n const origHasSemi = origText.trimEnd().endsWith(';')\n const replacement = origHasSemi ? xfText : xfText.replace(/;(\\s*)$/, '$1')\n finalEdits.push({ start: origStart, end: origEnd, replacement })\n }\n }\n\n // Dev setup: enable* must run BEFORE user's mountApp (top of file),\n // but import.meta.hot.accept needs to reference user's component vars\n // (bottom of file). So split the injection.\n if (devMode) {\n const { top, bottom } = generateDevCode(componentDecls, mcpPort)\n if (top) finalEdits.push({ start: 0, end: 0, replacement: top + '\\n' })\n if (bottom)\n finalEdits.push({ start: source.length, end: source.length, replacement: '\\n' + bottom })\n }\n\n if (finalEdits.length === 0) return null\n\n // Build the full output by applying edits (for backward compat)\n const sorted = [...finalEdits].sort((a, b) => b.start - a.start)\n let output = source\n for (const edit of sorted) {\n output = output.slice(0, edit.start) + edit.replacement + output.slice(edit.end)\n }\n\n return { output, edits: finalEdits }\n}\n\n// ── HMR ──────────────────────────────────────────────────────────\n\nfunction generateDevCode(\n components: Array<{ varName: string; componentName: string }>,\n mcpPort: number | null,\n): { top: string; bottom: string } {\n if (components.length === 0) {\n return {\n top: '',\n bottom: `if (import.meta.hot) {\\n import.meta.hot.accept()\\n}`,\n }\n }\n\n const relayImport = mcpPort !== null ? ', startRelay as __startRelay' : ''\n const relayCall = mcpPort !== null ? `\\n__startRelay(${mcpPort})` : ''\n\n const top = `\nimport { enableHmr as __enableHmr, replaceComponent as __replaceComponent } from '@llui/dom/hmr'\nimport { enableDevTools as __enableDevTools${relayImport} } from '@llui/dom/devtools'\n__enableHmr()\n__enableDevTools()${relayCall}\n`.trim()\n\n const replaceCalls = components\n .map(({ varName, componentName }) => ` __replaceComponent(\"${componentName}\", ${varName})`)\n .join('\\n')\n\n // HMR auto-connect: when the Vite plugin detects that @llui/mcp's\n // active marker file exists or appears, it sends `llui:mcp-ready`\n // with the MCP bridge port. We forward that to __lluiConnect so the\n // browser connects automatically — no console gymnastics, no retry\n // spam, regardless of whether MCP or Vite started first.\n const mcpHmrHandler =\n mcpPort !== null\n ? `\n import.meta.hot.on('llui:mcp-ready', (data) => {\n if (typeof globalThis.__lluiConnect === 'function') {\n globalThis.__lluiConnect(data?.port)\n }\n })`\n : ''\n\n const bottom = `\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n${replaceCalls}\n })${mcpHmrHandler}\n}\n`.trim()\n\n return { top, bottom }\n}\n\n/** Find all component() calls and extract the variable name and component name */\nfunction findComponentDeclarations(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n): Array<{ varName: string; componentName: string }> {\n const result: Array<{ varName: string; componentName: string }> = []\n\n function visit(node: ts.Node): void {\n // Match: const Foo = component({ name: 'Foo', ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n isComponentCall(node.initializer, lluiImport)\n ) {\n const varName = node.name.text\n const config = node.initializer.arguments[0]\n if (config && ts.isObjectLiteralExpression(config)) {\n for (const prop of config.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n result.push({ varName, componentName: prop.initializer.text })\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n return result\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nfunction findLluiImport(sf: ts.SourceFile): ts.ImportDeclaration | null {\n for (const stmt of sf.statements) {\n if (\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom'\n ) {\n return stmt\n }\n }\n return null\n}\n\nfunction getImportedHelpers(imp: ts.ImportDeclaration): Map<string, string> {\n const map = new Map<string, string>()\n const clause = imp.importClause\n if (!clause || !clause.namedBindings || !ts.isNamedImports(clause.namedBindings)) return map\n\n for (const spec of clause.namedBindings.elements) {\n const original = (spec.propertyName ?? spec.name).text\n const local = spec.name.text\n if (ELEMENT_HELPERS.has(original)) {\n map.set(local, original)\n }\n }\n return map\n}\n\nfunction hasReactiveAccessors(sf: ts.SourceFile): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (node.expression.text === 'text' || node.expression.text === 'component') {\n found = true\n }\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\nfunction hasComponentDef(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n found = true\n return\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\n/**\n * Scan for `component({ view: (h) => ... })` arrow functions and collect\n * the identifier name used as the View-bundle parameter. When the user\n * writes `h.show(...)` / `h.text(...)` inside the view, the compiler treats\n * it the same as bare `show(...)` / `text(...)` for mask injection.\n */\nfunction collectViewHelperNames(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): Set<string> {\n const names = new Set<string>()\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isIdentifier(first.name)) {\n names.add(first.name.text)\n }\n }\n }\n }\n }\n }\n // Also: any function parameter annotated as `View<...>` — covers extracted\n // view-functions like `function repoPage(h: View<State, Msg>, ...)`.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isIdentifier(node.name)\n ) {\n names.add(node.name.text)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return names\n}\n\nfunction isViewTypeReference(t: ts.TypeNode): boolean {\n return ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName) && t.typeName.text === 'View'\n}\n\n/**\n * Scan for `component({ view: ({ show, each, text, ... }) => ... })`\n * destructured parameters and return a map from the locally-bound name to\n * the primitive name it aliases. This lets users write the bare `show(...)` /\n * `text(...)` forms without importing them, while the compiler still\n * applies mask injection etc.\n *\n * view: ({ show, text: t }) => [...]\n * // returns { show → \"show\", t → \"text\" }\n */\nconst VIEW_HELPER_PRIMITIVES = new Set([\n 'show',\n 'branch',\n 'each',\n 'text',\n 'memo',\n 'selector',\n 'ctx',\n 'slice',\n 'send',\n])\n\nfunction collectViewHelperAliases(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n helperNames: Set<string>,\n): Map<string, string> {\n const aliases = new Map<string, string>()\n function addFromBindingPattern(pattern: ts.ObjectBindingPattern): void {\n for (const elem of pattern.elements) {\n // { show } → propertyName=undefined, name=show\n // { show: mySh } → propertyName=show, name=mySh\n const sourceName =\n elem.propertyName && ts.isIdentifier(elem.propertyName)\n ? elem.propertyName.text\n : ts.isIdentifier(elem.name)\n ? elem.name.text\n : null\n const localName = ts.isIdentifier(elem.name) ? elem.name.text : null\n if (sourceName && localName && VIEW_HELPER_PRIMITIVES.has(sourceName)) {\n aliases.set(localName, sourceName)\n }\n }\n }\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isObjectBindingPattern(first.name)) {\n addFromBindingPattern(first.name)\n }\n }\n }\n }\n }\n }\n // Also: function parameters like `(…, { show, text }: View<State, Msg>) => …`\n // on extracted helpers — allow the same destructuring ergonomics.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isObjectBindingPattern(node.name)\n ) {\n addFromBindingPattern(node.name)\n }\n // Also: `const { show, text } = h` assignments where `h` is a known\n // helper binding — lets helpers destructure once at the top of the\n // function body.\n if (\n ts.isVariableDeclaration(node) &&\n ts.isObjectBindingPattern(node.name) &&\n node.initializer &&\n ts.isIdentifier(node.initializer) &&\n helperNames.has(node.initializer.text)\n ) {\n addFromBindingPattern(node.name)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return aliases\n}\n\nfunction isComponentCall(node: ts.CallExpression, lluiImport: ts.ImportDeclaration): boolean {\n if (!ts.isIdentifier(node.expression)) return false\n const name = node.expression.text\n if (name !== 'component') return false\n // Verify it's from the llui import\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return false\n return clause.namedBindings.elements.some(\n (s) => s.name.text === 'component' || (s.propertyName && s.propertyName.text === 'component'),\n )\n}\n\nfunction emitStaticProp(\n staticProps: ts.Statement[],\n f: ts.NodeFactory,\n kind: BindingKind,\n resolvedKey: string,\n value: ts.Expression,\n): void {\n switch (kind) {\n case 'class':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'className'),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'prop':\n staticProps.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), resolvedKey),\n ts.SyntaxKind.EqualsToken,\n value,\n ),\n ),\n )\n break\n case 'style':\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'style'),\n 'setProperty',\n ),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n break\n default: // attr\n staticProps.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__e'), 'setAttribute'),\n undefined,\n [f.createStringLiteral(resolvedKey), value],\n ),\n ),\n )\n }\n}\n\n// ── Pass 1: Element → elSplit ────────────────────────────────────\n\nfunction tryTransformElementCall(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n compiled: Set<string>,\n bailed: Set<string>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const originalName = helpers.get(localName)\n if (!originalName) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // Normalize to props=undefined, children=firstArg so downstream logic works.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) {\n bailed.add(localName)\n return null\n }\n // Bail on spread assignments (`...parts.root`) — the compiler cannot\n // statically classify spread contents, and silently dropping them would\n // break consumers (e.g. @llui/components parts spreading). Fall back to\n // the runtime element helper so spreads are applied normally.\n if (\n propsArg &&\n ts.isObjectLiteralExpression(propsArg) &&\n propsArg.properties.some((p) => ts.isSpreadAssignment(p))\n ) {\n bailed.add(localName)\n return null\n }\n\n const tag = f.createStringLiteral(originalName)\n\n // Classify props\n const staticProps: ts.Statement[] = []\n const events: ts.ArrayLiteralExpression[] = []\n const bindings: ts.ArrayLiteralExpression[] = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n // Handle both PropertyAssignment (key: value) and ShorthandPropertyAssignment ({ id })\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) continue\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name // The identifier itself is the value\n } else {\n continue\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n const eventName = key.slice(2).toLowerCase()\n events.push(f.createArrayLiteralExpression([f.createStringLiteral(eventName), value]))\n continue\n }\n\n // If the value is an Identifier that refers to a local const-bound\n // arrow/function, resolve it and treat it as if the arrow had been\n // inlined. Without this, `class: cls` where `const cls = (s) => ...`\n // falls through to the static path and emits `.className = cls`,\n // coercing the function to its source string in the DOM.\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding — value is an arrow function or function expression\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, readsState } = computeAccessorMask(value, fieldBits)\n\n // Zero-mask constant folding: accessor doesn't read state → treat as static\n if (mask === 0 && !readsState) {\n emitStaticProp(\n staticProps,\n f,\n kind,\n resolvedKey,\n f.createCallExpression(value, undefined, []),\n )\n continue\n }\n\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Call expression — check if it's a per-item accessor: item(t => t.field)\n if (ts.isCallExpression(value)) {\n if (isPerItemCall(value)) {\n // Emit as a binding with FULL_MASK — the accessor is the item() call itself\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n // Unknown call expression — bail out\n bailed.add(localName)\n return null\n }\n\n // Per-item property access: item.field — equivalent to item(t => t.field)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup pass.\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push(\n f.createArrayLiteralExpression([\n createMaskLiteral(f, 0xffffffff | 0),\n f.createStringLiteral(kind),\n f.createStringLiteral(resolvedKey),\n value,\n ]),\n )\n continue\n }\n\n // Static prop\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n emitStaticProp(staticProps, f, kind, resolvedKey, value)\n }\n }\n\n // Build elSplit args\n const staticFn =\n staticProps.length > 0\n ? f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(staticProps, true),\n )\n : f.createNull()\n\n const eventsArr = events.length > 0 ? f.createArrayLiteralExpression(events) : f.createNull()\n\n const bindingsArr =\n bindings.length > 0 ? f.createArrayLiteralExpression(bindings) : f.createNull()\n\n const children = usesChildrenOnlyOverload\n ? node.arguments[0]!\n : (node.arguments[1] ?? f.createNull())\n\n compiled.add(localName)\n\n // Subtree collapse: if children contain nested element helpers,\n // collapse the entire tree into a single elTemplate() call\n const analyzed = analyzeSubtree(node, helpers, fieldBits, [])\n if (analyzed && hasNestedElements(analyzed)) {\n // Mark all descendant helpers as compiled for import cleanup\n collectUsedHelpers(analyzed, compiled)\n const templateCall = emitSubtreeTemplate(analyzed, fieldBits, f)\n return templateCall\n }\n\n // Static subtree prerendering: if no events, no bindings, and children\n // are all static text, emit a <template> clone\n if (events.length === 0 && bindings.length === 0 && isStaticChildren(children)) {\n const html = buildStaticHTML(originalName, staticProps, children, f)\n if (html) {\n return emitTemplateClone(html, f) as ts.CallExpression\n }\n }\n\n const call = f.createCallExpression(f.createIdentifier('elSplit'), undefined, [\n tag,\n staticFn,\n eventsArr,\n bindingsArr,\n children,\n ])\n ts.addSyntheticLeadingComment(call, ts.SyntaxKind.MultiLineCommentTrivia, '@__PURE__', false)\n return call\n}\n\n// ── Pass 2: Mask injection ───────────────────────────────────────\n\n/**\n * Match a call expression against a primitive name across all three binding\n * forms:\n * - bare imported identifier: `name(...)` where `name` was imported from @llui/dom\n * - destructured alias: `name(...)` where `name` is bound via\n * `view: (_, { name }) => ...` (or `{ name: alias }`)\n * - member call: `<h>.name(...)` where `<h>` is the 2nd view parameter\n *\n * The compiler treats all three identically for mask injection / each()\n * optimization purposes.\n */\nfunction isHelperCall(\n expr: ts.Expression,\n name: string,\n helperNames: Set<string>,\n aliases?: Map<string, string>,\n): boolean {\n if (ts.isIdentifier(expr)) {\n if (expr.text === name) return true\n if (aliases && aliases.get(expr.text) === name) return true\n return false\n }\n if (\n ts.isPropertyAccessExpression(expr) &&\n ts.isIdentifier(expr.expression) &&\n helperNames.has(expr.expression.text) &&\n ts.isIdentifier(expr.name) &&\n expr.name.text === name\n ) {\n return true\n }\n return false\n}\n\nfunction tryInjectTextMask(\n node: ts.CallExpression,\n lluiImport: ts.ImportDeclaration,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (!isHelperCall(node.expression, 'text', viewHelperNames, viewHelperAliases)) {\n return null\n }\n\n // For a bare identifier `text`, verify it actually resolves to the @llui/dom\n // import (otherwise a user-defined `text` in scope would be rewritten).\n // Destructured-alias and member-expression forms are already provenance-safe.\n if (ts.isIdentifier(node.expression) && !viewHelperAliases.has(node.expression.text)) {\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return null\n const hasText = clause.namedBindings.elements.some(\n (s) => s.name.text === 'text' || s.propertyName?.text === 'text',\n )\n if (!hasText) return null\n }\n\n const firstArg = node.arguments[0]\n if (!firstArg) return null\n // Only inject mask for accessor functions, not static strings\n if (!ts.isArrowFunction(firstArg) && !ts.isFunctionExpression(firstArg)) return null\n // Don't inject if mask already provided\n if (node.arguments.length >= 2) return null\n\n const { mask } = computeAccessorMask(firstArg, fieldBits)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n firstArg,\n createMaskLiteral(f, mask === 0 ? 0xffffffff | 0 : mask),\n ])\n}\n\n/**\n * Inject `__mask` into the options object of each()/branch()/show() calls.\n *\n * Analyzes the driving accessor (`items` for each, `on` for branch, `when`\n * for show) and computes the bitmask of state fields it reads. The runtime\n * uses this to skip Phase 1 reconciliation when irrelevant state changed\n * (e.g., each() that reads `rows` is skipped when only `selected` changed).\n */\nfunction tryInjectStructuralMask(\n node: ts.CallExpression,\n viewHelperNames: Set<string>,\n viewHelperAliases: Map<string, string>,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n\n // Match each(), branch(), show() — bare, aliased, or member-call\n const isEach = isHelperCall(node.expression, 'each', viewHelperNames, viewHelperAliases)\n const isBranch = isHelperCall(node.expression, 'branch', viewHelperNames, viewHelperAliases)\n const isShow = isHelperCall(node.expression, 'show', viewHelperNames, viewHelperAliases)\n if (!isEach && !isBranch && !isShow) return null\n\n const optsArg = node.arguments[0]\n if (!optsArg || !ts.isObjectLiteralExpression(optsArg)) return null\n\n // Already has __mask\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n return null\n }\n }\n\n // Find the driving accessor property: items/on/when\n const driverProp = isEach ? 'items' : isBranch ? 'on' : 'when'\n let driverAccessor: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of optsArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n driverAccessor = prop.initializer\n }\n break\n }\n }\n\n if (!driverAccessor) return null\n\n const { mask } = computeAccessorMask(driverAccessor, fieldBits)\n if (mask === 0 || mask === (0xffffffff | 0)) return null // no benefit\n\n // Inject __mask into the options object\n const maskProp = f.createPropertyAssignment('__mask', createMaskLiteral(f, mask))\n const newProps = [...optsArg.properties, maskProp]\n const newOpts = f.createObjectLiteralExpression(newProps, optsArg.properties.hasTrailingComma)\n return f.createCallExpression(node.expression, node.typeArguments, [\n newOpts,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction tryInjectDirty(\n node: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n if (fieldBits.size === 0) return null\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n\n // Check if __dirty already exists\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__dirty'\n ) {\n return null\n }\n }\n\n // Build __dirty: (o, n) => (Object.is(o.field, n.field) ? 0 : bit) | ...\n // Compare at top-level field (depth 1) — nested path changes within a\n // field must trigger the bit even if the specific sub-path isn't tracked.\n // e.g., route.page tracked but route.data changes → must fire.\n const topLevelBits = new Map<string, number>()\n for (const [path, bit] of fieldBits) {\n const topField = path.split('.')[0]!\n topLevelBits.set(topField, (topLevelBits.get(topField) ?? 0) | bit)\n }\n\n const comparisons: ts.Expression[] = []\n for (const [field, bit] of topLevelBits) {\n const oAccess = buildAccess(f, 'o', [field])\n const nAccess = buildAccess(f, 'n', [field])\n\n comparisons.push(\n f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [oAccess, nAccess],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, bit),\n ),\n ),\n )\n }\n\n let dirtyBody: ts.Expression = comparisons[0]!\n for (let i = 1; i < comparisons.length; i++) {\n dirtyBody = f.createBinaryExpression(dirtyBody, ts.SyntaxKind.BarToken, comparisons[i]!)\n }\n\n // Fallback: if no tracked bit fired but the state reference changed, some\n // untracked field must have changed — return FULL_MASK so bindings whose\n // accessors came from external modules (spread parts) still fire.\n // tracked || (Object.is(o, n) ? 0 : FULL_MASK)\n const fallback = f.createParenthesizedExpression(\n f.createConditionalExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Object'), 'is'),\n undefined,\n [f.createIdentifier('o'), f.createIdentifier('n')],\n ),\n f.createToken(ts.SyntaxKind.QuestionToken),\n f.createNumericLiteral(0),\n f.createToken(ts.SyntaxKind.ColonToken),\n createMaskLiteral(f, -1),\n ),\n )\n dirtyBody = f.createBinaryExpression(\n f.createParenthesizedExpression(dirtyBody),\n ts.SyntaxKind.BarBarToken,\n fallback,\n )\n\n const dirtyFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'o'),\n f.createParameterDeclaration(undefined, undefined, 'n'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n dirtyBody,\n )\n\n const dirtyProp = f.createPropertyAssignment('__dirty', dirtyFn)\n\n // __maskLegend: maps each top-level state field to the bit(s) that fire when\n // it changes. Lets introspection tools decode runtime dirty masks to field names.\n const legendProps: ts.PropertyAssignment[] = []\n for (const [field, bit] of topLevelBits) {\n legendProps.push(f.createPropertyAssignment(field, createMaskLiteral(f, bit)))\n }\n const legendProp = f.createPropertyAssignment(\n '__maskLegend',\n f.createObjectLiteralExpression(legendProps, false),\n )\n\n // Structural mask — used by both __update and __handlers\n const structuralMask = computeStructuralMask(configArg, fieldBits)\n const phase2Mask = computePhase2Mask(configArg, fieldBits)\n\n const updateBody = buildUpdateBody(f, structuralMask, phase2Mask)\n const updateFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 's'),\n f.createParameterDeclaration(undefined, undefined, 'd'),\n f.createParameterDeclaration(undefined, undefined, 'b'),\n f.createParameterDeclaration(undefined, undefined, 'bl'),\n f.createParameterDeclaration(undefined, undefined, 'p'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n updateBody,\n )\n const updateProp = f.createPropertyAssignment('__update', updateFn)\n\n // __handlers: per-message-type specialized update functions.\n // Analyzes the update() switch/case and generates direct handlers\n // that bypass the generic Phase 1/2 pipeline for single-message updates.\n const handlersProp = tryBuildHandlers(configArg, topLevelBits, structuralMask, f)\n\n // Keep __update even when __handlers is present — it provides Phase 1\n // mask gating for multi-message batches that bypass __handlers.\n const extraProps = [dirtyProp, legendProp, updateProp]\n if (handlersProp) extraProps.push(handlersProp)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, ...extraProps], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n/**\n * Analyze update() switch/case and generate per-message-type handlers.\n *\n * Each handler receives (inst, msg) and returns [newState, effects].\n * The handler calls update() to get the new state, then directly invokes\n * the appropriate runtime primitives (reconcileItems, __directUpdate, etc.)\n * instead of going through the generic Phase 1/2 pipeline.\n *\n * Conservative: only generates handlers for cases where the field\n * modifications are statically determinable. Complex cases are skipped.\n */\nfunction tryBuildHandlers(\n configArg: ts.ObjectLiteralExpression,\n topLevelBits: Map<string, number>,\n structuralMask: number,\n f: ts.NodeFactory,\n): ts.PropertyAssignment | null {\n if (topLevelBits.size === 0) return null\n\n // Find the update function in the component config\n let updateFn: ts.ArrowFunction | ts.FunctionExpression | null = null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'update'\n ) {\n if (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer)) {\n updateFn = prop.initializer\n }\n break\n }\n }\n if (!updateFn) return null\n\n // Find the switch statement in the update body\n const body = ts.isBlock(updateFn.body) ? updateFn.body : null\n if (!body) return null\n\n let switchStmt: ts.SwitchStatement | null = null\n for (const stmt of body.statements) {\n if (ts.isSwitchStatement(stmt)) {\n switchStmt = stmt\n break\n }\n }\n if (!switchStmt) return null\n\n // Check the switch discriminant is msg.type pattern\n const stateParam = updateFn.parameters[0]?.name\n const msgParam = updateFn.parameters[1]?.name\n if (!stateParam || !msgParam || !ts.isIdentifier(stateParam) || !ts.isIdentifier(msgParam))\n return null\n const stateName = stateParam.text\n const _msgName = msgParam.text\n\n // Analyze each case clause\n const handlers: ts.PropertyAssignment[] = []\n\n for (const clause of switchStmt.caseBlock.clauses) {\n if (!ts.isCaseClause(clause)) continue\n\n // Extract the case label — must be a string literal like 'select'\n if (!ts.isStringLiteral(clause.expression)) continue\n const msgType = clause.expression.text\n\n // Collect ALL return [newState, effects] statements recursively from the\n // case body. Multiple returns (from if/else branches) must all be analyzed\n // so the handler's dirty mask covers every possible modified field.\n const returnExprs: ts.ArrayLiteralExpression[] = []\n const collectReturns = (node: ts.Node): void => {\n if (\n ts.isReturnStatement(node) &&\n node.expression &&\n ts.isArrayLiteralExpression(node.expression) &&\n node.expression.elements.length >= 2\n ) {\n returnExprs.push(node.expression)\n return\n }\n // Don't descend into nested functions — their returns are unrelated.\n if (\n ts.isFunctionDeclaration(node) ||\n ts.isFunctionExpression(node) ||\n ts.isArrowFunction(node) ||\n ts.isMethodDeclaration(node)\n ) {\n return\n }\n ts.forEachChild(node, collectReturns)\n }\n for (const stmt of clause.statements) {\n collectReturns(stmt)\n }\n if (returnExprs.length === 0) continue\n\n // Union modified fields across all return paths.\n const allModified = new Set<string>()\n let bailOut = false\n for (const returnExpr of returnExprs) {\n const stateExpr = returnExpr.elements[0]!\n const fields = analyzeModifiedFields(stateExpr, stateName, topLevelBits)\n if (!fields) {\n bailOut = true\n break\n }\n for (const f of fields) allModified.add(f)\n }\n if (bailOut) continue // at least one return path was too complex\n\n const modifiedFields = Array.from(allModified)\n\n // Compute the dirty mask for this case\n let caseDirty = 0\n for (const field of modifiedFields) {\n caseDirty |= topLevelBits.get(field) ?? 0xffffffff | 0\n }\n\n // Detect array operation pattern for structural block optimization\n const arrayOp = detectArrayOp(clause, stateName, modifiedFields, structuralMask, caseDirty)\n\n const handler = buildCaseHandler(f, caseDirty, arrayOp)\n handlers.push(f.createPropertyAssignment(f.createStringLiteral(msgType), handler))\n }\n\n if (handlers.length === 0) return null\n\n return f.createPropertyAssignment('__handlers', f.createObjectLiteralExpression(handlers, true))\n}\n\ntype ArrayOp =\n | 'none'\n | 'clear'\n | 'mutate'\n | 'remove'\n | 'general'\n | { type: 'strided'; stride: number } // for (i = 0; i < len; i += stride) pattern\n\n/**\n * Detect the array operation pattern in a case body.\n * - 'none': no array field modified (e.g., only `selected` changes)\n * - 'clear': array set to empty literal `[]`\n * - 'mutate': array created via `.slice()` then mutated in place (same keys)\n * - 'general': unknown pattern, use generic reconcile\n */\nfunction detectArrayOp(\n clause: ts.CaseClause,\n stateName: string,\n modifiedFields: string[],\n structuralMask?: number,\n caseDirty?: number,\n): ArrayOp {\n // No fields modified or dirty bits don't intersect any structural block →\n // skip structural blocks entirely (e.g., only `selected` changes)\n if (modifiedFields.length === 0) return 'none'\n if (structuralMask !== undefined && caseDirty !== undefined && (structuralMask & caseDirty) === 0)\n return 'none'\n\n // Look at the return expression's array field values\n for (const stmt of clause.statements) {\n const returnExpr = findReturnArray(stmt)\n if (!returnExpr) continue\n\n const stateExpr = returnExpr.elements[0]\n if (!stateExpr || !ts.isObjectLiteralExpression(stateExpr)) continue\n\n for (const prop of stateExpr.properties) {\n const name =\n ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)\n ? prop.name.text\n : ts.isShorthandPropertyAssignment(prop)\n ? prop.name.text\n : null\n if (!name) continue\n\n // Check for empty array literal: `field: []`\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isArrayLiteralExpression(prop.initializer) &&\n prop.initializer.elements.length === 0\n ) {\n return 'clear'\n }\n\n // Check for shorthand `field` where field was assigned via `.slice()` earlier\n // This catches: `const rows = state.rows.slice(); rows[i] = ...; return { ...state, rows }`\n if (ts.isShorthandPropertyAssignment(prop)) {\n const varName = prop.name.text\n if (hasSliceAssignment(clause, stateName, varName)) {\n // Check for strided for-loop: for (let i = 0; i < arr.length; i += STRIDE)\n const stride = detectStrideLoop(clause, varName)\n if (stride > 1) return { type: 'strided', stride }\n return 'mutate'\n }\n }\n\n // Check for property assignment with filter: `field: state.field.filter(...)`\n if (ts.isPropertyAssignment(prop) && ts.isCallExpression(prop.initializer)) {\n const call = prop.initializer\n if (\n ts.isPropertyAccessExpression(call.expression) &&\n call.expression.name.text === 'filter'\n ) {\n return 'remove'\n }\n }\n }\n }\n\n return 'general'\n}\n\nfunction findReturnArray(stmt: ts.Statement): ts.ArrayLiteralExpression | null {\n if (ts.isReturnStatement(stmt) && stmt.expression && ts.isArrayLiteralExpression(stmt.expression))\n return stmt.expression\n if (ts.isBlock(stmt)) {\n for (const inner of stmt.statements) {\n const result = findReturnArray(inner)\n if (result) return result\n }\n }\n return null\n}\n\n/**\n * Detect a strided for-loop: `for (let i = 0; i < arr.length; i += STRIDE)`\n * where `arr` is the named variable. Returns the stride or 0 if not found.\n */\nfunction detectStrideLoop(clause: ts.CaseClause, _arrName: string): number {\n function walk(node: ts.Node): number {\n if (ts.isForStatement(node) && node.incrementor) {\n // Check incrementor: i += STRIDE\n const inc = node.incrementor\n if (\n ts.isBinaryExpression(inc) &&\n inc.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken &&\n ts.isNumericLiteral(inc.right)\n ) {\n const stride = parseInt(inc.right.text, 10)\n if (stride > 1) return stride\n }\n }\n return ts.forEachChild(node, walk) ?? 0\n }\n for (const stmt of clause.statements) {\n const result = walk(stmt)\n if (result > 0) return result\n }\n return 0\n}\n\nfunction hasSliceAssignment(clause: ts.CaseClause, stateName: string, varName: string): boolean {\n function walk(node: ts.Node): boolean {\n // Look for: const varName = stateName.field.slice()\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === varName &&\n node.initializer\n ) {\n const init = node.initializer\n if (\n ts.isCallExpression(init) &&\n ts.isPropertyAccessExpression(init.expression) &&\n init.expression.name.text === 'slice'\n ) {\n return true\n }\n }\n return ts.forEachChild(node, walk) ?? false\n }\n for (const stmt of clause.statements) {\n if (walk(stmt)) return true\n }\n return false\n}\n\n/**\n * Analyze which top-level state fields are modified in a return expression.\n * Returns the set of field names, or null if too complex to determine.\n */\nfunction analyzeModifiedFields(\n stateExpr: ts.Expression,\n stateName: string,\n topLevelBits: Map<string, number>,\n): string[] | null {\n // Pattern: { ...state, field1: ..., field2: ... } or { field1: ..., field2: ... }\n if (ts.isObjectLiteralExpression(stateExpr)) {\n const modified: string[] = []\n for (const prop of stateExpr.properties) {\n if (ts.isSpreadAssignment(prop)) {\n // { ...state } — the spread doesn't modify fields\n continue\n }\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n const fieldName = prop.name.text\n if (topLevelBits.has(fieldName)) {\n modified.push(fieldName)\n }\n }\n // Handle shorthand: { ...state, rows } where rows is a local variable\n if (ts.isShorthandPropertyAssignment(prop)) {\n const fieldName = prop.name.text\n if (topLevelBits.has(fieldName)) {\n modified.push(fieldName)\n }\n }\n }\n return modified.length > 0 ? modified : null\n }\n\n // Pattern: state (no change — early return)\n if (ts.isIdentifier(stateExpr) && stateExpr.text === stateName) {\n return [] // no fields modified\n }\n\n return null // too complex\n}\n\n/**\n * Build a handler function for a specific message type case.\n *\n * Generated: (inst, msg) => {\n * const [s, e] = inst.def.update(inst.state, msg)\n * inst.state = s\n * const bl = inst.structuralBlocks, b = inst.allBindings, p = b.length\n * // Phase 1: gated by caseDirty\n * for (let i = 0; i < bl.length; i++) {\n * if (bl[i].mask & caseDirty) bl[i].reconcile(s, caseDirty)\n * }\n * // Phase 2\n * __runPhase2(s, caseDirty, b, p)\n * return [s, e]\n * }\n */\n/**\n * Build a handler that delegates to __handleMsg(inst, msg, dirty, method).\n * method: 0=reconcile, 1=reconcileItems, 2=reconcileClear, 3=reconcileRemove, -1=skip blocks\n */\nfunction buildCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const method =\n typeof arrayOp === 'object' && arrayOp.type === 'strided'\n ? 10 + arrayOp.stride // reconcileChanged with stride\n : arrayOp === 'none'\n ? -1\n : arrayOp === 'mutate'\n ? 1\n : arrayOp === 'clear'\n ? 2\n : arrayOp === 'remove'\n ? 3\n : 0 // general\n\n // (inst, msg) => __handleMsg(inst, msg, dirty, method)\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createCallExpression(f.createIdentifier('__handleMsg'), undefined, [\n f.createIdentifier('inst'),\n f.createIdentifier('msg'),\n createMaskLiteral(f, caseDirty),\n method >= 0\n ? f.createNumericLiteral(method)\n : f.createPrefixUnaryExpression(ts.SyntaxKind.MinusToken, f.createNumericLiteral(1)),\n ]),\n )\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction _deadCode_legacyCaseHandler(\n f: ts.NodeFactory,\n caseDirty: number,\n arrayOp: ArrayOp,\n): ts.ArrowFunction {\n const stmts: ts.Statement[] = []\n\n // const [s, e] = inst.def.update(inst.state, msg)\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n f.createArrayBindingPattern([\n f.createBindingElement(undefined, undefined, 's'),\n f.createBindingElement(undefined, undefined, 'e'),\n ]),\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'def'),\n 'update',\n ),\n undefined,\n [\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n f.createIdentifier('msg'),\n ],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // inst.state = s\n stmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'state'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('s'),\n ),\n ),\n )\n\n // Phase 1 + Phase 2, specialized by array operation pattern\n if (caseDirty !== 0) {\n // Determine the reconcile method based on array operation\n const reconcileMethod =\n arrayOp === 'clear'\n ? 'reconcileClear'\n : arrayOp === 'mutate'\n ? 'reconcileItems'\n : arrayOp === 'remove'\n ? 'reconcileRemove'\n : 'reconcile'\n\n if (arrayOp === 'none') {\n // No structural changes — skip Phase 1, only run Phase 2\n // (e.g., select: only selector binding needs updating)\n } else {\n // Phase 1: call specialized reconciler on matching blocks\n // const bl = inst.structuralBlocks\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bl',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'structuralBlocks'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // for (let i = 0; i < bl.length; i++) { if (bl[i].mask & dirty) bl[i].METHOD(s, dirty) }\n const blockEl = f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n )\n const reconcileArgs =\n reconcileMethod === 'reconcileClear'\n ? []\n : [\n f.createIdentifier('s'),\n ...(reconcileMethod === 'reconcile' ? [createMaskLiteral(f, caseDirty)] : []),\n ]\n\n stmts.push(\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(blockEl, 'mask'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, caseDirty),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n // Use specialized method if available, fall back to reconcile\n // bl[i].reconcileItems?.(s) ?? bl[i].reconcile(s, dirty)\n // Simplified: just call the method — it exists on each() blocks\n f.createPropertyAccessExpression(blockEl, reconcileMethod),\n undefined,\n reconcileArgs as ts.Expression[],\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n )\n }\n\n // Phase 2: compact + update bindings\n // const b = inst.allBindings, p = b.length\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'b',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('inst'), 'allBindings'),\n ),\n f.createVariableDeclaration(\n 'p',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // __runPhase2(s, caseDirty, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n createMaskLiteral(f, caseDirty),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n }\n\n // return [s, e]\n stmts.push(\n f.createReturnStatement(\n f.createArrayLiteralExpression([f.createIdentifier('s'), f.createIdentifier('e')]),\n ),\n )\n\n return f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'inst'),\n f.createParameterDeclaration(undefined, undefined, 'msg'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n}\n\n// ── Row Factory ─────────────────────────────────────────────────\n\n/**\n * Transform an eligible each() render to use a row factory — shared update\n * function with zero per-row closures for bindings.\n *\n * Runs AFTER the element transform pass has converted tr/td/text() calls\n * into elTemplate() calls, so we can analyze the template structure.\n */\nfunction tryEmitRowFactory(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n _originalSource: string,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n const body = ts.isBlock(renderFn.body) ? renderFn.body : null\n if (!body) return null\n\n // Find the elTemplate call in the transformed render body\n let templateCall: ts.CallExpression | null = null\n let templateVarName: string | null = null\n\n for (const stmt of body.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (\n ts.isIdentifier(decl.name) &&\n decl.initializer &&\n ts.isCallExpression(decl.initializer)\n ) {\n if (\n ts.isIdentifier(decl.initializer.expression) &&\n decl.initializer.expression.text === 'elTemplate'\n ) {\n if (templateCall) return null // multiple templates — bail\n templateCall = decl.initializer\n templateVarName = decl.name.text\n }\n }\n }\n }\n // Check for nested structural primitives — bail\n if (containsStructuralCall(stmt)) return null\n // Bail on selector.bind() — row factory + selector causes V8 deopt\n // even without per-row disposers (selector fn declarations per render)\n if (_containsSelectorBind(stmt)) return null\n }\n\n if (!templateCall || templateCall.arguments.length < 2) return null\n\n // Extract HTML string\n const htmlArg = templateCall.arguments[0]\n if (!htmlArg || !ts.isStringLiteral(htmlArg)) return null\n const html = htmlArg.text\n\n // Extract patch function\n const patchFn = templateCall.arguments[1]\n if (!patchFn || (!ts.isArrowFunction(patchFn) && !ts.isFunctionExpression(patchFn))) return null\n const patchBody = ts.isBlock(patchFn.body) ? patchFn.body : null\n if (!patchBody) return null\n\n const rootParam = patchFn.parameters[0]\n const bindParam = patchFn.parameters[1]\n if (!rootParam || !bindParam) return null\n const rootName = ts.isIdentifier(rootParam.name) ? rootParam.name.text : null\n const bindName = ts.isIdentifier(bindParam.name) ? bindParam.name.text : null\n if (!rootName || !bindName) return null\n\n // Extract bindings from patch function\n interface RowBinding {\n nodeInitializer: ts.Expression // the node path expression (e.g., root.firstChild)\n kind: string\n key: string | undefined\n accessor: ts.Expression\n }\n const bindings: RowBinding[] = []\n const nodeVarInitializers = new Map<string, ts.Expression>()\n\n for (const stmt of patchBody.statements) {\n if (ts.isVariableStatement(stmt)) {\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.initializer) {\n nodeVarInitializers.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n if (ts.isExpressionStatement(stmt) && ts.isCallExpression(stmt.expression)) {\n const call = stmt.expression\n if (\n ts.isIdentifier(call.expression) &&\n call.expression.text === bindName &&\n call.arguments.length >= 5\n ) {\n const nodeArg = call.arguments[0]!\n const maskArg = call.arguments[1]!\n const kindArg = call.arguments[2]!\n const keyArg = call.arguments[3]!\n const accessorArg = call.arguments[4]!\n\n // Must be per-item (mask -1)\n if (ts.isPrefixUnaryExpression(maskArg) && maskArg.operator === ts.SyntaxKind.MinusToken) {\n // -1 → per-item ✓\n } else if (ts.isBinaryExpression(maskArg)) {\n // -1 | 0 or 4294967295 | 0 → per-item ✓\n } else {\n return null // state-level binding — bail\n }\n\n const kind = ts.isStringLiteral(kindArg) ? kindArg.text : ''\n const key = ts.isStringLiteral(keyArg) ? keyArg.text : undefined\n\n // Resolve node path — recursively expand variable references to get\n // the full path from root, then create fresh factory nodes\n function resolveNodePath(expr: ts.Expression): ts.Expression {\n if (ts.isIdentifier(expr)) {\n if (expr.text === rootName) return f.createIdentifier(rootName)\n const init = nodeVarInitializers.get(expr.text)\n if (init) return resolveNodePath(init)\n return f.createIdentifier(expr.text)\n }\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n resolveNodePath(expr.expression),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n resolveNodePath(expr.expression),\n expr.argumentExpression,\n )\n }\n return expr\n }\n const nodeInit = resolveNodePath(nodeArg)\n\n // Clone accessor to strip source position — prevents mixed-position errors\n const clonedAccessor = ts.isIdentifier(accessorArg)\n ? f.createIdentifier(accessorArg.text)\n : accessorArg\n bindings.push({ nodeInitializer: nodeInit, kind, key, accessor: clonedAccessor })\n }\n }\n }\n\n if (bindings.length === 0) return null\n\n // Build map of __a{N} → __s{N} for rewriting accessor references.\n // After dedup, `__a{N} = acc(__s{N})`. In the row factory, __a{N} declarations\n // are eliminated, so all references must be rewritten to __s{N}.\n const accToSelector = new Map<string, string>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (!ts.isIdentifier(decl.name) || !decl.name.text.startsWith('__a')) continue\n if (!decl.initializer || !ts.isCallExpression(decl.initializer)) continue\n const callArg0 = decl.initializer.arguments[0]\n if (callArg0 && ts.isIdentifier(callArg0) && callArg0.text.startsWith('__s')) {\n accToSelector.set(decl.name.text, callArg0.text)\n }\n }\n }\n\n // Rewrite binding accessors: __a{N} → __s{N}\n for (const b of bindings) {\n if (ts.isIdentifier(b.accessor) && accToSelector.has(b.accessor.text)) {\n b.accessor = f.createIdentifier(accToSelector.get(b.accessor.text)!)\n }\n }\n\n // Collect __s{N} selector definitions — needed by __rowUpd and render init.\n // These are currently scoped to the render body; we'll hoist them into the\n // __rowUpd IIFE so they're accessible.\n const selectorDefs = new Map<string, ts.Expression>()\n for (const stmt of body.statements) {\n if (!ts.isVariableStatement(stmt)) continue\n for (const decl of stmt.declarationList.declarations) {\n if (ts.isIdentifier(decl.name) && decl.name.text.startsWith('__s') && decl.initializer) {\n selectorDefs.set(decl.name.text, decl.initializer)\n }\n }\n }\n\n // === Generate the row factory ===\n\n // 1. __tpl: IIFE that creates + caches the template element\n const tplInit = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createElement',\n ),\n undefined,\n [f.createStringLiteral('template')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('t'), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(f.createIdentifier('t')),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n // 2. __rowUpd: (e) => { const t = e.current; for each binding: check + write }\n const updStmts: ts.Statement[] = []\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 't',\n undefined,\n undefined,\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const vId = f.createIdentifier(`v${i}`)\n const cachedProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n const nodeProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n\n // const v{i} = accessor(t)\n updStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n vId,\n undefined,\n undefined,\n f.createCallExpression(b.accessor, undefined, [f.createIdentifier('t')]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // DOM write expression\n const domWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nodeProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vId,\n )\n\n // if (v{i} !== e['_v{i}']) { e['_v{i}'] = v{i}; DOM_WRITE }\n updStmts.push(\n f.createIfStatement(\n f.createBinaryExpression(vId, ts.SyntaxKind.ExclamationEqualsEqualsToken, cachedProp),\n f.createBlock(\n [\n f.createExpressionStatement(\n f.createBinaryExpression(cachedProp, ts.SyntaxKind.EqualsToken, vId),\n ),\n f.createExpressionStatement(domWrite),\n ],\n true,\n ),\n ),\n )\n }\n\n // Wrap __rowUpd in IIFE that declares selectors (they're scoped to the\n // render body but __rowUpd lives on the options object outside render).\n const rawUpdFn = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 'e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(updStmts, true),\n )\n\n // Build: (() => { const __s0 = ...; const __s1 = ...; return (e) => { ... } })()\n const selectorDecls: ts.Statement[] = []\n for (const [name, init] of selectorDefs) {\n selectorDecls.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n selectorDecls.push(f.createReturnStatement(rawUpdFn))\n\n const rowUpdFn = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(selectorDecls, true),\n ),\n ),\n undefined,\n [],\n )\n\n // 3. New render callback: ({ entry: e, __tpl, __rowUpd }) => { ... }\n const renderStmts: ts.Statement[] = []\n\n // Declare selectors at the top of render body (they're used for initial values)\n for (const [name, init] of selectorDefs) {\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(name, undefined, undefined, init)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // const r = __tpl.content.firstElementChild.cloneNode(true)\n renderStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'r',\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier('__tpl'), 'content'),\n 'firstElementChild',\n ),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // For each binding: store node ref, compute initial, apply\n for (let i = 0; i < bindings.length; i++) {\n const b = bindings[i]!\n const nProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_n${i}`),\n )\n const vProp = f.createElementAccessExpression(\n f.createIdentifier('e'),\n f.createStringLiteral(`_v${i}`),\n )\n\n // Rewrite node path: replace root param name with 'r'\n const rewrittenPath = rewriteRoot(b.nodeInitializer, rootName, 'r', f)\n\n // e['_n{i}'] = rewrittenPath\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(nProp, ts.SyntaxKind.EqualsToken, rewrittenPath),\n ),\n )\n\n // e['_v{i}'] = accessor(e.current)\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n vProp,\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(b.accessor, undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ]),\n ),\n ),\n )\n\n // DOM write: e['_n{i}'].nodeValue = e['_v{i}']\n const initWrite =\n b.kind === 'text'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : b.kind === 'class'\n ? f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'className'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n : f.createBinaryExpression(\n f.createPropertyAccessExpression(nProp, 'nodeValue'),\n ts.SyntaxKind.EqualsToken,\n vProp,\n )\n renderStmts.push(f.createExpressionStatement(initWrite))\n }\n\n // e.__rowUpdate = __rowUpd\n renderStmts.push(\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('e'), '__rowUpdate'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('__rowUpd'),\n ),\n ),\n )\n\n // Rewrite a statement: replace __a{N}() → __s{N}(e.current),\n // replace template var → r, strip positions via deep clone.\n function rewriteStmt(stmt: ts.Statement): ts.Statement {\n function visit(node: ts.Node): ts.Node {\n // Rewrite __a{N}() → __s{N}(e.current)\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n accToSelector.has(node.expression.text) &&\n node.arguments.length === 0\n ) {\n const selectorName = accToSelector.get(node.expression.text)!\n return f.createCallExpression(f.createIdentifier(selectorName), undefined, [\n f.createPropertyAccessExpression(f.createIdentifier('e'), 'current'),\n ])\n }\n // Rewrite template variable → r\n if (ts.isIdentifier(node) && templateVarName && node.text === templateVarName) {\n return f.createIdentifier('r')\n }\n // Clone identifiers to strip positions\n if (ts.isIdentifier(node)) {\n return f.createIdentifier(node.text)\n }\n return ts.visitEachChild(node, visit, undefined!)\n }\n return ts.visitEachChild(stmt, visit, undefined!) as ts.Statement\n }\n\n // Preserve non-template, non-compiler-generated, non-return statements.\n for (const stmt of body.statements) {\n if (ts.isReturnStatement(stmt)) continue\n\n if (ts.isVariableStatement(stmt)) {\n // Skip template declaration\n const isTemplate = stmt.declarationList.declarations.some(\n (d) => ts.isIdentifier(d.name) && d.name.text === templateVarName,\n )\n if (isTemplate) continue\n // Skip __a{N} and __s{N} declarations (compiler-generated acc/selector)\n const isCompilerOnly = stmt.declarationList.declarations.every(\n (d) =>\n ts.isIdentifier(d.name) &&\n (d.name.text.startsWith('__a') || d.name.text.startsWith('__s')),\n )\n if (isCompilerOnly) continue\n }\n\n // Rewrite and include\n renderStmts.push(rewriteStmt(stmt))\n }\n\n // return [r]\n renderStmts.push(\n f.createReturnStatement(f.createArrayLiteralExpression([f.createIdentifier('r')])),\n )\n\n const newRenderFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(\n undefined,\n undefined,\n f.createObjectBindingPattern([\n f.createBindingElement(undefined, 'entry', 'e'),\n f.createBindingElement(undefined, undefined, '__tpl'),\n f.createBindingElement(undefined, undefined, '__rowUpd'),\n ]),\n ),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(renderStmts, true),\n )\n\n // 4. Build new each options. To avoid mixed-position AST issues, we keep\n // original properties unchanged and only ADD __tpl, __rowUpd, and replace render.\n // The trick: return the original node structure but with the render property\n // swapped. Use ts.factory.updateObjectLiteralExpression which preserves positions.\n const updatedProps = arg.properties.map(\n (p): ts.ObjectLiteralElementLike =>\n p === renderProp ? f.createPropertyAssignment('render', newRenderFn) : p,\n )\n updatedProps.push(f.createPropertyAssignment('__tpl', tplInit))\n updatedProps.push(f.createPropertyAssignment('__rowUpd', rowUpdFn))\n\n const newOpts = f.updateObjectLiteralExpression(arg, updatedProps)\n\n return f.updateCallExpression(eachCall, eachCall.expression, eachCall.typeArguments, [\n newOpts,\n ...eachCall.arguments.slice(1),\n ])\n}\n\nfunction _containsSelectorBind(node: ts.Node): boolean {\n if (\n ts.isCallExpression(node) &&\n ts.isPropertyAccessExpression(node.expression) &&\n node.expression.name.text === 'bind'\n ) {\n return true\n }\n return ts.forEachChild(node, _containsSelectorBind) ?? false\n}\n\nfunction containsStructuralCall(node: ts.Node): boolean {\n if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n if (['each', 'branch', 'show', 'child', 'foreign'].includes(node.expression.text)) return true\n }\n return ts.forEachChild(node, containsStructuralCall) ?? false\n}\n\n/** Rewrite property access chains replacing oldRoot identifier with newRoot */\nfunction rewriteRoot(\n expr: ts.Expression,\n oldRoot: string,\n newRoot: string,\n f: ts.NodeFactory,\n): ts.Expression {\n if (ts.isIdentifier(expr) && expr.text === oldRoot) return f.createIdentifier(newRoot)\n if (ts.isPropertyAccessExpression(expr)) {\n return f.createPropertyAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.name.text,\n )\n }\n if (ts.isElementAccessExpression(expr)) {\n return f.createElementAccessExpression(\n rewriteRoot(expr.expression, oldRoot, newRoot, f),\n expr.argumentExpression,\n )\n }\n return expr\n}\n\n/** Parse a statement string into a fresh AST node (no source positions) */\nfunction _parseStmt(code: string): ts.Statement | null {\n const sf = ts.createSourceFile('__gen.ts', code, ts.ScriptTarget.Latest, false)\n return (sf.statements[0] as ts.Statement | undefined) ?? null\n}\n\n/**\n * Compute the OR of all structural block masks found in the view function.\n * Returns FULL_MASK if any structural block uses FULL_MASK or if no blocks found.\n */\nfunction computeStructuralMask(\n configArg: ts.ObjectLiteralExpression,\n fieldBits: Map<string, number>,\n): number {\n const viewProp = configArg.properties.find(\n (p) => ts.isPropertyAssignment(p) && ts.isIdentifier(p.name) && p.name.text === 'view',\n )\n if (!viewProp || !ts.isPropertyAssignment(viewProp)) return 0xffffffff | 0\n\n let mask = 0\n let foundStructural = false\n\n function walk(node: ts.Node): void {\n if (ts.isCallExpression(node)) {\n const name = ts.isIdentifier(node.expression) ? node.expression.text : ''\n if (['each', 'branch', 'show'].includes(name) && node.arguments[0]) {\n foundStructural = true\n const opts = node.arguments[0]\n if (ts.isObjectLiteralExpression(opts)) {\n // Check for __mask property (already injected by tryInjectStructuralMask)\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__mask'\n ) {\n if (ts.isNumericLiteral(prop.initializer)) {\n mask |= parseInt(prop.initializer.text, 10)\n return\n }\n if (ts.isPrefixUnaryExpression(prop.initializer)) {\n // Handle negative literals like -1\n mask = 0xffffffff | 0\n return\n }\n }\n }\n // No __mask found — use driving accessor mask\n const driverProp = name === 'each' ? 'items' : name === 'branch' ? 'on' : 'when'\n for (const prop of opts.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === driverProp\n ) {\n if (\n ts.isArrowFunction(prop.initializer) ||\n ts.isFunctionExpression(prop.initializer)\n ) {\n const { mask: m } = computeAccessorMask(prop.initializer, fieldBits)\n mask |= m || 0xffffffff | 0\n }\n break\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(viewProp.initializer)\n return foundStructural ? mask || 0xffffffff | 0 : 0\n}\n\n/**\n * Compute the OR of all component-level binding masks from text() calls\n * and element bindings in the view. Returns 0 if no component-level bindings.\n */\nfunction computePhase2Mask(\n _configArg: ts.ObjectLiteralExpression,\n _fieldBits: Map<string, number>,\n): number {\n // For now, return FULL_MASK — a future pass can analyze all binding sites\n // in the view to compute the precise aggregate. The key optimization is\n // already in Phase 1 gating: when structuralMask doesn't intersect dirty,\n // the entire reconciliation is skipped.\n return 0xffffffff | 0\n}\n\n/**\n * Build the __update function body:\n * {\n * // Phase 1 — structural reconciliation (gated by structuralMask)\n * if (d & structuralMask) {\n * for (let i = 0; i < bl.length; i++) {\n * const bk = bl[i]\n * if (!bk || (bk.mask & d) === 0) continue\n * bk.reconcile(s, d)\n * }\n * // Compact dead bindings\n * if (b.length > p || (p > 0 && b[0].dead)) {\n * let w = 0\n * for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n * b.length = w\n * p = Math.min(w, p)\n * }\n * }\n * // Phase 2 — binding updates\n * if (d !== 0) {\n * for (let i = 0; i < p; i++) {\n * const bn = b[i]\n * if (bn.dead || (bn.mask & d) === 0) continue\n * const v = bn.accessor(s)\n * const l = bn.lastValue\n * if (v === l || (v !== v && l !== l)) continue\n * bn.lastValue = v\n * __runPhase2(s, d, b, p)\n * }\n * }\n * }\n */\nfunction buildUpdateBody(f: ts.NodeFactory, structuralMask: number, _phase2Mask: number): ts.Block {\n const stmts: ts.Statement[] = []\n\n // Phase 1: structural block reconciliation, gated by aggregate mask\n if (structuralMask !== 0) {\n const phase1Stmts: ts.Statement[] = []\n\n // for (let i = 0; i < bl.length; i++) {\n // const bk = bl[i];\n // if (!bk || (bk.mask & d) === 0) continue;\n // bk.reconcile(s, d)\n // }\n // Re-read bl.length each iteration and null-check bk — a branch's\n // reconcile may dispose the old scope, whose disposers splice child\n // structural blocks out of this shared array mid-iteration.\n const blockLoop = f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('i', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('i'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('bl'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('i'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n 'bk',\n undefined,\n undefined,\n f.createElementAccessExpression(\n f.createIdentifier('bl'),\n f.createIdentifier('i'),\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n f.createIfStatement(\n f.createBinaryExpression(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createIdentifier('bk'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'mask'),\n ts.SyntaxKind.AmpersandToken,\n f.createIdentifier('d'),\n ),\n ),\n ts.SyntaxKind.EqualsEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n ),\n f.createContinueStatement(),\n ),\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('bk'), 'reconcile'),\n undefined,\n [f.createIdentifier('s'), f.createIdentifier('d')],\n ),\n ),\n ],\n true,\n ),\n )\n phase1Stmts.push(blockLoop)\n\n // Compaction: if (b.length > p || (p > 0 && b[0].dead)) { ... }\n const compactBody = f.createBlock(\n [\n // let w = 0\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('w', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n ),\n // for (let r = 0; r < b.length; r++) { if (!b[r].dead) b[w++] = b[r] }\n f.createForStatement(\n f.createVariableDeclarationList(\n [f.createVariableDeclaration('r', undefined, undefined, f.createNumericLiteral(0))],\n ts.NodeFlags.Let,\n ),\n f.createBinaryExpression(\n f.createIdentifier('r'),\n ts.SyntaxKind.LessThanToken,\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ),\n f.createPostfixUnaryExpression(f.createIdentifier('r'), ts.SyntaxKind.PlusPlusToken),\n f.createBlock(\n [\n f.createIfStatement(\n f.createPrefixUnaryExpression(\n ts.SyntaxKind.ExclamationToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n 'dead',\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createPostfixUnaryExpression(\n f.createIdentifier('w'),\n ts.SyntaxKind.PlusPlusToken,\n ),\n ),\n ts.SyntaxKind.EqualsToken,\n f.createElementAccessExpression(\n f.createIdentifier('b'),\n f.createIdentifier('r'),\n ),\n ),\n ),\n ),\n ],\n true,\n ),\n ),\n // b.length = w\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.EqualsToken,\n f.createIdentifier('w'),\n ),\n ),\n // p = Math.min(w, p)\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.EqualsToken,\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('Math'), 'min'),\n undefined,\n [f.createIdentifier('w'), f.createIdentifier('p')],\n ),\n ),\n ),\n ],\n true,\n )\n\n const compactCondition = f.createBinaryExpression(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier('b'), 'length'),\n ts.SyntaxKind.GreaterThanToken,\n f.createIdentifier('p'),\n ),\n ts.SyntaxKind.BarBarToken,\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createBinaryExpression(\n f.createIdentifier('p'),\n ts.SyntaxKind.GreaterThanToken,\n f.createNumericLiteral(0),\n ),\n ts.SyntaxKind.AmpersandAmpersandToken,\n f.createPropertyAccessExpression(\n f.createElementAccessExpression(f.createIdentifier('b'), f.createNumericLiteral(0)),\n 'dead',\n ),\n ),\n ),\n )\n phase1Stmts.push(f.createIfStatement(compactCondition, compactBody))\n\n // Wrap Phase 1 in mask gate\n if (structuralMask !== (0xffffffff | 0)) {\n stmts.push(\n f.createIfStatement(\n f.createBinaryExpression(\n f.createParenthesizedExpression(\n f.createBinaryExpression(\n f.createIdentifier('d'),\n ts.SyntaxKind.AmpersandToken,\n createMaskLiteral(f, structuralMask),\n ),\n ),\n ts.SyntaxKind.ExclamationEqualsEqualsToken,\n f.createNumericLiteral(0),\n ),\n f.createBlock(phase1Stmts, true),\n ),\n )\n } else {\n stmts.push(...phase1Stmts)\n }\n }\n\n // Phase 2: delegate to shared runtime — __runPhase2(s, d, b, p)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__runPhase2'), undefined, [\n f.createIdentifier('s'),\n f.createIdentifier('d'),\n f.createIdentifier('b'),\n f.createIdentifier('p'),\n ]),\n ),\n )\n\n return f.createBlock(stmts, true)\n}\n\nfunction buildAccess(f: ts.NodeFactory, root: string, parts: string[]): ts.Expression {\n let expr: ts.Expression = f.createIdentifier(root)\n for (const part of parts) {\n // Use optional chaining for nested paths\n if (parts.length > 1) {\n expr = f.createPropertyAccessChain(expr, f.createToken(ts.SyntaxKind.QuestionDotToken), part)\n } else {\n expr = f.createPropertyAccessExpression(expr, part)\n }\n }\n return expr\n}\n\n// ── Pass 3: Import cleanup ───────────────────────────────────────\n\nfunction cleanupImports(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n _helpers: Map<string, string>,\n compiled: Set<string>,\n usesElSplit: boolean,\n usesElTemplate: boolean,\n usesMemo: boolean,\n usesApplyBinding: boolean,\n f: ts.NodeFactory,\n): ts.SourceFile {\n if (compiled.size === 0 && !usesElTemplate && !usesElSplit && !usesMemo && !usesApplyBinding)\n return sf\n\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return sf\n\n const remaining = clause.namedBindings.elements.filter((spec) => !compiled.has(spec.name.text))\n\n const hasElSplit = clause.namedBindings.elements.some((s) => s.name.text === 'elSplit')\n if (!hasElSplit && usesElSplit) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elSplit')))\n }\n\n const hasElTemplate = clause.namedBindings.elements.some((s) => s.name.text === 'elTemplate')\n if (!hasElTemplate && usesElTemplate) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elTemplate')))\n }\n\n const hasMemo = clause.namedBindings.elements.some((s) => s.name.text === 'memo')\n if (!hasMemo && usesMemo) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('memo')))\n }\n\n if (usesApplyBinding) {\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__runPhase2')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__runPhase2')))\n }\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__handleMsg')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__handleMsg')))\n }\n }\n\n const newBindings = f.createNamedImports(remaining)\n const newClause = f.createImportClause(false, undefined, newBindings)\n const newImportDecl = f.createImportDeclaration(undefined, newClause, lluiImport.moduleSpecifier)\n\n let replaced = false\n const statements = sf.statements.map((stmt) => {\n if (\n !replaced &&\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom' &&\n !stmt.importClause?.isTypeOnly\n ) {\n replaced = true\n return newImportDecl\n }\n return stmt\n })\n\n return f.updateSourceFile(sf, statements as unknown as ts.Statement[])\n}\n\n// ── __msgSchema injection ────────────────────────────────────────\n\nfunction injectStateSchema(\n node: ts.CallExpression,\n fields: Record<string, StateType>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__stateSchema'\n ) {\n return node\n }\n }\n\n const schemaProp = f.createPropertyAssignment(\n '__stateSchema',\n stateTypeToLiteral({ kind: 'object', fields }, f),\n )\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction stateTypeToLiteral(t: StateType, f: ts.NodeFactory): ts.Expression {\n if (typeof t === 'string') return f.createStringLiteral(t)\n if (t.kind === 'enum') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('enum')),\n f.createPropertyAssignment(\n 'values',\n f.createArrayLiteralExpression(t.values.map((v) => f.createStringLiteral(v))),\n ),\n ])\n }\n if (t.kind === 'array') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('array')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'optional') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('optional')),\n f.createPropertyAssignment('of', stateTypeToLiteral(t.of, f)),\n ])\n }\n if (t.kind === 'union') {\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('union')),\n f.createPropertyAssignment(\n 'of',\n f.createArrayLiteralExpression(t.of.map((m) => stateTypeToLiteral(m, f))),\n ),\n ])\n }\n // object\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [k, v] of Object.entries(t.fields)) {\n fieldProps.push(f.createPropertyAssignment(k, stateTypeToLiteral(v, f)))\n }\n return f.createObjectLiteralExpression([\n f.createPropertyAssignment('kind', f.createStringLiteral('object')),\n f.createPropertyAssignment('fields', f.createObjectLiteralExpression(fieldProps, true)),\n ])\n}\n\nfunction injectComponentMeta(\n nodeWithMaybeEdits: ts.CallExpression,\n originalNode: ts.CallExpression,\n sourceFile: ts.SourceFile,\n filename: string,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = nodeWithMaybeEdits.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return nodeWithMaybeEdits\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__componentMeta'\n ) {\n return nodeWithMaybeEdits\n }\n }\n\n // Line number from the original (real-position) node\n const pos = originalNode.pos >= 0 ? originalNode.getStart(sourceFile) : 0\n const { line } = sourceFile.getLineAndCharacterOfPosition(pos)\n\n const meta = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('file', f.createStringLiteral(filename)),\n f.createPropertyAssignment('line', f.createNumericLiteral(line + 1)),\n ],\n false,\n )\n\n const metaProp = f.createPropertyAssignment('__componentMeta', meta)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, metaProp], true)\n\n return f.createCallExpression(nodeWithMaybeEdits.expression, nodeWithMaybeEdits.typeArguments, [\n newConfig,\n ...nodeWithMaybeEdits.arguments.slice(1),\n ])\n}\n\nfunction injectMsgSchema(\n node: ts.CallExpression,\n schema: {\n discriminant: string\n variants: Record<string, Record<string, string | { enum: string[] }>>\n },\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n // Don't inject if already present\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__msgSchema'\n ) {\n return node\n }\n }\n\n // Build the schema object literal\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, type] of Object.entries(fields)) {\n if (typeof type === 'string') {\n fieldProps.push(f.createPropertyAssignment(field, f.createStringLiteral(type)))\n } else {\n fieldProps.push(\n f.createPropertyAssignment(\n field,\n f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(type.enum.map((v) => f.createStringLiteral(v))),\n ),\n ]),\n ),\n )\n }\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__msgSchema', schemaObj)\n\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\nfunction injectEffectSchema(\n node: ts.CallExpression,\n schema: {\n discriminant: string\n variants: Record<string, Record<string, string | { enum: string[] }>>\n },\n f: ts.NodeFactory,\n): ts.CallExpression {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return node\n\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === '__effectSchema'\n ) {\n return node\n }\n }\n\n const variantProps: ts.PropertyAssignment[] = []\n for (const [variant, fields] of Object.entries(schema.variants)) {\n const fieldProps: ts.PropertyAssignment[] = []\n for (const [field, type] of Object.entries(fields)) {\n if (typeof type === 'string') {\n fieldProps.push(f.createPropertyAssignment(field, f.createStringLiteral(type)))\n } else {\n fieldProps.push(\n f.createPropertyAssignment(\n field,\n f.createObjectLiteralExpression([\n f.createPropertyAssignment(\n 'enum',\n f.createArrayLiteralExpression(type.enum.map((v) => f.createStringLiteral(v))),\n ),\n ]),\n ),\n )\n }\n }\n variantProps.push(\n f.createPropertyAssignment(\n f.createStringLiteral(variant),\n f.createObjectLiteralExpression(fieldProps),\n ),\n )\n }\n\n const schemaObj = f.createObjectLiteralExpression(\n [\n f.createPropertyAssignment('discriminant', f.createStringLiteral(schema.discriminant)),\n f.createPropertyAssignment('variants', f.createObjectLiteralExpression(variantProps, true)),\n ],\n true,\n )\n\n const schemaProp = f.createPropertyAssignment('__effectSchema', schemaObj)\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, schemaProp], true)\n\n return f.createCallExpression(node.expression, node.typeArguments, [\n newConfig,\n ...node.arguments.slice(1),\n ])\n}\n\n// ── Per-item accessor detection ──────────────────────────────────\n\n// ── Item selector deduplication ──────────────────────────────────\n\n/**\n * In each() render callbacks, deduplicate repeated item(selector) calls.\n *\n * Before: item((r) => r.id) appears 4 times → 4 selector closures + 4 accessor closures\n * After: const __s0 = (r) => r.id; const __a0 = item(__s0); → 1 selector + 1 accessor\n */\nfunction tryDeduplicateItemSelectors(\n eachCall: ts.CallExpression,\n f: ts.NodeFactory,\n printer: ts.Printer,\n sourceFile: ts.SourceFile,\n): ts.CallExpression | null {\n // each() takes a single object literal argument\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n // Find the render property\n let renderProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'render'\n ) {\n renderProp = prop\n break\n }\n }\n if (!renderProp) return null\n\n const renderFn = renderProp.initializer\n if (!ts.isArrowFunction(renderFn) && !ts.isFunctionExpression(renderFn)) return null\n\n // Get the item parameter name from the options bag: ({ item, ... }) => ...\n const renderParam = renderFn.parameters[0]\n if (!renderParam) return null\n\n let itemName: string | null = null\n if (ts.isIdentifier(renderParam.name)) {\n // Old style: (item) => ... or (item, index) => ...\n itemName = renderParam.name.text\n } else if (ts.isObjectBindingPattern(renderParam.name)) {\n // New style: ({ item, send, ... }) => ...\n for (const el of renderParam.name.elements) {\n if (ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'item') {\n itemName = 'item'\n break\n }\n }\n }\n if (!itemName) return null\n\n // Collect all item(selector) calls AND item.FIELD property-access expressions.\n // Both forms produce the same accessor; they dedup together via the field-name key.\n type Occurrence =\n | { kind: 'call'; node: ts.CallExpression; selector: ts.Expression; key: string }\n | { kind: 'access'; node: ts.PropertyAccessExpression; field: string; key: string }\n\n const occurrences: Occurrence[] = []\n\n // Try to extract a simple field name from an arrow selector: (t) => t.FIELD → \"FIELD\"\n function extractSimpleField(sel: ts.ArrowFunction | ts.FunctionExpression): string | null {\n if (sel.parameters.length !== 1) return null\n const paramName = sel.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return null\n const body = ts.isArrowFunction(sel) ? sel.body : null\n if (!body) return null\n const expr = ts.isBlock(body) ? null : body\n if (!expr || !ts.isPropertyAccessExpression(expr)) return null\n if (!ts.isIdentifier(expr.expression) || expr.expression.text !== paramName.text) return null\n if (!ts.isIdentifier(expr.name)) return null\n return expr.name.text\n }\n\n function collectItemCalls(node: ts.Node): void {\n // item(selector) calls\n if (\n ts.isCallExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n node.arguments.length === 1\n ) {\n const sel = node.arguments[0]!\n if (ts.isArrowFunction(sel) || ts.isFunctionExpression(sel)) {\n const field = extractSimpleField(sel)\n const key =\n field !== null\n ? `field:${field}`\n : `expr:${printer.printNode(ts.EmitHint.Expression, sel, sourceFile)}`\n occurrences.push({ kind: 'call', node, selector: sel, key })\n }\n }\n // item.FIELD property access — but NOT when it's the callee of a call expression\n // where we want the original to stay (e.g. item.id() we still replace, because the\n // accessor itself becomes __a0 and we keep the trailing ()).\n else if (\n ts.isPropertyAccessExpression(node) &&\n ts.isIdentifier(node.expression) &&\n node.expression.text === itemName &&\n ts.isIdentifier(node.name)\n ) {\n const field = node.name.text\n occurrences.push({ kind: 'access', node, field, key: `field:${field}` })\n }\n ts.forEachChild(node, collectItemCalls)\n }\n collectItemCalls(renderFn.body)\n\n if (occurrences.length < 2) return null // nothing to deduplicate\n\n // Group by normalized key (field:name or expr:text)\n const groups = new Map<string, Occurrence[]>()\n for (const occ of occurrences) {\n const existing = groups.get(occ.key)\n if (existing) existing.push(occ)\n else groups.set(occ.key, [occ])\n }\n\n // Hoist ALL occurrences (even unique ones) so compiled code uses `acc()` (plain\n // function) instead of `item(fn)` (Proxy-wrapped) or `item.FIELD` (Proxy.get trap).\n // Unique accesses get their own __a* var; duplicates share one.\n const allGroups = [...groups.entries()]\n if (allGroups.length === 0) return null\n\n // Build hoisted declarations and replacement map\n const hoistedStmts: ts.Statement[] = []\n const replacements = new Map<ts.Node, ts.Identifier>()\n let sIdx = 0\n\n for (const [key, occs] of allGroups) {\n const selVar = `__s${sIdx}`\n const accVar = `__a${sIdx}`\n sIdx++\n\n // Build the selector expression.\n // For field:FIELD, synthesize (t) => t.FIELD (or reuse an existing call's selector).\n // For expr:..., reuse the existing selector expression.\n let selector: ts.Expression\n const callOccurrence = occs.find((o) => o.kind === 'call')\n if (callOccurrence && callOccurrence.kind === 'call') {\n selector = callOccurrence.selector\n } else {\n // All occurrences are property-access form — synthesize (t) => t.FIELD\n const firstAccess = occs[0]!\n if (firstAccess.kind !== 'access') throw new Error('unreachable')\n selector = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, 't')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createPropertyAccessExpression(f.createIdentifier('t'), firstAccess.field),\n )\n }\n\n // const __s0 = (r) => r.id\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(selVar, undefined, undefined, selector)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n // const __a0 = acc(__s0) — use the plain-function `acc` instead of `item` (which\n // is a Proxy). Adds `acc` to the destructure binding below if not already present.\n hoistedStmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n accVar,\n undefined,\n undefined,\n f.createCallExpression(f.createIdentifier('acc'), undefined, [\n f.createIdentifier(selVar),\n ]),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n\n // Map all occurrences to the cached accessor identifier\n void key // silence unused\n for (const occ of occs) {\n replacements.set(occ.node, f.createIdentifier(accVar))\n }\n }\n\n // Rewrite the render function body to replace item(sel)/item.field with cached refs\n function replaceVisitor(node: ts.Node): ts.Node {\n if (replacements.has(node)) {\n return replacements.get(node)!\n }\n return ts.visitEachChild(node, replaceVisitor, undefined!)\n }\n\n const newBody = ts.visitNode(renderFn.body, replaceVisitor)!\n\n // Prepend hoisted declarations to the body\n let finalBody: ts.ConciseBody\n if (ts.isBlock(newBody)) {\n finalBody = f.createBlock([...hoistedStmts, ...(newBody as ts.Block).statements], true)\n } else {\n // Arrow with expression body → convert to block with return\n finalBody = f.createBlock(\n [...hoistedStmts, f.createReturnStatement(newBody as ts.Expression)],\n true,\n )\n }\n\n // Ensure `acc` is in the destructure binding pattern of the render param.\n // Hoisted code references it; if user didn't destructure it, add it.\n const newParameters = renderFn.parameters.map((p, idx) => {\n if (idx !== 0) return p\n if (!ts.isObjectBindingPattern(p.name)) return p\n const hasAcc = p.name.elements.some(\n (el) => ts.isBindingElement(el) && ts.isIdentifier(el.name) && el.name.text === 'acc',\n )\n if (hasAcc) return p\n const newBinding = f.createObjectBindingPattern([\n ...p.name.elements,\n f.createBindingElement(undefined, undefined, f.createIdentifier('acc')),\n ])\n return f.createParameterDeclaration(\n p.modifiers,\n p.dotDotDotToken,\n newBinding,\n p.questionToken,\n p.type,\n p.initializer,\n )\n })\n\n // Build new render function\n const newRenderFn = ts.isArrowFunction(renderFn)\n ? f.createArrowFunction(\n renderFn.modifiers,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n finalBody,\n )\n : f.createFunctionExpression(\n renderFn.modifiers,\n renderFn.asteriskToken,\n renderFn.name,\n renderFn.typeParameters,\n newParameters,\n renderFn.type,\n finalBody as ts.Block,\n )\n\n // Rebuild the each() call with the new render property\n const newProps = arg.properties.map((prop) =>\n prop === renderProp ? f.createPropertyAssignment('render', newRenderFn) : prop,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Auto-memoize each() items accessor ──────────────────────────\n\nconst ALLOCATING_METHODS = new Set([\n 'filter',\n 'map',\n 'slice',\n 'sort',\n 'reverse',\n 'concat',\n 'flat',\n 'flatMap',\n 'reduce',\n])\n\n/**\n * Detect whether an expression body contains array-allocating operations\n * that would produce a new array on every call.\n */\nfunction accessorAllocatesArray(body: ts.ConciseBody | ts.Expression): boolean {\n let found = false\n function walk(n: ts.Node): void {\n if (found) return\n // .method() on something — check the method name\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.name) &&\n ALLOCATING_METHODS.has(n.expression.name.text)\n ) {\n found = true\n return\n }\n // Spread in array literal: [...x, y]\n if (ts.isArrayLiteralExpression(n) && n.elements.some((el) => ts.isSpreadElement(el))) {\n found = true\n return\n }\n // Array.from(...)\n if (\n ts.isCallExpression(n) &&\n ts.isPropertyAccessExpression(n.expression) &&\n ts.isIdentifier(n.expression.expression) &&\n n.expression.expression.text === 'Array' &&\n ts.isIdentifier(n.expression.name) &&\n n.expression.name.text === 'from'\n ) {\n found = true\n return\n }\n ts.forEachChild(n, walk)\n }\n walk(body)\n return found\n}\n\n/**\n * Wrap `each({ items: (s) => s.x.filter(...) })` in `memo()` with a bitmask,\n * so the filter is only re-run when its dependencies change. For items accessors\n * that don't allocate (e.g. `(s) => s.items`), each's built-in same-ref fast\n * path already suffices — no wrap needed.\n *\n * Returns null if no wrapping was applied.\n */\nfunction tryWrapEachItemsWithMemo(\n eachCall: ts.CallExpression,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression | null {\n const arg = eachCall.arguments[0]\n if (!arg || !ts.isObjectLiteralExpression(arg)) return null\n\n let itemsProp: ts.PropertyAssignment | null = null\n for (const prop of arg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name) && prop.name.text === 'items') {\n itemsProp = prop\n break\n }\n }\n if (!itemsProp) return null\n\n const accessor = itemsProp.initializer\n if (!ts.isArrowFunction(accessor) && !ts.isFunctionExpression(accessor)) return null\n\n // Don't wrap if it's already wrapped (call expression like memo(...) or similar)\n // We only wrap raw arrow functions.\n\n // Skip if the body doesn't allocate — each's own ref check handles those.\n const body = ts.isArrowFunction(accessor) ? accessor.body : accessor.body\n if (!accessorAllocatesArray(body)) return null\n\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n if (mask === 0 && !readsState) return null // constant, nothing to memoize\n const finalMask = mask === 0 && readsState ? 0xffffffff | 0 : mask\n\n // Wrap: memo(accessor, mask)\n const wrapped = f.createCallExpression(f.createIdentifier('memo'), undefined, [\n accessor,\n createMaskLiteral(f, finalMask),\n ])\n\n const newProps = arg.properties.map((p) =>\n p === itemsProp ? f.createPropertyAssignment('items', wrapped) : p,\n )\n const newArg = f.createObjectLiteralExpression(newProps, true)\n\n return f.createCallExpression(eachCall.expression, eachCall.typeArguments, [\n newArg,\n ...eachCall.arguments.slice(1),\n ])\n}\n\n// ── Subtree collapse: nested elements → elTemplate ──────────────\n\nconst VOID_ELEMENTS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n])\n\ninterface AnalyzedNode {\n tag: string\n localName: string\n /** Static HTML attributes (class, id, etc.) */\n staticAttrs: Array<[string, string]>\n /** Event handlers: [eventName, handlerExpression] */\n events: Array<[string, ts.Expression]>\n /** Reactive bindings: [mask, kind, key, accessor] */\n bindings: Array<[number, string, string, ts.Expression]>\n /** Children: analyzed elements, static text, or reactive text */\n children: AnalyzedChild[]\n /** Path from template root as childNodes indices */\n path: number[]\n}\n\ntype AnalyzedChild =\n | { type: 'element'; node: AnalyzedNode }\n | { type: 'staticText'; value: string }\n | { type: 'reactiveText'; accessor: ts.Expression; mask: number; childIdx: number }\n\n/**\n * Try to analyze an element call and all its descendants as a collapsible subtree.\n * Returns null if any part of the tree is not eligible for collapse.\n */\nfunction analyzeSubtree(\n node: ts.CallExpression,\n helpers: Map<string, string>,\n fieldBits: Map<string, number>,\n path: number[],\n): AnalyzedNode | null {\n if (!ts.isIdentifier(node.expression)) return null\n const localName = node.expression.text\n const tag = helpers.get(localName)\n if (!tag) return null\n\n // Handle children-only overload: `div([...])` — first arg is the children array.\n // In that case, treat it as no props + children=firstArg.\n const firstArg = node.arguments[0]\n const usesChildrenOnlyOverload = firstArg && ts.isArrayLiteralExpression(firstArg)\n const propsArg = usesChildrenOnlyOverload ? undefined : firstArg\n const childrenArg = usesChildrenOnlyOverload ? firstArg : node.arguments[1]\n\n if (propsArg && !ts.isObjectLiteralExpression(propsArg)) return null\n\n const staticAttrs: Array<[string, string]> = []\n const events: Array<[string, ts.Expression]> = []\n const bindings: Array<[number, string, string, ts.Expression]> = []\n\n if (propsArg && ts.isObjectLiteralExpression(propsArg)) {\n for (const prop of propsArg.properties) {\n let key: string\n let value: ts.Expression\n\n if (ts.isPropertyAssignment(prop)) {\n if (!ts.isIdentifier(prop.name) && !ts.isStringLiteral(prop.name)) return null\n key = ts.isIdentifier(prop.name) ? prop.name.text : prop.name.text\n value = prop.initializer\n } else if (ts.isShorthandPropertyAssignment(prop)) {\n key = prop.name.text\n value = prop.name\n } else {\n return null\n }\n if (key === 'key') continue\n\n // Event handler\n if (/^on[A-Z]/.test(key)) {\n events.push([key.slice(2).toLowerCase(), value])\n continue\n }\n\n // Resolve identifier → local const arrow initializer (see elSplit\n // path for the full rationale).\n if (ts.isIdentifier(value)) {\n const resolved = resolveLocalConstInitializer(value)\n if (resolved && (ts.isArrowFunction(resolved) || ts.isFunctionExpression(resolved))) {\n value = resolved\n }\n }\n\n // Reactive binding\n if (ts.isArrowFunction(value) || ts.isFunctionExpression(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n const { mask, readsState } = computeAccessorMask(value, fieldBits)\n if (mask === 0 && !readsState) {\n // Constant fold — treat as static if we can extract a string\n const staticVal = tryExtractStaticString(value)\n if (staticVal !== null) {\n const attrKey = kind === 'class' ? 'class' : resolvedKey\n staticAttrs.push([attrKey, staticVal])\n continue\n }\n }\n bindings.push([mask === 0 && readsState ? 0xffffffff | 0 : mask, kind, resolvedKey, value])\n continue\n }\n\n // Per-item accessor call\n if (ts.isCallExpression(value) && isPerItemCall(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, kind, resolvedKey, value])\n continue\n }\n\n // Per-item property access: item.field (or hoisted __a0/__a1/…)\n if (isPerItemFieldAccess(value) || isHoistedPerItem(value)) {\n const kind = classifyKind(key)\n const resolvedKey = resolveKey(key, kind)\n bindings.push([0xffffffff | 0, kind, resolvedKey, value])\n continue\n }\n\n // Static literal prop\n if (ts.isStringLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (ts.isNumericLiteral(value)) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, value.text])\n continue\n }\n if (value.kind === ts.SyntaxKind.TrueKeyword) {\n const kind = classifyKind(key)\n const attrKey = kind === 'class' ? 'class' : resolveKey(key, kind)\n staticAttrs.push([attrKey, ''])\n continue\n }\n\n // Non-literal prop — can't collapse\n return null\n }\n }\n\n // Analyze children\n const children: AnalyzedChild[] = []\n\n if (childrenArg && ts.isArrayLiteralExpression(childrenArg)) {\n let childIdx = 0\n for (const child of childrenArg.elements) {\n // String literal child — static text node\n if (ts.isStringLiteral(child) || ts.isNoSubstitutionTemplateLiteral(child)) {\n children.push({ type: 'staticText', value: child.text })\n childIdx++\n continue\n }\n\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (child.arguments.length >= 1 && ts.isStringLiteral(child.arguments[0]!)) {\n children.push({ type: 'staticText', value: child.arguments[0]!.text })\n childIdx++ // static text creates a text node in the template DOM\n continue\n }\n // Reactive text — accessor is first arg\n const accessor = child.arguments[0]!\n if (ts.isArrowFunction(accessor) || ts.isFunctionExpression(accessor)) {\n const { mask, readsState } = computeAccessorMask(accessor, fieldBits)\n children.push({\n type: 'reactiveText',\n accessor,\n mask: mask === 0 && readsState ? 0xffffffff | 0 : mask,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text: text(item(t => t.label))\n if (ts.isCallExpression(accessor) && isPerItemCall(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n childIdx,\n })\n childIdx++ // placeholder text node in template\n continue\n }\n // Per-item text via property access: text(item.label)\n // Also matches hoisted __a0/__a1/… identifiers produced by dedup.\n if (isPerItemFieldAccess(accessor) || isHoistedPerItem(accessor)) {\n children.push({\n type: 'reactiveText',\n accessor,\n mask: 0xffffffff | 0,\n childIdx,\n })\n childIdx++\n continue\n }\n return null // unsupported text() form\n }\n\n // Element helper call — recurse\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n helpers.has(child.expression.text)\n ) {\n const childNode = analyzeSubtree(child, helpers, fieldBits, [...path, childIdx])\n if (!childNode) return null\n children.push({ type: 'element', node: childNode })\n childIdx++\n continue\n }\n\n // Anything else (each, branch, show, arbitrary expressions) — bail\n return null\n }\n\n // Note: mixed static + reactive text in the same parent is now supported\n // because reactive text uses <!--$--> comment placeholders that break\n // text-node merging at parse time.\n } else if (childrenArg && childrenArg.kind !== ts.SyntaxKind.NullKeyword) {\n // Non-array children (e.g., spread, variable) — bail\n return null\n }\n\n return { tag, localName, staticAttrs, events, bindings, children, path }\n}\n\nfunction tryExtractStaticString(accessor: ts.ArrowFunction | ts.FunctionExpression): string | null {\n const body = ts.isArrowFunction(accessor) ? accessor.body : null\n if (body && ts.isStringLiteral(body)) return body.text\n return null\n}\n\n/**\n * Check if a subtree has any nested element children (worth collapsing).\n */\nfunction hasNestedElements(node: AnalyzedNode): boolean {\n return node.children.some((c) => c.type === 'element')\n}\n\n/**\n * Collect all local helper names used in the subtree for import cleanup.\n */\nfunction collectUsedHelpers(node: AnalyzedNode, out: Set<string>): void {\n out.add(node.localName)\n for (const child of node.children) {\n if (child.type === 'element') collectUsedHelpers(child.node, out)\n }\n}\n\n/**\n * Build the static HTML string from an analyzed subtree.\n */\nfunction buildTemplateHTML(node: AnalyzedNode): string {\n let html = `<${node.tag}`\n for (const [key, value] of node.staticAttrs) {\n html += ` ${key}=\"${escapeAttr(value)}\"`\n }\n html += '>'\n\n if (VOID_ELEMENTS.has(node.tag)) return html\n\n for (let ci = 0; ci < node.children.length; ci++) {\n const child = node.children[ci]!\n if (child.type === 'staticText') {\n html += escapeHTML(child.value)\n } else if (child.type === 'element') {\n html += buildTemplateHTML(child.node)\n } else if (child.type === 'reactiveText') {\n // When the reactive text is not adjacent to another text-type child,\n // we can use a literal text node placeholder instead of a comment.\n // The cloned text node is reused in the patch function — no\n // createTextNode + replaceChild needed. This saves 2 DOM operations\n // per text binding per row.\n //\n // When adjacent text WOULD cause HTML-parser merging (two text nodes\n // collapse into one), we fall back to the comment placeholder.\n const prev = ci > 0 ? node.children[ci - 1]! : null\n const next = ci < node.children.length - 1 ? node.children[ci + 1]! : null\n const adjText =\n prev?.type === 'staticText' ||\n prev?.type === 'reactiveText' ||\n next?.type === 'staticText' ||\n next?.type === 'reactiveText'\n if (adjText) {\n html += '<!--$-->'\n } else {\n // Space character becomes a Text node in the cloned template.\n // Mark the child so the patch codegen knows to skip replaceChild.\n html += ' '\n ;(child as { inlineText?: boolean }).inlineText = true\n }\n }\n }\n\n html += `</${node.tag}>`\n return html\n}\n\ninterface PatchOp {\n /** Variable name for this node (e.g., __n0) */\n varName: string\n /** Expression to walk to this node from root */\n walkExpr: ts.Expression\n /** Event listeners to attach */\n events: Array<[string, ts.Expression]>\n /** Bindings to register via __bind */\n bindings: Array<[number, string, string, ts.Expression]>\n /** Reactive text children — reference existing placeholder text nodes */\n reactiveTexts: Array<{ accessor: ts.Expression; mask: number; childIdx: number }>\n}\n\n/**\n * Collect all patch operations from an analyzed subtree.\n */\nfunction collectPatchOps(\n node: AnalyzedNode,\n f: ts.NodeFactory,\n rootExpr: ts.Expression,\n ops: PatchOp[],\n counter: { n: number; t: number },\n): void {\n const hasDynamic =\n node.events.length > 0 ||\n node.bindings.length > 0 ||\n node.children.some((c) => c.type === 'reactiveText')\n\n let nodeExpr = rootExpr\n\n if (hasDynamic) {\n const varName = `__n${counter.n++}`\n // Build walk expression: root.childNodes[i].childNodes[j]...\n nodeExpr = f.createIdentifier(varName)\n ops.push({\n varName,\n walkExpr: buildWalkExpr(node.path, f),\n events: node.events,\n bindings: node.bindings,\n reactiveTexts: node.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Recurse into element children\n for (const child of node.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, nodeExpr, ops, counter)\n }\n }\n}\n\nfunction buildWalkExpr(path: number[], f: ts.NodeFactory): ts.Expression {\n let expr: ts.Expression = f.createIdentifier('root')\n for (const idx of path) {\n // Use firstChild + nextSibling chain instead of childNodes[n]\n // firstChild/nextSibling are direct pointer lookups, childNodes is a live NodeList\n expr = f.createPropertyAccessExpression(expr, 'firstChild')\n for (let i = 0; i < idx; i++) {\n expr = f.createPropertyAccessExpression(expr, 'nextSibling')\n }\n }\n return expr\n}\n\n/**\n * Emit elTemplate(htmlString, (root, __bind) => { ... }) call.\n */\nfunction emitSubtreeTemplate(\n analyzed: AnalyzedNode,\n fieldBits: Map<string, number>,\n f: ts.NodeFactory,\n): ts.CallExpression {\n const html = buildTemplateHTML(analyzed)\n const ops: PatchOp[] = []\n const counter = { n: 0, t: 0 }\n\n // Collect root-level patches\n const rootHasDynamic =\n analyzed.events.length > 0 ||\n analyzed.bindings.length > 0 ||\n analyzed.children.some((c) => c.type === 'reactiveText')\n\n if (rootHasDynamic) {\n ops.push({\n varName: '', // use 'root' directly\n walkExpr: f.createIdentifier('root'),\n events: analyzed.events,\n bindings: analyzed.bindings,\n reactiveTexts: analyzed.children.filter(\n (c): c is Extract<AnalyzedChild, { type: 'reactiveText' }> => c.type === 'reactiveText',\n ),\n })\n }\n\n // Collect child patches\n for (const child of analyzed.children) {\n if (child.type === 'element') {\n collectPatchOps(child.node, f, f.createIdentifier('root'), ops, counter)\n }\n }\n\n // Collect delegatable events: group by event type across all ops\n // Events on child nodes with the same type are delegated to the root\n const delegatableEvents = new Map<string, Array<{ nodeVar: string; handler: ts.Expression }>>()\n for (const op of ops) {\n for (const [eventName, handler] of op.events) {\n if (!op.varName) {\n // Root-level events — can't delegate further up\n continue\n }\n const list = delegatableEvents.get(eventName)\n if (list) list.push({ nodeVar: op.varName, handler })\n else delegatableEvents.set(eventName, [{ nodeVar: op.varName, handler }])\n }\n }\n\n // Build patch function body\n const stmts: ts.Statement[] = []\n\n for (const op of ops) {\n const nodeRef = op.varName ? f.createIdentifier(op.varName) : f.createIdentifier('root')\n\n // Variable declaration for walking to node\n if (op.varName) {\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(op.varName, undefined, undefined, op.walkExpr)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n }\n\n // Non-delegatable events (root-level or single-use event types)\n for (const [eventName, handler] of op.events) {\n const delegated = delegatableEvents.get(eventName)\n if (op.varName && delegated && delegated.length >= 2) continue // handled below\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(nodeRef, 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), handler],\n ),\n ),\n )\n }\n\n // Reactive text children — walk to placeholder, create text node, bind\n for (const rt of op.reactiveTexts) {\n const tVar = `__t${counter.t++}`\n const isInline = !!(rt as { inlineText?: boolean }).inlineText\n\n if (isInline) {\n // Inline text placeholder: the template HTML has a space character\n // that cloneNode already created as a Text node. Walk to it and\n // bind directly — no createTextNode, no replaceChild.\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(tVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n } else {\n // Comment placeholder: create a new text node and replace the comment.\n const cVar = `__c${counter.t - 1}`\n let walk: ts.Expression = f.createPropertyAccessExpression(nodeRef, 'firstChild')\n for (let i = 0; i < rt.childIdx; i++) {\n walk = f.createPropertyAccessExpression(walk, 'nextSibling')\n }\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(cVar, undefined, undefined, walk)],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [\n f.createVariableDeclaration(\n tVar,\n undefined,\n undefined,\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createIdentifier('document'),\n 'createTextNode',\n ),\n undefined,\n [f.createStringLiteral('')],\n ),\n ),\n ],\n ts.NodeFlags.Const,\n ),\n ),\n )\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(cVar), 'parentNode'),\n 'replaceChild',\n ),\n undefined,\n [f.createIdentifier(tVar), f.createIdentifier(cVar)],\n ),\n ),\n )\n }\n // __bind(__t0, mask, 'text', undefined, accessor)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, [\n f.createIdentifier(tVar),\n createMaskLiteral(f, rt.mask),\n f.createStringLiteral('text'),\n f.createIdentifier('undefined'),\n rt.accessor,\n ]),\n ),\n )\n }\n\n // Reactive bindings — __bind(node, mask, kind, key, accessor)\n for (const [mask, kind, key, accessor] of op.bindings) {\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(f.createIdentifier('__bind'), undefined, [\n nodeRef,\n createMaskLiteral(f, mask),\n f.createStringLiteral(kind),\n key ? f.createStringLiteral(key) : f.createIdentifier('undefined'),\n accessor,\n ]),\n ),\n )\n }\n }\n\n // Emit delegated event listeners on root\n for (const [eventName, entries] of delegatableEvents) {\n if (entries.length < 2) continue\n // root.onclick = (e) => { if (n1.contains(e.target)) { h1(); return } if (n2.contains(e.target)) { h2(); return } }\n const eParam = f.createIdentifier('__e')\n const eTarget = f.createPropertyAccessExpression(eParam, 'target')\n\n const ifStmts: ts.Statement[] = []\n for (const { nodeVar, handler } of entries) {\n // if (nodeVar.contains(e.target)) { handler(e); return }\n ifStmts.push(\n f.createIfStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier(nodeVar), 'contains'),\n undefined,\n [eTarget],\n ),\n f.createBlock(\n [\n f.createExpressionStatement(f.createCallExpression(handler, undefined, [eParam])),\n f.createReturnStatement(),\n ],\n true,\n ),\n ),\n )\n }\n\n const delegateHandler = f.createArrowFunction(\n undefined,\n undefined,\n [f.createParameterDeclaration(undefined, undefined, '__e')],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(ifStmts, true),\n )\n\n // root.addEventListener(eventName, handler)\n stmts.push(\n f.createExpressionStatement(\n f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('root'), 'addEventListener'),\n undefined,\n [f.createStringLiteral(eventName), delegateHandler],\n ),\n ),\n )\n }\n\n // (root, __bind) => { ... }\n const patchFn = f.createArrowFunction(\n undefined,\n undefined,\n [\n f.createParameterDeclaration(undefined, undefined, 'root'),\n f.createParameterDeclaration(undefined, undefined, '__bind'),\n ],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(stmts, true),\n )\n\n const call = f.createCallExpression(f.createIdentifier('elTemplate'), undefined, [\n f.createStringLiteral(html),\n patchFn,\n ])\n\n return call\n}\n\n// ── Static subtree detection ─────────────────────────────────────\n\nfunction isStaticChildren(children: ts.Expression): boolean {\n if (children.kind === ts.SyntaxKind.NullKeyword) return true\n if (!ts.isArrayLiteralExpression(children)) return false\n return children.elements.every((child) => {\n // text('literal') — static text\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n return child.arguments.length === 1 && ts.isStringLiteral(child.arguments[0]!)\n }\n // Another elSplit or element helper that was already determined static\n // For now, only handle text() children\n return false\n })\n}\n\nfunction buildStaticHTML(\n tag: string,\n staticProps: ts.Statement[],\n children: ts.Expression,\n _f: ts.NodeFactory,\n): string | null {\n // Extract static attributes from staticFn statements\n let attrs = ''\n for (const stmt of staticProps) {\n if (!ts.isExpressionStatement(stmt)) return null\n const expr = stmt.expression\n // __e.className = 'value'\n if (ts.isBinaryExpression(expr) && ts.isPropertyAccessExpression(expr.left)) {\n const prop = expr.left.name.text\n if (prop === 'className' && ts.isStringLiteral(expr.right)) {\n attrs += ` class=\"${escapeAttr(expr.right.text)}\"`\n }\n }\n // __e.setAttribute('key', 'value')\n if (ts.isCallExpression(expr) && ts.isPropertyAccessExpression(expr.expression)) {\n if (expr.expression.name.text === 'setAttribute' && expr.arguments.length === 2) {\n const key = expr.arguments[0]\n const val = expr.arguments[1]\n if (key && val && ts.isStringLiteral(key) && ts.isStringLiteral(val)) {\n attrs += ` ${key.text}=\"${escapeAttr(val.text)}\"`\n } else {\n return null // non-literal attribute\n }\n }\n }\n }\n\n // Extract text children\n let inner = ''\n if (ts.isArrayLiteralExpression(children)) {\n for (const child of children.elements) {\n if (\n ts.isCallExpression(child) &&\n ts.isIdentifier(child.expression) &&\n child.expression.text === 'text'\n ) {\n if (ts.isStringLiteral(child.arguments[0]!)) {\n inner += escapeHTML(child.arguments[0]!.text)\n } else {\n return null\n }\n } else {\n return null\n }\n }\n }\n\n return `<${tag}${attrs}>${inner}</${tag}>`\n}\n\nfunction escapeHTML(s: string): string {\n return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')\n}\n\nfunction escapeAttr(s: string): string {\n return s.replace(/&/g, '&').replace(/\"/g, '"')\n}\n\nlet templateCounter = 0\n\nfunction emitTemplateClone(html: string, f: ts.NodeFactory): ts.Expression {\n const varName = `__tmpl${templateCounter++}`\n // Emit: (() => { const t = document.createElement('template'); t.innerHTML = 'html'; return t.content.cloneNode(true).firstChild })()\n // Simplified: we use an IIFE that creates and caches a template\n // Actually, for simplicity, just emit the cloneNode inline\n const tmplCreate = f.createCallExpression(\n f.createPropertyAccessExpression(f.createIdentifier('document'), 'createElement'),\n undefined,\n [f.createStringLiteral('template')],\n )\n const iife = f.createCallExpression(\n f.createParenthesizedExpression(\n f.createArrowFunction(\n undefined,\n undefined,\n [],\n undefined,\n f.createToken(ts.SyntaxKind.EqualsGreaterThanToken),\n f.createBlock(\n [\n f.createVariableStatement(\n undefined,\n f.createVariableDeclarationList(\n [f.createVariableDeclaration(varName, undefined, undefined, tmplCreate)],\n ts.NodeFlags.Const,\n ),\n ),\n f.createExpressionStatement(\n f.createBinaryExpression(\n f.createPropertyAccessExpression(f.createIdentifier(varName), 'innerHTML'),\n ts.SyntaxKind.EqualsToken,\n f.createStringLiteral(html),\n ),\n ),\n f.createReturnStatement(\n f.createPropertyAccessExpression(\n f.createCallExpression(\n f.createPropertyAccessExpression(\n f.createPropertyAccessExpression(f.createIdentifier(varName), 'content'),\n 'cloneNode',\n ),\n undefined,\n [f.createTrue()],\n ),\n 'firstChild',\n ),\n ),\n ],\n true,\n ),\n ),\n ),\n undefined,\n [],\n )\n\n return iife\n}\n\nfunction isPerItemCall(node: ts.CallExpression): boolean {\n // Matches: item(t => t.field) or item(t => expr)\n // where item is an identifier (the scoped accessor from each() render)\n if (!ts.isIdentifier(node.expression)) return false\n // Check that the first argument is an arrow function (the selector)\n if (node.arguments.length !== 1) return false\n const arg = node.arguments[0]!\n return ts.isArrowFunction(arg) || ts.isFunctionExpression(arg)\n}\n\n// Matches: item.FIELD — the item-proxy shorthand equivalent of item(t => t.FIELD).\n// Scope-checked: the `item` identifier must resolve to a parameter of an\n// `each({ render })` callback. Without this check, plain\n// `arr.map((item) => item.field)` outside each() would be rewritten as a\n// per-item binding and crash at runtime with \"accessor is not a function\"\n// because `item.field` evaluates to a bare value (not a function) when\n// treated as an accessor.\nfunction isPerItemFieldAccess(node: ts.Node): node is ts.PropertyAccessExpression {\n if (!ts.isPropertyAccessExpression(node)) return false\n if (!ts.isIdentifier(node.expression)) return false\n if (node.expression.text !== 'item') return false\n if (!ts.isIdentifier(node.name)) return false\n return isItemBoundToEachRender(node)\n}\n\n/**\n * Walks up from a node and returns true iff the nearest enclosing function\n * that binds an `item` parameter is the `render` property of an `each()`\n * call. Handles both positional (`(item) => …`) and destructured\n * (`({ item, index }) => …`) parameter bindings.\n */\nfunction isItemBoundToEachRender(node: ts.Node): boolean {\n let current: ts.Node | undefined = node.parent\n while (current) {\n if (ts.isArrowFunction(current) || ts.isFunctionExpression(current)) {\n if (functionParamsBindItem(current)) {\n return isEachRenderCallback(current)\n }\n }\n current = current.parent\n }\n return false\n}\n\nfunction functionParamsBindItem(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n for (const param of fn.parameters) {\n if (bindingNameBindsItem(param.name)) return true\n }\n return false\n}\n\nfunction bindingNameBindsItem(name: ts.BindingName): boolean {\n if (ts.isIdentifier(name)) return name.text === 'item'\n if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {\n for (const el of name.elements) {\n if (ts.isBindingElement(el) && bindingNameBindsItem(el.name)) return true\n }\n }\n return false\n}\n\nfunction isEachRenderCallback(fn: ts.ArrowFunction | ts.FunctionExpression): boolean {\n const parent = fn.parent\n if (!parent || !ts.isPropertyAssignment(parent)) return false\n if (!ts.isIdentifier(parent.name) || parent.name.text !== 'render') return false\n const objLit = parent.parent\n if (!objLit || !ts.isObjectLiteralExpression(objLit)) return false\n const call = objLit.parent\n if (!call || !ts.isCallExpression(call)) return false\n if (!ts.isIdentifier(call.expression) || call.expression.text !== 'each') return false\n return true\n}\n\n// Matches the hoisted identifiers produced by tryDeduplicateItemSelectors: __a0, __a1, …\n// These represent already-cached per-item accessors.\nfunction isHoistedPerItem(node: ts.Node): node is ts.Identifier {\n if (!ts.isIdentifier(node)) return false\n return /^__a\\d+$/.test(node.text)\n}\n\n// ── Mask computation ─────────────────────────────────────────────\n\n// Returns { mask, readsState }\n// mask = 0 + readsState = false → constant (can fold to static)\n// mask = 0 + readsState = true → unresolvable state access (FULL_MASK)\n// mask > 0 → precise mask\nfunction computeAccessorMask(\n accessor: ts.ArrowFunction | ts.FunctionExpression,\n fieldBits: Map<string, number>,\n): { mask: number; readsState: boolean } {\n if (accessor.parameters.length === 0) return { mask: 0xffffffff | 0, readsState: false }\n\n const paramName = accessor.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return { mask: 0xffffffff | 0, readsState: false }\n\n const stateParam = paramName.text\n let mask = 0\n let readsState = false\n\n function walk(node: ts.Node): void {\n // `node.parent` can be undefined for synthetic nodes produced by\n // earlier AST-transform passes (the row-factory rewrite and the\n // per-item heuristic both build new sub-trees whose inner nodes\n // have no parent pointers). Guard every parent access below —\n // crashing the whole build on a perfectly valid reactive accessor\n // like `text((_s) => \\`$${item.x.toLocaleString()}\\`)` was how\n // this bug first surfaced in the persistent-layout example work.\n const parent = node.parent\n if (ts.isIdentifier(node) && node.text === stateParam && (!parent || !ts.isParameter(parent))) {\n readsState = true\n }\n if (ts.isPropertyAccessExpression(node)) {\n // When there's no parent we can't tell if this is the top of a\n // chain, so we resolve from here. That's still correct for mask\n // accounting: `resolveChain` on an inner PAE produces a prefix\n // of the outer chain, which maps to the same `fieldBits` bit\n // via the prefix-match loop below. Worst case we resolve the\n // same chain twice (`|=` is idempotent); best case we'd have\n // resolved once from the real top. Correctness unchanged.\n if (!parent || !ts.isPropertyAccessExpression(parent)) {\n const chain = resolveChain(node, stateParam)\n if (chain) {\n const bit = fieldBits.get(chain)\n if (bit !== undefined) {\n mask |= bit\n } else {\n for (const [path, b] of fieldBits) {\n if (path.startsWith(chain + '.') || path === chain) {\n mask |= b\n }\n }\n }\n }\n }\n }\n ts.forEachChild(node, walk)\n }\n\n walk(accessor.body)\n\n if (mask === 0 && readsState) {\n return { mask: 0xffffffff | 0, readsState: true }\n }\n return { mask, readsState }\n}\n\nfunction resolveChain(node: ts.PropertyAccessExpression, paramName: string): string | null {\n const parts: string[] = []\n let current: ts.Expression = node\n\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.text)\n current = current.expression\n }\n\n if (!ts.isIdentifier(current) || current.text !== paramName) return null\n if (parts.length > 2) return parts.slice(0, 2).join('.')\n return parts.join('.')\n}\n"]}
|