@fairfox/polly 0.49.0 → 0.50.0

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.
@@ -16,14 +16,14 @@
16
16
  "/**\n * Content-hash cache for the quality plugin host.\n *\n * Each check declares the files and extras that determine its result.\n * The cache hashes those into a key, looks up `.cache/polly-quality/<id>.json`,\n * and returns the prior result on hit. A miss re-runs the check body and\n * writes a fresh entry.\n *\n * Files that are missing on disk hash as the literal string `<absent>`\n * so removing a declared input invalidates the entry deterministically.\n * Atomic writes go through a temp file + rename so a process crashing\n * mid-write cannot leave a partial JSON behind that later parses to a\n * malformed entry. A corrupt entry is treated as a miss with a warning;\n * the check re-runs and overwrites it.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { mkdir, readFile, rename, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, join, resolve } from \"node:path\";\nimport type { CheckOutcome } from \"./types\";\n\nexport type CacheInputs = {\n files: string[];\n extras?: Record<string, string>;\n};\n\nexport type CacheEntry = {\n hash: string;\n outcome: CheckOutcome;\n /** Wall-clock time the entry was written; useful for debugging stale caches. */\n writtenAt: string;\n};\n\nconst ABSENT_MARKER = \"<absent>\";\n\nasync function hashFile(path: string): Promise<string> {\n try {\n const buf = await readFile(path);\n const h = createHash(\"sha256\");\n h.update(buf);\n return h.digest(\"hex\");\n } catch {\n return ABSENT_MARKER;\n }\n}\n\n/**\n * Compute a deterministic SHA-256 over (sorted file paths + content hashes\n * + sorted extras). Identical inputs in any order produce the same hash;\n * adding, removing, renaming, or modifying any input changes it.\n */\nexport async function computeInputsHash(inputs: CacheInputs, rootDir: string): Promise<string> {\n const filePairs: Array<{ path: string; hash: string }> = [];\n for (const f of inputs.files) {\n const abs = isAbsolute(f) ? f : resolve(rootDir, f);\n const hash = await hashFile(abs);\n // Store the relative-to-root form so caches survive a checkout move.\n const rel = abs.startsWith(`${rootDir}/`) ? abs.slice(rootDir.length + 1) : abs;\n filePairs.push({ path: rel, hash });\n }\n filePairs.sort((a, b) => a.path.localeCompare(b.path));\n\n const extras = inputs.extras ?? {};\n const extrasPairs = Object.keys(extras)\n .sort()\n .map((k) => ({ key: k, value: extras[k] ?? \"\" }));\n\n const payload = JSON.stringify({ files: filePairs, extras: extrasPairs });\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n}\n\nfunction cachePath(rootDir: string, checkId: string): string {\n // Replace `:` with `__` so `polly:no-as-casting` becomes a valid filename\n // on every platform.\n const safe = checkId.replace(/:/g, \"__\");\n return join(rootDir, \".cache\", \"polly-quality\", `${safe}.json`);\n}\n\nexport async function getCachedOutcome(\n rootDir: string,\n checkId: string,\n hash: string\n): Promise<CheckOutcome | null> {\n const path = cachePath(rootDir, checkId);\n let raw: string;\n try {\n raw = await readFile(path, \"utf8\");\n } catch {\n return null;\n }\n let parsed: CacheEntry;\n try {\n parsed = JSON.parse(raw) as unknown as CacheEntry;\n } catch {\n // Treat corrupt entries as misses; the check will re-run and the next\n // write replaces the bad file. We deliberately don't throw — a busted\n // cache should not block a CI run.\n return null;\n }\n if (parsed.hash !== hash) return null;\n if (typeof parsed.outcome?.ok !== \"boolean\" || !Array.isArray(parsed.outcome?.messages)) {\n return null;\n }\n return parsed.outcome;\n}\n\nexport async function setCachedOutcome(\n rootDir: string,\n checkId: string,\n hash: string,\n outcome: CheckOutcome\n): Promise<void> {\n const path = cachePath(rootDir, checkId);\n await mkdir(dirname(path), { recursive: true });\n const entry: CacheEntry = { hash, outcome, writtenAt: new Date().toISOString() };\n const tmp = `${path}.tmp-${process.pid}-${Date.now()}`;\n await writeFile(tmp, JSON.stringify(entry, null, 2));\n await rename(tmp, path);\n}\n",
17
17
  "/**\n * Plugin host for `@fairfox/polly/quality`.\n *\n * Loads plugins, validates check ids and per-check config, and runs\n * checks in parallel against a `rootDir`. Each check goes through the\n * cache layer first: a content-hash hit returns the prior outcome\n * without invoking the body; a miss runs and persists the result.\n *\n * Errors thrown inside a check are caught and reported as a failed\n * `CheckRunResult` so one broken plugin does not abort the whole run.\n */\n\nimport { computeInputsHash, getCachedOutcome, setCachedOutcome } from \"./cache\";\nimport type {\n Check,\n CheckOutcome,\n CheckRunResult,\n QualityPlugin,\n QualityRunConfig,\n RunReport,\n} from \"./types\";\n\nexport type RegisteredCheck = {\n check: Check<unknown>;\n plugin: QualityPlugin;\n};\n\n/**\n * Build a flat id-keyed registry from the configured plugins. Throws on\n * plugin name collision or check id collision (within or across\n * plugins) so misconfiguration fails at load time, not at run time.\n */\nexport function registerPlugins(plugins: QualityPlugin[]): Map<string, RegisteredCheck> {\n const registry = new Map<string, RegisteredCheck>();\n const pluginNames = new Set<string>();\n for (const plugin of plugins) {\n if (pluginNames.has(plugin.name)) {\n throw new Error(`Quality plugin name collision: \"${plugin.name}\" registered twice`);\n }\n pluginNames.add(plugin.name);\n for (const check of plugin.checks) {\n if (!check.id.startsWith(`${plugin.name}:`)) {\n throw new Error(\n `Check \"${check.id}\" is registered under plugin \"${plugin.name}\" but its id does not begin with \"${plugin.name}:\"`\n );\n }\n if (registry.has(check.id)) {\n const prior = registry.get(check.id)?.plugin.name ?? \"<unknown>\";\n throw new Error(\n `Check id collision: \"${check.id}\" registered by plugins \"${prior}\" and \"${plugin.name}\"`\n );\n }\n registry.set(check.id, { check, plugin });\n }\n }\n return registry;\n}\n\n/**\n * Validate that every per-check config block in the run config is\n * accepted by the corresponding check's `validate` function. Surfaces all\n * errors at once rather than aborting on the first.\n */\nexport function validateRunConfig(\n registry: Map<string, RegisteredCheck>,\n runConfig: QualityRunConfig\n): string[] {\n const errors: string[] = [];\n const checks = runConfig.checks ?? {};\n for (const [id, cfg] of Object.entries(checks)) {\n const entry = registry.get(id);\n if (!entry) {\n errors.push(`Configuration references unknown check id \"${id}\"`);\n continue;\n }\n if (!entry.check.validate) continue;\n const result = entry.check.validate(cfg);\n if (result === null) continue;\n for (const msg of result) {\n errors.push(`[${id}] ${msg}`);\n }\n }\n return errors;\n}\n\nexport type RunOptions = {\n rootDir: string;\n /** When set, skip cache reads and writes. */\n noCache?: boolean;\n /** Concurrency cap; defaults to the number of registered checks. */\n concurrency?: number;\n signal?: AbortSignal;\n};\n\nasync function resolveCacheHash(\n check: Check<unknown>,\n config: unknown,\n opts: RunOptions\n): Promise<string | null> {\n if (opts.noCache || !check.filesRead) return null;\n try {\n const files = await check.filesRead(config, opts.rootDir);\n const extras = check.cacheKeyExtras?.(config);\n return computeInputsHash({ files, ...(extras ? { extras } : {}) }, opts.rootDir);\n } catch {\n // Cache-input collection failures fall through to a non-cached run.\n return null;\n }\n}\n\nasync function executeBody(\n check: Check<unknown>,\n config: unknown,\n opts: RunOptions\n): Promise<CheckOutcome | { error: string }> {\n try {\n return await check.run({\n rootDir: opts.rootDir,\n config,\n ...(opts.signal ? { signal: opts.signal } : {}),\n });\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) };\n }\n}\n\nasync function runOne(\n entry: RegisteredCheck,\n config: unknown,\n opts: RunOptions\n): Promise<CheckRunResult> {\n const { check } = entry;\n const start = Date.now();\n\n const cacheHash = await resolveCacheHash(check, config, opts);\n if (cacheHash) {\n const cached = await getCachedOutcome(opts.rootDir, check.id, cacheHash);\n if (cached) {\n return {\n id: check.id,\n ok: cached.ok,\n durationMs: Date.now() - start,\n cached: true,\n messages: cached.messages,\n };\n }\n }\n\n const result = await executeBody(check, config, opts);\n if (\"error\" in result) {\n return {\n id: check.id,\n ok: false,\n durationMs: Date.now() - start,\n cached: false,\n messages: [],\n error: result.error,\n };\n }\n\n if (cacheHash && result.ok) {\n // Only cache passing outcomes — a cached failure could mask a fix\n // until the next input change, which is surprising in CI.\n try {\n await setCachedOutcome(opts.rootDir, check.id, cacheHash, result);\n } catch {\n // Cache-write failures are non-fatal; the next run just re-executes.\n }\n }\n\n return {\n id: check.id,\n ok: result.ok,\n durationMs: Date.now() - start,\n cached: false,\n messages: result.messages,\n };\n}\n\nasync function runWithConcurrency<T, R>(\n items: T[],\n limit: number,\n worker: (item: T) => Promise<R>\n): Promise<R[]> {\n if (items.length === 0) return [];\n const results: R[] = new Array(items.length);\n let cursor = 0;\n const workers = Array.from({ length: Math.max(1, Math.min(limit, items.length)) }, async () => {\n while (true) {\n const i = cursor++;\n if (i >= items.length) return;\n const item = items[i];\n if (item === undefined) return;\n results[i] = await worker(item);\n }\n });\n await Promise.all(workers);\n return results;\n}\n\n/**\n * Run a set of checks. If `ids` is undefined, runs every registered check.\n * Returns a `RunReport` with per-check results plus an aggregate `ok`.\n */\nexport async function runChecks(\n registry: Map<string, RegisteredCheck>,\n runConfig: QualityRunConfig,\n ids: string[] | undefined,\n opts: RunOptions\n): Promise<RunReport> {\n const start = Date.now();\n const targets: RegisteredCheck[] = [];\n if (ids === undefined) {\n targets.push(...registry.values());\n } else {\n for (const id of ids) {\n const entry = registry.get(id);\n if (!entry) {\n throw new Error(`Unknown check id: \"${id}\"`);\n }\n targets.push(entry);\n }\n }\n\n const checks = runConfig.checks ?? {};\n const limit = opts.concurrency ?? targets.length;\n const results = await runWithConcurrency(targets, limit, (entry) =>\n runOne(entry, checks[entry.check.id], opts)\n );\n\n return {\n ok: results.every((r) => r.ok),\n results,\n totalDurationMs: Date.now() - start,\n };\n}\n\nexport function listChecks(registry: Map<string, RegisteredCheck>): Array<{\n id: string;\n description: string;\n plugin: string;\n}> {\n return Array.from(registry.values())\n .map(({ check, plugin }) => ({\n id: check.id,\n description: check.description,\n plugin: plugin.name,\n }))\n .sort((a, b) => a.id.localeCompare(b.id));\n}\n",
18
18
  "/**\n * Loader for the `quality` block of `polly.config.ts`.\n *\n * Consumers express their plugin set as\n *\n * export default {\n * quality: {\n * plugins: [pollyCorePlugin, pollyUiPlugin, localPlugin],\n * checks: { \"polly:no-as-casting\": { exclude: [\"build\"] } },\n * },\n * };\n *\n * If no config is found, the loader returns `pollyCorePlugin` only —\n * that's the minimum useful default and matches the surface every\n * polly consumer already gets.\n */\n\nimport { join } from \"node:path\";\nimport { pollyCorePlugin } from \"./plugins/core\";\nimport type { QualityRunConfig } from \"./types\";\n\nconst DEFAULT_PATHS = [\"polly.config.ts\", \"polly.config.js\", \"polly.config.mjs\"];\n\nexport async function loadQualityConfig(\n rootDir: string,\n explicitPath?: string\n): Promise<QualityRunConfig> {\n const candidates = explicitPath ? [explicitPath] : DEFAULT_PATHS.map((p) => join(rootDir, p));\n\n for (const path of candidates) {\n if (!(await Bun.file(path).exists())) continue;\n const mod = (await import(path)) as unknown as { default?: { quality?: QualityRunConfig } };\n const config = mod.default?.quality;\n if (!config) continue;\n if (!Array.isArray(config.plugins) || config.plugins.length === 0) {\n throw new Error(`${path}: \\`quality.plugins\\` must be a non-empty array`);\n }\n return config;\n }\n\n return { plugins: [pollyCorePlugin] };\n}\n",
19
- "/**\n * `pollyCorePlugin` — the polly-provided core plugin.\n *\n * Wraps the four checks polly already ships in `@fairfox/polly/quality`\n * into the new `Check` contract. The wrapping is purely adaptive: each\n * underlying function (`checkNoAsCasting`, `checkNoRequire`,\n * `checkSecrets`, `checkGitignoreCoversAllowlist`) keeps its existing\n * exports unchanged, so consumers wiring those up by hand continue to\n * work. The plugin path is the new way; the function path stays the\n * same.\n *\n * The CSS family and shared-components live in a separate `polly-ui`\n * plugin (#92–#94) because they belong to the styled-component\n * contract polly-ui owns. Issue #98's scope is the four core checks.\n */\n\nimport { join } from \"node:path\";\nimport { Glob } from \"bun\";\nimport { checkNoAsCasting } from \"../no-as-casting\";\nimport { checkNoRequire } from \"../no-require\";\nimport { checkGitignoreCoversAllowlist, checkSecrets } from \"../secrets\";\nimport type { Check, QualityPlugin } from \"../types\";\nimport { clicheCoreChecks } from \"./cliche-checks\";\nimport { additionalCoreChecks } from \"./core-checks\";\nimport { extraCoreChecks } from \"./extra-checks\";\nimport { importCoreChecks } from \"./import-checks\";\n\nconst DEFAULT_EXCLUDES = [\"node_modules\", \"dist\", \".git\", \".bun\", \"dist-test\", \"build\", \"coverage\"];\n\ntype ScanConfig = {\n exclude?: string[];\n excludePackages?: string[];\n excludeFiles?: string[];\n filePatterns?: string;\n};\n\nasync function scanFiles(rootDir: string, cfg: ScanConfig): Promise<string[]> {\n const excludeDirs = new Set(cfg.exclude ?? DEFAULT_EXCLUDES);\n const excludePackages = new Set(cfg.excludePackages ?? []);\n const excludeFiles = new Set(cfg.excludeFiles ?? []);\n const pattern = cfg.filePatterns ?? \"**/*.{ts,tsx}\";\n const glob = new Glob(pattern);\n const out: string[] = [];\n for await (const file of glob.scan({ cwd: rootDir, absolute: true })) {\n const rel = file.replace(`${rootDir}/`, \"\");\n const segments = rel.split(\"/\");\n if (segments.some((s) => excludeDirs.has(s))) continue;\n if (excludePackages.size > 0 && segments.some((s) => excludePackages.has(s))) continue;\n const basename = segments[segments.length - 1] ?? \"\";\n if (excludeFiles.has(basename) || excludeFiles.has(rel)) continue;\n out.push(file);\n }\n return out;\n}\n\nfunction resolveScanConfig(config: ScanConfig | undefined): ScanConfig {\n return config ?? {};\n}\n\nconst noAsCasting: Check<ScanConfig | undefined> = {\n id: \"polly:no-as-casting\",\n description: \"Ban TypeScript `as` type assertions outside the allowed forms\",\n filesRead: (cfg, root) => scanFiles(root, resolveScanConfig(cfg)),\n run: async ({ rootDir, config }) => {\n const cfg = resolveScanConfig(config);\n const result = await checkNoAsCasting({\n rootDir,\n exclude: cfg.exclude ?? DEFAULT_EXCLUDES,\n ...(cfg.excludePackages ? { excludePackages: cfg.excludePackages } : {}),\n ...(cfg.excludeFiles ? { excludeFiles: cfg.excludeFiles } : {}),\n ...(cfg.filePatterns ? { filePatterns: cfg.filePatterns } : {}),\n });\n return {\n ok: result.violations.length === 0,\n messages: result.violations.map(\n (v) => `${v.file}:${v.line}: ${v.content}${v.advice ? ` — ${v.advice}` : \"\"}`\n ),\n };\n },\n};\n\nconst noRequire: Check<ScanConfig | undefined> = {\n id: \"polly:no-require\",\n description: \"Ban CommonJS `require(...)` calls in TypeScript source\",\n filesRead: (cfg, root) => scanFiles(root, resolveScanConfig(cfg)),\n run: async ({ rootDir, config }) => {\n const cfg = resolveScanConfig(config);\n const result = await checkNoRequire({\n rootDir,\n exclude: cfg.exclude ?? DEFAULT_EXCLUDES,\n ...(cfg.filePatterns ? { filePatterns: cfg.filePatterns } : {}),\n });\n return {\n ok: result.violations.length === 0,\n messages: result.violations.map((v) => `${v.file}:${v.line}: ${v.content}`),\n };\n },\n};\n\ntype SecretsConfig = {\n configPath?: string;\n noGit?: boolean;\n};\n\nconst secrets: Check<SecretsConfig | undefined> = {\n id: \"polly:secrets\",\n description: \"Run `gitleaks detect` against the working tree\",\n // gitleaks scans the working tree on disk; we declare the config file as\n // the only file input. Tool-version is captured via cacheKeyExtras so a\n // new gitleaks release re-scans even on identical config + tree.\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n if (!c.configPath) return [];\n return [join(root, c.configPath)];\n },\n cacheKeyExtras: (cfg) => ({\n noGit: (cfg ?? {}).noGit === false ? \"false\" : \"true\",\n }),\n run: async ({ rootDir, config }) => {\n const cfg = config ?? {};\n const result = await checkSecrets({\n root: rootDir,\n ...(cfg.configPath ? { configPath: cfg.configPath } : {}),\n ...(typeof cfg.noGit === \"boolean\" ? { noGit: cfg.noGit } : {}),\n });\n if (!result.binaryFound) {\n return {\n ok: false,\n messages: [\n \"gitleaks is not on PATH. Install with `brew install gitleaks` (macOS) or from https://github.com/gitleaks/gitleaks/releases.\",\n ],\n };\n }\n return {\n ok: result.exitCode === 0,\n messages:\n result.exitCode === 0 ? [] : [result.output.trim() || `gitleaks exited ${result.exitCode}`],\n };\n },\n};\n\ntype GitignoreConfig = {\n tomlPath?: string;\n gitignorePath?: string;\n sectionStartMarkers?: string[];\n sectionEndMarkers?: string[];\n};\n\nconst gitignoreCrossCheck: Check<GitignoreConfig | undefined> = {\n id: \"polly:gitignore-cross-check\",\n description:\n \"Verify every gitleaks allowlist entry marked as gitignored is actually covered by .gitignore\",\n filesRead: (cfg, root) => {\n const c = cfg ?? {};\n return [\n join(root, c.tomlPath ?? \".gitleaks.toml\"),\n join(root, c.gitignorePath ?? \".gitignore\"),\n ];\n },\n run: async ({ rootDir, config }) => {\n const cfg = config ?? {};\n const result = await checkGitignoreCoversAllowlist({\n root: rootDir,\n ...(cfg.tomlPath ? { tomlPath: cfg.tomlPath } : {}),\n ...(cfg.gitignorePath ? { gitignorePath: cfg.gitignorePath } : {}),\n ...(cfg.sectionStartMarkers ? { sectionStartMarkers: cfg.sectionStartMarkers } : {}),\n ...(cfg.sectionEndMarkers ? { sectionEndMarkers: cfg.sectionEndMarkers } : {}),\n });\n return {\n ok: result.missing.length === 0,\n messages:\n result.missing.length === 0\n ? []\n : [\n \"Paths allowed by .gitleaks.toml are NOT covered by .gitignore:\",\n ...result.missing.map((f) => ` ${f}`),\n ],\n };\n },\n};\n\nexport const POLLY_CORE_VERSION = \"0.48.0\";\n\nexport const pollyCorePlugin: QualityPlugin = {\n name: \"polly\",\n version: POLLY_CORE_VERSION,\n checks: [\n noAsCasting as Check<unknown>,\n noRequire as Check<unknown>,\n secrets as Check<unknown>,\n gitignoreCrossCheck as Check<unknown>,\n ...additionalCoreChecks,\n ...extraCoreChecks,\n ...importCoreChecks,\n ...clicheCoreChecks,\n ],\n};\n",
19
+ "/**\n * `pollyCorePlugin` — the polly-provided core plugin.\n *\n * Wraps the four checks polly already ships in `@fairfox/polly/quality`\n * into the new `Check` contract. The wrapping is purely adaptive: each\n * underlying function (`checkNoAsCasting`, `checkNoRequire`,\n * `checkSecrets`, `checkGitignoreCoversAllowlist`) keeps its existing\n * exports unchanged, so consumers wiring those up by hand continue to\n * work. The plugin path is the new way; the function path stays the\n * same.\n *\n * The CSS family and shared-components live in a separate `polly-ui`\n * plugin (#92–#94) because they belong to the styled-component\n * contract polly-ui owns. Issue #98's scope is the four core checks.\n */\n\nimport { join } from \"node:path\";\nimport { Glob } from \"bun\";\nimport { checkNoAsCasting } from \"../no-as-casting\";\nimport { checkNoRequire } from \"../no-require\";\nimport { checkGitignoreCoversAllowlist, checkSecrets } from \"../secrets\";\nimport type { Check, QualityPlugin } from \"../types\";\nimport { clicheCoreChecks } from \"./cliche-checks\";\nimport { additionalCoreChecks } from \"./core-checks\";\nimport { extraCoreChecks } from \"./extra-checks\";\nimport { importCoreChecks } from \"./import-checks\";\n\nconst DEFAULT_EXCLUDES = [\"node_modules\", \"dist\", \".git\", \".bun\", \"dist-test\", \"build\", \"coverage\"];\n\ntype ScanConfig = {\n exclude?: string[];\n excludePackages?: string[];\n excludeFiles?: string[];\n filePatterns?: string;\n};\n\nasync function scanFiles(rootDir: string, cfg: ScanConfig): Promise<string[]> {\n const excludeDirs = new Set(cfg.exclude ?? DEFAULT_EXCLUDES);\n const excludePackages = new Set(cfg.excludePackages ?? []);\n const excludeFiles = new Set(cfg.excludeFiles ?? []);\n const pattern = cfg.filePatterns ?? \"**/*.{ts,tsx}\";\n const glob = new Glob(pattern);\n const out: string[] = [];\n for await (const file of glob.scan({ cwd: rootDir, absolute: true })) {\n const rel = file.replace(`${rootDir}/`, \"\");\n const segments = rel.split(\"/\");\n if (segments.some((s) => excludeDirs.has(s))) continue;\n if (excludePackages.size > 0 && segments.some((s) => excludePackages.has(s))) continue;\n const basename = segments[segments.length - 1] ?? \"\";\n if (excludeFiles.has(basename) || excludeFiles.has(rel)) continue;\n out.push(file);\n }\n return out;\n}\n\nfunction resolveScanConfig(config: ScanConfig | undefined): ScanConfig {\n return config ?? {};\n}\n\nconst noAsCasting: Check<ScanConfig | undefined> = {\n id: \"polly:no-as-casting\",\n description: \"Ban TypeScript `as` type assertions outside the allowed forms\",\n filesRead: (cfg, root) => scanFiles(root, resolveScanConfig(cfg)),\n run: async ({ rootDir, config }) => {\n const cfg = resolveScanConfig(config);\n const result = await checkNoAsCasting({\n rootDir,\n exclude: cfg.exclude ?? DEFAULT_EXCLUDES,\n ...(cfg.excludePackages ? { excludePackages: cfg.excludePackages } : {}),\n ...(cfg.excludeFiles ? { excludeFiles: cfg.excludeFiles } : {}),\n ...(cfg.filePatterns ? { filePatterns: cfg.filePatterns } : {}),\n });\n return {\n ok: result.violations.length === 0,\n messages: result.violations.map(\n (v) => `${v.file}:${v.line}: ${v.content}${v.advice ? ` — ${v.advice}` : \"\"}`\n ),\n };\n },\n};\n\nconst noRequire: Check<ScanConfig | undefined> = {\n id: \"polly:no-require\",\n description: \"Ban CommonJS `require(...)` calls in TypeScript source\",\n filesRead: (cfg, root) => scanFiles(root, resolveScanConfig(cfg)),\n run: async ({ rootDir, config }) => {\n const cfg = resolveScanConfig(config);\n const result = await checkNoRequire({\n rootDir,\n exclude: cfg.exclude ?? DEFAULT_EXCLUDES,\n ...(cfg.filePatterns ? { filePatterns: cfg.filePatterns } : {}),\n });\n return {\n ok: result.violations.length === 0,\n messages: result.violations.map((v) => `${v.file}:${v.line}: ${v.content}`),\n };\n },\n};\n\ntype SecretsConfig = {\n configPath?: string;\n noGit?: boolean;\n};\n\nconst secrets: Check<SecretsConfig | undefined> = {\n id: \"polly:secrets\",\n description: \"Run `gitleaks detect` against the working tree\",\n // gitleaks scans the working tree on disk; we declare the config file as\n // the only file input. Tool-version is captured via cacheKeyExtras so a\n // new gitleaks release re-scans even on identical config + tree.\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n if (!c.configPath) return [];\n return [join(root, c.configPath)];\n },\n cacheKeyExtras: (cfg) => ({\n noGit: cfg?.noGit === false ? \"false\" : \"true\",\n }),\n run: async ({ rootDir, config }) => {\n const cfg = config ?? {};\n const result = await checkSecrets({\n root: rootDir,\n ...(cfg.configPath ? { configPath: cfg.configPath } : {}),\n ...(typeof cfg.noGit === \"boolean\" ? { noGit: cfg.noGit } : {}),\n });\n if (!result.binaryFound) {\n return {\n ok: false,\n messages: [\n \"gitleaks is not on PATH. Install with `brew install gitleaks` (macOS) or from https://github.com/gitleaks/gitleaks/releases.\",\n ],\n };\n }\n return {\n ok: result.exitCode === 0,\n messages:\n result.exitCode === 0 ? [] : [result.output.trim() || `gitleaks exited ${result.exitCode}`],\n };\n },\n};\n\ntype GitignoreConfig = {\n tomlPath?: string;\n gitignorePath?: string;\n sectionStartMarkers?: string[];\n sectionEndMarkers?: string[];\n};\n\nconst gitignoreCrossCheck: Check<GitignoreConfig | undefined> = {\n id: \"polly:gitignore-cross-check\",\n description:\n \"Verify every gitleaks allowlist entry marked as gitignored is actually covered by .gitignore\",\n filesRead: (cfg, root) => {\n const c = cfg ?? {};\n return [\n join(root, c.tomlPath ?? \".gitleaks.toml\"),\n join(root, c.gitignorePath ?? \".gitignore\"),\n ];\n },\n run: async ({ rootDir, config }) => {\n const cfg = config ?? {};\n const result = await checkGitignoreCoversAllowlist({\n root: rootDir,\n ...(cfg.tomlPath ? { tomlPath: cfg.tomlPath } : {}),\n ...(cfg.gitignorePath ? { gitignorePath: cfg.gitignorePath } : {}),\n ...(cfg.sectionStartMarkers ? { sectionStartMarkers: cfg.sectionStartMarkers } : {}),\n ...(cfg.sectionEndMarkers ? { sectionEndMarkers: cfg.sectionEndMarkers } : {}),\n });\n return {\n ok: result.missing.length === 0,\n messages:\n result.missing.length === 0\n ? []\n : [\n \"Paths allowed by .gitleaks.toml are NOT covered by .gitignore:\",\n ...result.missing.map((f) => ` ${f}`),\n ],\n };\n },\n};\n\nexport const POLLY_CORE_VERSION = \"0.48.0\";\n\nexport const pollyCorePlugin: QualityPlugin = {\n name: \"polly\",\n version: POLLY_CORE_VERSION,\n checks: [\n noAsCasting as Check<unknown>,\n noRequire as Check<unknown>,\n secrets as Check<unknown>,\n gitignoreCrossCheck as Check<unknown>,\n ...additionalCoreChecks,\n ...extraCoreChecks,\n ...importCoreChecks,\n ...clicheCoreChecks,\n ],\n};\n",
20
20
  "/**\n * Five LLM-cliché checks bundled into `pollyCorePlugin`:\n *\n * - polly:no-banners — decorative comment dividers (`// ─────`, `// ====`)\n * - polly:no-decorative-emoji — Unicode emoji used for visual flair\n * - polly:no-marketing — overused booster words and filler (\"ensures that\") // audit-allow: marketing\n * - polly:no-note-prefix — `// Note:` / `// Important:` / `// Warning:` / `// TIP:` / `// NB:`\n * - polly:no-commented-code — leading-keyword commented-out source lines\n *\n * Each is parameterised: defaults match polly's own zones and may be\n * overridden via `polly.config.ts`. Suppress per-line with a trailing\n * `// audit-allow: <kind>` marker, where `<kind>` is the rule's slug\n * (one of: banner, emoji, marketing, note-prefix, commented-code).\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport type { Check } from \"../types\";\n\nconst SKIP_DIRS_DEFAULT = [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\", \"build\", \"coverage\"];\nconst DEFAULT_CODE_ZONES = [\"src\", \"tools\", \"cli\", \"scripts\", \"recipes\", \"examples\"];\nconst DEFAULT_CODE_EXTENSIONS = [\".ts\", \".tsx\"];\n\nconst BANNER_RE = /^\\s*\\/\\/.*(?:[=]{5,}|[-]{10,}|[─━═]{3,})/;\nconst DECORATIVE_EMOJI_RE = /[\\u{1F680}\\u{2728}\\u{1F3AF}\\u{1F389}\\u{26A1}\\u{1F4E6}\\u{1F9E9}]/u;\nconst MARKETING_RE =\n /\\b(comprehensive|robust|elegantly?|seamless(ly)?|leverages?|utili[sz]es?|ensures? that)\\b/i; // audit-allow: marketing\nconst NOTE_PREFIX_RE = /^\\s*\\/\\/\\s*(Note|Important|Warning|TIP|NB)\\s*:/;\nconst COMMENTED_CODE_RE =\n /^\\s*\\/\\/\\s+(import|const|let|var|function|class|return|if|for|while|export)\\b/;\n\nconst ALLOW_LINE_RE = /\\/\\/\\s*audit-allow:\\s*([\\w-]+)/;\n\nfunction isLineAllowed(line: string, kind: string): boolean {\n const match = line.match(ALLOW_LINE_RE);\n return match !== null && match[1] === kind;\n}\n\ntype ClicheConfig = {\n zones?: string[];\n skipDirs?: string[];\n allowFiles?: string[];\n /** File extensions to scan, defaulting to `.ts` and `.tsx`. */\n extensions?: string[];\n};\n\nfunction matchesExtension(name: string, extensions: Set<string>): boolean {\n const dotIdx = name.lastIndexOf(\".\");\n if (dotIdx < 0) return false;\n return extensions.has(name.slice(dotIdx));\n}\n\nasync function walkFilesByExt(\n dir: string,\n skipDirs: Set<string>,\n extensions: Set<string>,\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (skipDirs.has(entry.name) || entry.name.startsWith(\".\")) continue;\n await walkFilesByExt(fullPath, skipDirs, extensions, out);\n } else if (entry.isFile() && matchesExtension(entry.name, extensions)) {\n out.push(fullPath);\n }\n }\n}\n\nfunction resolveCliche(cfg: ClicheConfig | undefined): {\n zones: string[];\n skipDirs: Set<string>;\n allowFiles: Set<string>;\n extensions: Set<string>;\n} {\n const c = cfg ?? {};\n return {\n zones: c.zones ?? DEFAULT_CODE_ZONES,\n skipDirs: new Set(c.skipDirs ?? SKIP_DIRS_DEFAULT),\n allowFiles: new Set(c.allowFiles ?? []),\n extensions: new Set(c.extensions ?? DEFAULT_CODE_EXTENSIONS),\n };\n}\n\nasync function collectClicheFiles(\n rootDir: string,\n cfg: ClicheConfig | undefined\n): Promise<{ files: string[]; allowFiles: Set<string> }> {\n const { zones, skipDirs, allowFiles, extensions } = resolveCliche(cfg);\n const files: string[] = [];\n for (const zone of zones) {\n await walkFilesByExt(join(rootDir, zone), skipDirs, extensions, files);\n }\n return { files, allowFiles };\n}\n\nfunction scanFile(content: string, rel: string, pattern: RegExp, allowKind: string): string[] {\n const out: string[] = [];\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (pattern.test(line) && !isLineAllowed(line, allowKind)) {\n out.push(`${rel}:${i + 1}: ${line.trim()}`);\n }\n }\n return out;\n}\n\nfunction makeClicheCheck(\n id: string,\n description: string,\n pattern: RegExp,\n allowKind: string\n): Check<ClicheConfig | undefined> {\n return {\n id,\n description,\n filesRead: async (cfg, root) => {\n const { files, allowFiles } = await collectClicheFiles(root, cfg);\n return files.filter((p) => !allowFiles.has(relative(root, p)));\n },\n run: async ({ rootDir, config }) => {\n const { files, allowFiles } = await collectClicheFiles(rootDir, config);\n const violations: string[] = [];\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (allowFiles.has(rel)) continue;\n const content = await Bun.file(filePath).text();\n violations.push(...scanFile(content, rel, pattern, allowKind));\n }\n return { ok: violations.length === 0, messages: violations };\n },\n };\n}\n\nconst noBanners = makeClicheCheck(\n \"polly:no-banners\",\n \"Ban decorative comment dividers (// ─────, // =====, // ----------)\",\n BANNER_RE,\n \"banner\"\n);\n\nconst noDecorativeEmoji = makeClicheCheck(\n \"polly:no-decorative-emoji\",\n \"Ban a small set of Unicode emoji used as decorative flair in source\",\n DECORATIVE_EMOJI_RE,\n \"emoji\"\n);\n\nconst noNotePrefix = makeClicheCheck(\n \"polly:no-note-prefix\",\n \"Ban `// Note:` / `// Important:` / `// Warning:` / `// TIP:` / `// NB:` comment prefixes\",\n NOTE_PREFIX_RE,\n \"note-prefix\"\n);\n\nconst noCommentedCode = makeClicheCheck(\n \"polly:no-commented-code\",\n \"Ban single-line commented-out source (lines starting with `// import|const|let|...`)\",\n COMMENTED_CODE_RE,\n \"commented-code\"\n);\n\n// polly:no-marketing scans code AND markdown by default — its zones and\n// extensions are wider than the code-only checks above.\n\ntype MarketingConfig = ClicheConfig;\n\nconst DEFAULT_MARKETING_ZONES = [...DEFAULT_CODE_ZONES, \"docs\"];\nconst DEFAULT_MARKETING_EXTENSIONS = [\".ts\", \".tsx\", \".md\"];\n\nfunction resolveMarketing(cfg: MarketingConfig | undefined): {\n zones: string[];\n skipDirs: Set<string>;\n allowFiles: Set<string>;\n extensions: Set<string>;\n} {\n const c = cfg ?? {};\n return {\n zones: c.zones ?? DEFAULT_MARKETING_ZONES,\n skipDirs: new Set(c.skipDirs ?? SKIP_DIRS_DEFAULT),\n allowFiles: new Set(c.allowFiles ?? []),\n extensions: new Set(c.extensions ?? DEFAULT_MARKETING_EXTENSIONS),\n };\n}\n\nconst noMarketing: Check<MarketingConfig | undefined> = {\n id: \"polly:no-marketing\",\n description:\n 'Ban marketing language (\"comprehensive / robust / seamless / leverages / ensures that\") in source and docs', // audit-allow: marketing\n filesRead: async (cfg, root) => {\n const { zones, skipDirs, extensions, allowFiles } = resolveMarketing(cfg);\n const out: string[] = [];\n for (const zone of zones) {\n await walkFilesByExt(join(root, zone), skipDirs, extensions, out);\n }\n return out.filter((p) => !allowFiles.has(relative(root, p)));\n },\n run: async ({ rootDir, config }) => {\n const { zones, skipDirs, extensions, allowFiles } = resolveMarketing(config);\n const violations: string[] = [];\n for (const zone of zones) {\n const files: string[] = [];\n await walkFilesByExt(join(rootDir, zone), skipDirs, extensions, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (allowFiles.has(rel)) continue;\n const content = await Bun.file(filePath).text();\n violations.push(...scanFile(content, rel, MARKETING_RE, \"no-marketing\"));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\nexport const clicheCoreChecks: Check<unknown>[] = [\n noBanners as Check<unknown>,\n noDecorativeEmoji as Check<unknown>,\n noMarketing as Check<unknown>,\n noNotePrefix as Check<unknown>,\n noCommentedCode as Check<unknown>,\n];\n",
