negotium 0.2.25 → 0.2.26

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.
@@ -15,7 +15,7 @@
15
15
  "// Persistent title-scoped wiki brief store, backed by shared SQLite.\n// Topic IDs remain readable as a migration fallback for older rows.\n//\n// Briefs are injected into AI-invited topic turns at session start. The\n// wiki-archiver updates them post-session.\nimport { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\nimport { wikiSummarySlug } from \"#storage/wiki-summary-names\";\n\nregisterStorageSchemaInitializer((database) => {\n database.exec(`\n CREATE TABLE IF NOT EXISTS api_topic_brief (\n topic_id TEXT PRIMARY KEY,\n brief_md TEXT NOT NULL DEFAULT '',\n latest_summary_md TEXT,\n summary_date TEXT,\n updated_at TEXT NOT NULL DEFAULT (datetime('now'))\n )\n `);\n}, 30);\n\nexport interface TopicBrief {\n topicId: string;\n /** Lightweight topic brief (300-600 tokens, injected at session start). */\n briefMd: string;\n /** Latest session summary markdown (full source-summary). */\n latestSummaryMd?: string;\n /** Date of the latest summary (YYYY-MM-DD). */\n summaryDate?: string;\n /** ISO-8601 timestamp of last update. */\n updatedAt: string;\n}\n\ninterface BriefRow {\n topic_id: string;\n brief_md: string;\n latest_summary_md: string | null;\n summary_date: string | null;\n updated_at: string;\n}\n\nfunction rowToBrief(r: BriefRow): TopicBrief {\n return {\n topicId: r.topic_id,\n briefMd: r.brief_md,\n latestSummaryMd: r.latest_summary_md ?? undefined,\n summaryDate: r.summary_date ?? undefined,\n updatedAt: r.updated_at,\n };\n}\n\n/**\n * Get the topic brief for a storage key. Returns null when no brief\n * has been written yet (fresh topic, no archiver run).\n */\nexport function getTopicBrief(storageKey: string): TopicBrief | null {\n const row = db\n .query(\n \"SELECT topic_id, brief_md, latest_summary_md, summary_date, updated_at FROM api_topic_brief WHERE topic_id = ?\",\n )\n .get(storageKey) as BriefRow | null;\n if (!row) return null;\n return rowToBrief(row);\n}\n\n/** Resolve title-keyed memory first, retaining id-keyed rows as a migration fallback. */\nexport function resolveTopicBrief(\n topicId: string,\n legacyTitle: string,\n): { brief: TopicBrief; storageKey: string } | null {\n const titleKey = wikiSummarySlug(legacyTitle);\n const titleBrief = getTopicBrief(titleKey);\n if (titleBrief) return { brief: titleBrief, storageKey: titleKey };\n const current = getTopicBrief(topicId);\n if (current) return { brief: current, storageKey: topicId };\n const legacy = titleKey === legacyTitle ? null : getTopicBrief(legacyTitle);\n return legacy ? { brief: legacy, storageKey: legacyTitle } : null;\n}\n\n/**\n * Upsert the topic brief. `briefMd` and `latestSummaryMd` are\n * independently optional — callers can update just one field without\n * wiping the other. `summaryDate` should be the date of the summary\n * (YYYY-MM-DD), set alongside `latestSummaryMd`.\n */\nexport function setTopicBrief(\n topicId: string,\n fields: {\n briefMd?: string;\n latestSummaryMd?: string;\n summaryDate?: string;\n },\n): TopicBrief {\n const existing = getTopicBrief(topicId);\n\n const briefMd = fields.briefMd !== undefined ? fields.briefMd : (existing?.briefMd ?? \"\");\n const latestSummaryMd =\n fields.latestSummaryMd !== undefined\n ? fields.latestSummaryMd\n : (existing?.latestSummaryMd ?? null);\n const summaryDate =\n fields.summaryDate !== undefined ? fields.summaryDate : (existing?.summaryDate ?? null);\n\n db.query(\n `INSERT INTO api_topic_brief\n (topic_id, brief_md, latest_summary_md, summary_date, updated_at)\n VALUES (?, ?, ?, ?, datetime('now'))\n ON CONFLICT(topic_id) DO UPDATE SET\n brief_md = excluded.brief_md,\n latest_summary_md = excluded.latest_summary_md,\n summary_date = excluded.summary_date,\n updated_at = excluded.updated_at`,\n ).run(topicId, briefMd, latestSummaryMd, summaryDate);\n\n return getTopicBrief(topicId)!;\n}\n\n/** Remove a topic's brief row entirely (e.g. on topic hard-delete). */\nexport function deleteTopicBrief(topicId: string): void {\n db.query(\"DELETE FROM api_topic_brief WHERE topic_id = ?\").run(topicId);\n}\n\n/**\n * List all topic briefs for browsing (wiki UI). Returns briefMd\n * only (no full summary body) to keep the payload light.\n */\nexport function listTopicBriefs(): TopicBrief[] {\n const rows = db\n .query(\n \"SELECT topic_id, brief_md, latest_summary_md, summary_date, updated_at FROM api_topic_brief ORDER BY updated_at DESC\",\n )\n .all() as BriefRow[];\n return rows.map(rowToBrief);\n}\n",
16
16
  "// Persistent per-topic model/effort/MCP overrides and user locks.\n// SQLite. Mirrors api-topics.ts. This replaces the previous in-memory Map in\n// routes/topic-config.ts, which lost every override on server restart — a\n// regression now that topic config is the canonical path for model/effort\n// switching (the MCP-based direction), not just a transient convenience.\nimport { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\nimport type { EffortLevel } from \"#types\";\n\nfunction tableColumns(table: string): Set<string> {\n const rows = db.query(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;\n return new Set(rows.map((row) => row.name));\n}\n\nfunction createCanonicalConfigTable(name = \"api_topic_config\"): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS ${name} (\n topic_id TEXT PRIMARY KEY REFERENCES api_topics(id) ON DELETE CASCADE,\n model TEXT,\n effort TEXT CHECK (effort IS NULL OR effort IN ('low','medium','high','xhigh','max')),\n mcp TEXT,\n agent_locked INTEGER NOT NULL DEFAULT 0 CHECK (agent_locked IN (0,1)),\n model_locked INTEGER NOT NULL DEFAULT 0 CHECK (model_locked IN (0,1)),\n effort_locked INTEGER NOT NULL DEFAULT 0 CHECK (effort_locked IN (0,1))\n )\n `);\n}\n\nfunction initializeApiTopicConfigSchema(): void {\n const existingConfigColumns = tableColumns(\"api_topic_config\");\n if (existingConfigColumns.size === 0) {\n createCanonicalConfigTable();\n } else if (\n existingConfigColumns.has(\"agent\") ||\n existingConfigColumns.has(\"agent_pinned\") ||\n existingConfigColumns.has(\"runtime_locked\") ||\n existingConfigColumns.has(\"model_pinned\") ||\n existingConfigColumns.has(\"effort_pinned\") ||\n existingConfigColumns.has(\"last_shown_agent\")\n ) {\n // Complete the old agent-override migration before dropping the column. The\n // selected agent itself belongs to api_topics; only its user lock belongs here.\n const topicColumns = tableColumns(\"api_topics\");\n const agentColumn = topicColumns.has(\"agent\")\n ? \"agent\"\n : topicColumns.has(\"runtime_agent\")\n ? \"runtime_agent\"\n : null;\n if (agentColumn && existingConfigColumns.has(\"agent\")) {\n db.exec(\n `UPDATE api_topics\n SET ${agentColumn} = (\n SELECT c.agent FROM api_topic_config c WHERE c.topic_id = api_topics.id\n )\n WHERE ${agentColumn} IS NULL\n AND EXISTS (\n SELECT 1 FROM api_topic_config c\n WHERE c.topic_id = api_topics.id AND c.agent IS NOT NULL\n )`,\n );\n }\n\n const previousForeignKeys = db\n .query<{ foreign_keys: number }, []>(\"PRAGMA foreign_keys\")\n .get()?.foreign_keys;\n db.exec(\"PRAGMA foreign_keys = OFF\");\n try {\n const agentLockSource = existingConfigColumns.has(\"runtime_locked\")\n ? \"runtime_locked\"\n : existingConfigColumns.has(\"agent_pinned\")\n ? \"agent_pinned\"\n : \"0\";\n const modelLockSource = existingConfigColumns.has(\"model_locked\")\n ? \"model_locked\"\n : existingConfigColumns.has(\"model_pinned\")\n ? \"model_pinned\"\n : \"0\";\n const effortLockSource = existingConfigColumns.has(\"effort_locked\")\n ? \"effort_locked\"\n : existingConfigColumns.has(\"effort_pinned\")\n ? \"effort_pinned\"\n : \"0\";\n db.transaction(() => {\n createCanonicalConfigTable(\"api_topic_config_next\");\n db.exec(`\n INSERT INTO api_topic_config_next\n (topic_id, model, effort, mcp, agent_locked, model_locked, effort_locked)\n SELECT\n topic_id,\n model,\n effort,\n mcp,\n COALESCE(${agentLockSource}, 0),\n COALESCE(${modelLockSource}, 0),\n COALESCE(${effortLockSource}, 0)\n FROM api_topic_config\n WHERE EXISTS (SELECT 1 FROM api_topics t WHERE t.id = api_topic_config.topic_id)\n `);\n db.exec(\"DROP TABLE api_topic_config\");\n db.exec(\"ALTER TABLE api_topic_config_next RENAME TO api_topic_config\");\n })();\n } finally {\n db.exec(`PRAGMA foreign_keys = ${previousForeignKeys ? \"ON\" : \"OFF\"}`);\n }\n } else {\n createCanonicalConfigTable();\n }\n}\n\nregisterStorageSchemaInitializer(initializeApiTopicConfigSchema, 40);\n\nexport interface TopicConfig {\n model?: string;\n effort?: EffortLevel;\n mcp?: string[]; // enabled optional MCP server names\n // Per-field user locks: when true, AI self-config cannot override the field.\n agentLocked?: boolean;\n modelLocked?: boolean;\n effortLocked?: boolean;\n}\n\ninterface ConfigRow {\n topic_id: string;\n model: string | null;\n effort: string | null;\n mcp: string | null;\n agent_locked: number;\n model_locked: number;\n effort_locked: number;\n}\n\nfunction rowToConfig(r: ConfigRow): TopicConfig {\n const cfg: TopicConfig = {};\n if (r.model) cfg.model = r.model;\n if (r.effort) cfg.effort = r.effort as EffortLevel;\n if (r.mcp) {\n try {\n const parsed = JSON.parse(r.mcp);\n if (Array.isArray(parsed)) cfg.mcp = parsed as string[];\n } catch {\n // corrupt JSON — treat as no mcp override\n }\n }\n if (r.agent_locked) cfg.agentLocked = true;\n if (r.model_locked) cfg.modelLocked = true;\n if (r.effort_locked) cfg.effortLocked = true;\n return cfg;\n}\n\n/**\n * Per-topic override set via `PATCH /config` (and, going forward, the MCP\n * self-config tools). Returns `undefined` when the topic has no stored row,\n * so callers can distinguish \"no override\" from \"override with empty fields\".\n */\nexport function getApiTopicConfig(topicId: string): TopicConfig | undefined {\n const row = db\n .query(\n \"SELECT topic_id, model, effort, mcp, agent_locked, model_locked, effort_locked FROM api_topic_config WHERE topic_id = ?\",\n )\n .get(topicId) as ConfigRow | null;\n if (!row) return undefined;\n const config = rowToConfig(row);\n return Object.keys(config).length > 0 ? config : undefined;\n}\n\n/**\n * Upsert the full override for a topic. Fields set to `undefined` are cleared\n * (stored as SQL NULL), matching the previous Map semantics where the route\n * built a complete `updated` object before persisting.\n */\nexport function setApiTopicConfig(topicId: string, config: TopicConfig): void {\n db.query(\n `INSERT INTO api_topic_config\n (topic_id, model, effort, mcp, agent_locked, model_locked, effort_locked)\n VALUES (?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(topic_id) DO UPDATE SET\n model = excluded.model,\n effort = excluded.effort,\n mcp = excluded.mcp,\n agent_locked = excluded.agent_locked,\n model_locked = excluded.model_locked,\n effort_locked = excluded.effort_locked`,\n ).run(\n topicId,\n config.model ?? null,\n config.effort ?? null,\n config.mcp ? JSON.stringify(config.mcp) : null,\n config.agentLocked ? 1 : 0,\n config.modelLocked ? 1 : 0,\n config.effortLocked ? 1 : 0,\n );\n}\n\n/** Remove a topic's override row entirely (e.g. on topic hard-delete). */\nexport function deleteApiTopicConfig(topicId: string): void {\n db.query(\"DELETE FROM api_topic_config WHERE topic_id = ?\").run(topicId);\n}\n",
17
17
  "/** \"from\" field for session-inbox entries injected after a setting change. */\nexport const FROM_AUTO_CONTINUE = \"auto-continue\";\n\n/** \"from\" field for durable delayed continuations created by schedule_self. */\nexport const FROM_SELF_SCHEDULE = \"self-schedule\";\n\n/** Topic names that collide with internal sentinels and must not be used. */\nexport const RESERVED_TOPIC_NAMES: ReadonlySet<string> = new Set([\n FROM_AUTO_CONTINUE,\n FROM_SELF_SCHEDULE,\n \"general\",\n]);\n\n/** Legacy shared General id. New General rooms use per-user UUIDs. */\nexport const GENERAL_TOPIC_ID = \"general\";\n\n/** Internal topic name for the forum manager session (General topic). */\nexport const TOPIC_MANAGER = \"__manager__\";\n",
18
- "// Persistent topic store backed by shared SQLite.\n\nimport { GENERAL_TOPIC_ID } from \"#platform/constants\";\nimport { logger } from \"#platform/logger\";\nimport { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\nimport type { AgentKind, EffortLevel } from \"#types\";\nimport type {\n AiMode,\n ParticipantDto,\n SubagentReportMode,\n TopicDto,\n TopicKind,\n TopicSurface,\n TopicVisibility,\n} from \"#types/api\";\n\nconst DEFAULT_AGENT_ROOM_AGENT: AgentKind = \"maestro\";\n\n/**\n * Surface used when a caller does not name one — and the value every existing\n * row is backfilled with on first boot after the surface migration.\n *\n * Hosts that only ever serve one surface declare it once in their environment\n * (`NEGOTIUM_DEFAULT_SURFACE=otium` on the Otium hub and worker); a developer\n * Mac leaves it unset and gets `terminal`, with the telegram adapter\n * reclassifying its own mapped rooms afterwards.\n */\nexport function defaultTopicSurface(): TopicSurface {\n return normalizeTopicSurface(process.env.NEGOTIUM_DEFAULT_SURFACE);\n}\n\nexport function normalizeTopicSurface(value: unknown): TopicSurface {\n return value === \"telegram\" || value === \"otium\" || value === \"terminal\" ? value : \"terminal\";\n}\n\nfunction tableColumns(table: string): Set<string> {\n const rows = db.query(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;\n return new Set(rows.map((row) => row.name));\n}\n\n/** Persist the authoritative agent and, when supplied, its normalized base defaults. */\nexport function setApiTopicAgent(\n topicId: string,\n agent: AgentKind,\n defaults?: { model: string; effort?: EffortLevel },\n): void {\n if (!defaults) {\n db.query(\"UPDATE api_topics SET agent = ? WHERE id = ?\").run(agent, topicId);\n return;\n }\n db.query(\"UPDATE api_topics SET agent = ?, base_model = ?, base_effort = ? WHERE id = ?\").run(\n agent,\n defaults.model,\n defaults.effort ?? null,\n topicId,\n );\n}\n\nfunction initializeApiTopicsSchema(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_topics (\n id TEXT PRIMARY KEY,\n title TEXT NOT NULL,\n kind TEXT NOT NULL DEFAULT 'channel',\n description TEXT,\n agent TEXT,\n default_model TEXT,\n default_effort TEXT,\n participants TEXT,\n created_at TEXT NOT NULL,\n last_message_at TEXT,\n is_archived INTEGER NOT NULL DEFAULT 0,\n ai_mention INTEGER NOT NULL DEFAULT 0,\n ai_mode TEXT\n )\n`);\n\n const initialTopicColumns = tableColumns(\"api_topics\");\n const legacyTopicSchema = !initialTopicColumns.has(\"response_policy\");\n const needsCanonicalTopicRebuild = legacyTopicSchema || !initialTopicColumns.has(\"agent\");\n if (legacyTopicSchema) {\n // Rename the legacy column once; new databases are created with `agent`.\n try {\n db.exec(\"ALTER TABLE api_topics RENAME COLUMN default_agent TO agent\");\n } catch {\n // Already migrated or freshly created.\n }\n\n // Migrate existing DBs that predate the ai_mention column (team-mode topics).\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN ai_mention INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists — nothing to do.\n }\n\n // Migrate for spawn/fork tracking (R1).\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN parent_topic_id TEXT\");\n } catch {\n // Column already exists.\n }\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN is_fork INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists.\n }\n\n // Migrate for agent-spawned subagent worker rooms.\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists.\n }\n\n // Migrate for session persistence.\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN session_id TEXT\");\n } catch {\n // Column already exists.\n }\n\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN kind TEXT NOT NULL DEFAULT 'channel'\");\n } catch {\n // Column already exists.\n }\n\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN ai_mode TEXT\");\n } catch {\n // Column already exists.\n }\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_schema_migrations (\n key TEXT PRIMARY KEY,\n applied_at TEXT NOT NULL\n )\n`);\n\n const ALWAYS_RESPOND_MIGRATION = \"api_topics_ai_invited_default_always_respond_20260623\";\n const alwaysRespondMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(ALWAYS_RESPOND_MIGRATION);\n if (!alwaysRespondMigration) {\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET ai_mention = 0 WHERE agent IS NOT NULL\").run();\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n ALWAYS_RESPOND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const GENERAL_AGENT_KIND_MIGRATION = \"api_topics_general_agent_kind_20260704\";\n const generalAgentKindMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(GENERAL_AGENT_KIND_MIGRATION);\n if (!generalAgentKindMigration) {\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET kind = 'agent', ai_mention = 0 WHERE id = ?\").run(\n GENERAL_TOPIC_ID,\n );\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n GENERAL_AGENT_KIND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const AI_MODE_MIGRATION = \"api_topics_ai_mode_20260704\";\n const aiModeMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(AI_MODE_MIGRATION);\n if (!aiModeMigration) {\n db.transaction(() => {\n db.query(\n `UPDATE api_topics\n SET\n kind = CASE\n WHEN id = ? THEN 'agent'\n WHEN kind = 'channel' AND agent IS NOT NULL AND ai_mention = 0 THEN 'agent'\n ELSE kind\n END,\n ai_mode = CASE\n WHEN id = ? THEN 'always'\n WHEN agent IS NULL THEN 'off'\n WHEN kind = 'agent' THEN 'always'\n WHEN kind = 'channel' AND ai_mention != 0 THEN 'mention'\n WHEN kind = 'channel' AND ai_mention = 0 THEN 'always'\n WHEN ai_mention != 0 THEN 'mention'\n ELSE 'always'\n END`,\n ).run(GENERAL_TOPIC_ID, GENERAL_TOPIC_ID);\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n AI_MODE_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const GENERAL_MANAGER_KIND_MIGRATION = \"api_topics_general_manager_kind_20260704\";\n const generalManagerKindMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(GENERAL_MANAGER_KIND_MIGRATION);\n if (!generalManagerKindMigration) {\n db.transaction(() => {\n db.query(\n \"UPDATE api_topics SET kind = 'manager', ai_mention = 0, ai_mode = 'always' WHERE id = ?\",\n ).run(GENERAL_TOPIC_ID);\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n GENERAL_MANAGER_KIND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n }\n\n function createCanonicalTopicsTable(name: string): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS ${name} (\n id TEXT PRIMARY KEY,\n title TEXT NOT NULL,\n kind TEXT NOT NULL CHECK (kind IN ('channel','agent','manager')),\n description TEXT,\n agent TEXT CHECK (agent IS NULL OR agent IN ('maestro','claude','codex')),\n base_model TEXT,\n base_effort TEXT CHECK (base_effort IS NULL OR base_effort IN ('low','medium','high','xhigh','max')),\n response_policy TEXT NOT NULL CHECK (response_policy IN ('off','mention','always')),\n created_at TEXT NOT NULL,\n last_message_at TEXT,\n parent_topic_id TEXT,\n memory_topic_id TEXT,\n memory_key TEXT,\n is_fork INTEGER NOT NULL DEFAULT 0 CHECK (is_fork IN (0,1)),\n is_subagent INTEGER NOT NULL DEFAULT 0 CHECK (is_subagent IN (0,1)),\n visibility TEXT NOT NULL DEFAULT 'visible' CHECK (visibility IN ('visible','hidden')),\n surface TEXT NOT NULL DEFAULT 'terminal' CHECK (surface IN ('terminal','telegram','otium')),\n browser_profile TEXT NOT NULL DEFAULT 'default',\n browser_profile_owner TEXT,\n session_id TEXT,\n CHECK (\n (kind = 'channel' AND response_policy = 'off' AND agent IS NULL) OR\n (kind = 'channel' AND response_policy = 'mention' AND agent IS NOT NULL) OR\n (kind IN ('agent','manager') AND response_policy = 'always' AND agent IS NOT NULL)\n )\n )\n `);\n }\n\n function createTopicMembersTable(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS topic_members (\n topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n user_id TEXT NOT NULL,\n role TEXT NOT NULL CHECK (role IN ('owner','member')),\n PRIMARY KEY (topic_id, user_id)\n )\n `);\n db.exec(\"CREATE INDEX IF NOT EXISTS idx_topic_members_user ON topic_members(user_id)\");\n }\n\n if (needsCanonicalTopicRebuild) {\n const legacyRows = db.query(\"SELECT * FROM api_topics\").all() as Array<Record<string, unknown>>;\n const existingMemberRows = tableColumns(\"topic_members\").has(\"topic_id\")\n ? (db.query(\"SELECT topic_id, user_id, role FROM topic_members\").all() as Array<{\n topic_id: string;\n user_id: string;\n role: string;\n }>)\n : [];\n const configColumns = tableColumns(\"api_topic_config\");\n const legacyAgentOverrides = configColumns.has(\"agent\")\n ? new Map(\n (\n db\n .query(\"SELECT topic_id, agent FROM api_topic_config WHERE agent IS NOT NULL\")\n .all() as Array<{ topic_id: string; agent: AgentKind }>\n ).map((row) => [row.topic_id, row.agent]),\n )\n : new Map<string, AgentKind>();\n const previousForeignKeys = db\n .query<{ foreign_keys: number }, []>(\"PRAGMA foreign_keys\")\n .get()?.foreign_keys;\n db.exec(\"PRAGMA foreign_keys = OFF\");\n try {\n db.transaction(() => {\n createCanonicalTopicsTable(\"api_topics_next\");\n for (const row of legacyRows) {\n const selectedAgent = (legacyAgentOverrides.get(String(row.id)) ??\n row.agent ??\n row.runtime_agent ??\n row.default_agent ??\n undefined) as AgentKind | undefined;\n const normalized = normalizeTopicState({\n id: String(row.id),\n kind: normalizeTopicKind(row.kind),\n agent: selectedAgent,\n aiMode: normalizeAiMode(row.response_policy ?? row.ai_mode),\n aiMention: Number(row.ai_mention ?? 0) !== 0,\n });\n const legacyBaseModel = row.base_model ?? row.default_model;\n const legacyBaseEffort = row.base_effort ?? row.default_effort;\n db.query(\n `INSERT INTO api_topics_next\n (id,title,kind,description,agent,base_model,base_effort,response_policy,\n created_at,last_message_at,parent_topic_id,memory_topic_id,memory_key,is_fork,is_subagent,visibility,surface,session_id)\n VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,\n ).run(\n String(row.id),\n String(row.title),\n normalized.kind,\n typeof row.description === \"string\" ? row.description : null,\n normalized.agent ?? null,\n typeof legacyBaseModel === \"string\" ? legacyBaseModel : null,\n typeof legacyBaseEffort === \"string\" ? legacyBaseEffort : null,\n normalized.aiMode,\n String(row.created_at),\n typeof row.last_message_at === \"string\" ? row.last_message_at : null,\n typeof row.parent_topic_id === \"string\" ? row.parent_topic_id : null,\n typeof row.memory_topic_id === \"string\" ? row.memory_topic_id : null,\n typeof row.memory_key === \"string\" ? row.memory_key : null,\n Number(row.is_fork ?? 0) !== 0 ? 1 : 0,\n Number(row.is_subagent ?? 0) !== 0 ? 1 : 0,\n row.visibility === \"hidden\" ? \"hidden\" : \"visible\",\n row.surface === undefined ? defaultTopicSurface() : normalizeTopicSurface(row.surface),\n typeof row.session_id === \"string\" ? row.session_id : null,\n );\n }\n db.exec(\"DROP TABLE IF EXISTS topic_members\");\n db.exec(\"DROP TABLE api_topics\");\n db.exec(\"ALTER TABLE api_topics_next RENAME TO api_topics\");\n createTopicMembersTable();\n if (existingMemberRows.length > 0) {\n for (const member of existingMemberRows) {\n db.query(\n \"INSERT OR REPLACE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\",\n ).run(member.topic_id, member.user_id, member.role === \"owner\" ? \"owner\" : \"member\");\n }\n } else {\n for (const row of legacyRows) {\n let participants: ParticipantDto[] = [];\n try {\n const parsed = JSON.parse(String(row.participants ?? \"[]\"));\n if (Array.isArray(parsed)) participants = parsed as ParticipantDto[];\n } catch {\n participants = [];\n }\n for (const participant of participants) {\n if (!participant?.userId) continue;\n db.query(\n \"INSERT OR REPLACE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\",\n ).run(\n String(row.id),\n participant.userId,\n participant.role === \"owner\" ? \"owner\" : \"member\",\n );\n }\n }\n }\n })();\n } finally {\n db.exec(`PRAGMA foreign_keys = ${previousForeignKeys ? \"ON\" : \"OFF\"}`);\n }\n } else {\n createCanonicalTopicsTable(\"api_topics\");\n createTopicMembersTable();\n }\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS subagent_tell_grants (\n subagent_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n target_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n granted_by_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n created_at TEXT NOT NULL,\n PRIMARY KEY (subagent_topic_id, target_topic_id)\n )\n `);\n db.exec(`\n DELETE FROM subagent_tell_grants\n WHERE subagent_topic_id NOT IN (SELECT id FROM api_topics)\n OR target_topic_id NOT IN (SELECT id FROM api_topics)\n OR granted_by_topic_id NOT IN (SELECT id FROM api_topics)\n `);\n db.exec(\"DELETE FROM topic_members WHERE topic_id NOT IN (SELECT id FROM api_topics)\");\n\n // Canonical databases created before explicit adapter visibility need a\n // lightweight additive migration; fresh/rebuilt databases already have it.\n if (!tableColumns(\"api_topics\").has(\"visibility\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN visibility TEXT NOT NULL DEFAULT 'visible'\");\n }\n if (!tableColumns(\"api_topics\").has(\"surface\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN surface TEXT NOT NULL DEFAULT 'terminal'\");\n }\n // `access_mode` was replaced by `surface`: a topic is reachable from Otium\n // because it lives there, not because a flag was flipped (S-4). Dropping the\n // column removes the second, now-contradictory source of truth.\n if (tableColumns(\"api_topics\").has(\"access_mode\")) {\n try {\n db.exec(\"ALTER TABLE api_topics DROP COLUMN access_mode\");\n } catch (err) {\n logger.warn({ err }, \"api_topics: could not drop the retired access_mode column\");\n }\n }\n if (!tableColumns(\"api_topics\").has(\"browser_profile\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN browser_profile TEXT NOT NULL DEFAULT 'default'\");\n }\n if (!tableColumns(\"api_topics\").has(\"browser_profile_owner\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN browser_profile_owner TEXT\");\n }\n if (!tableColumns(\"api_topics\").has(\"subagent_report_mode\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN subagent_report_mode TEXT NOT NULL DEFAULT 'auto'\");\n }\n if (!tableColumns(\"api_topics\").has(\"memory_topic_id\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN memory_topic_id TEXT\");\n }\n if (!tableColumns(\"api_topics\").has(\"memory_key\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN memory_key TEXT\");\n }\n db.exec(`\n UPDATE api_topics\n SET browser_profile_owner = (\n SELECT m.user_id FROM topic_members m\n WHERE m.topic_id = api_topics.id AND m.role = 'owner'\n ORDER BY m.rowid\n LIMIT 1\n )\n WHERE browser_profile_owner IS NULL\n`);\n backfillTopicSurfaces();\n db.exec(\n \"CREATE INDEX IF NOT EXISTS idx_api_topics_last_message ON api_topics(last_message_at DESC)\",\n );\n db.exec(\"CREATE INDEX IF NOT EXISTS idx_api_topics_surface ON api_topics(surface)\");\n}\n\nconst SURFACE_BACKFILL_MIGRATION = \"api_topics_surface_backfill_20260808\";\n\n/**\n * One-time classification of pre-surface topics.\n *\n * Every row predates the column, so there is no per-row evidence in this store\n * to distinguish surfaces — the host declares it (`NEGOTIUM_DEFAULT_SURFACE`).\n * The telegram adapter owns the second pass: its chat↔topic mapping lives in a\n * different database file, so only it can reclassify the rooms it created.\n *\n * Names are unique per surface from now on, so collapsing three namespaces into\n * one can produce duplicates. Rather than failing the boot, the oldest room\n * keeps the name and the rest are suffixed — a rename is recoverable, a node\n * that refuses to start is not.\n */\nfunction backfillTopicSurfaces(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_schema_migrations (\n key TEXT PRIMARY KEY,\n applied_at TEXT NOT NULL\n )\n`);\n const applied = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(SURFACE_BACKFILL_MIGRATION);\n if (applied) return;\n\n const surface = defaultTopicSurface();\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET surface = ?\").run(surface);\n renameSurfaceTitleCollisions();\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n SURFACE_BACKFILL_MIGRATION,\n new Date().toISOString(),\n );\n })();\n logger.info({ surface }, \"api_topics: surface backfilled\");\n}\n\n/** Suffix duplicate `(surface, kind, title)` rows so the new uniqueness rule holds. */\nfunction renameSurfaceTitleCollisions(): void {\n const rows = db\n .query<{ id: string; title: string; kind: string; surface: string }, []>(\n \"SELECT id, title, kind, surface FROM api_topics ORDER BY created_at ASC, rowid ASC\",\n )\n .all();\n const taken = new Set<string>();\n const update = db.query(\"UPDATE api_topics SET title = ? WHERE id = ?\");\n for (const row of rows) {\n const key = (title: string) => `${row.surface}\u0000${row.kind}\u0000${normalizedTitle(title)}`;\n if (!taken.has(key(row.title))) {\n taken.add(key(row.title));\n continue;\n }\n let suffix = 2;\n let candidate = `${row.title} (${suffix})`;\n while (taken.has(key(candidate))) {\n suffix += 1;\n candidate = `${row.title} (${suffix})`;\n }\n taken.add(key(candidate));\n update.run(candidate, row.id);\n logger.warn(\n { topicId: row.id, surface: row.surface, from: row.title, to: candidate },\n \"api_topics: renamed a duplicate title for surface-scoped uniqueness\",\n );\n }\n}\n\nregisterStorageSchemaInitializer(initializeApiTopicsSchema, 20);\n\nexport interface TopicRow {\n id: string;\n title: string;\n kind: string | null;\n description: string | null;\n agent: string | null;\n base_model: string | null;\n base_effort: string | null;\n response_policy: string;\n created_at: string;\n last_message_at: string | null;\n parent_topic_id: string | null;\n memory_topic_id: string | null;\n memory_key: string | null;\n is_fork: number;\n is_subagent: number;\n subagent_report_mode: string | null;\n visibility: string | null;\n surface: string | null;\n browser_profile_owner: string | null;\n session_id: string | null;\n}\n\nexport interface TopicSessionLogContext {\n reason?: string;\n queryId?: string;\n agent?: AgentKind;\n}\n\nfunction shortSessionId(sessionId: string | null | undefined): string | null {\n return sessionId ? sessionId.slice(0, 8) : null;\n}\n\nfunction getTopicParticipants(topicId: string): ParticipantDto[] {\n return db\n .query<{ user_id: string; role: \"owner\" | \"member\" }, string>(\n \"SELECT user_id, role FROM topic_members WHERE topic_id = ? ORDER BY rowid\",\n )\n .all(topicId)\n .map((row) => ({ userId: row.user_id, role: row.role }));\n}\n\nfunction getAllTopicParticipants(): Map<string, ParticipantDto[]> {\n const grouped = new Map<string, ParticipantDto[]>();\n const rows = db\n .query<{ topic_id: string; user_id: string; role: \"owner\" | \"member\" }, []>(\n \"SELECT topic_id, user_id, role FROM topic_members ORDER BY rowid\",\n )\n .all();\n for (const row of rows) {\n const participants = grouped.get(row.topic_id) ?? [];\n participants.push({ userId: row.user_id, role: row.role });\n grouped.set(row.topic_id, participants);\n }\n return grouped;\n}\n\nfunction getAllSubagentTellTargets(): Map<string, string[]> {\n const rows = db\n .query(\n \"SELECT subagent_topic_id, target_topic_id FROM subagent_tell_grants ORDER BY created_at\",\n )\n .all() as Array<{ subagent_topic_id: string; target_topic_id: string }>;\n const grouped = new Map<string, string[]>();\n for (const row of rows) {\n const targets = grouped.get(row.subagent_topic_id) ?? [];\n targets.push(row.target_topic_id);\n grouped.set(row.subagent_topic_id, targets);\n }\n return grouped;\n}\n\nfunction rowToDto(\n r: TopicRow,\n participants = getTopicParticipants(r.id),\n tellTargets?: Map<string, string[]>,\n): TopicDto {\n const normalized = normalizeTopicState({\n id: r.id,\n kind: normalizeTopicKind(r.kind),\n agent: (r.agent as AgentKind | null) ?? undefined,\n aiMode: normalizeAiMode(r.response_policy),\n });\n return {\n id: r.id,\n title: r.title,\n kind: normalized.kind,\n description: r.description ?? undefined,\n agent: normalized.agent,\n defaultModel: r.base_model ?? \"deepseek-pro\",\n defaultEffort: (r.base_effort as EffortLevel) ?? undefined,\n aiMode: normalized.aiMode,\n aiMention: aiMentionFromMode(normalized.aiMode),\n participants,\n createdAt: r.created_at,\n lastMessageAt: r.last_message_at ?? new Date().toISOString(),\n parentTopicId: r.parent_topic_id ?? undefined,\n memoryTopicId: r.memory_topic_id ?? undefined,\n memoryKey: r.memory_key ?? undefined,\n isFork: r.is_fork !== 0,\n ...(r.is_subagent !== 0 ? { isSubagent: true } : {}),\n ...(r.is_subagent !== 0\n ? {\n subagentTellTargetIds: tellTargets\n ? (tellTargets.get(r.id) ?? [])\n : listSubagentTellTargetIds(r.id),\n }\n : {}),\n ...(r.is_subagent !== 0\n ? {\n subagentReportMode: (r.subagent_report_mode === \"tell\" ||\n r.subagent_report_mode === \"status-only\"\n ? r.subagent_report_mode\n : \"auto\") as SubagentReportMode,\n }\n : {}),\n visibility: normalizeTopicVisibility(r.visibility),\n surface: normalizeTopicSurface(r.surface),\n };\n}\n\nexport function normalizeTopicVisibility(value: unknown): TopicVisibility {\n return value === \"hidden\" ? \"hidden\" : \"visible\";\n}\n\n/** Discovery boundary shared by user-facing adapters. */\nexport function isTopicVisible(topic: Pick<TopicDto, \"visibility\">): boolean {\n return topic.visibility !== \"hidden\";\n}\n\nexport function normalizeTopicKind(value: unknown): TopicKind | null {\n return value === \"channel\" || value === \"agent\" || value === \"manager\" ? value : null;\n}\n\nexport function normalizeAiMode(value: unknown): AiMode | null {\n return value === \"off\" || value === \"mention\" || value === \"always\" ? value : null;\n}\n\nexport function aiMentionFromMode(mode: AiMode): boolean {\n return mode === \"mention\";\n}\n\nexport function inferTopicKind(input: {\n agent?: string | null;\n aiMention?: boolean | null;\n}): TopicKind {\n return input.agent && input.aiMention !== true ? \"agent\" : \"channel\";\n}\n\nexport function inferAiMode(input: {\n kind?: TopicKind | null;\n agent?: string | null;\n aiMode?: AiMode | null;\n aiMention?: boolean | null;\n}): AiMode {\n if (input.kind === \"manager\") return \"always\";\n if (input.kind === \"agent\") return \"always\";\n if (input.kind === \"channel\") {\n if (!input.agent) return \"off\";\n if (input.aiMode === \"mention\") return \"mention\";\n if (input.aiMention === true) return \"mention\";\n return \"mention\";\n }\n if (!input.agent) return \"off\";\n if (input.aiMode) return input.aiMode;\n return input.aiMention === true ? \"mention\" : \"always\";\n}\n\nexport function normalizeTopicState(input: {\n id?: string;\n kind?: TopicKind | null;\n agent?: AgentKind | null;\n aiMode?: AiMode | null;\n aiMention?: boolean | null;\n}): { kind: TopicKind; aiMode: AiMode; agent?: AgentKind } {\n if (input.kind === \"manager\" || input.id === GENERAL_TOPIC_ID) {\n return {\n kind: \"manager\",\n aiMode: \"always\",\n agent: input.agent ?? DEFAULT_AGENT_ROOM_AGENT,\n };\n }\n\n const requestedKind = input.kind;\n const kind =\n requestedKind ??\n (input.aiMode === \"always\"\n ? \"agent\"\n : input.aiMode === \"mention\" || input.aiMode === \"off\"\n ? \"channel\"\n : input.agent && input.aiMention !== true\n ? \"agent\"\n : \"channel\");\n\n if (kind === \"agent\") {\n return {\n kind: \"agent\",\n aiMode: \"always\",\n agent: input.agent ?? DEFAULT_AGENT_ROOM_AGENT,\n };\n }\n\n const agent = input.aiMode === \"off\" ? undefined : (input.agent ?? undefined);\n return {\n kind: \"channel\",\n aiMode: agent ? \"mention\" : \"off\",\n agent,\n };\n}\n\nfunction normalizedTitle(title: string): string {\n return title.trim().toLowerCase();\n}\n\nexport function upsertTopic(t: TopicDto): void {\n const normalized = normalizeTopicState({\n id: t.id,\n kind: normalizeTopicKind(t.kind),\n agent: t.agent ?? undefined,\n aiMode: normalizeAiMode(t.aiMode),\n aiMention: t.aiMention,\n });\n db.transaction(() => {\n db.query(\n `INSERT INTO api_topics\n (id,title,kind,description,agent,base_model,base_effort,response_policy,\n created_at,last_message_at,parent_topic_id,memory_topic_id,memory_key,is_fork,is_subagent,visibility,surface,\n subagent_report_mode)\n VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\n ON CONFLICT(id) DO UPDATE SET\n title = excluded.title,\n kind = excluded.kind,\n description = excluded.description,\n agent = excluded.agent,\n base_model = excluded.base_model,\n base_effort = excluded.base_effort,\n response_policy = excluded.response_policy,\n created_at = excluded.created_at,\n last_message_at = excluded.last_message_at,\n parent_topic_id = excluded.parent_topic_id,\n memory_topic_id = excluded.memory_topic_id,\n memory_key = excluded.memory_key,\n is_fork = excluded.is_fork,\n is_subagent = excluded.is_subagent,\n visibility = excluded.visibility,\n surface = excluded.surface,\n subagent_report_mode = excluded.subagent_report_mode`,\n ).run(\n t.id,\n t.title,\n normalized.kind,\n t.description ?? null,\n normalized.agent ?? null,\n t.defaultModel ?? null,\n t.defaultEffort ?? null,\n normalized.aiMode,\n t.createdAt,\n t.lastMessageAt ?? null,\n t.parentTopicId ?? null,\n t.memoryTopicId ?? null,\n t.memoryKey ?? null,\n t.isFork ? 1 : 0,\n t.isSubagent ? 1 : 0,\n normalizeTopicVisibility(t.visibility),\n normalizeTopicSurface(t.surface),\n t.subagentReportMode ?? \"auto\",\n );\n db.query(\"DELETE FROM topic_members WHERE topic_id = ?\").run(t.id);\n for (const participant of t.participants) {\n db.query(\"INSERT INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\").run(\n t.id,\n participant.userId,\n participant.role,\n );\n }\n const initialBrowserProfileOwner = t.participants.find(\n (participant) => participant.role === \"owner\",\n )?.userId;\n if (initialBrowserProfileOwner) {\n db.query(\n `UPDATE api_topics\n SET browser_profile_owner = COALESCE(browser_profile_owner, ?)\n WHERE id = ?`,\n ).run(initialBrowserProfileOwner, t.id);\n }\n })();\n}\n\n/**\n * List topics, optionally restricted to one surface.\n *\n * The filter lives here rather than in each adapter so a forgotten call site\n * cannot leak a telegram room into the terminal picker; adapters pass their own\n * surface and get a closed world back.\n */\nexport function listTopics(opts: { surface?: TopicSurface } = {}): TopicDto[] {\n const rows = (\n opts.surface\n ? db\n .query(\"SELECT * FROM api_topics WHERE surface = ? ORDER BY last_message_at DESC\")\n .all(normalizeTopicSurface(opts.surface))\n : db.query(\"SELECT * FROM api_topics ORDER BY last_message_at DESC\").all()\n ) as TopicRow[];\n const participants = getAllTopicParticipants();\n // Batch-load tell grants once: per-row queries would make every listTopics()\n // call O(N) extra statements as subagent counts grow.\n const tellTargets = rows.some((row) => row.is_subagent !== 0)\n ? getAllSubagentTellTargets()\n : undefined;\n return rows.map((row) => rowToDto(row, participants.get(row.id) ?? [], tellTargets));\n}\n\nexport function getTopic(id: string): TopicDto | null {\n const r = db.query(\"SELECT * FROM api_topics WHERE id = ?\").get(id) as TopicRow | undefined;\n return r ? rowToDto(r) : null;\n}\n\n/** Return the private manager room owned by a user, excluding the retired shared General row. */\nexport function getManagerTopicForUser(userId: string): TopicDto | null {\n const row = db\n .query<TopicRow, [string, string]>(\n `SELECT t.* FROM api_topics t\n JOIN topic_members m ON m.topic_id = t.id\n WHERE t.kind = 'manager'\n AND t.id != ?\n AND m.user_id = ?\n AND m.role = 'owner'\n ORDER BY t.created_at ASC\n LIMIT 1`,\n )\n .get(GENERAL_TOPIC_ID, userId);\n return row ? rowToDto(row) : null;\n}\n\n/**\n * Resolve the topic whose wiki memory should be used for this topic.\n *\n * Derived rooms keep `parentTopicId` as an immediate UI link. Memory normally\n * follows the chain to its original root, while `memoryTopicId` can redirect a\n * subagent to another accessible topic's accumulated knowledge.\n */\nexport function getTopicMemoryOrigin(id: string): TopicDto | null {\n let current = getTopic(id);\n if (!current) return null;\n\n const seen = new Set<string>([current.id]);\n while (true) {\n const nextId = current.memoryTopicId ?? current.parentTopicId;\n if (!nextId || seen.has(nextId)) break;\n const next = getTopic(nextId);\n if (!next) {\n // An explicitly selected memory topic that no longer resolves must not\n // silently fall back to the parent chain — that would leak the parent\n // room's memory to a subagent that asked for something else. Stop at the\n // current topic instead so the broken source is visible.\n if (current.memoryTopicId) {\n console.warn(\n `[topics] memory topic ${current.memoryTopicId} for ${current.id} is unresolvable; using the topic's own memory`,\n );\n }\n break;\n }\n current = next;\n seen.add(current.id);\n }\n\n return current;\n}\n\n/** Look up a topic by its user-visible title (case-insensitive exact match). */\nexport function getTopicByName(title: string): TopicDto | null {\n const r = db.query(\"SELECT * FROM api_topics WHERE LOWER(title) = LOWER(?)\").get(title) as\n | TopicRow\n | undefined;\n return r ? rowToDto(r) : null;\n}\n\nexport function getTopicByNameAndKind(title: string, kind: TopicKind): TopicDto | null {\n const r = db\n .query(\"SELECT * FROM api_topics WHERE LOWER(title) = LOWER(?) AND kind = ?\")\n .get(title, kind) as TopicRow | undefined;\n return r ? rowToDto(r) : null;\n}\n\n/**\n * Titles are unique **per surface**, not per node: `otium` may exist once on\n * the terminal, once on telegram and once on the Otium hub.\n */\nexport function findTopicTitleConflict(\n title: string,\n kind: TopicKind,\n opts: { excludeTopicId?: string; surface?: TopicSurface } = {},\n): TopicDto | null {\n const wanted = normalizedTitle(title);\n const surface = normalizeTopicSurface(opts.surface ?? defaultTopicSurface());\n const generalTitleRequested = wanted === normalizedTitle(GENERAL_TOPIC_ID);\n if (generalTitleRequested && opts.excludeTopicId !== GENERAL_TOPIC_ID) {\n const general = db.query(\"SELECT * FROM api_topics WHERE id = ?\").get(GENERAL_TOPIC_ID) as\n | TopicRow\n | undefined;\n if (general) return rowToDto(general);\n }\n\n const params: string[] = [wanted, surface];\n let sql = \"SELECT * FROM api_topics WHERE LOWER(TRIM(title)) = ? AND surface = ?\";\n if (kind !== \"manager\") {\n sql += \" AND (kind = ? OR id = ?)\";\n params.push(kind, GENERAL_TOPIC_ID);\n }\n if (opts.excludeTopicId) {\n sql += \" AND id != ?\";\n params.push(opts.excludeTopicId);\n }\n sql += \" LIMIT 1\";\n const row = db.query<TopicRow, string[]>(sql).get(...params);\n return row ? rowToDto(row) : null;\n}\n\n/**\n * Move topics onto a surface. Used by adapters that own a classification the\n * canonical store cannot derive on its own (the telegram chat↔topic mapping\n * lives in that adapter's database, not this one).\n */\nexport function setTopicSurfaces(topicIds: readonly string[], surface: TopicSurface): number {\n if (topicIds.length === 0) return 0;\n const normalized = normalizeTopicSurface(surface);\n let changed = 0;\n db.transaction(() => {\n const update = db.query(\"UPDATE api_topics SET surface = ? WHERE id = ? AND surface != ?\");\n for (const topicId of topicIds) {\n changed += Number(update.run(normalized, topicId, normalized).changes ?? 0);\n }\n })();\n return changed;\n}\n\n/** Look up a topic by title, restricted to topics where `userId` participates. */\nexport function getTopicByNameForUser(\n title: string,\n userId: string,\n opts: { surface?: TopicSurface } = {},\n): TopicDto | null {\n const trimmed = title.trim();\n const qualified = /^(agent|channel|manager):(.+)$/i.exec(trimmed);\n const requestedKind = qualified ? normalizeTopicKind(qualified[1]?.toLowerCase()) : null;\n const requestedTitle = qualified ? qualified[2]!.trim() : trimmed;\n const rows = db\n .query(\n `SELECT t.* FROM api_topics t\n WHERE LOWER(t.title) = LOWER(?)\n AND t.id != ?\n AND t.visibility != 'hidden'\n AND (? IS NULL OR t.surface = ?)\n AND EXISTS (\n SELECT 1 FROM topic_members m WHERE m.topic_id = t.id AND m.user_id = ?\n )`,\n )\n .all(\n requestedTitle,\n GENERAL_TOPIC_ID,\n opts.surface ?? null,\n opts.surface ?? null,\n userId,\n ) as TopicRow[];\n const matches = requestedKind ? rows.filter((row) => row.kind === requestedKind) : rows;\n return matches.length === 1 ? rowToDto(matches[0]!) : null;\n}\n\n/** Persist the agent session ID for a topic after a successful turn. */\nexport function setTopicSessionId(\n topicId: string,\n sessionId: string,\n context: TopicSessionLogContext = {},\n): void {\n const previous = getTopicSessionId(topicId);\n const result = db\n .query(\"UPDATE api_topics SET session_id = ? WHERE id = ?\")\n .run(sessionId, topicId);\n const changes = Number(result.changes ?? 0);\n const logContext = {\n topicId,\n previousSessionId: shortSessionId(previous),\n sessionId: shortSessionId(sessionId),\n reason: context.reason,\n queryId: context.queryId,\n agent: context.agent,\n };\n if (changes === 0) {\n logger.warn(logContext, \"api-topic session_id update missed topic\");\n } else if (previous !== sessionId) {\n logger.debug(logContext, \"api-topic session_id updated\");\n } else {\n logger.debug(logContext, \"api-topic session_id unchanged\");\n }\n}\n\n/** Clear the session ID (e.g. on topic reset). */\nexport function clearTopicSessionId(topicId: string, reason = \"unspecified\"): void {\n const previous = getTopicSessionId(topicId);\n const result = db.query(\"UPDATE api_topics SET session_id = NULL WHERE id = ?\").run(topicId);\n const changes = Number(result.changes ?? 0);\n const logContext = { topicId, previousSessionId: shortSessionId(previous), reason };\n if (changes === 0) {\n logger.warn(logContext, \"api-topic session_id clear missed topic\");\n } else if (previous) {\n logger.info(logContext, \"api-topic session_id cleared\");\n } else {\n logger.debug(logContext, \"api-topic session_id already clear\");\n }\n}\n\n/** Read the persisted session ID for a topic, or null if none. */\nexport function getTopicSessionId(topicId: string): string | null {\n const r = db\n .query<{ session_id: string | null }, string>(\"SELECT session_id FROM api_topics WHERE id = ?\")\n .get(topicId);\n return r?.session_id ?? null;\n}\n\n/**\n * Hard-delete a topic row. Irreversible — the caller is responsible for also\n * deleting the topic's messages (see `deleteMessagesForTopic`). Returns false\n * if the topic didn't exist.\n */\nexport function deleteTopic(id: string, options: { allowManager?: boolean } = {}): boolean {\n const r = db\n .query<{ id: string; kind: string }, string>(\"SELECT id, kind FROM api_topics WHERE id = ?\")\n .get(id);\n if (!r) return false;\n if (id === GENERAL_TOPIC_ID || (r.kind === \"manager\" && !options.allowManager)) return false;\n db.query(\n `DELETE FROM subagent_tell_grants\n WHERE subagent_topic_id = ? OR target_topic_id = ? OR granted_by_topic_id = ?`,\n ).run(id, id, id);\n db.query(\"DELETE FROM topic_members WHERE topic_id = ?\").run(id);\n db.query(\"DELETE FROM api_topics WHERE id = ?\").run(id);\n return true;\n}\n\nexport function listSubagentTellTargetIds(subagentTopicId: string): string[] {\n return db\n .query<{ target_topic_id: string }, string>(\n \"SELECT target_topic_id FROM subagent_tell_grants WHERE subagent_topic_id = ? ORDER BY created_at\",\n )\n .all(subagentTopicId)\n .map((row) => row.target_topic_id);\n}\n\nexport function grantSubagentTellTarget(\n subagentTopicId: string,\n targetTopicId: string,\n grantedByTopicId: string,\n): void {\n db.query(\n `INSERT INTO subagent_tell_grants\n (subagent_topic_id,target_topic_id,granted_by_topic_id,created_at)\n VALUES (?,?,?,?)\n ON CONFLICT(subagent_topic_id,target_topic_id) DO UPDATE SET\n granted_by_topic_id = excluded.granted_by_topic_id`,\n ).run(subagentTopicId, targetTopicId, grantedByTopicId, new Date().toISOString());\n}\n\nexport function revokeSubagentTellTarget(subagentTopicId: string, targetTopicId: string): boolean {\n return (\n db\n .query(\"DELETE FROM subagent_tell_grants WHERE subagent_topic_id = ? AND target_topic_id = ?\")\n .run(subagentTopicId, targetTopicId).changes > 0\n );\n}\n\n/**\n * Preserve a derived-topic chain when an intermediate parent is deleted.\n * Direct children move to the deleted topic's parent (or become roots) rather\n * than retaining a dangling parent id that would break memory-origin lookup.\n */\nexport function reparentTopicChildren(\n deletedTopicId: string,\n replacementParentTopicId: string | null,\n): string[] {\n const rows = db\n .query<{ id: string }, string>(\"SELECT id FROM api_topics WHERE parent_topic_id = ?\")\n .all(deletedTopicId);\n if (rows.length === 0) return [];\n db.query(\"UPDATE api_topics SET parent_topic_id = ? WHERE parent_topic_id = ?\").run(\n replacementParentTopicId,\n deletedTopicId,\n );\n // Reparenting can move a topic out of the subtree whose manager granted its\n // tell edges; purge involved grants (fail closed) — an ancestor can re-grant.\n for (const row of rows) {\n db.query(\n \"DELETE FROM subagent_tell_grants WHERE subagent_topic_id = ? OR target_topic_id = ?\",\n ).run(row.id, row.id);\n }\n return rows.map((row) => row.id);\n}\n\nexport function addParticipantToDB(\n topicId: string,\n userId: string,\n role: \"member\" | \"owner\",\n): boolean {\n if (!db.query(\"SELECT 1 FROM api_topics WHERE id = ?\").get(topicId)) return false;\n db.query(\"INSERT OR IGNORE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\").run(\n topicId,\n userId,\n role,\n );\n return true;\n}\n\nexport function removeParticipantFromDB(topicId: string, userId: string): boolean {\n if (!db.query(\"SELECT 1 FROM api_topics WHERE id = ?\").get(topicId)) return false;\n db.query(\"DELETE FROM topic_members WHERE topic_id = ? AND user_id = ?\").run(topicId, userId);\n return true;\n}\n",
18
+ "// Persistent topic store backed by shared SQLite.\n\nimport { GENERAL_TOPIC_ID } from \"#platform/constants\";\nimport { logger } from \"#platform/logger\";\nimport { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\nimport type { AgentKind, EffortLevel } from \"#types\";\nimport type {\n AiMode,\n ParticipantDto,\n SubagentReportMode,\n TopicDto,\n TopicKind,\n TopicSurface,\n TopicVisibility,\n} from \"#types/api\";\n\nconst DEFAULT_AGENT_ROOM_AGENT: AgentKind = \"maestro\";\n\n/**\n * Surface used when a caller does not name one — and the value every existing\n * row is backfilled with on first boot after the surface migration.\n *\n * Hosts that only ever serve one surface declare it once in their environment\n * (`NEGOTIUM_DEFAULT_SURFACE=otium` on the Otium hub and worker); a developer\n * Mac leaves it unset and gets `terminal`, with the telegram adapter\n * reclassifying its own mapped rooms afterwards.\n */\nexport function defaultTopicSurface(): TopicSurface {\n return normalizeTopicSurface(process.env.NEGOTIUM_DEFAULT_SURFACE);\n}\n\nexport function normalizeTopicSurface(value: unknown): TopicSurface {\n return value === \"telegram\" || value === \"otium\" || value === \"terminal\" ? value : \"terminal\";\n}\n\nfunction tableColumns(table: string): Set<string> {\n const rows = db.query(`PRAGMA table_info(${table})`).all() as Array<{ name: string }>;\n return new Set(rows.map((row) => row.name));\n}\n\n/** Persist the authoritative agent and, when supplied, its normalized base defaults. */\nexport function setApiTopicAgent(\n topicId: string,\n agent: AgentKind,\n defaults?: { model: string; effort?: EffortLevel },\n): void {\n if (!defaults) {\n db.query(\"UPDATE api_topics SET agent = ? WHERE id = ?\").run(agent, topicId);\n return;\n }\n db.query(\"UPDATE api_topics SET agent = ?, base_model = ?, base_effort = ? WHERE id = ?\").run(\n agent,\n defaults.model,\n defaults.effort ?? null,\n topicId,\n );\n}\n\nfunction initializeApiTopicsSchema(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_topics (\n id TEXT PRIMARY KEY,\n title TEXT NOT NULL,\n kind TEXT NOT NULL DEFAULT 'channel',\n description TEXT,\n agent TEXT,\n default_model TEXT,\n default_effort TEXT,\n participants TEXT,\n created_at TEXT NOT NULL,\n last_message_at TEXT,\n is_archived INTEGER NOT NULL DEFAULT 0,\n ai_mention INTEGER NOT NULL DEFAULT 0,\n ai_mode TEXT\n )\n`);\n\n const initialTopicColumns = tableColumns(\"api_topics\");\n const legacyTopicSchema = !initialTopicColumns.has(\"response_policy\");\n const needsCanonicalTopicRebuild = legacyTopicSchema || !initialTopicColumns.has(\"agent\");\n if (legacyTopicSchema) {\n // Rename the legacy column once; new databases are created with `agent`.\n try {\n db.exec(\"ALTER TABLE api_topics RENAME COLUMN default_agent TO agent\");\n } catch {\n // Already migrated or freshly created.\n }\n\n // Migrate existing DBs that predate the ai_mention column (team-mode topics).\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN ai_mention INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists — nothing to do.\n }\n\n // Migrate for spawn/fork tracking (R1).\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN parent_topic_id TEXT\");\n } catch {\n // Column already exists.\n }\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN is_fork INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists.\n }\n\n // Migrate for agent-spawned subagent worker rooms.\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN is_subagent INTEGER NOT NULL DEFAULT 0\");\n } catch {\n // Column already exists.\n }\n\n // Migrate for session persistence.\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN session_id TEXT\");\n } catch {\n // Column already exists.\n }\n\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN kind TEXT NOT NULL DEFAULT 'channel'\");\n } catch {\n // Column already exists.\n }\n\n try {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN ai_mode TEXT\");\n } catch {\n // Column already exists.\n }\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_schema_migrations (\n key TEXT PRIMARY KEY,\n applied_at TEXT NOT NULL\n )\n`);\n\n const ALWAYS_RESPOND_MIGRATION = \"api_topics_ai_invited_default_always_respond_20260623\";\n const alwaysRespondMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(ALWAYS_RESPOND_MIGRATION);\n if (!alwaysRespondMigration) {\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET ai_mention = 0 WHERE agent IS NOT NULL\").run();\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n ALWAYS_RESPOND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const GENERAL_AGENT_KIND_MIGRATION = \"api_topics_general_agent_kind_20260704\";\n const generalAgentKindMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(GENERAL_AGENT_KIND_MIGRATION);\n if (!generalAgentKindMigration) {\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET kind = 'agent', ai_mention = 0 WHERE id = ?\").run(\n GENERAL_TOPIC_ID,\n );\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n GENERAL_AGENT_KIND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const AI_MODE_MIGRATION = \"api_topics_ai_mode_20260704\";\n const aiModeMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(AI_MODE_MIGRATION);\n if (!aiModeMigration) {\n db.transaction(() => {\n db.query(\n `UPDATE api_topics\n SET\n kind = CASE\n WHEN id = ? THEN 'agent'\n WHEN kind = 'channel' AND agent IS NOT NULL AND ai_mention = 0 THEN 'agent'\n ELSE kind\n END,\n ai_mode = CASE\n WHEN id = ? THEN 'always'\n WHEN agent IS NULL THEN 'off'\n WHEN kind = 'agent' THEN 'always'\n WHEN kind = 'channel' AND ai_mention != 0 THEN 'mention'\n WHEN kind = 'channel' AND ai_mention = 0 THEN 'always'\n WHEN ai_mention != 0 THEN 'mention'\n ELSE 'always'\n END`,\n ).run(GENERAL_TOPIC_ID, GENERAL_TOPIC_ID);\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n AI_MODE_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n\n const GENERAL_MANAGER_KIND_MIGRATION = \"api_topics_general_manager_kind_20260704\";\n const generalManagerKindMigration = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(GENERAL_MANAGER_KIND_MIGRATION);\n if (!generalManagerKindMigration) {\n db.transaction(() => {\n db.query(\n \"UPDATE api_topics SET kind = 'manager', ai_mention = 0, ai_mode = 'always' WHERE id = ?\",\n ).run(GENERAL_TOPIC_ID);\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n GENERAL_MANAGER_KIND_MIGRATION,\n new Date().toISOString(),\n );\n })();\n }\n }\n\n function createCanonicalTopicsTable(name: string): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS ${name} (\n id TEXT PRIMARY KEY,\n title TEXT NOT NULL,\n kind TEXT NOT NULL CHECK (kind IN ('channel','agent','manager')),\n description TEXT,\n agent TEXT CHECK (agent IS NULL OR agent IN ('maestro','claude','codex')),\n base_model TEXT,\n base_effort TEXT CHECK (base_effort IS NULL OR base_effort IN ('low','medium','high','xhigh','max')),\n response_policy TEXT NOT NULL CHECK (response_policy IN ('off','mention','always')),\n created_at TEXT NOT NULL,\n last_message_at TEXT,\n parent_topic_id TEXT,\n memory_topic_id TEXT,\n memory_key TEXT,\n is_fork INTEGER NOT NULL DEFAULT 0 CHECK (is_fork IN (0,1)),\n is_subagent INTEGER NOT NULL DEFAULT 0 CHECK (is_subagent IN (0,1)),\n visibility TEXT NOT NULL DEFAULT 'visible' CHECK (visibility IN ('visible','hidden')),\n surface TEXT NOT NULL DEFAULT 'terminal' CHECK (surface IN ('terminal','telegram','otium')),\n browser_profile TEXT NOT NULL DEFAULT 'default',\n browser_profile_owner TEXT,\n session_id TEXT,\n CHECK (\n (kind = 'channel' AND response_policy = 'off' AND agent IS NULL) OR\n (kind = 'channel' AND response_policy = 'mention' AND agent IS NOT NULL) OR\n (kind IN ('agent','manager') AND response_policy = 'always' AND agent IS NOT NULL)\n )\n )\n `);\n }\n\n function createTopicMembersTable(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS topic_members (\n topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n user_id TEXT NOT NULL,\n role TEXT NOT NULL CHECK (role IN ('owner','member')),\n PRIMARY KEY (topic_id, user_id)\n )\n `);\n db.exec(\"CREATE INDEX IF NOT EXISTS idx_topic_members_user ON topic_members(user_id)\");\n }\n\n if (needsCanonicalTopicRebuild) {\n const legacyRows = db.query(\"SELECT * FROM api_topics\").all() as Array<Record<string, unknown>>;\n const existingMemberRows = tableColumns(\"topic_members\").has(\"topic_id\")\n ? (db.query(\"SELECT topic_id, user_id, role FROM topic_members\").all() as Array<{\n topic_id: string;\n user_id: string;\n role: string;\n }>)\n : [];\n const configColumns = tableColumns(\"api_topic_config\");\n const legacyAgentOverrides = configColumns.has(\"agent\")\n ? new Map(\n (\n db\n .query(\"SELECT topic_id, agent FROM api_topic_config WHERE agent IS NOT NULL\")\n .all() as Array<{ topic_id: string; agent: AgentKind }>\n ).map((row) => [row.topic_id, row.agent]),\n )\n : new Map<string, AgentKind>();\n const previousForeignKeys = db\n .query<{ foreign_keys: number }, []>(\"PRAGMA foreign_keys\")\n .get()?.foreign_keys;\n db.exec(\"PRAGMA foreign_keys = OFF\");\n try {\n db.transaction(() => {\n createCanonicalTopicsTable(\"api_topics_next\");\n for (const row of legacyRows) {\n const selectedAgent = (legacyAgentOverrides.get(String(row.id)) ??\n row.agent ??\n row.runtime_agent ??\n row.default_agent ??\n undefined) as AgentKind | undefined;\n const normalized = normalizeTopicState({\n id: String(row.id),\n kind: normalizeTopicKind(row.kind),\n agent: selectedAgent,\n aiMode: normalizeAiMode(row.response_policy ?? row.ai_mode),\n aiMention: Number(row.ai_mention ?? 0) !== 0,\n });\n const legacyBaseModel = row.base_model ?? row.default_model;\n const legacyBaseEffort = row.base_effort ?? row.default_effort;\n db.query(\n `INSERT INTO api_topics_next\n (id,title,kind,description,agent,base_model,base_effort,response_policy,\n created_at,last_message_at,parent_topic_id,memory_topic_id,memory_key,is_fork,is_subagent,visibility,surface,session_id)\n VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`,\n ).run(\n String(row.id),\n String(row.title),\n normalized.kind,\n typeof row.description === \"string\" ? row.description : null,\n normalized.agent ?? null,\n typeof legacyBaseModel === \"string\" ? legacyBaseModel : null,\n typeof legacyBaseEffort === \"string\" ? legacyBaseEffort : null,\n normalized.aiMode,\n String(row.created_at),\n typeof row.last_message_at === \"string\" ? row.last_message_at : null,\n typeof row.parent_topic_id === \"string\" ? row.parent_topic_id : null,\n typeof row.memory_topic_id === \"string\" ? row.memory_topic_id : null,\n typeof row.memory_key === \"string\" ? row.memory_key : null,\n Number(row.is_fork ?? 0) !== 0 ? 1 : 0,\n Number(row.is_subagent ?? 0) !== 0 ? 1 : 0,\n row.visibility === \"hidden\" ? \"hidden\" : \"visible\",\n row.surface === undefined ? defaultTopicSurface() : normalizeTopicSurface(row.surface),\n typeof row.session_id === \"string\" ? row.session_id : null,\n );\n }\n db.exec(\"DROP TABLE IF EXISTS topic_members\");\n db.exec(\"DROP TABLE api_topics\");\n db.exec(\"ALTER TABLE api_topics_next RENAME TO api_topics\");\n createTopicMembersTable();\n if (existingMemberRows.length > 0) {\n for (const member of existingMemberRows) {\n db.query(\n \"INSERT OR REPLACE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\",\n ).run(member.topic_id, member.user_id, member.role === \"owner\" ? \"owner\" : \"member\");\n }\n } else {\n for (const row of legacyRows) {\n let participants: ParticipantDto[] = [];\n try {\n const parsed = JSON.parse(String(row.participants ?? \"[]\"));\n if (Array.isArray(parsed)) participants = parsed as ParticipantDto[];\n } catch {\n participants = [];\n }\n for (const participant of participants) {\n if (!participant?.userId) continue;\n db.query(\n \"INSERT OR REPLACE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\",\n ).run(\n String(row.id),\n participant.userId,\n participant.role === \"owner\" ? \"owner\" : \"member\",\n );\n }\n }\n }\n })();\n } finally {\n db.exec(`PRAGMA foreign_keys = ${previousForeignKeys ? \"ON\" : \"OFF\"}`);\n }\n } else {\n createCanonicalTopicsTable(\"api_topics\");\n createTopicMembersTable();\n }\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS subagent_tell_grants (\n subagent_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n target_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n granted_by_topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n created_at TEXT NOT NULL,\n PRIMARY KEY (subagent_topic_id, target_topic_id)\n )\n `);\n db.exec(`\n DELETE FROM subagent_tell_grants\n WHERE subagent_topic_id NOT IN (SELECT id FROM api_topics)\n OR target_topic_id NOT IN (SELECT id FROM api_topics)\n OR granted_by_topic_id NOT IN (SELECT id FROM api_topics)\n `);\n db.exec(\"DELETE FROM topic_members WHERE topic_id NOT IN (SELECT id FROM api_topics)\");\n\n // Canonical databases created before explicit adapter visibility need a\n // lightweight additive migration; fresh/rebuilt databases already have it.\n if (!tableColumns(\"api_topics\").has(\"visibility\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN visibility TEXT NOT NULL DEFAULT 'visible'\");\n }\n if (!tableColumns(\"api_topics\").has(\"surface\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN surface TEXT NOT NULL DEFAULT 'terminal'\");\n }\n // `access_mode` was replaced by `surface`: a topic is reachable from Otium\n // because it lives there, not because a flag was flipped (S-4). Dropping the\n // column removes the second, now-contradictory source of truth.\n if (tableColumns(\"api_topics\").has(\"access_mode\")) {\n try {\n db.exec(\"ALTER TABLE api_topics DROP COLUMN access_mode\");\n } catch (err) {\n logger.warn({ err }, \"api_topics: could not drop the retired access_mode column\");\n }\n }\n if (!tableColumns(\"api_topics\").has(\"browser_profile\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN browser_profile TEXT NOT NULL DEFAULT 'default'\");\n }\n if (!tableColumns(\"api_topics\").has(\"browser_profile_owner\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN browser_profile_owner TEXT\");\n }\n if (!tableColumns(\"api_topics\").has(\"subagent_report_mode\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN subagent_report_mode TEXT NOT NULL DEFAULT 'auto'\");\n }\n if (!tableColumns(\"api_topics\").has(\"memory_topic_id\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN memory_topic_id TEXT\");\n }\n if (!tableColumns(\"api_topics\").has(\"memory_key\")) {\n db.exec(\"ALTER TABLE api_topics ADD COLUMN memory_key TEXT\");\n }\n db.exec(`\n UPDATE api_topics\n SET browser_profile_owner = (\n SELECT m.user_id FROM topic_members m\n WHERE m.topic_id = api_topics.id AND m.role = 'owner'\n ORDER BY m.rowid\n LIMIT 1\n )\n WHERE browser_profile_owner IS NULL\n`);\n backfillTopicSurfaces();\n db.exec(\n \"CREATE INDEX IF NOT EXISTS idx_api_topics_last_message ON api_topics(last_message_at DESC)\",\n );\n db.exec(\"CREATE INDEX IF NOT EXISTS idx_api_topics_surface ON api_topics(surface)\");\n}\n\nconst SURFACE_BACKFILL_MIGRATION = \"api_topics_surface_backfill_20260808\";\n\n/**\n * One-time classification of pre-surface topics.\n *\n * Every row predates the column, so there is no per-row evidence in this store\n * to distinguish surfaces — the host declares it (`NEGOTIUM_DEFAULT_SURFACE`).\n * The telegram adapter owns the second pass: its chat↔topic mapping lives in a\n * different database file, so only it can reclassify the rooms it created.\n *\n * Names are unique per surface from now on, so collapsing three namespaces into\n * one can produce duplicates. Rather than failing the boot, the oldest room\n * keeps the name and the rest are suffixed — a rename is recoverable, a node\n * that refuses to start is not.\n */\nfunction backfillTopicSurfaces(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS api_schema_migrations (\n key TEXT PRIMARY KEY,\n applied_at TEXT NOT NULL\n )\n`);\n const applied = db\n .query(\"SELECT key FROM api_schema_migrations WHERE key = ?\")\n .get(SURFACE_BACKFILL_MIGRATION);\n if (applied) return;\n\n const surface = defaultTopicSurface();\n db.transaction(() => {\n db.query(\"UPDATE api_topics SET surface = ?\").run(surface);\n renameSurfaceTitleCollisions();\n db.query(\"INSERT INTO api_schema_migrations (key, applied_at) VALUES (?, ?)\").run(\n SURFACE_BACKFILL_MIGRATION,\n new Date().toISOString(),\n );\n })();\n logger.info({ surface }, \"api_topics: surface backfilled\");\n}\n\n/** Suffix duplicate `(surface, kind, title)` rows so the new uniqueness rule holds. */\nfunction renameSurfaceTitleCollisions(): void {\n const rows = db\n .query<{ id: string; title: string; kind: string; surface: string }, []>(\n \"SELECT id, title, kind, surface FROM api_topics ORDER BY created_at ASC, rowid ASC\",\n )\n .all();\n const taken = new Set<string>();\n const update = db.query(\"UPDATE api_topics SET title = ? WHERE id = ?\");\n for (const row of rows) {\n const key = (title: string) => [row.surface, row.kind, normalizedTitle(title)].join(\"\\u0000\");\n if (!taken.has(key(row.title))) {\n taken.add(key(row.title));\n continue;\n }\n let suffix = 2;\n let candidate = `${row.title} (${suffix})`;\n while (taken.has(key(candidate))) {\n suffix += 1;\n candidate = `${row.title} (${suffix})`;\n }\n taken.add(key(candidate));\n update.run(candidate, row.id);\n logger.warn(\n { topicId: row.id, surface: row.surface, from: row.title, to: candidate },\n \"api_topics: renamed a duplicate title for surface-scoped uniqueness\",\n );\n }\n}\n\nregisterStorageSchemaInitializer(initializeApiTopicsSchema, 20);\n\nexport interface TopicRow {\n id: string;\n title: string;\n kind: string | null;\n description: string | null;\n agent: string | null;\n base_model: string | null;\n base_effort: string | null;\n response_policy: string;\n created_at: string;\n last_message_at: string | null;\n parent_topic_id: string | null;\n memory_topic_id: string | null;\n memory_key: string | null;\n is_fork: number;\n is_subagent: number;\n subagent_report_mode: string | null;\n visibility: string | null;\n surface: string | null;\n browser_profile_owner: string | null;\n session_id: string | null;\n}\n\nexport interface TopicSessionLogContext {\n reason?: string;\n queryId?: string;\n agent?: AgentKind;\n}\n\nfunction shortSessionId(sessionId: string | null | undefined): string | null {\n return sessionId ? sessionId.slice(0, 8) : null;\n}\n\nfunction getTopicParticipants(topicId: string): ParticipantDto[] {\n return db\n .query<{ user_id: string; role: \"owner\" | \"member\" }, string>(\n \"SELECT user_id, role FROM topic_members WHERE topic_id = ? ORDER BY rowid\",\n )\n .all(topicId)\n .map((row) => ({ userId: row.user_id, role: row.role }));\n}\n\nfunction getAllTopicParticipants(): Map<string, ParticipantDto[]> {\n const grouped = new Map<string, ParticipantDto[]>();\n const rows = db\n .query<{ topic_id: string; user_id: string; role: \"owner\" | \"member\" }, []>(\n \"SELECT topic_id, user_id, role FROM topic_members ORDER BY rowid\",\n )\n .all();\n for (const row of rows) {\n const participants = grouped.get(row.topic_id) ?? [];\n participants.push({ userId: row.user_id, role: row.role });\n grouped.set(row.topic_id, participants);\n }\n return grouped;\n}\n\nfunction getAllSubagentTellTargets(): Map<string, string[]> {\n const rows = db\n .query(\n \"SELECT subagent_topic_id, target_topic_id FROM subagent_tell_grants ORDER BY created_at\",\n )\n .all() as Array<{ subagent_topic_id: string; target_topic_id: string }>;\n const grouped = new Map<string, string[]>();\n for (const row of rows) {\n const targets = grouped.get(row.subagent_topic_id) ?? [];\n targets.push(row.target_topic_id);\n grouped.set(row.subagent_topic_id, targets);\n }\n return grouped;\n}\n\nfunction rowToDto(\n r: TopicRow,\n participants = getTopicParticipants(r.id),\n tellTargets?: Map<string, string[]>,\n): TopicDto {\n const normalized = normalizeTopicState({\n id: r.id,\n kind: normalizeTopicKind(r.kind),\n agent: (r.agent as AgentKind | null) ?? undefined,\n aiMode: normalizeAiMode(r.response_policy),\n });\n return {\n id: r.id,\n title: r.title,\n kind: normalized.kind,\n description: r.description ?? undefined,\n agent: normalized.agent,\n defaultModel: r.base_model ?? \"deepseek-pro\",\n defaultEffort: (r.base_effort as EffortLevel) ?? undefined,\n aiMode: normalized.aiMode,\n aiMention: aiMentionFromMode(normalized.aiMode),\n participants,\n createdAt: r.created_at,\n lastMessageAt: r.last_message_at ?? new Date().toISOString(),\n parentTopicId: r.parent_topic_id ?? undefined,\n memoryTopicId: r.memory_topic_id ?? undefined,\n memoryKey: r.memory_key ?? undefined,\n isFork: r.is_fork !== 0,\n ...(r.is_subagent !== 0 ? { isSubagent: true } : {}),\n ...(r.is_subagent !== 0\n ? {\n subagentTellTargetIds: tellTargets\n ? (tellTargets.get(r.id) ?? [])\n : listSubagentTellTargetIds(r.id),\n }\n : {}),\n ...(r.is_subagent !== 0\n ? {\n subagentReportMode: (r.subagent_report_mode === \"tell\" ||\n r.subagent_report_mode === \"status-only\"\n ? r.subagent_report_mode\n : \"auto\") as SubagentReportMode,\n }\n : {}),\n visibility: normalizeTopicVisibility(r.visibility),\n surface: normalizeTopicSurface(r.surface),\n };\n}\n\nexport function normalizeTopicVisibility(value: unknown): TopicVisibility {\n return value === \"hidden\" ? \"hidden\" : \"visible\";\n}\n\n/** Discovery boundary shared by user-facing adapters. */\nexport function isTopicVisible(topic: Pick<TopicDto, \"visibility\">): boolean {\n return topic.visibility !== \"hidden\";\n}\n\nexport function normalizeTopicKind(value: unknown): TopicKind | null {\n return value === \"channel\" || value === \"agent\" || value === \"manager\" ? value : null;\n}\n\nexport function normalizeAiMode(value: unknown): AiMode | null {\n return value === \"off\" || value === \"mention\" || value === \"always\" ? value : null;\n}\n\nexport function aiMentionFromMode(mode: AiMode): boolean {\n return mode === \"mention\";\n}\n\nexport function inferTopicKind(input: {\n agent?: string | null;\n aiMention?: boolean | null;\n}): TopicKind {\n return input.agent && input.aiMention !== true ? \"agent\" : \"channel\";\n}\n\nexport function inferAiMode(input: {\n kind?: TopicKind | null;\n agent?: string | null;\n aiMode?: AiMode | null;\n aiMention?: boolean | null;\n}): AiMode {\n if (input.kind === \"manager\") return \"always\";\n if (input.kind === \"agent\") return \"always\";\n if (input.kind === \"channel\") {\n if (!input.agent) return \"off\";\n if (input.aiMode === \"mention\") return \"mention\";\n if (input.aiMention === true) return \"mention\";\n return \"mention\";\n }\n if (!input.agent) return \"off\";\n if (input.aiMode) return input.aiMode;\n return input.aiMention === true ? \"mention\" : \"always\";\n}\n\nexport function normalizeTopicState(input: {\n id?: string;\n kind?: TopicKind | null;\n agent?: AgentKind | null;\n aiMode?: AiMode | null;\n aiMention?: boolean | null;\n}): { kind: TopicKind; aiMode: AiMode; agent?: AgentKind } {\n if (input.kind === \"manager\" || input.id === GENERAL_TOPIC_ID) {\n return {\n kind: \"manager\",\n aiMode: \"always\",\n agent: input.agent ?? DEFAULT_AGENT_ROOM_AGENT,\n };\n }\n\n const requestedKind = input.kind;\n const kind =\n requestedKind ??\n (input.aiMode === \"always\"\n ? \"agent\"\n : input.aiMode === \"mention\" || input.aiMode === \"off\"\n ? \"channel\"\n : input.agent && input.aiMention !== true\n ? \"agent\"\n : \"channel\");\n\n if (kind === \"agent\") {\n return {\n kind: \"agent\",\n aiMode: \"always\",\n agent: input.agent ?? DEFAULT_AGENT_ROOM_AGENT,\n };\n }\n\n const agent = input.aiMode === \"off\" ? undefined : (input.agent ?? undefined);\n return {\n kind: \"channel\",\n aiMode: agent ? \"mention\" : \"off\",\n agent,\n };\n}\n\nfunction normalizedTitle(title: string): string {\n return title.trim().toLowerCase();\n}\n\nexport function upsertTopic(t: TopicDto): void {\n const normalized = normalizeTopicState({\n id: t.id,\n kind: normalizeTopicKind(t.kind),\n agent: t.agent ?? undefined,\n aiMode: normalizeAiMode(t.aiMode),\n aiMention: t.aiMention,\n });\n db.transaction(() => {\n db.query(\n `INSERT INTO api_topics\n (id,title,kind,description,agent,base_model,base_effort,response_policy,\n created_at,last_message_at,parent_topic_id,memory_topic_id,memory_key,is_fork,is_subagent,visibility,surface,\n subagent_report_mode)\n VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)\n ON CONFLICT(id) DO UPDATE SET\n title = excluded.title,\n kind = excluded.kind,\n description = excluded.description,\n agent = excluded.agent,\n base_model = excluded.base_model,\n base_effort = excluded.base_effort,\n response_policy = excluded.response_policy,\n created_at = excluded.created_at,\n last_message_at = excluded.last_message_at,\n parent_topic_id = excluded.parent_topic_id,\n memory_topic_id = excluded.memory_topic_id,\n memory_key = excluded.memory_key,\n is_fork = excluded.is_fork,\n is_subagent = excluded.is_subagent,\n visibility = excluded.visibility,\n surface = excluded.surface,\n subagent_report_mode = excluded.subagent_report_mode`,\n ).run(\n t.id,\n t.title,\n normalized.kind,\n t.description ?? null,\n normalized.agent ?? null,\n t.defaultModel ?? null,\n t.defaultEffort ?? null,\n normalized.aiMode,\n t.createdAt,\n t.lastMessageAt ?? null,\n t.parentTopicId ?? null,\n t.memoryTopicId ?? null,\n t.memoryKey ?? null,\n t.isFork ? 1 : 0,\n t.isSubagent ? 1 : 0,\n normalizeTopicVisibility(t.visibility),\n // A DTO without a surface means \"wherever this host puts rooms\", not\n // \"terminal\": embedding hosts (Otium) build topic literals by hand and\n // never name one, so defaulting to the literal would file every hub room\n // on the wrong surface.\n normalizeTopicSurface(t.surface ?? defaultTopicSurface()),\n t.subagentReportMode ?? \"auto\",\n );\n db.query(\"DELETE FROM topic_members WHERE topic_id = ?\").run(t.id);\n for (const participant of t.participants) {\n db.query(\"INSERT INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\").run(\n t.id,\n participant.userId,\n participant.role,\n );\n }\n const initialBrowserProfileOwner = t.participants.find(\n (participant) => participant.role === \"owner\",\n )?.userId;\n if (initialBrowserProfileOwner) {\n db.query(\n `UPDATE api_topics\n SET browser_profile_owner = COALESCE(browser_profile_owner, ?)\n WHERE id = ?`,\n ).run(initialBrowserProfileOwner, t.id);\n }\n })();\n}\n\n/**\n * List topics, optionally restricted to one surface.\n *\n * The filter lives here rather than in each adapter so a forgotten call site\n * cannot leak a telegram room into the terminal picker; adapters pass their own\n * surface and get a closed world back.\n */\nexport function listTopics(opts: { surface?: TopicSurface } = {}): TopicDto[] {\n const rows = (\n opts.surface\n ? db\n .query(\"SELECT * FROM api_topics WHERE surface = ? ORDER BY last_message_at DESC\")\n .all(normalizeTopicSurface(opts.surface))\n : db.query(\"SELECT * FROM api_topics ORDER BY last_message_at DESC\").all()\n ) as TopicRow[];\n const participants = getAllTopicParticipants();\n // Batch-load tell grants once: per-row queries would make every listTopics()\n // call O(N) extra statements as subagent counts grow.\n const tellTargets = rows.some((row) => row.is_subagent !== 0)\n ? getAllSubagentTellTargets()\n : undefined;\n return rows.map((row) => rowToDto(row, participants.get(row.id) ?? [], tellTargets));\n}\n\nexport function getTopic(id: string): TopicDto | null {\n const r = db.query(\"SELECT * FROM api_topics WHERE id = ?\").get(id) as TopicRow | undefined;\n return r ? rowToDto(r) : null;\n}\n\n/** Return the private manager room owned by a user, excluding the retired shared General row. */\nexport function getManagerTopicForUser(userId: string): TopicDto | null {\n const row = db\n .query<TopicRow, [string, string]>(\n `SELECT t.* FROM api_topics t\n JOIN topic_members m ON m.topic_id = t.id\n WHERE t.kind = 'manager'\n AND t.id != ?\n AND m.user_id = ?\n AND m.role = 'owner'\n ORDER BY t.created_at ASC\n LIMIT 1`,\n )\n .get(GENERAL_TOPIC_ID, userId);\n return row ? rowToDto(row) : null;\n}\n\n/**\n * Resolve the topic whose wiki memory should be used for this topic.\n *\n * Derived rooms keep `parentTopicId` as an immediate UI link. Memory normally\n * follows the chain to its original root, while `memoryTopicId` can redirect a\n * subagent to another accessible topic's accumulated knowledge.\n */\nexport function getTopicMemoryOrigin(id: string): TopicDto | null {\n let current = getTopic(id);\n if (!current) return null;\n\n const seen = new Set<string>([current.id]);\n while (true) {\n const nextId = current.memoryTopicId ?? current.parentTopicId;\n if (!nextId || seen.has(nextId)) break;\n const next = getTopic(nextId);\n if (!next) {\n // An explicitly selected memory topic that no longer resolves must not\n // silently fall back to the parent chain — that would leak the parent\n // room's memory to a subagent that asked for something else. Stop at the\n // current topic instead so the broken source is visible.\n if (current.memoryTopicId) {\n console.warn(\n `[topics] memory topic ${current.memoryTopicId} for ${current.id} is unresolvable; using the topic's own memory`,\n );\n }\n break;\n }\n current = next;\n seen.add(current.id);\n }\n\n return current;\n}\n\n/** Look up a topic by its user-visible title (case-insensitive exact match). */\nexport function getTopicByName(title: string): TopicDto | null {\n const r = db.query(\"SELECT * FROM api_topics WHERE LOWER(title) = LOWER(?)\").get(title) as\n | TopicRow\n | undefined;\n return r ? rowToDto(r) : null;\n}\n\nexport function getTopicByNameAndKind(title: string, kind: TopicKind): TopicDto | null {\n const r = db\n .query(\"SELECT * FROM api_topics WHERE LOWER(title) = LOWER(?) AND kind = ?\")\n .get(title, kind) as TopicRow | undefined;\n return r ? rowToDto(r) : null;\n}\n\n/**\n * Titles are unique **per surface**, not per node: `otium` may exist once on\n * the terminal, once on telegram and once on the Otium hub.\n */\nexport function findTopicTitleConflict(\n title: string,\n kind: TopicKind,\n opts: { excludeTopicId?: string; surface?: TopicSurface } = {},\n): TopicDto | null {\n const wanted = normalizedTitle(title);\n const surface = normalizeTopicSurface(opts.surface ?? defaultTopicSurface());\n const generalTitleRequested = wanted === normalizedTitle(GENERAL_TOPIC_ID);\n if (generalTitleRequested && opts.excludeTopicId !== GENERAL_TOPIC_ID) {\n const general = db.query(\"SELECT * FROM api_topics WHERE id = ?\").get(GENERAL_TOPIC_ID) as\n | TopicRow\n | undefined;\n if (general) return rowToDto(general);\n }\n\n const params: string[] = [wanted, surface];\n let sql = \"SELECT * FROM api_topics WHERE LOWER(TRIM(title)) = ? AND surface = ?\";\n if (kind !== \"manager\") {\n sql += \" AND (kind = ? OR id = ?)\";\n params.push(kind, GENERAL_TOPIC_ID);\n }\n if (opts.excludeTopicId) {\n sql += \" AND id != ?\";\n params.push(opts.excludeTopicId);\n }\n sql += \" LIMIT 1\";\n const row = db.query<TopicRow, string[]>(sql).get(...params);\n return row ? rowToDto(row) : null;\n}\n\n/**\n * Move topics onto a surface. Used by adapters that own a classification the\n * canonical store cannot derive on its own (the telegram chat↔topic mapping\n * lives in that adapter's database, not this one).\n */\nexport function setTopicSurfaces(topicIds: readonly string[], surface: TopicSurface): number {\n if (topicIds.length === 0) return 0;\n const normalized = normalizeTopicSurface(surface);\n let changed = 0;\n db.transaction(() => {\n const update = db.query(\"UPDATE api_topics SET surface = ? WHERE id = ? AND surface != ?\");\n for (const topicId of topicIds) {\n changed += Number(update.run(normalized, topicId, normalized).changes ?? 0);\n }\n })();\n return changed;\n}\n\n/** Look up a topic by title, restricted to topics where `userId` participates. */\nexport function getTopicByNameForUser(\n title: string,\n userId: string,\n opts: { surface?: TopicSurface } = {},\n): TopicDto | null {\n const trimmed = title.trim();\n const qualified = /^(agent|channel|manager):(.+)$/i.exec(trimmed);\n const requestedKind = qualified ? normalizeTopicKind(qualified[1]?.toLowerCase()) : null;\n const requestedTitle = qualified ? qualified[2]!.trim() : trimmed;\n const rows = db\n .query(\n `SELECT t.* FROM api_topics t\n WHERE LOWER(t.title) = LOWER(?)\n AND t.id != ?\n AND t.visibility != 'hidden'\n AND (? IS NULL OR t.surface = ?)\n AND EXISTS (\n SELECT 1 FROM topic_members m WHERE m.topic_id = t.id AND m.user_id = ?\n )`,\n )\n .all(\n requestedTitle,\n GENERAL_TOPIC_ID,\n opts.surface ?? null,\n opts.surface ?? null,\n userId,\n ) as TopicRow[];\n const matches = requestedKind ? rows.filter((row) => row.kind === requestedKind) : rows;\n return matches.length === 1 ? rowToDto(matches[0]!) : null;\n}\n\n/** Persist the agent session ID for a topic after a successful turn. */\nexport function setTopicSessionId(\n topicId: string,\n sessionId: string,\n context: TopicSessionLogContext = {},\n): void {\n const previous = getTopicSessionId(topicId);\n const result = db\n .query(\"UPDATE api_topics SET session_id = ? WHERE id = ?\")\n .run(sessionId, topicId);\n const changes = Number(result.changes ?? 0);\n const logContext = {\n topicId,\n previousSessionId: shortSessionId(previous),\n sessionId: shortSessionId(sessionId),\n reason: context.reason,\n queryId: context.queryId,\n agent: context.agent,\n };\n if (changes === 0) {\n logger.warn(logContext, \"api-topic session_id update missed topic\");\n } else if (previous !== sessionId) {\n logger.debug(logContext, \"api-topic session_id updated\");\n } else {\n logger.debug(logContext, \"api-topic session_id unchanged\");\n }\n}\n\n/** Clear the session ID (e.g. on topic reset). */\nexport function clearTopicSessionId(topicId: string, reason = \"unspecified\"): void {\n const previous = getTopicSessionId(topicId);\n const result = db.query(\"UPDATE api_topics SET session_id = NULL WHERE id = ?\").run(topicId);\n const changes = Number(result.changes ?? 0);\n const logContext = { topicId, previousSessionId: shortSessionId(previous), reason };\n if (changes === 0) {\n logger.warn(logContext, \"api-topic session_id clear missed topic\");\n } else if (previous) {\n logger.info(logContext, \"api-topic session_id cleared\");\n } else {\n logger.debug(logContext, \"api-topic session_id already clear\");\n }\n}\n\n/** Read the persisted session ID for a topic, or null if none. */\nexport function getTopicSessionId(topicId: string): string | null {\n const r = db\n .query<{ session_id: string | null }, string>(\"SELECT session_id FROM api_topics WHERE id = ?\")\n .get(topicId);\n return r?.session_id ?? null;\n}\n\n/**\n * Hard-delete a topic row. Irreversible — the caller is responsible for also\n * deleting the topic's messages (see `deleteMessagesForTopic`). Returns false\n * if the topic didn't exist.\n */\nexport function deleteTopic(id: string, options: { allowManager?: boolean } = {}): boolean {\n const r = db\n .query<{ id: string; kind: string }, string>(\"SELECT id, kind FROM api_topics WHERE id = ?\")\n .get(id);\n if (!r) return false;\n if (id === GENERAL_TOPIC_ID || (r.kind === \"manager\" && !options.allowManager)) return false;\n db.query(\n `DELETE FROM subagent_tell_grants\n WHERE subagent_topic_id = ? OR target_topic_id = ? OR granted_by_topic_id = ?`,\n ).run(id, id, id);\n db.query(\"DELETE FROM topic_members WHERE topic_id = ?\").run(id);\n db.query(\"DELETE FROM api_topics WHERE id = ?\").run(id);\n return true;\n}\n\nexport function listSubagentTellTargetIds(subagentTopicId: string): string[] {\n return db\n .query<{ target_topic_id: string }, string>(\n \"SELECT target_topic_id FROM subagent_tell_grants WHERE subagent_topic_id = ? ORDER BY created_at\",\n )\n .all(subagentTopicId)\n .map((row) => row.target_topic_id);\n}\n\nexport function grantSubagentTellTarget(\n subagentTopicId: string,\n targetTopicId: string,\n grantedByTopicId: string,\n): void {\n db.query(\n `INSERT INTO subagent_tell_grants\n (subagent_topic_id,target_topic_id,granted_by_topic_id,created_at)\n VALUES (?,?,?,?)\n ON CONFLICT(subagent_topic_id,target_topic_id) DO UPDATE SET\n granted_by_topic_id = excluded.granted_by_topic_id`,\n ).run(subagentTopicId, targetTopicId, grantedByTopicId, new Date().toISOString());\n}\n\nexport function revokeSubagentTellTarget(subagentTopicId: string, targetTopicId: string): boolean {\n return (\n db\n .query(\"DELETE FROM subagent_tell_grants WHERE subagent_topic_id = ? AND target_topic_id = ?\")\n .run(subagentTopicId, targetTopicId).changes > 0\n );\n}\n\n/**\n * Preserve a derived-topic chain when an intermediate parent is deleted.\n * Direct children move to the deleted topic's parent (or become roots) rather\n * than retaining a dangling parent id that would break memory-origin lookup.\n */\nexport function reparentTopicChildren(\n deletedTopicId: string,\n replacementParentTopicId: string | null,\n): string[] {\n const rows = db\n .query<{ id: string }, string>(\"SELECT id FROM api_topics WHERE parent_topic_id = ?\")\n .all(deletedTopicId);\n if (rows.length === 0) return [];\n db.query(\"UPDATE api_topics SET parent_topic_id = ? WHERE parent_topic_id = ?\").run(\n replacementParentTopicId,\n deletedTopicId,\n );\n // Reparenting can move a topic out of the subtree whose manager granted its\n // tell edges; purge involved grants (fail closed) — an ancestor can re-grant.\n for (const row of rows) {\n db.query(\n \"DELETE FROM subagent_tell_grants WHERE subagent_topic_id = ? OR target_topic_id = ?\",\n ).run(row.id, row.id);\n }\n return rows.map((row) => row.id);\n}\n\nexport function addParticipantToDB(\n topicId: string,\n userId: string,\n role: \"member\" | \"owner\",\n): boolean {\n if (!db.query(\"SELECT 1 FROM api_topics WHERE id = ?\").get(topicId)) return false;\n db.query(\"INSERT OR IGNORE INTO topic_members (topic_id,user_id,role) VALUES (?,?,?)\").run(\n topicId,\n userId,\n role,\n );\n return true;\n}\n\nexport function removeParticipantFromDB(topicId: string, userId: string): boolean {\n if (!db.query(\"SELECT 1 FROM api_topics WHERE id = ?\").get(topicId)) return false;\n db.query(\"DELETE FROM topic_members WHERE topic_id = ? AND user_id = ?\").run(topicId, userId);\n return true;\n}\n",
19
19
  "/**\n * Global (workspace-wide) application settings — a single shared record, not\n * per-user and not per-topic.\n *\n * Currently holds the global AI name (default \"Otium\"): the AI is one named\n * entity for the whole workspace. Changing it is an admin-only action (see the\n * settings route). Loaded lazily from the currently configured storage host.\n */\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { resolveStorageDataDir } from \"#storage/storage-host\";\n\nexport const DEFAULT_AI_NAME = \"Otium\";\n\nlet aiName = DEFAULT_AI_NAME;\nlet loadedSettingsFile: string | null = null;\n\nfunction settingsFile(): string {\n return join(resolveStorageDataDir(), \"otium-settings.json\");\n}\n\nfunction ensureSettingsLoaded(): string {\n const path = settingsFile();\n if (loadedSettingsFile === path) return path;\n loadedSettingsFile = path;\n aiName = DEFAULT_AI_NAME;\n try {\n if (existsSync(path)) {\n const data = JSON.parse(readFileSync(path, \"utf8\")) as { aiName?: unknown };\n if (typeof data.aiName === \"string\" && data.aiName.trim()) {\n aiName = data.aiName.trim();\n }\n }\n } catch {\n // Corrupt/missing file → keep the default.\n }\n return path;\n}\n\nexport function getGlobalAiName(): string {\n ensureSettingsLoaded();\n return aiName || DEFAULT_AI_NAME;\n}\n\n/** Set the global AI name (empty → reset to default). Persists to disk. */\nexport function setGlobalAiName(name: string): string {\n const path = ensureSettingsLoaded();\n aiName = name.trim() || DEFAULT_AI_NAME;\n try {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, JSON.stringify({ aiName }, null, 2));\n } catch {\n // Best-effort persistence; the in-memory value still updates.\n }\n return aiName;\n}\n",
20
20
  "import { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\nimport type { AskUserQuestionDto } from \"#types/api\";\n\nexport type AskUserGateState = \"pending\" | \"claimed\" | \"answered\" | \"cancelled\" | \"quarantined\";\n\nexport interface AskUserGateRecord {\n gateId: string;\n topicId: string;\n queryId?: string;\n idempotencyKey: string;\n bodyHash: string;\n messageId: string;\n ownerId: string;\n state: AskUserGateState;\n selectedLabel?: string;\n answeredBy?: string;\n}\n\ninterface AskUserGateRow {\n gate_id: string;\n topic_id: string;\n query_id: string | null;\n idempotency_key: string;\n body_hash: string;\n message_id: string;\n owner_id: string;\n state: AskUserGateState;\n selected_label: string | null;\n answered_by: string | null;\n}\n\nexport interface AskUserGateCardUpdate {\n topicId: string;\n messageId: string;\n askUserQuestion: AskUserQuestionDto;\n editedAt: string;\n}\n\nfunction initializeAskUserGateSchema(): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS ask_user_gates (\n gate_id TEXT PRIMARY KEY,\n topic_id TEXT NOT NULL REFERENCES api_topics(id) ON DELETE CASCADE,\n query_id TEXT,\n idempotency_key TEXT NOT NULL,\n body_hash TEXT NOT NULL,\n message_id TEXT NOT NULL UNIQUE,\n owner_id TEXT NOT NULL,\n state TEXT NOT NULL,\n selected_label TEXT,\n answered_by TEXT,\n claim_source TEXT,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL\n );\n CREATE INDEX IF NOT EXISTS idx_ask_user_gates_idempotency\n ON ask_user_gates(topic_id, idempotency_key, created_at);\n CREATE UNIQUE INDEX IF NOT EXISTS idx_ask_user_gates_active_key\n ON ask_user_gates(topic_id, idempotency_key)\n WHERE state IN ('pending', 'claimed');\n `);\n}\n\nregisterStorageSchemaInitializer(initializeAskUserGateSchema, 31);\n\nfunction fromRow(row: AskUserGateRow): AskUserGateRecord {\n return {\n gateId: row.gate_id,\n topicId: row.topic_id,\n queryId: row.query_id ?? undefined,\n idempotencyKey: row.idempotency_key,\n bodyHash: row.body_hash,\n messageId: row.message_id,\n ownerId: row.owner_id,\n state: row.state,\n selectedLabel: row.selected_label ?? undefined,\n answeredBy: row.answered_by ?? undefined,\n };\n}\n\nfunction latestGate(topicId: string, idempotencyKey: string): AskUserGateRecord | null {\n const row = db\n .query(\n `SELECT * FROM ask_user_gates\n WHERE topic_id = ? AND idempotency_key = ?\n ORDER BY rowid DESC LIMIT 1`,\n )\n .get(topicId, idempotencyKey) as AskUserGateRow | undefined;\n return row ? fromRow(row) : null;\n}\n\nfunction expireAskCard(\n topicId: string,\n messageId: string,\n editedAt: string,\n): AskUserGateCardUpdate | null {\n const row = db\n .query(\n `SELECT ask_user_question FROM api_messages\n WHERE topic_id = ? AND id = ? AND deleted = 0 AND kind = 'ask_user_question'`,\n )\n .get(topicId, messageId) as { ask_user_question: string | null } | undefined;\n if (!row?.ask_user_question) return null;\n const ask = JSON.parse(row.ask_user_question) as AskUserQuestionDto;\n if (ask.selectedLabel || ask.expired) return null;\n const expired = { ...ask, expired: true };\n db.query(\n `UPDATE api_messages SET ask_user_question = ?, edited_at = ?\n WHERE topic_id = ? AND id = ? AND deleted = 0 AND kind = 'ask_user_question'`,\n ).run(JSON.stringify(expired), editedAt, topicId, messageId);\n return { topicId, messageId, askUserQuestion: expired, editedAt };\n}\n\nexport type PrepareAskUserGateResult =\n | { outcome: \"created\"; gate: AskUserGateRecord }\n | { outcome: \"pending\"; gate: AskUserGateRecord }\n | { outcome: \"replay\"; gate: AskUserGateRecord }\n | { outcome: \"conflict\"; gate: AskUserGateRecord };\n\nexport function prepareAskUserGate(args: {\n gateId: string;\n topicId: string;\n queryId?: string;\n idempotencyKey: string;\n bodyHash: string;\n messageId: string;\n ownerId: string;\n now: string;\n}): PrepareAskUserGateResult {\n return db\n .transaction(() => {\n const latest = latestGate(args.topicId, args.idempotencyKey);\n if (latest?.bodyHash !== undefined && latest.bodyHash !== args.bodyHash) {\n return { outcome: \"conflict\", gate: latest } as const;\n }\n if (latest?.state === \"answered\") return { outcome: \"replay\", gate: latest } as const;\n if (\n latest &&\n (latest.state === \"pending\" || latest.state === \"claimed\") &&\n latest.ownerId === args.ownerId\n ) {\n return { outcome: \"pending\", gate: latest } as const;\n }\n if (latest && (latest.state === \"pending\" || latest.state === \"claimed\")) {\n return { outcome: \"pending\", gate: latest } as const;\n }\n\n db.query(\n `INSERT INTO ask_user_gates\n (gate_id, topic_id, query_id, idempotency_key, body_hash, message_id, owner_id, state, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?)`,\n ).run(\n args.gateId,\n args.topicId,\n args.queryId ?? null,\n args.idempotencyKey,\n args.bodyHash,\n args.messageId,\n args.ownerId,\n args.now,\n args.now,\n );\n return {\n outcome: \"created\",\n gate: {\n gateId: args.gateId,\n topicId: args.topicId,\n queryId: args.queryId,\n idempotencyKey: args.idempotencyKey,\n bodyHash: args.bodyHash,\n messageId: args.messageId,\n ownerId: args.ownerId,\n state: \"pending\",\n },\n } as const;\n })\n .immediate();\n}\n\nexport function quarantineAskUserGate(\n gateId: string,\n ownerId: string,\n now = new Date().toISOString(),\n): AskUserGateCardUpdate | null {\n return db\n .transaction(() => {\n const row = db.query(\"SELECT * FROM ask_user_gates WHERE gate_id = ?\").get(gateId) as\n | AskUserGateRow\n | undefined;\n if (!row || row.owner_id !== ownerId || ![\"pending\", \"claimed\"].includes(row.state)) {\n return null;\n }\n const result = db\n .query(\n `UPDATE ask_user_gates SET state = 'quarantined', updated_at = ?\n WHERE gate_id = ? AND owner_id = ? AND state IN ('pending', 'claimed')`,\n )\n .run(now, gateId, ownerId);\n if (Number(result.changes ?? 0) === 0) return null;\n return expireAskCard(row.topic_id, row.message_id, now);\n })\n .immediate();\n}\n\nexport function quarantineForeignAskUserGates(\n liveOwnerIds: ReadonlySet<string>,\n now = new Date().toISOString(),\n): AskUserGateCardUpdate[] {\n return db\n .transaction(() => {\n const rows = db\n .query(\n `SELECT * FROM ask_user_gates\n WHERE state IN ('pending', 'claimed')`,\n )\n .all() as AskUserGateRow[];\n const updates: AskUserGateCardUpdate[] = [];\n for (const row of rows) {\n if (liveOwnerIds.has(row.owner_id)) continue;\n if (row.state === \"claimed\" && row.selected_label && row.answered_by) {\n db.query(\n `UPDATE ask_user_gates SET state = 'answered', updated_at = ?\n WHERE gate_id = ? AND state = 'claimed'`,\n ).run(now, row.gate_id);\n continue;\n }\n const result = db\n .query(\n `UPDATE ask_user_gates SET state = 'quarantined', updated_at = ?\n WHERE gate_id = ? AND state IN ('pending', 'claimed')`,\n )\n .run(now, row.gate_id);\n if (Number(result.changes ?? 0) === 0) continue;\n const update = expireAskCard(row.topic_id, row.message_id, now);\n if (update) updates.push(update);\n }\n const legacyCards = db\n .query(\n `SELECT m.topic_id, m.id\n FROM api_messages m\n LEFT JOIN ask_user_gates g ON g.message_id = m.id\n WHERE m.kind = 'ask_user_question'\n AND m.deleted = 0\n AND g.gate_id IS NULL`,\n )\n .all() as { topic_id: string; id: string }[];\n for (const card of legacyCards) {\n const update = expireAskCard(card.topic_id, card.id, now);\n if (update) updates.push(update);\n }\n return updates;\n })\n .immediate();\n}\n\nexport type ClaimAskUserGateResult =\n | {\n outcome: \"claimed\";\n gate: AskUserGateRecord;\n askUserQuestion: AskUserQuestionDto;\n editedAt: string;\n }\n | { outcome: \"unavailable\" };\n\nexport function claimAskUserGateAndSelect(args: {\n topicId: string;\n messageId: string;\n label: string;\n userId: string;\n ownerId: string;\n source: string;\n now: string;\n}): ClaimAskUserGateResult {\n return db\n .transaction(() => {\n const row = db\n .query(\n `SELECT * FROM ask_user_gates\n WHERE topic_id = ? AND message_id = ?\n ORDER BY rowid DESC LIMIT 1`,\n )\n .get(args.topicId, args.messageId) as AskUserGateRow | undefined;\n if (!row || row.owner_id !== args.ownerId || row.state !== \"pending\") {\n return { outcome: \"unavailable\" } as const;\n }\n const message = db\n .query(\n `SELECT ask_user_question FROM api_messages\n WHERE topic_id = ? AND id = ? AND deleted = 0 AND kind = 'ask_user_question'`,\n )\n .get(args.topicId, args.messageId) as { ask_user_question: string | null } | undefined;\n if (!message?.ask_user_question) return { outcome: \"unavailable\" } as const;\n const ask = JSON.parse(message.ask_user_question) as AskUserQuestionDto;\n if (\n ask.expired ||\n ask.selectedLabel ||\n !ask.choices.some((choice) => choice.label === args.label)\n ) {\n return { outcome: \"unavailable\" } as const;\n }\n\n const claimed = db\n .query(\n `UPDATE ask_user_gates\n SET state = 'answered', selected_label = ?, answered_by = ?, claim_source = ?, updated_at = ?\n WHERE gate_id = ? AND owner_id = ? AND state = 'pending'`,\n )\n .run(args.label, args.userId, args.source, args.now, row.gate_id, args.ownerId);\n if (Number(claimed.changes ?? 0) === 0) return { outcome: \"unavailable\" } as const;\n\n const selected = { ...ask, selectedLabel: args.label };\n db.query(\n `UPDATE api_messages SET ask_user_question = ?, edited_at = ?\n WHERE topic_id = ? AND id = ? AND deleted = 0 AND kind = 'ask_user_question'`,\n ).run(JSON.stringify(selected), args.now, args.topicId, args.messageId);\n return {\n outcome: \"claimed\",\n gate: fromRow({\n ...row,\n state: \"answered\",\n selected_label: args.label,\n answered_by: args.userId,\n }),\n askUserQuestion: selected,\n editedAt: args.now,\n } as const;\n })\n .immediate();\n}\n\nexport function cancelAskUserGate(\n topicId: string,\n messageId: string,\n ownerId: string,\n now = new Date().toISOString(),\n): AskUserGateCardUpdate | null {\n return db\n .transaction(() => {\n const row = db\n .query(\n `SELECT * FROM ask_user_gates\n WHERE topic_id = ? AND message_id = ? ORDER BY rowid DESC LIMIT 1`,\n )\n .get(topicId, messageId) as AskUserGateRow | undefined;\n if (!row || row.owner_id !== ownerId || row.state !== \"pending\") return null;\n const result = db\n .query(\n `UPDATE ask_user_gates SET state = 'cancelled', updated_at = ?\n WHERE gate_id = ? AND owner_id = ? AND state = 'pending'`,\n )\n .run(now, row.gate_id, ownerId);\n if (Number(result.changes ?? 0) === 0) return null;\n return expireAskCard(topicId, messageId, now);\n })\n .immediate();\n}\n",
21
21
  "import {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n unlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport { appendJsonlLine } from \"#platform/jsonl\";\nimport { logger } from \"#platform/logger\";\nimport { sanitizeTopicName } from \"#security/sanitize\";\nimport { resolveStorageDataDir } from \"#storage/storage-host\";\nimport type { AgentKind, UnifiedEvent } from \"#types\";\n\n/**\n * Per-topic conversation log (UnifiedEvent stream) used as the\n * **provider-agnostic source of truth** for cross-agent portability.\n *\n * Storage layout:\n * {DATA_DIR}/conversations/{sanitizedTopicName}.jsonl\n * {DATA_DIR}/conversations/{sanitizedTopicName}.active.jsonl\n *\n * The first file is append-only and retains every yielded UnifiedEvent for\n * archive and teardown. The optional active file is a replaceable provider\n * projection: compaction writes its summary there and later turns append to\n * both streams. Agent switches and rollout repair read the active projection.\n *\n * The Claude/Codex SDK rollouts (~/.claude/projects/, ~/.codex/sessions/) are\n * intentionally treated as opaque side-effects of the SDKs. The raw stream\n * remains the forensic source of truth.\n */\nexport interface ConversationEntry {\n ts: string;\n /**\n * Agent that produced this event, frozen at write time. A topic that has\n * been switched (via `set_agent`) will have a mixed-agent log: earlier\n * entries keep the agent that originally generated them. Replay code\n * (rollout-codec `extractChatPairs`) intentionally ignores this field —\n * the cross-agent rollout's whole point is to feed past dialogue, no\n * matter who produced it, into the *new* SDK as if it were native.\n */\n agent: AgentKind;\n event: UnifiedEvent;\n}\n\n/** Public userId remains in the API, but standalone storage has one flat local namespace. */\nfunction conversationDir(_userId: number | string): string {\n return join(resolveStorageDataDir(), \"conversations\");\n}\n\nfunction topicFilename(topicName: string): string {\n const t = sanitizeTopicName(topicName, true);\n return `${t}.jsonl`;\n}\n\n/** Compute the absolute path for a given user/topic conversation log. */\nexport function getConversationPath(userId: number | string, topicName: string): string {\n return join(conversationDir(userId), topicFilename(topicName));\n}\n\n/** Replaceable provider context derived from the append-only raw conversation log. */\nexport function getActiveConversationPath(userId: number | string, topicName: string): string {\n const rawPath = getConversationPath(userId, topicName);\n return rawPath.endsWith(\".jsonl\")\n ? `${rawPath.slice(0, -\".jsonl\".length)}.active.jsonl`\n : `${rawPath}.active`;\n}\n\nexport function hasActiveConversation(userId: number | string, topicName: string): boolean {\n return existsSync(getActiveConversationPath(userId, topicName));\n}\n\n/**\n * Append a single UnifiedEvent for the given topic. Creates the parent\n * directory and the file as needed. Best-effort: I/O failures are logged but\n * never throw, since recording must not break the live stream to Telegram.\n *\n * **Concurrency note (review item M2, revised):** within the bot process the\n * single-threaded event loop already serializes writes — but this module is\n * NOT single-process: the self-config MCP server (a separate stdio process,\n * via `topic-agent-switch`) and provider bridge helpers append to the same\n * topic logs.\n * Cross-process interleaving on macOS is real for lines beyond PIPE_BUF\n * (512B), and a torn line is silently dropped by `readConversation` —\n * corrupting the canonical source for cross-agent rollout reconstruction.\n * Writes therefore go through `appendJsonlLine` (sidecar `.lock` via O_EXCL,\n * stale-lock reclaim, and a `JsonlLockTimeoutError` when the lock stays busy —\n * nothing is written unlocked, so a contended append fails instead of risking\n * an interleaved line that `readConversationPath` would later discard).\n *\n * The append stays SYNCHRONOUS on purpose: a previous attempt at a\n * Promise-chained per-topic queue made writes async (durability gap before a\n * synchronous `readConversation`) and broke `set_agent` in the bridge tests.\n */\nexport function appendConversationEvent(\n userId: number | string,\n topicName: string,\n agent: AgentKind,\n event: UnifiedEvent,\n): boolean {\n try {\n appendConversationEventStrict(userId, topicName, agent, event);\n return true;\n } catch (err) {\n logger.warn(\n { err, userId, topicName, eventType: event.type },\n \"appendConversationEvent: write failed\",\n );\n return false;\n }\n}\n\n/**\n * The raw manifest accepted an entry that the active projection rejected.\n *\n * Distinct from a plain write failure because the two logs are now out of sync\n * rather than merely un-updated: `raw` records the event, `active` — the log\n * replayed to the provider — does not.\n */\nexport class ConversationLogDivergedError extends Error {\n constructor(\n readonly rawPath: string,\n readonly activePath: string,\n override readonly cause: unknown,\n ) {\n super(\n `conversation logs diverged: the entry is in the raw manifest (${rawPath}) ` +\n `but the active projection (${activePath}) rejected it`,\n );\n this.name = \"ConversationLogDivergedError\";\n }\n}\n\n/**\n * Strict variant for state transitions where the conversation log is a manifest\n * rather than telemetry. Throws on I/O failure so callers can avoid committing\n * DB state that points at an unmanifested SDK session.\n */\nexport function appendConversationEventStrict(\n userId: number | string,\n topicName: string,\n agent: AgentKind,\n event: UnifiedEvent,\n): void {\n const path = getConversationPath(userId, topicName);\n const entry: ConversationEntry = {\n ts: new Date().toISOString(),\n agent,\n event,\n };\n const line = JSON.stringify(entry);\n mkdirSync(dirname(path), { recursive: true });\n appendJsonlLine(path, line);\n const activePath = getActiveConversationPath(userId, topicName);\n if (existsSync(activePath)) {\n try {\n appendJsonlLine(activePath, line);\n } catch (cause) {\n // The two appends are not atomic. Raw already has the entry, so failing\n // here leaves the logs permanently split: the provider replays `active`\n // and will never see this event, while the raw manifest says it happened.\n // We cannot un-append, so at least name the inconsistency instead of\n // surfacing a generic write error that hides which side is wrong.\n throw new ConversationLogDivergedError(path, activePath, cause);\n }\n }\n}\n\n/** Append lifecycle metadata to the raw manifest without changing active context. */\nexport function appendRawConversationEventStrict(\n userId: number | string,\n topicName: string,\n agent: AgentKind,\n event: UnifiedEvent,\n): void {\n const path = getConversationPath(userId, topicName);\n const entry: ConversationEntry = {\n ts: new Date().toISOString(),\n agent,\n event,\n };\n mkdirSync(dirname(path), { recursive: true });\n appendJsonlLine(path, JSON.stringify(entry));\n}\n\n/**\n * Read one JSONL conversation stream. Malformed lines are skipped so one\n * damaged event does not poison the remaining history.\n */\nfunction readConversationPath(path: string): ConversationEntry[] {\n const out: ConversationEntry[] = [];\n if (!existsSync(path)) return out;\n let raw: string;\n try {\n raw = readFileSync(path, \"utf8\");\n } catch (err) {\n logger.warn({ err, path }, \"readConversation: read failed\");\n return out;\n }\n for (const line of raw.split(\"\\n\")) {\n if (!line.trim()) continue;\n try {\n out.push(JSON.parse(line) as ConversationEntry);\n } catch (err) {\n logger.warn(\n { err, line: line.slice(0, 200) },\n \"readConversation: malformed JSONL line skipped\",\n );\n }\n }\n return out;\n}\n\n/**\n * Read the context the next provider turn should receive. Before the first\n * compaction this is the raw stream. Afterwards the replaceable active stream\n * contains the compacted summary plus every subsequently recorded event.\n *\n * NOTE(perf): reads the whole file each call. Topics in the kilobyte range\n * are fine; if a single topic ever grows into multi-megabyte territory,\n * consider a streaming reader (`readline`/`Bun.file().stream()`) and a\n * size-bounded tail.\n */\nexport function readConversation(userId: number | string, topicName: string): ConversationEntry[] {\n const activePath = getActiveConversationPath(userId, topicName);\n return readConversationPath(\n existsSync(activePath) ? activePath : getConversationPath(userId, topicName),\n );\n}\n\n/** Read the immutable full-fidelity stream used for archive and teardown. */\nexport function readRawConversation(\n userId: number | string,\n topicName: string,\n): ConversationEntry[] {\n return readConversationPath(getConversationPath(userId, topicName));\n}\n\n/** Atomically replace only the provider's active context projection. */\nexport function replaceConversationStrict(\n userId: number | string,\n topicName: string,\n entries: ConversationEntry[],\n): void {\n replaceConversationPathStrict(getActiveConversationPath(userId, topicName), entries);\n}\n\n/** Atomically seed or restore the append-only stream before it becomes live. */\nexport function replaceRawConversationStrict(\n userId: number | string,\n topicName: string,\n entries: ConversationEntry[],\n): void {\n replaceConversationPathStrict(getConversationPath(userId, topicName), entries);\n}\n\nfunction replaceConversationPathStrict(path: string, entries: ConversationEntry[]): void {\n const tempPath = `${path}.${process.pid}.${Date.now()}.tmp`;\n mkdirSync(dirname(path), { recursive: true });\n try {\n writeFileSync(\n tempPath,\n entries.length > 0 ? `${entries.map((entry) => JSON.stringify(entry)).join(\"\\n\")}\\n` : \"\",\n { flag: \"wx\" },\n );\n renameSync(tempPath, path);\n } catch (error) {\n try {\n unlinkSync(tempPath);\n } catch {}\n throw error;\n }\n}\n\n/**\n * Copy the unified conversation log of `srcTopic` into the file path that\n * `dstTopic` will read from. Used by `/fork` so a forked child topic inherits\n * the parent's full cross-agent history, not just the agent's native SDK\n * rollout. `/spawn` intentionally does not call this; it starts with no\n * conversation history. Without this copy, a fork followed immediately by\n * `/agent <other>` would feed the empty child log to `switchTopicAgent` and\n * the new agent would start from zero — see the bug report from 2026-05-24.\n *\n * Semantics:\n * - Copies the parent's raw stream and its active projection when present.\n * - Writes independent files so parent and child can diverge after the fork.\n * - Refuses to overwrite a non-empty destination (returns `{copied:false}`).\n * `/fork`'s only caller runs this immediately after topic creation when\n * the dst file is guaranteed empty, so a non-empty dst means a programmer\n * error somewhere upstream — fail loud rather than silently merging.\n * - On any I/O error: throws. The caller (`createChildTopic`) already has\n * a rollback path that wraps this call.\n */\nexport function cloneConversationLog(opts: {\n userId: number | string;\n srcTopic: string;\n dstTopic: string;\n}): { copied: boolean; entries: number } {\n const { userId, srcTopic, dstTopic } = opts;\n const dstPath = getConversationPath(userId, dstTopic);\n if (existsSync(dstPath) && readFileSync(dstPath, \"utf8\").trim().length > 0) {\n logger.warn(\n { userId, srcTopic, dstTopic, dstPath },\n \"cloneConversationLog: dst already non-empty — refusing to overwrite\",\n );\n return { copied: false, entries: 0 };\n }\n const entries = readRawConversation(userId, srcTopic);\n if (entries.length === 0) {\n return { copied: false, entries: 0 };\n }\n const body = `${entries.map((e) => JSON.stringify(e)).join(\"\\n\")}\\n`;\n mkdirSync(dirname(dstPath), { recursive: true });\n writeFileSync(dstPath, body);\n const srcActivePath = getActiveConversationPath(userId, srcTopic);\n if (existsSync(srcActivePath)) {\n const dstActivePath = getActiveConversationPath(userId, dstTopic);\n writeFileSync(dstActivePath, readFileSync(srcActivePath));\n }\n return { copied: true, entries: entries.length };\n}\n\n/**\n * Walk the unified log backwards and return the most recent SDK-emitted\n * session id for the given agent — or null if that agent has never run on\n * this topic.\n *\n * Used by `set_agent` to round-trip the SAME native rollout file across\n * agent switches: when the user does claude → codex → claude, we reuse\n * the original claude sessionId so the synthetic rollout lands at the\n * same path the SDK already manages, preserving prompt-cache continuity\n * and avoiding orphan `~/.claude/projects/<dir>/<id>.jsonl` files.\n *\n * Behavior:\n * - First-ever switch to an agent (no prior session events) → null,\n * caller falls back to a fresh randomUUID/uuidv7. Same as before.\n * - Roundtrip switch (prior session exists) → that sessionId.\n *\n * `session` events are emitted on every turn by claude-/codex-provider and\n * captured into the unified log by runAgent's append wrapper. The most\n * recent one for the target agent is by definition the current SDK-side\n * resume key for that agent.\n */\nexport function findLastSessionIdForAgent(\n entries: ConversationEntry[],\n agent: AgentKind,\n): string | null {\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (entry.agent !== agent) continue;\n if (entry.event.type === \"session\") {\n return entry.event.sessionId;\n }\n }\n return null;\n}\n",
@@ -38,7 +38,7 @@
38
38
  "import { rmSync } from \"node:fs\";\nimport { db } from \"#storage/forum-db\";\nimport { registerStorageSchemaInitializer } from \"#storage/storage-host\";\n\nregisterStorageSchemaInitializer((database) => {\n database.exec(`\n CREATE TABLE IF NOT EXISTS api_topic_archive_state (\n topic_id TEXT PRIMARY KEY,\n last_archived_rowid INTEGER NOT NULL DEFAULT 0,\n last_archive_path TEXT,\n updated_at TEXT NOT NULL\n );\n CREATE TABLE IF NOT EXISTS api_topic_archive_jobs (\n topic_id TEXT PRIMARY KEY,\n after_rowid INTEGER NOT NULL,\n last_rowid INTEGER NOT NULL,\n archive_path TEXT NOT NULL,\n message_count INTEGER NOT NULL,\n status TEXT NOT NULL CHECK (status IN ('running', 'pending')),\n updated_at TEXT NOT NULL\n );\n `);\n}, 30);\n\nconst ARCHIVE_JOB_STALE_MS = 30 * 60 * 1000;\n\nexport interface TopicArchiveState {\n topicId: string;\n lastArchivedRowid: number;\n lastArchivePath?: string;\n updatedAt: string;\n}\n\nexport interface TopicArchiveJob {\n topicId: string;\n afterRowid: number;\n lastRowid: number;\n archivePath: string;\n messageCount: number;\n status: \"running\" | \"pending\";\n updatedAt: string;\n}\n\nexport interface TopicArchiveJobCandidate {\n lastRowid: number;\n archivePath: string;\n messageCount: number;\n}\n\ninterface TopicArchiveStateRow {\n topic_id: string;\n last_archived_rowid: number;\n last_archive_path: string | null;\n updated_at: string;\n}\n\ninterface TopicArchiveJobRow {\n topic_id: string;\n after_rowid: number;\n last_rowid: number;\n archive_path: string;\n message_count: number;\n status: \"running\" | \"pending\";\n updated_at: string;\n}\n\nfunction rowToJob(row: TopicArchiveJobRow): TopicArchiveJob {\n return {\n topicId: row.topic_id,\n afterRowid: row.after_rowid,\n lastRowid: row.last_rowid,\n archivePath: row.archive_path,\n messageCount: row.message_count,\n status: row.status,\n updatedAt: row.updated_at,\n };\n}\n\nexport function getTopicArchiveState(topicId: string): TopicArchiveState | null {\n const row = db.query(\"SELECT * FROM api_topic_archive_state WHERE topic_id = ?\").get(topicId) as\n | TopicArchiveStateRow\n | undefined;\n if (!row) return null;\n return {\n topicId: row.topic_id,\n lastArchivedRowid: row.last_archived_rowid,\n lastArchivePath: row.last_archive_path ?? undefined,\n updatedAt: row.updated_at,\n };\n}\n\nexport function setTopicArchiveState(\n topicId: string,\n lastArchivedRowid: number,\n lastArchivePath?: string,\n): void {\n db.query(\n `INSERT INTO api_topic_archive_state (topic_id, last_archived_rowid, last_archive_path, updated_at)\n VALUES (?, ?, ?, ?)\n ON CONFLICT(topic_id) DO UPDATE SET\n last_archived_rowid = excluded.last_archived_rowid,\n last_archive_path = excluded.last_archive_path,\n updated_at = excluded.updated_at`,\n ).run(topicId, lastArchivedRowid, lastArchivePath ?? null, new Date().toISOString());\n}\n\n/** Atomically reserve one active-topic archive job across runtime processes. */\nexport function claimTopicArchiveJob(\n topicId: string,\n create: (afterRowid: number) => TopicArchiveJobCandidate | null,\n now = Date.now(),\n): { kind: \"claimed\"; job: TopicArchiveJob } | { kind: \"busy\" } | null {\n const claimExisting = () =>\n db.transaction(() => {\n const existing = db\n .query<TopicArchiveJobRow, [string]>(\n \"SELECT * FROM api_topic_archive_jobs WHERE topic_id = ?\",\n )\n .get(topicId);\n if (!existing) return null;\n const updatedAt = Date.parse(existing.updated_at);\n if (\n existing.status === \"running\" &&\n Number.isFinite(updatedAt) &&\n now - updatedAt < ARCHIVE_JOB_STALE_MS\n ) {\n return { kind: \"busy\" } as const;\n }\n const timestamp = new Date(now).toISOString();\n db.query(\n \"UPDATE api_topic_archive_jobs SET status = 'running', updated_at = ? WHERE topic_id = ?\",\n ).run(timestamp, topicId);\n return {\n kind: \"claimed\",\n job: rowToJob({ ...existing, status: \"running\", updated_at: timestamp }),\n } as const;\n })();\n\n const existingClaim = claimExisting();\n if (existingClaim) return existingClaim;\n\n // File serialization stays outside the SQLite write transaction. Only the\n // short compare-and-insert below is serialized across runtime processes.\n for (let attempt = 0; attempt < 2; attempt++) {\n const afterRowid = getTopicArchiveState(topicId)?.lastArchivedRowid ?? 0;\n const candidate = create(afterRowid);\n if (!candidate) return null;\n const result = db.transaction(() => {\n const existing = db\n .query<TopicArchiveJobRow, [string]>(\n \"SELECT * FROM api_topic_archive_jobs WHERE topic_id = ?\",\n )\n .get(topicId);\n if (existing) return { kind: \"busy\" } as const;\n const currentRowid = getTopicArchiveState(topicId)?.lastArchivedRowid ?? 0;\n if (currentRowid !== afterRowid) return { kind: \"stale\" } as const;\n const timestamp = new Date(now).toISOString();\n db.query(\n `INSERT INTO api_topic_archive_jobs\n (topic_id, after_rowid, last_rowid, archive_path, message_count, status, updated_at)\n VALUES (?, ?, ?, ?, ?, 'running', ?)`,\n ).run(\n topicId,\n afterRowid,\n candidate.lastRowid,\n candidate.archivePath,\n candidate.messageCount,\n timestamp,\n );\n return {\n kind: \"claimed\",\n job: {\n topicId,\n afterRowid,\n lastRowid: candidate.lastRowid,\n archivePath: candidate.archivePath,\n messageCount: candidate.messageCount,\n status: \"running\",\n updatedAt: timestamp,\n },\n } as const;\n })();\n if (result.kind === \"claimed\") return result;\n rmSync(candidate.archivePath, { force: true });\n if (result.kind === \"busy\") return result;\n }\n return claimExisting() ?? { kind: \"busy\" };\n}\n\n/** Advance the durable cursor only after the memory turn completes. */\nexport function settleTopicArchiveJob(\n topicId: string,\n archivePath: string,\n success: boolean,\n): void {\n db.transaction(() => {\n const job = db\n .query<TopicArchiveJobRow, [string, string]>(\n \"SELECT * FROM api_topic_archive_jobs WHERE topic_id = ? AND archive_path = ?\",\n )\n .get(topicId, archivePath);\n if (!job) return;\n if (!success) {\n db.query(\n \"UPDATE api_topic_archive_jobs SET status = 'pending', updated_at = ? WHERE topic_id = ? AND archive_path = ?\",\n ).run(new Date().toISOString(), topicId, archivePath);\n return;\n }\n const current = getTopicArchiveState(topicId)?.lastArchivedRowid ?? 0;\n setTopicArchiveState(topicId, Math.max(current, job.last_rowid), job.archive_path);\n db.query(\"DELETE FROM api_topic_archive_jobs WHERE topic_id = ? AND archive_path = ?\").run(\n topicId,\n archivePath,\n );\n })();\n}\n\n/** Remove the idle-archive cursor for a topic that no longer exists. */\nexport function deleteTopicArchiveState(topicId: string): boolean {\n return db.transaction(() => {\n db.query(\"DELETE FROM api_topic_archive_jobs WHERE topic_id = ?\").run(topicId);\n return (\n db.query(\"DELETE FROM api_topic_archive_state WHERE topic_id = ?\").run(topicId).changes > 0\n );\n })();\n}\n",
39
39
  "import { db } from \"#storage/forum-db\";\nimport { type AgentKind, isAgentKind } from \"#types\";\n\nexport interface TopicAgentSwitchState {\n name: string;\n agent: AgentKind;\n}\n\nfunction toTopicAgentSwitchState(row: {\n name: string;\n agent: string | null;\n}): TopicAgentSwitchState {\n if (!isAgentKind(row.agent)) throw new Error(`Invalid agent in DB: ${row.agent}`);\n return {\n name: row.name,\n agent: row.agent,\n };\n}\n\nexport function getTopicAgentSwitchState(\n userId: number,\n topicName: string,\n): TopicAgentSwitchState | null {\n const row = db\n .query<{ name: string; agent: string | null }, [string, string]>(\n \"SELECT name, agent FROM topics WHERE user_id = ? AND name = ?\",\n )\n .get(String(userId), topicName);\n return row ? toTopicAgentSwitchState(row) : null;\n}\n\nexport interface SetTopicAgentAndSessionOptions {\n userId: number;\n topicName: string;\n agent: AgentKind;\n sessionId: string;\n}\n\nexport function setTopicAgentAndSession(opts: SetTopicAgentAndSessionOptions): void {\n const { userId, topicName, agent, sessionId } = opts;\n db.transaction(() => {\n const r = db\n .query(\"UPDATE topics SET agent = ?, session_id = ? WHERE user_id = ? AND name = ?\")\n .run(agent, sessionId, String(userId), topicName);\n if (r.changes === 0) {\n throw new Error(`setTopicAgentAndSession: row missing for ${userId}/${topicName}`);\n }\n })();\n}\n\nexport interface SetTopicAgentAndClearSessionOptions {\n userId: number;\n topicName: string;\n agent: AgentKind;\n}\n\nexport function setTopicAgentAndClearSession(opts: SetTopicAgentAndClearSessionOptions): boolean {\n const { userId, topicName, agent } = opts;\n let changed = false;\n db.transaction(() => {\n const r = db\n .query(\"UPDATE topics SET agent = ?, session_id = NULL WHERE user_id = ? AND name = ?\")\n .run(agent, String(userId), topicName);\n changed = r.changes > 0;\n })();\n return changed;\n}\n"
40
40
  ],
41
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,eAEE;AAAA;AAAA,gBAEA;AAAA,cACA;AAAA,gBACA;AAAA,mBACA;AAAA;AAEF,2BAAmB;;;ACTnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBASE;AAAA;AAAA;AAGF;;;ACZA;;;ACAA;AAmBO,SAAS,iBAAiB,CAAC,UAA8B,CAAC,GAAG;AAAA,EAClE,MAAM,cAAc,QAAQ,eAAe;AAAA,EAC3C,OAAO,KACL;AAAA,IACE,OAAO,QAAQ,SAAS,QAAQ,IAAI,aAAa;AAAA,IACjD,WAAW,cACP;AAAA,MACE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,UAAU;AAAA,QACV,eAAe;AAAA,QACf,aAAa;AAAA,MACf;AAAA,IACF,IACA;AAAA,EACN,GACA,KAAK,YAAY,CAAC,CACpB;AAAA;AAKK,IAAM,SAAS,kBAAkB;;;AD9BjC,SAAS,gBAAgB,CAAC,MAAkC;AAAA,EACjE,OAAO,CAAC,MAAM,cAAc;AAAA,IAC1B,IAAI;AAAA,MACF,KAAK,OAAO,IAAI;AAAA,MAChB,OAAO,GAAG;AAAA,MACV,IAAK,GAA6B,SAAS;AAAA,QAAU;AAAA,MACrD,IAAI;AAAA,QAAW,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS;AAAA;AAAA;AAAA;AAK1D,IAAM,oBAAoB,iBAAiB;AAAA,EACzC,QAAQ;AAAA,EACR,MAAM,CAAC,SAAS,YAAY,OAAO,KAAK,SAAS,OAAO;AAC1D,CAAC;AAOM,SAAS,UAAU,CAAC,MAAc,WAA0B;AAAA,EACjE,kBAAkB,MAAM,SAAS;AAAA;;;ADlB5B,SAAS,cAAc,CAAC,UAA4B;AAAA,EACzD,OAAO,aAAa,UAAU,OAAO,EAAE,KAAK,EAAE,MAAM;AAAA,CAAI,EAAE,OAAO,OAAO;AAAA;AA0F1E,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,wBAAwB;AAE9B,IAAM,2BAA2B;AAWjC,SAAS,WAAW,GAAW;AAAA,EAC7B,MAAM,MAAM,OAAO,SAAS,QAAQ,IAAI,gCAAgC,IAAI,EAAE;AAAA,EAC9E,OAAO,OAAO,SAAS,GAAG,KAAK,MAAM,IAAI,MAAM;AAAA;AAIjD,SAAS,aAAa,GAAW;AAAA,EAC/B,OAAO,YAAY,IAAI;AAAA;AAEzB,IAAM,aAAa,IAAI,WAAW,IAAI,kBAAkB,WAAW,iBAAiB,CAAC;AAAA;AAQ9E,MAAM,8BAA8B,MAAM;AAAA,EAEpC;AAAA,EACA;AAAA,EAFX,WAAW,CACA,UACA,WACT;AAAA,IACA,MAAM,gCAAgC,mCAAmC,UAAU;AAAA,IAH1E;AAAA,IACA;AAAA,IAGT,KAAK,OAAO;AAAA;AAEhB;AAGA,SAAS,kBAAkB,CAAC,IAAkB;AAAA,EAC5C,QAAQ,KAAK,YAAY,GAAG,GAAG,EAAE;AAAA;AAGnC,SAAS,oBAAoB,CAAC,UAA2B;AAAA,EACvD,IAAI;AAAA,IACF,UAAU,SAAS,UAAU,IAAI,CAAC;AAAA,IAClC,OAAO;AAAA,IACP,OAAO,GAAG;AAAA,IACV,IAAK,EAA4B,SAAS;AAAA,MAAU,MAAM;AAAA,IAC1D,OAAO;AAAA;AAAA;AAIX,SAAS,WAAW,CAAC,UAA2B;AAAA,EAC9C,IAAI;AAAA,IACF,OAAO,KAAK,IAAI,IAAI,SAAS,QAAQ,EAAE,UAAU,YAAY;AAAA,IAC7D,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAYJ,SAAS,gBAAgB,CAAC,UAAkB,OAAsB;AAAA,EACvE,gBAAgB,UAAU,GAAG,KAAK,UAAU,KAAK;AAAA,CAAK;AAAA;AAUjD,SAAS,eAAe,CAAC,UAAkB,MAAoB;AAAA,EACpE,UAAU,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAChD,MAAM,WAAW,GAAG,WAAW;AAAA,EAC/B,MAAM,UAAU,KAAK,SAAS;AAAA,CAAI,IAAI,OAAO,GAAG;AAAA;AAAA,EAEhD,IAAI,WAAW,qBAAqB,QAAQ;AAAA,EAI5C,KAAK,YAAY,YAAY,QAAQ,GAAG;AAAA,IACtC,WAAW,QAAQ;AAAA,IACnB,WAAW,qBAAqB,QAAQ;AAAA,EAC1C;AAAA,EACA,KAAK,UAAU;AAAA,IACb,MAAM,QAAQ,KAAK,IAAI;AAAA,IACvB,MAAM,YAAY,cAAc;AAAA,IAChC,QAAQ,YAAY,KAAK,IAAI,IAAI,QAAQ,WAAW;AAAA,MAIlD,mBAAmB,aAAa;AAAA,MAChC,WAAW,qBAAqB,QAAQ;AAAA,MAGxC,KAAK,YAAY,YAAY,QAAQ,GAAG;AAAA,QACtC,WAAW,QAAQ;AAAA,QACnB,WAAW,qBAAqB,QAAQ;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA,EAEA,KAAK;AAAA,IAAU,MAAM,IAAI,sBAAsB,UAAU,cAAc,CAAC;AAAA,EAExE,IAAI;AAAA,IACF,eAAe,UAAU,OAAO;AAAA,YAChC;AAAA,IACA,WAAW,QAAQ;AAAA;AAAA;;;AG1NhB,SAAS,iBAAiB,CAAC,MAAc,YAAY,OAAe;AAAA,EACzE,MAAM,OAAO,KAAK,QAAQ,gCAAqB,GAAG,KAAK;AAAA,EACvD,OAAO,YAAY,KAAK,YAAY,IAAI;AAAA;AAOnC,SAAS,gBAAgB,CAAC,MAAsB;AAAA,EACrD,MAAM,OAAO,KAAK,QAAQ,oBAAoB,GAAG,KAAK;AAAA,EACtD,IAAI,SAAS,OAAO,SAAS;AAAA,IAAM,OAAO;AAAA,EAC1C,OAAO;AAAA;;;ACpBT,sBAAS;AACT;AACA,oBAAS;;;AC6BT,IAAM,QAAQ,OAAO,QAAQ,SAAS,QAAQ;AAI9C,IAAI;AAEJ,IAAI,OAAO;AAAA,GACR,EAAE,SAAS,IAAI,MAAa;AAC/B,EAAO;AAAA,EAmBL,MAAM,sBAAsB,CAAC,QAAQ,QAAQ,EAAE,KAAK,GAAG;AAAA,EACvD,QAAQ,iBAAkB,MAAa;AAAA;AAAA,EAIvC,MAAM,aAAa;AAAA,IACjB;AAAA,IAEA,WAAW,CAAC,MAAc,UAAqB,CAAC,GAAG;AAAA,MAGjD,KAAK,MAAM,QAAQ,WACf,IAAI,aAAa,MAAM,EAAE,UAAU,KAAK,CAAC,IACzC,IAAI,aAAa,IAAI;AAAA;AAAA,IAG3B,KAAK,CAAC,KAAa;AAAA,MACjB,OAAO,KAAK,IAAI,QAAQ,GAAG;AAAA;AAAA,IAG7B,OAAO,CAAC,KAAa;AAAA,MACnB,OAAO,KAAK,IAAI,QAAQ,GAAG;AAAA;AAAA,IAG7B,IAAI,CAAC,KAAmB;AAAA,MACtB,KAAK,IAAI,KAAK,GAAG;AAAA;AAAA,IAGnB,GAAG,CAAC,QAAgB,QAAmB;AAAA,MACrC,OAAO,KAAK,IAAI,QAAQ,GAAG,EAAE,IAAI,GAAG,MAAM;AAAA;AAAA,IAG5C,WAAsC,CAAC,IAAgD;AAAA,MAMrF,MAAM,MACJ,CAAC,UACD,IAAI,SAAkB;AAAA,QACpB,KAAK,IAAI,KAAK,KAAK;AAAA,QACnB,IAAI;AAAA,UACF,MAAM,SAAS,GAAG,GAAG,IAAI;AAAA,UACzB,KAAK,IAAI,KAAK,QAAQ;AAAA,UACtB,OAAO;AAAA,UACP,OAAO,KAAK;AAAA,UACZ,KAAK,IAAI,KAAK,UAAU;AAAA,UACxB,MAAM;AAAA;AAAA;AAAA,MAGZ,MAAM,KAAK,IAAI,OAAO;AAAA,MAKtB,GAAG,WAAW,IAAI,gBAAgB;AAAA,MAClC,GAAG,YAAY,IAAI,iBAAiB;AAAA,MACpC,GAAG,YAAY,IAAI,iBAAiB;AAAA,MACpC,OAAO;AAAA;AAAA,IAGT,KAAK,GAAS;AAAA,MACZ,KAAK,IAAI,MAAM;AAAA;AAAA,EAEnB;AAAA,EAEA,WAAW;AAAA;;;ADjEb,IAAM,qBAAqB,OAAO,IAAI,gCAAgC;AAEtE,SAAS,YAAY,GAAqB;AAAA,EACxC,MAAM,SAAS;AAAA,EACf,MAAM,WAAW,OAAO;AAAA,EACxB,IAAI;AAAA,IAAU,OAAO;AAAA,EACrB,MAAM,UAA4B;AAAA,IAChC,gBAAgB,CAAC;AAAA,IACjB,kBAAkB;AAAA,IAClB,sBAAsB;AAAA,IACtB,QAAQ,CAAC;AAAA,IACT,oBAAoB,CAAC;AAAA,IACrB,oBAAoB,IAAI;AAAA,IACxB,uBAAuB,IAAI;AAAA,EAC7B;AAAA,EACA,OAAO,eAAe,QAAQ,oBAAoB;AAAA,IAChD,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,cAAc;AAAA,EAChB,CAAC;AAAA,EACD,OAAO;AAAA;AAGT,SAAS,OAAO,CAAC,MAAc,UAA0B;AAAA,EACvD,MAAM,QAAQ,QAAQ,IAAI,OAAO,KAAK;AAAA,EACtC,OAAO,QAAQ,SAAS,QAAQ;AAAA;AAGlC,SAAS,eAAe,GAAW;AAAA,EACjC,OAAO,QAAQ,sBAAsB,KAAK,QAAQ,GAAG,WAAW,CAAC;AAAA;AAGnE,SAAS,cAAc,GAAW;AAAA,EAChC,OAAO,QAAQ,qBAAqB,KAAK,gBAAgB,GAAG,MAAM,CAAC;AAAA;AAGrE,SAAS,aAAa,GAAW;AAAA,EAC/B,OAAO,QAAQ,oBAAoB,KAAK,gBAAgB,GAAG,MAAM,CAAC;AAAA;AAGpE,SAAS,mBAAmB,GAAW;AAAA,EACrC,OAAO,QAAQ,0BAA0B,KAAK,gBAAgB,GAAG,WAAW,CAAC;AAAA;AAG/E,SAAS,qBAAqB,GAAW;AAAA,EACvC,MAAM,SAAS,QAAQ,oBAAoB,KAAK,gBAAgB,GAAG,SAAS,CAAC;AAAA,EAC7E,OAAO,KAAK,QAAQ,cAAc;AAAA;AAGpC,SAAS,2BAA2B,GAAW;AAAA,EAC7C,OAAO,QAAQ,oBAAoB,KAAK,sBAAsB,GAAG,aAAa,CAAC;AAAA;AAGjF,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB;AAC/B,IAAM,oBAAoB,IAAI,WAAW,IAAI,kBAAkB,WAAW,iBAAiB,CAAC;AAE5F,SAAS,YAAY,CAAC,OAAyB;AAAA,EAC7C,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,EACrE,OAAO,sDAAsD,KAAK,OAAO;AAAA;AAG3E,SAAS,iBAAiB,CACxB,UACA,KACA,YAAY,wBACN;AAAA,EACN,MAAM,WAAW,KAAK,IAAI,IAAI;AAAA,EAC9B,OAAO,MAAM;AAAA,IACX,IAAI;AAAA,MACF,SAAS,KAAK,GAAG;AAAA,MACjB;AAAA,MACA,OAAO,OAAO;AAAA,MACd,KAAK,aAAa,KAAK,KAAK,KAAK,IAAI,KAAK;AAAA,QAAU,MAAM;AAAA,MAC1D,QAAQ,KAAK,mBAAmB,GAAG,GAAG,KAAK,IAAI,sBAAsB,WAAW,KAAK,IAAI,CAAC,CAAC;AAAA;AAAA,EAE/F;AAAA;AAGK,SAAS,kBAAkB,CAAC,UAAyC;AAAA,EAQ1E,SAAS,KAAK,4BAA4B;AAAA,EAC1C,kBAAkB,UAAU,2BAA2B;AAAA,EACvD,SAAS,KAAK,0BAA0B;AAAA,EACxC,SAAS,KAAK,kCAAkC;AAAA,EAChD,IAAI;AAAA,IACF,SAAS,KAAK,iCAAiC;AAAA,IAC/C,MAAM;AAAA;AAKV,SAAS,eAAe,GAA4B;AAAA,EAClD,MAAM,OAAO,4BAA4B;AAAA,EACzC,MAAM,QAAQ,aAAa;AAAA,EAC3B,IAAI,MAAM,oBAAoB,MAAM,yBAAyB;AAAA,IAAM,OAAO,MAAM;AAAA,EAChF,IAAI,MAAM;AAAA,IAAkB,MAAM,iBAAiB,MAAM;AAAA,EACzD,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,MAAM,mBAAmB,IAAI,SAAS,MAAM,EAAE,QAAQ,KAAK,CAAC;AAAA,EAC5D,MAAM,uBAAuB;AAAA,EAC7B,mBAAmB,MAAM,gBAAgB;AAAA,EACzC,OAAO,MAAM;AAAA;AAGR,SAAS,sBAAsB,GAA4B;AAAA,EAChE,OAAQ,aAAa,EAAE,eAAe,YAAY,gBAAgB;AAAA;AAgB7D,SAAS,qBAAqB,GAAW;AAAA,EAC9C,OAAO,aAAa,EAAE,eAAe,WAAW,eAAe;AAAA;AAG1D,SAAS,oBAAoB,GAAW;AAAA,EAC7C,OAAO,aAAa,EAAE,eAAe,UAAU,cAAc;AAAA;AAGxD,SAAS,4BAA4B,GAAW;AAAA,EACrD,OAAO,aAAa,EAAE,eAAe,kBAAkB,sBAAsB;AAAA;AAGxE,SAAS,0BAA0B,GAAW;AAAA,EACnD,OAAO,aAAa,EAAE,eAAe,gBAAgB,oBAAoB;AAAA;AAGpE,SAAS,2BAA2B,GAAW;AAAA,EACpD,OAAO,aAAa,EAAE,eAAe,iBAAiB,KAAK,2BAA2B,GAAG,MAAM;AAAA;AAG1F,SAAS,yBAAyB,GAAW;AAAA,EAClD,OAAO,aAAa,EAAE,eAAe,eAAe,KAAK,sBAAsB,GAAG,OAAO;AAAA;AAG3F,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,yBAAyB,CAAC,SAAyD;AAAA,EAC1F,MAAM,QAA2B,CAAC;AAAA,EAClC,IAAI,QAAQ,aAAa,WAAW;AAAA,IAClC,QAAQ,SAAS,KAAK,0BAA0B;AAAA,IAChD,MAAM,WAAW,QAAQ;AAAA,EAC3B;AAAA,EACA,WAAW,OAAO,mBAAmB;AAAA,IACnC,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,UAAU;AAAA,MAAW;AAAA,IACzB,KAAK,MAAM,KAAK;AAAA,MAAG,MAAM,IAAI,UAAU,GAAG,uBAAuB;AAAA,IACjE,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC5B;AAAA,EACA,OAAO,OAAO,OAAO,KAAK;AAAA;AAG5B,SAAS,qBAAqB,GAAS;AAAA,EACrC,MAAM,QAAQ,aAAa;AAAA,EAC3B,MAAM,iBAAiB,OAAO,OAC5B,OAAO,OAAO,CAAC,GAAG,GAAG,MAAM,OAAO,OAAO,CAAC,UAAU,MAAM,MAAM,EAAE,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAC/F;AAAA;AAUK,SAAS,oBAAoB,CAAC,SAAwC;AAAA,EAC3E,MAAM,QAA0B,EAAE,QAAQ,MAAM,OAAO,0BAA0B,OAAO,EAAE;AAAA,EAC1F,aAAa,EAAE,OAAO,KAAK,KAAK;AAAA,EAChC,sBAAsB;AAAA,EACtB,OAAO,MAAM;AAAA,IACX,KAAK,MAAM;AAAA,MAAQ;AAAA,IACnB,MAAM,SAAS;AAAA,IACf,MAAM,SAAS,aAAa,EAAE;AAAA,IAC9B,MAAM,QAAQ,OAAO,QAAQ,KAAK;AAAA,IAClC,IAAI,SAAS;AAAA,MAAG,OAAO,OAAO,OAAO,CAAC;AAAA,IACtC,sBAAsB;AAAA;AAAA;AAKnB,SAAS,gBAAgB,GAAS;AAAA,EACvC,MAAM,SAAS,aAAa,EAAE;AAAA,EAC9B,WAAW,SAAS;AAAA,IAAQ,MAAM,SAAS;AAAA,EAC3C,OAAO,SAAS;AAAA,EAChB,sBAAsB;AAAA;AAIjB,SAAS,oBAAoB,GAAS;AAAA,EAC3C,MAAM,QAAQ,aAAa;AAAA,EAC3B,KAAK,MAAM;AAAA,IAAkB;AAAA,EAC7B,MAAM,iBAAiB,MAAM;AAAA,EAC7B,MAAM,mBAAmB;AAAA,EACzB,MAAM,uBAAuB;AAAA;AAGxB,SAAS,gCAAgC,CAC9C,YACA,WAAW,KACL;AAAA,EACN,MAAM,eAAe,aAAa,EAAE;AAAA,EACpC,aAAa,KAAK,EAAE,YAAY,SAAS,CAAC;AAAA,EAC1C,aAAa,KAAK,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,QAAQ;AAAA;AAG9C,SAAS,oBAAoB,CAClC,WAAoC,uBAAuB,GACrD;AAAA,EACN,MAAM,QAAQ,aAAa;AAAA,EAC3B,IAAI,MAAM,sBAAsB,IAAI,QAAQ;AAAA,IAAG;AAAA,EAC/C,IAAI,cAAc,MAAM,mBAAmB,IAAI,QAAQ;AAAA,EACvD,KAAK,aAAa;AAAA,IAChB,cAAc,IAAI;AAAA,IAClB,MAAM,mBAAmB,IAAI,UAAU,WAAW;AAAA,EACpD;AAAA,EACA,MAAM,sBAAsB,IAAI,QAAQ;AAAA,EACxC,IAAI;AAAA,IACF,WAAW,SAAS,MAAM,oBAAoB;AAAA,MAC5C,IAAI,YAAY,IAAI,MAAM,UAAU;AAAA,QAAG;AAAA,MAGvC,YAAY,IAAI,MAAM,UAAU;AAAA,MAChC,IAAI;AAAA,QACF,MAAM,WAAW,QAAQ;AAAA,QACzB,OAAO,OAAO;AAAA,QACd,YAAY,OAAO,MAAM,UAAU;AAAA,QACnC,MAAM;AAAA;AAAA,IAEV;AAAA,YACA;AAAA,IACA,MAAM,sBAAsB,OAAO,QAAQ;AAAA;AAAA;AAKxC,IAAM,0BAA0B,IAAI,MAAM,CAAC,GAA8B;AAAA,EAC9E,GAAG,CAAC,SAAS,UAAU;AAAA,IACrB,MAAM,WAAW,uBAAuB;AAAA,IACxC,qBAAqB,QAAQ;AAAA,IAC7B,MAAM,QAAQ,QAAQ,IAAI,UAAoB,UAAU,QAAQ;AAAA,IAChE,OAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,IAAI;AAAA;AAAA,EAE9D,GAAG,CAAC,SAAS,UAAU,OAAO;AAAA,IAC5B,MAAM,WAAW,uBAAuB;AAAA,IACxC,qBAAqB,QAAQ;AAAA,IAC7B,OAAO,QAAQ,IAAI,UAAoB,UAAU,OAAO,QAAQ;AAAA;AAEpE,CAAC;AAGM,IAAM,kBAAkB;;;AL9T/B,IAAM,gBAAgB,IAAI,OAAO;AACjC,IAAM,iBAAiB,MAAM,OAAO;AACpC,IAAM,0BAA0B,KAAK,KAAK;AAC1C,IAAI,gBAAuD;AAE3D,SAAS,gBAAgB,GAAS;AAAA,EAChC,IAAI;AAAA,IAAe;AAAA,EACnB,cAAc;AAAA,EACd,gBAAgB,YAAY,eAAe,uBAAuB;AAAA,EAClE,cAAc,QAAQ;AAAA;AAajB,SAAS,QAAQ,CAAC,OAAiB;AAAA,EACxC,iBAAiB;AAAA,EACjB,MAAM,SAAS,qBAAqB;AAAA,EACpC,WAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACrC,MAAM,cAAc,kBAAkB,MAAM,OAAO;AAAA,EACnD,MAAM,WAAW,MAAM,YAAY,MAAM,UAAU,MAAM,GAAG,CAAC,IAAI;AAAA,EACjE,MAAM,OAAO,MAAK,QAAQ,GAAG,MAAM,UAAU,eAAe,gBAAgB;AAAA,EAG5E,IAAI;AAAA,IACF,MAAM,OAAO,UAAS,IAAI;AAAA,IAC1B,IAAI,KAAK,QAAQ,eAAe;AAAA,MAC9B,MAAM,UAAU,KAAK,QAAQ,YAAY,IAAI,KAAK,IAAI,SAAS;AAAA,MAC/D,YAAW,MAAM,OAAO;AAAA,IAC1B;AAAA,IACA,MAAM;AAAA,EAIR,IAAI;AAAA,IACF,iBAAiB,MAAM,KAAK;AAAA,IAC5B,OAAO,GAAG;AAAA,IAGV,OAAO,KAAK,EAAE,KAAK,GAAG,QAAQ,MAAM,QAAQ,SAAS,MAAM,QAAQ,GAAG,qBAAqB;AAAA;AAAA;AAKxF,SAAS,aAAa,GAAG;AAAA,EAC9B,MAAM,SAAS,qBAAqB;AAAA,EACpC,WAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACrC,IAAI;AAAA,IACF,MAAM,QAAQ,YAAY,MAAM,EAC7B,OAAO,CAAC,MAAM,EAAE,SAAS,QAAQ,CAAC,EAClC,IAAI,CAAC,MAAM;AAAA,MACV,IAAI;AAAA,QACF,MAAM,OAAO,UAAS,MAAK,QAAQ,CAAC,CAAC;AAAA,QACrC,OAAO,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,SAAS,KAAK,QAAQ;AAAA,QACzD,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,KAEV,EACA,OAAO,CAAC,MAAkC,MAAM,IAAI;AAAA,IAEvD,MAAM,YAAY,MAAM,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,MAAM,CAAC;AAAA,IAC1D,IAAI,aAAa;AAAA,MAAgB;AAAA,IAGjC,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO;AAAA,IAC1C,IAAI,QAAQ;AAAA,IACZ,MAAM,SAAS,YAAY;AAAA,IAC3B,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,SAAS;AAAA,QAAQ;AAAA,MACrB,IAAI;AAAA,QACF,YAAW,MAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,QAClC,SAAS,KAAK;AAAA,QACd,OAAO,KACL,EAAE,MAAM,KAAK,MAAM,SAAS,KAAK,OAAO,MAAM,QAAQ,CAAC,EAAE,GACzD,qBACF;AAAA,QACA,OAAO,GAAG;AAAA,QACV,OAAO,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,KAAK,GAAG,6CAA6C;AAAA;AAAA,IAE1F;AAAA,IACA,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,qBAAqB;AAAA;AAAA;AAa1C,SAAS,gBAAgB,CAAC,OAAwC;AAAA,EACvE,MAAM,MAAM,MAAK,0BAA0B,GAAG,OAAO,MAAM,MAAM,CAAC;AAAA,EAClE,WAAU,KAAK,EAAE,WAAW,KAAK,CAAC;AAAA,EAClC,MAAM,OAAO,MAAK,KAAK,kBAAkB;AAAA,EACzC,IAAI;AAAA,IACF,iBAAiB,MAAM,KAAK,OAAO,UAAU,SAAS,MAAM,QAAQ,EAAE,CAAC;AAAA,IACvE,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,+BAA+B;AAAA;AAAA;AAIlE,SAAS,iBAAiB,CAAC,GAAkB,WAA4B;AAAA,EACvE,OAAO,EAAE,cAAc;AAAA;AAGlB,SAAS,qBAAqB,CAAC,QAAgB,WAAoC;AAAA,EACxF,MAAM,OAAO,MAAK,0BAA0B,GAAG,OAAO,MAAM,GAAG,kBAAkB;AAAA,EACjF,KAAK,WAAW,IAAI;AAAA,IAAG,OAAO,CAAC;AAAA,EAC/B,IAAI;AAAA,IACF,OAAO,eAAe,IAAI,EACvB,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,CAAkB,EAC/C,OAAO,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC;AAAA,IAChD,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,GAAG,QAAQ,UAAU,GAAG,+BAA+B;AAAA,IAC1E,OAAO,CAAC;AAAA;AAAA;AAKL,SAAS,uBAAuB,CAAC,QAAgB,WAAyB;AAAA,EAC/E,MAAM,OAAO,MAAK,0BAA0B,GAAG,OAAO,MAAM,GAAG,kBAAkB;AAAA,EACjF,KAAK,WAAW,IAAI;AAAA,IAAG;AAAA,EACvB,IAAI;AAAA,IACF,MAAM,YAAY,eAAe,IAAI,EAAE,OAAO,CAAC,SAAS;AAAA,MACtD,IAAI;AAAA,QACF,QAAQ,kBAAkB,KAAK,MAAM,IAAI,GAAoB,SAAS;AAAA,QACtE,MAAM;AAAA,QACN,OAAO;AAAA;AAAA,KAEV;AAAA,IACD,IAAI,UAAU,SAAS,GAAG;AAAA,MACxB,eAAc,MAAM,GAAG,UAAU,KAAK;AAAA,CAAI;AAAA,CAAK;AAAA,IACjD,EAAO;AAAA,MACL,YAAW,IAAI;AAAA;AAAA,IAEjB,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,GAAG,QAAQ,UAAU,GAAG,uCAAuC;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AOjK/E,IAAM,KAAK;;;ACYlB,SAAS,2BAA2B,GAAS;AAAA,EAC3C,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAwBT;AAAA,EACC,IAAI;AAAA,IACF,GAAG,KAAK,yDAAyD;AAAA,IACjE,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,sDAAsD;AAAA,IAC9D,MAAM;AAAA,EACR,IAAI;AAAA,IACF,GAAG,KAAK,4DAA4D;AAAA,IACpE,MAAM;AAAA,EACR,IAAI;AAAA,IACF,GAAG,KAAK,wEAAwE;AAAA,IAChF,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,oDAAoD;AAAA,IAC5D,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,oDAAoD;AAAA,IAC5D,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,+CAA+C;AAAA,IACvD,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,4DAA4D;AAAA,IACpE,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,mDAAmD;AAAA,IAC3D,MAAM;AAAA,EAGR,IAAI;AAAA,IAGF,GAAG,KAAK,yDAAyD;AAAA,IACjE,MAAM;AAAA,EAGR,IAAI;AAAA,IACF,GAAG,KAAK,wDAAwD;AAAA,IAChE,MAAM;AAAA,EAKR,GAAG,KAAK,6EAA6E;AAAA,EACrF,GAAG,KACD,yFACF;AAAA;AAGF,iCAAiC,6BAA6B,EAAE;AA6BhE,IAAM,cAAc,IAAI;AAOjB,SAAS,4BAA4B,CAAC,MAAwC;AAAA,EACnF,YAAY,IAAI,IAAI;AAAA,EACpB,OAAO,MAAM;AAAA,IACX,YAAY,OAAO,IAAI;AAAA;AAAA;AAI3B,SAAS,sBAAsB,CAAC,KAAuB;AAAA,EACrD,WAAW,QAAQ,aAAa;AAAA,IAC9B,eAAe,MAAM;AAAA,MACnB,IAAI;AAAA,QACG,QAAQ,QAAQ,KAAK,GAAG,CAAC,EAAE,MAAM,MAAG;AAAA,UAAG;AAAA,SAAS;AAAA,QACrD,MAAM;AAAA,KAGT;AAAA,EACH;AAAA;AAGF,SAAS,QAAQ,CAAC,GAA8B;AAAA,EAC9C,OAAO;AAAA,IACL,IAAI,EAAE;AAAA,IACN,SAAS,EAAE;AAAA,IACX,UAAU,EAAE,aAAa;AAAA,IACzB,UAAU,EAAE;AAAA,IACZ,eAAe,EAAE,kBAAkB;AAAA,IACnC,YAAY,EAAE,eAAe;AAAA,IAC7B,iBAAiB,EAAE,qBAAqB;AAAA,IACxC,MAAM,EAAE;AAAA,IACR,SAAS,EAAE,YAAY;AAAA,IACvB,WAAY,EAAE,cAAmC;AAAA,IACjD,OAAO,EAAE,SAAS;AAAA,IAClB,aAAa,EAAE,cAAc,KAAK,MAAM,EAAE,WAAW,IAAI;AAAA,IACzD,OAAO,EAAE,QAAQ,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,IACvC,SAAS,EAAE,YAAY;AAAA,IACvB,UAAU,EAAE,aAAa;AAAA,IACzB,WAAW,EAAE,YAAY,KAAK,MAAM,EAAE,SAAS,IAAI;AAAA,IACnD,MAAO,EAAE,QAAsC;AAAA,IAC/C,iBAAiB,EAAE,oBAAoB,KAAK,MAAM,EAAE,iBAAiB,IAAI;AAAA,IACzE,cAAc,EAAE,gBAAgB,KAAK,MAAM,EAAE,aAAa,IAAI;AAAA,IAC9D,UAAU,EAAE,WAAW,KAAK,MAAM,EAAE,QAAQ,IAAI;AAAA,IAChD,cAAc,EAAE,kBAAkB;AAAA,IAClC,WAAW,EAAE;AAAA,EACf;AAAA;AAGF,SAAS,uBAAuB,CAAC,KAAoB,QAAyB;AAAA,EAC5E,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,IAAI;AAAA,IACF,MAAM,cAAc,KAAK,MAAM,GAAG;AAAA,IAClC,OACE,MAAM,QAAQ,WAAW,KACzB,YAAY,KACV,CAAC,eACC,OAAO,eAAe,YACtB,eAAe,SACf,QAAQ,eACR,WAAW,OAAO,MACtB;AAAA,IAEF,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAKJ,SAAS,gBAAgB,CAAC,KAAiB,UAAmC,CAAC,GAAS;AAAA,EAC7F,MAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,2BAA2B,QAAQ,4BAA4B;AAAA,EACrE,IAAI,WAAW;AAAA,EACf,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,SAAS,GACZ,MACC;AAAA;AAAA;AAAA,kCAIF,EACC,IACC,IAAI,IACJ,IAAI,SACJ,IAAI,YAAY,MAChB,IAAI,UACJ,IAAI,iBAAiB,MACrB,IAAI,cAAc,MAClB,IAAI,mBAAmB,MACvB,IAAI,MACJ,IAAI,WAAW,MACf,IAAI,aAAa,MACjB,IAAI,SAAS,MACb,IAAI,cAAc,KAAK,UAAU,IAAI,WAAW,IAAI,MACpD,IAAI,QAAQ,KAAK,UAAU,IAAI,KAAK,IAAI,MACxC,IAAI,UAAU,IAAI,GAClB,IAAI,YAAY,MAChB,IAAI,WAAW,SAAS,KAAK,UAAU,IAAI,SAAS,IAAI,MACxD,IAAI,QAAQ,MACZ,IAAI,kBAAkB,KAAK,UAAU,IAAI,eAAe,IAAI,MAC5D,IAAI,eAAe,KAAK,UAAU,IAAI,YAAY,IAAI,MACtD,IAAI,UAAU,SAAS,KAAK,UAAU,IAAI,QAAQ,IAAI,MACtD,IAAI,gBAAgB,MACpB,IAAI,SACN;AAAA,IACF,WAAW,OAAO,OAAO,WAAW,CAAC,IAAI;AAAA,IACzC,IAAI,YAAY,6BAA6B,IAAI,SAAS;AAAA,MACxD,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMF,EAAE,IAAI,IAAI,WAAW,IAAI,WAAW,IAAI,OAAO;AAAA,IACjD;AAAA,GACD,EAAE;AAAA,EACH,IAAI,YAAY,WAAW,IAAI;AAAA,IAAS,uBAAuB,GAAG;AAAA;AAG7D,SAAS,aAAa,CAAC,SAAiB,WAAsC;AAAA,EACnF,MAAM,MAAM,GACT,MAAM,0DAA0D,EAChE,IAAI,SAAS,SAAS;AAAA,EACzB,OAAO,MAAM,SAAS,GAAG,IAAI;AAAA;AAGxB,SAAS,wBAAwB,CAAC,SAAiB,QAAyB;AAAA,EACjF,MAAM,OAAO,GACV,MACC,qGACF,EACC,IAAI,OAAO;AAAA,EACd,OAAO,KAAK,KAAK,CAAC,QAAQ,wBAAwB,IAAI,aAAa,MAAM,CAAC;AAAA;AAGrE,SAAS,oBAAoB,CAClC,SACA,WACA,MACA,WAAW,IAAI,KAAK,EAAE,YAAY,GACf;AAAA,EACnB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,qDAGF,EACC,IAAI,MAAM,UAAU,SAAS,SAAS;AAAA,EACzC,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAIlC,SAAS,qBAAqB,CACnC,SACA,WACA,OACmB;AAAA,EACnB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,qDAGF,EACC,IAAI,KAAK,UAAU,KAAK,GAAG,SAAS,SAAS;AAAA,EAChD,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAGlC,SAAS,+BAA+B,CAC7C,SACA,WACA,iBACA,WAAW,IAAI,KAAK,EAAE,YAAY,GACf;AAAA,EACnB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,oFAGF,EACC,IAAI,KAAK,UAAU,eAAe,GAAG,UAAU,SAAS,SAAS;AAAA,EACpE,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAGlC,SAAS,4BAA4B,CAC1C,SACA,WACA,cACA,WAAW,IAAI,KAAK,EAAE,YAAY,GACf;AAAA,EACnB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,2EAGF,EACC,IAAI,KAAK,UAAU,YAAY,GAAG,UAAU,SAAS,SAAS;AAAA,EACjE,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAIlC,SAAS,qBAAqB,CAAC,MAAqD;AAAA,EACzF,MAAM,OAAO,GACV,MAAM,2DAA2D,EACjE,IAAI,IAAI;AAAA,EACX,OAAO,KAAK,IAAI,QAAQ;AAAA;AAInB,SAAS,sBAAsB,CACpC,SACA,WACA,WACmB;AAAA,EACnB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,qDAGF,EACC,IAAI,UAAU,SAAS,KAAK,UAAU,SAAS,IAAI,MAAM,SAAS,SAAS;AAAA,EAC9E,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAGlC,SAAS,oBAAoB,CAAC,SAAiB,WAAsC;AAAA,EAC1F,MAAM,MAAM,GACT,MACC;AAAA;AAAA,qDAGF,EACC,IAAI,SAAS,SAAS;AAAA,EACzB,IAAI,OAAO,IAAI,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAC3C,OAAO,cAAc,SAAS,SAAS;AAAA;AAIlC,SAAS,+BAA+B,CAAC,SAAiB,QAA0B;AAAA,EACzF,KAAK;AAAA,IAAQ,OAAO,CAAC;AAAA,EACrB,MAAM,OAAO,GACV,MACC;AAAA,mEAEF,EACC,IAAI,SAAS,OAAO,QAAQ,MAAM;AAAA,EACrC,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAC/B,GAAG,MACD;AAAA;AAAA,iEAGF,EAAE,IAAI,SAAS,OAAO,QAAQ,MAAM;AAAA,EACpC,OAAO,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE;AAAA;AA0B1B,SAAS,eAAe,CAAC,SAAiB,SAA+C;AAAA,EAC9F,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,SAAS,IAAI,GAAG,CAAC;AAAA,EAE7D,IAAI,cAA6B;AAAA,EACjC,IAAI,SAAS,QAAQ;AAAA,IACnB,MAAM,MAAM,GACT,MAAM,uEAAuE,EAC7E,IAAI,SAAS,QAAQ,MAAM;AAAA,IAC9B,IAAI;AAAA,MAAK,cAAc,IAAI;AAAA,EAC7B;AAAA,EAEA,MAAM,OACJ,gBAAgB,OACZ,GACG,MACC;AAAA;AAAA;AAAA,qBAIF,EACC,IAAI,SAAS,aAAa,QAAQ,CAAC,IACtC,GACG,MACC;AAAA;AAAA;AAAA,qBAIF,EACC,IAAI,SAAS,QAAQ,CAAC;AAAA,EAG/B,MAAM,UAAU,KAAK,SAAS;AAAA,EAE9B,MAAM,YAAY,UAAU,KAAK,MAAM,GAAG,KAAK,IAAI,MAAM,QAAQ;AAAA,EACjE,MAAM,OAAO,SAAS,IAAI,QAAQ;AAAA,EAGlC,MAAM,YAAY,mBAAmB,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAAA,EAC1D,IAAI,UAAU,OAAO,GAAG;AAAA,IACtB,WAAW,KAAK,MAAM;AAAA,MACpB,MAAM,IAAI,UAAU,IAAI,EAAE,EAAE;AAAA,MAC5B,IAAI,GAAG;AAAA,QACL,EAAE,mBAAmB,EAAE;AAAA,QACvB,EAAE,oBAAoB,EAAE;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IAEA,QAAQ,KAAK,SAAS,IAAI,KAAK,GAAG,KAAK;AAAA,IACvC;AAAA,EACF;AAAA;AAOK,SAAS,kBAAkB,CAChC,SAC0D;AAAA,EAC1D,MAAM,MAAM,IAAI;AAAA,EAChB,MAAM,MAAM,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,EAAE,OAAO,OAAO;AAAA,EAChD,IAAI,IAAI,WAAW;AAAA,IAAG,OAAO;AAAA,EAC7B,MAAM,OAAO,GACV,MACC;AAAA;AAAA,kCAE4B,IAAI,IAAI,MAAM,GAAG,EAAE,KAAK,GAAG;AAAA,+BAEzD,EACC,IAAI,GAAG,GAAG;AAAA,EACb,WAAW,KAAK,MAAM;AAAA,IACpB,IAAI,IAAI,EAAE,QAAQ,EAAE,YAAY,OAAO,EAAE,UAAU,GAAG,aAAa,EAAE,YAAY,CAAC;AAAA,EACpF;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,kBAAkB,CAChC,SACA,QACoD;AAAA,EACpD,MAAM,OAAO,cAAc,SAAS,MAAM;AAAA,EAC1C,MAAM,OAAO,GACV,MACC;AAAA;AAAA;AAAA,iBAIF,EACC,IAAI,SAAS,MAAM;AAAA,EACtB,OAAO,EAAE,MAAM,SAAS,KAAK,IAAI,QAAQ,EAAE;AAAA;AAStC,SAAS,qBAAqB,CACnC,SACA,UACA,MACA,UACwB;AAAA,EACxB,MAAM,MAAM,GACT,MACC;AAAA;AAAA;AAAA;AAAA,eAKF,EACC,IAAI,SAAS,UAAU,IAAI;AAAA,EAC9B,KAAK;AAAA,IAAK;AAAA,EAEV,MAAM,YAAY,KAAK,MAAM,IAAI,UAAU;AAAA,EAC3C,KAAK,OAAO,SAAS,SAAS,KAAK,KAAK,IAAI,IAAI,YAAY;AAAA,IAAU;AAAA,EACtE,OAAO,SAAS,GAAG;AAAA;AAQd,SAAS,sBAAsB,CAAC,UAAmD;AAAA,EACxF,MAAM,iBAAiB,WAAW,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI;AAAA,EAC3D,IAAI,kBAAkB,eAAe,WAAW;AAAA,IAAG,OAAO,IAAI;AAAA,EAC9D,MAAM,cAAc,iBAChB,oBAAoB,eAAe,IAAI,MAAM,GAAG,EAAE,KAAK,GAAG,OAC1D;AAAA,EACJ,MAAM,OAAO,GACV,MACC;AAAA;AAAA;AAAA;AAAA;AAAA,aAKO;AAAA;AAAA,kEAGT,EACC,IAAI,GAAI,kBAAkB,CAAC,CAAE;AAAA,EAEhC,MAAM,MAAM,IAAI;AAAA,EAChB,WAAW,KAAK,MAAM;AAAA,IACpB,MAAM,WAAW,EAAE,QAAQ,IAAI,QAAQ,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG;AAAA,IACvE,IAAI;AAAA,MAAS,IAAI,IAAI,EAAE,UAAU,OAAO;AAAA,EAC1C;AAAA,EACA,OAAO;AAAA;AAIF,SAAS,sBAAsB,CAAC,SAAyB;AAAA,EAC9D,MAAM,MAAM,GAAG,MAAM,6CAA6C,EAAE,IAAI,OAAO;AAAA,EAC/E,OAAO,OAAO,IAAI,WAAW,CAAC;AAAA;AAIzB,SAAS,oBAAoB,CAAC,QAAsB;AAAA,EACzD,GAAG,MAAM,wEAAwE,EAAE,IAAI,MAAM;AAAA;AAMxF,SAAS,yBAAyB,CAAC,QAA0B;AAAA,EAClE,MAAM,SAAS,KAAK,OAAO,QAAQ,WAAW,CAAC,SAAS,KAAK,MAAM;AAAA,EAKnE,MAAM,OAAO,GACV,MACC,iFACF,EACC,IAAI,MAAM;AAAA,EACb,OAAO,KAAK,IAAI,CAAC,QAAQ,IAAI,QAAQ;AAAA;AAQhC,SAAS,oBAAoB,CAAC,eAAuB,eAA+B;AAAA,EACzF,OAAO,2BAA2B,+BAA+B,aAAa,GAAG,aAAa;AAAA;AAWzF,SAAS,8BAA8B,CAAC,SAAuC;AAAA,EACpF,MAAM,OAAO,GACV,MACC,kGACF,EACC,IAAI,OAAO;AAAA,EACd,OAAO;AAAA,IACL,eAAe;AAAA,IACf,MAAM,KAAK,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE;AAAA,IACpC,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,IACnC,UAAU,KAAK,GAAG,EAAE,GAAG,SAAS;AAAA,EAClC;AAAA;AAIK,SAAS,0BAA0B,CACxC,UACA,eACQ;AAAA,EACR,QAAQ,SAAS;AAAA,EACjB,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC;AAAA,EAClE,IAAI,SAAS;AAAA,EACb,WAAW,KAAK,MAAM;AAAA,IACpB,MAAM,QAAQ,MAAM,IAAI,EAAE,EAAE;AAAA,IAC5B,KAAK;AAAA,MAAO;AAAA,IACZ,iBACE;AAAA,SACK,SAAS,CAAC;AAAA,MACb,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,UAAU,EAAE,YAAa,MAAM,IAAI,EAAE,SAAS,KAAK,EAAE,YAAa;AAAA,MAClE,cAAc,EAAE,iBACX,MAAM,IAAI,EAAE,cAAc,KAAK,EAAE,iBAClC;AAAA,IACN,GACA,EAAE,QAAQ,OAAO,0BAA0B,MAAM,CACnD;AAAA,IACA;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAMF,SAAS,sBAAsB,CAAC,SAAkC;AAAA,EACvE,OAAO,GACJ,MACC,kGACF,EACC,IAAI,OAAO;AAAA;AAGT,SAAS,6BAA6B,CAC3C,SACA,YACiB;AAAA,EACjB,OAAO,GACJ,MACC,gHACF,EACC,IAAI,SAAS,UAAU;AAAA;;;;;;;;;;;;;;;;;;;;;AC3qB5B,IAAM,2BAA2B;AAE1B,SAAS,eAAe,CAAC,OAAuB;AAAA,EACrD,OAAO,MAAM,WAAW,iCAAsB,GAAG,EAAE,MAAM,GAAG,GAAG,KAAK;AAAA;AAO/D,SAAS,sBAAsB,CAAC,UAAkB,UAA2B;AAAA,EAClF,OAAO,gBAAgB,QAAQ;AAAA;AAM1B,SAAS,mBAAmB,CAAC,UAAkB,SAA0B;AAAA,EAC9E,OAAO,uBAAuB,UAAU,OAAO;AAAA;AAG1C,SAAS,mBAAmB,CAAC,MAAc,UAAkB,SAA0B;AAAA,EAC5F,OAAO,GAAG,QAAQ,uBAAuB,UAAU,OAAO;AAAA;AAGrD,SAAS,kBAAkB,CAChC,UACA,SACA,YACS;AAAA,EACT,KAAK,yBAAyB,KAAK,QAAQ;AAAA,IAAG,OAAO;AAAA,EACrD,IAAI,YAAY;AAAA,IACd,MAAM,YAAY,gBAAgB,UAAU;AAAA,IAC5C,IACE,IAAI,OAAO,yBAAyB,aAAa,SAAS,mBAAmB,EAAE,KAAK,QAAQ,GAC5F;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACtC,OAAO,SAAS,SAAS,KAAK,WAAW,KAAK,SAAS,SAAS,IAAI,WAAW;AAAA;AAG1E,SAAS,gBAAgB,CAAC,UAAkB,SAAiB,YAA8B;AAAA,EAChG,IAAI,cAAc,aAAa,GAAG,gBAAgB,UAAU;AAAA,IAAQ,OAAO;AAAA,EAC3E,MAAM,SAAS,gBAAgB,OAAO;AAAA,EACtC,OAAO,aAAa,GAAG,eAAe,SAAS,SAAS,KAAK,WAAW;AAAA;AAG1E,SAAS,YAAY,CAAC,OAAuB;AAAA,EAC3C,OAAO,MAAM,QAAQ,uBAAuB,MAAM;AAAA;;;ACzCpD,iCAAiC,CAAC,aAAa;AAAA,EAC7C,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQb;AAAA,GACA,EAAE;AAsBL,SAAS,UAAU,CAAC,GAAyB;AAAA,EAC3C,OAAO;AAAA,IACL,SAAS,EAAE;AAAA,IACX,SAAS,EAAE;AAAA,IACX,iBAAiB,EAAE,qBAAqB;AAAA,IACxC,aAAa,EAAE,gBAAgB;AAAA,IAC/B,WAAW,EAAE;AAAA,EACf;AAAA;AAOK,SAAS,aAAa,CAAC,YAAuC;AAAA,EACnE,MAAM,MAAM,GACT,MACC,gHACF,EACC,IAAI,UAAU;AAAA,EACjB,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO,WAAW,GAAG;AAAA;AAIhB,SAAS,iBAAiB,CAC/B,SACA,aACkD;AAAA,EAClD,MAAM,WAAW,gBAAgB,WAAW;AAAA,EAC5C,MAAM,aAAa,cAAc,QAAQ;AAAA,EACzC,IAAI;AAAA,IAAY,OAAO,EAAE,OAAO,YAAY,YAAY,SAAS;AAAA,EACjE,MAAM,UAAU,cAAc,OAAO;AAAA,EACrC,IAAI;AAAA,IAAS,OAAO,EAAE,OAAO,SAAS,YAAY,QAAQ;AAAA,EAC1D,MAAM,SAAS,aAAa,cAAc,OAAO,cAAc,WAAW;AAAA,EAC1E,OAAO,SAAS,EAAE,OAAO,QAAQ,YAAY,YAAY,IAAI;AAAA;AASxD,SAAS,aAAa,CAC3B,SACA,QAKY;AAAA,EACZ,MAAM,WAAW,cAAc,OAAO;AAAA,EAEtC,MAAM,UAAU,OAAO,YAAY,YAAY,OAAO,UAAW,UAAU,WAAW;AAAA,EACtF,MAAM,kBACJ,OAAO,oBAAoB,YACvB,OAAO,kBACN,UAAU,mBAAmB;AAAA,EACpC,MAAM,cACJ,OAAO,gBAAgB,YAAY,OAAO,cAAe,UAAU,eAAe;AAAA,EAEpF,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAQF,EAAE,IAAI,SAAS,SAAS,iBAAiB,WAAW;AAAA,EAEpD,OAAO,cAAc,OAAO;AAAA;AAIvB,SAAS,gBAAgB,CAAC,SAAuB;AAAA,EACtD,GAAG,MAAM,gDAAgD,EAAE,IAAI,OAAO;AAAA;AAOjE,SAAS,eAAe,GAAiB;AAAA,EAC9C,MAAM,OAAO,GACV,MACC,sHACF,EACC,IAAI;AAAA,EACP,OAAO,KAAK,IAAI,UAAU;AAAA;;;;;;;;AC3H5B,SAAS,YAAY,CAAC,OAA4B;AAAA,EAChD,MAAM,OAAO,GAAG,MAAM,qBAAqB,QAAQ,EAAE,IAAI;AAAA,EACzD,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AAAA;AAG5C,SAAS,0BAA0B,CAAC,OAAO,oBAA0B;AAAA,EACnE,GAAG,KAAK;AAAA,iCACuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAS9B;AAAA;AAGH,SAAS,8BAA8B,GAAS;AAAA,EAC9C,MAAM,wBAAwB,aAAa,kBAAkB;AAAA,EAC7D,IAAI,sBAAsB,SAAS,GAAG;AAAA,IACpC,2BAA2B;AAAA,EAC7B,EAAO,SACL,sBAAsB,IAAI,OAAO,KACjC,sBAAsB,IAAI,cAAc,KACxC,sBAAsB,IAAI,gBAAgB,KAC1C,sBAAsB,IAAI,cAAc,KACxC,sBAAsB,IAAI,eAAe,KACzC,sBAAsB,IAAI,kBAAkB,GAC5C;AAAA,IAGA,MAAM,eAAe,aAAa,YAAY;AAAA,IAC9C,MAAM,cAAc,aAAa,IAAI,OAAO,IACxC,UACA,aAAa,IAAI,eAAe,IAC9B,kBACA;AAAA,IACN,IAAI,eAAe,sBAAsB,IAAI,OAAO,GAAG;AAAA,MACrD,GAAG,KACD;AAAA,aACK;AAAA;AAAA;AAAA,eAGE;AAAA;AAAA;AAAA;AAAA,WAKT;AAAA,IACF;AAAA,IAEA,MAAM,sBAAsB,GACzB,MAAoC,qBAAqB,EACzD,IAAI,GAAG;AAAA,IACV,GAAG,KAAK,2BAA2B;AAAA,IACnC,IAAI;AAAA,MACF,MAAM,kBAAkB,sBAAsB,IAAI,gBAAgB,IAC9D,mBACA,sBAAsB,IAAI,cAAc,IACtC,iBACA;AAAA,MACN,MAAM,kBAAkB,sBAAsB,IAAI,cAAc,IAC5D,iBACA,sBAAsB,IAAI,cAAc,IACtC,iBACA;AAAA,MACN,MAAM,mBAAmB,sBAAsB,IAAI,eAAe,IAC9D,kBACA,sBAAsB,IAAI,eAAe,IACvC,kBACA;AAAA,MACN,GAAG,YAAY,MAAM;AAAA,QACnB,2BAA2B,uBAAuB;AAAA,QAClD,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQK;AAAA,qBACA;AAAA,qBACA;AAAA;AAAA;AAAA,OAGd;AAAA,QACC,GAAG,KAAK,6BAA6B;AAAA,QACrC,GAAG,KAAK,8DAA8D;AAAA,OACvE,EAAE;AAAA,cACH;AAAA,MACA,GAAG,KAAK,yBAAyB,sBAAsB,OAAO,OAAO;AAAA;AAAA,EAEzE,EAAO;AAAA,IACL,2BAA2B;AAAA;AAAA;AAI/B,iCAAiC,gCAAgC,EAAE;AAsBnE,SAAS,WAAW,CAAC,GAA2B;AAAA,EAC9C,MAAM,MAAmB,CAAC;AAAA,EAC1B,IAAI,EAAE;AAAA,IAAO,IAAI,QAAQ,EAAE;AAAA,EAC3B,IAAI,EAAE;AAAA,IAAQ,IAAI,SAAS,EAAE;AAAA,EAC7B,IAAI,EAAE,KAAK;AAAA,IACT,IAAI;AAAA,MACF,MAAM,SAAS,KAAK,MAAM,EAAE,GAAG;AAAA,MAC/B,IAAI,MAAM,QAAQ,MAAM;AAAA,QAAG,IAAI,MAAM;AAAA,MACrC,MAAM;AAAA,EAGV;AAAA,EACA,IAAI,EAAE;AAAA,IAAc,IAAI,cAAc;AAAA,EACtC,IAAI,EAAE;AAAA,IAAc,IAAI,cAAc;AAAA,EACtC,IAAI,EAAE;AAAA,IAAe,IAAI,eAAe;AAAA,EACxC,OAAO;AAAA;AAQF,SAAS,iBAAiB,CAAC,SAA0C;AAAA,EAC1E,MAAM,MAAM,GACT,MACC,yHACF,EACC,IAAI,OAAO;AAAA,EACd,KAAK;AAAA,IAAK;AAAA,EACV,MAAM,SAAS,YAAY,GAAG;AAAA,EAC9B,OAAO,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AAAA;AAQ5C,SAAS,iBAAiB,CAAC,SAAiB,QAA2B;AAAA,EAC5E,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8CAUF,EAAE,IACA,SACA,OAAO,SAAS,MAChB,OAAO,UAAU,MACjB,OAAO,MAAM,KAAK,UAAU,OAAO,GAAG,IAAI,MAC1C,OAAO,cAAc,IAAI,GACzB,OAAO,cAAc,IAAI,GACzB,OAAO,eAAe,IAAI,CAC5B;AAAA;AAIK,SAAS,oBAAoB,CAAC,SAAuB;AAAA,EAC1D,GAAG,MAAM,iDAAiD,EAAE,IAAI,OAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClMlE,IAAM,qBAAqB;AAG3B,IAAM,qBAAqB;AAG3B,IAAM,uBAA4C,IAAI,IAAI;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,mBAAmB;;;ACGhC,IAAM,2BAAsC;AAWrC,SAAS,mBAAmB,GAAiB;AAAA,EAClD,OAAO,sBAAsB,QAAQ,IAAI,wBAAwB;AAAA;AAG5D,SAAS,qBAAqB,CAAC,OAA8B;AAAA,EAClE,OAAO,UAAU,cAAc,UAAU,WAAW,UAAU,aAAa,QAAQ;AAAA;AAGrF,SAAS,aAAY,CAAC,OAA4B;AAAA,EAChD,MAAM,OAAO,GAAG,MAAM,qBAAqB,QAAQ,EAAE,IAAI;AAAA,EACzD,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;AAAA;AAIrC,SAAS,gBAAgB,CAC9B,SACA,OACA,UACM;AAAA,EACN,KAAK,UAAU;AAAA,IACb,GAAG,MAAM,8CAA8C,EAAE,IAAI,OAAO,OAAO;AAAA,IAC3E;AAAA,EACF;AAAA,EACA,GAAG,MAAM,+EAA+E,EAAE,IACxF,OACA,SAAS,OACT,SAAS,UAAU,MACnB,OACF;AAAA;AAGF,SAAS,yBAAyB,GAAS;AAAA,EACzC,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAgBT;AAAA,EAEC,MAAM,sBAAsB,cAAa,YAAY;AAAA,EACrD,MAAM,qBAAqB,oBAAoB,IAAI,iBAAiB;AAAA,EACpE,MAAM,6BAA6B,sBAAsB,oBAAoB,IAAI,OAAO;AAAA,EACxF,IAAI,mBAAmB;AAAA,IAErB,IAAI;AAAA,MACF,GAAG,KAAK,6DAA6D;AAAA,MACrE,MAAM;AAAA,IAKR,IAAI;AAAA,MACF,GAAG,KAAK,yEAAyE;AAAA,MACjF,MAAM;AAAA,IAKR,IAAI;AAAA,MACF,GAAG,KAAK,wDAAwD;AAAA,MAChE,MAAM;AAAA,IAGR,IAAI;AAAA,MACF,GAAG,KAAK,sEAAsE;AAAA,MAC9E,MAAM;AAAA,IAKR,IAAI;AAAA,MACF,GAAG,KAAK,0EAA0E;AAAA,MAClF,MAAM;AAAA,IAKR,IAAI;AAAA,MACF,GAAG,KAAK,mDAAmD;AAAA,MAC3D,MAAM;AAAA,IAIR,IAAI;AAAA,MACF,GAAG,KAAK,wEAAwE;AAAA,MAChF,MAAM;AAAA,IAIR,IAAI;AAAA,MACF,GAAG,KAAK,gDAAgD;AAAA,MACxD,MAAM;AAAA,IAIR,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,CAKX;AAAA,IAEG,MAAM,2BAA2B;AAAA,IACjC,MAAM,yBAAyB,GAC5B,MAAM,qDAAqD,EAC3D,IAAI,wBAAwB;AAAA,IAC/B,KAAK,wBAAwB;AAAA,MAC3B,GAAG,YAAY,MAAM;AAAA,QACnB,GAAG,MAAM,8DAA8D,EAAE,IAAI;AAAA,QAC7E,GAAG,MAAM,mEAAmE,EAAE,IAC5E,0BACA,IAAI,KAAK,EAAE,YAAY,CACzB;AAAA,OACD,EAAE;AAAA,IACL;AAAA,IAEA,MAAM,+BAA+B;AAAA,IACrC,MAAM,4BAA4B,GAC/B,MAAM,qDAAqD,EAC3D,IAAI,4BAA4B;AAAA,IACnC,KAAK,2BAA2B;AAAA,MAC9B,GAAG,YAAY,MAAM;AAAA,QACnB,GAAG,MAAM,mEAAmE,EAAE,IAC5E,gBACF;AAAA,QACA,GAAG,MAAM,mEAAmE,EAAE,IAC5E,8BACA,IAAI,KAAK,EAAE,YAAY,CACzB;AAAA,OACD,EAAE;AAAA,IACL;AAAA,IAEA,MAAM,oBAAoB;AAAA,IAC1B,MAAM,kBAAkB,GACrB,MAAM,qDAAqD,EAC3D,IAAI,iBAAiB;AAAA,IACxB,KAAK,iBAAiB;AAAA,MACpB,GAAG,YAAY,MAAM;AAAA,QACnB,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAgBF,EAAE,IAAI,kBAAkB,gBAAgB;AAAA,QACxC,GAAG,MAAM,mEAAmE,EAAE,IAC5E,mBACA,IAAI,KAAK,EAAE,YAAY,CACzB;AAAA,OACD,EAAE;AAAA,IACL;AAAA,IAEA,MAAM,iCAAiC;AAAA,IACvC,MAAM,8BAA8B,GACjC,MAAM,qDAAqD,EAC3D,IAAI,8BAA8B;AAAA,IACrC,KAAK,6BAA6B;AAAA,MAChC,GAAG,YAAY,MAAM;AAAA,QACnB,GAAG,MACD,yFACF,EAAE,IAAI,gBAAgB;AAAA,QACtB,GAAG,MAAM,mEAAmE,EAAE,IAC5E,gCACA,IAAI,KAAK,EAAE,YAAY,CACzB;AAAA,OACD,EAAE;AAAA,IACL;AAAA,EACF;AAAA,EAEA,SAAS,0BAA0B,CAAC,MAAoB;AAAA,IACtD,GAAG,KAAK;AAAA,iCACqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA2B9B;AAAA;AAAA,EAGD,SAAS,uBAAuB,GAAS;AAAA,IACvC,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOT;AAAA,IACC,GAAG,KAAK,6EAA6E;AAAA;AAAA,EAGvF,IAAI,4BAA4B;AAAA,IAC9B,MAAM,aAAa,GAAG,MAAM,0BAA0B,EAAE,IAAI;AAAA,IAC5D,MAAM,qBAAqB,cAAa,eAAe,EAAE,IAAI,UAAU,IAClE,GAAG,MAAM,mDAAmD,EAAE,IAAI,IAKnE,CAAC;AAAA,IACL,MAAM,gBAAgB,cAAa,kBAAkB;AAAA,IACrD,MAAM,uBAAuB,cAAc,IAAI,OAAO,IAClD,IAAI,IAEA,GACG,MAAM,sEAAsE,EAC5E,IAAI,EACP,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,IAAI,KAAK,CAAC,CAC1C,IACA,IAAI;AAAA,IACR,MAAM,sBAAsB,GACzB,MAAoC,qBAAqB,EACzD,IAAI,GAAG;AAAA,IACV,GAAG,KAAK,2BAA2B;AAAA,IACnC,IAAI;AAAA,MACF,GAAG,YAAY,MAAM;AAAA,QACnB,2BAA2B,iBAAiB;AAAA,QAC5C,WAAW,OAAO,YAAY;AAAA,UAC5B,MAAM,gBAAiB,qBAAqB,IAAI,OAAO,IAAI,EAAE,CAAC,KAC5D,IAAI,SACJ,IAAI,iBACJ,IAAI,iBACJ;AAAA,UACF,MAAM,aAAa,oBAAoB;AAAA,YACrC,IAAI,OAAO,IAAI,EAAE;AAAA,YACjB,MAAM,mBAAmB,IAAI,IAAI;AAAA,YACjC,OAAO;AAAA,YACP,QAAQ,gBAAgB,IAAI,mBAAmB,IAAI,OAAO;AAAA,YAC1D,WAAW,OAAO,IAAI,cAAc,CAAC,MAAM;AAAA,UAC7C,CAAC;AAAA,UACD,MAAM,kBAAkB,IAAI,cAAc,IAAI;AAAA,UAC9C,MAAM,mBAAmB,IAAI,eAAe,IAAI;AAAA,UAChD,GAAG,MACD;AAAA;AAAA;AAAA,wDAIF,EAAE,IACA,OAAO,IAAI,EAAE,GACb,OAAO,IAAI,KAAK,GAChB,WAAW,MACX,OAAO,IAAI,gBAAgB,WAAW,IAAI,cAAc,MACxD,WAAW,SAAS,MACpB,OAAO,oBAAoB,WAAW,kBAAkB,MACxD,OAAO,qBAAqB,WAAW,mBAAmB,MAC1D,WAAW,QACX,OAAO,IAAI,UAAU,GACrB,OAAO,IAAI,oBAAoB,WAAW,IAAI,kBAAkB,MAChE,OAAO,IAAI,oBAAoB,WAAW,IAAI,kBAAkB,MAChE,OAAO,IAAI,oBAAoB,WAAW,IAAI,kBAAkB,MAChE,OAAO,IAAI,eAAe,WAAW,IAAI,aAAa,MACtD,OAAO,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,GACrC,OAAO,IAAI,eAAe,CAAC,MAAM,IAAI,IAAI,GACzC,IAAI,eAAe,WAAW,WAAW,WACzC,IAAI,YAAY,YAAY,oBAAoB,IAAI,sBAAsB,IAAI,OAAO,GACrF,OAAO,IAAI,eAAe,WAAW,IAAI,aAAa,IACxD;AAAA,QACF;AAAA,QACA,GAAG,KAAK,oCAAoC;AAAA,QAC5C,GAAG,KAAK,uBAAuB;AAAA,QAC/B,GAAG,KAAK,kDAAkD;AAAA,QAC1D,wBAAwB;AAAA,QACxB,IAAI,mBAAmB,SAAS,GAAG;AAAA,UACjC,WAAW,UAAU,oBAAoB;AAAA,YACvC,GAAG,MACD,6EACF,EAAE,IAAI,OAAO,UAAU,OAAO,SAAS,OAAO,SAAS,UAAU,UAAU,QAAQ;AAAA,UACrF;AAAA,QACF,EAAO;AAAA,UACL,WAAW,OAAO,YAAY;AAAA,YAC5B,IAAI,eAAiC,CAAC;AAAA,YACtC,IAAI;AAAA,cACF,MAAM,SAAS,KAAK,MAAM,OAAO,IAAI,gBAAgB,IAAI,CAAC;AAAA,cAC1D,IAAI,MAAM,QAAQ,MAAM;AAAA,gBAAG,eAAe;AAAA,cAC1C,MAAM;AAAA,cACN,eAAe,CAAC;AAAA;AAAA,YAElB,WAAW,eAAe,cAAc;AAAA,cACtC,KAAK,aAAa;AAAA,gBAAQ;AAAA,cAC1B,GAAG,MACD,6EACF,EAAE,IACA,OAAO,IAAI,EAAE,GACb,YAAY,QACZ,YAAY,SAAS,UAAU,UAAU,QAC3C;AAAA,YACF;AAAA,UACF;AAAA;AAAA,OAEH,EAAE;AAAA,cACH;AAAA,MACA,GAAG,KAAK,yBAAyB,sBAAsB,OAAO,OAAO;AAAA;AAAA,EAEzE,EAAO;AAAA,IACL,2BAA2B,YAAY;AAAA,IACvC,wBAAwB;AAAA;AAAA,EAG1B,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQP;AAAA,EACD,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,GAKP;AAAA,EACD,GAAG,KAAK,6EAA6E;AAAA,EAIrF,KAAK,cAAa,YAAY,EAAE,IAAI,YAAY,GAAG;AAAA,IACjD,GAAG,KAAK,8EAA8E;AAAA,EACxF;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,SAAS,GAAG;AAAA,IAC9C,GAAG,KAAK,4EAA4E;AAAA,EACtF;AAAA,EAIA,IAAI,cAAa,YAAY,EAAE,IAAI,aAAa,GAAG;AAAA,IACjD,IAAI;AAAA,MACF,GAAG,KAAK,gDAAgD;AAAA,MACxD,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK,EAAE,IAAI,GAAG,2DAA2D;AAAA;AAAA,EAEpF;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,iBAAiB,GAAG;AAAA,IACtD,GAAG,KAAK,mFAAmF;AAAA,EAC7F;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,uBAAuB,GAAG;AAAA,IAC5D,GAAG,KAAK,8DAA8D;AAAA,EACxE;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,sBAAsB,GAAG;AAAA,IAC3D,GAAG,KAAK,qFAAqF;AAAA,EAC/F;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,iBAAiB,GAAG;AAAA,IACtD,GAAG,KAAK,wDAAwD;AAAA,EAClE;AAAA,EACA,KAAK,cAAa,YAAY,EAAE,IAAI,YAAY,GAAG;AAAA,IACjD,GAAG,KAAK,mDAAmD;AAAA,EAC7D;AAAA,EACA,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAST;AAAA,EACC,sBAAsB;AAAA,EACtB,GAAG,KACD,4FACF;AAAA,EACA,GAAG,KAAK,0EAA0E;AAAA;AAGpF,IAAM,6BAA6B;AAenC,SAAS,qBAAqB,GAAS;AAAA,EACrC,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,CAKT;AAAA,EACC,MAAM,UAAU,GACb,MAAM,qDAAqD,EAC3D,IAAI,0BAA0B;AAAA,EACjC,IAAI;AAAA,IAAS;AAAA,EAEb,MAAM,UAAU,oBAAoB;AAAA,EACpC,GAAG,YAAY,MAAM;AAAA,IACnB,GAAG,MAAM,mCAAmC,EAAE,IAAI,OAAO;AAAA,IACzD,6BAA6B;AAAA,IAC7B,GAAG,MAAM,mEAAmE,EAAE,IAC5E,4BACA,IAAI,KAAK,EAAE,YAAY,CACzB;AAAA,GACD,EAAE;AAAA,EACH,OAAO,KAAK,EAAE,QAAQ,GAAG,gCAAgC;AAAA;AAI3D,SAAS,4BAA4B,GAAS;AAAA,EAC5C,MAAM,OAAO,GACV,MACC,oFACF,EACC,IAAI;AAAA,EACP,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,SAAS,GAAG,MAAM,8CAA8C;AAAA,EACtE,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,MAAM,CAAC,UAAkB,GAAG,IAAI,cAAW,IAAI,WAAQ,gBAAgB,KAAK;AAAA,IAClF,KAAK,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG;AAAA,MAC9B,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC;AAAA,MACxB;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AAAA,IACb,IAAI,YAAY,GAAG,IAAI,UAAU;AAAA,IACjC,OAAO,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG;AAAA,MAChC,UAAU;AAAA,MACV,YAAY,GAAG,IAAI,UAAU;AAAA,IAC/B;AAAA,IACA,MAAM,IAAI,IAAI,SAAS,CAAC;AAAA,IACxB,OAAO,IAAI,WAAW,IAAI,EAAE;AAAA,IAC5B,OAAO,KACL,EAAE,SAAS,IAAI,IAAI,SAAS,IAAI,SAAS,MAAM,IAAI,OAAO,IAAI,UAAU,GACxE,qEACF;AAAA,EACF;AAAA;AAGF,iCAAiC,2BAA2B,EAAE;AA+B9D,SAAS,cAAc,CAAC,WAAqD;AAAA,EAC3E,OAAO,YAAY,UAAU,MAAM,GAAG,CAAC,IAAI;AAAA;AAG7C,SAAS,oBAAoB,CAAC,SAAmC;AAAA,EAC/D,OAAO,GACJ,MACC,2EACF,EACC,IAAI,OAAO,EACX,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,SAAS,MAAM,IAAI,KAAK,EAAE;AAAA;AAG3D,SAAS,uBAAuB,GAAkC;AAAA,EAChE,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,OAAO,GACV,MACC,kEACF,EACC,IAAI;AAAA,EACP,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,eAAe,QAAQ,IAAI,IAAI,QAAQ,KAAK,CAAC;AAAA,IACnD,aAAa,KAAK,EAAE,QAAQ,IAAI,SAAS,MAAM,IAAI,KAAK,CAAC;AAAA,IACzD,QAAQ,IAAI,IAAI,UAAU,YAAY;AAAA,EACxC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,yBAAyB,GAA0B;AAAA,EAC1D,MAAM,OAAO,GACV,MACC,yFACF,EACC,IAAI;AAAA,EACP,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,UAAU,QAAQ,IAAI,IAAI,iBAAiB,KAAK,CAAC;AAAA,IACvD,QAAQ,KAAK,IAAI,eAAe;AAAA,IAChC,QAAQ,IAAI,IAAI,mBAAmB,OAAO;AAAA,EAC5C;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,SAAQ,CACf,GACA,eAAe,qBAAqB,EAAE,EAAE,GACxC,aACU;AAAA,EACV,MAAM,aAAa,oBAAoB;AAAA,IACrC,IAAI,EAAE;AAAA,IACN,MAAM,mBAAmB,EAAE,IAAI;AAAA,IAC/B,OAAQ,EAAE,SAA8B;AAAA,IACxC,QAAQ,gBAAgB,EAAE,eAAe;AAAA,EAC3C,CAAC;AAAA,EACD,OAAO;AAAA,IACL,IAAI,EAAE;AAAA,IACN,OAAO,EAAE;AAAA,IACT,MAAM,WAAW;AAAA,IACjB,aAAa,EAAE,eAAe;AAAA,IAC9B,OAAO,WAAW;AAAA,IAClB,cAAc,EAAE,cAAc;AAAA,IAC9B,eAAgB,EAAE,eAA+B;AAAA,IACjD,QAAQ,WAAW;AAAA,IACnB,WAAW,kBAAkB,WAAW,MAAM;AAAA,IAC9C;AAAA,IACA,WAAW,EAAE;AAAA,IACb,eAAe,EAAE,mBAAmB,IAAI,KAAK,EAAE,YAAY;AAAA,IAC3D,eAAe,EAAE,mBAAmB;AAAA,IACpC,eAAe,EAAE,mBAAmB;AAAA,IACpC,WAAW,EAAE,cAAc;AAAA,IAC3B,QAAQ,EAAE,YAAY;AAAA,OAClB,EAAE,gBAAgB,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;AAAA,OAC9C,EAAE,gBAAgB,IAClB;AAAA,MACE,uBAAuB,cAClB,YAAY,IAAI,EAAE,EAAE,KAAK,CAAC,IAC3B,0BAA0B,EAAE,EAAE;AAAA,IACpC,IACA,CAAC;AAAA,OACD,EAAE,gBAAgB,IAClB;AAAA,MACE,oBAAqB,EAAE,yBAAyB,UAChD,EAAE,yBAAyB,gBACvB,EAAE,uBACF;AAAA,IACN,IACA,CAAC;AAAA,IACL,YAAY,yBAAyB,EAAE,UAAU;AAAA,IACjD,SAAS,sBAAsB,EAAE,OAAO;AAAA,EAC1C;AAAA;AAGK,SAAS,wBAAwB,CAAC,OAAiC;AAAA,EACxE,OAAO,UAAU,WAAW,WAAW;AAAA;AAIlC,SAAS,cAAc,CAAC,OAA8C;AAAA,EAC3E,OAAO,MAAM,eAAe;AAAA;AAGvB,SAAS,kBAAkB,CAAC,OAAkC;AAAA,EACnE,OAAO,UAAU,aAAa,UAAU,WAAW,UAAU,YAAY,QAAQ;AAAA;AAG5E,SAAS,eAAe,CAAC,OAA+B;AAAA,EAC7D,OAAO,UAAU,SAAS,UAAU,aAAa,UAAU,WAAW,QAAQ;AAAA;AAGzE,SAAS,iBAAiB,CAAC,MAAuB;AAAA,EACvD,OAAO,SAAS;AAAA;AAGX,SAAS,cAAc,CAAC,OAGjB;AAAA,EACZ,OAAO,MAAM,SAAS,MAAM,cAAc,OAAO,UAAU;AAAA;AAGtD,SAAS,WAAW,CAAC,OAKjB;AAAA,EACT,IAAI,MAAM,SAAS;AAAA,IAAW,OAAO;AAAA,EACrC,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO;AAAA,EACnC,IAAI,MAAM,SAAS,WAAW;AAAA,IAC5B,KAAK,MAAM;AAAA,MAAO,OAAO;AAAA,IACzB,IAAI,MAAM,WAAW;AAAA,MAAW,OAAO;AAAA,IACvC,IAAI,MAAM,cAAc;AAAA,MAAM,OAAO;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EACA,KAAK,MAAM;AAAA,IAAO,OAAO;AAAA,EACzB,IAAI,MAAM;AAAA,IAAQ,OAAO,MAAM;AAAA,EAC/B,OAAO,MAAM,cAAc,OAAO,YAAY;AAAA;AAGzC,SAAS,mBAAmB,CAAC,OAMuB;AAAA,EACzD,IAAI,MAAM,SAAS,aAAa,MAAM,OAAO,kBAAkB;AAAA,IAC7D,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,MAAM,SAAS;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAM,gBAAgB,MAAM;AAAA,EAC5B,MAAM,OACJ,kBACC,MAAM,WAAW,WACd,UACA,MAAM,WAAW,aAAa,MAAM,WAAW,QAC7C,YACA,MAAM,SAAS,MAAM,cAAc,OACjC,UACA;AAAA,EAEV,IAAI,SAAS,SAAS;AAAA,IACpB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,MAAM,SAAS;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,MAAM,WAAW,QAAQ,YAAa,MAAM,SAAS;AAAA,EACnE,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,QAAQ,YAAY;AAAA,IAC5B;AAAA,EACF;AAAA;AAGF,SAAS,eAAe,CAAC,OAAuB;AAAA,EAC9C,OAAO,MAAM,KAAK,EAAE,YAAY;AAAA;AAG3B,SAAS,WAAW,CAAC,GAAmB;AAAA,EAC7C,MAAM,aAAa,oBAAoB;AAAA,IACrC,IAAI,EAAE;AAAA,IACN,MAAM,mBAAmB,EAAE,IAAI;AAAA,IAC/B,OAAO,EAAE,SAAS;AAAA,IAClB,QAAQ,gBAAgB,EAAE,MAAM;AAAA,IAChC,WAAW,EAAE;AAAA,EACf,CAAC;AAAA,EACD,GAAG,YAAY,MAAM;AAAA,IACnB,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4DAuBF,EAAE,IACA,EAAE,IACF,EAAE,OACF,WAAW,MACX,EAAE,eAAe,MACjB,WAAW,SAAS,MACpB,EAAE,gBAAgB,MAClB,EAAE,iBAAiB,MACnB,WAAW,QACX,EAAE,WACF,EAAE,iBAAiB,MACnB,EAAE,iBAAiB,MACnB,EAAE,iBAAiB,MACnB,EAAE,aAAa,MACf,EAAE,SAAS,IAAI,GACf,EAAE,aAAa,IAAI,GACnB,yBAAyB,EAAE,UAAU,GACrC,sBAAsB,EAAE,OAAO,GAC/B,EAAE,sBAAsB,MAC1B;AAAA,IACA,GAAG,MAAM,8CAA8C,EAAE,IAAI,EAAE,EAAE;AAAA,IACjE,WAAW,eAAe,EAAE,cAAc;AAAA,MACxC,GAAG,MAAM,kEAAkE,EAAE,IAC3E,EAAE,IACF,YAAY,QACZ,YAAY,IACd;AAAA,IACF;AAAA,IACA,MAAM,6BAA6B,EAAE,aAAa,KAChD,CAAC,gBAAgB,YAAY,SAAS,OACxC,GAAG;AAAA,IACH,IAAI,4BAA4B;AAAA,MAC9B,GAAG,MACD;AAAA;AAAA,sBAGF,EAAE,IAAI,4BAA4B,EAAE,EAAE;AAAA,IACxC;AAAA,GACD,EAAE;AAAA;AAUE,SAAS,UAAU,CAAC,OAAmC,CAAC,GAAe;AAAA,EAC5E,MAAM,OACJ,KAAK,UACD,GACG,MAAM,0EAA0E,EAChF,IAAI,sBAAsB,KAAK,OAAO,CAAC,IAC1C,GAAG,MAAM,wDAAwD,EAAE,IAAI;AAAA,EAE7E,MAAM,eAAe,wBAAwB;AAAA,EAG7C,MAAM,cAAc,KAAK,KAAK,CAAC,QAAQ,IAAI,gBAAgB,CAAC,IACxD,0BAA0B,IAC1B;AAAA,EACJ,OAAO,KAAK,IAAI,CAAC,QAAQ,UAAS,KAAK,aAAa,IAAI,IAAI,EAAE,KAAK,CAAC,GAAG,WAAW,CAAC;AAAA;AAG9E,SAAS,QAAQ,CAAC,IAA6B;AAAA,EACpD,MAAM,IAAI,GAAG,MAAM,uCAAuC,EAAE,IAAI,EAAE;AAAA,EAClE,OAAO,IAAI,UAAS,CAAC,IAAI;AAAA;AAIpB,SAAS,sBAAsB,CAAC,QAAiC;AAAA,EACtE,MAAM,MAAM,GACT,MACC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAQF,EACC,IAAI,kBAAkB,MAAM;AAAA,EAC/B,OAAO,MAAM,UAAS,GAAG,IAAI;AAAA;AAUxB,SAAS,oBAAoB,CAAC,IAA6B;AAAA,EAChE,IAAI,UAAU,SAAS,EAAE;AAAA,EACzB,KAAK;AAAA,IAAS,OAAO;AAAA,EAErB,MAAM,OAAO,IAAI,IAAY,CAAC,QAAQ,EAAE,CAAC;AAAA,EACzC,OAAO,MAAM;AAAA,IACX,MAAM,SAAS,QAAQ,iBAAiB,QAAQ;AAAA,IAChD,KAAK,UAAU,KAAK,IAAI,MAAM;AAAA,MAAG;AAAA,IACjC,MAAM,OAAO,SAAS,MAAM;AAAA,IAC5B,KAAK,MAAM;AAAA,MAKT,IAAI,QAAQ,eAAe;AAAA,QACzB,QAAQ,KACN,yBAAyB,QAAQ,qBAAqB,QAAQ,kDAChE;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAU;AAAA,IACV,KAAK,IAAI,QAAQ,EAAE;AAAA,EACrB;AAAA,EAEA,OAAO;AAAA;AAIF,SAAS,cAAc,CAAC,OAAgC;AAAA,EAC7D,MAAM,IAAI,GAAG,MAAM,wDAAwD,EAAE,IAAI,KAAK;AAAA,EAGtF,OAAO,IAAI,UAAS,CAAC,IAAI;AAAA;AAGpB,SAAS,qBAAqB,CAAC,OAAe,MAAkC;AAAA,EACrF,MAAM,IAAI,GACP,MAAM,qEAAqE,EAC3E,IAAI,OAAO,IAAI;AAAA,EAClB,OAAO,IAAI,UAAS,CAAC,IAAI;AAAA;AAOpB,SAAS,sBAAsB,CACpC,OACA,MACA,OAA4D,CAAC,GAC5C;AAAA,EACjB,MAAM,SAAS,gBAAgB,KAAK;AAAA,EACpC,MAAM,UAAU,sBAAsB,KAAK,WAAW,oBAAoB,CAAC;AAAA,EAC3E,MAAM,wBAAwB,WAAW,gBAAgB,gBAAgB;AAAA,EACzE,IAAI,yBAAyB,KAAK,mBAAmB,kBAAkB;AAAA,IACrE,MAAM,UAAU,GAAG,MAAM,uCAAuC,EAAE,IAAI,gBAAgB;AAAA,IAGtF,IAAI;AAAA,MAAS,OAAO,UAAS,OAAO;AAAA,EACtC;AAAA,EAEA,MAAM,SAAmB,CAAC,QAAQ,OAAO;AAAA,EACzC,IAAI,MAAM;AAAA,EACV,IAAI,SAAS,WAAW;AAAA,IACtB,OAAO;AAAA,IACP,OAAO,KAAK,MAAM,gBAAgB;AAAA,EACpC;AAAA,EACA,IAAI,KAAK,gBAAgB;AAAA,IACvB,OAAO;AAAA,IACP,OAAO,KAAK,KAAK,cAAc;AAAA,EACjC;AAAA,EACA,OAAO;AAAA,EACP,MAAM,MAAM,GAAG,MAA0B,GAAG,EAAE,IAAI,GAAG,MAAM;AAAA,EAC3D,OAAO,MAAM,UAAS,GAAG,IAAI;AAAA;AAQxB,SAAS,gBAAgB,CAAC,UAA6B,SAA+B;AAAA,EAC3F,IAAI,SAAS,WAAW;AAAA,IAAG,OAAO;AAAA,EAClC,MAAM,aAAa,sBAAsB,OAAO;AAAA,EAChD,IAAI,UAAU;AAAA,EACd,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,SAAS,GAAG,MAAM,iEAAiE;AAAA,IACzF,WAAW,WAAW,UAAU;AAAA,MAC9B,WAAW,OAAO,OAAO,IAAI,YAAY,SAAS,UAAU,EAAE,WAAW,CAAC;AAAA,IAC5E;AAAA,GACD,EAAE;AAAA,EACH,OAAO;AAAA;AAIF,SAAS,qBAAqB,CACnC,OACA,QACA,OAAmC,CAAC,GACnB;AAAA,EACjB,MAAM,UAAU,MAAM,KAAK;AAAA,EAC3B,MAAM,YAAY,kCAAkC,KAAK,OAAO;AAAA,EAChE,MAAM,gBAAgB,YAAY,mBAAmB,UAAU,IAAI,YAAY,CAAC,IAAI;AAAA,EACpF,MAAM,iBAAiB,YAAY,UAAU,GAAI,KAAK,IAAI;AAAA,EAC1D,MAAM,OAAO,GACV,MACC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAQF,EACC,IACC,gBACA,kBACA,KAAK,WAAW,MAChB,KAAK,WAAW,MAChB,MACF;AAAA,EACF,MAAM,UAAU,gBAAgB,KAAK,OAAO,CAAC,QAAQ,IAAI,SAAS,aAAa,IAAI;AAAA,EACnF,OAAO,QAAQ,WAAW,IAAI,UAAS,QAAQ,EAAG,IAAI;AAAA;AAIjD,SAAS,iBAAiB,CAC/B,SACA,WACA,UAAkC,CAAC,GAC7B;AAAA,EACN,MAAM,WAAW,kBAAkB,OAAO;AAAA,EAC1C,MAAM,SAAS,GACZ,MAAM,mDAAmD,EACzD,IAAI,WAAW,OAAO;AAAA,EACzB,MAAM,UAAU,OAAO,OAAO,WAAW,CAAC;AAAA,EAC1C,MAAM,aAAa;AAAA,IACjB;AAAA,IACA,mBAAmB,eAAe,QAAQ;AAAA,IAC1C,WAAW,eAAe,SAAS;AAAA,IACnC,QAAQ,QAAQ;AAAA,IAChB,SAAS,QAAQ;AAAA,IACjB,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,YAAY,0CAA0C;AAAA,EACpE,EAAO,SAAI,aAAa,WAAW;AAAA,IACjC,OAAO,MAAM,YAAY,8BAA8B;AAAA,EACzD,EAAO;AAAA,IACL,OAAO,MAAM,YAAY,gCAAgC;AAAA;AAAA;AAKtD,SAAS,mBAAmB,CAAC,SAAiB,SAAS,eAAqB;AAAA,EACjF,MAAM,WAAW,kBAAkB,OAAO;AAAA,EAC1C,MAAM,SAAS,GAAG,MAAM,sDAAsD,EAAE,IAAI,OAAO;AAAA,EAC3F,MAAM,UAAU,OAAO,OAAO,WAAW,CAAC;AAAA,EAC1C,MAAM,aAAa,EAAE,SAAS,mBAAmB,eAAe,QAAQ,GAAG,OAAO;AAAA,EAClF,IAAI,YAAY,GAAG;AAAA,IACjB,OAAO,KAAK,YAAY,yCAAyC;AAAA,EACnE,EAAO,SAAI,UAAU;AAAA,IACnB,OAAO,KAAK,YAAY,8BAA8B;AAAA,EACxD,EAAO;AAAA,IACL,OAAO,MAAM,YAAY,oCAAoC;AAAA;AAAA;AAK1D,SAAS,iBAAiB,CAAC,SAAgC;AAAA,EAChE,MAAM,IAAI,GACP,MAA6C,gDAAgD,EAC7F,IAAI,OAAO;AAAA,EACd,OAAO,GAAG,cAAc;AAAA;AAQnB,SAAS,WAAW,CAAC,IAAY,UAAsC,CAAC,GAAY;AAAA,EACzF,MAAM,IAAI,GACP,MAA4C,8CAA8C,EAC1F,IAAI,EAAE;AAAA,EACT,KAAK;AAAA,IAAG,OAAO;AAAA,EACf,IAAI,OAAO,oBAAqB,EAAE,SAAS,cAAc,QAAQ;AAAA,IAAe,OAAO;AAAA,EACvF,GAAG,MACD;AAAA,mFAEF,EAAE,IAAI,IAAI,IAAI,EAAE;AAAA,EAChB,GAAG,MAAM,8CAA8C,EAAE,IAAI,EAAE;AAAA,EAC/D,GAAG,MAAM,qCAAqC,EAAE,IAAI,EAAE;AAAA,EACtD,OAAO;AAAA;AAGF,SAAS,yBAAyB,CAAC,iBAAmC;AAAA,EAC3E,OAAO,GACJ,MACC,kGACF,EACC,IAAI,eAAe,EACnB,IAAI,CAAC,QAAQ,IAAI,eAAe;AAAA;AAG9B,SAAS,uBAAuB,CACrC,iBACA,eACA,kBACM;AAAA,EACN,GAAG,MACD;AAAA;AAAA;AAAA;AAAA,0DAKF,EAAE,IAAI,iBAAiB,eAAe,kBAAkB,IAAI,KAAK,EAAE,YAAY,CAAC;AAAA;AAG3E,SAAS,wBAAwB,CAAC,iBAAyB,eAAgC;AAAA,EAChG,OACE,GACG,MAAM,sFAAsF,EAC5F,IAAI,iBAAiB,aAAa,EAAE,UAAU;AAAA;AAS9C,SAAS,qBAAqB,CACnC,gBACA,0BACU;AAAA,EACV,MAAM,OAAO,GACV,MAA8B,qDAAqD,EACnF,IAAI,cAAc;AAAA,EACrB,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAC/B,GAAG,MAAM,qEAAqE,EAAE,IAC9E,0BACA,cACF;AAAA,EAGA,WAAW,OAAO,MAAM;AAAA,IACtB,GAAG,MACD,qFACF,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE;AAAA,EACtB;AAAA,EACA,OAAO,KAAK,IAAI,CAAC,QAAQ,IAAI,EAAE;AAAA;AAG1B,SAAS,kBAAkB,CAChC,SACA,QACA,MACS;AAAA,EACT,KAAK,GAAG,MAAM,uCAAuC,EAAE,IAAI,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5E,GAAG,MAAM,4EAA4E,EAAE,IACrF,SACA,QACA,IACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,uBAAuB,CAAC,SAAiB,QAAyB;AAAA,EAChF,KAAK,GAAG,MAAM,uCAAuC,EAAE,IAAI,OAAO;AAAA,IAAG,OAAO;AAAA,EAC5E,GAAG,MAAM,8DAA8D,EAAE,IAAI,SAAS,MAAM;AAAA,EAC5F,OAAO;AAAA;;;;;;;;AC1lCT,uBAAS,0BAAY,4BAAW,gCAAc;AAC9C,oBAAS,kBAAS;AAGX,IAAM,kBAAkB;AAE/B,IAAI,SAAS;AACb,IAAI,qBAAoC;AAExC,SAAS,YAAY,GAAW;AAAA,EAC9B,OAAO,MAAK,sBAAsB,GAAG,qBAAqB;AAAA;AAG5D,SAAS,oBAAoB,GAAW;AAAA,EACtC,MAAM,OAAO,aAAa;AAAA,EAC1B,IAAI,uBAAuB;AAAA,IAAM,OAAO;AAAA,EACxC,qBAAqB;AAAA,EACrB,SAAS;AAAA,EACT,IAAI;AAAA,IACF,IAAI,YAAW,IAAI,GAAG;AAAA,MACpB,MAAM,OAAO,KAAK,MAAM,cAAa,MAAM,MAAM,CAAC;AAAA,MAClD,IAAI,OAAO,KAAK,WAAW,YAAY,KAAK,OAAO,KAAK,GAAG;AAAA,QACzD,SAAS,KAAK,OAAO,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IACA,MAAM;AAAA,EAGR,OAAO;AAAA;AAGF,SAAS,eAAe,GAAW;AAAA,EACxC,qBAAqB;AAAA,EACrB,OAAO,UAAU;AAAA;AAIZ,SAAS,eAAe,CAAC,MAAsB;AAAA,EACpD,MAAM,OAAO,qBAAqB;AAAA,EAClC,SAAS,KAAK,KAAK,KAAK;AAAA,EACxB,IAAI;AAAA,IACF,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,IAC5C,eAAc,MAAM,KAAK,UAAU,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;AAAA,IACvD,MAAM;AAAA,EAGR,OAAO;AAAA;;;;;;;;;;ACfT,SAAS,2BAA2B,GAAS;AAAA,EAC3C,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAqBP;AAAA;AAGH,iCAAiC,6BAA6B,EAAE;AAEhE,SAAS,OAAO,CAAC,KAAwC;AAAA,EACvD,OAAO;AAAA,IACL,QAAQ,IAAI;AAAA,IACZ,SAAS,IAAI;AAAA,IACb,SAAS,IAAI,YAAY;AAAA,IACzB,gBAAgB,IAAI;AAAA,IACpB,UAAU,IAAI;AAAA,IACd,WAAW,IAAI;AAAA,IACf,SAAS,IAAI;AAAA,IACb,OAAO,IAAI;AAAA,IACX,eAAe,IAAI,kBAAkB;AAAA,IACrC,YAAY,IAAI,eAAe;AAAA,EACjC;AAAA;AAGF,SAAS,UAAU,CAAC,SAAiB,gBAAkD;AAAA,EACrF,MAAM,MAAM,GACT,MACC;AAAA;AAAA,mCAGF,EACC,IAAI,SAAS,cAAc;AAAA,EAC9B,OAAO,MAAM,QAAQ,GAAG,IAAI;AAAA;AAG9B,SAAS,aAAa,CACpB,SACA,WACA,UAC8B;AAAA,EAC9B,MAAM,MAAM,GACT,MACC;AAAA,oFAEF,EACC,IAAI,SAAS,SAAS;AAAA,EACzB,KAAK,KAAK;AAAA,IAAmB,OAAO;AAAA,EACpC,MAAM,MAAM,KAAK,MAAM,IAAI,iBAAiB;AAAA,EAC5C,IAAI,IAAI,iBAAiB,IAAI;AAAA,IAAS,OAAO;AAAA,EAC7C,MAAM,UAAU,KAAK,KAAK,SAAS,KAAK;AAAA,EACxC,GAAG,MACD;AAAA,kFAEF,EAAE,IAAI,KAAK,UAAU,OAAO,GAAG,UAAU,SAAS,SAAS;AAAA,EAC3D,OAAO,EAAE,SAAS,WAAW,iBAAiB,SAAS,SAAS;AAAA;AAS3D,SAAS,kBAAkB,CAAC,MASN;AAAA,EAC3B,OAAO,GACJ,YAAY,MAAM;AAAA,IACjB,MAAM,SAAS,WAAW,KAAK,SAAS,KAAK,cAAc;AAAA,IAC3D,IAAI,QAAQ,aAAa,aAAa,OAAO,aAAa,KAAK,UAAU;AAAA,MACvE,OAAO,EAAE,SAAS,YAAY,MAAM,OAAO;AAAA,IAC7C;AAAA,IACA,IAAI,QAAQ,UAAU;AAAA,MAAY,OAAO,EAAE,SAAS,UAAU,MAAM,OAAO;AAAA,IAC3E,IACE,WACC,OAAO,UAAU,aAAa,OAAO,UAAU,cAChD,OAAO,YAAY,KAAK,SACxB;AAAA,MACA,OAAO,EAAE,SAAS,WAAW,MAAM,OAAO;AAAA,IAC5C;AAAA,IACA,IAAI,WAAW,OAAO,UAAU,aAAa,OAAO,UAAU,YAAY;AAAA,MACxE,OAAO,EAAE,SAAS,WAAW,MAAM,OAAO;AAAA,IAC5C;AAAA,IAEA,GAAG,MACD;AAAA;AAAA,qDAGF,EAAE,IACA,KAAK,QACL,KAAK,SACL,KAAK,WAAW,MAChB,KAAK,gBACL,KAAK,UACL,KAAK,WACL,KAAK,SACL,KAAK,KACL,KAAK,GACP;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,QACd,gBAAgB,KAAK;AAAA,QACrB,UAAU,KAAK;AAAA,QACf,WAAW,KAAK;AAAA,QAChB,SAAS,KAAK;AAAA,QACd,OAAO;AAAA,MACT;AAAA,IACF;AAAA,GACD,EACA,UAAU;AAAA;AAGR,SAAS,qBAAqB,CACnC,QACA,SACA,MAAM,IAAI,KAAK,EAAE,YAAY,GACC;AAAA,EAC9B,OAAO,GACJ,YAAY,MAAM;AAAA,IACjB,MAAM,MAAM,GAAG,MAAM,gDAAgD,EAAE,IAAI,MAAM;AAAA,IAGjF,KAAK,OAAO,IAAI,aAAa,YAAY,CAAC,WAAW,SAAS,EAAE,SAAS,IAAI,KAAK,GAAG;AAAA,MACnF,OAAO;AAAA,IACT;AAAA,IACA,MAAM,SAAS,GACZ,MACC;AAAA,gFAEF,EACC,IAAI,KAAK,QAAQ,OAAO;AAAA,IAC3B,IAAI,OAAO,OAAO,WAAW,CAAC,MAAM;AAAA,MAAG,OAAO;AAAA,IAC9C,OAAO,cAAc,IAAI,UAAU,IAAI,YAAY,GAAG;AAAA,GACvD,EACA,UAAU;AAAA;AAGR,SAAS,6BAA6B,CAC3C,cACA,MAAM,IAAI,KAAK,EAAE,YAAY,GACJ;AAAA,EACzB,OAAO,GACJ,YAAY,MAAM;AAAA,IACjB,MAAM,OAAO,GACV,MACC;AAAA,+CAEF,EACC,IAAI;AAAA,IACP,MAAM,UAAmC,CAAC;AAAA,IAC1C,WAAW,OAAO,MAAM;AAAA,MACtB,IAAI,aAAa,IAAI,IAAI,QAAQ;AAAA,QAAG;AAAA,MACpC,IAAI,IAAI,UAAU,aAAa,IAAI,kBAAkB,IAAI,aAAa;AAAA,QACpE,GAAG,MACD;AAAA,mDAEF,EAAE,IAAI,KAAK,IAAI,OAAO;AAAA,QACtB;AAAA,MACF;AAAA,MACA,MAAM,SAAS,GACZ,MACC;AAAA,iEAEF,EACC,IAAI,KAAK,IAAI,OAAO;AAAA,MACvB,IAAI,OAAO,OAAO,WAAW,CAAC,MAAM;AAAA,QAAG;AAAA,MACvC,MAAM,SAAS,cAAc,IAAI,UAAU,IAAI,YAAY,GAAG;AAAA,MAC9D,IAAI;AAAA,QAAQ,QAAQ,KAAK,MAAM;AAAA,IACjC;AAAA,IACA,MAAM,cAAc,GACjB,MACC;AAAA;AAAA;AAAA;AAAA;AAAA,iCAMF,EACC,IAAI;AAAA,IACP,WAAW,QAAQ,aAAa;AAAA,MAC9B,MAAM,SAAS,cAAc,KAAK,UAAU,KAAK,IAAI,GAAG;AAAA,MACxD,IAAI;AAAA,QAAQ,QAAQ,KAAK,MAAM;AAAA,IACjC;AAAA,IACA,OAAO;AAAA,GACR,EACA,UAAU;AAAA;AAYR,SAAS,yBAAyB,CAAC,MAQf;AAAA,EACzB,OAAO,GACJ,YAAY,MAAM;AAAA,IACjB,MAAM,MAAM,GACT,MACC;AAAA;AAAA,qCAGF,EACC,IAAI,KAAK,SAAS,KAAK,SAAS;AAAA,IACnC,KAAK,OAAO,IAAI,aAAa,KAAK,WAAW,IAAI,UAAU,WAAW;AAAA,MACpE,OAAO,EAAE,SAAS,cAAc;AAAA,IAClC;AAAA,IACA,MAAM,UAAU,GACb,MACC;AAAA,sFAEF,EACC,IAAI,KAAK,SAAS,KAAK,SAAS;AAAA,IACnC,KAAK,SAAS;AAAA,MAAmB,OAAO,EAAE,SAAS,cAAc;AAAA,IACjE,MAAM,MAAM,KAAK,MAAM,QAAQ,iBAAiB;AAAA,IAChD,IACE,IAAI,WACJ,IAAI,kBACH,IAAI,QAAQ,KAAK,CAAC,WAAW,OAAO,UAAU,KAAK,KAAK,GACzD;AAAA,MACA,OAAO,EAAE,SAAS,cAAc;AAAA,IAClC;AAAA,IAEA,MAAM,UAAU,GACb,MACC;AAAA;AAAA,kEAGF,EACC,IAAI,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,IAAI,SAAS,KAAK,OAAO;AAAA,IAChF,IAAI,OAAO,QAAQ,WAAW,CAAC,MAAM;AAAA,MAAG,OAAO,EAAE,SAAS,cAAc;AAAA,IAExE,MAAM,WAAW,KAAK,KAAK,eAAe,KAAK,MAAM;AAAA,IACrD,GAAG,MACD;AAAA,oFAEF,EAAE,IAAI,KAAK,UAAU,QAAQ,GAAG,KAAK,KAAK,KAAK,SAAS,KAAK,SAAS;AAAA,IACtE,OAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM,QAAQ;AAAA,WACT;AAAA,QACH,OAAO;AAAA,QACP,gBAAgB,KAAK;AAAA,QACrB,aAAa,KAAK;AAAA,MACpB,CAAC;AAAA,MACD,iBAAiB;AAAA,MACjB,UAAU,KAAK;AAAA,IACjB;AAAA,GACD,EACA,UAAU;AAAA;AAGR,SAAS,iBAAiB,CAC/B,SACA,WACA,SACA,MAAM,IAAI,KAAK,EAAE,YAAY,GACC;AAAA,EAC9B,OAAO,GACJ,YAAY,MAAM;AAAA,IACjB,MAAM,MAAM,GACT,MACC;AAAA,2EAEF,EACC,IAAI,SAAS,SAAS;AAAA,IACzB,KAAK,OAAO,IAAI,aAAa,WAAW,IAAI,UAAU;AAAA,MAAW,OAAO;AAAA,IACxE,MAAM,SAAS,GACZ,MACC;AAAA,kEAEF,EACC,IAAI,KAAK,IAAI,SAAS,OAAO;AAAA,IAChC,IAAI,OAAO,OAAO,WAAW,CAAC,MAAM;AAAA,MAAG,OAAO;AAAA,IAC9C,OAAO,cAAc,SAAS,WAAW,GAAG;AAAA,GAC7C,EACA,UAAU;AAAA;;;;;;;;;;;;;;;;;;ACnWf;AAAA,gBACE;AAAA,eACA;AAAA,kBACA;AAAA,gBACA;AAAA,gBACA;AAAA,mBACA;AAAA;AAEF,oBAAS,kBAAS;AAuClB,SAAS,eAAe,CAAC,SAAkC;AAAA,EACzD,OAAO,MAAK,sBAAsB,GAAG,eAAe;AAAA;AAGtD,SAAS,aAAa,CAAC,WAA2B;AAAA,EAChD,MAAM,IAAI,kBAAkB,WAAW,IAAI;AAAA,EAC3C,OAAO,GAAG;AAAA;AAIL,SAAS,mBAAmB,CAAC,QAAyB,WAA2B;AAAA,EACtF,OAAO,MAAK,gBAAgB,MAAM,GAAG,cAAc,SAAS,CAAC;AAAA;AAIxD,SAAS,yBAAyB,CAAC,QAAyB,WAA2B;AAAA,EAC5F,MAAM,UAAU,oBAAoB,QAAQ,SAAS;AAAA,EACrD,OAAO,QAAQ,SAAS,QAAQ,IAC5B,GAAG,QAAQ,MAAM,IAAI,SAAS,MAAM,mBACpC,GAAG;AAAA;AAGF,SAAS,qBAAqB,CAAC,QAAyB,WAA4B;AAAA,EACzF,OAAO,YAAW,0BAA0B,QAAQ,SAAS,CAAC;AAAA;AAyBzD,SAAS,uBAAuB,CACrC,QACA,WACA,OACA,OACS;AAAA,EACT,IAAI;AAAA,IACF,8BAA8B,QAAQ,WAAW,OAAO,KAAK;AAAA,IAC7D,OAAO;AAAA,IACP,OAAO,KAAK;AAAA,IACZ,OAAO,KACL,EAAE,KAAK,QAAQ,WAAW,WAAW,MAAM,KAAK,GAChD,uCACF;AAAA,IACA,OAAO;AAAA;AAAA;AAAA;AAWJ,MAAM,qCAAqC,MAAM;AAAA,EAE3C;AAAA,EACA;AAAA,EACS;AAAA,EAHpB,WAAW,CACA,SACA,YACS,OAClB;AAAA,IACA,MACE,iEAAiE,cAC/D,8BAA8B,yBAClC;AAAA,IAPS;AAAA,IACA;AAAA,IACS;AAAA,IAMlB,KAAK,OAAO;AAAA;AAEhB;AAOO,SAAS,6BAA6B,CAC3C,QACA,WACA,OACA,OACM;AAAA,EACN,MAAM,OAAO,oBAAoB,QAAQ,SAAS;AAAA,EAClD,MAAM,QAA2B;AAAA,IAC/B,IAAI,IAAI,KAAK,EAAE,YAAY;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AAAA,EACA,MAAM,OAAO,KAAK,UAAU,KAAK;AAAA,EACjC,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,gBAAgB,MAAM,IAAI;AAAA,EAC1B,MAAM,aAAa,0BAA0B,QAAQ,SAAS;AAAA,EAC9D,IAAI,YAAW,UAAU,GAAG;AAAA,IAC1B,IAAI;AAAA,MACF,gBAAgB,YAAY,IAAI;AAAA,MAChC,OAAO,OAAO;AAAA,MAMd,MAAM,IAAI,6BAA6B,MAAM,YAAY,KAAK;AAAA;AAAA,EAElE;AAAA;AAIK,SAAS,gCAAgC,CAC9C,QACA,WACA,OACA,OACM;AAAA,EACN,MAAM,OAAO,oBAAoB,QAAQ,SAAS;AAAA,EAClD,MAAM,QAA2B;AAAA,IAC/B,IAAI,IAAI,KAAK,EAAE,YAAY;AAAA,IAC3B;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,gBAAgB,MAAM,KAAK,UAAU,KAAK,CAAC;AAAA;AAO7C,SAAS,oBAAoB,CAAC,MAAmC;AAAA,EAC/D,MAAM,MAA2B,CAAC;AAAA,EAClC,KAAK,YAAW,IAAI;AAAA,IAAG,OAAO;AAAA,EAC9B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,cAAa,MAAM,MAAM;AAAA,IAC/B,OAAO,KAAK;AAAA,IACZ,OAAO,KAAK,EAAE,KAAK,KAAK,GAAG,+BAA+B;AAAA,IAC1D,OAAO;AAAA;AAAA,EAET,WAAW,QAAQ,IAAI,MAAM;AAAA,CAAI,GAAG;AAAA,IAClC,KAAK,KAAK,KAAK;AAAA,MAAG;AAAA,IAClB,IAAI;AAAA,MACF,IAAI,KAAK,KAAK,MAAM,IAAI,CAAsB;AAAA,MAC9C,OAAO,KAAK;AAAA,MACZ,OAAO,KACL,EAAE,KAAK,MAAM,KAAK,MAAM,GAAG,GAAG,EAAE,GAChC,gDACF;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AAAA;AAaF,SAAS,gBAAgB,CAAC,QAAyB,WAAwC;AAAA,EAChG,MAAM,aAAa,0BAA0B,QAAQ,SAAS;AAAA,EAC9D,OAAO,qBACL,YAAW,UAAU,IAAI,aAAa,oBAAoB,QAAQ,SAAS,CAC7E;AAAA;AAIK,SAAS,mBAAmB,CACjC,QACA,WACqB;AAAA,EACrB,OAAO,qBAAqB,oBAAoB,QAAQ,SAAS,CAAC;AAAA;AAI7D,SAAS,yBAAyB,CACvC,QACA,WACA,SACM;AAAA,EACN,8BAA8B,0BAA0B,QAAQ,SAAS,GAAG,OAAO;AAAA;AAI9E,SAAS,4BAA4B,CAC1C,QACA,WACA,SACM;AAAA,EACN,8BAA8B,oBAAoB,QAAQ,SAAS,GAAG,OAAO;AAAA;AAG/E,SAAS,6BAA6B,CAAC,MAAc,SAAoC;AAAA,EACvF,MAAM,WAAW,GAAG,QAAQ,QAAQ,OAAO,KAAK,IAAI;AAAA,EACpD,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,IAAI;AAAA,IACF,eACE,UACA,QAAQ,SAAS,IAAI,GAAG,QAAQ,IAAI,CAAC,UAAU,KAAK,UAAU,KAAK,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA,IAAQ,IACvF,EAAE,MAAM,KAAK,CACf;AAAA,IACA,YAAW,UAAU,IAAI;AAAA,IACzB,OAAO,OAAO;AAAA,IACd,IAAI;AAAA,MACF,YAAW,QAAQ;AAAA,MACnB,MAAM;AAAA,IACR,MAAM;AAAA;AAAA;AAuBH,SAAS,oBAAoB,CAAC,MAII;AAAA,EACvC,QAAQ,QAAQ,UAAU,aAAa;AAAA,EACvC,MAAM,UAAU,oBAAoB,QAAQ,QAAQ;AAAA,EACpD,IAAI,YAAW,OAAO,KAAK,cAAa,SAAS,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG;AAAA,IAC1E,OAAO,KACL,EAAE,QAAQ,UAAU,UAAU,QAAQ,GACtC,0EACF;AAAA,IACA,OAAO,EAAE,QAAQ,OAAO,SAAS,EAAE;AAAA,EACrC;AAAA,EACA,MAAM,UAAU,oBAAoB,QAAQ,QAAQ;AAAA,EACpD,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO,EAAE,QAAQ,OAAO,SAAS,EAAE;AAAA,EACrC;AAAA,EACA,MAAM,OAAO,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA;AAAA,EAC/D,WAAU,SAAQ,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC/C,eAAc,SAAS,IAAI;AAAA,EAC3B,MAAM,gBAAgB,0BAA0B,QAAQ,QAAQ;AAAA,EAChE,IAAI,YAAW,aAAa,GAAG;AAAA,IAC7B,MAAM,gBAAgB,0BAA0B,QAAQ,QAAQ;AAAA,IAChE,eAAc,eAAe,cAAa,aAAa,CAAC;AAAA,EAC1D;AAAA,EACA,OAAO,EAAE,QAAQ,MAAM,SAAS,QAAQ,OAAO;AAAA;AAwB1C,SAAS,yBAAyB,CACvC,SACA,OACe;AAAA,EACf,SAAS,IAAI,QAAQ,SAAS,EAAG,KAAK,GAAG,KAAK;AAAA,IAC5C,MAAM,QAAQ,QAAQ;AAAA,IACtB,IAAI,MAAM,UAAU;AAAA,MAAO;AAAA,IAC3B,IAAI,MAAM,MAAM,SAAS,WAAW;AAAA,MAClC,OAAO,MAAM,MAAM;AAAA,IACrB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvUF,IAAM,mBAAyC,CAAC,WAAW,UAAU,OAAO;AAE5E,SAAS,WAAW,CAAC,OAAoC;AAAA,EAC9D,OAAO,OAAO,UAAU,YAAa,iBAAuC,SAAS,KAAK;AAAA;;;AC1BrF,SAAS,MAAM,CAAC,GAAY,UAA2B;AAAA,EAC5D,IAAI,aAAa;AAAA,IAAO,OAAO,EAAE;AAAA,EACjC,OAAO,YAAY,OAAO,CAAC;AAAA;;;ACkC7B,SAAS,qBAAqB,GAAS;AAAA,EACrC,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CA0BT;AAAA,EAEC,SAAS,UAAU,CAAC,KAAa,aAA4B;AAAA,IAC3D,IAAI;AAAA,MACF,GAAG,KAAK,GAAG;AAAA,MACX,OAAO,GAAG;AAAA,MACV,IAAI,eAAe,OAAO,CAAC,EAAE,SAAS,WAAW;AAAA,QAAG;AAAA,MACpD,OAAO,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,qBAAqB;AAAA,MACnD,MAAM;AAAA;AAAA;AAAA,EAMV,SAAS,QAAQ,CAAC,OAA0B;AAAA,IAC1C,IAAI,UAAU,aAAa,UAAU;AAAA,MAAM,OAAO;AAAA,IAClD,IACE,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,YACjB,OAAO,UAAU,WACjB;AAAA,MACA,OAAO;AAAA,IACT;AAAA,IACA,IAAI,iBAAiB;AAAA,MAAY,OAAO;AAAA,IACxC,OAAO,OAAO,KAAK;AAAA;AAAA,EAGrB,SAAS,YAAY,CAAC,OAAe,QAAyB;AAAA,IAC5D,OAAO,GACJ,MAA4B,qBAAqB,QAAQ,EACzD,IAAI,EACJ,KAAK,CAAC,MAAM,EAAE,SAAS,MAAM;AAAA;AAAA,EAGlC,SAAS,QAAQ,CAAC,OAA8B;AAAA,IAC9C,OACE,GACG,MACC,iEACF,EACC,IAAI,KAAK,GAAG,OAAO;AAAA;AAAA,EAI1B,SAAS,kBAAkB,CAAC,OAAe,QAAsB;AAAA,IAC/D,IAAI,aAAa,OAAO,MAAM,GAAG;AAAA,MAC/B,WAAW,eAAe,qBAAqB,QAAQ;AAAA,IACzD;AAAA;AAAA,EAGF,SAAS,sBAAsB,GAAY;AAAA,IACzC,MAAM,MAAM,SAAS,QAAQ;AAAA,IAC7B,KAAK;AAAA,MAAK,OAAO;AAAA,IACjB,MAAM,OAAO,GAAG,MAA4B,2BAA2B,EAAE,IAAI;AAAA,IAC7E,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAAA,IAC7C,OACE,MAAM,IAAI,gBAAgB,KAC1B,MAAM,IAAI,qBAAqB,KAC/B,MAAM,IAAI,OAAO,KACjB,MAAM,IAAI,QAAQ,KAClB,MAAM,IAAI,cAAc,KACxB,MAAM,IAAI,eAAe,KACzB,MAAM,IAAI,cAAc,KACxB,MAAM,IAAI,gBAAgB,KAC1B,MAAM,IAAI,cAAc,KACxB,MAAM,IAAI,iBAAiB,KAC3B,MAAM,IAAI,gBAAgB,MACzB,4CAA4C,KAAK,GAAG;AAAA;AAAA,EAIzD,SAAS,oBAAoB,CAAC,OAA2B;AAAA,IACvD,IAAI,YAAY,KAAK;AAAA,MAAG,OAAO;AAAA,IAC/B,IAAI,UAAU,YAAY,UAAU;AAAA,MAAS,OAAO;AAAA,IACpD,OAAO;AAAA;AAAA,EAGT,SAAS,0BAA0B,GAAS;AAAA,IAC1C,KAAK,uBAAuB;AAAA,MAAG;AAAA,IAE/B,MAAM,OAAO,GAAG,MAA4B,2BAA2B,EAAE,IAAI;AAAA,IAC7E,MAAM,MAAM,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAAA,IAC3C,MAAM,OAAO,CAAC,KAA8B,QAAgB,WAAoB,SAC9E,IAAI,IAAI,MAAM,IAAK,IAAI,WAAW,WAAY;AAAA,IAChD,MAAM,iBAAiB,CAAC,QACtB,KAAK,KAAK,eAAe,KAAK,KAAK,uBAAuB,IAAI,CAAC;AAAA,IAEjE,MAAM,OAAO,GACV,MAAmC,wCAAwC,EAC3E,IAAI,EACJ,KAAK,CAAC,GAAG,MAAM;AAAA,MACd,MAAM,WAAW,OAAO,KAAK,GAAG,cAAc,EAAE,CAAC;AAAA,MACjD,MAAM,WAAW,OAAO,KAAK,GAAG,cAAc,EAAE,CAAC;AAAA,MACjD,MAAM,SAAS,SAAS,cAAc,QAAQ;AAAA,MAC9C,IAAI,WAAW;AAAA,QAAG,OAAO;AAAA,MACzB,OAAO,OAAO,EAAE,WAAW,CAAC,IAAI,OAAO,EAAE,WAAW,CAAC;AAAA,KACtD;AAAA,IAEH,MAAM,sBAAsB,GACzB,MAAoC,qBAAqB,EACzD,IAAI,GAAG;AAAA,IACV,GAAG,KAAK,2BAA2B;AAAA,IACnC,IAAI;AAAA,MACF,GAAG,YAAY,MAAM;AAAA,QACnB,GAAG,KAAK,iCAAiC;AAAA,QACzC,GAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAkBT;AAAA,QAEC,MAAM,SAAS,GAAG,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAMzB;AAAA,QACC,IAAI,WAAW;AAAA,QACf,MAAM,oBAAoB,IAAI,KAAK,EAAE,YAAY;AAAA,QACjD,WAAW,OAAO,MAAM;AAAA,UACtB,MAAM,SAAS,OAAO,IACpB,OAAO,KAAK,KAAK,WAAW,EAAE,CAAC,GAC/B,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC,GAC5B,OAAO,KAAK,KAAK,qBAAqB,CAAC,CAAC,GACxC,SAAS,KAAK,KAAK,cAAc,IAAI,CAAC,GACtC,OAAO,KAAK,KAAK,cAAc,iBAAiB,CAAC,GACjD,SAAS,eAAe,GAAG,CAAC,GAC5B,SAAS,KAAK,KAAK,eAAe,IAAI,CAAC,GACvC,qBAAqB,KAAK,KAAK,SAAS,QAAQ,CAAC,GACjD,SAAS,KAAK,KAAK,eAAe,IAAI,CAAC,GACvC,SAAS,KAAK,KAAK,aAAa,IAAI,CAAC,GACrC,SAAS,KAAK,KAAK,oBAAoB,IAAI,CAAC,GAC5C,SAAS,KAAK,KAAK,qBAAqB,IAAI,CAAC,GAC7C,SAAS,KAAK,KAAK,oBAAoB,IAAI,CAAC,CAC9C;AAAA,UACA,IAAI,OAAO,OAAO,WAAW,CAAC,IAAI;AAAA,YAAG,YAAY;AAAA,QACnD;AAAA,QAEA,GAAG,KAAK,mBAAmB;AAAA,QAC3B,GAAG,KAAK,yCAAyC;AAAA,QACjD,GAAG,KACD,oFACF;AAAA,QACA,OAAO,KACL,EAAE,UAAU,UAAU,kBAAkB,KAAK,SAAS,SAAS,GAC/D,sDACF;AAAA,OACD,EAAE;AAAA,cACH;AAAA,MACA,GAAG,KAAK,yBAAyB,sBAAsB,OAAO,OAAO;AAAA;AAAA;AAAA,EAIzE,2BAA2B;AAAA,EAE3B,WAAW,kDAAkD,kBAAkB;AAAA,EAC/E,WACE,sEACA,kBACF;AAAA,EACA,WAAW,kDAAkD,kBAAkB;AAAA,EAC/E,WAAW,gDAAgD,kBAAkB;AAAA,EAC7E,WAAW,uDAAuD,kBAAkB;AAAA,EACpF,WAAW,wDAAwD,kBAAkB;AAAA,EACrF,WAAW,uDAAuD,kBAAkB;AAAA,EAEpF,WAAW,UAAU,CAAC,gBAAgB,mBAAmB,gBAAgB,GAAG;AAAA,IAC1E,mBAAmB,UAAU,MAAM;AAAA,EACrC;AAAA,EACA,mBAAmB,SAAS,oBAAoB;AAAA,EAEhD,WAAW,gCAAgC,eAAe;AAAA,EAC1D,WAAW,oFAAoF;AAAA,EAE/F,SAAS,YAAY,CAAC,OAAe,QAAsB;AAAA,IACzD,KAAK,aAAa,OAAO,MAAM,GAAG;AAAA,MAChC,MAAM,IAAI,MAAM,4BAA4B,SAAS,mBAAmB;AAAA,IAC1E;AAAA;AAAA,EAGF,WAAW,UAAU,CAAC,MAAM,iBAAiB,uBAAuB,GAAG;AAAA,IACrE,aAAa,SAAS,MAAM;AAAA,EAC9B;AAAA,EACA,WAAW,UAAU;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AAAA,IACD,aAAa,UAAU,MAAM;AAAA,EAC/B;AAAA;AAGF,iCAAiC,uBAAuB,EAAE;AAEnD,SAAS,UAAU,CAAC,KAA+B;AAAA,EACxD,KAAK,YAAY,IAAI,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,IAAI,OAAO;AAAA,EAChF,MAAM,QAAmB,IAAI;AAAA,EAC7B,OAAO;AAAA,IACL,iBAAiB,IAAI;AAAA,IACrB,WAAW,IAAI,cAAc;AAAA,IAC7B,WAAW,IAAI;AAAA,IACf,MAAM,IAAI;AAAA,IACV;AAAA,OACI,IAAI,eAAe,EAAE,aAAa,IAAI,YAAY;AAAA,OAClD,IAAI,eAAe,EAAE,YAAY,IAAI,YAAY;AAAA,EACvD;AAAA;AAGK,SAAS,iBAAiB,GAAG;AAAA,EAClC,qBAAqB;AAAA;;;AC5ShB,SAAS,aAAa,CAAC,QAAgB,WAA8B;AAAA,EAC1E,MAAM,MAAM,GACT,MACC,yDACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,MAAM,QAAQ,KAAK;AAAA,EACnB,KAAK,YAAY,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,OAAO;AAAA,EACxE,OAAO;AAAA;AAGF,SAAS,aAAa,CAAC,QAAgB,WAAmB,OAA2B;AAAA,EAC1F,MAAM,SAAS,GACZ,MAAM,4DAA4D,EAClE,IAAI,OAAO,OAAO,MAAM,GAAG,SAAS;AAAA,EACvC,OAAO,OAAO,UAAU;AAAA;;ACP1B,SAAS,mBAAmB,GAAc;AAAA,EACxC,WAAW,SAAS;AAAA,IAClB,QAAQ,IAAI,eAAe,KAAK;AAAA,IAChC,QAAQ,IAAI,gBAAgB,KAAK;AAAA,IACjC,QAAQ,IAAI,eAAe,KAAK;AAAA,EAClC,GAAG;AAAA,IACD,IAAI,YAAY,KAAK;AAAA,MAAG,OAAO;AAAA,EACjC;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,aAAa,CAAC,QAAwC;AAAA,EACpE,MAAM,OAAO,GAAG,MAAuB,kCAAkC,EAAE,IAAI,OAAO,MAAM,CAAC;AAAA,EAC7F,KAAK;AAAA,IAAM,OAAO;AAAA,EAElB,MAAM,YAAY,GACf,MAAwB,wCAAwC,EAChE,IAAI,OAAO,MAAM,CAAC;AAAA,EACrB,MAAM,SAA6C,CAAC;AAAA,EACpD,WAAW,OAAO;AAAA,IAAW,OAAO,IAAI,QAAQ,WAAW,GAAG;AAAA,EAE9D,OAAO;AAAA,OACD,KAAK,iBAAiB,EAAE,aAAa,KAAK,cAAc;AAAA,OACxD,KAAK,yBAAyB,QAAQ,EAAE,qBAAqB,KAAK,sBAAsB;AAAA,IAC5F;AAAA,EACF;AAAA;AAGK,SAAS,eAAc,CAAC,QAAgB,MAAqC;AAAA,EAClF,MAAM,MAAM,GACT,MAAkC,qDAAqD,EACvF,IAAI,OAAO,MAAM,GAAG,IAAI;AAAA,EAC3B,OAAO,MAAM,WAAW,GAAG,IAAI;AAAA;AAG1B,SAAS,gBAAgB,CAC9B,UACkD;AAAA,EAClD,MAAM,MAAM,GACT,MAAwB,kDAAkD,EAC1E,IAAI,QAAQ;AAAA,EACf,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO,EAAE,QAAQ,OAAO,IAAI,OAAO,GAAG,OAAO,WAAW,GAAG,EAAE;AAAA;AAGxD,SAAS,kBAAkB,CAAC,QAAgB,WAAkC;AAAA,EACnF,MAAM,MAAM,GACT,MACC,8DACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,OAAO,KAAK,cAAc;AAAA;AAGrB,SAAS,aAAa,CAAC,QAA0B;AAAA,EACtD,MAAM,OAAO,GACV,MAAgC,2CAA2C,EAC3E,IAAI,OAAO,MAAM,CAAC;AAAA,EACrB,OAAO,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA;AAGxB,SAAS,YAAY,CAAC,QAAkC;AAAA,EAC7D,MAAM,OAAO,GACV,MAAwB,wCAAwC,EAChE,IAAI,OAAO,MAAM,CAAC;AAAA,EACrB,OAAO,KAAK,IAAI,UAAU;AAAA;AAGrB,SAAS,aAAa,GAAa;AAAA,EACxC,MAAM,OAAO,GAAG,MAA0B,sBAAsB,EAAE,IAAI;AAAA,EACtE,OAAO,KAAK,IAAI,CAAC,MAAM,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,OAAO,MAAM,CAAC,CAAC;AAAA;AAG9D,SAAS,sBAAsB,CAAC,QAA+B;AAAA,EACpE,MAAM,MAAM,GACT,MACC,sDACF,EACC,IAAI,OAAO,MAAM,CAAC;AAAA,EACrB,OAAO,KAAK,yBAAyB;AAAA;AAGhC,SAAS,cAAc,CAAC,QAA+B;AAAA,EAC5D,MAAM,MAAM,GACT,MAAgD,8CAA8C,EAC9F,IAAI,OAAO,MAAM,CAAC;AAAA,EACrB,OAAO,KAAK,iBAAiB;AAAA;AAGxB,SAAS,mBAAmB,CAAC,QAAgB,WAAkC;AAAA,EACpF,MAAM,MAAM,GACT,MACC,+DACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,OAAO,KAAK,eAAe;AAAA;AAGtB,SAAS,iBAAiB,CAC/B,QACA,WAC8D;AAAA,EAC9D,MAAM,MAAM,GACT,MACC,0EACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,IAAI,UAA2B;AAAA,EAC/B,IAAI,QAAiC,CAAC;AAAA,EACtC,IAAI;AAAA,IACF,IAAI,KAAK;AAAA,MAAa,UAAU,KAAK,MAAM,IAAI,WAAW;AAAA,IAC1D,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,gDAAgD;AAAA;AAAA,EAE1E,IAAI;AAAA,IACF,IAAI,KAAK;AAAA,MAAW,QAAQ,KAAK,MAAM,IAAI,SAAS;AAAA,IACpD,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,8CAA8C;AAAA;AAAA,EAExE,OAAO,EAAE,SAAS,MAAM;AAAA;AAGnB,SAAS,QAAQ,CACtB,QACA,MACA,iBACA,WACA,WACS;AAAA,EACT,IAAI,KAAK,WAAW,IAAI,GAAG;AAAA,IACzB,OAAO,KAAK,EAAE,KAAK,GAAG,uCAAuC;AAAA,IAC7D,OAAO;AAAA,EACT;AAAA,EACA,GAAG,MAAM,6CAA6C,EAAE,IAAI,OAAO,MAAM,CAAC;AAAA,EAC1E,GAAG,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOR,EAAE,IACD,OAAO,MAAM,GACb,MACA,iBACA,aAAa,MACb,aAAa,IAAI,KAAK,EAAE,YAAY,GACpC,oBAAoB,CACtB;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,WAAW,CACzB,QACA,SACA,SACkE;AAAA,EAClE,IAAI,YAAY;AAAA,IAAS,OAAO,EAAE,IAAI,KAAK;AAAA,EAC3C,IAAI,gBAAe,QAAQ,OAAO;AAAA,IAAG,OAAO,EAAE,IAAI,OAAO,QAAQ,aAAa;AAAA,EAC9E,MAAM,SAAS,GACZ,QAAQ,2DAA2D,EACnE,IAAI,SAAS,OAAO,MAAM,GAAG,OAAO;AAAA,EACvC,IAAI,OAAO,YAAY;AAAA,IAAG,OAAO,EAAE,IAAI,OAAO,QAAQ,YAAY;AAAA,EAClE,OAAO,EAAE,IAAI,KAAK;AAAA;AAGb,SAAS,WAAW,CAAC,QAAgB,MAAc;AAAA,EACxD,GAAG,MAAM,mDAAmD,EAAE,IAAI,OAAO,MAAM,GAAG,IAAI;AAAA;AAGjF,SAAS,kBAAkB,CAAC,QAAgB,WAAmB,WAAmB;AAAA,EACvF,GAAG,MAAM,iEAAiE,EAAE,IAC1E,WACA,OAAO,MAAM,GACb,SACF;AAAA;AAGK,SAAS,oBAAoB,CAAC,QAAgB,WAAmB;AAAA,EACtE,GAAG,MAAM,oEAAoE,EAAE,IAC7E,OAAO,MAAM,GACb,SACF;AAAA;AAGK,SAAS,cAAc,CAAC,QAAgB,WAAmB;AAAA,EAChE,GAAG,MAAM;AAAA;AAAA;AAAA,GAGR,EAAE,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA;AAG3B,SAAS,gBAAgB,CAAC,QAAgB;AAAA,EAC/C,GAAG,MAAM,oDAAoD,EAAE,IAAI,OAAO,MAAM,CAAC;AAAA;AAG5E,SAAS,mBAAmB,CACjC,QACA,WACA,aACS;AAAA,EACT,MAAM,SAAS,GACZ,MAAM,kEAAkE,EACxE,IAAI,aAAa,OAAO,MAAM,GAAG,SAAS;AAAA,EAC7C,OAAO,OAAO,UAAU;AAAA;AAGnB,SAAS,kBAAkB,CAChC,QACA,WACiF;AAAA,EAMjF,MAAM,MAAM,GACT,MACC,yGACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,QACJ,IAAI,oBAAoB,YAAY,IAAI,gBAAgB,IAAI,IAAI,mBAAmB;AAAA,EACrF,OAAO,EAAE,OAAO,OAAO,IAAI,kBAAkB,QAAQ,IAAI,kBAAkB;AAAA;AAGtE,SAAS,kBAAkB,CAChC,QACA,WACA,OACA,OACA,QACS;AAAA,EACT,MAAM,SAAS,GACZ,MACC,oHACF,EACC,IAAI,OAAO,OAAO,UAAU,MAAM,OAAO,MAAM,GAAG,SAAS;AAAA,EAC9D,OAAO,OAAO,UAAU;AAAA;AAGnB,SAAS,kBAAkB,CAAC,QAAgB,WAAmB,QAAyB;AAAA,EAC7F,MAAM,SAAS,GACZ,MAAM,kEAAkE,EACxE,IAAI,QAAQ,OAAO,MAAM,GAAG,SAAS;AAAA,EACxC,OAAO,OAAO,UAAU;AAAA;AAGnB,SAAS,mBAAmB,CACjC,QACA,WACA,aACS;AAAA,EACT,MAAM,SAAS,GACZ,MAAM,wEAAwE,EAC9E,IAAI,aAAa,OAAO,MAAM,GAAG,SAAS;AAAA,EAC7C,OAAO,OAAO,UAAU;AAAA;AAGnB,SAAS,kBAAkB,CAChC,QACA,WACA,SACS;AAAA,EACT,MAAM,QAAQ,YAAY,OAAO,KAAK,UAAU,OAAO,IAAI;AAAA,EAC3D,MAAM,SAAS,GACZ,MAAM,kEAAkE,EACxE,IAAI,OAAO,OAAO,MAAM,GAAG,SAAS;AAAA,EACvC,OAAO,OAAO,UAAU;AAAA;AAGnB,SAAS,gBAAgB,CAC9B,QACA,WACA,OACS;AAAA,EACT,MAAM,SAAS,GACZ,MAAM,gEAAgE,EACtE,IAAI,KAAK,UAAU,KAAK,GAAG,OAAO,MAAM,GAAG,SAAS;AAAA,EACvD,OAAO,OAAO,UAAU;AAAA;;;;;;;;;;;;;;;;;;ACnS1B;;;AC+BA,iCAAiC,CAAC,aAAa;AAAA,EAC7C,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQb;AAAA,GACA,EAAE;;;ADpCE,IAAM,sBAAsB,GAAG,QAAQ,OAAO,WAAW;AAyBhE,iCAAiC,CAAC,aAAa;AAAA,EAC7C,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYb;AAAA,GACA,EAAE;;;AExCE,IAAM,yBAAyB;AAC/B,IAAM,6BAA6B;AAyC1C,iCAAiC,CAAC,aAAa;AAAA,EAC7C,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASb;AAAA,GACA,EAAE;AAEL,SAAS,UAAU,CAAC,KAAkD;AAAA,EACpE,OAAO;AAAA,IACL,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,IACb,KAAK,OAAO,IAAI,GAAG;AAAA,IACnB,WAAW,OAAO,IAAI,UAAU;AAAA,IAChC,aAAa,OAAO,IAAI,YAAY;AAAA,EACtC;AAAA;AAGF,SAAS,cAAc,CAAC,KAAsB;AAAA,EAC5C,KAAK,OAAO,cAAc,GAAG,KAAK,OAAO;AAAA,IAAG,OAAO;AAAA,EACnD,IAAI;AAAA,IACF,QAAQ,KAAK,KAAK,CAAC;AAAA,IACnB,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,OAAQ,MAAgC,SAAS;AAAA;AAAA;AAI9C,SAAS,0BAA0B,CAAC,OAAqC;AAAA,EAC9E,OAAO,KAAK,IAAI,IAAI,MAAM,eAAe,0BAA0B,eAAe,MAAM,GAAG;AAAA;AAG7F,SAAS,6BAA6B,CAAC,MAAoB;AAAA,EACzD,MAAM,MAAM,GACT,MAAwC,qDAAqD,EAC7F,IAAI,IAAI;AAAA,EACX,KAAK;AAAA,IAAK;AAAA,EACV,MAAM,QAAQ,WAAW,GAAG;AAAA,EAC5B,IAAI,eAAe,MAAM,GAAG;AAAA,IAAG;AAAA,EAC/B,GAAG,MACD;AAAA,sEAEF,EAAE,IAAI,MAAM,MAAM,MAAM,SAAS,MAAM,KAAK,MAAM,WAAW;AAAA;AAGxD,SAAS,sBAAsB,CACpC,MACA,MAAM,KAAK,IAAI,GACf,UAAU,wBACkB;AAAA,EAC5B,MAAM,MAAM,GACT,MAAwC,qDAAqD,EAC7F,IAAI,IAAI;AAAA,EACX,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,MAAM,QAAQ,WAAW,GAAG;AAAA,EAC5B,OAAO,MAAM,MAAM,eAAe,UAAU,QAAQ;AAAA;AAI/C,SAAS,wBAAwB,CACtC,aAAa,IACb,MAAM,KAAK,IAAI,GACf,UAAU,wBACa;AAAA,EACvB,MAAM,OAAO,aACT,GACG,MACC,sEACF,EACC,IAAI,GAAG,aAAa,IACvB,GACG,MAAkC,oDAAoD,EACtF,IAAI;AAAA,EACX,OAAO,KAAK,IAAI,UAAU,EAAE,OAAO,CAAC,UAAU,MAAM,MAAM,eAAe,OAAO;AAAA;AAI3E,SAAS,8BAA8B,CAAC,aAAa,IAAY;AAAA,EACtE,MAAM,OAAO,aACT,GACG,MACC,wDACF,EACC,IAAI,GAAG,aAAa,IACvB,GAAG,MAAkC,sCAAsC,EAAE,IAAI;AAAA,EACrF,IAAI,UAAU;AAAA,EACd,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,QAAQ,WAAW,GAAG;AAAA,IAC5B,IAAI,eAAe,MAAM,GAAG;AAAA,MAAG;AAAA,IAC/B,MAAM,SAAS,GACZ,MACC;AAAA,0EAEF,EACC,IAAI,MAAM,MAAM,MAAM,SAAS,MAAM,KAAK,MAAM,WAAW;AAAA,IAC9D,WAAW,OAAO,OAAO,WAAW,CAAC;AAAA,EACvC;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,4BAA4B,CAC1C,MACA,SACA,MAAM,KAAK,IAAI,GACN;AAAA,EACT,MAAM,SAAS,GACZ,MACC;AAAA;AAAA,uCAGF,EACC,IAAI,KAAK,MAAM,OAAO;AAAA,EACzB,OAAO,OAAO,OAAO,WAAW,CAAC,IAAI;AAAA;AAGhC,SAAS,0BAA0B,CAAC,MAAc,SAA0B;AAAA,EACjF,MAAM,SAAS,GACZ,MAAM,oEAAoE,EAC1E,IAAI,MAAM,OAAO;AAAA,EACpB,OAAO,OAAO,OAAO,WAAW,CAAC,IAAI;AAAA;AAOhC,SAAS,0BAA0B,CACxC,MACA,UAA6C,CAAC,GACZ;AAAA,EAClC,MAAM,iBAAiB,KAAK,KAAK;AAAA,EACjC,KAAK;AAAA,IAAgB,MAAM,IAAI,MAAM,8CAA8C;AAAA,EACnF,8BAA8B,cAAc;AAAA,EAC5C,MAAM,UAAU,QAAQ,WAAW,GAAG,uBAAuB;AAAA,EAC7D,MAAM,MAAM,QAAQ,OAAO,QAAQ;AAAA,EACnC,MAAM,MAAM,QAAQ,OAAO,KAAK,IAAI;AAAA,EACpC,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,SAAS,GACZ,MACC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAQF,EACC,IAAI,gBAAgB,SAAS,KAAK,KAAK,KAAK,MAAM,OAAO;AAAA,EAC5D,IAAI,OAAO,OAAO,WAAW,CAAC,MAAM;AAAA,IAAG,OAAO;AAAA,EAE9C,IAAI,UAAU;AAAA,EACd,MAAM,cAAc,QAAQ,eAAe;AAAA,EAC3C,MAAM,QAAQ,YAAY,MAAM;AAAA,IAC9B,IAAI;AAAA,MAAS;AAAA,IACb,IAAI,6BAA6B,gBAAgB,OAAO;AAAA,MAAG;AAAA,IAC3D,UAAU;AAAA,IACV,cAAc,KAAK;AAAA,IACnB,QAAQ,SAAS;AAAA,KAChB,WAAW;AAAA,EACd,MAAM,QAAQ;AAAA,EAEd,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,aAAa;AAAA,IACb,IAAI,GAAG;AAAA,MACL,IAAI;AAAA,QAAS;AAAA,MACb,UAAU;AAAA,MACV,cAAc,KAAK;AAAA,MACnB,2BAA2B,gBAAgB,OAAO;AAAA;AAAA,EAEtD;AAAA;AAOF,eAAsB,0BAA0B,CAC9C,MACA,UAA6C,CAAC,GACH;AAAA,EAC3C;AAAA,IACE,SAAS,yBAAyB;AAAA,IAClC,UAAU;AAAA,OACP;AAAA,MACD;AAAA,EACJ,MAAM,WAAW,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,MAAM;AAAA,EAChD,MAAM,WAAW,KAAK,IAAI,GAAG,OAAO;AAAA,EACpC,OAAO,MAAM;AAAA,IACX,MAAM,QAAQ,2BAA2B,MAAM,cAAc;AAAA,IAC7D,IAAI;AAAA,MAAO,OAAO;AAAA,IAClB,MAAM,YAAY,WAAW,KAAK,IAAI;AAAA,IACtC,IAAI,aAAa;AAAA,MAAG,OAAO;AAAA,IAC3B,MAAM,IAAI,QAAc,CAAC,aAAY,WAAW,UAAS,KAAK,IAAI,UAAU,SAAS,CAAC,CAAC;AAAA,EACzF;AAAA;AAIF,eAAsB,kCAAkC,CACtD,MACA,UAAqD,CAAC,GAClB;AAAA,EACpC,QAAQ,eAAe,SAAS,iBAAiB;AAAA,EACjD,MAAM,QAAQ,MAAM,2BAA2B,MAAM,YAAY;AAAA,EACjE,IAAI;AAAA,IAAO,OAAO;AAAA,EAClB,MAAM,UAAU,uBAAuB,IAAI;AAAA,EAC3C,MAAM,IAAI,MAAM,GAAG,kCAAkC,UAAU,SAAS,QAAQ,SAAS,IAAI;AAAA;;;;;;;;;;;;;;ACrQ/F;AACA;AAAA,eACE;AAAA,eACA;AAAA,cACA;AAAA,iBACA;AAAA,kBACA;AAAA,cACA;AAAA,gBACA;AAAA,mBACA;AAAA;AAEF,oBAAS,kBAAS;AAGX,IAAM,qBAAqB,KAAK,KAAK;AAwC5C,SAAS,aAAa,CAAC,QAAkC;AAAA,EACvD,MAAM,YAAY,OAAO,MAAM;AAAA,EAC/B,MAAM,aACJ,sCAAsC,KAAK,SAAS,MAAM,UAAU,SAAS,IAAI,IAC7E,YACA,UAAU,WAAW,QAAQ,EAAE,OAAO,SAAS,EAAE,OAAO,KAAK;AAAA,EACnE,OAAO,MAAK,6BAA6B,GAAG,UAAU;AAAA;AAGxD,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB;AAE/B,SAAS,YAAY,CAAC,KAA0C;AAAA,EAC9D,OAAO,KAAK,UAAU,CAAC,IAAI,MAAM,IAAI,EAAE,CAAC;AAAA;AAG1C,SAAS,cAAc,CAAC,KAAqB;AAAA,EAC3C,MAAM,SAAS,WAAW,QAAQ,EAAE,OAAO,aAAa,GAAG,CAAC,EAAE,OAAO,KAAK;AAAA,EAC1E,OAAO,MAAK,cAAc,IAAI,MAAM,GAAG,GAAG,sBAAsB,gBAAgB;AAAA;AAGlF,SAAS,gBAAgB,CAAC,KAAqB;AAAA,EAC7C,MAAM,UAAU,OAAO,KAAK,aAAa,GAAG,GAAG,MAAM,EAAE,SAAS,WAAW;AAAA,EAC3E,OAAO,MAAK,cAAc,IAAI,MAAM,GAAG,GAAG,yBAAyB,iBAAiB;AAAA;AAGtF,SAAS,oBAAoB,CAAC,KAA4B;AAAA,EACxD,IACE,IAAI,KAAK,SAAS,GAAG,KACrB,IAAI,KAAK,SAAS,IAAI,KACtB,IAAI,GAAG,SAAS,GAAG,KACnB,IAAI,GAAG,SAAS,IAAI,KACpB,IAAI,KAAK,SAAS,MAAI,KACtB,IAAI,GAAG,SAAS,MAAI,GACpB;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,cAAc,IAAI,MAAM;AAAA,EACpC,MAAM,YAAY,MAAK,KAAK,GAAG,IAAI,UAAU,IAAI,YAAY;AAAA,EAC7D,OAAO,SAAQ,SAAS,MAAM,MAAM,YAAY;AAAA;AAGlD,SAAS,uBAAuB,CAAC,UAAuD;AAAA,EACtF,KAAK,SAAS,SAAS,UAAU;AAAA,IAAG,OAAO;AAAA,EAC3C,MAAM,MAAM,SAAS,MAAM,IAAI,WAAW,MAAM;AAAA,EAChD,IAAI,IAAI,WAAW,sBAAsB,GAAG;AAAA,IAC1C,IAAI;AAAA,MACF,MAAM,UAAU,KAAK,MACnB,OAAO,KAAK,IAAI,MAAM,uBAAuB,MAAM,GAAG,WAAW,EAAE,SAAS,MAAM,CACpF;AAAA,MACA,IACE,MAAM,QAAQ,OAAO,KACrB,QAAQ,WAAW,KACnB,QAAQ,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,GAChD;AAAA,QACA,OAAO,EAAE,MAAM,QAAQ,IAAI,IAAI,QAAQ,GAAG;AAAA,MAC5C;AAAA,MACA,MAAM;AAAA,EAIV;AAAA,EAGA,MAAM,MAAM,IAAI,QAAQ,KAAK;AAAA,EAC7B,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,OAAO,EAAE,MAAM,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,MAAM,MAAM,CAAC,EAAE;AAAA;AAG3D,SAAS,kBAAkB,CAAC,MAAc,UAA2C;AAAA,EACnF,IAAI;AAAA,IACF,MAAM,MAAM,cAAa,MAAM,MAAM,EAAE,KAAK;AAAA,IAC5C,KAAK;AAAA,MAAK,OAAO;AAAA,IACjB,KAAK,IAAI,WAAW,GAAG,GAAG;AAAA,MACxB,MAAM,KAAK,IAAI,KAAK,UAAS,IAAI,EAAE,OAAO,EAAE,YAAY;AAAA,MACxD,OAAO;AAAA,QACL,QAAQ,SAAS;AAAA,QACjB,MAAM,SAAS;AAAA,QACf,IAAI,SAAS;AAAA,QACb,WAAW;AAAA,QACX,OAAO;AAAA,QACP,WAAW;AAAA,QACX,WAAW;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,SAAS,KAAK,MAAM,GAAG;AAAA,IAC7B,KAAK,OAAO,cAAc,OAAO,SAAS,OAAO;AAAA,MAAI,OAAO;AAAA,IAC5D,IAAI,OAAO,WAAW,aAAa,OAAO,OAAO,MAAM,MAAM,OAAO,SAAS,MAAM;AAAA,MACjF,OAAO;AAAA,IACT,IAAI,SAAS,QAAQ,OAAO,SAAS,SAAS;AAAA,MAAM,OAAO;AAAA,IAC3D,IAAI,SAAS,MAAM,OAAO,OAAO,SAAS;AAAA,MAAI,OAAO;AAAA,IACrD,MAAM,MAAM,IAAI,KAAK,EAAE,YAAY;AAAA,IACnC,OAAO;AAAA,MAGL,QAAQ,SAAS;AAAA,MACjB,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,MACX,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,MAClB,OAAO,OAAO,SAAS;AAAA,MACvB,WAAW,OAAO,aAAa;AAAA,MAC/B,WAAW,OAAO,aAAa,OAAO,aAAa;AAAA,IACrD;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,OAAO,CAAC,QAAiC,MAAuB;AAAA,EACvE,MAAM,KAAK,SAAS,KAAK,MAAM,OAAO,aAAa,OAAO,SAAS,IAAI,OAAO;AAAA,EAC9E,IAAI,OAAO,SAAS,EAAE;AAAA,IAAG,OAAO,KAAK,IAAI,IAAI,KAAK;AAAA,EAClD,IAAI;AAAA,IACF,OAAO,KAAK,IAAI,IAAI,UAAS,IAAI,EAAE,UAAU;AAAA,IAC7C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,eAAe,CAAC,QAAgC;AAAA,EACvD,MAAM,OAAO,eAAe,MAAM;AAAA,EAClC,WAAU,cAAc,OAAO,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3D,eAAc,MAAM,GAAG,KAAK,UAAU,MAAM;AAAA,CAAK;AAAA;AAGnD,SAAS,uBAAuB,CAAC,QAAmC;AAAA,EAClE,MAAM,OAAO,eAAe,MAAM;AAAA,EAClC,WAAU,cAAc,OAAO,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC3D,IAAI,KAAoB;AAAA,EACxB,IAAI;AAAA,IACF,KAAK,UAAS,MAAM,IAAI;AAAA,IACxB,eAAc,IAAI,GAAG,KAAK,UAAU,MAAM;AAAA,CAAK;AAAA,IAC/C,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,IAAK,MAAgC,SAAS;AAAA,MAAU,OAAO;AAAA,IAC/D,MAAM;AAAA,YACN;AAAA,IACA,IAAI,OAAO;AAAA,MAAM,WAAU,EAAE;AAAA;AAAA;AAIjC,SAAS,cAAc,CAAC,KAAgE;AAAA,EACtF,MAAM,gBAAgB,eAAe,GAAG;AAAA,EACxC,MAAM,YAAY,mBAAmB,eAAe,GAAG;AAAA,EACvD,IAAI,aAAa,UAAU,SAAS,IAAI,QAAQ,UAAU,OAAO,IAAI,IAAI;AAAA,IACvE,OAAO,EAAE,MAAM,eAAe,QAAQ,UAAU;AAAA,EAClD;AAAA,EAEA,WAAW,qBAAqB,CAAC,iBAAiB,GAAG,GAAG,qBAAqB,GAAG,CAAC,GAAG;AAAA,IAClF,KAAK;AAAA,MAAmB;AAAA,IACxB,MAAM,SAAS,mBAAmB,mBAAmB,GAAG;AAAA,IACxD,KAAK,UAAU,OAAO,SAAS,IAAI,QAAQ,OAAO,OAAO,IAAI;AAAA,MAAI;AAAA,IAEjE,MAAM,WAAW,wBAAwB,MAAM;AAAA,IAC/C,MAAM,OAAO,WAAW,SAAS,mBAAmB,eAAe,GAAG;AAAA,IACtE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,OAAO,IAAI,IAAI;AAAA,MACxD,IAAI;AAAA,QACF,YAAW,iBAAiB;AAAA,QAC5B,MAAM;AAAA,MAGR,OAAO,EAAE,MAAM,eAAe,QAAQ,KAAK;AAAA,IAC7C;AAAA,IAIA,OAAO,EAAE,MAAM,mBAAmB,QAAQ,OAAO;AAAA,EACnD;AAAA,EAEA,OAAO;AAAA;AAGF,SAAS,gBAAgB,CAAC,MAQoC;AAAA,EACnE,MAAM,WAAW,eAAe,IAAI;AAAA,EACpC,IAAI,aAAa,QAAQ,SAAS,QAAQ,SAAS,IAAI,GAAG;AAAA,IACxD,OAAO,EAAE,IAAI,OAAO,UAAU,SAAS,QAAQ,OAAO,MAAM;AAAA,EAC9D;AAAA,EACA,IAAI,UAAU;AAAA,IACZ,IAAI;AAAA,MACF,YAAW,SAAS,IAAI;AAAA,MACxB,MAAM;AAAA,MACN,OAAO,EAAE,IAAI,OAAO,UAAU,SAAS,QAAQ,OAAO,KAAK;AAAA;AAAA,EAE/D;AAAA,EACA,MAAM,OAAO,eAAe,IAAI;AAAA,EAChC,MAAM,MAAM,IAAI,KAAK,EAAE,YAAY;AAAA,EACnC,MAAM,SAA2B;AAAA,IAC/B,QAAQ,KAAK;AAAA,IACb,MAAM,KAAK;AAAA,IACX,IAAI,KAAK;AAAA,IACT,WAAW,KAAK;AAAA,IAChB,WAAW,KAAK;AAAA,IAChB,OAAO;AAAA,IACP,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AAAA,EAEA,WAAU,cAAc,KAAK,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACzD,SAAS,UAAU,EAAG,UAAU,GAAG,WAAW;AAAA,IAC5C,IAAI,KAAoB;AAAA,IACxB,IAAI;AAAA,MACF,KAAK,UAAS,MAAM,IAAI;AAAA,MACxB,eAAc,IAAI,GAAG,KAAK,UAAU,MAAM;AAAA,CAAK;AAAA,MAC/C,OAAO,EAAE,IAAI,MAAM,OAAO;AAAA,MAC1B,OAAO,KAAK;AAAA,MACZ,IAAK,IAA8B,SAAS;AAAA,QAAU,MAAM;AAAA,MAC5D,MAAM,WAAW,mBAAmB,MAAM,IAAI;AAAA,MAC9C,KAAK,QAAQ,UAAU,IAAI;AAAA,QAAG,OAAO,EAAE,IAAI,OAAO,UAAU,OAAO,MAAM;AAAA,MACzE,IAAI;AAAA,QACF,YAAW,IAAI;AAAA,QACf,MAAM;AAAA,QACN,OAAO,EAAE,IAAI,OAAO,UAAU,OAAO,KAAK;AAAA;AAAA,cAE5C;AAAA,MACA,IAAI,OAAO;AAAA,QAAM,WAAU,EAAE;AAAA;AAAA,EAEjC;AAAA,EAEA,OAAO,EAAE,IAAI,OAAO,UAAU,mBAAmB,MAAM,IAAI,GAAG,OAAO,KAAK;AAAA;AAGrE,SAAS,mBAAmB,CACjC,MACyB;AAAA,EACzB,MAAM,UAAU,eAAe,IAAI;AAAA,EACnC,KAAK;AAAA,IAAS,OAAO;AAAA,EACrB,MAAM,SAAS,QAAQ;AAAA,EACvB,IAAI,KAAK,aAAa,OAAO,cAAc,KAAK;AAAA,IAAW,OAAO;AAAA,EAClE,MAAM,OAAO;AAAA,OACR;AAAA,IACH,OAAO,KAAK;AAAA,IACZ,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,EACpC;AAAA,EACA,gBAAgB,IAAI;AAAA,EACpB,IAAI,QAAQ,SAAS,eAAe,IAAI,GAAG;AAAA,IACzC,IAAI;AAAA,MACF,YAAW,QAAQ,IAAI;AAAA,MACvB,MAAM;AAAA,EAGV;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,eAAe,CAAC,MAA4B;AAAA,EAC1D,MAAM,UAAU,eAAe,IAAI;AAAA,EACnC,MAAM,OAAO,SAAS,QAAQ,eAAe,IAAI;AAAA,EACjD,MAAM,SAAS,SAAS,UAAU;AAAA,EAClC,IAAI,KAAK,aAAa,UAAU,OAAO,cAAc,KAAK;AAAA,IAAW,OAAO;AAAA,EAC5E,IAAI;AAAA,IACF,YAAW,IAAI;AAAA,IACf,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIJ,SAAS,qBAAqB,CAAC,MAK7B;AAAA,EACP,WAAW,UAAU,KAAK,WAAW,CAAC,GAAG;AAAA,IACvC,KAAK,OAAO;AAAA,MAAM;AAAA,IAClB,oBAAoB;AAAA,MAClB,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,WAAW,OAAO;AAAA,MAClB,OAAO,KAAK;AAAA,IACd,CAAC;AAAA,EACH;AAAA;AAGK,SAAS,sBAAsB,CAAC,MAI9B;AAAA,EACP,WAAW,UAAU,KAAK,WAAW,CAAC,GAAG;AAAA,IACvC,KAAK,OAAO;AAAA,MAAM;AAAA,IAClB,gBAAgB;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX,IAAI,OAAO;AAAA,MACX,WAAW,OAAO;AAAA,IACpB,CAAC;AAAA,EACH;AAAA;AAGK,SAAS,wBAAwB,CAAC,MAGlB;AAAA,EACrB,MAAM,MAAM,cAAc,KAAK,MAAM;AAAA,EACrC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QAAQ,aAAY,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA,EAGV,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,YAAY,OAAO;AAAA,IAC5B,MAAM,OAAO,SAAS,WAAW,mBAAmB;AAAA,IACpD,MAAM,SAAS,OAAO,EAAE,MAAM,KAAK,MAAM,IAAI,GAAG,IAAI,wBAAwB,QAAQ;AAAA,IACpF,KAAK;AAAA,MAAQ;AAAA,IACb,MAAM,OAAO,MAAK,KAAK,QAAQ;AAAA,IAC/B,MAAM,SAAS,mBAAmB,MAAM;AAAA,MACtC,QAAQ,KAAK;AAAA,MACb,MAAM,OAAO;AAAA,MACb,IAAI,OAAO;AAAA,IACb,CAAC;AAAA,IACD,KAAK,UAAU,OAAO,SAAS,KAAK;AAAA,MAAM;AAAA,IAC1C,IAAI,QAAQ,QAAQ,IAAI,GAAG;AAAA,MACzB,IAAI;AAAA,QACF,YAAW,IAAI;AAAA,QACf,MAAM;AAAA,MAGR;AAAA,IACF;AAAA,IACA,MAAM,YAAY,eAAe,MAAM;AAAA,IACvC,KAAK,aAAa,UAAU,OAAO,SAAS,KAAK;AAAA,MAAM;AAAA,IACvD,IAAI,SAAS,UAAU,MAAM;AAAA,MAC3B,IAAI;AAAA,QACF,YAAW,IAAI;AAAA,QACf,MAAM;AAAA,IAGV;AAAA,IACA,IAAI,QAAQ,UAAU,QAAQ,UAAU,IAAI,GAAG;AAAA,MAC7C,IAAI;AAAA,QACF,YAAW,UAAU,IAAI;AAAA,QACzB,MAAM;AAAA,MAGR;AAAA,IACF;AAAA,IACA,QAAQ,IAAI,aAAa,UAAU,MAAM,GAAG,UAAU,MAAM;AAAA,EAC9D;AAAA,EACA,OAAO,CAAC,GAAG,QAAQ,OAAO,CAAC;AAAA;AAItB,SAAS,yBAAyB,CAAC,MAG/B;AAAA,EACT,MAAM,MAAM,cAAc,KAAK,MAAM;AAAA,EACrC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QAAQ,aAAY,GAAG;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAGT,IAAI,UAAU;AAAA,EACd,WAAW,YAAY,OAAO;AAAA,IAC5B,MAAM,OAAO,MAAK,KAAK,QAAQ;AAAA,IAC/B,MAAM,SAAS,wBAAwB,QAAQ;AAAA,IAC/C,MAAM,SAAS,mBAAmB,MAAM;AAAA,MACtC,QAAQ,KAAK;AAAA,MACb,MAAM,QAAQ,QAAQ;AAAA,MACtB,IAAI,QAAQ,MAAM;AAAA,IACpB,CAAC;AAAA,IACD,MAAM,OAAO,QAAQ,QAAQ,QAAQ;AAAA,IACrC,MAAM,KAAK,QAAQ,MAAM,QAAQ;AAAA,IACjC,IAAI,SAAS,KAAK,aAAa,OAAO,KAAK;AAAA,MAAW;AAAA,IACtD,IAAI;AAAA,MACF,YAAW,IAAI;AAAA,MACf;AAAA,MACA,MAAM;AAAA,EAGV;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,uBAAuB,CAAC,OAAgC;AAAA,EACtE,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA;;AC3bN,IAAM,wBACX;AAGK,IAAM,oBAA+B;AAGrC,IAAM,MAAsB;;;;;;;;;;;;;;;ACfnC,uBAAS,0BAAY,4BAAW,6BAAc,yBAAY,4BAAU;AACpE,oBAAS,kBAAS;AAgBX,IAAM,qBAAqB,CAAC,WAAW,eAAe,WAAW;AAOxE,SAAS,gBAAgB,CAAC,UAA0B;AAAA,EAClD,MAAM,OAAO,iBAAiB,QAAQ;AAAA,EACtC,KAAK,QAAQ,SAAS,OAAO,SAAS,MAAM;AAAA,IAC1C,MAAM,IAAI,MAAM,qCAAqC,UAAU;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,YAAY,CAAC,MAAqD;AAAA,EAChF,OAAO,KAAK,SAAS,KAAK,KAAK,KAAK,WAAW;AAAA;AAG1C,SAAS,eAAe,CAAC,QAAyB,UAA0B;AAAA,EAEjF,OAAO,MAAK,sBAAsB,GAAG,SAAS,GAAG,iBAAiB,QAAQ,QAAQ;AAAA;AAG7E,SAAS,SAAS,CAAC,QAAyB,UAAgC;AAAA,EACjF,MAAM,OAAO,gBAAgB,QAAQ,QAAQ;AAAA,EAC7C,KAAK,YAAW,IAAI;AAAA,IAAG,OAAO,CAAC;AAAA,EAC/B,IAAI;AAAA,IACF,MAAM,SAAS,KAAK,MAAM,cAAa,MAAM,OAAO,CAAC;AAAA,IACrD,OAAO,MAAM,QAAQ,QAAQ,KAAK,IAAI,OAAO,QAAQ,CAAC;AAAA,IACtD,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,kCAAkC;AAAA,IAChE,OAAO,CAAC;AAAA;AAAA;AAIL,SAAS,UAAU,CAAC,QAAyB,UAAkB,OAA2B;AAAA,EAC/F,MAAM,OAAO,gBAAgB,QAAQ,QAAQ;AAAA,EAC7C,WAAU,SAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC5C,MAAM,UAAyB,EAAE,SAAS,GAAG,MAAM;AAAA,EACnD,MAAM,MAAM,GAAG,QAAQ,QAAQ;AAAA,EAC/B,eAAc,KAAK,KAAK,UAAU,SAAS,MAAM,CAAC,GAAG,OAAO;AAAA,EAC5D,YAAW,KAAK,IAAI;AAAA;AAGf,SAAS,eAAe,CAAC,QAAyB,UAAiC;AAAA,EACxF,IAAI;AAAA,IACF,OAAO,UAAS,gBAAgB,QAAQ,QAAQ,GAAG,EAAE,QAAQ,KAAK,CAAC,EAAE;AAAA,IACrE,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAoBX,SAAS,UAAU,CAAC,OAA6B;AAAA,EAC/C,IAAI,MAAM;AAAA,EACV,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,IAAI,OAAO,KAAK,EAAE;AAAA,IACxB,IAAI,OAAO,UAAU,CAAC,KAAK,IAAI;AAAA,MAAK,MAAM;AAAA,EAC5C;AAAA,EACA,OAAO,MAAM;AAAA;AAGR,SAAS,WAAW,CACzB,OACA,QACgD;AAAA,EAChD,MAAM,MAAM,CAAC,GAAG,KAAK;AAAA,EACrB,MAAM,UAAwB,CAAC;AAAA,EAC/B,IAAI,KAAK,WAAW,GAAG;AAAA,EACvB,WAAW,SAAS,QAAQ;AAAA,IAC1B,MAAM,OAAmB;AAAA,MACvB,IAAI,OAAO,IAAI;AAAA,MACf,SAAS,MAAM;AAAA,MACf,QAAQ;AAAA,SACJ,MAAM,aAAa,MAAM,UAAU,SAAS,IAAI,EAAE,WAAW,MAAM,UAAU,IAAI,CAAC;AAAA,SAClF,MAAM,aAAa,EAAE,YAAY,MAAM,WAAW,IAAI,CAAC;AAAA,SACvD,MAAM,QAAQ,EAAE,OAAO,MAAM,MAAM,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,KAAK,IAAI;AAAA,IACb,QAAQ,KAAK,IAAI;AAAA,EACnB;AAAA,EACA,OAAO,EAAE,OAAO,KAAK,QAAQ;AAAA;AAGxB,SAAS,WAAW,CACzB,OACA,SAC4C;AAAA,EAC5C,MAAM,MAAM,MAAM,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AAAA,EAC7C,MAAM,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;AAAA,EACvD,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,UAAU,SAAS;AAAA,IAC5B,MAAM,OAAO,KAAK,IAAI,OAAO,EAAE;AAAA,IAC/B,KAAK,MAAM;AAAA,MACT,QAAQ,KAAK,OAAO,EAAE;AAAA,MACtB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,WAAW;AAAA,MAAW,KAAK,SAAS,OAAO;AAAA,IACtD,IAAI,OAAO,YAAY;AAAA,MAAW,KAAK,UAAU,OAAO;AAAA,IACxD,IAAI,OAAO,eAAe,WAAW;AAAA,MACnC,IAAI,OAAO;AAAA,QAAY,KAAK,aAAa,OAAO;AAAA,MAC3C;AAAA,eAAO,KAAK;AAAA,IACnB;AAAA,IACA,IAAI,OAAO,UAAU,WAAW;AAAA,MAC9B,IAAI,OAAO;AAAA,QAAO,KAAK,QAAQ,OAAO;AAAA,MACjC;AAAA,eAAO,KAAK;AAAA,IACnB;AAAA,IACA,IAAI,OAAO,cAAc,WAAW;AAAA,MAClC,IAAI,OAAO,UAAU,SAAS;AAAA,QAAG,KAAK,YAAY,OAAO;AAAA,MACpD;AAAA,eAAO,KAAK;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO,EAAE,OAAO,KAAK,QAAQ;AAAA;AAGxB,SAAS,WAAW,CACzB,OACA,MAC0C;AAAA,EAC1C,IAAI,KAAK;AAAA,IAAK,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,MAAM,OAAO;AAAA,EACxD,MAAM,MAAM,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;AAAA,EAClC,MAAM,OAAO,MAAM,OAAO,CAAC,UAAU,IAAI,IAAI,KAAK,EAAE,CAAC;AAAA,EACrD,OAAO,EAAE,OAAO,MAAM,SAAS,MAAM,SAAS,KAAK,OAAO;AAAA;AAGrD,SAAS,cAAc,CAAC,OAA6B;AAAA,EAC1D,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO;AAAA,EAC/B,MAAM,OAAO,EAAE,SAAS,OAAO,aAAa,QAAQ,WAAW,MAAM;AAAA,EACrE,MAAM,QAAQ,MAAM,IAAI,CAAC,SAAS;AAAA,IAChC,MAAM,OACJ,KAAK,aAAa,KAAK,UAAU,SAAS,IACtC,iBAAiB,KAAK,UAAU,KAAK,KAAK,OAC1C;AAAA,IACN,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,UAAU;AAAA,IAC/C,OAAO,GAAG,KAAK,KAAK,YAAY,KAAK,MAAM,KAAK,UAAU,OAAO;AAAA,GAClE;AAAA,EACD,MAAM,OAAO,MAAM,OAAO,CAAC,SAAS,KAAK,WAAW,WAAW,EAAE;AAAA,EACjE,OAAO,CAAC,UAAU,QAAQ,MAAM,wBAAa,GAAG,KAAK,EAAE,KAAK;AAAA,CAAI;AAAA;;;;;;;;;;AC1KlE,uBAAS;AACT,sBAAS;AACT,iBAAS;AAiDT,SAAS,WAAW,GAAW;AAAA,EAC7B,OAAO;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,IACd,0BAA0B;AAAA,IAC1B,sBAAsB;AAAA,IACtB,SAAS;AAAA,IACT,kBAAkB;AAAA,EACpB;AAAA;AAGK,SAAS,gBAAgB,CAAC,QAAiC;AAAA,EAChE,MAAM,YAAY,OAAO,MAAM;AAAA,EAG/B,OAAO,sCAAsC,KAAK,SAAS,MAAM,UAAU,SAAS,IAAI,IACpF,YACA,UAAU,YAAW,QAAQ,EAAE,OAAO,SAAS,EAAE,OAAO,KAAK;AAAA;AAGnE,SAAS,WAAW,CAAC,QAAiC;AAAA,EACpD,MAAM,SAAS,iBAAiB,MAAM;AAAA,EACtC,MAAM,SAAS,qBAAqB;AAAA,EACpC,WAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAAA,EACrC,OAAO,MAAK,QAAQ,iBAAiB,cAAc;AAAA;AAGrD,SAAS,WAAW,CAAC,QAAoC;AAAA,EACvD,IAAI;AAAA,IACF,OAAO,eAAe,YAAY,MAAM,CAAC,EAAE,QAAQ,CAAC,SAAS;AAAA,MAC3D,IAAI;AAAA,QACF,OAAO,CAAC,KAAK,MAAM,IAAI,CAAY;AAAA,QACnC,MAAM;AAAA,QACN,OAAO,CAAC;AAAA;AAAA,KAEX;AAAA,IACD,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA;AAIL,SAAS,QAAQ,CACtB,GAQQ;AAAA,EACR,OAAO,EAAE;AAAA;AAUX,IAAM,eAA4C;AAAA,EAChD,qBAAqB,EAAE,OAAO,GAAG,WAAW,KAAK,QAAQ,GAAG;AAAA,EAC5D,uBAAuB,EAAE,OAAO,KAAK,WAAW,MAAM,QAAQ,GAAG;AAAA,EACjE,sBAAsB,EAAE,OAAO,GAAG,WAAW,KAAK,QAAQ,EAAE;AAAA,EAC5D,gBAAgB,EAAE,OAAO,IAAI,YAAY,MAAM,WAAW,GAAG,QAAQ,GAAG;AAAA,EACxE,eAAe,EAAE,OAAO,GAAG,YAAY,MAAM,WAAW,KAAK,QAAQ,GAAG;AAAA,EACxE,iBAAiB,EAAE,OAAO,GAAG,YAAY,KAAK,WAAW,KAAK,QAAQ,GAAG;AAAA,EACzE,mBAAmB,EAAE,OAAO,GAAG,WAAW,KAAK,QAAQ,GAAG;AAAA,EAC1D,0BAA0B,EAAE,OAAO,MAAM,WAAW,MAAM,QAAQ,EAAE;AAAA,EACpE,wBAAwB,EAAE,OAAO,OAAO,WAAW,UAAU,QAAQ,KAAK;AAAA,EAC1E,0BAA0B,EAAE,OAAO,MAAM,WAAW,QAAQ,QAAQ,KAAK;AAC3E;AAEA,SAAS,iBAAiB,CACxB,OACA,OACA,OAIQ;AAAA,EACR,MAAM,SAAS,aAAa,GAAG,SAAS;AAAA,EACxC,KAAK;AAAA,IAAQ,OAAO;AAAA,EACpB,QACG,MAAM,cAAc,OAAO,QAC1B,MAAM,eAAe,OAAO,UAC3B,UAAU,WACP,MAAM,4BAA4B,OAAO,cAAc,OAAO,SAC9D,KACJ,MAAM,uBAAuB,OAAO,aACtC;AAAA;AAIJ,SAAS,aAAa,CAAC,OAAsC;AAAA,EAC3D,KAAK,SAAS,OAAO,UAAU;AAAA,IAAU,OAAO;AAAA,EAChD,MAAM,SAAS;AAAA,EACf,OACE,OAAO,kBAAkB,KACzB,OAAO,OAAO,cAAc,YAC5B,OAAO,OAAO,YAAY,YAC1B,OAAO,OAAO,YAAY,YAC1B,OAAO,OAAO,UAAU,YACxB,OAAO,OAAO,UAAU,YACxB,OAAO,OAAO,gBAAgB,YAC9B,OAAO,OAAO,iBAAiB,YAC/B,OAAO,OAAO,6BAA6B,YAC3C,OAAO,OAAO,yBAAyB,YACvC,OAAO,OAAO,qBAAqB;AAAA;AAKhC,SAAS,WAAW,CACzB,QACA,SACA,OACA,SAMA;AAAA,EACA,MAAM,uBAAuB,MAAM,wBAAwB;AAAA,EAG3D,MAAM,cACJ,QAAQ,UAAU,WACd,MAAM,cACN,KAAK,IAAI,GAAG,MAAM,cAAc,oBAAoB;AAAA,EAC1D,MAAM,aAAa;AAAA,IACjB;AAAA,IACA,cAAc,MAAM;AAAA,IACpB,0BAA0B,MAAM,4BAA4B;AAAA,IAC5D;AAAA,EACF;AAAA,EACA,MAAM,SAAsB;AAAA,IAC1B,eAAe;AAAA,IACf,WAAW,IAAI,KAAK,EAAE,YAAY;AAAA,IAClC;AAAA,IACA,SAAS,QAAQ;AAAA,OACb,QAAQ,oBAAoB,EAAE,mBAAmB,QAAQ,kBAAkB,IAAI,CAAC;AAAA,IACpF,OAAO,QAAQ;AAAA,IACf,OAAO,QAAQ;AAAA,OACZ;AAAA,OACC,MAAM,kBAAkB,YAAY,EAAE,eAAe,MAAM,cAAc,IAAI,CAAC;AAAA,OAC9E,MAAM,kBAAkB,YAAY,EAAE,eAAe,MAAM,cAAc,IAAI,CAAC;AAAA,IAClF,kBAAkB,MAAM,WAAW,kBAAkB,QAAQ,OAAO,QAAQ,OAAO,UAAU;AAAA,EAC/F;AAAA,EACA,IAAI;AAAA,IACF,iBAAiB,YAAY,MAAM,GAAG,MAAM;AAAA,IAC5C,OAAO,GAAG;AAAA,IACV,OAAO,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,+BAA+B;AAAA;AAAA;AAI5D,SAAS,QAAQ,CACtB,QACA,MACA,IAQA;AAAA,EACA,MAAM,UAAU,YAAY,MAAM;AAAA,EAElC,MAAM,SAAS,OAAO,IAAI,KAAK,IAAI,EAAE,QAAQ,IAAI;AAAA,EACjD,MAAM,OAAO,KAAK,IAAI,KAAK,EAAE,EAAE,QAAQ,IAAI;AAAA,EAE3C,IAAK,QAAQ,OAAO,MAAM,MAAM,KAAO,MAAM,OAAO,MAAM,IAAI,GAAI;AAAA,IAChE,OAAO,KAAK,EAAE,MAAM,GAAG,GAAG,kDAAkD;AAAA,IAC5E,OAAO;AAAA,MACL,OAAO,YAAY;AAAA,MACnB,QAAQ,CAAC;AAAA,MACT,WAAW,CAAC;AAAA,MACZ,iBAAiB,CAAC;AAAA,MAClB,sBAAsB;AAAA,MACtB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,MAAM,QAAQ,YAAY;AAAA,EAC1B,MAAM,SAAiC,CAAC;AAAA,EACxC,MAAM,YAAoC,CAAC;AAAA,EAC3C,MAAM,kBAAkB,IAAI;AAAA,EAC5B,IAAI,uBAAuB;AAAA,EAE3B,WAAW,OAAO,SAAS;AAAA,IACzB,KAAK,cAAc,GAAG,GAAG;AAAA,MACvB,wBAAwB;AAAA,MACxB;AAAA,IACF;AAAA,IACA,MAAM,IAAI;AAAA,IACV,MAAM,KAAK,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ;AAAA,IACzC,IAAI,KAAK,UAAU,KAAK;AAAA,MAAM;AAAA,IAE9B,MAAM,UAAU,EAAE,UAAU,MAAM,GAAG,EAAE;AAAA,IAEvC,KAAK,OAAO;AAAA,MAAU,OAAO,WAAW,YAAY;AAAA,IACpD,KAAK,UAAU,EAAE;AAAA,MAAU,UAAU,EAAE,WAAW,YAAY;AAAA,IAE9D,WAAW,UAAU,CAAC,OAAO,OAAO,UAAU,UAAU,EAAE,QAAQ,GAAG;AAAA,MACnE,OAAO,eAAe,EAAE;AAAA,MACxB,OAAO,gBAAgB,EAAE;AAAA,MACzB,OAAO,4BAA4B,EAAE;AAAA,MACrC,OAAO,wBAAwB,EAAE;AAAA,MACjC,OAAO,WAAW;AAAA,MAClB,OAAO,oBAAoB,EAAE;AAAA,IAC/B;AAAA,IAEA,IAAI,EAAE,kBAAkB,aAAa,EAAE,kBAAkB,aAAa,EAAE,gBAAgB,GAAG;AAAA,MACzF,gBAAgB,IAAI,EAAE,SAAS;AAAA,QAC7B,WAAW,EAAE;AAAA,QACb,SAAS,EAAE;AAAA,QACX,YAAY,EAAE;AAAA,WACV,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,IAAI,CAAC;AAAA,QACxE,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,QACT,eAAe,EAAE;AAAA,QACjB,eAAe,EAAE;AAAA,MACnB,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB,CAAC,GAAG,gBAAgB,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,MACtD,EAAE,UAAU,cAAc,EAAE,SAAS,CACvC;AAAA,IACA;AAAA,IACA,kBAAkB,SAAS,KAAK;AAAA,EAClC;AAAA;AAIK,SAAS,aAAa,CAAC,QAAyB,SAAoC;AAAA,EACzF,MAAM,QAAQ,YAAY;AAAA,EAC1B,IAAI;AAAA,EAEJ,WAAW,OAAO,YAAY,MAAM,GAAG;AAAA,IACrC,KAAK,cAAc,GAAG,KAAK,IAAI,YAAY;AAAA,MAAS;AAAA,IAEpD,MAAM,eAAe,IAAI;AAAA,IACzB,MAAM,gBAAgB,IAAI;AAAA,IAC1B,MAAM,4BAA4B,IAAI;AAAA,IACtC,MAAM,wBAAwB,IAAI;AAAA,IAClC,MAAM,WAAW;AAAA,IACjB,MAAM,oBAAoB,IAAI;AAAA,IAE9B,IACE,IAAI,kBAAkB,aACtB,IAAI,kBAAkB,aACtB,IAAI,gBAAgB,OAClB,kBAAkB,IAAI,YAAY,eAAe,YACnD;AAAA,MACA,iBAAiB;AAAA,QACf,WAAW,IAAI;AAAA,QACf,SAAS,IAAI;AAAA,QACb,YAAY,IAAI;AAAA,WACZ,IAAI,oBAAoB,EAAE,mBAAmB,IAAI,kBAAkB,IAAI,CAAC;AAAA,QAC5E,OAAO,IAAI;AAAA,QACX,OAAO,IAAI;AAAA,QACX,eAAe,IAAI;AAAA,QACnB,eAAe,IAAI;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,EAAE,YAAY,UAAW,iBAAiB,EAAE,eAAe,IAAI,CAAC,EAAG;AAAA;;;;;;;ACvU5E,sBAAS,6BAAW;AACpB,iBAAS;;;ACkCF,SAAS,2BAA2B,CAAC,MAA+C;AAAA,EACzF,IAAI,sBAAsB;AAAA,EAC1B,IAAI,YAAY;AAAA,EAEhB,WAAW,OAAO,MAAM;AAAA,IACtB,MAAM,YAAY,IAAI,cAAc,QAAQ,QAAQ,IAAI,UAAU;AAAA,IAClE,MAAM,iBAAiB,IAAI,QAAQ,QAAQ,IAAI,SAAS;AAAA,IACxD,KAAK,aAAa,IAAI,cAAc,YAAY,gBAAgB;AAAA,MAC9D,sBAAsB;AAAA,MACtB;AAAA,IACF;AAAA,IACA,IAAI,aAAa,kBAAkB,qBAAqB;AAAA,MACtD;AAAA,MACA,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;;;;;ACZT,SAAS,cAAc,CAAC,OAA2C;AAAA,EACjE,KAAK;AAAA,IAAO;AAAA,EACZ,IAAI;AAAA,IACF,OAAO,KAAK,MAAM,KAAK;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,SAAS,cAAc,CAAC,KAA+C;AAAA,EACrE,IAAI,IAAI,cAAc;AAAA,IAAU,OAAO;AAAA,EACvC,IAAI,IAAI,cAAc,QAAQ,IAAI;AAAA,IAAY,OAAO;AAAA,EACrD,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,KAA6B,MAAgC;AAAA,EACtF,IAAI,SAAS;AAAA,IAAa,OAAO,IAAI,aAAa,aAAa,IAAI,eAAe;AAAA,EAClF,IAAI,SAAS;AAAA,IAAU,OAAO;AAAA,EAC9B,OAAO,QAAQ,IAAI;AAAA;AAGrB,SAAS,OAAO,CAAC,MAAsB;AAAA,EACrC,MAAM,UAAU,KAAK,QAAQ,QAAQ,GAAG,EAAE,KAAK;AAAA,EAC/C,OAAO,QAAQ,SAAS,OAAO,GAAG,QAAQ,MAAM,GAAG,IAAI,SAAS;AAAA;AAG3D,SAAS,kCAAkC,CAChD,KACA,YACA,OAC8B;AAAA,EAC9B,MAAM,OAAO,eAAe,GAAG;AAAA,EAC/B,MAAM,UAAU,kBAAkB,KAAK,IAAI;AAAA,EAC3C,MAAM,cAAc,eAAe,IAAI,WAAW;AAAA,EAClD,MAAM,QAAQ,eAAe,IAAI,KAAK;AAAA,EAEtC,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,SAAS,IAAI;AAAA,IACb;AAAA,IACA,IAAI,IAAI;AAAA,IACR,WAAW,IAAI;AAAA,OACX,IAAI,UAAU,YAAY,EAAE,OAAO,IAAI,MAAM,IAAI,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,IACA,MAAM,IAAI,IAAI,eAAe,YAAY,QAAQ,IAAI,IAAI;AAAA,IACzD,MAAM,IAAI;AAAA,IACV,UAAU,IAAI;AAAA,OACV,IAAI,YAAY,EAAE,UAAU,IAAI,UAAU,IAAI,CAAC;AAAA,OAC/C,IAAI,WAAW,EAAE,SAAS,IAAI,SAAS,IAAI,CAAC;AAAA,OAC5C,IAAI,aAAa,EAAE,WAAW,IAAI,WAAW,IAAI,CAAC;AAAA,OAClD,IAAI,QAAQ,EAAE,OAAO,IAAI,MAAM,IAAI,CAAC;AAAA,OACpC,gBAAgB,YAAY,EAAE,YAAY,IAAI,CAAC;AAAA,OAC/C,UAAU,YAAY,EAAE,MAAM,IAAI,CAAC;AAAA,IACvC,SAAS;AAAA,EACX;AAAA;;;;;;;;;AChGF,uBAAS,4BAAY,0BAAa;AAClC,qBAAS,sBAAU,kBAAS;AAIrB,SAAS,UAAU,CAAC,SAAiB,eAAe,2BAA2B,GAAW;AAAA,EAC/F,OAAO,MAAK,cAAc,MAAM;AAAA;AAO3B,SAAS,gBAAgB,CAAC,eAAe,2BAA2B,GAAW;AAAA,EACpF,OAAO,iBAAiB,2BAA2B,IAC/C,4BAA4B,IAC5B,MAAK,cAAc,MAAM;AAAA;AAI/B,SAAS,qBAAqB,CAAC,SAAiB,WAAkC;AAAA,EAChF,MAAM,eAAe,MAAK,SAAS,WAAW;AAAA,EAC9C,KAAK,YAAW,YAAY;AAAA,IAAG,OAAO;AAAA,EACtC,MAAM,QAAQ,aAAY,YAAY,EACnC,OACC,CAAC,MACC,EAAE,SAAS,KAAK,KAChB,EAAE,MAAM,IAAI,OAAO,yBAAyB,8BAA8B,CAAC,MAC1E,EAAE,SAAS,gBAAgB,CAChC,EACC,KAAK,CAAC,MAAM,UAAU;AAAA,IACrB,MAAM,aACJ,UAAS,MAAK,cAAc,KAAK,CAAC,EAAE,UAAU,UAAS,MAAK,cAAc,IAAI,CAAC,EAAE;AAAA,IACnF,OAAO,cAAc,MAAM,cAAc,MAAM,WAAW,EAAE,SAAS,KAAK,CAAC;AAAA,GAC5E;AAAA,EACH,OAAO,MAAM,SAAS,IAAI,MAAK,cAAc,MAAM,EAAE,IAAI;AAAA;AAMpD,SAAS,uBAAuB,CACrC,SACA,WACA,YACA,eAAe,2BAA2B,GAM1C;AAAA,EACA,MAAM,UAAU,iBAAiB,YAAY;AAAA,EAE7C,MAAM,eAAe,CAAC,SAAiB;AAAA,IACrC,MAAM,OAAO,kBAAkB,MAAM,IAAI;AAAA,IACzC,MAAM,QAAQ,MAAK,SAAS,SAAS,GAAG,SAAS;AAAA,IACjD,MAAM,gBAAgB,sBAAsB,SAAS,IAAI;AAAA,IACzD,OAAO,EAAE,OAAO,cAAc;AAAA;AAAA,EAGhC,MAAM,aAAa,MAAK,SAAS,SAAS;AAAA,EAC1C,MAAM,mBAAmB,CAAC,SAAiB;AAAA,IACzC,MAAM,OAAO,kBAAkB,IAAI;AAAA,IACnC,OACE,YAAW,UAAU,KACrB,aAAY,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,QAAQ,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;AAAA;AAAA,EAIxF,MAAM,cAAc,cAAc;AAAA,EAClC,MAAM,aACJ,iBAAiB,WAAW,MAAM,aAAa,iBAAiB,SAAS,IAAI;AAAA,EAC/E,MAAM,SAAS,aAAa,WAAW;AAAA,EACvC,IAAI,YAAW,OAAO,KAAK,GAAG;AAAA,IAC5B,OAAO;AAAA,MACL,WAAW,SAAQ,OAAO,KAAK;AAAA,MAC/B,aAAa,CAAC,UAAS,OAAO,KAAK,CAAC;AAAA,SAChC,OAAO,gBAAgB,EAAE,mBAAmB,OAAO,cAAc,IAAI,CAAC;AAAA,SACtE,aAAa,EAAE,YAAY,KAAK,IAAI,CAAC;AAAA,IAC3C;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL,WAAW,MAAK,SAAS,OAAO;AAAA,IAChC,aAAa,CAAC;AAAA,OACV,OAAO,gBAAgB,EAAE,mBAAmB,OAAO,cAAc,IAAI,CAAC;AAAA,OACtE,aAAa,EAAE,YAAY,KAAK,IAAI,CAAC;AAAA,EAC3C;AAAA;;;AH5CK,SAAS,oBAAoB,CAClC,SACA,YACA,UAA+B,CAAC,GACL;AAAA,EAC3B,MAAM,OACJ,QAAQ,eAAe,YACnB,8BAA8B,SAAS,QAAQ,UAAU,IACzD,uBAAuB,OAAO;AAAA,EACpC,IAAI,KAAK,WAAW;AAAA,IAAG,OAAO;AAAA,EAE9B,MAAM,YAAY,kBAAkB,YAAY,IAAI;AAAA,EACpD,MAAM,aAAa,MAAK,iBAAiB,GAAG,SAAS;AAAA,EACrD,WAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,EAIzC,MAAM,OAAO,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,EACjD,MAAM,eAAe,QAAQ,UAAU,QAAQ,WAAW,WAAW,IAAI,QAAQ,WAAW;AAAA,EAC5F,IAAI;AAAA,EACJ,IAAI,UAAU;AAAA,EACd,MAAM,YAAY,KAAK,OAAO,CAAC,KAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,SAAS,CAAC,GAAG,CAAC;AAAA,EAC5E,MAAM,OAAO,GAAG,KACb,IAAI,CAAC,GAAG,UAAU,KAAK,UAAU,mCAAmC,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,EAC9F,KAAK;AAAA,CAAI;AAAA;AAAA,EACZ,IAAI;AAAA,EACJ,OAAO,MAAM;AAAA,IACX,WAAW,GAAG,aAAa,OAAO,eAAe,YAAY,IAAI,KAAK,IAAI;AAAA,IAC1E,OAAO,MAAK,YAAY,QAAQ;AAAA,IAChC,IAAI;AAAA,MACF,eAAc,MAAM,MAAM,EAAE,MAAM,KAAK,CAAC;AAAA,MACxC;AAAA,MACA,OAAO,KAAK;AAAA,MACZ,IAAK,IAA8B,SAAS;AAAA,QAAU,MAAM;AAAA,MAC5D;AAAA;AAAA,EAEJ;AAAA,EAEA,MAAM,gBAAgB,4BAA4B,IAAI;AAAA,EACtD,OAAO,KACL,EAAE,SAAS,YAAY,SAAS,MAAM,cAAc,KAAK,QAAQ,eAAe,UAAU,GAC1F,+CACF;AAAA,EACA,OAAO,EAAE,MAAM,cAAc,KAAK,QAAQ,eAAe,UAAU;AAAA;AAGrE,SAAS,SAAS,CAAC,OAA6B;AAAA,EAC9C,IAAI,aAAa,SAAS,OAAO,MAAM,YAAY;AAAA,IAAU,OAAO,MAAM;AAAA,EAC1E,IAAI,MAAM,SAAS;AAAA,IAAW,OAAO,cAAc,MAAM;AAAA,EACzD,IAAI,MAAM,SAAS,YAAY;AAAA,IAC7B,OAAO,GAAG,MAAM,QAAQ,KAAK,UAAU,MAAM,KAAK;AAAA,EACpD;AAAA,EACA,IAAI,MAAM,SAAS;AAAA,IAAiB,OAAO,GAAG,MAAM,iBAAa,MAAM;AAAA,EACvE,IAAI,MAAM,SAAS;AAAA,IAAoB,OAAO,MAAM;AAAA,EACpD,IAAI,MAAM,SAAS;AAAA,IAAQ,OAAO,GAAG,MAAM,SAAS,MAAM;AAAA,EAC1D,OAAO,KAAK,UAAU,KAAK;AAAA;AAG7B,SAAS,YAAY,CAAC,OAAqB,OAAuB;AAAA,EAChE,IAAI,MAAM,SAAS;AAAA,IAAgB,OAAO;AAAA,EAC1C,IAAI,MAAM,SAAS,cAAc,MAAM,SAAS;AAAA,IAAe,OAAO,QAAQ;AAAA,EAC9E,IAAI,MAAM,SAAS;AAAA,IAAa,OAAO,aAAa;AAAA,EACpD,IAAI,MAAM,SAAS;AAAA,IAAW,OAAO,WAAW;AAAA,EAChD,OAAO,aAAa;AAAA;AAQf,SAAS,yBAAyB,CACvC,SACA,YACA,QACA,UAA+C,CAAC,GACT;AAAA,EACvC,MAAM,UAAU,oBAAoB,QAAQ,UAAU;AAAA,EACtD,IAAI,QAAQ,WAAW;AAAA,IAAG,OAAO;AAAA,EAEjC,MAAM,aAAa,MAAK,iBAAiB,GAAG,SAAS;AAAA,EACrD,WAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,EACzC,MAAM,YAAY,kBAAkB,YAAY,IAAI;AAAA,EACpD,MAAM,OAAO,IAAI,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAAA,EACjD,MAAM,eAAe,QAAQ,UAAU,QAAQ,WAAW,WAAW,IAAI,QAAQ,WAAW;AAAA,EAC5F,MAAM,OAAO,GAAG,QACb,IAAI,CAAC,OAAO,UAAU;AAAA,IACrB,MAAM,OAAO,UAAU,MAAM,KAAK;AAAA,IAClC,MAAM,UAAU,aAAa,MAAM,OAAO,MAAM,KAAK;AAAA,IACrD,OAAO,KAAK,UAAU;AAAA,MACpB,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,MACA;AAAA,MACA,WAAW,MAAM;AAAA,MACjB,MAAM,MAAM,MAAM,SAAS,iBAAiB,SAAS;AAAA,MACrD;AAAA,MACA,MAAM,IAAI,MAAM,OAAO,YAAY,KAAK,QAAQ,QAAQ,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;AAAA,MACjF;AAAA,MACA,OAAO,MAAM;AAAA,MACb,WAAW,MAAM,MAAM;AAAA,MACvB,OAAO,MAAM;AAAA,IACf,CAAC;AAAA,GACF,EACA,KAAK;AAAA,CAAI;AAAA;AAAA,EAEZ,IAAI,UAAU;AAAA,EACd,OAAO,MAAM;AAAA,IACX,MAAM,SAAS,YAAY,IAAI,KAAK,IAAI;AAAA,IACxC,MAAM,OAAO,MAAK,YAAY,GAAG,aAAa,OAAO,sBAAsB,cAAc;AAAA,IACzF,IAAI;AAAA,MACF,eAAc,MAAM,MAAM,EAAE,MAAM,KAAK,CAAC;AAAA,MACxC,OAAO,KACL,EAAE,SAAS,YAAY,SAAS,MAAM,YAAY,QAAQ,OAAO,GACjE,6DACF;AAAA,MACA,OAAO,EAAE,MAAM,YAAY,QAAQ,OAAO;AAAA,MAC1C,OAAO,OAAO;AAAA,MACd,IAAK,MAAgC,SAAS;AAAA,QAAU,MAAM;AAAA,MAC9D;AAAA;AAAA,EAEJ;AAAA;;;;;;;;;;AIrKF;AAIA,iCAAiC,CAAC,aAAa;AAAA,EAC7C,SAAS,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAgBb;AAAA,GACA,EAAE;AAEL,IAAM,uBAAuB,KAAK,KAAK;AA0CvC,SAAS,QAAQ,CAAC,KAA0C;AAAA,EAC1D,OAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,YAAY,IAAI;AAAA,IAChB,WAAW,IAAI;AAAA,IACf,aAAa,IAAI;AAAA,IACjB,cAAc,IAAI;AAAA,IAClB,QAAQ,IAAI;AAAA,IACZ,WAAW,IAAI;AAAA,EACjB;AAAA;AAGK,SAAS,oBAAoB,CAAC,SAA2C;AAAA,EAC9E,MAAM,MAAM,GAAG,MAAM,0DAA0D,EAAE,IAAI,OAAO;AAAA,EAG5F,KAAK;AAAA,IAAK,OAAO;AAAA,EACjB,OAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,mBAAmB,IAAI;AAAA,IACvB,iBAAiB,IAAI,qBAAqB;AAAA,IAC1C,WAAW,IAAI;AAAA,EACjB;AAAA;AAGK,SAAS,oBAAoB,CAClC,SACA,mBACA,iBACM;AAAA,EACN,GAAG,MACD;AAAA;AAAA;AAAA;AAAA;AAAA,wCAMF,EAAE,IAAI,SAAS,mBAAmB,mBAAmB,MAAM,IAAI,KAAK,EAAE,YAAY,CAAC;AAAA;AAI9E,SAAS,oBAAoB,CAClC,SACA,QACA,MAAM,KAAK,IAAI,GACsD;AAAA,EACrE,MAAM,gBAAgB,MACpB,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,WAAW,GACd,MACC,yDACF,EACC,IAAI,OAAO;AAAA,IACd,KAAK;AAAA,MAAU,OAAO;AAAA,IACtB,MAAM,YAAY,KAAK,MAAM,SAAS,UAAU;AAAA,IAChD,IACE,SAAS,WAAW,aACpB,OAAO,SAAS,SAAS,KACzB,MAAM,YAAY,sBAClB;AAAA,MACA,OAAO,EAAE,MAAM,OAAO;AAAA,IACxB;AAAA,IACA,MAAM,YAAY,IAAI,KAAK,GAAG,EAAE,YAAY;AAAA,IAC5C,GAAG,MACD,yFACF,EAAE,IAAI,WAAW,OAAO;AAAA,IACxB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,SAAS,KAAK,UAAU,QAAQ,WAAW,YAAY,UAAU,CAAC;AAAA,IACzE;AAAA,GACD,EAAE;AAAA,EAEL,MAAM,gBAAgB,cAAc;AAAA,EACpC,IAAI;AAAA,IAAe,OAAO;AAAA,EAI1B,SAAS,UAAU,EAAG,UAAU,GAAG,WAAW;AAAA,IAC5C,MAAM,aAAa,qBAAqB,OAAO,GAAG,qBAAqB;AAAA,IACvE,MAAM,YAAY,OAAO,UAAU;AAAA,IACnC,KAAK;AAAA,MAAW,OAAO;AAAA,IACvB,MAAM,SAAS,GAAG,YAAY,MAAM;AAAA,MAClC,MAAM,WAAW,GACd,MACC,yDACF,EACC,IAAI,OAAO;AAAA,MACd,IAAI;AAAA,QAAU,OAAO,EAAE,MAAM,OAAO;AAAA,MACpC,MAAM,eAAe,qBAAqB,OAAO,GAAG,qBAAqB;AAAA,MACzE,IAAI,iBAAiB;AAAA,QAAY,OAAO,EAAE,MAAM,QAAQ;AAAA,MACxD,MAAM,YAAY,IAAI,KAAK,GAAG,EAAE,YAAY;AAAA,MAC5C,GAAG,MACD;AAAA;AAAA,4CAGF,EAAE,IACA,SACA,YACA,UAAU,WACV,UAAU,aACV,UAAU,cACV,SACF;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,UACH;AAAA,UACA;AAAA,UACA,WAAW,UAAU;AAAA,UACrB,aAAa,UAAU;AAAA,UACvB,cAAc,UAAU;AAAA,UACxB,QAAQ;AAAA,UACR,WAAW;AAAA,QACb;AAAA,MACF;AAAA,KACD,EAAE;AAAA,IACH,IAAI,OAAO,SAAS;AAAA,MAAW,OAAO;AAAA,IACtC,OAAO,UAAU,aAAa,EAAE,OAAO,KAAK,CAAC;AAAA,IAC7C,IAAI,OAAO,SAAS;AAAA,MAAQ,OAAO;AAAA,EACrC;AAAA,EACA,OAAO,cAAc,KAAK,EAAE,MAAM,OAAO;AAAA;AAIpC,SAAS,qBAAqB,CACnC,SACA,aACA,SACM;AAAA,EACN,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,MAAM,GACT,MACC,8EACF,EACC,IAAI,SAAS,WAAW;AAAA,IAC3B,KAAK;AAAA,MAAK;AAAA,IACV,KAAK,SAAS;AAAA,MACZ,GAAG,MACD,8GACF,EAAE,IAAI,IAAI,KAAK,EAAE,YAAY,GAAG,SAAS,WAAW;AAAA,MACpD;AAAA,IACF;AAAA,IACA,MAAM,UAAU,qBAAqB,OAAO,GAAG,qBAAqB;AAAA,IACpE,qBAAqB,SAAS,KAAK,IAAI,SAAS,IAAI,UAAU,GAAG,IAAI,YAAY;AAAA,IACjF,GAAG,MAAM,4EAA4E,EAAE,IACrF,SACA,WACF;AAAA,GACD,EAAE;AAAA;AAIE,SAAS,uBAAuB,CAAC,SAA0B;AAAA,EAChE,OAAO,GAAG,YAAY,MAAM;AAAA,IAC1B,GAAG,MAAM,uDAAuD,EAAE,IAAI,OAAO;AAAA,IAC7E,OACE,GAAG,MAAM,wDAAwD,EAAE,IAAI,OAAO,EAAE,UAAU;AAAA,GAE7F,EAAE;AAAA;;;;;;;;ACxNL,SAAS,uBAAuB,CAAC,KAGP;AAAA,EACxB,KAAK,YAAY,IAAI,KAAK;AAAA,IAAG,MAAM,IAAI,MAAM,wBAAwB,IAAI,OAAO;AAAA,EAChF,OAAO;AAAA,IACL,MAAM,IAAI;AAAA,IACV,OAAO,IAAI;AAAA,EACb;AAAA;AAGK,SAAS,wBAAwB,CACtC,QACA,WAC8B;AAAA,EAC9B,MAAM,MAAM,GACT,MACC,+DACF,EACC,IAAI,OAAO,MAAM,GAAG,SAAS;AAAA,EAChC,OAAO,MAAM,wBAAwB,GAAG,IAAI;AAAA;AAUvC,SAAS,uBAAuB,CAAC,MAA4C;AAAA,EAClF,QAAQ,QAAQ,WAAW,OAAO,cAAc;AAAA,EAChD,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,IAAI,GACP,MAAM,4EAA4E,EAClF,IAAI,OAAO,WAAW,OAAO,MAAM,GAAG,SAAS;AAAA,IAClD,IAAI,EAAE,YAAY,GAAG;AAAA,MACnB,MAAM,IAAI,MAAM,4CAA4C,UAAU,WAAW;AAAA,IACnF;AAAA,GACD,EAAE;AAAA;AASE,SAAS,4BAA4B,CAAC,MAAoD;AAAA,EAC/F,QAAQ,QAAQ,WAAW,UAAU;AAAA,EACrC,IAAI,UAAU;AAAA,EACd,GAAG,YAAY,MAAM;AAAA,IACnB,MAAM,IAAI,GACP,MAAM,+EAA+E,EACrF,IAAI,OAAO,OAAO,MAAM,GAAG,SAAS;AAAA,IACvC,UAAU,EAAE,UAAU;AAAA,GACvB,EAAE;AAAA,EACH,OAAO;AAAA;",
42
- "debugId": "09EFFD8C76225E2664756E2164756E21",
41
+ "mappings": "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",
42
+ "debugId": "5FCBA76877162FB364756E2164756E21",
43
43
  "names": []
44
44
  }