21
21
  "/**\n * Additional checks bundled into `pollyCorePlugin`.\n *\n * Each check here is a port of an existing `scripts/check-*.ts` script\n * from polly's repo into the plugin contract. The original scripts\n * remain on disk for back-compat with the existing pre-commit\n * orchestrator (`scripts/check.ts`); the plugin path is the new way\n * for downstream consumers (lingua, fairfox, warehouse-experiments)\n * who do not want to copy the script verbatim.\n *\n * Out of scope for this release:\n * - `polly:boundaries` issue text describes a workspace-dependency\n * model (each package may only import from packages it lists in\n * its `dependencies`). Polly itself is a single-package repo and\n * uses directional zone bans (`src/` cannot import `tools/`,\n * etc.); that model is what ships here. The workspace-dep model\n * can be layered on as an additional configuration mode later.\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport type { Check } from \"../types\";\n\n// polly:security — semgrep SAST wrapper\n\ntype SecurityConfig = {\n /** Override the semgrep ruleset; defaults to `auto`. */\n config?: string;\n /** Severity floors passed to `--severity`; defaults to ERROR + WARNING. */\n severities?: string[];\n /** Glob excludes appended after the severities. */\n exclude?: string[];\n};\n\nasync function semgrepInstalled(): Promise<boolean> {\n const which = Bun.spawn([\"which\", \"semgrep\"], { stdout: \"ignore\", stderr: \"ignore\" });\n await which.exited;\n return which.exitCode === 0;\n}\n\nconst security: Check<SecurityConfig | undefined> = {\n id: \"polly:security\",\n description: \"Run `semgrep scan` against the working tree (SAST)\",\n // semgrep walks the tree on disk; we use cacheKeyExtras to capture\n // the ruleset name so a config flip re-scans even on identical files.\n // filesRead is intentionally empty: the tree-walking surface is wider\n // than any glob we'd hand-write here, and semgrep's own incremental\n // model is what consumers should rely on inside CI. Cache invalidation\n // on tool version + ruleset is enough to make repeat invocations cheap.\n cacheKeyExtras: (cfg) => {\n const c = cfg ?? {};\n return {\n config: c.config ?? \"auto\",\n severities: (c.severities ?? [\"ERROR\", \"WARNING\"]).slice().sort().join(\",\"),\n exclude: (c.exclude ?? []).slice().sort().join(\",\"),\n };\n },\n run: async ({ rootDir, config }) => {\n if (!(await semgrepInstalled())) {\n return {\n ok: false,\n messages: [\n \"semgrep is not on PATH. Install with `brew install semgrep` (macOS) or `pip install semgrep`.\",\n ],\n };\n }\n const cfg = config ?? {};\n const args = [\"semgrep\", \"scan\", \"--config\", cfg.config ?? \"auto\", \"--quiet\", \"--error\"];\n for (const sev of cfg.severities ?? [\"ERROR\", \"WARNING\"]) {\n args.push(\"--severity\", sev);\n }\n for (const exc of cfg.exclude ?? [\"Dockerfile*\", \"docker-compose*\"]) {\n args.push(`--exclude=${exc}`);\n }\n const proc = Bun.spawn(args, { cwd: rootDir, stdout: \"pipe\", stderr: \"pipe\" });\n const [stdout, stderr] = await Promise.all([\n new Response(proc.stdout).text(),\n new Response(proc.stderr).text(),\n ]);\n await proc.exited;\n const output = `${stdout}${stderr}`.trim();\n return {\n ok: proc.exitCode === 0,\n messages: proc.exitCode === 0 ? [] : [output || `semgrep exited ${proc.exitCode}`],\n };\n },\n};\n\n// polly:boundaries — directional zone-ban import check\n\ntype BoundariesConfig = {\n /** From-zone → list of zone path prefixes that zone may not import from. */\n bans?: Record<string, string[]>;\n /** Zone names to scan; entries map to subdirectories of rootDir. */\n zones?: string[];\n /** Directories whose names cause a recursive scan to skip. */\n skipDirs?: string[];\n};\n\nconst DEFAULT_BOUNDARIES: BoundariesConfig = {\n bans: { src: [\"tools/\", \"cli/\", \"scripts/\"], tools: [\"cli/\", \"scripts/\"] },\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\"],\n};\n\nconst IMPORT_REGEX =\n /(?:import|export)\\s+.*?from\\s+['\"]([^'\"]+)['\"]|require\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\nfunction isTestFile(rel: string): boolean {\n return (\n rel.includes(\"__tests__\") ||\n rel.includes(\".test.\") ||\n rel.includes(\".spec.\") ||\n rel.startsWith(\"tests/\")\n );\n}\n\nfunction resolveTargetZone(specifier: string, fromFile: string, rootDir: string): string | null {\n if (!specifier.startsWith(\".\") && !specifier.startsWith(\"/\")) return null;\n const fromDir = relative(rootDir, fromFile).split(\"/\").slice(0, -1).join(\"/\");\n const segments = `${fromDir}/${specifier}`.split(\"/\");\n const resolved: string[] = [];\n for (const seg of segments) {\n if (seg === \"\" || seg === \".\") continue;\n if (seg === \"..\") {\n resolved.pop();\n continue;\n }\n resolved.push(seg);\n }\n return resolved.join(\"/\");\n}\n\nasync function collectScannableFiles(\n dir: string,\n skipDirs: Set<string>,\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await collectScannableFiles(fullPath, skipDirs, out);\n } else if (entry.isFile() && (entry.name.endsWith(\".ts\") || entry.name.endsWith(\".tsx\"))) {\n out.push(fullPath);\n }\n }\n}\n\nfunction violationsForBoundarySpecifier(\n specifier: string,\n ctx: {\n filePath: string;\n rootDir: string;\n zone: string;\n bans: string[];\n rel: string;\n line: number;\n }\n): Array<{ file: string; line: number; rule: string }> {\n const target = resolveTargetZone(specifier, ctx.filePath, ctx.rootDir);\n if (!target) return [];\n const out: Array<{ file: string; line: number; rule: string }> = [];\n for (const banned of ctx.bans) {\n if (target.startsWith(banned)) {\n out.push({\n file: ctx.rel,\n line: ctx.line,\n rule: `\"${ctx.zone}/\" cannot import from \"${banned}\" (resolved: ${target})`,\n });\n }\n }\n return out;\n}\n\nfunction scanLineForBoundary(\n line: string,\n ctx: {\n filePath: string;\n rootDir: string;\n zone: string;\n bans: string[];\n rel: string;\n lineNumber: number;\n }\n): Array<{ file: string; line: number; rule: string }> {\n const trimmed = line.trim();\n if (trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\")) return [];\n const out: Array<{ file: string; line: number; rule: string }> = [];\n IMPORT_REGEX.lastIndex = 0;\n let match = IMPORT_REGEX.exec(line);\n while (match !== null) {\n const specifier = match[1] || match[2];\n if (specifier) {\n out.push(...violationsForBoundarySpecifier(specifier, { ...ctx, line: ctx.lineNumber }));\n }\n match = IMPORT_REGEX.exec(line);\n }\n return out;\n}\n\nfunction scanFileForBoundaryViolations(\n filePath: string,\n content: string,\n rootDir: string,\n zone: string,\n bans: string[]\n): Array<{ file: string; line: number; rule: string }> {\n const rel = relative(rootDir, filePath);\n const lines = content.split(\"\\n\");\n const out: Array<{ file: string; line: number; rule: string }> = [];\n for (let i = 0; i < lines.length; i++) {\n out.push(\n ...scanLineForBoundary(lines[i] ?? \"\", {\n filePath,\n rootDir,\n zone,\n bans,\n rel,\n lineNumber: i + 1,\n })\n );\n }\n return out;\n}\n\nconst boundaries: Check<BoundariesConfig | undefined> = {\n id: \"polly:boundaries\",\n description: \"Enforce directional import bans between top-level zones (src/tools/cli/scripts)\",\n filesRead: async (cfg, root) => {\n const c = { ...DEFAULT_BOUNDARIES, ...(cfg ?? {}) };\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_BOUNDARIES.skipDirs ?? []);\n const out: string[] = [];\n for (const zone of c.zones ?? DEFAULT_BOUNDARIES.zones ?? []) {\n await collectScannableFiles(join(root, zone), skipDirs, out);\n }\n return out.filter((p) => !isTestFile(relative(root, p)));\n },\n run: async ({ rootDir, config }) => {\n const c = { ...DEFAULT_BOUNDARIES, ...(config ?? {}) };\n const bans = c.bans ?? {};\n const zones = c.zones ?? [];\n const skipDirs = new Set(c.skipDirs ?? []);\n const all: Array<{ file: string; line: number; rule: string }> = [];\n for (const zone of zones) {\n const files: string[] = [];\n await collectScannableFiles(join(rootDir, zone), skipDirs, files);\n const fromBans = bans[zone] ?? [];\n if (fromBans.length === 0) continue;\n for (const filePath of files) {\n if (isTestFile(relative(rootDir, filePath))) continue;\n const content = await Bun.file(filePath).text();\n all.push(...scanFileForBoundaryViolations(filePath, content, rootDir, zone, fromBans));\n }\n }\n return {\n ok: all.length === 0,\n messages: all.map((v) => `${v.file}:${v.line}: ${v.rule}`),\n };\n },\n};\n\n// polly:server-imports — ban node:* / bun:* in browser packages\n\ntype ServerImportsConfig = {\n /** Path prefixes that are browser-targeting; their files cannot import banned specifiers. */\n browserPaths?: string[];\n /** Module specifiers that are server-only. */\n bannedSpecifiers?: string[];\n /** Files (relative to rootDir) excluded from the rule. */\n allowFiles?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_SERVER_IMPORTS: Required<Omit<ServerImportsConfig, \"allowFiles\">> = {\n browserPaths: [\n \"src/popup\",\n \"src/content\",\n \"src/devtools\",\n \"src/options\",\n \"src/offscreen\",\n \"src/page\",\n \"src/ui\",\n \"src/polly-ui\",\n \"tools/test/src/browser\",\n ],\n bannedSpecifiers: [\n \"bun:sqlite\",\n \"bun:ffi\",\n \"bun:jsc\",\n \"node:fs\",\n \"node:fs/promises\",\n \"node:path\",\n \"node:child_process\",\n \"node:net\",\n \"node:os\",\n \"node:http\",\n \"node:https\",\n \"node:stream\",\n \"node:worker_threads\",\n \"node:cluster\",\n \"node:tls\",\n \"node:dns\",\n \"better-sqlite3\",\n \"sqlite3\",\n \"ws\",\n ],\n skipDirs: [\"node_modules\", \"dist\", \".cache\"],\n};\n\nfunction buildBannedRegex(specs: string[]): RegExp {\n // Each specifier is regex-escaped so user-supplied names cannot inject\n // metacharacters into the compiled pattern. The output regex is a fixed\n // shape with the escaped alternation embedded; the only dynamic input is\n // the alternation list, and every entry has been quoted.\n const escaped = specs.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n return new RegExp(\n `(?:import|export)\\\\s+.*?from\\\\s+['\"](?:${escaped})(?:/[^'\"]*)?['\"]|require\\\\(\\\\s*['\"](?:${escaped})(?:/[^'\"]*)?['\"]\\\\s*\\\\)`\n );\n}\n\nfunction isExcludedFromServerCheck(rel: string, allow: Set<string>): boolean {\n if (allow.has(rel)) return true;\n return rel.includes(\"__tests__\") || rel.includes(\".test.\") || rel.includes(\".spec.\");\n}\n\nfunction scanFileForServerImports(rel: string, content: string, bannedRegex: RegExp): string[] {\n const violations: string[] = [];\n const lines = content.split(\"\\n\");\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n const trimmed = line.trim();\n if (trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\")) continue;\n if (bannedRegex.test(line)) {\n violations.push(`${rel}:${i + 1}: ${trimmed}`);\n }\n }\n return violations;\n}\n\nconst serverImports: Check<ServerImportsConfig | undefined> = {\n id: \"polly:server-imports\",\n description: \"Ban node:* / bun:* imports inside browser-targeting packages\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_SERVER_IMPORTS.skipDirs);\n const allow = new Set(c.allowFiles ?? []);\n const out: string[] = [];\n for (const p of c.browserPaths ?? DEFAULT_SERVER_IMPORTS.browserPaths) {\n await collectScannableFiles(join(root, p), skipDirs, out);\n }\n return out.filter((p) => !isExcludedFromServerCheck(relative(root, p), allow));\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_SERVER_IMPORTS.skipDirs);\n const bannedRegex = buildBannedRegex(\n c.bannedSpecifiers ?? DEFAULT_SERVER_IMPORTS.bannedSpecifiers\n );\n const allow = new Set(c.allowFiles ?? []);\n const violations: string[] = [];\n for (const p of c.browserPaths ?? DEFAULT_SERVER_IMPORTS.browserPaths) {\n const files: string[] = [];\n await collectScannableFiles(join(rootDir, p), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isExcludedFromServerCheck(rel, allow)) continue;\n const content = await Bun.file(filePath).text();\n violations.push(...scanFileForServerImports(rel, content, bannedRegex));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\nexport const additionalCoreChecks: Check<unknown>[] = [\n security as Check<unknown>,\n boundaries as Check<unknown>,\n serverImports as Check<unknown>,\n];\n",
22
22
  "/**\n * Three more checks bundled into `pollyCorePlugin`:\n *\n * - polly:forbidden-deps — import-graph ban list (#87)\n * - polly:no-state-hooks — ban useState/useReducer/useSignal (#99)\n * - polly:typographic-quotes — opt-in straight-vs-curly enforcement (#88)\n *\n * Each check is parameterised: defaults match polly's own pre-commit\n * surface; consumers override via `polly.config.ts`. Test files are\n * excluded by default for the import-walking checks since mocks and\n * fixtures legitimately reference banned packages.\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport { Glob } from \"bun\";\nimport type { Check } from \"../types\";\n\nconst SKIP_DIRS_DEFAULT = [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\"];\n\nfunction isCommentLine(trimmed: string): boolean {\n return trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\");\n}\n\nfunction isTestFile(rel: string): boolean {\n return (\n rel.includes(\"__tests__\") ||\n rel.includes(\".test.\") ||\n rel.includes(\".spec.\") ||\n rel.startsWith(\"tests/\")\n );\n}\n\nasync function walkScannableFiles(\n dir: string,\n skipDirs: Set<string>,\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walkScannableFiles(fullPath, skipDirs, out);\n } else if (entry.isFile() && (entry.name.endsWith(\".ts\") || entry.name.endsWith(\".tsx\"))) {\n out.push(fullPath);\n }\n }\n}\n\n// polly:forbidden-deps — import-graph ban list\n\ntype ForbiddenDepsConfig = {\n /** Map of category description → list of banned package prefixes. */\n banned?: Record<string, string[]>;\n /** Top-level zones to scan. */\n zones?: string[];\n /** Directories to skip. */\n skipDirs?: string[];\n};\n\nconst DEFAULT_FORBIDDEN: Required<ForbiddenDepsConfig> = {\n banned: {\n \"Alternative test runners (we use bun:test)\": [\n \"vitest\",\n \"jest\",\n \"@jest/globals\",\n \"mocha\",\n \"ava\",\n \"tape\",\n \"tap\",\n \"uvu\",\n ],\n \"Alternative linters/formatters (we use biome)\": [\n \"eslint\",\n \"@eslint\",\n \"prettier\",\n \"@prettier\",\n \"tslint\",\n ],\n \"Deprecated HTTP libraries (use fetch)\": [\n \"request\",\n \"request-promise\",\n \"request-promise-native\",\n ],\n \"Date-handling libraries (use Date or built-ins)\": [\"moment\", \"moment-timezone\"],\n },\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nconst IMPORT_REGEX =\n /(?:import|export)\\s+.*?from\\s+['\"]([^'\"]+)['\"]|require\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\nfunction lookupBanned(\n specifier: string,\n banned: Record<string, string[]>\n): { category: string } | null {\n for (const [category, prefixes] of Object.entries(banned)) {\n for (const p of prefixes) {\n if (specifier === p || specifier.startsWith(`${p}/`)) return { category };\n }\n }\n return null;\n}\n\nfunction scanLineForBanned(\n line: string,\n banned: Record<string, string[]>,\n rel: string,\n lineNumber: number\n): Array<{ file: string; line: number; content: string; category: string }> {\n const trimmed = line.trim();\n if (isCommentLine(trimmed)) return [];\n const out: Array<{ file: string; line: number; content: string; category: string }> = [];\n IMPORT_REGEX.lastIndex = 0;\n let match = IMPORT_REGEX.exec(line);\n while (match !== null) {\n const specifier = match[1] || match[2];\n const hit = specifier ? lookupBanned(specifier, banned) : null;\n if (hit) {\n out.push({ file: rel, line: lineNumber, content: trimmed, category: hit.category });\n }\n match = IMPORT_REGEX.exec(line);\n }\n return out;\n}\n\nasync function scanFileForForbidden(\n filePath: string,\n rel: string,\n banned: Record<string, string[]>\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n for (const v of scanLineForBanned(lines[i] ?? \"\", banned, rel, i + 1)) {\n out.push(`[${v.category}] ${v.file}:${v.line}: ${v.content}`);\n }\n }\n return out;\n}\n\nconst forbiddenDeps: Check<ForbiddenDepsConfig | undefined> = {\n id: \"polly:forbidden-deps\",\n description:\n \"Ban imports from a configured list of packages (alternative tools, deprecated libs)\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_FORBIDDEN.skipDirs);\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_FORBIDDEN.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => !isTestFile(relative(root, p)));\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const banned = c.banned ?? DEFAULT_FORBIDDEN.banned;\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_FORBIDDEN.skipDirs);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_FORBIDDEN.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel)) continue;\n violations.push(...(await scanFileForForbidden(filePath, rel, banned)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:no-state-hooks — ban local-state hooks (signals-first)\n\ntype NoStateHooksConfig = {\n /** Hook names to ban; defaults match polly's signals-first stance. */\n banned?: string[];\n /** Glob (relative to rootDir) of files exempt from the rule. */\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_NO_STATE_HOOKS: Required<NoStateHooksConfig> = {\n banned: [\"useState\", \"useReducer\", \"useSignal\"],\n allowedFiles: [],\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction escapeForAlternation(name: string): string {\n return name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction buildHookRegex(banned: string[]): RegExp {\n // Match either `import { useState[, …] } from …` or a call site `useState(`.\n const alts = banned.map(escapeForAlternation).join(\"|\");\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n return new RegExp(`\\\\b(${alts})\\\\b`);\n}\n\nfunction isAllowedByGlob(rel: string, allowedFiles: string[]): boolean {\n for (const pattern of allowedFiles) {\n if (new Glob(pattern).match(rel)) return true;\n }\n return false;\n}\n\nconst noStateHooks: Check<NoStateHooksConfig | undefined> = {\n id: \"polly:no-state-hooks\",\n description: \"Ban useState/useReducer/useSignal — polly is signals-first\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_STATE_HOOKS.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_STATE_HOOKS.allowedFiles;\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_STATE_HOOKS.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const banned = c.banned ?? DEFAULT_NO_STATE_HOOKS.banned;\n if (banned.length === 0) return { ok: true, messages: [] };\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_STATE_HOOKS.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_STATE_HOOKS.allowedFiles;\n const regex = buildHookRegex(banned);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_STATE_HOOKS.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(...(await scanFileForHookCalls(filePath, rel, regex)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\nasync function scanFileForHookCalls(\n filePath: string,\n rel: string,\n regex: RegExp\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (isCommentLine(line.trim())) continue;\n if (regex.test(line)) out.push(`${rel}:${i + 1}: ${line.trim()}`);\n }\n return out;\n}\n\n// polly:typographic-quotes — opt-in straight-vs-curly enforcement\n\ntype TypographicQuotesConfig = {\n /** Files matched by these globs must use typographic (curly) quotes. */\n typographicZone?: string[];\n /** Files matched by these globs must use straight quotes. */\n straightZone?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst STRAIGHT_PATTERN = /[\"']/;\nconst TYPOGRAPHIC_PATTERN = /[‘’“”]/;\n\nconst DEFAULT_TYPOGRAPHIC: Required<TypographicQuotesConfig> = {\n // Empty defaults: the rule is no-op until a consumer configures zones.\n typographicZone: [],\n straightZone: [],\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction fileMatchesAnyGlob(rel: string, globs: string[]): boolean {\n for (const g of globs) {\n if (new Glob(g).match(rel)) return true;\n }\n return false;\n}\n\nconst typographicQuotes: Check<TypographicQuotesConfig | undefined> = {\n id: \"polly:typographic-quotes\",\n description:\n \"Enforce typographic quotes inside configured zones, straight quotes outside (opt-in)\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_TYPOGRAPHIC.skipDirs);\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_TYPOGRAPHIC.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out;\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const tz = c.typographicZone ?? DEFAULT_TYPOGRAPHIC.typographicZone;\n const sz = c.straightZone ?? DEFAULT_TYPOGRAPHIC.straightZone;\n if (tz.length === 0 && sz.length === 0) return { ok: true, messages: [] };\n return runTypographicScan(rootDir, c, tz, sz);\n },\n};\n\nasync function scanFileForQuoteViolations(\n filePath: string,\n rel: string,\n inTypographicZone: boolean,\n inStraightZone: boolean\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (inTypographicZone && STRAIGHT_PATTERN.test(line)) {\n out.push(`${rel}:${i + 1}: straight quote in typographic zone — ${line.trim()}`);\n }\n if (inStraightZone && TYPOGRAPHIC_PATTERN.test(line)) {\n out.push(`${rel}:${i + 1}: typographic quote in straight zone — ${line.trim()}`);\n }\n }\n return out;\n}\n\nasync function runTypographicScan(\n rootDir: string,\n c: TypographicQuotesConfig,\n tz: string[],\n sz: string[]\n): Promise<{ ok: boolean; messages: string[] }> {\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_TYPOGRAPHIC.skipDirs);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_TYPOGRAPHIC.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n const inT = fileMatchesAnyGlob(rel, tz);\n const inS = fileMatchesAnyGlob(rel, sz);\n if (!inT && !inS) continue;\n violations.push(...(await scanFileForQuoteViolations(filePath, rel, inT, inS)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n}\n\nexport const extraCoreChecks: Check<unknown>[] = [\n forbiddenDeps as Check<unknown>,\n noStateHooks as Check<unknown>,\n typographicQuotes as Check<unknown>,\n];\n",
23
- "/**\n * Import-graph checks for `pollyCorePlugin`:\n *\n * - polly:relative-imports — ban `../` imports beyond a depth threshold (#84)\n * - polly:tsconfig-paths — ban `compilerOptions.paths` aliases (#84)\n * - polly:no-raw-http — force HTTP through a canonical client (#86)\n * - polly:types — multi-package tsc --noEmit orchestrator (#85)\n *\n * All four are parameterised. Defaults are silent or zero-impact unless a\n * consumer opts in via `polly.config.ts`. Polly's own pre-commit pipeline\n * does not currently run these — they exist primarily for downstream\n * consumers (lingua, fairfox, warehouse-experiments) and ship under the\n * core plugin namespace so adoption is one config-block change away.\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport { Glob } from \"bun\";\nimport type { Check } from \"../types\";\n\nconst SKIP_DIRS_DEFAULT = [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\"];\n\nfunction isCommentLine(trimmed: string): boolean {\n return trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\");\n}\n\nfunction isTestFile(rel: string): boolean {\n return (\n rel.includes(\"__tests__\") ||\n rel.includes(\".test.\") ||\n rel.includes(\".spec.\") ||\n rel.startsWith(\"tests/\")\n );\n}\n\nasync function walkScannableFiles(\n dir: string,\n skipDirs: Set<string>,\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walkScannableFiles(fullPath, skipDirs, out);\n } else if (entry.isFile() && (entry.name.endsWith(\".ts\") || entry.name.endsWith(\".tsx\"))) {\n out.push(fullPath);\n }\n }\n}\n\nfunction isAllowedByGlob(rel: string, globs: string[]): boolean {\n for (const g of globs) {\n if (new Glob(g).match(rel)) return true;\n }\n return false;\n}\n\nconst IMPORT_REGEX =\n /(?:import|export)\\s+.*?from\\s+['\"]([^'\"]+)['\"]|require\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\nfunction specifiersInLine(line: string): string[] {\n const out: string[] = [];\n IMPORT_REGEX.lastIndex = 0;\n let match = IMPORT_REGEX.exec(line);\n while (match !== null) {\n const s = match[1] || match[2];\n if (s) out.push(s);\n match = IMPORT_REGEX.exec(line);\n }\n return out;\n}\n\n// polly:relative-imports — ban deep `../` imports\n\ntype RelativeImportsConfig = {\n /** Maximum depth of `../` traversal allowed; default 1. */\n maxDepth?: number;\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_RELATIVE: Required<RelativeImportsConfig> = {\n maxDepth: 1,\n allowedFiles: [],\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction relativeDepth(specifier: string): number {\n if (!specifier.startsWith(\"..\")) return 0;\n let depth = 0;\n for (const segment of specifier.split(\"/\")) {\n if (segment === \"..\") depth++;\n else break;\n }\n return depth;\n}\n\nasync function scanFileForRelativeViolations(\n filePath: string,\n rel: string,\n maxDepth: number\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (isCommentLine(line.trim())) continue;\n for (const specifier of specifiersInLine(line)) {\n if (relativeDepth(specifier) > maxDepth) {\n out.push(`${rel}:${i + 1}: import \"${specifier}\" exceeds maxDepth ${maxDepth}`);\n }\n }\n }\n return out;\n}\n\nconst relativeImports: Check<RelativeImportsConfig | undefined> = {\n id: \"polly:relative-imports\",\n description: \"Ban `../` imports deeper than a configured threshold\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_RELATIVE.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_RELATIVE.allowedFiles;\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_RELATIVE.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const maxDepth = c.maxDepth ?? DEFAULT_RELATIVE.maxDepth;\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_RELATIVE.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_RELATIVE.allowedFiles;\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_RELATIVE.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(...(await scanFileForRelativeViolations(filePath, rel, maxDepth)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:tsconfig-paths — ban `compilerOptions.paths` aliases\n\ntype TsconfigPathsConfig = {\n /** Filenames to scan; defaults to tsconfig.json variants. */\n files?: string[];\n /** Allowed alias patterns to keep (e.g. [\"@/*\"] for opt-in alias use). */\n allowedAliases?: string[];\n};\n\nconst DEFAULT_TSCONFIG_PATHS: Required<TsconfigPathsConfig> = {\n files: [\"tsconfig.json\", \"tsconfig.base.json\"],\n allowedAliases: [],\n};\n\nasync function findTsconfigs(rootDir: string, names: string[]): Promise<string[]> {\n const out: string[] = [];\n const skipDirs = new Set(SKIP_DIRS_DEFAULT);\n async function walk(dir: string): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walk(fullPath);\n } else if (entry.isFile() && names.includes(entry.name)) {\n out.push(fullPath);\n }\n }\n }\n await walk(rootDir);\n return out;\n}\n\nconst tsconfigPaths: Check<TsconfigPathsConfig | undefined> = {\n id: \"polly:tsconfig-paths\",\n description: \"Flag `compilerOptions.paths` entries (use package.json subpath imports instead)\",\n filesRead: async (cfg, root) => findTsconfigs(root, cfg?.files ?? DEFAULT_TSCONFIG_PATHS.files),\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const files = c.files ?? DEFAULT_TSCONFIG_PATHS.files;\n const allowed = new Set(c.allowedAliases ?? DEFAULT_TSCONFIG_PATHS.allowedAliases);\n const violations: string[] = [];\n for (const tsconfigPath of await findTsconfigs(rootDir, files)) {\n const raw = await Bun.file(tsconfigPath).text();\n const stripped = raw.replace(/\\/\\/[^\\n]*\\n/g, \"\\n\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n let parsed: { compilerOptions?: { paths?: Record<string, unknown> } };\n try {\n parsed = JSON.parse(stripped) as unknown as {\n compilerOptions?: { paths?: Record<string, unknown> };\n };\n } catch {\n violations.push(`${relative(rootDir, tsconfigPath)}: failed to parse as JSON`);\n continue;\n }\n const paths = parsed.compilerOptions?.paths ?? {};\n for (const alias of Object.keys(paths)) {\n if (allowed.has(alias)) continue;\n violations.push(`${relative(rootDir, tsconfigPath)}: paths[\"${alias}\"] is set`);\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:no-raw-http — force HTTP through a canonical client\n\ntype NoRawHttpConfig = {\n /** Specifier for the canonical client (e.g. `#src/api/client`). Required. */\n canonicalClient?: string;\n banned?: string[];\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_NO_RAW_HTTP: Omit<Required<NoRawHttpConfig>, \"canonicalClient\"> = {\n banned: [\"fetch\", \"XMLHttpRequest\", \"axios\"],\n allowedFiles: [],\n zones: [\"src\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction buildBannedCallRegex(banned: string[]): RegExp {\n const alts = banned.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n return new RegExp(`\\\\b(${alts})\\\\s*[\\\\(.]`);\n}\n\nasync function scanFileForRawHttp(\n filePath: string,\n rel: string,\n canonicalClient: string,\n bannedRegex: RegExp\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n // The canonical-client implementation file legitimately uses the banned\n // identifiers — that's where the wrapping happens. We detect it\n // structurally by checking for an `export ... from \"<canonicalClient>\"`\n // re-export line. A simple substring test is enough; the canonical\n // client is a fixed module specifier the consumer configured, not an\n // arbitrary regex.\n const isCanonicalImpl = lines.some(\n (l) => l.includes(`from \"${canonicalClient}\"`) || l.includes(`from '${canonicalClient}'`)\n );\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n const trimmed = line.trim();\n if (isCommentLine(trimmed)) continue;\n if (bannedRegex.test(line) && !isCanonicalImpl) {\n out.push(`${rel}:${i + 1}: ${trimmed}`);\n }\n }\n return out;\n}\n\nconst noRawHttp: Check<NoRawHttpConfig | undefined> = {\n id: \"polly:no-raw-http\",\n description: \"Force HTTP calls through a configured canonical client (opt-in)\",\n filesRead: async (cfg, root) => {\n if (!cfg?.canonicalClient) return [];\n const skipDirs = new Set(cfg.skipDirs ?? DEFAULT_NO_RAW_HTTP.skipDirs);\n const allowed = cfg.allowedFiles ?? DEFAULT_NO_RAW_HTTP.allowedFiles;\n const out: string[] = [];\n for (const z of cfg.zones ?? DEFAULT_NO_RAW_HTTP.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n if (!c.canonicalClient) {\n // No canonical client configured: rule is no-op. The umbrella's\n // \"fail loud\" stance applies when the user has half-configured it,\n // not when they haven't engaged with the rule at all.\n return { ok: true, messages: [] };\n }\n const banned = c.banned ?? DEFAULT_NO_RAW_HTTP.banned;\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_RAW_HTTP.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_RAW_HTTP.allowedFiles;\n const bannedRegex = buildBannedCallRegex(banned);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_RAW_HTTP.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(\n ...(await scanFileForRawHttp(filePath, rel, c.canonicalClient, bannedRegex))\n );\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:types — multi-package tsc --noEmit orchestrator\n\ntype TypesConfig = {\n /** Workspace globs to discover packages. */\n workspaces?: string[];\n /** Concurrency cap; defaults to os.cpus().length capped at workspace count. */\n concurrency?: number;\n};\n\nasync function runTscFor(\n packagePath: string,\n rootDir: string\n): Promise<{ ok: boolean; output: string }> {\n const proc = Bun.spawn([\"bunx\", \"tsc\", \"--noEmit\", \"-p\", packagePath], {\n cwd: rootDir,\n stdout: \"pipe\",\n stderr: \"pipe\",\n });\n const [stdout, stderr] = await Promise.all([\n new Response(proc.stdout).text(),\n new Response(proc.stderr).text(),\n ]);\n await proc.exited;\n return { ok: proc.exitCode === 0, output: `${stdout}${stderr}` };\n}\n\nasync function findWorkspaces(rootDir: string, patterns: string[]): Promise<string[]> {\n const out: string[] = [];\n for (const pattern of patterns) {\n const glob = new Glob(`${pattern}/tsconfig.json`);\n for await (const file of glob.scan({ cwd: rootDir, absolute: true })) {\n // Trim the trailing /tsconfig.json to get the package directory.\n out.push(file.replace(/\\/tsconfig\\.json$/, \"\"));\n }\n }\n return [...new Set(out)];\n}\n\nconst types: Check<TypesConfig | undefined> = {\n id: \"polly:types\",\n description: \"Run `tsc --noEmit` against each workspace package in parallel\",\n filesRead: async () => {\n // The TypeScript compiler walks the entire dependency graph from\n // tsconfig.json out, which is far wider than what we can easily\n // declare here. We keep filesRead empty so the orchestrator cache\n // always misses on this check; tsc has its own incremental cache,\n // and that is the right place for that complexity to live.\n return [];\n },\n run: async ({ rootDir, config }) => {\n const patterns = (config ?? {}).workspaces ?? [\"packages/*\", \".\"];\n const packages = await findWorkspaces(rootDir, patterns);\n if (packages.length === 0) return { ok: true, messages: [\"no workspace packages found\"] };\n const results = await Promise.all(packages.map((p) => runTscFor(p, rootDir)));\n return aggregateTypesResults(packages, results, rootDir);\n },\n};\n\nfunction appendTscFailure(messages: string[], relPkg: string, output: string): void {\n messages.push(`${relPkg}: tsc --noEmit failed`);\n const trimmed = output.trim();\n if (!trimmed) return;\n for (const ln of trimmed.split(\"\\n\").slice(0, 30)) messages.push(` ${ln}`);\n}\n\nfunction aggregateTypesResults(\n packages: string[],\n results: Array<{ ok: boolean; output: string }>,\n rootDir: string\n): { ok: boolean; messages: string[] } {\n const messages: string[] = [];\n let ok = true;\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n const r = results[i];\n if (!pkg || !r || r.ok) continue;\n ok = false;\n appendTscFailure(messages, relative(rootDir, pkg) || \".\", r.output);\n }\n return { ok, messages };\n}\n\nexport const importCoreChecks: Check<unknown>[] = [\n relativeImports as Check<unknown>,\n tsconfigPaths as Check<unknown>,\n noRawHttp as Check<unknown>,\n types as Check<unknown>,\n];\n",
23
+ "/**\n * Import-graph checks for `pollyCorePlugin`:\n *\n * - polly:relative-imports — ban `../` imports beyond a depth threshold (#84)\n * - polly:tsconfig-paths — ban `compilerOptions.paths` aliases (#84)\n * - polly:no-raw-http — force HTTP through a canonical client (#86)\n * - polly:types — multi-package tsc --noEmit orchestrator (#85)\n *\n * All four are parameterised. Defaults are silent or zero-impact unless a\n * consumer opts in via `polly.config.ts`. Polly's own pre-commit pipeline\n * does not currently run these — they exist primarily for downstream\n * consumers (lingua, fairfox, warehouse-experiments) and ship under the\n * core plugin namespace so adoption is one config-block change away.\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport { Glob } from \"bun\";\nimport type { Check } from \"../types\";\n\nconst SKIP_DIRS_DEFAULT = [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\"];\n\nfunction isCommentLine(trimmed: string): boolean {\n return trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\");\n}\n\nfunction isTestFile(rel: string): boolean {\n return (\n rel.includes(\"__tests__\") ||\n rel.includes(\".test.\") ||\n rel.includes(\".spec.\") ||\n rel.startsWith(\"tests/\")\n );\n}\n\nasync function walkScannableFiles(\n dir: string,\n skipDirs: Set<string>,\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walkScannableFiles(fullPath, skipDirs, out);\n } else if (entry.isFile() && (entry.name.endsWith(\".ts\") || entry.name.endsWith(\".tsx\"))) {\n out.push(fullPath);\n }\n }\n}\n\nfunction isAllowedByGlob(rel: string, globs: string[]): boolean {\n for (const g of globs) {\n if (new Glob(g).match(rel)) return true;\n }\n return false;\n}\n\nconst IMPORT_REGEX =\n /(?:import|export)\\s+.*?from\\s+['\"]([^'\"]+)['\"]|require\\(\\s*['\"]([^'\"]+)['\"]\\s*\\)/g;\n\nfunction specifiersInLine(line: string): string[] {\n const out: string[] = [];\n IMPORT_REGEX.lastIndex = 0;\n let match = IMPORT_REGEX.exec(line);\n while (match !== null) {\n const s = match[1] || match[2];\n if (s) out.push(s);\n match = IMPORT_REGEX.exec(line);\n }\n return out;\n}\n\n// polly:relative-imports — ban deep `../` imports\n\ntype RelativeImportsConfig = {\n /** Maximum depth of `../` traversal allowed; default 1. */\n maxDepth?: number;\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_RELATIVE: Required<RelativeImportsConfig> = {\n maxDepth: 1,\n allowedFiles: [],\n zones: [\"src\", \"tools\", \"cli\", \"scripts\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction relativeDepth(specifier: string): number {\n if (!specifier.startsWith(\"..\")) return 0;\n let depth = 0;\n for (const segment of specifier.split(\"/\")) {\n if (segment === \"..\") depth++;\n else break;\n }\n return depth;\n}\n\nasync function scanFileForRelativeViolations(\n filePath: string,\n rel: string,\n maxDepth: number\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (isCommentLine(line.trim())) continue;\n for (const specifier of specifiersInLine(line)) {\n if (relativeDepth(specifier) > maxDepth) {\n out.push(`${rel}:${i + 1}: import \"${specifier}\" exceeds maxDepth ${maxDepth}`);\n }\n }\n }\n return out;\n}\n\nconst relativeImports: Check<RelativeImportsConfig | undefined> = {\n id: \"polly:relative-imports\",\n description: \"Ban `../` imports deeper than a configured threshold\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_RELATIVE.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_RELATIVE.allowedFiles;\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_RELATIVE.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const maxDepth = c.maxDepth ?? DEFAULT_RELATIVE.maxDepth;\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_RELATIVE.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_RELATIVE.allowedFiles;\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_RELATIVE.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(...(await scanFileForRelativeViolations(filePath, rel, maxDepth)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:tsconfig-paths — ban `compilerOptions.paths` aliases\n\ntype TsconfigPathsConfig = {\n /** Filenames to scan; defaults to tsconfig.json variants. */\n files?: string[];\n /** Allowed alias patterns to keep (e.g. [\"@/*\"] for opt-in alias use). */\n allowedAliases?: string[];\n};\n\nconst DEFAULT_TSCONFIG_PATHS: Required<TsconfigPathsConfig> = {\n files: [\"tsconfig.json\", \"tsconfig.base.json\"],\n allowedAliases: [],\n};\n\nasync function findTsconfigs(rootDir: string, names: string[]): Promise<string[]> {\n const out: string[] = [];\n const skipDirs = new Set(SKIP_DIRS_DEFAULT);\n async function walk(dir: string): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walk(fullPath);\n } else if (entry.isFile() && names.includes(entry.name)) {\n out.push(fullPath);\n }\n }\n }\n await walk(rootDir);\n return out;\n}\n\nconst tsconfigPaths: Check<TsconfigPathsConfig | undefined> = {\n id: \"polly:tsconfig-paths\",\n description: \"Flag `compilerOptions.paths` entries (use package.json subpath imports instead)\",\n filesRead: async (cfg, root) => findTsconfigs(root, cfg?.files ?? DEFAULT_TSCONFIG_PATHS.files),\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const files = c.files ?? DEFAULT_TSCONFIG_PATHS.files;\n const allowed = new Set(c.allowedAliases ?? DEFAULT_TSCONFIG_PATHS.allowedAliases);\n const violations: string[] = [];\n for (const tsconfigPath of await findTsconfigs(rootDir, files)) {\n const raw = await Bun.file(tsconfigPath).text();\n const stripped = raw.replace(/\\/\\/[^\\n]*\\n/g, \"\\n\").replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\");\n let parsed: { compilerOptions?: { paths?: Record<string, unknown> } };\n try {\n parsed = JSON.parse(stripped) as unknown as {\n compilerOptions?: { paths?: Record<string, unknown> };\n };\n } catch {\n violations.push(`${relative(rootDir, tsconfigPath)}: failed to parse as JSON`);\n continue;\n }\n const paths = parsed.compilerOptions?.paths ?? {};\n for (const alias of Object.keys(paths)) {\n if (allowed.has(alias)) continue;\n violations.push(`${relative(rootDir, tsconfigPath)}: paths[\"${alias}\"] is set`);\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:no-raw-http — force HTTP through a canonical client\n\ntype NoRawHttpConfig = {\n /** Specifier for the canonical client (e.g. `#src/api/client`). Required. */\n canonicalClient?: string;\n banned?: string[];\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_NO_RAW_HTTP: Omit<Required<NoRawHttpConfig>, \"canonicalClient\"> = {\n banned: [\"fetch\", \"XMLHttpRequest\", \"axios\"],\n allowedFiles: [],\n zones: [\"src\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction buildBannedCallRegex(banned: string[]): RegExp {\n const alts = banned.map((s) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")).join(\"|\");\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n return new RegExp(`\\\\b(${alts})\\\\s*[\\\\(.]`);\n}\n\nasync function scanFileForRawHttp(\n filePath: string,\n rel: string,\n canonicalClient: string,\n bannedRegex: RegExp\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n // The canonical-client implementation file legitimately uses the banned\n // identifiers — that's where the wrapping happens. We detect it\n // structurally by checking for an `export ... from \"<canonicalClient>\"`\n // re-export line. A simple substring test is enough; the canonical\n // client is a fixed module specifier the consumer configured, not an\n // arbitrary regex.\n const isCanonicalImpl = lines.some(\n (l) => l.includes(`from \"${canonicalClient}\"`) || l.includes(`from '${canonicalClient}'`)\n );\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n const trimmed = line.trim();\n if (isCommentLine(trimmed)) continue;\n if (bannedRegex.test(line) && !isCanonicalImpl) {\n out.push(`${rel}:${i + 1}: ${trimmed}`);\n }\n }\n return out;\n}\n\nconst noRawHttp: Check<NoRawHttpConfig | undefined> = {\n id: \"polly:no-raw-http\",\n description: \"Force HTTP calls through a configured canonical client (opt-in)\",\n filesRead: async (cfg, root) => {\n if (!cfg?.canonicalClient) return [];\n const skipDirs = new Set(cfg.skipDirs ?? DEFAULT_NO_RAW_HTTP.skipDirs);\n const allowed = cfg.allowedFiles ?? DEFAULT_NO_RAW_HTTP.allowedFiles;\n const out: string[] = [];\n for (const z of cfg.zones ?? DEFAULT_NO_RAW_HTTP.zones) {\n await walkScannableFiles(join(root, z), skipDirs, out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n if (!c.canonicalClient) {\n // No canonical client configured: rule is no-op. The umbrella's\n // \"fail loud\" stance applies when the user has half-configured it,\n // not when they haven't engaged with the rule at all.\n return { ok: true, messages: [] };\n }\n const banned = c.banned ?? DEFAULT_NO_RAW_HTTP.banned;\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_RAW_HTTP.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_RAW_HTTP.allowedFiles;\n const bannedRegex = buildBannedCallRegex(banned);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_RAW_HTTP.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(\n ...(await scanFileForRawHttp(filePath, rel, c.canonicalClient, bannedRegex))\n );\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\n// polly:types — multi-package tsc --noEmit orchestrator\n\ntype TypesConfig = {\n /** Workspace globs to discover packages. */\n workspaces?: string[];\n /** Concurrency cap; defaults to os.cpus().length capped at workspace count. */\n concurrency?: number;\n};\n\nasync function runTscFor(\n packagePath: string,\n rootDir: string\n): Promise<{ ok: boolean; output: string }> {\n const proc = Bun.spawn([\"bunx\", \"tsc\", \"--noEmit\", \"-p\", packagePath], {\n cwd: rootDir,\n stdout: \"pipe\",\n stderr: \"pipe\",\n });\n const [stdout, stderr] = await Promise.all([\n new Response(proc.stdout).text(),\n new Response(proc.stderr).text(),\n ]);\n await proc.exited;\n return { ok: proc.exitCode === 0, output: `${stdout}${stderr}` };\n}\n\nasync function findWorkspaces(rootDir: string, patterns: string[]): Promise<string[]> {\n const out: string[] = [];\n for (const pattern of patterns) {\n const glob = new Glob(`${pattern}/tsconfig.json`);\n for await (const file of glob.scan({ cwd: rootDir, absolute: true })) {\n // Trim the trailing /tsconfig.json to get the package directory.\n out.push(file.replace(/\\/tsconfig\\.json$/, \"\"));\n }\n }\n return [...new Set(out)];\n}\n\nconst types: Check<TypesConfig | undefined> = {\n id: \"polly:types\",\n description: \"Run `tsc --noEmit` against each workspace package in parallel\",\n filesRead: async () => {\n // The TypeScript compiler walks the entire dependency graph from\n // tsconfig.json out, which is far wider than what we can easily\n // declare here. We keep filesRead empty so the orchestrator cache\n // always misses on this check; tsc has its own incremental cache,\n // and that is the right place for that complexity to live.\n return [];\n },\n run: async ({ rootDir, config }) => {\n const patterns = config?.workspaces ?? [\"packages/*\", \".\"];\n const packages = await findWorkspaces(rootDir, patterns);\n if (packages.length === 0) return { ok: true, messages: [\"no workspace packages found\"] };\n const results = await Promise.all(packages.map((p) => runTscFor(p, rootDir)));\n return aggregateTypesResults(packages, results, rootDir);\n },\n};\n\nfunction appendTscFailure(messages: string[], relPkg: string, output: string): void {\n messages.push(`${relPkg}: tsc --noEmit failed`);\n const trimmed = output.trim();\n if (!trimmed) return;\n for (const ln of trimmed.split(\"\\n\").slice(0, 30)) messages.push(` ${ln}`);\n}\n\nfunction aggregateTypesResults(\n packages: string[],\n results: Array<{ ok: boolean; output: string }>,\n rootDir: string\n): { ok: boolean; messages: string[] } {\n const messages: string[] = [];\n let ok = true;\n for (let i = 0; i < packages.length; i++) {\n const pkg = packages[i];\n const r = results[i];\n if (!pkg || !r || r.ok) continue;\n ok = false;\n appendTscFailure(messages, relative(rootDir, pkg) || \".\", r.output);\n }\n return { ok, messages };\n}\n\nexport const importCoreChecks: Check<unknown>[] = [\n relativeImports as Check<unknown>,\n tsconfigPaths as Check<unknown>,\n noRawHttp as Check<unknown>,\n types as Check<unknown>,\n];\n",
24
24
  "/**\n * `pollyUiPlugin` — the polly-ui-provided plugin (#89, #90, #91–#94).\n *\n * Re-homes the CSS conformance family and shared-components ban under a\n * dedicated `polly-ui` namespace, and adds a new `no-inline-handlers`\n * check for JSX event handlers. Every wrap reuses the underlying\n * function from `tools/quality/src/css/*` and\n * `tools/quality/src/check-shared-components.ts` so behaviour is\n * identical to the pre-host invocation; only the integration surface\n * changes.\n *\n * Out of scope for this release:\n * - The data-action dispatcher *runtime* described in #90. The check\n * ships here so a project can ban inline handlers today; the\n * dispatcher needs a real Preact implementation that mounts near\n * <OverlayRoot> and registers a delegated event listener, and that\n * work belongs in `src/polly-ui/actions.tsx` rather than under the\n * quality plugin host. The check on its own is useful — it forces\n * the consumer to pick an alternative — and the runtime can land\n * in a follow-up release without changing the check's id.\n * - Registry-driven CSS validation. The four CSS checks currently\n * parse polly-ui's CSS at scan time. The new\n * `@fairfox/polly/ui/registry` (introduced alongside this plugin)\n * exposes the canonical token + component lists as data, and a\n * follow-up can swap the parse-time discovery for a registry\n * lookup. The shape of the wraps does not change when that\n * happens; only the inner implementation does.\n */\n\nimport { readdir } from \"node:fs/promises\";\nimport { join, relative } from \"node:path\";\nimport { Glob } from \"bun\";\nimport { checkSharedComponents } from \"../check-shared-components\";\nimport { checkCssLayout } from \"../css/check-layout\";\nimport { checkCssQuality } from \"../css/check-quality\";\nimport { checkCssUnused } from \"../css/check-unused\";\nimport { checkCssVars } from \"../css/check-vars\";\nimport type { Check, QualityPlugin } from \"../types\";\n\nconst SKIP_DIRS_DEFAULT = [\"node_modules\", \".git\", \"dist\", \".bun\", \".cache\"];\n\nfunction isCommentLine(trimmed: string): boolean {\n return trimmed.startsWith(\"//\") || trimmed.startsWith(\"*\") || trimmed.startsWith(\"/*\");\n}\n\nfunction isAllowedByGlob(rel: string, globs: string[]): boolean {\n for (const g of globs) {\n if (new Glob(g).match(rel)) return true;\n }\n return false;\n}\n\nasync function walkScannableFiles(\n dir: string,\n skipDirs: Set<string>,\n exts: string[],\n out: string[]\n): Promise<void> {\n let entries: import(\"node:fs\").Dirent[];\n try {\n entries = await readdir(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const entry of entries) {\n const fullPath = join(dir, entry.name);\n if (entry.isDirectory()) {\n if (!skipDirs.has(entry.name)) await walkScannableFiles(fullPath, skipDirs, exts, out);\n } else if (entry.isFile() && exts.some((e) => entry.name.endsWith(e))) {\n out.push(fullPath);\n }\n }\n}\n\n// polly-ui:css-layout (#91)\n\ntype CssCheckConfig = {\n rootDir?: string;\n skipDirs?: string[];\n};\n\nconst cssLayout: Check<CssCheckConfig | undefined> = {\n id: \"polly-ui:css-layout\",\n description: \"Enforce that layout values come from the <Layout> primitive, not ad-hoc CSS\",\n run: async ({ rootDir, config }) => {\n const r = await checkCssLayout({\n rootDir,\n ...(config?.skipDirs ? { skipDirs: config.skipDirs } : {}),\n });\n return {\n ok: r.violations.length === 0,\n messages: r.violations.map((v) => `${v.file}:${v.line}: ${v.rule}`),\n };\n },\n};\n\nconst cssQuality: Check<CssCheckConfig | undefined> = {\n id: \"polly-ui:css-quality\",\n description: \"Enforce that styled values come from semantic tokens, not literals\",\n run: async ({ rootDir, config }) => {\n const r = await checkCssQuality({\n rootDir,\n ...(config?.skipDirs ? { skipDirs: config.skipDirs } : {}),\n });\n return {\n ok: r.violations.length === 0,\n messages: r.violations.map((v) => `${v.file}:${v.line}: ${v.rule}`),\n };\n },\n};\n\nconst cssVars: Check<CssCheckConfig | undefined> = {\n id: \"polly-ui:css-vars\",\n description: \"Flag `var(--name)` references that resolve to no `--name:` definition\",\n run: async ({ rootDir, config }) => {\n const r = await checkCssVars({\n rootDir,\n ...(config?.skipDirs ? { skipDirs: config.skipDirs } : {}),\n });\n return {\n ok: r.violations.length === 0,\n messages: r.violations.map((v) => `${v.file}:${v.line}: ${v.rule}`),\n };\n },\n};\n\nconst cssUnused: Check<CssCheckConfig | undefined> = {\n id: \"polly-ui:css-unused\",\n description: \"Surface CSS-module selectors that are never referenced from JS/TSX (advisory)\",\n run: async ({ rootDir, config }) => {\n const r = await checkCssUnused({\n rootDir,\n ...(config?.skipDirs ? { skipDirs: config.skipDirs } : {}),\n });\n return {\n // Advisory: never fails the run, just reports.\n ok: true,\n messages: r.violations.map((v) => `${v.file}:${v.line}: ${v.rule}`),\n };\n },\n};\n\n// polly-ui:shared-components (#92)\n\ntype SharedComponentsConfig = {\n scanRoot?: string;\n skipDirs?: string[];\n exemptPackages?: string[];\n};\n\nconst sharedComponents: Check<SharedComponentsConfig | undefined> = {\n id: \"polly-ui:shared-components\",\n description:\n \"Ban native interactive HTML elements; require the polly-ui primitive (<Button>, <Modal>, etc.)\",\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const r = await checkSharedComponents({\n root: rootDir,\n ...(c.scanRoot ? { scanRoot: c.scanRoot } : {}),\n ...(c.skipDirs ? { skipDirs: new Set(c.skipDirs) } : {}),\n ...(c.exemptPackages ? { exemptPackages: new Set(c.exemptPackages) } : {}),\n });\n return {\n ok: r.violations.length === 0,\n messages: r.violations.map(\n (v) => `${v.file}:${v.line}: ${v.element} → ${v.replacement} — ${v.content}`\n ),\n };\n },\n};\n\n// polly-ui:no-inline-handlers (#90, check-only — runtime is a follow-up)\n\ntype NoInlineHandlersConfig = {\n banned?: string[];\n allowedFiles?: string[];\n zones?: string[];\n skipDirs?: string[];\n};\n\nconst DEFAULT_NO_INLINE_HANDLERS: Required<NoInlineHandlersConfig> = {\n banned: [\n \"onClick\",\n \"onSubmit\",\n \"onChange\",\n \"onInput\",\n \"onFocus\",\n \"onBlur\",\n \"onKeyDown\",\n \"onKeyUp\",\n \"onMouseDown\",\n \"onMouseUp\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n ],\n allowedFiles: [],\n zones: [\"src\"],\n skipDirs: SKIP_DIRS_DEFAULT,\n};\n\nfunction escapeRegex(name: string): string {\n return name.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nfunction buildHandlerRegex(banned: string[]): RegExp {\n const alts = banned.map(escapeRegex).join(\"|\");\n // Match `onClick={…}` and `onClick=\"…\"` and `onClick='…'` opening forms.\n // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n return new RegExp(`\\\\b(${alts})\\\\s*=\\\\s*\\\\{`);\n}\n\nfunction isTestFile(rel: string): boolean {\n return (\n rel.includes(\"__tests__\") ||\n rel.includes(\".test.\") ||\n rel.includes(\".spec.\") ||\n rel.startsWith(\"tests/\")\n );\n}\n\nasync function scanFileForInlineHandlers(\n filePath: string,\n rel: string,\n regex: RegExp\n): Promise<string[]> {\n const content = await Bun.file(filePath).text();\n const lines = content.split(\"\\n\");\n const out: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? \"\";\n if (isCommentLine(line.trim())) continue;\n if (regex.test(line)) {\n out.push(`${rel}:${i + 1}: ${line.trim()}`);\n }\n }\n return out;\n}\n\nconst noInlineHandlers: Check<NoInlineHandlersConfig | undefined> = {\n id: \"polly-ui:no-inline-handlers\",\n description:\n \"Ban inline JSX event handlers (use data-action delegation instead — see polly-ui actions runtime)\",\n filesRead: async (cfg, root) => {\n const c = cfg ?? {};\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_INLINE_HANDLERS.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_INLINE_HANDLERS.allowedFiles;\n const out: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_INLINE_HANDLERS.zones) {\n await walkScannableFiles(join(root, z), skipDirs, [\".tsx\"], out);\n }\n return out.filter((p) => {\n const rel = relative(root, p);\n return !isTestFile(rel) && !isAllowedByGlob(rel, allowed);\n });\n },\n run: async ({ rootDir, config }) => {\n const c = config ?? {};\n const banned = c.banned ?? DEFAULT_NO_INLINE_HANDLERS.banned;\n if (banned.length === 0) return { ok: true, messages: [] };\n const skipDirs = new Set(c.skipDirs ?? DEFAULT_NO_INLINE_HANDLERS.skipDirs);\n const allowed = c.allowedFiles ?? DEFAULT_NO_INLINE_HANDLERS.allowedFiles;\n const regex = buildHandlerRegex(banned);\n const violations: string[] = [];\n for (const z of c.zones ?? DEFAULT_NO_INLINE_HANDLERS.zones) {\n const files: string[] = [];\n await walkScannableFiles(join(rootDir, z), skipDirs, [\".tsx\"], files);\n for (const filePath of files) {\n const rel = relative(rootDir, filePath);\n if (isTestFile(rel) || isAllowedByGlob(rel, allowed)) continue;\n violations.push(...(await scanFileForInlineHandlers(filePath, rel, regex)));\n }\n }\n return { ok: violations.length === 0, messages: violations };\n },\n};\n\nexport const POLLY_UI_PLUGIN_VERSION = \"0.46.0\";\n\nexport const pollyUiPlugin: QualityPlugin = {\n name: \"polly-ui\",\n version: POLLY_UI_PLUGIN_VERSION,\n checks: [\n cssLayout as Check<unknown>,\n cssQuality as Check<unknown>,\n cssVars as Check<unknown>,\n cssUnused as Check<unknown>,\n sharedComponents as Check<unknown>,\n noInlineHandlers as Check<unknown>,\n ],\n};\n"
25
25
  ],
26
- "mappings": "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",
27
- "debugId": "ACEE4FF1CB9C29CD64756E2164756E21",
26
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAkCA;AACA;AAoBO,IAAM,iCAAwD;AAAA,EACnE,EAAE,SAAS,gBAAgB,SAAS,YAAY,aAAa,WAAW;AAAA,EACxE;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,aAAa;AAAA,IAGb,MAAM,CAAC,SAAS,sBAAsB,KAAK,IAAI;AAAA,EACjD;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,EAAE,SAAS,gBAAgB,SAAS,YAAY,aAAa,WAAW;AAAA,EACxE,EAAE,SAAS,cAAc,SAAS,UAAU,aAAa,eAAe;AAAA,EACxE,EAAE,SAAS,gBAAgB,SAAS,YAAY,aAAa,UAAU;AACzE;AAoCA,IAAM,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,QAAQ,QAAQ,SAAS,OAAO,CAAC;AAQpF,eAAsB,qBAAqB,CACzC,SACsC;AAAA,EACtC,MAAM,QAAQ,QAAQ,SAAS;AAAA,IAC7B,GAAG;AAAA,IACH,GAAI,QAAQ,mBAAmB,CAAC;AAAA,EAClC;AAAA,EACA,MAAM,WAAW,QAAQ,YAAY;AAAA,EACrC,MAAM,WAAW,QAAQ,YAAY;AAAA,EACrC,MAAM,iBAAiB,QAAQ,kBAAkB,IAAI;AAAA,EACrD,MAAM,eAAe,KAAK,QAAQ,MAAM,QAAQ;AAAA,EAChD,MAAM,aAAyC,CAAC;AAAA,EAEhD,MAAM,cAAc,cAAc;AAAA,IAChC,MAAM,QAAQ;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EAED,OAAO;AAAA,IACL;AAAA,IACA,KAAK,CAAC,KAAK;AAAA,MACT,IAAI,WAAW,WAAW,GAAG;AAAA,QAC3B,IAAI,wBAAwB;AAAA,QAC5B;AAAA,MACF;AAAA,MACA,IAAI,uBAAuB,WAAW;AAAA,CAA8B;AAAA,MACpE,WAAW,KAAK,YAAY;AAAA,QAC1B,IAAI,KAAK,EAAE,QAAQ,EAAE,UAAS,EAAE,iBAAiB,EAAE,aAAa;AAAA,QAChE,IAAI,OAAO,EAAE;AAAA,CAAW;AAAA,MAC1B;AAAA,MACA,IAAI,uFAAuF;AAAA;AAAA,EAE/F;AAAA;AAYF,eAAe,aAAa,CAAC,KAAa,OAAiC;AAAA,EACzE,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,KAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,MAAM,SAAS,IAAI,MAAM,IAAI,GAAG;AAAA,QAClC;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,MAAM,gBAAgB,MAAM,eAAe,IAAI,MAAM,IAAI,GAAG;AAAA,QACtE;AAAA,MACF;AAAA,MACA,MAAM,cAAc,UAAU,KAAK;AAAA,IACrC,EAAO,SAAI,MAAM,OAAO,MAAM,MAAM,KAAK,SAAS,MAAM,KAAK,MAAM,KAAK,SAAS,MAAM,IAAI;AAAA,MACzF,MAAM,SAAS,UAAU,KAAK;AAAA,IAChC;AAAA,EACF;AAAA;AAGF,eAAe,QAAQ,CAAC,UAAkB,OAAiC;AAAA,EACzE,MAAM,OAAO,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC3C,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAE7B,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,IAAI,cAAc,OAAO;AAAA,MAAG;AAAA,IAC5B,WAAW,QAAQ,MAAM,OAAO;AAAA,MAC9B,IAAI,CAAC,YAAY,MAAM,IAAI;AAAA,QAAG;AAAA,MAC9B,MAAM,WAAW,KAAK;AAAA,QACpB,MAAM,SAAS,MAAM,MAAM,QAAQ;AAAA,QACnC,MAAM,IAAI;AAAA,QACV,SAAS,KAAK;AAAA,QACd,aAAa,KAAK;AAAA,QAClB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AAAA;AAGF,SAAS,aAAa,CAAC,SAA0B;AAAA,EAC/C,OAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA;AAGvF,SAAS,WAAW,CAAC,MAAc,MAAoC;AAAA,EACrE,IAAI,CAAC,KAAK,QAAQ,KAAK,IAAI;AAAA,IAAG,OAAO;AAAA,EACrC,MAAM,eAAe,KAAK,QAAQ,IAAI;AAAA,EACtC,MAAM,eAAe,KAAK,OAAO,KAAK,OAAO;AAAA,EAC7C,IAAI,iBAAiB,MAAM,eAAe;AAAA,IAAc,OAAO;AAAA,EAC/D,IAAI,KAAK,OAAO,IAAI;AAAA,IAAG,OAAO;AAAA,EAC9B,OAAO;AAAA;;ACnNT,oBAAS;AACT,iBAAS,mBAAM;;;ACgBf,SAAS,UAAU,CAAC,SAAuB;AAAA,EACzC,QAAQ,IAAI,OAAO;AAAA;AAErB,SAAS,YAAY,CAAC,SAAuB;AAAA,EAE3C,QAAQ,MAAM,OAAO;AAAA;AAEvB,SAAS,WAAW,CAAC,SAAuB;AAAA,EAE1C,QAAQ,KAAK,OAAO;AAAA;AAEtB,SAAS,WAAW,CAAC,SAAuB;AAAA,EAE1C,QAAQ,KAAK,OAAO;AAAA;AAGf,IAAM,SAAwB;AAAA,EACnC,KAAK;AAAA,EACL,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AACR;AAEO,SAAS,WAAW,GAAS;AAAA,EAClC,OAAO,MAAM;AAAA,EACb,OAAO,QAAQ;AAAA,EACf,OAAO,OAAO;AAAA,EACd,OAAO,OAAO;AAAA;;;ADnBT,IAAM,qBAAoB,CAAC,gBAAgB,QAAQ,QAAQ,aAAa,SAAS,UAAU;AAElG,eAAsB,aAAa,CACjC,KACA,OACA,MACe;AAAA,EACf,MAAM,WAAW,IAAI,IAAI,KAAK,YAAY,kBAAiB;AAAA,EAC3D,MAAM,YAAY,IAAI,IAAI,KAAK,aAAa,CAAC,CAAC;AAAA,EAC9C,MAAM,UAAU,KAAK;AAAA,EAGrB,eAAe,IAAI,CAAC,SAAgC;AAAA,IAClD,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,UAAU,MAAM,SAAQ,SAAS,EAAE,eAAe,KAAK,CAAC;AAAA,MACxD,MAAM;AAAA,MACN;AAAA;AAAA,IAEF,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,OAAO,MAAK,SAAS,MAAM,IAAI;AAAA,MACrC,IAAI,MAAM,YAAY,GAAG;AAAA,QACvB,IAAI,SAAS,IAAI,MAAM,IAAI;AAAA,UAAG;AAAA,QAC9B,MAAM,KAAK,IAAI;AAAA,MACjB,EAAO,SAAI,MAAM,OAAO,GAAG;AAAA,QACzB,IAAI,UAAU,IAAI,MAAM,IAAI;AAAA,UAAG;AAAA,QAC/B,MAAM,MAAM,UAAS,SAAS,IAAI;AAAA,QAClC,MAAM,MAAM,MAAM,GAAG;AAAA,MACvB;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,KAAK,GAAG;AAAA;AAGT,SAAS,gBAAgB,CAC9B,MACA,YACA,SACU;AAAA,EACV,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,MAAM,KAAK,KAAI,qBAAqB;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,KAAI,SAAS,WAAW,qBAAqB;AAAA,EACxD,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,KAAK,YAAY;AAAA,IAC1B,MAAM,SAAS,OAAO,IAAI,EAAE,IAAI,KAAK,CAAC;AAAA,IACtC,OAAO,KAAK,CAAC;AAAA,IACb,OAAO,IAAI,EAAE,MAAM,MAAM;AAAA,EAC3B;AAAA,EACA,YAAY,MAAM,mBAAmB,QAAQ;AAAA,IAC3C,MAAM,KAAK,KAAK,UAAS,SAAS,IAAI,GAAG;AAAA,IACzC,WAAW,KAAK,gBAAgB;AAAA,MAC9B,MAAM,KAAK,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,MACzC,MAAM,KAAK,eAAc,EAAE,eAAe,EAAE,OAAO;AAAA,IACrD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,UAAU,CACxB,MACA,SACA,YACgB;AAAA,EAChB,OAAO;AAAA,IACL;AAAA,IACA,KAAK,GAAG;AAAA,MACN,WAAW,QAAQ,iBAAiB,MAAM,YAAY,OAAO,GAAG;AAAA,QAC9D,IAAI,KAAK,WAAW,GAAE,GAAG;AAAA,UACvB,OAAO,MAAM,IAAI;AAAA,QACnB,EAAO;AAAA,UACL,OAAO,IAAI,IAAI;AAAA;AAAA,MAEnB;AAAA;AAAA,EAEJ;AAAA;AAIK,SAAS,eAAe,CAAC,MAAuB;AAAA,EACrD,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,OAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA;AAIhF,SAAS,iBAAiB,CAAC,SAAiB,UAAsC;AAAA,EACvF,SAAS,IAAI,UAAU,EAAG,KAAK,GAAG,KAAK,GAAG;AAAA,IACxC,MAAM,IAAI,SAAS,IAAI,KAAK,KAAK;AAAA,IACjC,IAAI,EAAE,WAAW,YAAY;AAAA,MAAG,OAAO;AAAA,IACvC,IAAI,MAAM,OAAO,IAAI,UAAU;AAAA,MAAG,OAAO;AAAA,EAC3C;AAAA,EACA,OAAO;AAAA;;;AE1GT,IAAM,eAAyD;AAAA,EAC7D,EAAE,SAAS,sBAAsB,MAAM,uBAAuB;AAAA,EAC9D,EAAE,SAAS,sBAAsB,MAAM,uBAAuB;AAChE;AAEA,IAAM,eAAyD;AAAA,EAC7D;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF;AAEA,IAAM,WAAW;AAEjB,eAAsB,cAAc,CAAC,SAAoD;AAAA,EACvF,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,SAAS,QAAQ,qBAAqB,CAAC,qBAAqB,YAAY;AAAA,EAC9E,MAAM,aAA6B,CAAC;AAAA,EAEpC,MAAM,cACJ,SAEA,OAAO,SAAS;AAAA,IACd,MAAM,QAAQ,KAAK,SAAS,aAAa;AAAA,IACzC,MAAM,QAAQ,KAAK,SAAS,MAAM;AAAA,IAClC,IAAI,CAAC,SAAS,CAAC;AAAA,MAAO;AAAA,IACtB,IAAI,OAAO,KAAK,CAAC,aAAa,KAAK,SAAS,QAAQ,CAAC;AAAA,MAAG;AAAA,IAExD,MAAM,WAAW,QAAQ,eAAe;AAAA,IACxC,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,IAC1C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,IAEhC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxC,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,MAAM,UAAU,KAAK,KAAK;AAAA,MAC1B,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA,QAChF;AAAA,MACF,IAAI,QAAQ,SAAS,QAAQ;AAAA,QAAG;AAAA,MAChC,MAAM,OAAO,IAAI,IAAK,MAAM,IAAI,IAAI,KAAK,KAAK,KAAM;AAAA,MACpD,IAAI,KAAK,SAAS,QAAQ;AAAA,QAAG;AAAA,MAE7B,WAAW,QAAQ,UAAU;AAAA,QAC3B,IAAI,KAAK,QAAQ,KAAK,IAAI,GAAG;AAAA,UAC3B,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,MAAM,IAAI;AAAA,YACV,MAAM,KAAK;AAAA,YACX,SAAS;AAAA,YACT,YAAY;AAAA,UACd,CAAC;AAAA,UACD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,KAEF;AAAA,IACE;AAAA,IACA,UAAU,QAAQ;AAAA,EACpB,CACF;AAAA,EAEA,OAAO,WAAW,cAAc,SAAS,UAAU;AAAA;;ACxDrD,IAAM,gBAAwB;AAAA,EAC5B;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,+CAA+C,KAAK,IAAI,GAAG;AAAA,QAC7D,OAAO;AAAA,MACT;AAAA,MACA,IAAI,2CAA2C,KAAK,IAAI,KAAK,CAAC,KAAK,SAAS,MAAM,GAAG;AAAA,QACnF,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,CAAC,KAAK,SAAS,OAAO;AAAA,QAAG,OAAO;AAAA,MACpC,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,KAAK,SAAS,YAAY;AAAA,QAAG,OAAO;AAAA,MACxC,IAAI,mBAAmB,KAAK,IAAI,GAAG;AAAA,QACjC,OAAO;AAAA,MACT;AAAA,MACA,IAAI,mBAAmB,KAAK,IAAI,GAAG;AAAA,QACjC,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,MAAM,IAAI,KAAK,MAAM,kBAAkB;AAAA,MACvC,IAAI,CAAC,IAAI;AAAA,QAAI,OAAO;AAAA,MACpB,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,OAAO,SAAS,EAAE,IAAI,EAAE,IAAI;AAAA,QAAI,OAAO;AAAA,MAC3C,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,CAAC,mBAAmB,KAAK,IAAI;AAAA,QAAG,OAAO;AAAA,MAC3C,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,MAAM,IAAI,KAAK,MAAM,qBAAqB;AAAA,MAC1C,IAAI,CAAC,IAAI;AAAA,QAAI,OAAO;AAAA,MACpB,MAAM,IAAI,OAAO,WAAW,EAAE,EAAE;AAAA,MAChC,IAAI,KAAK,OAAO,KAAK,KAAK;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,MAAM,SAAS,aAAa;AAAA,MAClC,IAAI,kBAAkB,SAAS,QAAQ;AAAA,QAAG,OAAO;AAAA,MACjD,IAAI,KAAK,SAAS,oBAAoB;AAAA,QAAG,OAAO;AAAA,MAChD,IAAI,CAAC,2BAA2B,KAAK,IAAI;AAAA,QAAG,OAAO;AAAA,MACnD,IACE,iEAAiE,KAAK,IAAI,KAC1E,CAAC,KAAK,SAAS,UAAU,GACzB;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,IAAI,uBAAuB,KAAK,IAAI,KAAK,CAAC,KAAK,SAAS,UAAU,GAAG;AAAA,QACnE,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,CAAC,KAAK,SAAS,YAAY;AAAA,QAAG,OAAO;AAAA,MACzC,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,MAAM,SAAS,aAAa;AAAA,MAClC,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,kBAAkB,SAAS,QAAQ;AAAA,QAAG,OAAO;AAAA,MACjD,IAAI,+BAA+B,KAAK,IAAI,GAAG;AAAA,QAC7C,IAAI,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,aAAa,GAAG;AAAA,UAC1D,OAAO;AAAA,QACT;AAAA,QACA,OAAO;AAAA,MACT;AAAA,MACA,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,KAAK,SAAS,0BAA0B;AAAA,QAAG,OAAO;AAAA,MACtD,MAAM,IAAI,KAAK,MAAM,0DAA0D;AAAA,MAC/E,IAAI,CAAC,IAAI;AAAA,QAAI,OAAO;AAAA,MACpB,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,MAAM,IAAI,KAAK,MAAM,0BAA0B;AAAA,MAC/C,IAAI,CAAC,IAAI;AAAA,QAAI,OAAO;AAAA,MACpB,IAAI,EAAE,OAAO;AAAA,QAAK,OAAO;AAAA,MACzB,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,gBAAgB,IAAI;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,CAAC,KAAK,SAAS,aAAa;AAAA,QAAG,OAAO;AAAA,MAC1C,IAAI,KAAK,SAAS,oBAAoB;AAAA,QAAG,OAAO;AAAA,MAChD,IAAI,KAAK,SAAS,wBAAwB;AAAA,QAAG,OAAO;AAAA,MACpD,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,IAAI,qBAAqB,KAAK,IAAI;AAAA,QAAG,OAAO;AAAA,MAC5C,OAAO;AAAA;AAAA,EAEX;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO,CAAC,SAAS;AAAA,MACf,IAAI,CAAC,uBAAuB,KAAK,IAAI;AAAA,QAAG,OAAO;AAAA,MAC/C,IAAI,KAAK,SAAS,MAAM;AAAA,QAAG,OAAO;AAAA,MAClC,OAAO;AAAA;AAAA,EAEX;AACF;AAEA,eAAsB,eAAe,CAAC,SAAqD;AAAA,EACzF,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,aAAa,QAAQ,cAAc,CAAC,aAAa;AAAA,EACvD,MAAM,YAAY,QAAQ,aAAa,CAAC,aAAa,YAAY;AAAA,EACjE,MAAM,WAAW,IAAI,IAAI,QAAQ,gBAAgB,CAAC,CAAC;AAAA,EACnD,MAAM,QAAQ,cAAc,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,EAC7D,MAAM,aAA6B,CAAC;AAAA,EAEpC,MAAM,cACJ,SAEA,OAAO,SAAS;AAAA,IACd,IAAI,CAAC,WAAW,KAAK,CAAC,QAAQ,KAAK,SAAS,GAAG,CAAC;AAAA,MAAG;AAAA,IACnD,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,IAC1C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,IAChC,MAAM,gBAAgB,MAAM,IAAI,SAAS,kBAAkB;AAAA,IAC3D,IAAI;AAAA,MAAe;AAAA,IAEnB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxC,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,MAAM,UAAU,KAAK,KAAK;AAAA,MAC1B,IAAI,YAAY,MAAM,YAAY,OAAO,YAAY;AAAA,QAAK;AAAA,MAC1D,WAAW,QAAQ,OAAO;AAAA,QACxB,MAAM,aAAa,KAAK,MAAM,MAAM,GAAG,KAAK;AAAA,QAC5C,IAAI,YAAY;AAAA,UACd,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,MAAM,IAAI;AAAA,YACV,MAAM,KAAK;AAAA,YACX,SAAS;AAAA,YACT;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,KAEF;AAAA,IACE;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB;AAAA,EACF,CACF;AAAA,EAEA,OAAO,WAAW,eAAe,SAAS,UAAU;AAAA;;ACxLtD,eAAsB,cAAc,CAAC,SAAoD;AAAA,EACvF,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,aAAa,IAAI,IAAI,QAAQ,qBAAqB,CAAC,CAAC;AAAA,EAC1D,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,aAAuD,CAAC;AAAA,EAC9D,MAAM,cAAwD,CAAC;AAAA,EAE/D,MAAM,cACJ,SAEA,OAAO,SAAS;AAAA,IACd,IAAI,KAAK,SAAS,aAAa,GAAG;AAAA,MAChC,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,MAC1C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,MAChC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,QACxC,MAAM,OAAO,MAAM;AAAA,QACnB,IAAI,CAAC;AAAA,UAAM;AAAA,QACX,WAAW,KAAK,KAAK,SAAS,2BAA2B,GAAG;AAAA,UAC1D,IAAI,EAAE,IAAI;AAAA,YACR,YAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,MAAM,EAAE;AAAA,cACR,MAAM,IAAI;AAAA,cACV,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,QACA,WAAW,KAAK,KAAK,SAAS,qBAAqB,GAAG;AAAA,UACpD,IAAI,EAAE,IAAI;AAAA,YACR,YAAY,KAAK;AAAA,cACf,MAAM;AAAA,cACN,MAAM,KAAK,EAAE;AAAA,cACb,MAAM,IAAI;AAAA,cACV,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,MACA,YAAY,KAAK,EAAE,MAAM,MAAM,QAAQ,CAAC;AAAA,IAC1C,EAAO,SAAI,KAAK,SAAS,MAAM,KAAK,CAAC,KAAK,SAAS,WAAW,GAAG;AAAA,MAC/D,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,MAC1C,YAAY,KAAK,EAAE,MAAM,MAAM,QAAQ,CAAC;AAAA,IAC1C,EAAO,UAAK,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,MAAM,MAAM,CAAC,KAAK,SAAS,WAAW,GAAG;AAAA,MACzF,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,MAC1C,WAAW,KAAK,EAAE,MAAM,MAAM,QAAQ,CAAC;AAAA,IACzC;AAAA,KAEF,EAAE,SAAS,UAAU,QAAQ,SAAS,CACxC;AAAA,EAGA,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,aAAa,YAAY,OAAO,CAAC,MAAM;AAAA,IAC3C,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAAA,IACrC,IAAI,KAAK,IAAI,GAAG;AAAA,MAAG,OAAO;AAAA,IAC1B,KAAK,IAAI,GAAG;AAAA,IACZ,OAAO;AAAA,GACR;AAAA,EAED,SAAS,eAAe,CAAC,MAAuB;AAAA,IAC9C,IAAI,WAAW,IAAI,IAAI;AAAA,MAAG,OAAO;AAAA,IACjC,aAAa,aAAa,YAAY;AAAA,MACpC,IACE,QAAQ,SAAS,IAAI,MAAM,KAC3B,QAAQ,SAAS,KAAK,QAAQ,KAC9B,QAAQ,SAAS,KAAK,QAAQ,GAC9B;AAAA,QACA,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAIT,SAAS,kBAAkB,CAAC,MAAc,SAA0B;AAAA,IAClE,aAAa,MAAM,aAAa,aAAa;AAAA,MAC3C,IAAI,SAAS;AAAA,QAAS;AAAA,MACtB,IAAI,QAAQ,SAAS,OAAO,OAAO;AAAA,QAAG,OAAO;AAAA,IAC/C;AAAA,IACA,MAAM,OAAO,YAAY,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAAA,IACvD,IAAI,MAAM;AAAA,MACR,MAAM,cAAc,KAAK,QAAQ,MAAM,IAAI,EAAE,SAAS;AAAA,MACtD,IAAI,cAAc;AAAA,QAAG,OAAO;AAAA,IAC9B;AAAA,IACA,aAAa,aAAa,YAAY;AAAA,MACpC,IAAI,QAAQ,SAAS,IAAI;AAAA,QAAG,OAAO;AAAA,IACrC;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,aAA6B,CAAC;AAAA,EACpC,WAAW,OAAO,YAAY;AAAA,IAC5B,IAAI,IAAI,SAAS,WAAW,CAAC,gBAAgB,IAAI,IAAI,GAAG;AAAA,MACtD,WAAW,KAAK;AAAA,QACd,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,MAAM;AAAA,QACN,SAAS,IAAI,IAAI;AAAA,QACjB,YAAY;AAAA,MACd,CAAC;AAAA,IACH,EAAO,SAAI,IAAI,SAAS,cAAc,CAAC,mBAAmB,IAAI,MAAM,IAAI,IAAI,GAAG;AAAA,MAC7E,WAAW,KAAK;AAAA,QACd,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,QACb,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EAEA,OAAO,WAAW,yBAAyB,SAAS,UAAU;AAAA;;ACpHhE,eAAsB,YAAY,CAAC,SAAkD;AAAA,EACnF,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,WAAW,QAAQ,kBAAkB,CAAC,OAAO,QAAQ,MAAM;AAAA,EACjE,MAAM,UAAU,IAAI,IAAI,QAAQ,eAAe,CAAC,CAAC;AAAA,EACjD,MAAM,cAAc,IAAI,IAAY,OAAO;AAAA,EAC3C,MAAM,aAA6B,CAAC;AAAA,EAGpC,MAAM,cACJ,SACA,OAAO,SAAS;AAAA,IACd,IAAI,CAAC,KAAK,SAAS,MAAM;AAAA,MAAG;AAAA,IAC5B,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,IAC1C,WAAW,KAAK,QAAQ,SAAS,iBAAiB,GAAG;AAAA,MACnD,IAAI,EAAE;AAAA,QAAI,YAAY,IAAI,KAAK,EAAE,IAAI;AAAA,IACvC;AAAA,KAEF,EAAE,SAAS,UAAU,QAAQ,SAAS,CACxC;AAAA,EAGA,MAAM,cACJ,SAEA,OAAO,SAAS;AAAA,IACd,IAAI,KAAK,SAAS,WAAW;AAAA,MAAG;AAAA,IAChC,IAAI,CAAC,SAAS,KAAK,CAAC,QAAQ,KAAK,SAAS,GAAG,CAAC;AAAA,MAAG;AAAA,IACjD,MAAM,UAAU,MAAM,IAAI,KAAK,IAAI,EAAE,KAAK;AAAA,IAC1C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,IAChC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,MACxC,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,CAAC;AAAA,QAAM;AAAA,MACX,WAAW,KAAK,KAAK,SAAS,oBAAoB,GAAG;AAAA,QACnD,MAAM,OAAO,KAAK,EAAE;AAAA,QACpB,IAAI,CAAC,YAAY,IAAI,IAAI,GAAG;AAAA,UAC1B,WAAW,KAAK;AAAA,YACd,MAAM;AAAA,YACN,MAAM,IAAI;AAAA,YACV,MAAM;AAAA,YACN,SAAS,KAAK,KAAK;AAAA,YACnB,YAAY,UAAU;AAAA,UACxB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,KAEF,EAAE,SAAS,UAAU,QAAQ,SAAS,CACxC;AAAA,EAEA,OAAO,WAAW,YAAY,SAAS,UAAU;AAAA;;AC5DnD;AACA;AA4BO,SAAS,WAAW,CAAC,MAAuB;AAAA,EACjD,IAAI,CAAC,KAAK,SAAS,MAAM;AAAA,IAAG,OAAO;AAAA,EAEnC,MAAM,UAAU,KAAK,KAAK;AAAA,EAG1B,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI,GAAG;AAAA,IACnF,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,KAAK,MAAM,cAAc,GAAG;AAAA,IAC9B,MAAM,iBAAiB,KAAK,QAAQ,iBAAiB,EAAE;AAAA,IACvD,IAAI,CAAC,eAAe,SAAS,MAAM;AAAA,MAAG,OAAO;AAAA,EAC/C;AAAA,EAGA,IAAI,KAAK,SAAS,iBAAiB,KAAK,KAAK,QAAQ,EAAE,SAAS,eAAe,GAAG;AAAA,IAChF,MAAM,qBAAqB,KAAK,QAAQ,sBAAsB,EAAE;AAAA,IAChE,IAAI,CAAC,mBAAmB,SAAS,MAAM;AAAA,MAAG,OAAO;AAAA,EACnD;AAAA,EAGA,IACE,KAAK,MAAM,mCAAmC,KAC9C,KAAK,MAAM,mCAAmC,KAC9C,KAAK,MAAM,0CAA0C,KACrD,KAAK,MAAM,0BAA0B,KACrC,KAAK,MAAM,iCAAiC,GAC5C;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,KAAK,MAAM,cAAc;AAAA,IAAG,OAAO;AAAA,EAIvC,IAAI,oBAAoB,IAAI;AAAA,IAAG,OAAO;AAAA,EAGtC,IAAI,UAAU,OAAO;AAAA,IAAG,OAAO;AAAA,EAI/B,IAAI,YAAY,OAAO;AAAA,IAAG,OAAO;AAAA,EAGjC,MAAM,aAAa,KAAK,QAAQ,IAAI;AAAA,EACpC,IAAI,cAAc,KAAK,KAAK,QAAQ,QAAQ,UAAU,KAAK,GAAG;AAAA,IAC5D,MAAM,gBAAgB,KAAK,UAAU,GAAG,UAAU;AAAA,IAClD,IAAI,CAAC,cAAc,SAAS,MAAM;AAAA,MAAG,OAAO;AAAA,EAC9C;AAAA,EAGA,IAAI,KAAK,MAAM,iBAAiB;AAAA,IAAG,OAAO;AAAA,EAE1C,IAAI,KAAK,SAAS,aAAa;AAAA,IAAG,OAAO;AAAA,EAEzC,OAAO;AAAA;AAOT,SAAS,mBAAmB,CAAC,MAAuB;AAAA,EAClD,IAAI,aAAa;AAAA,EACjB,OAAO,MAAM;AAAA,IACX,MAAM,MAAM,KAAK,QAAQ,QAAQ,UAAU;AAAA,IAC3C,IAAI,MAAM;AAAA,MAAG,OAAO;AAAA,IACpB,MAAM,SAAS,KAAK,UAAU,GAAG,GAAG;AAAA,IACpC,MAAM,gBAAgB,OAAO,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAChD,MAAM,gBAAgB,OAAO,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAChD,MAAM,aAAa,OAAO,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAC7C,IAAI,eAAe,MAAM,KAAK,eAAe,MAAM,KAAK,YAAY,MAAM,GAAG;AAAA,MAC3E,OAAO;AAAA,IACT;AAAA,IACA,aAAa,MAAM;AAAA,EACrB;AAAA;AAOF,SAAS,SAAS,CAAC,SAA0B;AAAA,EAE3C,IAAI,QAAQ,MAAM,8BAA8B,GAAG;AAAA,IAIjD,IACE,CAAC,QAAQ,MAAM,iBAAiB,KAChC,CAAC,QAAQ,MAAM,oDAAoD,GACnE;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAOT,SAAS,WAAW,CAAC,SAA0B;AAAA,EAC7C,MAAM,MAAM,QAAQ,QAAQ,MAAM;AAAA,EAClC,IAAI,MAAM;AAAA,IAAG,OAAO;AAAA,EACpB,MAAM,SAAS,QAAQ,UAAU,GAAG,GAAG;AAAA,EAEvC,OACE,CAAC,OAAO,MAAM,UAAU,KACxB,CAAC,OAAO,MAAM,0DAA0D;AAAA;AAQrE,SAAS,UAAU,CAAC,MAAkC;AAAA,EAC3D,IAAI,KAAK,SAAS,YAAY,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IACE,KAAK,SAAS,qBAAqB,KACnC,KAAK,SAAS,wBAAwB,KACtC,KAAK,SAAS,sBAAsB,GACpC;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,gBAAgB,KAAK,KAAK,SAAS,YAAY,GAAG;AAAA,IAClE,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,KAAK,GAAG;AAAA,IACnD,OAAO;AAAA,EACT;AAAA,EACA,IACE,KAAK,SAAS,yBAAyB,MACtC,KAAK,SAAS,QAAQ,KAAK,KAAK,SAAS,YAAY,IACtD;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,yBAAyB,GAAG;AAAA,IAC5C,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,eAAe,GAAG;AAAA,IAChE,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,WAAW,KAAK,KAAK,SAAS,YAAY,GAAG;AAAA,IAC3F,OAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAK,SAAS,QAAQ,GAAG;AAAA,IAC3B,OAAO;AAAA,EACT;AAAA,EACA;AAAA;AAGF,SAAS,cAAc,CACrB,WACA,aACA,iBACA,cACS;AAAA,EACT,MAAM,WAAW,UAAS,MAAM,GAAG;AAAA,EACnC,IAAI,SAAS,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC;AAAA,IAAG,OAAO;AAAA,EACrD,IAAI,gBAAgB,OAAO,KAAK,SAAS,KAAK,CAAC,MAAM,gBAAgB,IAAI,CAAC,CAAC;AAAA,IAAG,OAAO;AAAA,EACrF,MAAM,WAAW,SAAS,SAAS,SAAS,MAAM;AAAA,EAClD,OAAO,aAAa,IAAI,QAAQ,KAAK,aAAa,IAAI,SAAQ;AAAA;AAGhE,SAAS,cAAc,CAAC,WAAkB,SAA8B;AAAA,EACtE,MAAM,UAAuB,CAAC;AAAA,EAC9B,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,IAAI,iBAAiB;AAAA,EACrB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,aAAa,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAC3C,MAAM,oBAAoB;AAAA,IAC1B,IAAI,YAAY,MAAM;AAAA,MAAG,iBAAiB,CAAC;AAAA,IAI3C,IAAI,qBAAqB,cAAc,KAAK,CAAC,KAAK,SAAS,IAAI;AAAA,MAAG;AAAA,IAElE,IAAI,CAAC,YAAY,IAAI,GAAG;AAAA,MACtB,QAAQ,KAAK;AAAA,QACX,MAAM;AAAA,QACN,MAAM,IAAI;AAAA,QACV,SAAS,KAAK,KAAK;AAAA,QACnB,QAAQ,WAAW,KAAK,KAAK,CAAC;AAAA,MAChC,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CAAC,YAA+B;AAAA,EACtD,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,OAAO,IAAI,wCAAuC;AAAA,IAClD;AAAA,EACF;AAAA,EACA,OAAO,IAAI,qBAAoB,WAAW;AAAA,CAA8B;AAAA,EACxE,WAAW,KAAK,YAAY;AAAA,IAC1B,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM;AAAA,IAClC,OAAO,IAAI,OAAO,EAAE,SAAS;AAAA,IAC7B,IAAI,EAAE;AAAA,MAAQ,OAAO,IAAI,oBAAS,EAAE,QAAQ;AAAA,IAC5C,OAAO,IAAI,EAAE;AAAA,EACf;AAAA,EACA,OAAO,IAAI,8EAA8E;AAAA,EACzF,OAAO,IAAI,kEAAkE;AAAA;AAO/E,eAAsB,gBAAgB,CAAC,SAA6C;AAAA,EAClF,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,cAAc,IAAI,IAAI,QAAQ,WAAW,CAAC,gBAAgB,QAAQ,QAAQ,MAAM,CAAC;AAAA,EACvF,MAAM,kBAAkB,IAAI,IAAI,QAAQ,mBAAmB,CAAC,CAAC;AAAA,EAC7D,MAAM,eAAe,IAAI,IAAI,QAAQ,gBAAgB,CAAC,CAAC;AAAA,EACvD,MAAM,UAAU,QAAQ,gBAAgB;AAAA,EACxC,MAAM,OAAO,IAAI,KAAK,OAAO;AAAA,EAC7B,MAAM,aAA0B,CAAC;AAAA,EAEjC,iBAAiB,QAAQ,KAAK,KAAK,EAAE,KAAK,SAAS,UAAU,KAAK,CAAC,GAAG;AAAA,IACpE,MAAM,YAAW,KAAK,QAAQ,GAAG,YAAY,EAAE;AAAA,IAC/C,IAAI,eAAe,WAAU,aAAa,iBAAiB,YAAY;AAAA,MAAG;AAAA,IAC1E,MAAM,UAAU,aAAa,MAAM,OAAO;AAAA,IAC1C,WAAW,KAAK,GAAG,eAAe,WAAU,OAAO,CAAC;AAAA,EACtD;AAAA,EAEA,OAAO,EAAE,YAAY,OAAO,MAAM,gBAAgB,UAAU,EAAE;AAAA;;AC/PhE,yBAAS;AACT,iBAAS;AA2BF,SAAS,kBAAkB,CAAC,MAAuB;AAAA,EACxD,IAAI,CAAC,KAAK,SAAS,SAAS,GAAG;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI,GAAG;AAAA,IACnF,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAK,MAAM,gBAAgB;AAAA,EACzC,IAAI,CAAC,SAAS,MAAM,UAAU,WAAW;AAAA,IACvC,OAAO;AAAA,EACT;AAAA,EAGA,IAAI,KAAK,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,SAAS,kBAAkB,GAAG;AAAA,IAC/D,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,SAAS,KAAK,MAAM,GAAG,MAAM,KAAK;AAAA,EACxC,MAAM,WAAW,OAAO,MAAM,WAAW,KAAK,CAAC,GAAG;AAAA,EAClD,MAAM,WAAW,OAAO,MAAM,WAAW,KAAK,CAAC,GAAG;AAAA,EAClD,MAAM,aAAa,OAAO,MAAM,WAAW,KAAK,CAAC,GAAG;AAAA,EACpD,IAAI,UAAU,MAAM,KAAK,UAAU,MAAM,KAAK,YAAY,MAAM,GAAG;AAAA,IACjE,OAAO;AAAA,EACT;AAAA,EAEA,MAAM,aAAa,KAAK,QAAQ,IAAI;AAAA,EACpC,IAAI,cAAc,KAAK,MAAM,QAAQ,YAAY;AAAA,IAC/C,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,qBAAqB,CAAC,WAAkB,SAAuC;AAAA,EACtF,MAAM,UAAgC,CAAC;AAAA,EACvC,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,IAAI,iBAAiB;AAAA,EACrB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,aAAa,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG;AAAA,IAC3C,MAAM,oBAAoB;AAAA,IAC1B,IAAI,YAAY,MAAM,GAAG;AAAA,MACvB,iBAAiB,CAAC;AAAA,IACpB;AAAA,IAGA,IAAI,qBAAqB,cAAc,KAAK,CAAC,KAAK,SAAS,IAAI,GAAG;AAAA,MAChE;AAAA,IACF;AAAA,IACA,IAAI,CAAC,mBAAmB,IAAI,GAAG;AAAA,MAC7B,QAAQ,KAAK,EAAE,MAAM,WAAU,MAAM,IAAI,GAAG,SAAS,KAAK,KAAK,EAAE,CAAC;AAAA,IACpE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,sBAAsB,CAAC,YAAwC;AAAA,EACtE,IAAI,WAAW,WAAW,GAAG;AAAA,IAC3B,OAAO,IAAI,qCAAoC;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,OAAO,IAAI,kBAAiB,WAAW;AAAA,CAA8B;AAAA,EACrE,WAAW,KAAK,YAAY;AAAA,IAC1B,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM;AAAA,IAClC,OAAO,IAAI,OAAO,EAAE,SAAS;AAAA,IAC7B,OAAO,IAAI,EAAE;AAAA,EACf;AAAA,EACA,OAAO,IAAI,kFAAkF;AAAA;AAG/F,eAAsB,cAAc,CAClC,SAC+B;AAAA,EAC/B,MAAM,UAAU,QAAQ;AAAA,EACxB,MAAM,cAAc,IAAI,IAAI,QAAQ,WAAW,CAAC,gBAAgB,QAAQ,QAAQ,MAAM,CAAC;AAAA,EACvF,MAAM,UAAU,QAAQ,gBAAgB;AAAA,EACxC,MAAM,OAAO,IAAI,MAAK,OAAO;AAAA,EAC7B,MAAM,aAAmC,CAAC;AAAA,EAE1C,iBAAiB,QAAQ,KAAK,KAAK,EAAE,KAAK,SAAS,UAAU,KAAK,CAAC,GAAG;AAAA,IACpE,MAAM,YAAW,KAAK,QAAQ,GAAG,YAAY,EAAE;AAAA,IAC/C,MAAM,WAAW,UAAS,MAAM,GAAG;AAAA,IACnC,IAAI,SAAS,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC,GAAG;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,MAAM,UAAU,cAAa,MAAM,OAAO;AAAA,IAC1C,WAAW,KAAK,GAAG,sBAAsB,WAAU,OAAO,CAAC;AAAA,EAC7D;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA,OAAO,MAAM,uBAAuB,UAAU;AAAA,EAChD;AAAA;;ACpGF;AACA,iBAAS;AAGT,IAAM,eAAe,CAAC,QAAsB,OAAO,MAAM,GAAG;AAgC5D,eAAsB,YAAY,CAAC,SAA2D;AAAA,EAC5F,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,UAAU,GAAG;AAAA,IAC7C,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,MAAM,MAAM;AAAA,EACZ,IAAI,MAAM,aAAa,GAAG;AAAA,IACxB,OAAO;AAAA,MACL,aAAa;AAAA,MACb,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO,CAAC,QAAQ,iBAAiB;AAAA,QAC/B,MACE,8HACF;AAAA;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,MAAM,OAAO,CAAC,YAAY,UAAU,YAAY,QAAQ,QAAQ,GAAG;AAAA,EACnE,IAAI,QAAQ,UAAU,OAAO;AAAA,IAC3B,KAAK,KAAK,UAAU;AAAA,EACtB;AAAA,EACA,IAAI,QAAQ,YAAY;AAAA,IACtB,KAAK,KAAK,MAAM,QAAQ,UAAU;AAAA,EACpC;AAAA,EAEA,MAAM,OAAO,IAAI,MAAM,MAAM;AAAA,IAC3B,KAAK,QAAQ;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,OAAO,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACzC,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,IAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,EACjC,CAAC;AAAA,EACD,MAAM,KAAK;AAAA,EACX,MAAM,SAAS,GAAG,SAAS;AAAA,EAC3B,OAAO;AAAA,IACL,aAAa;AAAA,IACb,UAAU,KAAK;AAAA,IACf;AAAA,IACA,OAAO,CAAC,QAAQ,iBAAiB;AAAA,MAC/B,IAAI,QAAQ;AAAA,QACV,MAAM,MAAM;AAAA,MACd;AAAA;AAAA,EAEJ;AAAA;AAiDF,SAAS,kBAAkB,CAAC,MAAc,QAAkB,MAA0B;AAAA,EACpF,MAAM,WAAqB,CAAC;AAAA,EAC5B,IAAI,YAAY;AAAA,EAChB,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG;AAAA,MACxC,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,IACA,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG;AAAA,MACtC,YAAY;AAAA,MACZ;AAAA,IACF;AAAA,IACA,IAAI,CAAC,WAAW;AAAA,MACd;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,KAAK,MAAM,aAAa;AAAA,IACtC,IAAI,CAAC,QAAQ,IAAI;AAAA,MACf;AAAA,IACF;AAAA,IAGA,SAAS,KAAK,MAAM,GAAG,QAAQ,SAAS,GAAG,EAAE,QAAQ,OAAO,EAAE,CAAC;AAAA,EACjE;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAAC,QAAgB,UAA2B;AAAA,EACtE,IAAI,CAAC,UAAU,OAAO,WAAW,GAAG,GAAG;AAAA,IACrC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,WAAW,UAAU;AAAA,IACvB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,OAAO,MAAM,mBAAmB;AAAA,EACjD,IAAI,WAAW,MAAM,SAAS,WAAW,SAAS,EAAE,GAAG;AAAA,IACrD,OAAO;AAAA,EACT;AAAA,EACA,IAAI,OAAO,SAAS,GAAG,KAAK,SAAS,WAAW,MAAM,GAAG;AAAA,IACvD,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,uBAA6C;AAAA,EACjD,SAAS,CAAC;AAAA,EACV,UAAU,CAAC;AAAA,EACX,OAAO,MAAM;AAMf;AAEA,eAAsB,6BAA6B,CACjD,SAC+B;AAAA,EAC/B,MAAM,WAAW,MAAK,QAAQ,MAAM,QAAQ,YAAY,gBAAgB;AAAA,EACxE,MAAM,gBAAgB,MAAK,QAAQ,MAAM,QAAQ,iBAAiB,YAAY;AAAA,EAC9E,MAAM,SAAS,QAAQ,uBAAuB,CAAC,oBAAoB,qBAAqB;AAAA,EACxF,MAAM,OAAO,QAAQ,qBAAqB,CAAC,eAAe;AAAA,EAE1D,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,MAAM,SAAS,UAAU,MAAM;AAAA,IACtC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,YAAY,MAAM,SAAS,eAAe,MAAM;AAAA,IAChD,MAAM;AAAA,IACN,YAAY;AAAA;AAAA,EAGd,MAAM,WAAW,mBAAmB,MAAM,QAAQ,IAAI;AAAA,EACtD,MAAM,iBAAiB,UAAU,MAAM;AAAA,CAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,EAChE,MAAM,UAAU,SAAS,OACvB,CAAC,aAAa,CAAC,eAAe,KAAK,CAAC,OAAO,oBAAoB,IAAI,QAAQ,CAAC,CAC9E;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,OAAO,CAAC,QAAQ,iBAAiB;AAAA,MAC/B,IAAI,QAAQ,WAAW,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,MACA,MAAM,gEAAgE;AAAA,MACtE,WAAW,KAAK,SAAS;AAAA,QACvB,MAAM,KAAK,GAAG;AAAA,MAChB;AAAA,MACA,MACE,+GACF;AAAA;AAAA,EAEJ;AAAA;;ACxPF,uBAAS;AACT,kBAAS,oBAAO,wBAAU;AAC1B,iBAAS;;;ACTT;AACA,4BAAgB;AAChB,sCAA8B;AAe9B,IAAM,gBAAgB;AAEtB,eAAe,QAAQ,CAAC,MAA+B;AAAA,EACrD,IAAI;AAAA,IACF,MAAM,MAAM,MAAM,UAAS,IAAI;AAAA,IAC/B,MAAM,IAAI,WAAW,QAAQ;AAAA,IAC7B,EAAE,OAAO,GAAG;AAAA,IACZ,OAAO,EAAE,OAAO,KAAK;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AASX,eAAsB,iBAAiB,CAAC,QAAqB,SAAkC;AAAA,EAC7F,MAAM,YAAmD,CAAC;AAAA,EAC1D,WAAW,KAAK,OAAO,OAAO;AAAA,IAC5B,MAAM,MAAM,WAAW,CAAC,IAAI,IAAI,QAAQ,SAAS,CAAC;AAAA,IAClD,MAAM,OAAO,MAAM,SAAS,GAAG;AAAA,IAE/B,MAAM,MAAM,IAAI,WAAW,GAAG,UAAU,IAAI,IAAI,MAAM,QAAQ,SAAS,CAAC,IAAI;AAAA,IAC5E,UAAU,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,EACpC;AAAA,EACA,UAAU,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAAA,EAErD,MAAM,SAAS,OAAO,UAAU,CAAC;AAAA,EACjC,MAAM,cAAc,OAAO,KAAK,MAAM,EACnC,KAAK,EACL,IAAI,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,OAAO,MAAM,GAAG,EAAE;AAAA,EAElD,MAAM,UAAU,KAAK,UAAU,EAAE,OAAO,WAAW,QAAQ,YAAY,CAAC;AAAA,EACxE,OAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAAA;AAG1D,SAAS,SAAS,CAAC,SAAiB,SAAyB;AAAA,EAG3D,MAAM,OAAO,QAAQ,QAAQ,MAAM,IAAI;AAAA,EACvC,OAAO,MAAK,SAAS,UAAU,iBAAiB,GAAG,WAAW;AAAA;AAGhE,eAAsB,gBAAgB,CACpC,SACA,SACA,MAC8B;AAAA,EAC9B,MAAM,OAAO,UAAU,SAAS,OAAO;AAAA,EACvC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,MAAM,UAAS,MAAM,MAAM;AAAA,IACjC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,SAAS,KAAK,MAAM,GAAG;AAAA,IACvB,MAAM;AAAA,IAIN,OAAO;AAAA;AAAA,EAET,IAAI,OAAO,SAAS;AAAA,IAAM,OAAO;AAAA,EACjC,IAAI,OAAO,OAAO,SAAS,OAAO,aAAa,CAAC,MAAM,QAAQ,OAAO,SAAS,QAAQ,GAAG;AAAA,IACvF,OAAO;AAAA,EACT;AAAA,EACA,OAAO,OAAO;AAAA;AAGhB,eAAsB,gBAAgB,CACpC,SACA,SACA,MACA,SACe;AAAA,EACf,MAAM,OAAO,UAAU,SAAS,OAAO;AAAA,EACvC,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC9C,MAAM,QAAoB,EAAE,MAAM,SAAS,WAAW,IAAI,KAAK,EAAE,YAAY,EAAE;AAAA,EAC/E,MAAM,MAAM,GAAG,YAAY,QAAQ,OAAO,KAAK,IAAI;AAAA,EACnD,MAAM,UAAU,KAAK,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,EACnD,MAAM,OAAO,KAAK,IAAI;AAAA;;;ACrFjB,SAAS,eAAe,CAAC,SAAwD;AAAA,EACtF,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,cAAc,IAAI;AAAA,EACxB,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,YAAY,IAAI,OAAO,IAAI,GAAG;AAAA,MAChC,MAAM,IAAI,MAAM,mCAAmC,OAAO,wBAAwB;AAAA,IACpF;AAAA,IACA,YAAY,IAAI,OAAO,IAAI;AAAA,IAC3B,WAAW,SAAS,OAAO,QAAQ;AAAA,MACjC,IAAI,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,OAAO,GAAG;AAAA,QAC3C,MAAM,IAAI,MACR,UAAU,MAAM,mCAAmC,OAAO,yCAAyC,OAAO,QAC5G;AAAA,MACF;AAAA,MACA,IAAI,SAAS,IAAI,MAAM,EAAE,GAAG;AAAA,QAC1B,MAAM,QAAQ,SAAS,IAAI,MAAM,EAAE,GAAG,OAAO,QAAQ;AAAA,QACrD,MAAM,IAAI,MACR,wBAAwB,MAAM,8BAA8B,eAAe,OAAO,OACpF;AAAA,MACF;AAAA,MACA,SAAS,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO,CAAC;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAQF,SAAS,iBAAiB,CAC/B,UACA,WACU;AAAA,EACV,MAAM,SAAmB,CAAC;AAAA,EAC1B,MAAM,SAAS,UAAU,UAAU,CAAC;AAAA,EACpC,YAAY,IAAI,QAAQ,OAAO,QAAQ,MAAM,GAAG;AAAA,IAC9C,MAAM,QAAQ,SAAS,IAAI,EAAE;AAAA,IAC7B,IAAI,CAAC,OAAO;AAAA,MACV,OAAO,KAAK,8CAA8C,KAAK;AAAA,MAC/D;AAAA,IACF;AAAA,IACA,IAAI,CAAC,MAAM,MAAM;AAAA,MAAU;AAAA,IAC3B,MAAM,SAAS,MAAM,MAAM,SAAS,GAAG;AAAA,IACvC,IAAI,WAAW;AAAA,MAAM;AAAA,IACrB,WAAW,OAAO,QAAQ;AAAA,MACxB,OAAO,KAAK,IAAI,OAAO,KAAK;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAYT,eAAe,gBAAgB,CAC7B,OACA,QACA,MACwB;AAAA,EACxB,IAAI,KAAK,WAAW,CAAC,MAAM;AAAA,IAAW,OAAO;AAAA,EAC7C,IAAI;AAAA,IACF,MAAM,QAAQ,MAAM,MAAM,UAAU,QAAQ,KAAK,OAAO;AAAA,IACxD,MAAM,SAAS,MAAM,iBAAiB,MAAM;AAAA,IAC5C,OAAO,kBAAkB,EAAE,UAAW,SAAS,EAAE,OAAO,IAAI,CAAC,EAAG,GAAG,KAAK,OAAO;AAAA,IAC/E,MAAM;AAAA,IAEN,OAAO;AAAA;AAAA;AAIX,eAAe,WAAW,CACxB,OACA,QACA,MAC2C;AAAA,EAC3C,IAAI;AAAA,IACF,OAAO,MAAM,MAAM,IAAI;AAAA,MACrB,SAAS,KAAK;AAAA,MACd;AAAA,SACI,KAAK,SAAS,EAAE,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,IAC/C,CAAC;AAAA,IACD,OAAO,KAAK;AAAA,IACZ,OAAO,EAAE,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;AAAA;AAAA;AAIrE,eAAe,MAAM,CACnB,OACA,QACA,MACyB;AAAA,EACzB,QAAQ,UAAU;AAAA,EAClB,MAAM,QAAQ,KAAK,IAAI;AAAA,EAEvB,MAAM,YAAY,MAAM,iBAAiB,OAAO,QAAQ,IAAI;AAAA,EAC5D,IAAI,WAAW;AAAA,IACb,MAAM,SAAS,MAAM,iBAAiB,KAAK,SAAS,MAAM,IAAI,SAAS;AAAA,IACvE,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,QACL,IAAI,MAAM;AAAA,QACV,IAAI,OAAO;AAAA,QACX,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB,QAAQ;AAAA,QACR,UAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,YAAY,OAAO,QAAQ,IAAI;AAAA,EACpD,IAAI,WAAW,QAAQ;AAAA,IACrB,OAAO;AAAA,MACL,IAAI,MAAM;AAAA,MACV,IAAI;AAAA,MACJ,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,MACX,OAAO,OAAO;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,IAAI,aAAa,OAAO,IAAI;AAAA,IAG1B,IAAI;AAAA,MACF,MAAM,iBAAiB,KAAK,SAAS,MAAM,IAAI,WAAW,MAAM;AAAA,MAChE,MAAM;AAAA,EAGV;AAAA,EAEA,OAAO;AAAA,IACL,IAAI,MAAM;AAAA,IACV,IAAI,OAAO;AAAA,IACX,YAAY,KAAK,IAAI,IAAI;AAAA,IACzB,QAAQ;AAAA,IACR,UAAU,OAAO;AAAA,EACnB;AAAA;AAGF,eAAe,kBAAwB,CACrC,OACA,OACA,QACc;AAAA,EACd,IAAI,MAAM,WAAW;AAAA,IAAG,OAAO,CAAC;AAAA,EAChC,MAAM,UAAe,IAAI,MAAM,MAAM,MAAM;AAAA,EAC3C,IAAI,SAAS;AAAA,EACb,MAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,OAAO,MAAM,MAAM,CAAC,EAAE,GAAG,YAAY;AAAA,IAC7F,OAAO,MAAM;AAAA,MACX,MAAM,IAAI;AAAA,MACV,IAAI,KAAK,MAAM;AAAA,QAAQ;AAAA,MACvB,MAAM,OAAO,MAAM;AAAA,MACnB,IAAI,SAAS;AAAA,QAAW;AAAA,MACxB,QAAQ,KAAK,MAAM,OAAO,IAAI;AAAA,IAChC;AAAA,GACD;AAAA,EACD,MAAM,QAAQ,IAAI,OAAO;AAAA,EACzB,OAAO;AAAA;AAOT,eAAsB,SAAS,CAC7B,UACA,WACA,KACA,MACoB;AAAA,EACpB,MAAM,QAAQ,KAAK,IAAI;AAAA,EACvB,MAAM,UAA6B,CAAC;AAAA,EACpC,IAAI,QAAQ,WAAW;AAAA,IACrB,QAAQ,KAAK,GAAG,SAAS,OAAO,CAAC;AAAA,EACnC,EAAO;AAAA,IACL,WAAW,MAAM,KAAK;AAAA,MACpB,MAAM,QAAQ,SAAS,IAAI,EAAE;AAAA,MAC7B,IAAI,CAAC,OAAO;AAAA,QACV,MAAM,IAAI,MAAM,sBAAsB,KAAK;AAAA,MAC7C;AAAA,MACA,QAAQ,KAAK,KAAK;AAAA,IACpB;AAAA;AAAA,EAGF,MAAM,SAAS,UAAU,UAAU,CAAC;AAAA,EACpC,MAAM,QAAQ,KAAK,eAAe,QAAQ;AAAA,EAC1C,MAAM,UAAU,MAAM,mBAAmB,SAAS,OAAO,CAAC,UACxD,OAAO,OAAO,OAAO,MAAM,MAAM,KAAK,IAAI,CAC5C;AAAA,EAEA,OAAO;AAAA,IACL,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,EAAE;AAAA,IAC7B;AAAA,IACA,iBAAiB,KAAK,IAAI,IAAI;AAAA,EAChC;AAAA;AAGK,SAAS,UAAU,CAAC,UAIxB;AAAA,EACD,OAAO,MAAM,KAAK,SAAS,OAAO,CAAC,EAChC,IAAI,GAAG,OAAO,cAAc;AAAA,IAC3B,IAAI,MAAM;AAAA,IACV,aAAa,MAAM;AAAA,IACnB,QAAQ,OAAO;AAAA,EACjB,EAAE,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AAAA;;;AF7L5C,eAAe,SAAS,CAAC,MAAgB,KAAoD;AAAA,EAC3F,MAAM,OAAO,IAAI,MAAM,MAAM,EAAE,KAAK,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAAA,EACpE,OAAO,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACzC,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,IAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,EACjC,CAAC;AAAA,EACD,MAAM,KAAK;AAAA,EACX,OAAO,EAAE,IAAI,KAAK,aAAa,GAAG,KAAK,GAAG,SAAS,SAAS;AAAA;AAG9D,eAAe,kBAAkB,CAAC,SAAmC;AAAA,EACnE,MAAM,IAAI,MAAM,UAAU,CAAC,OAAO,UAAU,aAAa,GAAG,OAAO;AAAA,EACnE,IAAI,CAAC,EAAE;AAAA,IAAI,OAAO;AAAA,EAClB,OAAO,EAAE,IAAI,KAAK,EAAE,WAAW;AAAA;AAGjC,eAAe,aAAa,CAAC,SAAyC;AAAA,EACpE,MAAM,IAAI,MAAM,UAAU,CAAC,OAAO,aAAa,MAAM,GAAG,OAAO;AAAA,EAC/D,IAAI,CAAC,EAAE;AAAA,IAAI,OAAO;AAAA,EAClB,MAAM,MAAM,EAAE,IAAI,KAAK;AAAA,EACvB,IAAI,CAAC,iBAAiB,KAAK,GAAG;AAAA,IAAG,OAAO;AAAA,EACxC,OAAO;AAAA;AAGT,eAAe,MAAM,CAAC,SAAyC;AAAA,EAC7D,MAAM,IAAI,MAAM,UAAU,CAAC,MAAM,OAAO,QAAQ,QAAQ,QAAQ,GAAG,OAAO;AAAA,EAC1E,IAAI,CAAC,EAAE;AAAA,IAAI,OAAO;AAAA,EAClB,MAAM,QAAQ,EAAE,IAAI,KAAK;AAAA,EACzB,OAAO,MAAM,SAAS,IAAI,QAAQ;AAAA;AAGpC,eAAe,UAAU,CAAC,SAAyC;AAAA,EACjE,MAAM,IAAI,MAAM,UACd,CAAC,MAAM,QAAQ,QAAQ,UAAU,iBAAiB,QAAQ,gBAAgB,GAC1E,OACF;AAAA,EACA,IAAI,CAAC,EAAE;AAAA,IAAI,OAAO;AAAA,EAClB,MAAM,OAAO,EAAE,IAAI,KAAK;AAAA,EACxB,IAAI,CAAC,KAAK,SAAS,GAAG;AAAA,IAAG,OAAO;AAAA,EAChC,OAAO;AAAA;AAGF,SAAS,kBAAkB,CAAC,QAA2B;AAAA,EAC5D,MAAM,SAAS,OAAO,QAAQ,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE;AAAA,EAClD,MAAM,QAAQ,OAAO,QAAQ;AAAA,EAC7B,OAAO,GAAG,UAAU;AAAA;AAGf,SAAS,SAAS,CAAC,KAAa,SAAmC;AAAA,EAIxE,MAAM,SAAS,QACZ,MAAM,EACN,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC,EACvC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,UAAU,EAAE,SAAS,EAAE;AAAA,EAC5D,MAAM,UAAU,KAAK,UAAU,EAAE,KAAK,SAAS,OAAO,CAAC;AAAA,EACvD,OAAO,YAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAAA;AAG1D,SAAS,eAAe,CAAC,SAAiB,KAAqB;AAAA,EAC7D,OAAO,MAAK,SAAS,UAAU,iBAAiB,UAAU,GAAG,UAAU;AAAA;AAGzE,eAAe,oBAAoB,CAAC,SAAiB,KAAqC;AAAA,EACxF,IAAI;AAAA,IACF,MAAM,MAAM,MAAM,UAAS,gBAAgB,SAAS,GAAG,GAAG,MAAM;AAAA,IAChE,MAAM,SAAS,KAAK,MAAM,GAAG;AAAA,IAC7B,OAAO,OAAO,UAAU;AAAA,IACxB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,eAAe,gBAAgB,CAC7B,SACA,KACA,SACA,QACe;AAAA,EACf,MAAM,OAAO,gBAAgB,SAAS,GAAG;AAAA,EACzC,MAAM,OAAM,MAAK,MAAM,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EACjD,MAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,EACrC;AAAA,EACA,MAAM,WAAU,MAAM,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA;AAGtD,eAAe,gBAAgB,CAC7B,SACA,MACA,KACA,SACA,aAC0C;AAAA,EAC1C,MAAM,IAAI,MAAM,UACd;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,iBAAiB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,eAAe;AAAA,EACjB,GACA,OACF;AAAA,EACA,OAAO,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,IAAI;AAAA;AAGnC,eAAe,WAAW,CACxB,SACyD;AAAA,EACzD,IAAI,CAAE,MAAM,mBAAmB,OAAO,GAAI;AAAA,IACxC,OAAO,EAAE,IAAI,OAAO,QAAQ,2DAA2D;AAAA,EACzF;AAAA,EACA,MAAM,MAAM,MAAM,cAAc,OAAO;AAAA,EACvC,IAAI,CAAC;AAAA,IAAK,OAAO,EAAE,IAAI,OAAO,QAAQ,yDAAyD;AAAA,EAC/F,OAAO,EAAE,IAAI,MAAM,IAAI;AAAA;AAGzB,eAAe,cAAc,CAC3B,SACA,QACA,eAC4E;AAAA,EAC5E,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,EACjC,IAAI,CAAC;AAAA,IAAM,OAAO,EAAE,IAAI,OAAO,QAAQ,oDAAoD;AAAA,EAC3F,MAAM,SAAS,SAAS,oBAAoB;AAAA,EAC5C,OAAO,EAAE,IAAI,MAAM,MAAM,SAAS,GAAG,iBAAiB,UAAU,OAAO;AAAA;AAGzE,eAAsB,SAAS,CAAC,MAA4C;AAAA,EAC1E,MAAM,gBAAgB,KAAK,iBAAiB;AAAA,EAC5C,MAAM,MAAM,MAAM,YAAY,KAAK,OAAO;AAAA,EAC1C,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK;AAAA,IACvB,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,MACX,OAAO,IAAI;AAAA,IACb;AAAA,EACF;AAAA,EACA,MAAM,MAAM,IAAI;AAAA,EAEhB,MAAM,MAAM,MAAM,eAAe,KAAK,SAAS,KAAK,WAAW,MAAM,aAAa;AAAA,EAClF,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS;AAAA,IAC3B,OAAO,EAAE,IAAI,OAAO,SAAS,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,OAAO,IAAI,OAAO;AAAA,EACpF;AAAA,EAEA,MAAM,OAAO,MAAM,WAAW,KAAK,OAAO;AAAA,EAC1C,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS,IAAI;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,MACX,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,MAAM,UAAU,KAAK,UAAU,KAAK,WAAW,WAAW;AAAA,IACvE,SAAS,KAAK;AAAA,EAChB,CAAC;AAAA,EACD,IAAI,CAAC,OAAO,IAAI;AAAA,IACd,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS,IAAI;AAAA,MACb;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,QACR,mBAAmB,mBAAmB,MAAM;AAAA,QAC5C,GAAG,OAAO,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,OAAM,EAAE,IAAI;AAAA,MAChE;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,UAAU,KAAK,OAAO,OAAO;AAAA,EAC5C,MAAM,QAAQ,MAAM,qBAAqB,KAAK,SAAS,GAAG;AAAA,EAC1D,MAAM,cAAc,GAAG,mBAAmB,MAAM,OAAM,OAAO,MAAM,GAAG,EAAE;AAAA,EACxE,MAAM,OAAO,MAAM,iBAAiB,KAAK,SAAS,MAAM,KAAK,IAAI,SAAS,WAAW;AAAA,EACrF,IAAI,CAAC,KAAK,IAAI;AAAA,IACZ,OAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS,IAAI;AAAA,MACb;AAAA,MACA;AAAA,MACA,UAAU,CAAC,KAAK,OAAO,KAAK,CAAC;AAAA,MAC7B,OAAO;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,iBAAiB,KAAK,SAAS,KAAK,IAAI,SAAS,MAAM;AAAA,EAE7D,MAAM,aAAa,UAAU,SAAS,2BAA2B;AAAA,EACjE,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,SAAS,IAAI;AAAA,IACb;AAAA,IACA;AAAA,IACA,UAAU,CAAC,GAAG,IAAI,aAAY,IAAI,MAAM,GAAG,EAAE,MAAM,eAAe,KAAK,aAAa;AAAA,IACpF;AAAA,EACF;AAAA;;AGjQF,iBAAS;;;ACDT,iBAAS;AACT,iBAAS;;;ACFT,oBAAS;AACT,iBAAS,mBAAM;AAGf,IAAM,oBAAoB,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,UAAU,SAAS,UAAU;AAChG,IAAM,qBAAqB,CAAC,OAAO,SAAS,OAAO,WAAW,WAAW,UAAU;AACnF,IAAM,0BAA0B,CAAC,OAAO,MAAM;AAE9C,IAAM,YAAY;AAClB,IAAM,sBAAsB;AAC5B,IAAM,eACJ;AACF,IAAM,iBAAiB;AACvB,IAAM,oBACJ;AAEF,IAAM,gBAAgB;AAEtB,SAAS,aAAa,CAAC,MAAc,MAAuB;AAAA,EAC1D,MAAM,QAAQ,KAAK,MAAM,aAAa;AAAA,EACtC,OAAO,UAAU,QAAQ,MAAM,OAAO;AAAA;AAWxC,SAAS,gBAAgB,CAAC,MAAc,YAAkC;AAAA,EACxE,MAAM,SAAS,KAAK,YAAY,GAAG;AAAA,EACnC,IAAI,SAAS;AAAA,IAAG,OAAO;AAAA,EACvB,OAAO,WAAW,IAAI,KAAK,MAAM,MAAM,CAAC;AAAA;AAG1C,eAAe,cAAc,CAC3B,KACA,UACA,YACA,KACe;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,MAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,SAAS,IAAI,MAAM,IAAI,KAAK,MAAM,KAAK,WAAW,GAAG;AAAA,QAAG;AAAA,MAC5D,MAAM,eAAe,UAAU,UAAU,YAAY,GAAG;AAAA,IAC1D,EAAO,SAAI,MAAM,OAAO,KAAK,iBAAiB,MAAM,MAAM,UAAU,GAAG;AAAA,MACrE,IAAI,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA;AAGF,SAAS,aAAa,CAAC,KAKrB;AAAA,EACA,MAAM,IAAI,OAAO,CAAC;AAAA,EAClB,OAAO;AAAA,IACL,OAAO,EAAE,SAAS;AAAA,IAClB,UAAU,IAAI,IAAI,EAAE,YAAY,iBAAiB;AAAA,IACjD,YAAY,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC;AAAA,IACtC,YAAY,IAAI,IAAI,EAAE,cAAc,uBAAuB;AAAA,EAC7D;AAAA;AAGF,eAAe,kBAAkB,CAC/B,SACA,KACuD;AAAA,EACvD,QAAQ,OAAO,UAAU,YAAY,eAAe,cAAc,GAAG;AAAA,EACrE,MAAM,QAAkB,CAAC;AAAA,EACzB,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,eAAe,MAAK,SAAS,IAAI,GAAG,UAAU,YAAY,KAAK;AAAA,EACvE;AAAA,EACA,OAAO,EAAE,OAAO,WAAW;AAAA;AAG7B,SAAS,SAAQ,CAAC,SAAiB,KAAa,SAAiB,WAA6B;AAAA,EAC5F,MAAM,MAAgB,CAAC;AAAA,EACvB,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,QAAQ,KAAK,IAAI,KAAK,CAAC,cAAc,MAAM,SAAS,GAAG;AAAA,MACzD,IAAI,KAAK,GAAG,OAAO,IAAI,MAAM,KAAK,KAAK,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,eAAe,CACtB,IACA,aACA,SACA,WACiC;AAAA,EACjC,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,WAAW,OAAO,KAAK,SAAS;AAAA,MAC9B,QAAQ,OAAO,eAAe,MAAM,mBAAmB,MAAM,GAAG;AAAA,MAChE,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,UAAS,MAAM,CAAC,CAAC,CAAC;AAAA;AAAA,IAE/D,KAAK,SAAS,SAAS,aAAa;AAAA,MAClC,QAAQ,OAAO,eAAe,MAAM,mBAAmB,SAAS,MAAM;AAAA,MACtE,MAAM,aAAuB,CAAC;AAAA,MAC9B,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,WAAW,IAAI,GAAG;AAAA,UAAG;AAAA,QACzB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,QAC9C,WAAW,KAAK,GAAG,UAAS,SAAS,KAAK,SAAS,SAAS,CAAC;AAAA,MAC/D;AAAA,MACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAAA,EAE/D;AAAA;AAGF,IAAM,YAAY,gBAChB,oBACA,uEACA,WACA,QACF;AAEA,IAAM,oBAAoB,gBACxB,6BACA,uEACA,qBACA,OACF;AAEA,IAAM,eAAe,gBACnB,wBACA,4FACA,gBACA,aACF;AAEA,IAAM,kBAAkB,gBACtB,2BACA,wFACA,mBACA,gBACF;AAOA,IAAM,0BAA0B,CAAC,GAAG,oBAAoB,MAAM;AAC9D,IAAM,+BAA+B,CAAC,OAAO,QAAQ,KAAK;AAE1D,SAAS,gBAAgB,CAAC,KAKxB;AAAA,EACA,MAAM,IAAI,OAAO,CAAC;AAAA,EAClB,OAAO;AAAA,IACL,OAAO,EAAE,SAAS;AAAA,IAClB,UAAU,IAAI,IAAI,EAAE,YAAY,iBAAiB;AAAA,IACjD,YAAY,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC;AAAA,IACtC,YAAY,IAAI,IAAI,EAAE,cAAc,4BAA4B;AAAA,EAClE;AAAA;AAGF,IAAM,cAAkD;AAAA,EACtD,IAAI;AAAA,EACJ,aACE;AAAA,EACF,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,QAAQ,OAAO,UAAU,YAAY,eAAe,iBAAiB,GAAG;AAAA,IACxE,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,eAAe,MAAK,MAAM,IAAI,GAAG,UAAU,YAAY,GAAG;AAAA,IAClE;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,IAAI,UAAS,MAAM,CAAC,CAAC,CAAC;AAAA;AAAA,EAE7D,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,QAAQ,OAAO,UAAU,YAAY,eAAe,iBAAiB,MAAM;AAAA,IAC3E,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,eAAe,MAAK,SAAS,IAAI,GAAG,UAAU,YAAY,KAAK;AAAA,MACrE,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,WAAW,IAAI,GAAG;AAAA,UAAG;AAAA,QACzB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,QAC9C,WAAW,KAAK,GAAG,UAAS,SAAS,KAAK,cAAc,cAAc,CAAC;AAAA,MACzE;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAEO,IAAM,mBAAqC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AChNA,oBAAS;AACT,iBAAS,mBAAM;AAcf,eAAe,gBAAgB,GAAqB;AAAA,EAClD,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,SAAS,GAAG,EAAE,QAAQ,UAAU,QAAQ,SAAS,CAAC;AAAA,EACpF,MAAM,MAAM;AAAA,EACZ,OAAO,MAAM,aAAa;AAAA;AAG5B,IAAM,WAA8C;AAAA,EAClD,IAAI;AAAA,EACJ,aAAa;AAAA,EAOb,gBAAgB,CAAC,QAAQ;AAAA,IACvB,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,OAAO;AAAA,MACL,QAAQ,EAAE,UAAU;AAAA,MACpB,aAAa,EAAE,cAAc,CAAC,SAAS,SAAS,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG;AAAA,MAC1E,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG;AAAA,IACpD;AAAA;AAAA,EAEF,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,IAAI,CAAE,MAAM,iBAAiB,GAAI;AAAA,MAC/B,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,MAAM,UAAU,CAAC;AAAA,IACvB,MAAM,OAAO,CAAC,WAAW,QAAQ,YAAY,IAAI,UAAU,QAAQ,WAAW,SAAS;AAAA,IACvF,WAAW,OAAO,IAAI,cAAc,CAAC,SAAS,SAAS,GAAG;AAAA,MACxD,KAAK,KAAK,cAAc,GAAG;AAAA,IAC7B;AAAA,IACA,WAAW,OAAO,IAAI,WAAW,CAAC,eAAe,iBAAiB,GAAG;AAAA,MACnE,KAAK,KAAK,aAAa,KAAK;AAAA,IAC9B;AAAA,IACA,MAAM,OAAO,IAAI,MAAM,MAAM,EAAE,KAAK,SAAS,QAAQ,QAAQ,QAAQ,OAAO,CAAC;AAAA,IAC7E,OAAO,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,MACzC,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,MAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,IACjC,CAAC;AAAA,IACD,MAAM,KAAK;AAAA,IACX,MAAM,SAAS,GAAG,SAAS,SAAS,KAAK;AAAA,IACzC,OAAO;AAAA,MACL,IAAI,KAAK,aAAa;AAAA,MACtB,UAAU,KAAK,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,kBAAkB,KAAK,UAAU;AAAA,IACnF;AAAA;AAEJ;AAaA,IAAM,qBAAuC;AAAA,EAC3C,MAAM,EAAE,KAAK,CAAC,UAAU,QAAQ,UAAU,GAAG,OAAO,CAAC,QAAQ,UAAU,EAAE;AAAA,EACzE,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS;AAAA,EACxC,UAAU,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ;AAC7D;AAEA,IAAM,eACJ;AAEF,SAAS,UAAU,CAAC,KAAsB;AAAA,EACxC,OACE,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,QAAQ,KACrB,IAAI,WAAW,QAAQ;AAAA;AAI3B,SAAS,iBAAiB,CAAC,WAAmB,UAAkB,SAAgC;AAAA,EAC9F,IAAI,CAAC,UAAU,WAAW,GAAG,KAAK,CAAC,UAAU,WAAW,GAAG;AAAA,IAAG,OAAO;AAAA,EACrE,MAAM,UAAU,UAAS,SAAS,QAAQ,EAAE,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG;AAAA,EAC5E,MAAM,WAAW,GAAG,WAAW,YAAY,MAAM,GAAG;AAAA,EACpD,MAAM,WAAqB,CAAC;AAAA,EAC5B,WAAW,OAAO,UAAU;AAAA,IAC1B,IAAI,QAAQ,MAAM,QAAQ;AAAA,MAAK;AAAA,IAC/B,IAAI,QAAQ,MAAM;AAAA,MAChB,SAAS,IAAI;AAAA,MACb;AAAA,IACF;AAAA,IACA,SAAS,KAAK,GAAG;AAAA,EACnB;AAAA,EACA,OAAO,SAAS,KAAK,GAAG;AAAA;AAG1B,eAAe,qBAAqB,CAClC,KACA,UACA,KACe;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,MAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI;AAAA,QAAG,MAAM,sBAAsB,UAAU,UAAU,GAAG;AAAA,IACpF,EAAO,SAAI,MAAM,OAAO,MAAM,MAAM,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,SAAS,MAAM,IAAI;AAAA,MACxF,IAAI,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA;AAGF,SAAS,8BAA8B,CACrC,WACA,KAQqD;AAAA,EACrD,MAAM,SAAS,kBAAkB,WAAW,IAAI,UAAU,IAAI,OAAO;AAAA,EACrE,IAAI,CAAC;AAAA,IAAQ,OAAO,CAAC;AAAA,EACrB,MAAM,MAA2D,CAAC;AAAA,EAClE,WAAW,UAAU,IAAI,MAAM;AAAA,IAC7B,IAAI,OAAO,WAAW,MAAM,GAAG;AAAA,MAC7B,IAAI,KAAK;AAAA,QACP,MAAM,IAAI;AAAA,QACV,MAAM,IAAI;AAAA,QACV,MAAM,IAAI,IAAI,8BAA8B,sBAAsB;AAAA,MACpE,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,mBAAmB,CAC1B,MACA,KAQqD;AAAA,EACrD,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA,IAAG,OAAO,CAAC;AAAA,EAC7F,MAAM,MAA2D,CAAC;AAAA,EAClE,aAAa,YAAY;AAAA,EACzB,IAAI,QAAQ,aAAa,KAAK,IAAI;AAAA,EAClC,OAAO,UAAU,MAAM;AAAA,IACrB,MAAM,YAAY,MAAM,MAAM,MAAM;AAAA,IACpC,IAAI,WAAW;AAAA,MACb,IAAI,KAAK,GAAG,+BAA+B,WAAW,KAAK,KAAK,MAAM,IAAI,WAAW,CAAC,CAAC;AAAA,IACzF;AAAA,IACA,QAAQ,aAAa,KAAK,IAAI;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,6BAA6B,CACpC,UACA,SACA,SACA,MACA,MACqD;AAAA,EACrD,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,EACtC,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAA2D,CAAC;AAAA,EAClE,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,IAAI,KACF,GAAG,oBAAoB,MAAM,MAAM,IAAI;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,YAAY,IAAI;AAAA,IAClB,CAAC,CACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,aAAkD;AAAA,EACtD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,KAAK,uBAAwB,OAAO,CAAC,EAAG;AAAA,IAClD,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,mBAAmB,YAAY,CAAC,CAAC;AAAA,IACxE,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,QAAQ,EAAE,SAAS,mBAAmB,SAAS,CAAC,GAAG;AAAA,MAC5D,MAAM,sBAAsB,MAAK,MAAM,IAAI,GAAG,UAAU,GAAG;AAAA,IAC7D;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,WAAW,UAAS,MAAM,CAAC,CAAC,CAAC;AAAA;AAAA,EAEzD,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,KAAK,uBAAwB,UAAU,CAAC,EAAG;AAAA,IACrD,MAAM,OAAO,EAAE,QAAQ,CAAC;AAAA,IACxB,MAAM,QAAQ,EAAE,SAAS,CAAC;AAAA,IAC1B,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,CAAC,CAAC;AAAA,IACzC,MAAM,MAA2D,CAAC;AAAA,IAClE,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,sBAAsB,MAAK,SAAS,IAAI,GAAG,UAAU,KAAK;AAAA,MAChE,MAAM,WAAW,KAAK,SAAS,CAAC;AAAA,MAChC,IAAI,SAAS,WAAW;AAAA,QAAG;AAAA,MAC3B,WAAW,YAAY,OAAO;AAAA,QAC5B,IAAI,WAAW,UAAS,SAAS,QAAQ,CAAC;AAAA,UAAG;AAAA,QAC7C,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,QAC9C,IAAI,KAAK,GAAG,8BAA8B,UAAU,SAAS,SAAS,MAAM,QAAQ,CAAC;AAAA,MACvF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,IAAI,IAAI,WAAW;AAAA,MACnB,UAAU,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,IAC3D;AAAA;AAEJ;AAcA,IAAM,yBAA4E;AAAA,EAChF,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,kBAAkB;AAAA,IAChB;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,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU,CAAC,gBAAgB,QAAQ,QAAQ;AAC7C;AAEA,SAAS,gBAAgB,CAAC,OAAyB;AAAA,EAKjD,MAAM,UAAU,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,uBAAuB,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,EAEnF,OAAO,IAAI,OACT,0CAA0C,iDAAiD,iCAC7F;AAAA;AAGF,SAAS,yBAAyB,CAAC,KAAa,OAA6B;AAAA,EAC3E,IAAI,MAAM,IAAI,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,OAAO,IAAI,SAAS,WAAW,KAAK,IAAI,SAAS,QAAQ,KAAK,IAAI,SAAS,QAAQ;AAAA;AAGrF,SAAS,wBAAwB,CAAC,KAAa,SAAiB,aAA+B;AAAA,EAC7F,MAAM,aAAuB,CAAC;AAAA,EAC9B,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,IAAI,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA,MAAG;AAAA,IACrF,IAAI,YAAY,KAAK,IAAI,GAAG;AAAA,MAC1B,WAAW,KAAK,GAAG,OAAO,IAAI,MAAM,SAAS;AAAA,IAC/C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,gBAAwD;AAAA,EAC5D,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,uBAAuB,QAAQ;AAAA,IACtE,MAAM,QAAQ,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC;AAAA,IACxC,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,gBAAgB,uBAAuB,cAAc;AAAA,MACrE,MAAM,sBAAsB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IAC1D;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,0BAA0B,UAAS,MAAM,CAAC,GAAG,KAAK,CAAC;AAAA;AAAA,EAE/E,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,uBAAuB,QAAQ;AAAA,IACtE,MAAM,cAAc,iBAClB,EAAE,oBAAoB,uBAAuB,gBAC/C;AAAA,IACA,MAAM,QAAQ,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC;AAAA,IACxC,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,gBAAgB,uBAAuB,cAAc;AAAA,MACrE,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,sBAAsB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,MAC7D,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,0BAA0B,KAAK,KAAK;AAAA,UAAG;AAAA,QAC3C,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,QAC9C,WAAW,KAAK,GAAG,yBAAyB,KAAK,SAAS,WAAW,CAAC;AAAA,MACxE;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAEO,IAAM,uBAAyC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF;;;ACpXA,oBAAS;AACT,iBAAS,mBAAM;AACf,iBAAS;AAGT,IAAM,qBAAoB,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ;AAE3E,SAAS,cAAa,CAAC,SAA0B;AAAA,EAC/C,OAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA;AAGvF,SAAS,WAAU,CAAC,KAAsB;AAAA,EACxC,OACE,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,QAAQ,KACrB,IAAI,WAAW,QAAQ;AAAA;AAI3B,eAAe,kBAAkB,CAC/B,KACA,UACA,KACe;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,MAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI;AAAA,QAAG,MAAM,mBAAmB,UAAU,UAAU,GAAG;AAAA,IACjF,EAAO,SAAI,MAAM,OAAO,MAAM,MAAM,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,SAAS,MAAM,IAAI;AAAA,MACxF,IAAI,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA;AAcF,IAAM,oBAAmD;AAAA,EACvD,QAAQ;AAAA,IACN,8CAA8C;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,iDAAiD;AAAA,MAC/C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,yCAAyC;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,IACA,mDAAmD,CAAC,UAAU,iBAAiB;AAAA,EACjF;AAAA,EACA,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS;AAAA,EACxC,UAAU;AACZ;AAEA,IAAM,gBACJ;AAEF,SAAS,YAAY,CACnB,WACA,QAC6B;AAAA,EAC7B,YAAY,UAAU,aAAa,OAAO,QAAQ,MAAM,GAAG;AAAA,IACzD,WAAW,KAAK,UAAU;AAAA,MACxB,IAAI,cAAc,KAAK,UAAU,WAAW,GAAG,IAAI;AAAA,QAAG,OAAO,EAAE,SAAS;AAAA,IAC1E;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CACxB,MACA,QACA,KACA,YAC0E;AAAA,EAC1E,MAAM,UAAU,KAAK,KAAK;AAAA,EAC1B,IAAI,eAAc,OAAO;AAAA,IAAG,OAAO,CAAC;AAAA,EACpC,MAAM,MAAgF,CAAC;AAAA,EACvF,cAAa,YAAY;AAAA,EACzB,IAAI,QAAQ,cAAa,KAAK,IAAI;AAAA,EAClC,OAAO,UAAU,MAAM;AAAA,IACrB,MAAM,YAAY,MAAM,MAAM,MAAM;AAAA,IACpC,MAAM,MAAM,YAAY,aAAa,WAAW,MAAM,IAAI;AAAA,IAC1D,IAAI,KAAK;AAAA,MACP,IAAI,KAAK,EAAE,MAAM,KAAK,MAAM,YAAY,SAAS,SAAS,UAAU,IAAI,SAAS,CAAC;AAAA,IACpF;AAAA,IACA,QAAQ,cAAa,KAAK,IAAI;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,oBAAoB,CACjC,UACA,KACA,QACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,WAAW,KAAK,kBAAkB,MAAM,MAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,GAAG;AAAA,MACrE,IAAI,KAAK,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,IAC9D;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,gBAAwD;AAAA,EAC5D,IAAI;AAAA,EACJ,aACE;AAAA,EACF,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,kBAAkB,QAAQ;AAAA,IACjE,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,SAAS,kBAAkB,OAAO;AAAA,MAClD,MAAM,mBAAmB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IACvD;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,YAAW,UAAS,MAAM,CAAC,CAAC,CAAC;AAAA;AAAA,EAEzD,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,SAAS,EAAE,UAAU,kBAAkB;AAAA,IAC7C,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,kBAAkB,QAAQ;AAAA,IACjE,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,SAAS,kBAAkB,OAAO;AAAA,MAClD,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,mBAAmB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,MAC1D,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,YAAW,GAAG;AAAA,UAAG;AAAA,QACrB,WAAW,KAAK,GAAI,MAAM,qBAAqB,UAAU,KAAK,MAAM,CAAE;AAAA,MACxE;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAaA,IAAM,yBAAuD;AAAA,EAC3D,QAAQ,CAAC,YAAY,cAAc,WAAW;AAAA,EAC9C,cAAc,CAAC;AAAA,EACf,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS;AAAA,EACxC,UAAU;AACZ;AAEA,SAAS,oBAAoB,CAAC,MAAsB;AAAA,EAClD,OAAO,KAAK,QAAQ,uBAAuB,MAAM;AAAA;AAGnD,SAAS,cAAc,CAAC,QAA0B;AAAA,EAEhD,MAAM,OAAO,OAAO,IAAI,oBAAoB,EAAE,KAAK,GAAG;AAAA,EAEtD,OAAO,IAAI,OAAO,OAAO,UAAU;AAAA;AAGrC,SAAS,eAAe,CAAC,KAAa,cAAiC;AAAA,EACrE,WAAW,WAAW,cAAc;AAAA,IAClC,IAAI,IAAI,MAAK,OAAO,EAAE,MAAM,GAAG;AAAA,MAAG,OAAO;AAAA,EAC3C;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,eAAsD;AAAA,EAC1D,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,uBAAuB,QAAQ;AAAA,IACtE,MAAM,UAAU,EAAE,gBAAgB,uBAAuB;AAAA,IACzD,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,SAAS,uBAAuB,OAAO;AAAA,MACvD,MAAM,mBAAmB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IACvD;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM;AAAA,MACvB,MAAM,MAAM,UAAS,MAAM,CAAC;AAAA,MAC5B,OAAO,CAAC,YAAW,GAAG,KAAK,CAAC,gBAAgB,KAAK,OAAO;AAAA,KACzD;AAAA;AAAA,EAEH,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,SAAS,EAAE,UAAU,uBAAuB;AAAA,IAClD,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,EAAE,IAAI,MAAM,UAAU,CAAC,EAAE;AAAA,IACzD,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,uBAAuB,QAAQ;AAAA,IACtE,MAAM,UAAU,EAAE,gBAAgB,uBAAuB;AAAA,IACzD,MAAM,QAAQ,eAAe,MAAM;AAAA,IACnC,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,SAAS,uBAAuB,OAAO;AAAA,MACvD,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,mBAAmB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,MAC1D,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,YAAW,GAAG,KAAK,gBAAgB,KAAK,OAAO;AAAA,UAAG;AAAA,QACtD,WAAW,KAAK,GAAI,MAAM,qBAAqB,UAAU,KAAK,KAAK,CAAE;AAAA,MACvE;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAEA,eAAe,oBAAoB,CACjC,UACA,KACA,OACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,eAAc,KAAK,KAAK,CAAC;AAAA,MAAG;AAAA,IAChC,IAAI,MAAM,KAAK,IAAI;AAAA,MAAG,IAAI,KAAK,GAAG,OAAO,IAAI,MAAM,KAAK,KAAK,GAAG;AAAA,EAClE;AAAA,EACA,OAAO;AAAA;AAcT,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AAE5B,IAAM,sBAAyD;AAAA,EAE7D,iBAAiB,CAAC;AAAA,EAClB,cAAc,CAAC;AAAA,EACf,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS;AAAA,EACxC,UAAU;AACZ;AAEA,SAAS,kBAAkB,CAAC,KAAa,OAA0B;AAAA,EACjE,WAAW,KAAK,OAAO;AAAA,IACrB,IAAI,IAAI,MAAK,CAAC,EAAE,MAAM,GAAG;AAAA,MAAG,OAAO;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,oBAAgE;AAAA,EACpE,IAAI;AAAA,EACJ,aACE;AAAA,EACF,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,oBAAoB,QAAQ;AAAA,IACnE,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,SAAS,oBAAoB,OAAO;AAAA,MACpD,MAAM,mBAAmB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IACvD;AAAA,IACA,OAAO;AAAA;AAAA,EAET,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,KAAK,EAAE,mBAAmB,oBAAoB;AAAA,IACpD,MAAM,KAAK,EAAE,gBAAgB,oBAAoB;AAAA,IACjD,IAAI,GAAG,WAAW,KAAK,GAAG,WAAW;AAAA,MAAG,OAAO,EAAE,IAAI,MAAM,UAAU,CAAC,EAAE;AAAA,IACxE,OAAO,mBAAmB,SAAS,GAAG,IAAI,EAAE;AAAA;AAEhD;AAEA,eAAe,0BAA0B,CACvC,UACA,KACA,mBACA,gBACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,qBAAqB,iBAAiB,KAAK,IAAI,GAAG;AAAA,MACpD,IAAI,KAAK,GAAG,OAAO,IAAI,2CAA0C,KAAK,KAAK,GAAG;AAAA,IAChF;AAAA,IACA,IAAI,kBAAkB,oBAAoB,KAAK,IAAI,GAAG;AAAA,MACpD,IAAI,KAAK,GAAG,OAAO,IAAI,2CAA0C,KAAK,KAAK,GAAG;AAAA,IAChF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,kBAAkB,CAC/B,SACA,GACA,IACA,IAC8C;AAAA,EAC9C,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,oBAAoB,QAAQ;AAAA,EACnE,MAAM,aAAuB,CAAC;AAAA,EAC9B,WAAW,KAAK,EAAE,SAAS,oBAAoB,OAAO;AAAA,IACpD,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,mBAAmB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,IAC1D,WAAW,YAAY,OAAO;AAAA,MAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,MACtC,MAAM,MAAM,mBAAmB,KAAK,EAAE;AAAA,MACtC,MAAM,MAAM,mBAAmB,KAAK,EAAE;AAAA,MACtC,IAAI,CAAC,OAAO,CAAC;AAAA,QAAK;AAAA,MAClB,WAAW,KAAK,GAAI,MAAM,2BAA2B,UAAU,KAAK,KAAK,GAAG,CAAE;AAAA,IAChF;AAAA,EACF;AAAA,EACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAGtD,IAAM,kBAAoC;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AACF;;;AC/VA,oBAAS;AACT,iBAAS,mBAAM;AACf,iBAAS;AAGT,IAAM,qBAAoB,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ;AAE3E,SAAS,cAAa,CAAC,SAA0B;AAAA,EAC/C,OAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA;AAGvF,SAAS,WAAU,CAAC,KAAsB;AAAA,EACxC,OACE,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,QAAQ,KACrB,IAAI,WAAW,QAAQ;AAAA;AAI3B,eAAe,mBAAkB,CAC/B,KACA,UACA,KACe;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,MAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI;AAAA,QAAG,MAAM,oBAAmB,UAAU,UAAU,GAAG;AAAA,IACjF,EAAO,SAAI,MAAM,OAAO,MAAM,MAAM,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,SAAS,MAAM,IAAI;AAAA,MACxF,IAAI,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA;AAGF,SAAS,gBAAe,CAAC,KAAa,OAA0B;AAAA,EAC9D,WAAW,KAAK,OAAO;AAAA,IACrB,IAAI,IAAI,MAAK,CAAC,EAAE,MAAM,GAAG;AAAA,MAAG,OAAO;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,gBACJ;AAEF,SAAS,gBAAgB,CAAC,MAAwB;AAAA,EAChD,MAAM,MAAgB,CAAC;AAAA,EACvB,cAAa,YAAY;AAAA,EACzB,IAAI,QAAQ,cAAa,KAAK,IAAI;AAAA,EAClC,OAAO,UAAU,MAAM;AAAA,IACrB,MAAM,IAAI,MAAM,MAAM,MAAM;AAAA,IAC5B,IAAI;AAAA,MAAG,IAAI,KAAK,CAAC;AAAA,IACjB,QAAQ,cAAa,KAAK,IAAI;AAAA,EAChC;AAAA,EACA,OAAO;AAAA;AAaT,IAAM,mBAAoD;AAAA,EACxD,UAAU;AAAA,EACV,cAAc,CAAC;AAAA,EACf,OAAO,CAAC,OAAO,SAAS,OAAO,SAAS;AAAA,EACxC,UAAU;AACZ;AAEA,SAAS,aAAa,CAAC,WAA2B;AAAA,EAChD,IAAI,CAAC,UAAU,WAAW,IAAI;AAAA,IAAG,OAAO;AAAA,EACxC,IAAI,QAAQ;AAAA,EACZ,WAAW,WAAW,UAAU,MAAM,GAAG,GAAG;AAAA,IAC1C,IAAI,YAAY;AAAA,MAAM;AAAA,IACjB;AAAA;AAAA,EACP;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,6BAA6B,CAC1C,UACA,KACA,UACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,eAAc,KAAK,KAAK,CAAC;AAAA,MAAG;AAAA,IAChC,WAAW,aAAa,iBAAiB,IAAI,GAAG;AAAA,MAC9C,IAAI,cAAc,SAAS,IAAI,UAAU;AAAA,QACvC,IAAI,KAAK,GAAG,OAAO,IAAI,cAAc,+BAA+B,UAAU;AAAA,MAChF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,kBAA4D;AAAA,EAChE,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,iBAAiB,QAAQ;AAAA,IAChE,MAAM,UAAU,EAAE,gBAAgB,iBAAiB;AAAA,IACnD,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,SAAS,iBAAiB,OAAO;AAAA,MACjD,MAAM,oBAAmB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IACvD;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM;AAAA,MACvB,MAAM,MAAM,UAAS,MAAM,CAAC;AAAA,MAC5B,OAAO,CAAC,YAAW,GAAG,KAAK,CAAC,iBAAgB,KAAK,OAAO;AAAA,KACzD;AAAA;AAAA,EAEH,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,WAAW,EAAE,YAAY,iBAAiB;AAAA,IAChD,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,iBAAiB,QAAQ;AAAA,IAChE,MAAM,UAAU,EAAE,gBAAgB,iBAAiB;AAAA,IACnD,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,SAAS,iBAAiB,OAAO;AAAA,MACjD,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,oBAAmB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,MAC1D,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,YAAW,GAAG,KAAK,iBAAgB,KAAK,OAAO;AAAA,UAAG;AAAA,QACtD,WAAW,KAAK,GAAI,MAAM,8BAA8B,UAAU,KAAK,QAAQ,CAAE;AAAA,MACnF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAWA,IAAM,yBAAwD;AAAA,EAC5D,OAAO,CAAC,iBAAiB,oBAAoB;AAAA,EAC7C,gBAAgB,CAAC;AACnB;AAEA,eAAe,aAAa,CAAC,SAAiB,OAAoC;AAAA,EAChF,MAAM,MAAgB,CAAC;AAAA,EACvB,MAAM,WAAW,IAAI,IAAI,kBAAiB;AAAA,EAC1C,eAAe,IAAI,CAAC,KAA4B;AAAA,IAC9C,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,MACpD,MAAM;AAAA,MACN;AAAA;AAAA,IAEF,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,WAAW,MAAK,KAAK,MAAM,IAAI;AAAA,MACrC,IAAI,MAAM,YAAY,GAAG;AAAA,QACvB,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI;AAAA,UAAG,MAAM,KAAK,QAAQ;AAAA,MACpD,EAAO,SAAI,MAAM,OAAO,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG;AAAA,QACvD,IAAI,KAAK,QAAQ;AAAA,MACnB;AAAA,IACF;AAAA;AAAA,EAEF,MAAM,KAAK,OAAO;AAAA,EAClB,OAAO;AAAA;AAGT,IAAM,gBAAwD;AAAA,EAC5D,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS,cAAc,MAAM,KAAK,SAAS,uBAAuB,KAAK;AAAA,EAC9F,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,QAAQ,EAAE,SAAS,uBAAuB;AAAA,IAChD,MAAM,UAAU,IAAI,IAAI,EAAE,kBAAkB,uBAAuB,cAAc;AAAA,IACjF,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,gBAAgB,MAAM,cAAc,SAAS,KAAK,GAAG;AAAA,MAC9D,MAAM,MAAM,MAAM,IAAI,KAAK,YAAY,EAAE,KAAK;AAAA,MAC9C,MAAM,WAAW,IAAI,QAAQ,iBAAiB;AAAA,CAAI,EAAE,QAAQ,qBAAqB,EAAE;AAAA,MACnF,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,SAAS,KAAK,MAAM,QAAQ;AAAA,QAG5B,MAAM;AAAA,QACN,WAAW,KAAK,GAAG,UAAS,SAAS,YAAY,4BAA4B;AAAA,QAC7E;AAAA;AAAA,MAEF,MAAM,QAAQ,OAAO,iBAAiB,SAAS,CAAC;AAAA,MAChD,WAAW,SAAS,OAAO,KAAK,KAAK,GAAG;AAAA,QACtC,IAAI,QAAQ,IAAI,KAAK;AAAA,UAAG;AAAA,QACxB,WAAW,KAAK,GAAG,UAAS,SAAS,YAAY,aAAa,gBAAgB;AAAA,MAChF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAaA,IAAM,sBAA0E;AAAA,EAC9E,QAAQ,CAAC,SAAS,kBAAkB,OAAO;AAAA,EAC3C,cAAc,CAAC;AAAA,EACf,OAAO,CAAC,KAAK;AAAA,EACb,UAAU;AACZ;AAEA,SAAS,oBAAoB,CAAC,QAA0B;AAAA,EACtD,MAAM,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,uBAAuB,MAAM,CAAC,EAAE,KAAK,GAAG;AAAA,EAEjF,OAAO,IAAI,OAAO,OAAO,iBAAiB;AAAA;AAG5C,eAAe,kBAAkB,CAC/B,UACA,KACA,iBACA,aACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EAOvB,MAAM,kBAAkB,MAAM,KAC5B,CAAC,MAAM,EAAE,SAAS,SAAS,kBAAkB,KAAK,EAAE,SAAS,SAAS,kBAAkB,CAC1F;AAAA,EACA,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,UAAU,KAAK,KAAK;AAAA,IAC1B,IAAI,eAAc,OAAO;AAAA,MAAG;AAAA,IAC5B,IAAI,YAAY,KAAK,IAAI,KAAK,CAAC,iBAAiB;AAAA,MAC9C,IAAI,KAAK,GAAG,OAAO,IAAI,MAAM,SAAS;AAAA,IACxC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,YAAgD;AAAA,EACpD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,IAAI,CAAC,KAAK;AAAA,MAAiB,OAAO,CAAC;AAAA,IACnC,MAAM,WAAW,IAAI,IAAI,IAAI,YAAY,oBAAoB,QAAQ;AAAA,IACrE,MAAM,UAAU,IAAI,gBAAgB,oBAAoB;AAAA,IACxD,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,IAAI,SAAS,oBAAoB,OAAO;AAAA,MACtD,MAAM,oBAAmB,MAAK,MAAM,CAAC,GAAG,UAAU,GAAG;AAAA,IACvD;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM;AAAA,MACvB,MAAM,MAAM,UAAS,MAAM,CAAC;AAAA,MAC5B,OAAO,CAAC,YAAW,GAAG,KAAK,CAAC,iBAAgB,KAAK,OAAO;AAAA,KACzD;AAAA;AAAA,EAEH,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,IAAI,CAAC,EAAE,iBAAiB;AAAA,MAItB,OAAO,EAAE,IAAI,MAAM,UAAU,CAAC,EAAE;AAAA,IAClC;AAAA,IACA,MAAM,SAAS,EAAE,UAAU,oBAAoB;AAAA,IAC/C,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,oBAAoB,QAAQ;AAAA,IACnE,MAAM,UAAU,EAAE,gBAAgB,oBAAoB;AAAA,IACtD,MAAM,cAAc,qBAAqB,MAAM;AAAA,IAC/C,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,SAAS,oBAAoB,OAAO;AAAA,MACpD,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,oBAAmB,MAAK,SAAS,CAAC,GAAG,UAAU,KAAK;AAAA,MAC1D,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,YAAW,GAAG,KAAK,iBAAgB,KAAK,OAAO;AAAA,UAAG;AAAA,QACtD,WAAW,KACT,GAAI,MAAM,mBAAmB,UAAU,KAAK,EAAE,iBAAiB,WAAW,CAC5E;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAWA,eAAe,SAAS,CACtB,aACA,SAC0C;AAAA,EAC1C,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,OAAO,YAAY,MAAM,WAAW,GAAG;AAAA,IACrE,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,EACV,CAAC;AAAA,EACD,OAAO,QAAQ,UAAU,MAAM,QAAQ,IAAI;AAAA,IACzC,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,IAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,KAAK;AAAA,EACjC,CAAC;AAAA,EACD,MAAM,KAAK;AAAA,EACX,OAAO,EAAE,IAAI,KAAK,aAAa,GAAG,QAAQ,GAAG,SAAS,SAAS;AAAA;AAGjE,eAAe,cAAc,CAAC,SAAiB,UAAuC;AAAA,EACpF,MAAM,MAAgB,CAAC;AAAA,EACvB,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,OAAO,IAAI,MAAK,GAAG,uBAAuB;AAAA,IAChD,iBAAiB,QAAQ,KAAK,KAAK,EAAE,KAAK,SAAS,UAAU,KAAK,CAAC,GAAG;AAAA,MAEpE,IAAI,KAAK,KAAK,QAAQ,qBAAqB,EAAE,CAAC;AAAA,IAChD;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,IAAI,IAAI,GAAG,CAAC;AAAA;AAGzB,IAAM,QAAwC;AAAA,EAC5C,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,YAAY;AAAA,IAMrB,OAAO,CAAC;AAAA;AAAA,EAEV,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,WAAW,QAAQ,cAAc,CAAC,cAAc,GAAG;AAAA,IACzD,MAAM,WAAW,MAAM,eAAe,SAAS,QAAQ;AAAA,IACvD,IAAI,SAAS,WAAW;AAAA,MAAG,OAAO,EAAE,IAAI,MAAM,UAAU,CAAC,6BAA6B,EAAE;AAAA,IACxF,MAAM,UAAU,MAAM,QAAQ,IAAI,SAAS,IAAI,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC;AAAA,IAC5E,OAAO,sBAAsB,UAAU,SAAS,OAAO;AAAA;AAE3D;AAEA,SAAS,gBAAgB,CAAC,UAAoB,QAAgB,QAAsB;AAAA,EAClF,SAAS,KAAK,GAAG,6BAA6B;AAAA,EAC9C,MAAM,UAAU,OAAO,KAAK;AAAA,EAC5B,IAAI,CAAC;AAAA,IAAS;AAAA,EACd,WAAW,MAAM,QAAQ,MAAM;AAAA,CAAI,EAAE,MAAM,GAAG,EAAE;AAAA,IAAG,SAAS,KAAK,KAAK,IAAI;AAAA;AAG5E,SAAS,qBAAqB,CAC5B,UACA,SACA,SACqC;AAAA,EACrC,MAAM,WAAqB,CAAC;AAAA,EAC5B,IAAI,KAAK;AAAA,EACT,SAAS,IAAI,EAAG,IAAI,SAAS,QAAQ,KAAK;AAAA,IACxC,MAAM,MAAM,SAAS;AAAA,IACrB,MAAM,IAAI,QAAQ;AAAA,IAClB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;AAAA,MAAI;AAAA,IACxB,KAAK;AAAA,IACL,iBAAiB,UAAU,UAAS,SAAS,GAAG,KAAK,KAAK,EAAE,MAAM;AAAA,EACpE;AAAA,EACA,OAAO,EAAE,IAAI,SAAS;AAAA;AAGjB,IAAM,mBAAqC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AJjYA,IAAM,mBAAmB,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,aAAa,SAAS,UAAU;AASlG,eAAe,SAAS,CAAC,SAAiB,KAAoC;AAAA,EAC5E,MAAM,cAAc,IAAI,IAAI,IAAI,WAAW,gBAAgB;AAAA,EAC3D,MAAM,kBAAkB,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC;AAAA,EACzD,MAAM,eAAe,IAAI,IAAI,IAAI,gBAAgB,CAAC,CAAC;AAAA,EACnD,MAAM,UAAU,IAAI,gBAAgB;AAAA,EACpC,MAAM,OAAO,IAAI,MAAK,OAAO;AAAA,EAC7B,MAAM,MAAgB,CAAC;AAAA,EACvB,iBAAiB,QAAQ,KAAK,KAAK,EAAE,KAAK,SAAS,UAAU,KAAK,CAAC,GAAG;AAAA,IACpE,MAAM,MAAM,KAAK,QAAQ,GAAG,YAAY,EAAE;AAAA,IAC1C,MAAM,WAAW,IAAI,MAAM,GAAG;AAAA,IAC9B,IAAI,SAAS,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,CAAC;AAAA,MAAG;AAAA,IAC9C,IAAI,gBAAgB,OAAO,KAAK,SAAS,KAAK,CAAC,MAAM,gBAAgB,IAAI,CAAC,CAAC;AAAA,MAAG;AAAA,IAC9E,MAAM,WAAW,SAAS,SAAS,SAAS,MAAM;AAAA,IAClD,IAAI,aAAa,IAAI,QAAQ,KAAK,aAAa,IAAI,GAAG;AAAA,MAAG;AAAA,IACzD,IAAI,KAAK,IAAI;AAAA,EACf;AAAA,EACA,OAAO;AAAA;AAGT,SAAS,iBAAiB,CAAC,QAA4C;AAAA,EACrE,OAAO,UAAU,CAAC;AAAA;AAGpB,IAAM,cAA6C;AAAA,EACjD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,CAAC,KAAK,SAAS,UAAU,MAAM,kBAAkB,GAAG,CAAC;AAAA,EAChE,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,MAAM,kBAAkB,MAAM;AAAA,IACpC,MAAM,SAAS,MAAM,iBAAiB;AAAA,MACpC;AAAA,MACA,SAAS,IAAI,WAAW;AAAA,SACpB,IAAI,kBAAkB,EAAE,iBAAiB,IAAI,gBAAgB,IAAI,CAAC;AAAA,SAClE,IAAI,eAAe,EAAE,cAAc,IAAI,aAAa,IAAI,CAAC;AAAA,SACzD,IAAI,eAAe,EAAE,cAAc,IAAI,aAAa,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,OAAO,WAAW,WAAW;AAAA,MACjC,UAAU,OAAO,WAAW,IAC1B,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,MAAK,EAAE,WAAW,IAC1E;AAAA,IACF;AAAA;AAEJ;AAEA,IAAM,YAA2C;AAAA,EAC/C,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,WAAW,CAAC,KAAK,SAAS,UAAU,MAAM,kBAAkB,GAAG,CAAC;AAAA,EAChE,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,MAAM,kBAAkB,MAAM;AAAA,IACpC,MAAM,SAAS,MAAM,eAAe;AAAA,MAClC;AAAA,MACA,SAAS,IAAI,WAAW;AAAA,SACpB,IAAI,eAAe,EAAE,cAAc,IAAI,aAAa,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,OAAO,WAAW,WAAW;AAAA,MACjC,UAAU,OAAO,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;AAAA,IAC5E;AAAA;AAEJ;AAOA,IAAM,UAA4C;AAAA,EAChD,IAAI;AAAA,EACJ,aAAa;AAAA,EAIb,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,IAAI,CAAC,EAAE;AAAA,MAAY,OAAO,CAAC;AAAA,IAC3B,OAAO,CAAC,OAAK,MAAM,EAAE,UAAU,CAAC;AAAA;AAAA,EAElC,gBAAgB,CAAC,SAAS;AAAA,IACxB,OAAO,KAAK,UAAU,QAAQ,UAAU;AAAA,EAC1C;AAAA,EACA,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,MAAM,UAAU,CAAC;AAAA,IACvB,MAAM,SAAS,MAAM,aAAa;AAAA,MAChC,MAAM;AAAA,SACF,IAAI,aAAa,EAAE,YAAY,IAAI,WAAW,IAAI,CAAC;AAAA,SACnD,OAAO,IAAI,UAAU,YAAY,EAAE,OAAO,IAAI,MAAM,IAAI,CAAC;AAAA,IAC/D,CAAC;AAAA,IACD,IAAI,CAAC,OAAO,aAAa;AAAA,MACvB,OAAO;AAAA,QACL,IAAI;AAAA,QACJ,UAAU;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,MACL,IAAI,OAAO,aAAa;AAAA,MACxB,UACE,OAAO,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,OAAO,KAAK,KAAK,mBAAmB,OAAO,UAAU;AAAA,IAC9F;AAAA;AAEJ;AASA,IAAM,sBAA0D;AAAA,EAC9D,IAAI;AAAA,EACJ,aACE;AAAA,EACF,WAAW,CAAC,KAAK,SAAS;AAAA,IACxB,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,OAAO;AAAA,MACL,OAAK,MAAM,EAAE,YAAY,gBAAgB;AAAA,MACzC,OAAK,MAAM,EAAE,iBAAiB,YAAY;AAAA,IAC5C;AAAA;AAAA,EAEF,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,MAAM,UAAU,CAAC;AAAA,IACvB,MAAM,SAAS,MAAM,8BAA8B;AAAA,MACjD,MAAM;AAAA,SACF,IAAI,WAAW,EAAE,UAAU,IAAI,SAAS,IAAI,CAAC;AAAA,SAC7C,IAAI,gBAAgB,EAAE,eAAe,IAAI,cAAc,IAAI,CAAC;AAAA,SAC5D,IAAI,sBAAsB,EAAE,qBAAqB,IAAI,oBAAoB,IAAI,CAAC;AAAA,SAC9E,IAAI,oBAAoB,EAAE,mBAAmB,IAAI,kBAAkB,IAAI,CAAC;AAAA,IAC9E,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,OAAO,QAAQ,WAAW;AAAA,MAC9B,UACE,OAAO,QAAQ,WAAW,IACtB,CAAC,IACD;AAAA,QACE;AAAA,QACA,GAAG,OAAO,QAAQ,IAAI,CAAC,MAAM,KAAK,GAAG;AAAA,MACvC;AAAA,IACR;AAAA;AAEJ;AAEO,IAAM,qBAAqB;AAE3B,IAAM,kBAAiC;AAAA,EAC5C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;;;AD/KA,IAAM,gBAAgB,CAAC,mBAAmB,mBAAmB,kBAAkB;AAE/E,eAAsB,iBAAiB,CACrC,SACA,cAC2B;AAAA,EAC3B,MAAM,aAAa,eAAe,CAAC,YAAY,IAAI,cAAc,IAAI,CAAC,MAAM,OAAK,SAAS,CAAC,CAAC;AAAA,EAE5F,WAAW,QAAQ,YAAY;AAAA,IAC7B,IAAI,CAAE,MAAM,IAAI,KAAK,IAAI,EAAE,OAAO;AAAA,MAAI;AAAA,IACtC,MAAM,MAAO,MAAa;AAAA,IAC1B,MAAM,SAAS,IAAI,SAAS;AAAA,IAC5B,IAAI,CAAC;AAAA,MAAQ;AAAA,IACb,IAAI,CAAC,MAAM,QAAQ,OAAO,OAAO,KAAK,OAAO,QAAQ,WAAW,GAAG;AAAA,MACjE,MAAM,IAAI,MAAM,GAAG,qDAAqD;AAAA,IAC1E;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EAEA,OAAO,EAAE,SAAS,CAAC,eAAe,EAAE;AAAA;;AMXtC,oBAAS;AACT,iBAAS,oBAAM;AACf,iBAAS;AAQT,IAAM,qBAAoB,CAAC,gBAAgB,QAAQ,QAAQ,QAAQ,QAAQ;AAE3E,SAAS,cAAa,CAAC,SAA0B;AAAA,EAC/C,OAAO,QAAQ,WAAW,IAAI,KAAK,QAAQ,WAAW,GAAG,KAAK,QAAQ,WAAW,IAAI;AAAA;AAGvF,SAAS,gBAAe,CAAC,KAAa,OAA0B;AAAA,EAC9D,WAAW,KAAK,OAAO;AAAA,IACrB,IAAI,IAAI,MAAK,CAAC,EAAE,MAAM,GAAG;AAAA,MAAG,OAAO;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGT,eAAe,mBAAkB,CAC/B,KACA,UACA,MACA,KACe;AAAA,EACf,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,UAAU,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,IACpD,MAAM;AAAA,IACN;AAAA;AAAA,EAEF,WAAW,SAAS,SAAS;AAAA,IAC3B,MAAM,WAAW,OAAK,KAAK,MAAM,IAAI;AAAA,IACrC,IAAI,MAAM,YAAY,GAAG;AAAA,MACvB,IAAI,CAAC,SAAS,IAAI,MAAM,IAAI;AAAA,QAAG,MAAM,oBAAmB,UAAU,UAAU,MAAM,GAAG;AAAA,IACvF,EAAO,SAAI,MAAM,OAAO,KAAK,KAAK,KAAK,CAAC,MAAM,MAAM,KAAK,SAAS,CAAC,CAAC,GAAG;AAAA,MACrE,IAAI,KAAK,QAAQ;AAAA,IACnB;AAAA,EACF;AAAA;AAUF,IAAM,YAA+C;AAAA,EACnD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,MAAM,eAAe;AAAA,MAC7B;AAAA,SACI,QAAQ,WAAW,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IAC1D,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,EAAE,WAAW,WAAW;AAAA,MAC5B,UAAU,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,IACpE;AAAA;AAEJ;AAEA,IAAM,aAAgD;AAAA,EACpD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,MAAM,gBAAgB;AAAA,MAC9B;AAAA,SACI,QAAQ,WAAW,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IAC1D,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,EAAE,WAAW,WAAW;AAAA,MAC5B,UAAU,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,IACpE;AAAA;AAEJ;AAEA,IAAM,UAA6C;AAAA,EACjD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,MAAM,aAAa;AAAA,MAC3B;AAAA,SACI,QAAQ,WAAW,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IAC1D,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,EAAE,WAAW,WAAW;AAAA,MAC5B,UAAU,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,IACpE;AAAA;AAEJ;AAEA,IAAM,YAA+C;AAAA,EACnD,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,MAAM,eAAe;AAAA,MAC7B;AAAA,SACI,QAAQ,WAAW,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IAC1D,CAAC;AAAA,IACD,OAAO;AAAA,MAEL,IAAI;AAAA,MACJ,UAAU,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA,IACpE;AAAA;AAEJ;AAUA,IAAM,mBAA8D;AAAA,EAClE,IAAI;AAAA,EACJ,aACE;AAAA,EACF,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,IAAI,MAAM,sBAAsB;AAAA,MACpC,MAAM;AAAA,SACF,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC;AAAA,SACzC,EAAE,WAAW,EAAE,UAAU,IAAI,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC;AAAA,SAClD,EAAE,iBAAiB,EAAE,gBAAgB,IAAI,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC;AAAA,IAC1E,CAAC;AAAA,IACD,OAAO;AAAA,MACL,IAAI,EAAE,WAAW,WAAW;AAAA,MAC5B,UAAU,EAAE,WAAW,IACrB,CAAC,MAAM,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAY,EAAE,iBAAiB,EAAE,SACpE;AAAA,IACF;AAAA;AAEJ;AAWA,IAAM,6BAA+D;AAAA,EACnE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,cAAc,CAAC;AAAA,EACf,OAAO,CAAC,KAAK;AAAA,EACb,UAAU;AACZ;AAEA,SAAS,WAAW,CAAC,MAAsB;AAAA,EACzC,OAAO,KAAK,QAAQ,uBAAuB,MAAM;AAAA;AAGnD,SAAS,iBAAiB,CAAC,QAA0B;AAAA,EACnD,MAAM,OAAO,OAAO,IAAI,WAAW,EAAE,KAAK,GAAG;AAAA,EAG7C,OAAO,IAAI,OAAO,OAAO,mBAAmB;AAAA;AAG9C,SAAS,WAAU,CAAC,KAAsB;AAAA,EACxC,OACE,IAAI,SAAS,WAAW,KACxB,IAAI,SAAS,QAAQ,KACrB,IAAI,SAAS,QAAQ,KACrB,IAAI,WAAW,QAAQ;AAAA;AAI3B,eAAe,yBAAyB,CACtC,UACA,KACA,OACmB;AAAA,EACnB,MAAM,UAAU,MAAM,IAAI,KAAK,QAAQ,EAAE,KAAK;AAAA,EAC9C,MAAM,QAAQ,QAAQ,MAAM;AAAA,CAAI;AAAA,EAChC,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACrC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,IAAI,eAAc,KAAK,KAAK,CAAC;AAAA,MAAG;AAAA,IAChC,IAAI,MAAM,KAAK,IAAI,GAAG;AAAA,MACpB,IAAI,KAAK,GAAG,OAAO,IAAI,MAAM,KAAK,KAAK,GAAG;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,mBAA8D;AAAA,EAClE,IAAI;AAAA,EACJ,aACE;AAAA,EACF,WAAW,OAAO,KAAK,SAAS;AAAA,IAC9B,MAAM,IAAI,OAAO,CAAC;AAAA,IAClB,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,2BAA2B,QAAQ;AAAA,IAC1E,MAAM,UAAU,EAAE,gBAAgB,2BAA2B;AAAA,IAC7D,MAAM,MAAgB,CAAC;AAAA,IACvB,WAAW,KAAK,EAAE,SAAS,2BAA2B,OAAO;AAAA,MAC3D,MAAM,oBAAmB,OAAK,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,GAAG;AAAA,IACjE;AAAA,IACA,OAAO,IAAI,OAAO,CAAC,MAAM;AAAA,MACvB,MAAM,MAAM,UAAS,MAAM,CAAC;AAAA,MAC5B,OAAO,CAAC,YAAW,GAAG,KAAK,CAAC,iBAAgB,KAAK,OAAO;AAAA,KACzD;AAAA;AAAA,EAEH,KAAK,SAAS,SAAS,aAAa;AAAA,IAClC,MAAM,IAAI,UAAU,CAAC;AAAA,IACrB,MAAM,SAAS,EAAE,UAAU,2BAA2B;AAAA,IACtD,IAAI,OAAO,WAAW;AAAA,MAAG,OAAO,EAAE,IAAI,MAAM,UAAU,CAAC,EAAE;AAAA,IACzD,MAAM,WAAW,IAAI,IAAI,EAAE,YAAY,2BAA2B,QAAQ;AAAA,IAC1E,MAAM,UAAU,EAAE,gBAAgB,2BAA2B;AAAA,IAC7D,MAAM,QAAQ,kBAAkB,MAAM;AAAA,IACtC,MAAM,aAAuB,CAAC;AAAA,IAC9B,WAAW,KAAK,EAAE,SAAS,2BAA2B,OAAO;AAAA,MAC3D,MAAM,QAAkB,CAAC;AAAA,MACzB,MAAM,oBAAmB,OAAK,SAAS,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK;AAAA,MACpE,WAAW,YAAY,OAAO;AAAA,QAC5B,MAAM,MAAM,UAAS,SAAS,QAAQ;AAAA,QACtC,IAAI,YAAW,GAAG,KAAK,iBAAgB,KAAK,OAAO;AAAA,UAAG;AAAA,QACtD,WAAW,KAAK,GAAI,MAAM,0BAA0B,UAAU,KAAK,KAAK,CAAE;AAAA,MAC5E;AAAA,IACF;AAAA,IACA,OAAO,EAAE,IAAI,WAAW,WAAW,GAAG,UAAU,WAAW;AAAA;AAE/D;AAEO,IAAM,0BAA0B;AAEhC,IAAM,gBAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
27
+ "debugId": "358583C5FA8FB54F64756E2164756E21",
28
28
  "names": []
29
29
  }