blume 2.2.2 → 2.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/THIRD-PARTY-NOTICES.md +51 -0
- package/dist/cli/{chunk-kmswjxj9.js → chunk-0b1a8xqz.js} +3 -3
- package/dist/cli/{chunk-rtvgmg2j.js → chunk-0qx6vwwf.js} +2 -2
- package/dist/cli/{chunk-qcyxkj44.js → chunk-3ps63r91.js} +43 -17
- package/dist/cli/chunk-3ps63r91.js.map +15 -0
- package/dist/cli/{chunk-b680sv30.js → chunk-402xaaxn.js} +10 -8
- package/dist/cli/chunk-402xaaxn.js.map +13 -0
- package/dist/cli/{chunk-k45sq16q.js → chunk-49xa4yf2.js} +39 -23
- package/dist/cli/{chunk-k45sq16q.js.map → chunk-49xa4yf2.js.map} +3 -3
- package/dist/cli/{chunk-j4nfgn2j.js → chunk-51wr1wre.js} +1 -1
- package/dist/cli/{chunk-9jqmq5hv.js → chunk-531qbwn1.js} +6 -6
- package/dist/cli/{chunk-r5nm9w0c.js → chunk-5bp65pv4.js} +107 -37
- package/dist/cli/{chunk-r5nm9w0c.js.map → chunk-5bp65pv4.js.map} +11 -10
- package/dist/cli/{chunk-yg8ckc3g.js → chunk-6nvcjzts.js} +2 -2
- package/dist/cli/{chunk-x7bh6d9j.js → chunk-6v5w8vzd.js} +4 -4
- package/dist/cli/{chunk-f260jdrn.js → chunk-8cshtem6.js} +5 -5
- package/dist/cli/{chunk-ydqzkhjn.js → chunk-8h5ceyk0.js} +6 -6
- package/dist/cli/{chunk-e1n41w9m.js → chunk-8v90n67z.js} +3 -3
- package/dist/cli/{chunk-etckvbrh.js → chunk-98me5yas.js} +14 -14
- package/dist/cli/{chunk-hktq4j5r.js → chunk-9k7gg4ga.js} +16 -10
- package/dist/cli/{chunk-hktq4j5r.js.map → chunk-9k7gg4ga.js.map} +5 -5
- package/dist/cli/{chunk-34wap3ed.js → chunk-9qmc57zw.js} +3 -3
- package/dist/cli/{chunk-beb0z983.js → chunk-a1xmzxk2.js} +16 -16
- package/dist/cli/{chunk-gwy55cx3.js → chunk-ajw85dgf.js} +2 -2
- package/dist/cli/{chunk-69rjf786.js → chunk-ansqj08e.js} +5 -5
- package/dist/cli/{chunk-q1wwrxzw.js → chunk-b0vwhmdf.js} +3 -3
- package/dist/cli/chunk-b0vwhmdf.js.map +10 -0
- package/dist/cli/{chunk-nqna8dzp.js → chunk-b5gztt4j.js} +17 -17
- package/dist/cli/{chunk-fnxgtjeq.js → chunk-bc4jz2m4.js} +1 -1
- package/dist/cli/{chunk-aafhwx74.js → chunk-d4h1y312.js} +1 -1
- package/dist/cli/{chunk-080mfch6.js → chunk-et7zwqkg.js} +15 -15
- package/dist/cli/{chunk-487b95qy.js → chunk-f29q3j13.js} +41 -25
- package/dist/cli/{chunk-487b95qy.js.map → chunk-f29q3j13.js.map} +3 -3
- package/dist/cli/{chunk-c5bjxq8v.js → chunk-f72388jn.js} +2 -2
- package/dist/cli/{chunk-t2h8pwy1.js → chunk-g0hpwbyx.js} +4 -4
- package/dist/cli/{chunk-40vk8kgf.js → chunk-j102xmnk.js} +7 -7
- package/dist/cli/{chunk-ppa6mg4d.js → chunk-m54bz9ng.js} +6 -6
- package/dist/cli/{chunk-h0qwdbem.js → chunk-mt6njy68.js} +2 -2
- package/dist/cli/{chunk-2ssh60qh.js → chunk-n091sgam.js} +6 -6
- package/dist/cli/{chunk-1ch3ct3r.js → chunk-p33bf2nb.js} +14 -14
- package/dist/cli/{chunk-4zxh25hc.js → chunk-saxq5jjr.js} +2 -2
- package/dist/cli/{chunk-x60e15st.js → chunk-sbt1s5j2.js} +17 -17
- package/dist/cli/{chunk-gxhcf2hs.js → chunk-tckd6qwv.js} +2 -2
- package/dist/cli/{chunk-p834rkcn.js → chunk-tf4134kk.js} +5 -5
- package/dist/cli/{chunk-zxd5jrgx.js → chunk-vxdjss7f.js} +76 -34
- package/dist/cli/{chunk-zxd5jrgx.js.map → chunk-vxdjss7f.js.map} +4 -4
- package/dist/cli/{chunk-9h8mh2tk.js → chunk-x2pgg22t.js} +1 -1
- package/dist/cli/{chunk-hn3g2b89.js → chunk-xhrwrzrh.js} +9 -9
- package/dist/cli/index.js +18 -18
- package/dist/types/ai/ask-context.d.ts +8 -0
- package/dist/types/ai/link-text.d.ts +5 -0
- package/dist/types/ai/relative-links.d.ts +26 -6
- package/dist/types/core/config-input.d.ts +41 -1
- package/dist/types/core/data.d.ts +14 -0
- package/dist/types/core/last-modified.d.ts +33 -18
- package/dist/types/core/links.d.ts +16 -0
- package/dist/types/core/schema.d.ts +17 -1
- package/dist/types/core/types.d.ts +10 -0
- package/dist/types/deploy/sitemap.d.ts +9 -0
- package/dist/types/search/documents.d.ts +3 -1
- package/dist/types/search/fold.d.ts +33 -0
- package/dist/types/search/orama-index.d.ts +4 -4
- package/dist/types/seo/jsonld.d.ts +33 -0
- package/docs/configuration/search.mdx +2 -2
- package/docs/configuration/theming.mdx +13 -1
- package/docs/content/frontmatter.mdx +1 -1
- package/docs/content/i18n.mdx +1 -1
- package/docs/content/sources/remote-mdx.mdx +1 -1
- package/docs/discoverability/open-graph.mdx +16 -1
- package/docs/discoverability/sitemap-and-robots.mdx +12 -0
- package/docs/discoverability/structured-data.mdx +44 -0
- package/package.json +4 -3
- package/skills/blume-migrate/references/docus.md +1 -2
- package/skills/blume-migrate/references/docusaurus.md +1 -1
- package/skills/blume-migrate/references/vitepress.md +2 -2
- package/skills/blume-migrate/references/vuepress.md +1 -1
- package/src/ai/ask-context.ts +52 -14
- package/src/ai/ask-data.ts +4 -1
- package/src/ai/ask-tools.ts +17 -5
- package/src/ai/link-text.ts +6 -0
- package/src/ai/llms.ts +1 -7
- package/src/ai/markdown.ts +8 -4
- package/src/ai/relative-links.ts +155 -48
- package/src/ai/site-skill.ts +1 -4
- package/src/astro/generate.ts +7 -0
- package/src/astro/templates.ts +36 -20
- package/src/components/layout/Header.astro +18 -10
- package/src/components/layout/PageActions.astro +1 -0
- package/src/components/layout/PageLayout.astro +31 -13
- package/src/components/layout/ReferenceLayout.astro +6 -1
- package/src/components/layout/RootLayout.astro +13 -1
- package/src/components/layout/head-scripts.ts +5 -1
- package/src/components/layout/locale-redirect.ts +38 -19
- package/src/components/layout/search/types.ts +12 -4
- package/src/core/config-input.ts +40 -1
- package/src/core/config.ts +5 -2
- package/src/core/data.ts +14 -0
- package/src/core/last-modified.ts +80 -34
- package/src/core/links.ts +43 -2
- package/src/core/manifest.ts +2 -0
- package/src/core/project-graph.ts +83 -43
- package/src/core/schema.ts +48 -9
- package/src/core/types.ts +10 -0
- package/src/deploy/sitemap.ts +127 -49
- package/src/search/documents.ts +34 -11
- package/src/search/fold.ts +175 -0
- package/src/search/orama-index.ts +40 -49
- package/src/seo/jsonld.ts +100 -23
- package/src/theme/chrome-icons.ts +2 -1
- package/src/theme/entry.ts +4 -1
- package/dist/cli/chunk-b680sv30.js.map +0 -13
- package/dist/cli/chunk-q1wwrxzw.js.map +0 -10
- package/dist/cli/chunk-qcyxkj44.js.map +0 -14
- /package/dist/cli/{chunk-kmswjxj9.js.map → chunk-0b1a8xqz.js.map} +0 -0
- /package/dist/cli/{chunk-rtvgmg2j.js.map → chunk-0qx6vwwf.js.map} +0 -0
- /package/dist/cli/{chunk-j4nfgn2j.js.map → chunk-51wr1wre.js.map} +0 -0
- /package/dist/cli/{chunk-9jqmq5hv.js.map → chunk-531qbwn1.js.map} +0 -0
- /package/dist/cli/{chunk-yg8ckc3g.js.map → chunk-6nvcjzts.js.map} +0 -0
- /package/dist/cli/{chunk-x7bh6d9j.js.map → chunk-6v5w8vzd.js.map} +0 -0
- /package/dist/cli/{chunk-f260jdrn.js.map → chunk-8cshtem6.js.map} +0 -0
- /package/dist/cli/{chunk-ydqzkhjn.js.map → chunk-8h5ceyk0.js.map} +0 -0
- /package/dist/cli/{chunk-e1n41w9m.js.map → chunk-8v90n67z.js.map} +0 -0
- /package/dist/cli/{chunk-etckvbrh.js.map → chunk-98me5yas.js.map} +0 -0
- /package/dist/cli/{chunk-34wap3ed.js.map → chunk-9qmc57zw.js.map} +0 -0
- /package/dist/cli/{chunk-beb0z983.js.map → chunk-a1xmzxk2.js.map} +0 -0
- /package/dist/cli/{chunk-gwy55cx3.js.map → chunk-ajw85dgf.js.map} +0 -0
- /package/dist/cli/{chunk-69rjf786.js.map → chunk-ansqj08e.js.map} +0 -0
- /package/dist/cli/{chunk-nqna8dzp.js.map → chunk-b5gztt4j.js.map} +0 -0
- /package/dist/cli/{chunk-fnxgtjeq.js.map → chunk-bc4jz2m4.js.map} +0 -0
- /package/dist/cli/{chunk-aafhwx74.js.map → chunk-d4h1y312.js.map} +0 -0
- /package/dist/cli/{chunk-080mfch6.js.map → chunk-et7zwqkg.js.map} +0 -0
- /package/dist/cli/{chunk-c5bjxq8v.js.map → chunk-f72388jn.js.map} +0 -0
- /package/dist/cli/{chunk-t2h8pwy1.js.map → chunk-g0hpwbyx.js.map} +0 -0
- /package/dist/cli/{chunk-40vk8kgf.js.map → chunk-j102xmnk.js.map} +0 -0
- /package/dist/cli/{chunk-ppa6mg4d.js.map → chunk-m54bz9ng.js.map} +0 -0
- /package/dist/cli/{chunk-h0qwdbem.js.map → chunk-mt6njy68.js.map} +0 -0
- /package/dist/cli/{chunk-2ssh60qh.js.map → chunk-n091sgam.js.map} +0 -0
- /package/dist/cli/{chunk-1ch3ct3r.js.map → chunk-p33bf2nb.js.map} +0 -0
- /package/dist/cli/{chunk-4zxh25hc.js.map → chunk-saxq5jjr.js.map} +0 -0
- /package/dist/cli/{chunk-x60e15st.js.map → chunk-sbt1s5j2.js.map} +0 -0
- /package/dist/cli/{chunk-gxhcf2hs.js.map → chunk-tckd6qwv.js.map} +0 -0
- /package/dist/cli/{chunk-p834rkcn.js.map → chunk-tf4134kk.js.map} +0 -0
- /package/dist/cli/{chunk-9h8mh2tk.js.map → chunk-x2pgg22t.js.map} +0 -0
- /package/dist/cli/{chunk-hn3g2b89.js.map → chunk-xhrwrzrh.js.map} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"/**\n * Classify author-supplied icon strings — built-in Lucide names vs image\n * paths/URLs vs inline SVG. Shared by nav diagnostics, `<Icon>`, and the\n * Cmd+K popular-icon resolver so the three shapes stay in sync.\n */\n\nconst IMAGE_ICON =\n /^(?:https?:\\/\\/|data:image\\/|\\/|\\.{1,2}\\/)|\\.(?:avif|gif|jpe?g|png|svg|webp)$/iu;\n\nconst INLINE_SVG = /^\\s*<svg[\\s\\S]*<\\/svg>\\s*$/u;\n\n/** Image path, remote URL, or data URI — not a Lucide name or inline SVG. */\nexport const isImageIcon = (value: string): boolean => IMAGE_ICON.test(value);\n\n/** Full `<svg>…</svg>` markup (whitespace-tolerant). */\nexport const isInlineSvg = (value: string): boolean => INLINE_SVG.test(value);\n\n/** Image or inline SVG — anything that is not a built-in icon name. */\nexport const isAssetIcon = (value: string): boolean =>\n isInlineSvg(value) || isImageIcon(value);\n",
|
|
6
6
|
"/**\n * Icon resolution backed by the open Iconify Lucide set. Resolution runs at\n * **build time, server-side**, and returns ready-to-inline SVG, so icons stay\n * zero-JS and fully self-contained (no runtime CDN fetch).\n *\n * Because the Iconify set data is large, this module must only be imported from\n * server contexts (`.astro` frontmatter, the CLI). Client scripts use the tiny\n * hand-inlined set in `./chrome-icons.ts` instead.\n */\nimport { createRequire } from \"node:module\";\n\nimport type { IconifyJSON } from \"@iconify/types\";\nimport { getIconData, iconToSVG } from \"@iconify/utils\";\n\n// Load the icon-set JSON with a CJS `require` rather than an `import ... with\n// { type: \"json\" }`: the bundled Node CLI drops the import attribute (Bun.build\n// strips it when externalizing) and then rejects the module, whereas `require`\n// of a JSON file needs no attribute and works under both Node and Bun.\nconst requireJson = createRequire(import.meta.url);\n// SAFETY: the required file is the Iconify-published icon-set JSON, whose\n// shape is exactly `IconifyJSON`.\nconst loadSet = (pkg: string): IconifyJSON => requireJson(pkg) as IconifyJSON;\n\nconst SETS = {\n lucide: loadSet(\"@iconify-json/lucide/icons.json\"),\n};\n\n/** Blume's only icon library. */\nconst DEFAULT_SET = \"lucide\";\n\n/** Explicit `prefix:name` prefixes. Lucide is the only bundled set. */\nconst PREFIX_SETS = {\n lucide: \"lucide\",\n};\n\n/**\n * Own-property map lookup. Icon names come from content and config, so a value\n * like `constructor:x` would otherwise resolve an Object.prototype member (a\n * function) and crash resolution deep in the build with no pointer to the\n * offending page.\n */\nconst ownEntry = <T>(map: Record<string, T>, key: string): T | undefined =>\n Object.hasOwn(map, key) ? map[key] : undefined;\n\nexport interface ResolvedIcon {\n /** Inner SVG markup (self-styled: carries its own fill/stroke). */\n body: string;\n /** The resolved icon name. */\n name: string;\n /** The icon's viewBox (Lucide is 24×24). */\n viewBox: string;\n}\n\nconst normalize = (name: string): string =>\n name\n .trim()\n .toLowerCase()\n .replaceAll(/[\\s_]+/gu, \"-\");\n\nconst fromSet = (setName: string, iconName: string): ResolvedIcon | null => {\n const set = ownEntry(SETS, setName);\n const data = set && getIconData(set, iconName);\n if (!data) {\n return null;\n }\n const { attributes, body } = iconToSVG(data, { height: \"auto\" });\n return { body, name: iconName, viewBox: attributes.viewBox };\n};\n\n/**\n * Resolve an icon name to inline SVG. Honors an explicit `lucide:name` prefix;\n * a bare name resolves against Lucide.\n */\nexport const resolveIcon = (name: string): ResolvedIcon | null => {\n const normalized = normalize(name);\n const colon = normalized.indexOf(\":\");\n if (colon > 0) {\n const setName = ownEntry(PREFIX_SETS, normalized.slice(0, colon));\n return setName ? fromSet(setName, normalized.slice(colon + 1)) : null;\n }\n return fromSet(DEFAULT_SET, normalized);\n};\n\n/**\n * Whether a name resolves to a renderable icon. Exactly mirrors\n * {@link resolveIcon}: a laxer check (e.g. matching the bare name under an\n * unknown prefix) would let callers suppress their fallback and diagnostics\n * for a name `<Icon>` then renders as nothing.\n */\nexport const hasIcon = (name: string): boolean => resolveIcon(name) !== null;\n",
|
|
7
7
|
"import { isAssetIcon } from \"../theme/icon-kind.ts\";\nimport { hasIcon } from \"../theme/icons.ts\";\nimport { isInternalPath } from \"./base-path.ts\";\nimport { resolveLocalizable } from \"./localizable.ts\";\nimport { isBuiltInMcpClient } from \"./mcp-clients.ts\";\nimport type { McpClientEntry } from \"./mcp-clients.ts\";\nimport { isPageRef, normalizeRef } from \"./navigation.ts\";\nimport type { SidebarItemConfig } from \"./schema.ts\";\nimport type { Diagnostic, NavNode, Navigation, PageRecord } from \"./types.ts\";\n\n/**\n * Navigation diagnostics: catch icon typos and structural mistakes (missing\n * pages, duplicate labels) that otherwise fail silently — a wrong icon just\n * doesn't render, a bad tab path just 404s. Run over the built navigation so it\n * covers every source (config, folder meta, frontmatter) at once.\n */\n\nconst ICON_FORMAT_HINT =\n \"Use a built-in icon name, an image path/URL, or inline SVG markup.\";\n\n/** Flatten a sidebar tree to every node, descending into groups. */\nconst flattenNodes = (nodes: NavNode[]): NavNode[] =>\n nodes.flatMap((node) =>\n node.kind === \"group\" ? [node, ...flattenNodes(node.children)] : [node]\n );\n\n/** Every icon string referenced anywhere in the navigation, with a label. */\nconst collectIcons = (\n navigation: Navigation\n): { icon: string; where: string }[] => {\n const icons: { icon: string; where: string }[] = [];\n const push = (icon: string | undefined, where: string): void => {\n if (icon) {\n icons.push({ icon, where });\n }\n };\n for (const tab of navigation.tabs) {\n push(tab.icon, `tab \"${tab.label}\"`);\n for (const item of tab.items ?? []) {\n push(item.icon, `tab item \"${item.label}\"`);\n }\n }\n for (const selector of navigation.selectors) {\n for (const item of selector.items) {\n push(item.icon, `selector \"${item.label}\"`);\n }\n }\n for (const link of navigation.featured) {\n push(link.icon, `featured link \"${link.label}\"`);\n }\n const sidebars = [navigation.sidebar];\n for (const sidebar of sidebars) {\n for (const node of flattenNodes(sidebar)) {\n push(node.icon, `\"${node.label}\"`);\n }\n }\n return icons;\n};\n\n/** Warn about icon names that aren't in Blume's set (skipping image/SVG icons). */\nconst unknownIconDiagnostics = (\n icons: { icon: string; where: string }[],\n suggestion: string\n): Diagnostic[] => {\n const seen = new Set<string>();\n const diagnostics: Diagnostic[] = [];\n for (const { icon, where } of icons) {\n if (isAssetIcon(icon) || hasIcon(icon) || seen.has(icon)) {\n continue;\n }\n seen.add(icon);\n // Markup that isn't a complete <svg> element (an <img> tag, a truncated\n // svg) is a shape problem, not a set-name typo — say so.\n const message = icon.trimStart().startsWith(\"<\")\n ? `Icon markup \"${icon}\" (${where}) isn't a complete inline <svg> element, so it won't render.`\n : `Unknown icon \"${icon}\" (${where}) — it isn't in Blume's icon set.`;\n diagnostics.push({\n code: \"BLUME_UNKNOWN_ICON\",\n message,\n severity: \"warning\",\n suggestion,\n });\n }\n return diagnostics;\n};\n\n/** Warn about icon names that aren't in Blume's set (skipping image/SVG icons). */\nexport const validateNavIcons = (navigation: Navigation): Diagnostic[] =>\n unknownIconDiagnostics(collectIcons(navigation), ICON_FORMAT_HINT);\n\n/**\n * Warn about unknown icons on curated `search.popular` links. Same accepted\n * input shapes as nav icons — resolved to markup on the server for the island.\n */\nexport const validateSearchPopularIcons = (\n popular: { icon?: string; label: string }[]\n): Diagnostic[] => {\n const icons = popular.flatMap((link) =>\n link.icon\n ? [{ icon: link.icon, where: `popular link \"${link.label}\"` }]\n : []\n );\n return unknownIconDiagnostics(icons, ICON_FORMAT_HINT);\n};\n\n/**\n * Warn about unknown icons on custom \"Connect to MCP\" clients\n * (`agents.mcp.clients`), which live outside the navigation model too. A\n * per-locale label is named in the default locale.\n */\nexport const validateMcpClientIcons = (\n clients: readonly McpClientEntry[],\n defaultLocale?: string\n): Diagnostic[] => {\n const icons = clients.flatMap((client) =>\n !isBuiltInMcpClient(client) && client.icon\n ? [\n {\n icon: client.icon,\n where: `MCP client \"${resolveLocalizable(client.label, defaultLocale, defaultLocale)}\"`,\n },\n ]\n : []\n );\n return unknownIconDiagnostics(icons, ICON_FORMAT_HINT);\n};\n\n/** Whether an internal path resolves to a page or a section that has pages. */\nconst resolvesToPages = (routes: Set<string>, path: string): boolean =>\n routes.has(path) || [...routes].some((route) => route.startsWith(`${path}/`));\n\n/**\n * Warn when a config-linked tab/selector target has no matching page. `routes`\n * must be the full set of servable routes — content, custom `.astro` pages, and\n * generated routes — so this runs where all three are known (`generateRuntime`),\n * not in the content-only graph build. `servesFile` answers for the files the\n * site serves beside its pages — `public/` and the generated ones (see\n * `staticFileResolver`) — so a featured link to `/spec.pdf` or `/llms.txt`\n * resolves too.\n *\n * A tab is checked where it links: its `href` — the author's, or the\n * section's first page that navigation resolved for a `path` with no page of\n * its own — and its `path` only when it links there.\n */\nexport const validateNavTargets = (\n navigation: Navigation,\n routes: Set<string>,\n servesFile: (path: string) => boolean = () => false\n): Diagnostic[] => {\n const targets: { label: string; path: string }[] = [\n ...navigation.tabs.map((tab) => ({\n label: tab.label,\n path: tab.href ?? tab.path,\n })),\n ...navigation.selectors.flatMap((selector) =>\n selector.items.map((item) => ({ label: item.label, path: item.path }))\n ),\n ...navigation.featured.map((link) => ({\n label: link.label,\n path: link.href,\n })),\n ...(navigation.actions ?? []).map((action) => ({\n label: action.label,\n path: action.href,\n })),\n ...(navigation.cta\n ? [{ label: navigation.cta.label, path: navigation.cta.href }]\n : []),\n ];\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const { label, path } of targets) {\n // Only internal, non-anchor paths can be checked against routes. A\n // protocol-relative `//host/path` is external despite its leading slash.\n if (!isInternalPath(path) || path.startsWith(\"/#\") || seen.has(path)) {\n continue;\n }\n // A query or fragment (`/guides?tab=cli`) rides on the route; only the\n // path names a page.\n const bare = path.split(/[?#]/u)[0] ?? path;\n if (!(resolvesToPages(routes, bare) || servesFile(bare))) {\n seen.add(path);\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Navigation entry \"${label}\" points to ${path}, but no page matches it.`,\n severity: \"warning\",\n suggestion: \"Fix the path, or add a page at that route.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Warn about explicit `navigation.sidebar` items that can't render as written,\n * instead of dropping them without a word: a page ref that matches no page\n * (left out of the sidebar), a `root` that matches no page (its link leads\n * nowhere), and an item with no page, `href`, `root`, or `items` (left out).\n * `resolves` answers whether a normalized ref (`/guides`) names a page — in\n * any locale — or a route served outside the content tree.\n */\nexport const validateSidebarItems = (\n items: SidebarItemConfig[],\n resolves: (route: string) => boolean\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const walk = (list: SidebarItemConfig[]): void => {\n for (const item of list) {\n if (isPageRef(item)) {\n if (!resolves(normalizeRef(item))) {\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Sidebar entry \"${item}\" matches no page, so it's left out of the sidebar.`,\n severity: \"warning\",\n suggestion: \"Fix the route, or add a page at it.\",\n });\n }\n continue;\n }\n if (item.root && !resolves(normalizeRef(item.root))) {\n diagnostics.push({\n code: \"BLUME_NAV_MISSING_PAGE\",\n message: `Sidebar entry \"${item.label}\" has root \"${item.root}\", but no page matches it, so its link leads nowhere.`,\n severity: \"warning\",\n suggestion: \"Fix the root, or add a page at that route.\",\n });\n }\n if (item.items) {\n walk(item.items);\n } else if (!(item.root || item.href)) {\n diagnostics.push({\n code: \"BLUME_NAV_EMPTY_ITEM\",\n message: `Sidebar entry \"${item.label}\" has no page, href, root, or items, so it's left out of the sidebar.`,\n severity: \"warning\",\n suggestion:\n \"Give it an href or a root to link somewhere, or items to make it a group.\",\n });\n }\n }\n };\n walk(items);\n return diagnostics;\n};\n\n/** Warn about two nav items sharing a label at the same sidebar level. */\nconst duplicateLabelDiagnostics = (navigation: Navigation): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const checkLevel = (nodes: NavNode[], where: string): void => {\n const counts = new Map<string, number>();\n for (const node of nodes) {\n counts.set(node.label, (counts.get(node.label) ?? 0) + 1);\n }\n for (const [label, count] of counts) {\n if (count > 1) {\n diagnostics.push({\n code: \"BLUME_NAV_DUPLICATE_LABEL\",\n message: `Duplicate sidebar label \"${label}\" appears ${count} times ${where}.`,\n severity: \"warning\",\n suggestion: \"Give the entries distinct titles.\",\n });\n }\n }\n for (const node of nodes) {\n if (node.kind === \"group\") {\n checkLevel(node.children, `under \"${node.label}\"`);\n }\n }\n };\n const sidebars: { nodes: NavNode[]; where: string }[] = [\n { nodes: navigation.sidebar, where: \"at the top level\" },\n ];\n for (const { nodes, where } of sidebars) {\n checkLevel(nodes, where);\n }\n return diagnostics;\n};\n\n/** Warn when a page shown in the sidebar is marked hidden (so pagination hits it). */\nconst hiddenInSidebarDiagnostics = (\n navigation: Navigation,\n pages: PageRecord[]\n): Diagnostic[] => {\n const hidden = new Set(\n pages.flatMap((page) => (page.meta.sidebar.hidden ? [page.id] : []))\n );\n if (hidden.size === 0) {\n return [];\n }\n const sidebars = [navigation.sidebar];\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const sidebar of sidebars) {\n for (const node of flattenNodes(sidebar)) {\n if (\n node.kind === \"page\" &&\n hidden.has(node.pageId) &&\n !seen.has(node.pageId)\n ) {\n seen.add(node.pageId);\n diagnostics.push({\n code: \"BLUME_NAV_HIDDEN_IN_SIDEBAR\",\n message: `Page \"${node.label}\" is marked hidden but appears in the sidebar (and its pagination).`,\n severity: \"warning\",\n suggestion:\n \"Remove it from the navigation config, or unset sidebar.hidden.\",\n });\n }\n }\n }\n return diagnostics;\n};\n\n/**\n * Structural navigation diagnostics that need only the built navigation +\n * content pages: duplicate sidebar labels at a level, and hidden pages that\n * still surface in the sidebar (so pagination lands on them). Target existence\n * is checked separately by {@link validateNavTargets}, which needs the full\n * route set.\n */\nexport const validateNavStructure = (\n navigation: Navigation,\n pages: PageRecord[]\n): Diagnostic[] => [\n ...duplicateLabelDiagnostics(navigation),\n ...hiddenInSidebarDiagnostics(navigation, pages),\n];\n",
|
|
8
|
-
"import { existsSync } from \"node:fs\";\n\nimport { isAbsolute, join, relative } from \"pathe\";\n\nimport { alertDiagnostics } from \"./alert-diagnostics.ts\";\nimport { normalizePath, withBasePath } from \"./base-path.ts\";\nimport { CHANGELOG_INDEX_ROUTE, hasChangelogIndex } from \"./changelog-index.ts\";\nimport { codeFenceDiagnostics } from \"./code-fence-diagnostics.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { customStaticRoutes, discoverPages } from \"./custom-pages.ts\";\nimport { directiveDiagnostics } from \"./directive-diagnostics.ts\";\nimport { formerRouteRedirects } from \"./former-routes.ts\";\nimport { buildContentGraph } from \"./graph.ts\";\nimport { i18nDiagnostics } from \"./i18n.ts\";\nimport { expandIncludes, hasIncludeStatements } from \"./includes.ts\";\nimport {\n gitLastModifiedTimes,\n gitRepositoryRoot,\n lastModifiedShallowWarning,\n realPath,\n resolveLastModifiedConfig,\n} from \"./last-modified.ts\";\nimport { routeSetFor } from \"./locale-links.ts\";\nimport type { RouteSet } from \"./locale-links.ts\";\nimport { buildManifest } from \"./manifest.ts\";\nimport { mirroredPage } from \"./markdown-mirrors.ts\";\nimport { mdxSyntaxCheck } from \"./mdx-syntax.ts\";\nimport { folderMetaDiagnostics } from \"./meta-diagnostics.ts\";\nimport { discoverFolderMeta, withGeneratedFolderMeta } from \"./meta.ts\";\nimport type { FolderMetaSource } from \"./meta.ts\";\nimport { resolveProjectContext } from \"./project.ts\";\nimport { isPatternPath, pathsUnderPattern } from \"./redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport { normalizeEntry, strippedLineOffset } from \"./sources/normalize.ts\";\nimport { resolveDocsCollection, resolveSources } from \"./sources/resolve.ts\";\nimport type { SourceRuntime } from \"./sources/resolve.ts\";\nimport type {\n ContentSource,\n SourceEntry,\n SourceLoadResult,\n} from \"./sources/types.ts\";\nimport { unmeasurableSvgDiagnostics } from \"./svg-images.ts\";\nimport { indexPageNames, syntaxDiagnostics } from \"./syntax-diagnostics.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n Diagnostic,\n ExampleLookup,\n PageRecord,\n ProjectContext,\n} from \"./types.ts\";\nimport {\n hasVariables,\n substituteVariables,\n undefinedVariables,\n} from \"./variables.ts\";\nimport type { ContentVariables } from \"./variables.ts\";\nimport { versionsDiagnostics } from \"./versions.ts\";\n\n/** Build mode: drafts are kept in `dev` and dropped in `build`. */\nexport type BuildMode = \"dev\" | \"build\";\n\n/** CLI-supplied overrides applied over the loaded config (see `scanProject`). */\nexport interface ConfigOverrides {\n /** Override `content.root` (`blume dev --content-dir`). */\n contentRoot?: string;\n}\n\n/**\n * Whether `path` sits at or under `dir`. A relative result that is itself\n * absolute means a different drive root on Windows, which is outside too.\n */\nexport const isWithin = (dir: string, path: string): boolean => {\n const rel = relative(dir, path);\n return !(rel.startsWith(\"..\") || isAbsolute(rel));\n};\n\n/** Apply CLI config overrides onto a resolved config (returns a new object). */\nconst applyConfigOverrides = (\n config: ResolvedConfig,\n overrides?: ConfigOverrides\n): ResolvedConfig => {\n if (!overrides) {\n return config;\n }\n // `--content-dir` re-roots every filesystem source: with one (the\n // zero-config case) it is exactly the old `content.root` override, and\n // several must share a root anyway (see `resolveDocsCollection`).\n const { contentRoot } = overrides;\n const sources = contentRoot\n ? config.content.sources.map((source) =>\n source.kind === \"filesystem\"\n ? { ...source, options: { ...source.options, root: contentRoot } }\n : source\n )\n : config.content.sources;\n return {\n ...config,\n content: { ...config.content, sources },\n };\n};\n\n/** Everything Blume knows about a project after a full scan. */\nexport interface BlumeProject {\n mode: BuildMode;\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n manifest: BlumeManifest;\n diagnostics: Diagnostic[];\n /**\n * Entries excluded from the graph because their frontmatter failed\n * validation, or (in a build) their MDX doesn't parse.\n */\n droppedPages: number;\n /**\n * The local `.mdx` files a build dropped because they don't parse, which\n * the docs collection leaves out so Astro never compiles them.\n */\n unparsable: string[];\n /** The instantiated content sources, for lazy entry reads (search/AI/raw). */\n sources: ContentSource[];\n /**\n * Whether the config file set `theme.fonts` itself (see\n * {@link ConfigLoadResult.themeFontsConfigured}); gates OG font derivation.\n */\n themeFontsConfigured: boolean;\n /**\n * Discovered `examples/` sources keyed by `<Component path>`, attached by the\n * runtime/eject layer after {@link scanProject} (example discovery is an Astro\n * concern, so core doesn't run it). Undefined until then; the agent-facing\n * Markdown downleveler reads it to turn `<Component path=\"…\" />` into the\n * example's source. Empty when the project has no examples.\n */\n examples?: ExampleLookup;\n}\n\n/**\n * Guard the invariant that ties a filesystem page to the `docs` collection:\n * Astro ids each collection entry by its path relative to the collection base,\n * so `getEntry(\"docs\", entryId)` only resolves when that entry id equals\n * `relative(base, file)`. A filesystem source ids entries relative to its own\n * root; when that root can't be the collection base (e.g. a second filesystem\n * source rooted elsewhere), the ids diverge and every one of that source's pages\n * would 404 in dev (a static build silently masks it). Emit a hard error naming\n * the mismatch so it can't ship, instead of a silent runtime failure. One\n * diagnostic per file (locale duplicates share a source path).\n */\nconst entryIdDiagnostics = (\n pages: PageRecord[],\n collectionBase: string\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const page of pages) {\n // Only filesystem entries render through the base-rooted `docs` collection;\n // staged sources carry their own id and collection.\n if (page.collection || !page.sourcePath || seen.has(page.sourcePath)) {\n continue;\n }\n seen.add(page.sourcePath);\n const expected = relative(collectionBase, page.sourcePath)\n .split(\"\\\\\")\n .join(\"/\");\n const entryId = page.entryId ?? page.source.ref;\n if (expected !== entryId) {\n diagnostics.push({\n code: \"BLUME_ENTRY_ID_MISMATCH\",\n file: page.sourcePath,\n message: `Content source \"${page.source.name}\" is rooted outside the docs collection base, so ${page.route} resolves entry id \"${entryId}\" but the collection would generate \"${expected}\" — the page would 404 at runtime.`,\n severity: \"error\",\n suggestion:\n \"Use a single filesystem() source (the docs collection roots at it), or give every filesystem() source the same root and partition them with include globs — a root at a subdirectory of the first source's root still mismatches.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Funnel every loaded source's entries through the shared `normalizeEntry`,\n * collecting pages, diagnostics, and the count of entries dropped outright —\n * an entry that yields no pages but did yield diagnostics was rejected for\n * invalid frontmatter, and callers surface that count so a build with missing\n * pages can't read as clean. With `dropUnparsable`, an `.mdx` page whose own\n * text doesn't parse is dropped too, and its file listed in `unparsable` so\n * the docs collection leaves it out.\n */\nconst normalizeLoadedEntries = (\n loaded: ({ source: ContentSource } & SourceLoadResult)[],\n config: ResolvedConfig,\n dropUnparsable: boolean\n) => {\n // Only thread `frontmatter.extend` / `content.types` through when a project\n // opts in, so the known-key split in `normalizeEntry` stays off the default\n // path.\n const frontmatterExtend =\n Object.keys(config.frontmatter.extend).length > 0\n ? config.frontmatter.extend\n : undefined;\n const declaredTypes = Object.entries(config.content.types).filter(\n ([, type]) => Object.keys(type.frontmatter).length > 0\n );\n const typeFrontmatter =\n declaredTypes.length > 0\n ? Object.fromEntries(\n declaredTypes.map(([name, type]) => [name, type.frontmatter])\n )\n : undefined;\n\n const pages: PageRecord[] = [];\n const allDiagnostics: Diagnostic[] = [];\n const syntaxErrors: Diagnostic[] = [];\n const unparsable: string[] = [];\n // Published entries, checked for other tools' syntax once every page is\n // known: a wiki link is reported when it names one.\n const published: { entry: SourceEntry; locale: string; source: string }[] =\n [];\n let droppedPages = 0;\n for (const { source, entries, diagnostics } of loaded) {\n allDiagnostics.push(...diagnostics);\n for (const entry of entries) {\n const syntax = mdxSyntaxCheck(entry, source.name, config.variables);\n syntaxErrors.push(...syntax.diagnostics);\n // A build drops a page whose MDX doesn't parse, as it does one whose\n // front matter fails: with --no-strict the rest of the site still\n // builds. Dev keeps it, so opening it shows the error in place.\n const drop = syntax.unparsable && dropUnparsable;\n if (drop && entry.sourcePath && !source.staged) {\n unparsable.push(entry.sourcePath);\n }\n const normalized = normalizeEntry(entry, {\n basePath: config.basePath,\n defaultType: config.content.defaultType,\n frontmatterExtend,\n i18n: config.i18n,\n source: {\n monolingual: source.monolingual,\n name: source.name,\n orderedNames: source.orderedNames,\n prefix: source.prefix,\n staged: source.staged,\n },\n typeFrontmatter,\n versions: config.versions,\n });\n const [page] = normalized.pages;\n if (page ? drop : normalized.diagnostics.length > 0) {\n droppedPages += 1;\n }\n if (!drop) {\n pages.push(...normalized.pages);\n }\n allDiagnostics.push(...normalized.diagnostics);\n if (page) {\n allDiagnostics.push(\n ...directiveDiagnostics(entry, source.name),\n ...codeFenceDiagnostics(entry, source.name),\n ...alertDiagnostics(entry, source.name)\n );\n published.push({ entry, locale: page.locale, source: source.name });\n }\n }\n }\n const names = indexPageNames(pages);\n for (const { entry, locale, source } of published) {\n allDiagnostics.push(...syntaxDiagnostics(entry, source, names, locale));\n }\n // A parse error gives way to a diagnostic as severe at its line, which\n // names the cause (`BLUME_MDX_CURLY_ANCHOR` for a `{#id}` heading marker,\n // `BLUME_MDX_ATTRIBUTE_LIST` in a partial).\n const covered = (diagnostic: Diagnostic): boolean =>\n allDiagnostics.some(\n (other) =>\n other.file === diagnostic.file &&\n other.line === diagnostic.line &&\n (other.severity === \"error\" ||\n (other.severity === \"warning\" && diagnostic.severity === \"warning\"))\n );\n allDiagnostics.push(...syntaxErrors.filter((error) => !covered(error)));\n return { diagnostics: allDiagnostics, droppedPages, pages, unparsable };\n};\n\n/**\n * The local sources' on-disk roots a `git log` pathspec can cover: those\n * inside the repository at `gitRoot`. A root outside it would fail the log\n * outright and can never yield dates. Compared by real path, since git spells\n * its toplevel with every symlink resolved (`/private/tmp/site` for a project\n * opened as `/tmp/site`); the roots themselves keep the project's spelling.\n */\nconst gitContentRoots = (\n sources: readonly ContentSource[],\n gitRoot: string | null\n): string[] => {\n if (gitRoot === null) {\n return [];\n }\n const top = realPath(gitRoot);\n return sources\n .flatMap((source) => (source.contentRoot ? [source.contentRoot] : []))\n .filter((dir) => isWithin(top, realPath(dir)));\n};\n\n/**\n * Run the full core pipeline for a project root: load config, resolve paths,\n * discover content and folder meta, build the graph, and assemble the manifest.\n * Collects all diagnostics without throwing on content-level problems so\n * callers can decide how strict to be.\n */\n/** Narrows the logo config's image shorthand from its object form. */\nconst isLogoShorthand = (\n logo: NonNullable<ResolvedConfig[\"logo\"]>\n): logo is string => typeof logo === \"string\";\n\n/** The configured brand link: `logo.href`, else the site root. */\nconst logoHref = (logo: ResolvedConfig[\"logo\"]): string =>\n logo === undefined || isLogoShorthand(logo) ? \"/\" : (logo.href ?? \"/\");\n\n/** Narrows the banner config's text shorthand from its object form. */\nconst isBannerShorthand = (\n banner: NonNullable<ResolvedConfig[\"banner\"]>\n): banner is string => typeof banner === \"string\";\n\n/**\n * Report an entry's undefined content variables at their source lines, then\n * replace the defined ones in the text the scan extracts from: the expanded\n * text when includes were spliced (its `origins` map lines back to the file\n * each came from), else the body.\n */\nconst substituteEntryVariables = (\n entry: SourceEntry,\n variables: ContentVariables\n): Diagnostic[] => {\n const { expanded } = entry;\n const text = expanded?.text ?? entry.body.text;\n const offset = expanded ? 0 : strippedLineOffset(entry.raw, entry.body.text);\n const diagnostics = undefinedVariables(text, variables).map(\n ({ line, name }): Diagnostic => {\n const origin = expanded?.origins[line - 1];\n return {\n code: \"BLUME_UNDEFINED_VARIABLE\",\n file: origin?.file ?? entry.sourcePath,\n line: origin?.line ?? line + offset,\n message: `{{${name}}} isn't a defined variable, so it would show as written.`,\n severity: \"error\",\n suggestion: `Define \"${name}\" under variables in blume.config.ts, or put it in inline code to show it as written.`,\n };\n }\n );\n if (expanded) {\n expanded.text = substituteVariables(expanded.text, variables);\n } else {\n entry.body.text = substituteVariables(entry.body.text, variables);\n }\n return diagnostics;\n};\n\n/** {@link substituteEntryVariables} over every loaded entry, when any are defined. */\nconst substituteLoadedVariables = (\n loaded: readonly SourceLoadResult[],\n variables: ContentVariables\n): Diagnostic[] =>\n hasVariables(variables)\n ? loaded.flatMap(({ entries }) =>\n entries.flatMap((entry) => substituteEntryVariables(entry, variables))\n )\n : [];\n\n/**\n * A pattern redirect that also matches a page. Hosts disagree on which\n * answers (Vercel and Cloudflare apply the rule ahead of the page, Netlify\n * and the Node server serve the page), so the pattern is rejected rather than\n * let the answer depend on the host. `pages` are the served page paths, which\n * carry `basePath`, as the based `from` does.\n *\n * An exact redirect from a page's own URL answers the same way everywhere:\n * Astro ranks its route above the page's catch-all, in dev and build alike,\n * and writes the redirect page where the page would go, so the page never\n * publishes. That's a warning rather than an error, since the outcome doesn't\n * depend on the host. So is one from a page's Markdown copy (`/guide.md`, or\n * the root's `/index.md`), which it takes over the same way. `mirrored` are\n * the routes served with copies: the content pages.\n */\nconst redirectPageDiagnostics = (\n config: ResolvedConfig,\n pages: readonly string[],\n mirrored: RouteSet,\n configFile: string | null\n): Diagnostic[] =>\n config.redirects.flatMap((redirect): Diagnostic[] => {\n const from = withBasePath(config.basePath, redirect.from);\n if (!isPatternPath(redirect.from)) {\n const page = normalizePath(from);\n if (pages.includes(page)) {\n return [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} is also the page ${page}, which never publishes: its URL redirects to ${redirect.to} instead.`,\n severity: \"warning\",\n suggestion:\n \"If the page moved, delete it or give it a new slug; otherwise remove the redirect.\",\n } satisfies Diagnostic,\n ];\n }\n const owner = mirroredPage(mirrored, page);\n return owner === undefined\n ? []\n : [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} is also the Markdown copy of the page ${owner}, so that copy never publishes: its URL redirects to ${redirect.to} instead.`,\n severity: \"warning\",\n suggestion:\n \"Remove the redirect: that URL serves the page's Markdown to agents.\",\n } satisfies Diagnostic,\n ];\n }\n const matched = pathsUnderPattern(from, pages);\n const [first] = matched;\n if (first === undefined) {\n return [];\n }\n const more = matched.length > 1 ? ` and ${matched.length - 1} more` : \"\";\n return [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} also matches the page ${first}${more}, which some hosts would redirect and others would serve.`,\n severity: \"error\",\n suggestion:\n \"Narrow the pattern to the paths that moved, or move the pages out from under it.\",\n } satisfies Diagnostic,\n ];\n });\n\n/**\n * The config with the redirects sources ask for added after its own (see\n * `SourceLoadResult.redirects`), so every surface that reads\n * `config.redirects` — Astro's redirect pages, the host files, the link\n * checker — serves them alike. Each is repeated under every locale prefix\n * whose copy of the target page is served (a translation, or the fallback\n * copy), and is kept only where its target is a page and nothing else\n * answers for its `from`: a page there, or a configured redirect, wins.\n * `pages` are the served page paths, which carry `basePath`.\n */\nconst withSourceRedirects = (\n config: ResolvedConfig,\n loaded: readonly SourceLoadResult[],\n pages: RouteSet\n): ResolvedConfig => {\n const requested = loaded.flatMap(({ redirects }) => redirects ?? []);\n if (requested.length === 0) {\n return config;\n }\n const served = (route: string): string =>\n normalizePath(withBasePath(config.basePath, route));\n const prefixes = [\n \"\",\n ...(config.i18n?.locales.map((locale) => `/${locale.code}`) ?? []),\n ];\n const taken = new Set(\n config.redirects.map((redirect) => served(redirect.from))\n );\n const added: ResolvedConfig[\"redirects\"] = [];\n for (const redirect of requested) {\n for (const prefix of prefixes) {\n const from = `${prefix}${redirect.from}`;\n const to = `${prefix}${redirect.to}`;\n if (\n !pages.has(served(to)) ||\n pages.has(served(from)) ||\n taken.has(served(from))\n ) {\n continue;\n }\n taken.add(served(from));\n added.push({ from, status: 301, to });\n }\n }\n return added.length > 0\n ? { ...config, redirects: [...config.redirects, ...added] }\n : config;\n};\n\n/**\n * A `public/openapi.json` is served at `/openapi.json`, where Blume\n * publishes the OpenAPI description of the site's own JSON docs API: the\n * build stops generating that description, while the API catalog\n * (`/.well-known/api-catalog`) still lists `/openapi.json` as the docs API's\n * `service-desc`, so agents reading it get the project's file instead. Only\n * when the docs API is on; otherwise Blume publishes nothing there.\n */\nconst publicOpenApiDiagnostics = (\n config: ResolvedConfig,\n root: string\n): Diagnostic[] => {\n const file = join(root, \"public\", \"openapi.json\");\n return config.agents.api && existsSync(file)\n ? [\n {\n code: \"BLUME_PUBLIC_OPENAPI_JSON\",\n file,\n message:\n \"public/openapi.json is served at /openapi.json, where Blume publishes the OpenAPI description of the site's JSON docs API, so that description isn't generated, and /.well-known/api-catalog still lists /openapi.json as the docs API's description.\",\n severity: \"warning\",\n suggestion:\n \"Move the file to another path, like public/specs/openapi.json, and update what links to it. A spec an openapi() reference renders can live outside public/ altogether. Or set agents.api to false if the site shouldn't publish the JSON docs API.\",\n },\n ]\n : [];\n};\n\n/** The configured banner link target, when the banner has a link. */\nconst bannerLinkHref = (\n banner: ResolvedConfig[\"banner\"]\n): string | undefined =>\n banner === undefined || isBannerShorthand(banner)\n ? undefined\n : banner.link?.href;\n\n/**\n * The project's sources, before any of them loads: `beforeSources` sees the\n * config first, then each source validates itself (e.g. the filesystem\n * source checks its root exists), replacing the single hard `contentRoot`\n * check.\n */\nconst validatedSources = (\n config: ResolvedConfig,\n context: ProjectContext,\n runtime: SourceRuntime,\n beforeSources?: (config: ResolvedConfig) => void\n): ContentSource[] => {\n beforeSources?.(config);\n const sources = resolveSources(config, context, runtime);\n for (const source of sources) {\n source.validate?.();\n }\n return sources;\n};\n\nexport const scanProject = async (\n root: string,\n options: {\n devServerUrl?: string;\n mode?: BuildMode;\n preview?: boolean;\n refresh?: boolean;\n /** CLI overrides applied over the loaded config (e.g. `--output`). */\n overrides?: ConfigOverrides;\n /** Relocate the generated runtime (e.g. `.blume-verify` for isolation). */\n runtimeDir?: string;\n /**\n * Called with the resolved config before any source loads, so a command\n * can report an unset secret ahead of a fetch that fails without it: a\n * source that can't load fails the scan, and nothing after it runs.\n */\n beforeSources?: (config: ResolvedConfig) => void;\n } = {}\n): Promise<BlumeProject> => {\n const mode = options.mode ?? \"dev\";\n const preview = options.preview ?? false;\n const configResult = await loadConfig(root, {\n devServerUrl: options.devServerUrl,\n });\n const config = applyConfigOverrides(configResult.config, options.overrides);\n const context = resolveProjectContext(root, config, {\n runtimeDir: options.runtimeDir,\n });\n const sources = validatedSources(\n config,\n context,\n { mode, preview, refresh: options.refresh },\n options.beforeSources\n );\n\n // Folder meta is discovered per filesystem source, under each source's own\n // root and keyed by its route prefix, so a prefixed/root-differing source's\n // `meta.ts` still lines up with its (prefixed) sidebar group path.\n const metaSources: FolderMetaSource[] = sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [\n {\n exclude: source.exclude,\n include: source.include,\n prefix: source.prefix,\n root: source.contentRoot,\n },\n ]\n );\n\n // Run every source's `load()` in parallel, then funnel each entry through the\n // shared `normalizeEntry` so route mapping is identical regardless of origin.\n // Under the `dir` parser, non-default locales are top-level directories whose\n // meta keys must carry the locale in front of the source prefix (see\n // `discoverFolderMeta`).\n const localeDirs =\n config.i18n && config.i18n.parser === \"dir\"\n ? config.i18n.locales.flatMap((locale) =>\n locale.code === config.i18n?.defaultLocale ? [] : [locale.code]\n )\n : undefined;\n\n const [loaded, folderMeta] = await Promise.all([\n Promise.all(\n sources.map(async (source) => ({ source, ...(await source.load()) }))\n ),\n discoverFolderMeta(metaSources, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n }),\n ]);\n\n // Expand `<include>` statements before normalization, so heading/link/\n // component extraction sees the spliced content every render surface shows.\n // Filesystem entries only: includes resolve as filesystem paths bounded by\n // the owning source's content root. Unresolvable statements stay verbatim\n // and surface as error diagnostics here.\n const includeDiagnostics: Diagnostic[] = [];\n await Promise.all(\n loaded.flatMap(({ source, entries }) => {\n if (source.staged || !source.contentRoot) {\n return [];\n }\n return entries.map(async (entry) => {\n if (!entry.sourcePath || !hasIncludeStatements(entry.body.text)) {\n return;\n }\n const expansion = await expandIncludes(entry.body.text, {\n contentRoot: source.contentRoot,\n lineOffset: strippedLineOffset(entry.raw, entry.body.text),\n sourcePath: entry.sourcePath,\n });\n entry.expanded = expansion;\n includeDiagnostics.push(...expansion.errors);\n });\n })\n );\n\n // Content variables: an undefined name in prose is an error at its source\n // line, and every defined one is replaced in the text headings, links, and\n // components are extracted from, so they match the rendered page.\n const variableDiagnostics = substituteLoadedVariables(\n loaded,\n config.variables\n );\n\n // Folder meta contributed by the sources themselves (the OpenAPI source\n // labels each tag directory with the spec's own tag name). It applies to\n // every locale, so it merges into the shared map — beneath user-authored\n // entries, whose own fields win while the generated ones fill the rest.\n const mergedFolderMeta = withGeneratedFolderMeta(\n folderMeta,\n new Map(\n loaded.flatMap(({ folderMeta: sourceMeta }) =>\n Object.entries(sourceMeta ?? {})\n )\n ),\n localeDirs\n );\n\n const {\n diagnostics: contentDiagnostics,\n droppedPages,\n pages: allPages,\n unparsable,\n } = normalizeLoadedEntries(loaded, config, mode === \"build\");\n\n // Checked against every page, drafts included: a `pages` entry naming a\n // draft still orders it wherever the draft renders.\n const metaDiagnostics = await folderMetaDiagnostics(folderMeta, allPages, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n });\n\n // Drafts render in dev and in preview, but are excluded from production builds.\n const pages =\n mode === \"build\" && !preview\n ? allPages.filter((page) => !page.meta.draft)\n : allPages;\n\n // Resolve \"last updated\" dates before the graph is built so the manifest\n // (which shares these page objects) picks them up. Frontmatter always wins;\n // git applies to filesystem entries, other sources supply dates on the entry.\n const lastModified = resolveLastModifiedConfig(config.lastModified);\n const lastModifiedWarnings: Diagnostic[] = [];\n if (lastModified.enabled && lastModified.source === \"git\") {\n const fsPaths = pages\n .map((page) => page.sourcePath)\n .filter((path): path is string => path !== undefined);\n // The git pathspecs must cover where the pages actually live: each local\n // source's own on-disk root — a filesystem source's `root`, or a staged\n // local source's tree (an Obsidian vault) — which diverges from the global\n // `content.root`.\n const gitRoot = gitRepositoryRoot(context.root);\n const contentRoots = gitContentRoots(sources, gitRoot);\n const gitTimes = gitLastModifiedTimes(\n context.root,\n contentRoots,\n fsPaths,\n gitRoot\n );\n for (const page of pages) {\n if (!page.lastModified && page.sourcePath) {\n page.lastModified = gitTimes.get(page.sourcePath);\n }\n }\n // A shallow CI clone (Vercel, actions/checkout) silently drops most dates;\n // surface that instead of letting production diverge from local builds.\n // Only pages the log could have dated count — a page outside every covered\n // root stays undated no matter how deep the clone is, and the warning's\n // suggested fix cannot help it.\n const undated = pages.filter(\n (page) =>\n page.sourcePath &&\n !page.lastModified &&\n contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? \"\"))\n ).length;\n lastModifiedWarnings.push(\n ...lastModifiedShallowWarning(context.root, undated)\n );\n }\n\n // Custom `.astro` pages and the generated changelog index aren't content\n // pages, so name them for navigation: a `/changelog` tab should open the\n // timeline, not the newest entry, and a tab or brand link to a custom page\n // must stay on its route in every locale.\n const customPages = context.pagesRoot\n ? await discoverPages(context.pagesRoot)\n : [];\n const extraRoutes = new Set([\n ...customStaticRoutes(customPages),\n ...(hasChangelogIndex(pages, config) ? [CHANGELOG_INDEX_ROUTE] : []),\n ]);\n const graph = buildContentGraph(pages, {\n bannerHref: bannerLinkHref(config.banner),\n basePath: config.basePath,\n brandHref: logoHref(config.logo),\n extraRoutes,\n folderMeta: mergedFolderMeta.meta,\n i18n: config.i18n,\n navigation: config.navigation,\n sharedFolderMeta: mergedFolderMeta.shared,\n versions: config.versions,\n });\n const manifest = buildManifest({ config, context, graph });\n\n const i18nWarnings = config.i18n\n ? i18nDiagnostics(pages, config.i18n, config.versions)\n : [];\n const svgWarnings = await unmeasurableSvgDiagnostics(pages);\n const versionWarnings = config.versions\n ? versionsDiagnostics(pages, config.versions)\n : [];\n\n const servedPaths = [\n ...manifest.routes.map((route) => route.path),\n ...extraRoutes,\n ];\n // A date-named page's old URL, from before its name was kept whole,\n // redirects to its new one, beside the redirects the config lists.\n const redirects = [\n ...config.redirects,\n ...formerRouteRedirects(pages, new Set(servedPaths), config),\n ];\n\n return {\n // Then the routes the API references served under earlier versions'\n // rules redirect to where those operations live now.\n config: withSourceRedirects(\n redirects.length === config.redirects.length\n ? config\n : { ...config, redirects },\n loaded,\n new Set([...routeSetFor(manifest.routes), ...extraRoutes])\n ),\n context,\n diagnostics: [\n ...configResult.diagnostics,\n ...contentDiagnostics,\n ...includeDiagnostics,\n ...variableDiagnostics,\n ...folderMeta.diagnostics,\n ...metaDiagnostics,\n ...entryIdDiagnostics(\n pages,\n resolveDocsCollection(config, context.root).base\n ),\n ...graph.diagnostics,\n ...i18nWarnings,\n ...versionWarnings,\n ...lastModifiedWarnings,\n ...svgWarnings,\n ...publicOpenApiDiagnostics(config, context.root),\n ...redirectPageDiagnostics(\n config,\n servedPaths,\n routeSetFor(manifest.routes),\n context.configFile\n ),\n ],\n droppedPages,\n graph,\n manifest,\n mode,\n sources,\n themeFontsConfigured: configResult.themeFontsConfigured,\n unparsable,\n };\n};\n",
|
|
8
|
+
"import { existsSync } from \"node:fs\";\n\nimport { isAbsolute, join, relative } from \"pathe\";\n\nimport { alertDiagnostics } from \"./alert-diagnostics.ts\";\nimport { normalizePath, withBasePath } from \"./base-path.ts\";\nimport { CHANGELOG_INDEX_ROUTE, hasChangelogIndex } from \"./changelog-index.ts\";\nimport { codeFenceDiagnostics } from \"./code-fence-diagnostics.ts\";\nimport { loadConfig } from \"./config.ts\";\nimport { customStaticRoutes, discoverPages } from \"./custom-pages.ts\";\nimport { directiveDiagnostics } from \"./directive-diagnostics.ts\";\nimport { formerRouteRedirects } from \"./former-routes.ts\";\nimport { buildContentGraph } from \"./graph.ts\";\nimport { i18nDiagnostics } from \"./i18n.ts\";\nimport { expandIncludes, hasIncludeStatements } from \"./includes.ts\";\nimport {\n datePublishedShallowWarning,\n gitFileDates,\n gitRepositoryRoot,\n isShallowGitRepository,\n lastModifiedShallowWarning,\n realPath,\n resolveLastModifiedConfig,\n} from \"./last-modified.ts\";\nimport { routeSetFor } from \"./locale-links.ts\";\nimport type { RouteSet } from \"./locale-links.ts\";\nimport { buildManifest } from \"./manifest.ts\";\nimport { mirroredPage } from \"./markdown-mirrors.ts\";\nimport { mdxSyntaxCheck } from \"./mdx-syntax.ts\";\nimport { folderMetaDiagnostics } from \"./meta-diagnostics.ts\";\nimport { discoverFolderMeta, withGeneratedFolderMeta } from \"./meta.ts\";\nimport type { FolderMetaSource } from \"./meta.ts\";\nimport { resolveProjectContext } from \"./project.ts\";\nimport { isPatternPath, pathsUnderPattern } from \"./redirect-patterns.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport { normalizeEntry, strippedLineOffset } from \"./sources/normalize.ts\";\nimport { resolveDocsCollection, resolveSources } from \"./sources/resolve.ts\";\nimport type { SourceRuntime } from \"./sources/resolve.ts\";\nimport type {\n ContentSource,\n SourceEntry,\n SourceLoadResult,\n} from \"./sources/types.ts\";\nimport { unmeasurableSvgDiagnostics } from \"./svg-images.ts\";\nimport { indexPageNames, syntaxDiagnostics } from \"./syntax-diagnostics.ts\";\nimport type {\n BlumeManifest,\n ContentGraph,\n Diagnostic,\n ExampleLookup,\n PageRecord,\n ProjectContext,\n} from \"./types.ts\";\nimport {\n hasVariables,\n substituteVariables,\n undefinedVariables,\n} from \"./variables.ts\";\nimport type { ContentVariables } from \"./variables.ts\";\nimport { versionsDiagnostics } from \"./versions.ts\";\n\n/** Build mode: drafts are kept in `dev` and dropped in `build`. */\nexport type BuildMode = \"dev\" | \"build\";\n\n/** CLI-supplied overrides applied over the loaded config (see `scanProject`). */\nexport interface ConfigOverrides {\n /** Override `content.root` (`blume dev --content-dir`). */\n contentRoot?: string;\n}\n\n/**\n * Whether `path` sits at or under `dir`. A relative result that is itself\n * absolute means a different drive root on Windows, which is outside too.\n */\nexport const isWithin = (dir: string, path: string): boolean => {\n const rel = relative(dir, path);\n return !(rel.startsWith(\"..\") || isAbsolute(rel));\n};\n\n/** Apply CLI config overrides onto a resolved config (returns a new object). */\nconst applyConfigOverrides = (\n config: ResolvedConfig,\n overrides?: ConfigOverrides\n): ResolvedConfig => {\n if (!overrides) {\n return config;\n }\n // `--content-dir` re-roots every filesystem source: with one (the\n // zero-config case) it is exactly the old `content.root` override, and\n // several must share a root anyway (see `resolveDocsCollection`).\n const { contentRoot } = overrides;\n const sources = contentRoot\n ? config.content.sources.map((source) =>\n source.kind === \"filesystem\"\n ? { ...source, options: { ...source.options, root: contentRoot } }\n : source\n )\n : config.content.sources;\n return {\n ...config,\n content: { ...config.content, sources },\n };\n};\n\n/** Everything Blume knows about a project after a full scan. */\nexport interface BlumeProject {\n mode: BuildMode;\n context: ProjectContext;\n config: ResolvedConfig;\n graph: ContentGraph;\n manifest: BlumeManifest;\n diagnostics: Diagnostic[];\n /**\n * Entries excluded from the graph because their frontmatter failed\n * validation, or (in a build) their MDX doesn't parse.\n */\n droppedPages: number;\n /**\n * The local `.mdx` files a build dropped because they don't parse, which\n * the docs collection leaves out so Astro never compiles them.\n */\n unparsable: string[];\n /** The instantiated content sources, for lazy entry reads (search/AI/raw). */\n sources: ContentSource[];\n /**\n * Whether the config file set `theme.fonts` itself (see\n * {@link ConfigLoadResult.themeFontsConfigured}); gates OG font derivation.\n */\n themeFontsConfigured: boolean;\n /**\n * Discovered `examples/` sources keyed by `<Component path>`, attached by the\n * runtime/eject layer after {@link scanProject} (example discovery is an Astro\n * concern, so core doesn't run it). Undefined until then; the agent-facing\n * Markdown downleveler reads it to turn `<Component path=\"…\" />` into the\n * example's source. Empty when the project has no examples.\n */\n examples?: ExampleLookup;\n}\n\n/**\n * Guard the invariant that ties a filesystem page to the `docs` collection:\n * Astro ids each collection entry by its path relative to the collection base,\n * so `getEntry(\"docs\", entryId)` only resolves when that entry id equals\n * `relative(base, file)`. A filesystem source ids entries relative to its own\n * root; when that root can't be the collection base (e.g. a second filesystem\n * source rooted elsewhere), the ids diverge and every one of that source's pages\n * would 404 in dev (a static build silently masks it). Emit a hard error naming\n * the mismatch so it can't ship, instead of a silent runtime failure. One\n * diagnostic per file (locale duplicates share a source path).\n */\nconst entryIdDiagnostics = (\n pages: PageRecord[],\n collectionBase: string\n): Diagnostic[] => {\n const diagnostics: Diagnostic[] = [];\n const seen = new Set<string>();\n for (const page of pages) {\n // Only filesystem entries render through the base-rooted `docs` collection;\n // staged sources carry their own id and collection.\n if (page.collection || !page.sourcePath || seen.has(page.sourcePath)) {\n continue;\n }\n seen.add(page.sourcePath);\n const expected = relative(collectionBase, page.sourcePath)\n .split(\"\\\\\")\n .join(\"/\");\n const entryId = page.entryId ?? page.source.ref;\n if (expected !== entryId) {\n diagnostics.push({\n code: \"BLUME_ENTRY_ID_MISMATCH\",\n file: page.sourcePath,\n message: `Content source \"${page.source.name}\" is rooted outside the docs collection base, so ${page.route} resolves entry id \"${entryId}\" but the collection would generate \"${expected}\" — the page would 404 at runtime.`,\n severity: \"error\",\n suggestion:\n \"Use a single filesystem() source (the docs collection roots at it), or give every filesystem() source the same root and partition them with include globs — a root at a subdirectory of the first source's root still mismatches.\",\n });\n }\n }\n return diagnostics;\n};\n\n/**\n * Funnel every loaded source's entries through the shared `normalizeEntry`,\n * collecting pages, diagnostics, and the count of entries dropped outright —\n * an entry that yields no pages but did yield diagnostics was rejected for\n * invalid frontmatter, and callers surface that count so a build with missing\n * pages can't read as clean. With `dropUnparsable`, an `.mdx` page whose own\n * text doesn't parse is dropped too, and its file listed in `unparsable` so\n * the docs collection leaves it out.\n */\nconst normalizeLoadedEntries = (\n loaded: ({ source: ContentSource } & SourceLoadResult)[],\n config: ResolvedConfig,\n dropUnparsable: boolean\n) => {\n // Only thread `frontmatter.extend` / `content.types` through when a project\n // opts in, so the known-key split in `normalizeEntry` stays off the default\n // path.\n const frontmatterExtend =\n Object.keys(config.frontmatter.extend).length > 0\n ? config.frontmatter.extend\n : undefined;\n const declaredTypes = Object.entries(config.content.types).filter(\n ([, type]) => Object.keys(type.frontmatter).length > 0\n );\n const typeFrontmatter =\n declaredTypes.length > 0\n ? Object.fromEntries(\n declaredTypes.map(([name, type]) => [name, type.frontmatter])\n )\n : undefined;\n\n const pages: PageRecord[] = [];\n const allDiagnostics: Diagnostic[] = [];\n const syntaxErrors: Diagnostic[] = [];\n const unparsable: string[] = [];\n // Published entries, checked for other tools' syntax once every page is\n // known: a wiki link is reported when it names one.\n const published: { entry: SourceEntry; locale: string; source: string }[] =\n [];\n let droppedPages = 0;\n for (const { source, entries, diagnostics } of loaded) {\n allDiagnostics.push(...diagnostics);\n for (const entry of entries) {\n const syntax = mdxSyntaxCheck(entry, source.name, config.variables);\n syntaxErrors.push(...syntax.diagnostics);\n // A build drops a page whose MDX doesn't parse, as it does one whose\n // front matter fails: with --no-strict the rest of the site still\n // builds. Dev keeps it, so opening it shows the error in place.\n const drop = syntax.unparsable && dropUnparsable;\n if (drop && entry.sourcePath && !source.staged) {\n unparsable.push(entry.sourcePath);\n }\n const normalized = normalizeEntry(entry, {\n basePath: config.basePath,\n defaultType: config.content.defaultType,\n frontmatterExtend,\n i18n: config.i18n,\n source: {\n monolingual: source.monolingual,\n name: source.name,\n orderedNames: source.orderedNames,\n prefix: source.prefix,\n staged: source.staged,\n },\n typeFrontmatter,\n versions: config.versions,\n });\n const [page] = normalized.pages;\n if (page ? drop : normalized.diagnostics.length > 0) {\n droppedPages += 1;\n }\n if (!drop) {\n pages.push(...normalized.pages);\n }\n allDiagnostics.push(...normalized.diagnostics);\n if (page) {\n allDiagnostics.push(\n ...directiveDiagnostics(entry, source.name),\n ...codeFenceDiagnostics(entry, source.name),\n ...alertDiagnostics(entry, source.name)\n );\n published.push({ entry, locale: page.locale, source: source.name });\n }\n }\n }\n const names = indexPageNames(pages);\n for (const { entry, locale, source } of published) {\n allDiagnostics.push(...syntaxDiagnostics(entry, source, names, locale));\n }\n // A parse error gives way to a diagnostic as severe at its line, which\n // names the cause (`BLUME_MDX_CURLY_ANCHOR` for a `{#id}` heading marker,\n // `BLUME_MDX_ATTRIBUTE_LIST` in a partial).\n const covered = (diagnostic: Diagnostic): boolean =>\n allDiagnostics.some(\n (other) =>\n other.file === diagnostic.file &&\n other.line === diagnostic.line &&\n (other.severity === \"error\" ||\n (other.severity === \"warning\" && diagnostic.severity === \"warning\"))\n );\n allDiagnostics.push(...syntaxErrors.filter((error) => !covered(error)));\n return { diagnostics: allDiagnostics, droppedPages, pages, unparsable };\n};\n\n/**\n * The local sources' on-disk roots a `git log` pathspec can cover: those\n * inside the repository at `gitRoot`. A root outside it would fail the log\n * outright and can never yield dates. Compared by real path, since git spells\n * its toplevel with every symlink resolved (`/private/tmp/site` for a project\n * opened as `/tmp/site`); the roots themselves keep the project's spelling.\n */\nconst gitContentRoots = (\n sources: readonly ContentSource[],\n gitRoot: string | null\n): string[] => {\n if (gitRoot === null) {\n return [];\n }\n const top = realPath(gitRoot);\n return sources\n .flatMap((source) => (source.contentRoot ? [source.contentRoot] : []))\n .filter((dir) => isWithin(top, realPath(dir)));\n};\n\n/** Whether a page's front matter dates its publication itself. */\nconst hasPublishedDate = (page: PageRecord): boolean =>\n Boolean(page.meta.date ?? page.meta.changelog?.date);\n\n/**\n * Fill in each page's git dates — \"last updated\" under `lastModified: \"git\"`,\n * published under `seo.datePublished: \"git\"` — from one `git log`, and warn\n * when a shallow clone leaves pages undated. Frontmatter always wins; git\n * applies to filesystem entries, other sources supply dates on the entry.\n */\nconst applyGitDates = (\n pages: PageRecord[],\n sources: readonly ContentSource[],\n root: string,\n config: ResolvedConfig\n): Diagnostic[] => {\n const lastModified = resolveLastModifiedConfig(config.lastModified);\n const gitModified = lastModified.enabled && lastModified.source === \"git\";\n const gitPublished = config.seo.datePublished === \"git\";\n if (!(gitModified || gitPublished)) {\n return [];\n }\n const fsPaths = pages\n .map((page) => page.sourcePath)\n .filter((path): path is string => path !== undefined);\n // The git pathspecs must cover where the pages actually live: each local\n // source's own on-disk root — a filesystem source's `root`, or a staged\n // local source's tree (an Obsidian vault) — which diverges from the global\n // `content.root`.\n const gitRoot = gitRepositoryRoot(root);\n const contentRoots = gitContentRoots(sources, gitRoot);\n const gitDates = gitFileDates(root, contentRoots, fsPaths, gitRoot);\n // Only pages the log could have dated count toward the shallow-clone\n // warnings — a page outside every covered root stays undated no matter how\n // deep the clone is, and the warning's suggested fix cannot help it.\n const datable = pages.filter(\n (page) =>\n page.sourcePath &&\n contentRoots.some((dir) => isWithin(dir, page.sourcePath ?? \"\"))\n );\n const warnings: Diagnostic[] = [];\n if (gitModified) {\n for (const page of pages) {\n if (!page.lastModified && page.sourcePath) {\n page.lastModified = gitDates.modified.get(page.sourcePath);\n }\n }\n // A shallow CI clone (Vercel, actions/checkout) silently drops most dates;\n // surface that instead of letting production diverge from local builds.\n warnings.push(\n ...lastModifiedShallowWarning(\n root,\n datable.filter((page) => !page.lastModified).length\n )\n );\n }\n if (gitPublished) {\n // A shallow clone's oldest commit is where it was cut, not where a page\n // began, so it dates nothing rather than every page wrongly.\n const shallow = isShallowGitRepository(root);\n for (const page of pages) {\n if (!(shallow || hasPublishedDate(page)) && page.sourcePath) {\n page.published = gitDates.published.get(page.sourcePath);\n }\n }\n if (shallow) {\n warnings.push(\n ...datePublishedShallowWarning(\n datable.filter((page) => !hasPublishedDate(page)).length\n )\n );\n }\n }\n return warnings;\n};\n\n/**\n * Run the full core pipeline for a project root: load config, resolve paths,\n * discover content and folder meta, build the graph, and assemble the manifest.\n * Collects all diagnostics without throwing on content-level problems so\n * callers can decide how strict to be.\n */\n/** Narrows the logo config's image shorthand from its object form. */\nconst isLogoShorthand = (\n logo: NonNullable<ResolvedConfig[\"logo\"]>\n): logo is string => typeof logo === \"string\";\n\n/** The configured brand link: `logo.href`, else the site root. */\nconst logoHref = (logo: ResolvedConfig[\"logo\"]): string =>\n logo === undefined || isLogoShorthand(logo) ? \"/\" : (logo.href ?? \"/\");\n\n/** Narrows the banner config's text shorthand from its object form. */\nconst isBannerShorthand = (\n banner: NonNullable<ResolvedConfig[\"banner\"]>\n): banner is string => typeof banner === \"string\";\n\n/**\n * Report an entry's undefined content variables at their source lines, then\n * replace the defined ones in the text the scan extracts from: the expanded\n * text when includes were spliced (its `origins` map lines back to the file\n * each came from), else the body.\n */\nconst substituteEntryVariables = (\n entry: SourceEntry,\n variables: ContentVariables\n): Diagnostic[] => {\n const { expanded } = entry;\n const text = expanded?.text ?? entry.body.text;\n const offset = expanded ? 0 : strippedLineOffset(entry.raw, entry.body.text);\n const diagnostics = undefinedVariables(text, variables).map(\n ({ line, name }): Diagnostic => {\n const origin = expanded?.origins[line - 1];\n return {\n code: \"BLUME_UNDEFINED_VARIABLE\",\n file: origin?.file ?? entry.sourcePath,\n line: origin?.line ?? line + offset,\n message: `{{${name}}} isn't a defined variable, so it would show as written.`,\n severity: \"error\",\n suggestion: `Define \"${name}\" under variables in blume.config.ts, or put it in inline code to show it as written.`,\n };\n }\n );\n if (expanded) {\n expanded.text = substituteVariables(expanded.text, variables);\n } else {\n entry.body.text = substituteVariables(entry.body.text, variables);\n }\n return diagnostics;\n};\n\n/** {@link substituteEntryVariables} over every loaded entry, when any are defined. */\nconst substituteLoadedVariables = (\n loaded: readonly SourceLoadResult[],\n variables: ContentVariables\n): Diagnostic[] =>\n hasVariables(variables)\n ? loaded.flatMap(({ entries }) =>\n entries.flatMap((entry) => substituteEntryVariables(entry, variables))\n )\n : [];\n\n/**\n * A pattern redirect that also matches a page. Hosts disagree on which\n * answers (Vercel and Cloudflare apply the rule ahead of the page, Netlify\n * and the Node server serve the page), so the pattern is rejected rather than\n * let the answer depend on the host. `pages` are the served page paths, which\n * carry `basePath`, as the based `from` does.\n *\n * An exact redirect from a page's own URL answers the same way everywhere:\n * Astro ranks its route above the page's catch-all, in dev and build alike,\n * and writes the redirect page where the page would go, so the page never\n * publishes. That's a warning rather than an error, since the outcome doesn't\n * depend on the host. So is one from a page's Markdown copy (`/guide.md`, or\n * the root's `/index.md`), which it takes over the same way. `mirrored` are\n * the routes served with copies: the content pages.\n */\nconst redirectPageDiagnostics = (\n config: ResolvedConfig,\n pages: readonly string[],\n mirrored: RouteSet,\n configFile: string | null\n): Diagnostic[] =>\n config.redirects.flatMap((redirect): Diagnostic[] => {\n const from = withBasePath(config.basePath, redirect.from);\n if (!isPatternPath(redirect.from)) {\n const page = normalizePath(from);\n if (pages.includes(page)) {\n return [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} is also the page ${page}, which never publishes: its URL redirects to ${redirect.to} instead.`,\n severity: \"warning\",\n suggestion:\n \"If the page moved, delete it or give it a new slug; otherwise remove the redirect.\",\n } satisfies Diagnostic,\n ];\n }\n const owner = mirroredPage(mirrored, page);\n return owner === undefined\n ? []\n : [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} is also the Markdown copy of the page ${owner}, so that copy never publishes: its URL redirects to ${redirect.to} instead.`,\n severity: \"warning\",\n suggestion:\n \"Remove the redirect: that URL serves the page's Markdown to agents.\",\n } satisfies Diagnostic,\n ];\n }\n const matched = pathsUnderPattern(from, pages);\n const [first] = matched;\n if (first === undefined) {\n return [];\n }\n const more = matched.length > 1 ? ` and ${matched.length - 1} more` : \"\";\n return [\n {\n code: \"BLUME_REDIRECT_MATCHES_PAGE\",\n file: configFile ?? undefined,\n message: `The redirect from ${redirect.from} also matches the page ${first}${more}, which some hosts would redirect and others would serve.`,\n severity: \"error\",\n suggestion:\n \"Narrow the pattern to the paths that moved, or move the pages out from under it.\",\n } satisfies Diagnostic,\n ];\n });\n\n/**\n * The config with the redirects sources ask for added after its own (see\n * `SourceLoadResult.redirects`), so every surface that reads\n * `config.redirects` — Astro's redirect pages, the host files, the link\n * checker — serves them alike. Each is repeated under every locale prefix\n * whose copy of the target page is served (a translation, or the fallback\n * copy), and is kept only where its target is a page and nothing else\n * answers for its `from`: a page there, or a configured redirect, wins.\n * `pages` are the served page paths, which carry `basePath`.\n */\nconst withSourceRedirects = (\n config: ResolvedConfig,\n loaded: readonly SourceLoadResult[],\n pages: RouteSet\n): ResolvedConfig => {\n const requested = loaded.flatMap(({ redirects }) => redirects ?? []);\n if (requested.length === 0) {\n return config;\n }\n const served = (route: string): string =>\n normalizePath(withBasePath(config.basePath, route));\n const prefixes = [\n \"\",\n ...(config.i18n?.locales.map((locale) => `/${locale.code}`) ?? []),\n ];\n const taken = new Set(\n config.redirects.map((redirect) => served(redirect.from))\n );\n const added: ResolvedConfig[\"redirects\"] = [];\n for (const redirect of requested) {\n for (const prefix of prefixes) {\n const from = `${prefix}${redirect.from}`;\n const to = `${prefix}${redirect.to}`;\n if (\n !pages.has(served(to)) ||\n pages.has(served(from)) ||\n taken.has(served(from))\n ) {\n continue;\n }\n taken.add(served(from));\n added.push({ from, status: 301, to });\n }\n }\n return added.length > 0\n ? { ...config, redirects: [...config.redirects, ...added] }\n : config;\n};\n\n/**\n * A `public/openapi.json` is served at `/openapi.json`, where Blume\n * publishes the OpenAPI description of the site's own JSON docs API: the\n * build stops generating that description, while the API catalog\n * (`/.well-known/api-catalog`) still lists `/openapi.json` as the docs API's\n * `service-desc`, so agents reading it get the project's file instead. Only\n * when the docs API is on; otherwise Blume publishes nothing there.\n */\nconst publicOpenApiDiagnostics = (\n config: ResolvedConfig,\n root: string\n): Diagnostic[] => {\n const file = join(root, \"public\", \"openapi.json\");\n return config.agents.api && existsSync(file)\n ? [\n {\n code: \"BLUME_PUBLIC_OPENAPI_JSON\",\n file,\n message:\n \"public/openapi.json is served at /openapi.json, where Blume publishes the OpenAPI description of the site's JSON docs API, so that description isn't generated, and /.well-known/api-catalog still lists /openapi.json as the docs API's description.\",\n severity: \"warning\",\n suggestion:\n \"Move the file to another path, like public/specs/openapi.json, and update what links to it. A spec an openapi() reference renders can live outside public/ altogether. Or set agents.api to false if the site shouldn't publish the JSON docs API.\",\n },\n ]\n : [];\n};\n\n/** The configured banner link target, when the banner has a link. */\nconst bannerLinkHref = (\n banner: ResolvedConfig[\"banner\"]\n): string | undefined =>\n banner === undefined || isBannerShorthand(banner)\n ? undefined\n : banner.link?.href;\n\n/**\n * The project's sources, before any of them loads: `beforeSources` sees the\n * config first, then each source validates itself (e.g. the filesystem\n * source checks its root exists), replacing the single hard `contentRoot`\n * check.\n */\nconst validatedSources = (\n config: ResolvedConfig,\n context: ProjectContext,\n runtime: SourceRuntime,\n beforeSources?: (config: ResolvedConfig) => void\n): ContentSource[] => {\n beforeSources?.(config);\n const sources = resolveSources(config, context, runtime);\n for (const source of sources) {\n source.validate?.();\n }\n return sources;\n};\n\nexport const scanProject = async (\n root: string,\n options: {\n devServerUrl?: string;\n mode?: BuildMode;\n preview?: boolean;\n refresh?: boolean;\n /** CLI overrides applied over the loaded config (e.g. `--output`). */\n overrides?: ConfigOverrides;\n /** Relocate the generated runtime (e.g. `.blume-verify` for isolation). */\n runtimeDir?: string;\n /**\n * Called with the resolved config before any source loads, so a command\n * can report an unset secret ahead of a fetch that fails without it: a\n * source that can't load fails the scan, and nothing after it runs.\n */\n beforeSources?: (config: ResolvedConfig) => void;\n } = {}\n): Promise<BlumeProject> => {\n const mode = options.mode ?? \"dev\";\n const preview = options.preview ?? false;\n const configResult = await loadConfig(root, {\n devServerUrl: options.devServerUrl,\n });\n const config = applyConfigOverrides(configResult.config, options.overrides);\n const context = resolveProjectContext(root, config, {\n runtimeDir: options.runtimeDir,\n });\n const sources = validatedSources(\n config,\n context,\n { mode, preview, refresh: options.refresh },\n options.beforeSources\n );\n\n // Folder meta is discovered per filesystem source, under each source's own\n // root and keyed by its route prefix, so a prefixed/root-differing source's\n // `meta.ts` still lines up with its (prefixed) sidebar group path.\n const metaSources: FolderMetaSource[] = sources.flatMap((source) =>\n source.staged || !source.contentRoot\n ? []\n : [\n {\n exclude: source.exclude,\n include: source.include,\n prefix: source.prefix,\n root: source.contentRoot,\n },\n ]\n );\n\n // Run every source's `load()` in parallel, then funnel each entry through the\n // shared `normalizeEntry` so route mapping is identical regardless of origin.\n // Under the `dir` parser, non-default locales are top-level directories whose\n // meta keys must carry the locale in front of the source prefix (see\n // `discoverFolderMeta`).\n const localeDirs =\n config.i18n && config.i18n.parser === \"dir\"\n ? config.i18n.locales.flatMap((locale) =>\n locale.code === config.i18n?.defaultLocale ? [] : [locale.code]\n )\n : undefined;\n\n const [loaded, folderMeta] = await Promise.all([\n Promise.all(\n sources.map(async (source) => ({ source, ...(await source.load()) }))\n ),\n discoverFolderMeta(metaSources, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n }),\n ]);\n\n // Expand `<include>` statements before normalization, so heading/link/\n // component extraction sees the spliced content every render surface shows.\n // Filesystem entries only: includes resolve as filesystem paths bounded by\n // the owning source's content root. Unresolvable statements stay verbatim\n // and surface as error diagnostics here.\n const includeDiagnostics: Diagnostic[] = [];\n await Promise.all(\n loaded.flatMap(({ source, entries }) => {\n if (source.staged || !source.contentRoot) {\n return [];\n }\n return entries.map(async (entry) => {\n if (!entry.sourcePath || !hasIncludeStatements(entry.body.text)) {\n return;\n }\n const expansion = await expandIncludes(entry.body.text, {\n contentRoot: source.contentRoot,\n lineOffset: strippedLineOffset(entry.raw, entry.body.text),\n sourcePath: entry.sourcePath,\n });\n entry.expanded = expansion;\n includeDiagnostics.push(...expansion.errors);\n });\n })\n );\n\n // Content variables: an undefined name in prose is an error at its source\n // line, and every defined one is replaced in the text headings, links, and\n // components are extracted from, so they match the rendered page.\n const variableDiagnostics = substituteLoadedVariables(\n loaded,\n config.variables\n );\n\n // Folder meta contributed by the sources themselves (the OpenAPI source\n // labels each tag directory with the spec's own tag name). It applies to\n // every locale, so it merges into the shared map — beneath user-authored\n // entries, whose own fields win while the generated ones fill the rest.\n const mergedFolderMeta = withGeneratedFolderMeta(\n folderMeta,\n new Map(\n loaded.flatMap(({ folderMeta: sourceMeta }) =>\n Object.entries(sourceMeta ?? {})\n )\n ),\n localeDirs\n );\n\n const {\n diagnostics: contentDiagnostics,\n droppedPages,\n pages: allPages,\n unparsable,\n } = normalizeLoadedEntries(loaded, config, mode === \"build\");\n\n // Checked against every page, drafts included: a `pages` entry naming a\n // draft still orders it wherever the draft renders.\n const metaDiagnostics = await folderMetaDiagnostics(folderMeta, allPages, {\n localeDirs,\n versionDirs: config.versions?.archived.map((version) => version.id),\n });\n\n // Drafts render in dev and in preview, but are excluded from production builds.\n const pages =\n mode === \"build\" && !preview\n ? allPages.filter((page) => !page.meta.draft)\n : allPages;\n\n // Resolve \"last updated\" and publication dates before the graph is built so\n // the manifest (which shares these page objects) picks them up.\n const gitDateWarnings = applyGitDates(pages, sources, context.root, config);\n\n // Custom `.astro` pages and the generated changelog index aren't content\n // pages, so name them for navigation: a `/changelog` tab should open the\n // timeline, not the newest entry, and a tab or brand link to a custom page\n // must stay on its route in every locale.\n const customPages = context.pagesRoot\n ? await discoverPages(context.pagesRoot)\n : [];\n const extraRoutes = new Set([\n ...customStaticRoutes(customPages),\n ...(hasChangelogIndex(pages, config) ? [CHANGELOG_INDEX_ROUTE] : []),\n ]);\n const graph = buildContentGraph(pages, {\n bannerHref: bannerLinkHref(config.banner),\n basePath: config.basePath,\n brandHref: logoHref(config.logo),\n extraRoutes,\n folderMeta: mergedFolderMeta.meta,\n i18n: config.i18n,\n navigation: config.navigation,\n sharedFolderMeta: mergedFolderMeta.shared,\n versions: config.versions,\n });\n const manifest = buildManifest({ config, context, graph });\n\n const i18nWarnings = config.i18n\n ? i18nDiagnostics(pages, config.i18n, config.versions)\n : [];\n const svgWarnings = await unmeasurableSvgDiagnostics(pages);\n const versionWarnings = config.versions\n ? versionsDiagnostics(pages, config.versions)\n : [];\n\n const servedPaths = [\n ...manifest.routes.map((route) => route.path),\n ...extraRoutes,\n ];\n // A date-named page's old URL, from before its name was kept whole,\n // redirects to its new one, beside the redirects the config lists.\n const redirects = [\n ...config.redirects,\n ...formerRouteRedirects(pages, new Set(servedPaths), config),\n ];\n\n return {\n // Then the routes the API references served under earlier versions'\n // rules redirect to where those operations live now.\n config: withSourceRedirects(\n redirects.length === config.redirects.length\n ? config\n : { ...config, redirects },\n loaded,\n new Set([...routeSetFor(manifest.routes), ...extraRoutes])\n ),\n context,\n diagnostics: [\n ...configResult.diagnostics,\n ...contentDiagnostics,\n ...includeDiagnostics,\n ...variableDiagnostics,\n ...folderMeta.diagnostics,\n ...metaDiagnostics,\n ...entryIdDiagnostics(\n pages,\n resolveDocsCollection(config, context.root).base\n ),\n ...graph.diagnostics,\n ...i18nWarnings,\n ...versionWarnings,\n ...gitDateWarnings,\n ...svgWarnings,\n ...publicOpenApiDiagnostics(config, context.root),\n ...redirectPageDiagnostics(\n config,\n servedPaths,\n routeSetFor(manifest.routes),\n context.configFile\n ),\n ],\n droppedPages,\n graph,\n manifest,\n mode,\n sources,\n themeFontsConfigured: configResult.themeFontsConfigured,\n unparsable,\n };\n};\n",
|
|
9
9
|
"import type { Nodes } from \"mdast\";\nimport { markdownToMdast } from \"satteri\";\n\nimport { MARKDOWN_BODY_FEATURES } from \"../markdown/features.ts\";\nimport { alertMarkerOf } from \"../markdown/github-alerts.ts\";\nimport type { AlertMarker } from \"../markdown/github-alerts.ts\";\nimport { strippedLineOffset } from \"./sources/normalize.ts\";\nimport type { SourceEntry } from \"./sources/types.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\n// A quote line that may open with an alert marker.\nconst ALERT_LINE = /^[\\t >]*>[\\t ]*\\[![a-z]+\\]/imu;\n\n/** An alert quote in an `.md` body: its marker and the quote's line. */\ninterface AlertFinding extends AlertMarker {\n line: number;\n}\n\n/**\n * The GitHub alerts in an `.md` body, in source order: quotes that open with\n * `[!NOTE]` and the rest, as `markdown/github-alerts.ts` reads them in `.mdx`\n * (an escaped marker, or one quoted inside another alert, is no alert there\n * either). A page is parsed only when a line looks like one.\n */\nconst alertFindings = (text: string): AlertFinding[] => {\n if (!ALERT_LINE.test(text)) {\n return [];\n }\n const tree: Nodes = markdownToMdast(text, {\n features: MARKDOWN_BODY_FEATURES,\n });\n const found: AlertFinding[] = [];\n const walk = (node: Nodes): void => {\n if (node.type === \"blockquote\") {\n const [paragraph] = node.children;\n const first =\n paragraph?.type === \"paragraph\" ? paragraph.children[0] : undefined;\n const escaped = text[first?.position?.start.offset ?? 0] === \"\\\\\";\n const alert =\n first?.type === \"text\" && !escaped\n ? alertMarkerOf(first.value)\n : undefined;\n if (alert !== undefined) {\n found.push({ ...alert, line: node.position?.start.line ?? 1 });\n // A quote inside an alert stays a quote, alert or not.\n return;\n }\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n walk(child);\n }\n }\n };\n walk(tree);\n return found;\n};\n\n/**\n * Warn about GitHub alerts (`> [!NOTE]`) in an `.md` entry, which renders\n * them as plain quotes that show the marker as text: alerts become callouts\n * only in `.mdx`, where Blume renders components (see\n * `markdown/github-alerts.ts`). Lines point into the file the author wrote, a\n * partial's own file for an alert an `<include>` brought in.\n */\nexport const alertDiagnostics = (\n entry: SourceEntry,\n sourceName: string\n): Diagnostic[] => {\n if (entry.body.format !== \"md\") {\n return [];\n }\n const page = entry.sourcePath ?? `${sourceName}:${entry.ref}`;\n const offset =\n entry.bodyLineOffset ?? strippedLineOffset(entry.raw, entry.body.text);\n return alertFindings(entry.expanded?.text ?? entry.body.text).map(\n ({ callout, line, marker }) => {\n const origin = entry.expanded?.origins[line - 1];\n return {\n code: \"BLUME_MD_GITHUB_ALERT\",\n file: origin?.file ?? page,\n line: origin?.line ?? line + offset,\n message: `\\`${marker}\\` makes a quote a callout only in .mdx; in this .md page it renders as a quote that shows \\`${marker}\\` as text.`,\n severity: \"warning\",\n suggestion: `Rename the page to .mdx to render it as a \\`${callout}\\` callout, or remove \\`${marker}\\` to keep a plain quote.`,\n };\n }\n );\n};\n",
|
|
10
10
|
"import { toString as mdastToString } from \"mdast-util-to-string\";\n\nimport { jsxAttribute, jsxFlowElement } from \"./mdast.ts\";\nimport type { MdastNode, MdastVisitorContext } from \"./mdast.ts\";\n\nexport interface DirectiveNode extends MdastNode {\n attributes?: Record<string, string | null | undefined> | null;\n // Satteri gives an empty container directive (`:::note\\n:::`) `children: null`.\n children?: MdastNode[] | null;\n name: string;\n position?: {\n start?: { offset?: number };\n end?: { offset?: number };\n };\n}\n\n/**\n * The visitor-context slice the directive visitors use. `source` is the page\n * the directive offsets index into; without it the literal fallback rebuilds\n * a directive from its node instead. `parent` walks up to an enclosing\n * container directive, which renders the directives inside it itself.\n */\ninterface DirectiveVisitorContext extends MdastVisitorContext {\n parent?: (node: MdastNode) => MdastNode | undefined;\n source?: string;\n}\n\n/** Directive names that map directly onto a Callout type. */\nexport const CALLOUT_TYPES: ReadonlySet<string> = new Set([\n \"danger\",\n \"info\",\n \"note\",\n \"success\",\n \"tip\",\n \"warning\",\n]);\n\n/** Friendly aliases for the canonical Callout types. */\ninterface CalloutAliases {\n [alias: string]: string;\n}\n\nexport const CALLOUT_ALIASES: Readonly<CalloutAliases> = {\n caution: \"warning\",\n error: \"danger\",\n important: \"note\",\n warn: \"warning\",\n};\n\n/** Resolve a directive name to a Callout type, or `null` if it is not one. */\nexport const calloutTypeFor = (name: string): string | null => {\n const lower = name.toLowerCase();\n if (CALLOUT_TYPES.has(lower)) {\n return lower;\n }\n return CALLOUT_ALIASES[lower] ?? null;\n};\n\n// The characters that start inline Markdown in plain text, escaped so the\n// text reads back as written.\nconst MARKDOWN_SPECIAL = /[\\\\`*_~[\\]<]/gu;\n\nconst escapeMarkdown = (text: string): string =>\n text.replaceAll(MARKDOWN_SPECIAL, String.raw`\\$&`);\n\nconst BACKTICK_RUN = /`+/gu;\n\n/** A code span holding `code` verbatim. */\nconst codeSpan = (code: string): string => {\n const runs = [...code.matchAll(BACKTICK_RUN)].map(([run]) => run.length);\n const fence = \"`\".repeat(Math.max(0, ...runs) + 1);\n // A backtick at either end would join the fence, and CommonMark strips one\n // space from each end of a span that has both: a space pads either case.\n const pad =\n code.startsWith(\"`\") ||\n code.endsWith(\"`\") ||\n (code.startsWith(\" \") && code.endsWith(\" \") && code.trim() !== \"\")\n ? \" \"\n : \"\";\n return `${fence}${pad}${code}${pad}${fence}`;\n};\n\n// What can't sit inside a `<…>` link destination.\nconst DESTINATION_UNSAFE = /[<>\\n]/gu;\n\n/**\n * A node's phrasing children (a directive label's, a paragraph's) written\n * back as inline Markdown, for a component prop that renders it — a callout\n * title. Text, emphasis, strong, strikethrough, code, and links keep their\n * formatting; anything else reads as its text (an image as nothing, raw HTML\n * as its literal source), the way a flattened title always did.\n */\nexport const phrasingMarkdown = (parent: MdastNode): string =>\n // SAFETY: a phrasing parent's `children` is a node list.\n ((parent.children ?? []) as MdastNode[])\n .map((node) => {\n switch (node.type) {\n case \"strong\": {\n return `**${phrasingMarkdown(node)}**`;\n }\n case \"emphasis\": {\n return `*${phrasingMarkdown(node)}*`;\n }\n case \"delete\": {\n return `~~${phrasingMarkdown(node)}~~`;\n }\n case \"inlineCode\": {\n return codeSpan(mdastToString(node));\n }\n case \"link\": {\n const url = String(node.url ?? \"\").replaceAll(\n DESTINATION_UNSAFE,\n encodeURIComponent\n );\n return `[${phrasingMarkdown(node)}](<${url}>)`;\n }\n default: {\n break;\n }\n }\n return escapeMarkdown(mdastToString(node, { includeImageAlt: false }));\n })\n .join(\"\");\n\n/** The markers that open a text (`:name`) and a leaf (`::name`) directive. */\nconst LITERAL_MARKERS = new Map([\n [\"leafDirective\", \"::\"],\n [\"textDirective\", \":\"],\n]);\n\n/** A directive's `[label]` rebuilt from its label's text, or nothing. */\nconst labelSource = (label: MdastNode[]): string =>\n label.length > 0\n ? `[${mdastToString(label, { includeImageAlt: false })}]`\n : \"\";\n\n/** A directive's `{attributes}` rebuilt from its node, or nothing. */\nconst attributeSource = (node: DirectiveNode): string => {\n const attributes = Object.entries(node.attributes ?? {}).map(\n ([key, value]) => (value ? `${key}=\"${value}\"` : key)\n );\n return attributes.length > 0 ? `{${attributes.join(\" \")}}` : \"\";\n};\n\n/** The source a directive node spans, when its offsets point into `source`. */\nconst spannedSource = (node: DirectiveNode, source: string): string | null => {\n const start = node.position?.start?.offset;\n const end = node.position?.end?.offset;\n return start !== undefined && end !== undefined\n ? source.slice(start, end)\n : null;\n};\n\n/**\n * A text or leaf directive exactly as the author wrote it. The slice by\n * offsets is the exact text — `[label]` and `{attrs}` included — and is\n * trusted only when it opens with the directive's own marker and name;\n * content an `<include>` spliced in carries no offsets into this page, so it\n * is rebuilt from the node instead.\n */\nexport const directiveSource = (\n node: DirectiveNode,\n marker: string,\n source: string\n): string => {\n const opening = `${marker}${node.name}`;\n const slice = spannedSource(node, source);\n if (slice?.startsWith(opening)) {\n return slice;\n }\n return `${opening}${labelSource(node.children ?? [])}${attributeSource(node)}`;\n};\n\n/**\n * The node a text or leaf directive renders as: its literal source, as text\n * in place of a text directive and as a paragraph in place of a leaf one.\n */\nconst literalDirective = (\n node: DirectiveNode,\n marker: string,\n source: string\n): MdastNode => {\n const text = { type: \"text\", value: directiveSource(node, marker, source) };\n return marker === \":\" ? text : { children: [text], type: \"paragraph\" };\n};\n\nconst FENCE = /^:{3,}/u;\n\n// The line that closes a container: a colon fence, after whatever quote or\n// list indentation the container sits in.\nconst CLOSING_FENCE = /\\n[\\t >]*(?<fence>:{3,})\\s*$/u;\n\n/** A paragraph holding one line of literal text. */\nconst literalLine = (value: string): MdastNode => ({\n children: [{ type: \"text\", value }],\n type: \"paragraph\",\n});\n\n/**\n * The fence lines of a container directive as the author wrote them — the\n * opening one with its `[label]` and `{attrs}` — or, without offsets into\n * this page (an `<include>`), rebuilt from the node. A container left\n * unclosed runs to the end of its parent and has no closing line.\n */\nconst containerFences = (\n node: DirectiveNode,\n label: MdastNode | undefined,\n source: string\n): string[] => {\n const slice = spannedSource(node, source) ?? \"\";\n const fence = FENCE.exec(slice)?.[0];\n if (fence === undefined || !slice.startsWith(node.name, fence.length)) {\n const labelText = labelSource(label ? [label] : []);\n return [`:::${node.name}${labelText}${attributeSource(node)}`, \":::\"];\n }\n const [opening = \"\"] = slice.split(\"\\n\", 1);\n const closing = CLOSING_FENCE.exec(slice.slice(opening.length))?.groups\n ?.fence;\n // A shorter fence can't close the container; it is the body's last line.\n return closing !== undefined && closing.length >= fence.length\n ? [opening.trimEnd(), closing]\n : [opening.trimEnd()];\n};\n\n/**\n * What a container directive renders as. A callout name becomes a\n * `<Callout>`: the title comes from a `[label]` or a `{title=\"…\"}` attribute,\n * and the body becomes the callout content. Blume has no other container, and\n * dropping one would drop its body with it, so any other name — `:::details`,\n * a `:::warnig` typo — renders its body between its fence lines, as written.\n * The directives inside render here too, since Satteri reaches them only\n * after this replacement has taken their original.\n */\nconst renderContainer = (\n node: DirectiveNode,\n source: string\n): MdastNode | MdastNode[] => {\n const children = (node.children ?? []).flatMap((child) =>\n // oxlint-disable-next-line no-use-before-define -- mutual recursion: a container's body holds directives, containers included\n literalize(child, source)\n );\n\n // A leading `:::name[Label]` parses to a paragraph flagged `directiveLabel`.\n // SAFETY: Satteri stamps `directiveLabel` on that paragraph's `data`; any\n // other node reads undefined and fails the check.\n const labelIndex = children.findIndex(\n (child) =>\n child.type === \"paragraph\" &&\n (child.data as { directiveLabel?: boolean } | undefined)?.directiveLabel\n );\n const [label] = labelIndex === -1 ? [] : children.splice(labelIndex, 1);\n\n const type = calloutTypeFor(node.name);\n if (type === null) {\n const [opening = \"\", closing] = containerFences(node, label, source);\n return [\n literalLine(opening),\n ...children,\n ...(closing === undefined ? [] : [literalLine(closing)]),\n ];\n }\n\n // The label's phrasing as Markdown, which `<Callout>` renders in its title:\n // `:::note[Read **this**]` keeps its bold.\n const title =\n node.attributes?.title ?? (label ? phrasingMarkdown(label) : undefined);\n const attributes = [jsxAttribute(\"type\", type)];\n if (title) {\n attributes.push(jsxAttribute(\"title\", title));\n }\n return jsxFlowElement(\"Callout\", attributes, children);\n};\n\n/**\n * `node` with every directive in it rendered: text and leaf directives as\n * their literal source, containers as {@link renderContainer}.\n */\nconst literalize = (node: MdastNode, source: string): MdastNode[] => {\n if (node.type === \"containerDirective\") {\n // SAFETY: a `containerDirective` carries a `name` plus optional\n // attributes, children, and position — the `DirectiveNode` shape.\n return [renderContainer(node as DirectiveNode, source)].flat();\n }\n const marker = LITERAL_MARKERS.get(node.type);\n if (marker) {\n // SAFETY: only Satteri's `textDirective`/`leafDirective` nodes have a\n // marker, and they carry a `name` plus optional attributes, children,\n // and position — the `DirectiveNode` shape.\n return [literalDirective(node as DirectiveNode, marker, source)];\n }\n // SAFETY: a parent's `children` is always a node list; leaves carry none.\n const children = node.children as MdastNode[] | null | undefined;\n if (!children) {\n return [node];\n }\n return [\n {\n ...node,\n children: children.flatMap((child) => literalize(child, source)),\n },\n ];\n};\n\n/** Whether a container directive (already rendered, body and all) holds `node`. */\nconst insideContainer = (node: MdastNode, ctx: DirectiveVisitorContext) => {\n for (\n let parent = ctx.parent?.(node);\n parent !== undefined;\n parent = ctx.parent?.(parent)\n ) {\n if (parent.type === \"containerDirective\") {\n return true;\n }\n }\n return false;\n};\n\n/** The text and leaf visitor: render the directive as its literal source. */\nconst renderLiteral =\n (marker: string) => (node: DirectiveNode, ctx: DirectiveVisitorContext) => {\n // A container's body was already rendered into its replacement; a\n // transform queued on the replaced original would be dropped with a\n // warning.\n if (insideContainer(node, ctx)) {\n return;\n }\n ctx.replaceNode(node, literalDirective(node, marker, ctx.source ?? \"\"));\n };\n\n/**\n * Satteri MDAST plugin for directives. Container directives (`:::note`,\n * `:::warning`, `:::tip`, …) map onto Blume's `<Callout>` component, and any\n * other container renders its body between its literal fence lines (see\n * {@link renderContainer}).\n *\n * Blume handles no text (`:name`) or leaf (`::name`) directives, and prose is\n * full of text that parses as one — `16:9`, `10:30am`, `og:image`,\n * `pets:read` — so both render as the literal source the author wrote instead\n * of vanishing.\n */\nexport const directiveToCalloutPlugin = () => ({\n containerDirective(node: DirectiveNode, ctx: DirectiveVisitorContext) {\n // A container inside another was rendered with its enclosing one.\n if (insideContainer(node, ctx)) {\n return;\n }\n ctx.replaceNode(node, renderContainer(node, ctx.source ?? \"\"));\n },\n leafDirective: renderLiteral(\"::\"),\n name: \"blume-directive-callout\",\n // Positions are opt-in since satteri 0.10; the literal fallback slices\n // directives out of the source by offset.\n options: { position: true },\n textDirective: renderLiteral(\":\"),\n});\n",
|
|
11
11
|
"import { phrasingMarkdown } from \"./directives.ts\";\nimport { jsxAttribute, jsxFlowElement } from \"./mdast.ts\";\nimport type { MdastNode, MdastVisitorContext } from \"./mdast.ts\";\n\n/**\n * The callout each GitHub alert renders as. `IMPORTANT` has no callout of its\n * own and reads as a note (`:::important` does too), and `CAUTION` — GitHub's\n * red \"risks or negative outcomes\" alert — as danger.\n */\nexport const ALERT_CALLOUTS: ReadonlyMap<string, string> = new Map([\n [\"caution\", \"danger\"],\n [\"important\", \"note\"],\n [\"note\", \"note\"],\n [\"tip\", \"tip\"],\n [\"warning\", \"warning\"],\n]);\n\n// `[!NOTE]` opening a quote's first line, any case, as GitHub reads it.\nconst ALERT_MARKER = /^\\[!(?<kind>[a-z]+)\\]/iu;\n\n/** An alert marker as written (`[!NOTE]`) and the callout it renders as. */\nexport interface AlertMarker {\n callout: string;\n marker: string;\n}\n\n/** The alert marker a quote's first text opens with, if any. */\nexport const alertMarkerOf = (text: string): AlertMarker | undefined => {\n const match = ALERT_MARKER.exec(text);\n const callout = ALERT_CALLOUTS.get(match?.groups?.kind?.toLowerCase() ?? \"\");\n return match && callout ? { callout, marker: match[0] } : undefined;\n};\n\n/** The visitor-context slice the alert visitor uses. */\ninterface AlertVisitorContext extends MdastVisitorContext {\n parent?: (node: MdastNode) => MdastNode | undefined;\n source?: string;\n}\n\n/** The node's children. */\nconst childrenOf = (node: MdastNode | undefined): MdastNode[] =>\n // SAFETY: a parent's `children` is always a node list; leaves carry none.\n (node?.children ?? []) as MdastNode[];\n\n/** A text node's value, or undefined for any other node. */\nconst textOf = (node: MdastNode | undefined): string | undefined =>\n node?.type === \"text\" ? String(node.value) : undefined;\n\n/** A text node's start offset into the page, when the parse recorded one. */\nconst startOffset = (node: MdastNode): number | undefined => {\n // SAFETY: Satteri positions carry numeric offsets.\n const position = node.position as { start?: { offset?: number } } | undefined;\n return position?.start?.offset;\n};\n\n/** The alert a blockquote opens with: its callout type and first paragraph. */\ninterface Alert {\n paragraph: MdastNode;\n type: string;\n}\n\n/**\n * The alert a blockquote is, or undefined. Its first paragraph must open with\n * the marker as written: an escaped `\\[!NOTE]` (text once parsed) starts with\n * a backslash in the page.\n */\nconst alertOf = (node: MdastNode, source: string): Alert | undefined => {\n const [paragraph] = childrenOf(node);\n const first = childrenOf(paragraph).at(0);\n const text = textOf(first);\n if (paragraph?.type !== \"paragraph\" || first === undefined || !text) {\n return undefined;\n }\n const marker = alertMarkerOf(text);\n const offset = startOffset(first);\n if (\n marker === undefined ||\n (offset !== undefined && source[offset] === \"\\\\\")\n ) {\n return undefined;\n }\n return { paragraph, type: marker.callout };\n};\n\n/** A paragraph's phrasing split at its first line break. */\ninterface Lines {\n first: MdastNode[];\n rest: MdastNode[];\n}\n\n/** Split phrasing at its first line break: a newline in text, or a hard break. */\nconst splitFirstLine = (nodes: readonly MdastNode[]): Lines => {\n for (const [index, node] of nodes.entries()) {\n const after = nodes.slice(index + 1);\n if (node.type === \"break\") {\n return { first: nodes.slice(0, index), rest: after };\n }\n const newline = textOf(node)?.indexOf(\"\\n\") ?? -1;\n if (newline !== -1) {\n const value = String(node.value);\n const head = value.slice(0, newline);\n const tail = value.slice(newline + 1);\n return {\n first: [...nodes.slice(0, index), { type: \"text\", value: head }],\n rest: tail === \"\" ? after : [{ type: \"text\", value: tail }, ...after],\n };\n }\n }\n return { first: [...nodes], rest: [] };\n};\n\n/**\n * A GitHub alert as a `<Callout>`: the marker comes off the first line, text\n * after it on that line becomes the title (VitePress and Obsidian write\n * `> [!WARNING] Heads up`), and the rest of the quote is the body.\n */\nconst alertCallout = ({ paragraph, type }: Alert, quote: MdastNode) => {\n const [first, ...phrasing] = childrenOf(paragraph);\n const opening = String(first?.value).replace(ALERT_MARKER, \"\");\n const lines = splitFirstLine([{ type: \"text\", value: opening }, ...phrasing]);\n const title = phrasingMarkdown({ children: lines.first, type: \"paragraph\" });\n const attributes = [jsxAttribute(\"type\", type)];\n if (title.trim() !== \"\") {\n attributes.push(jsxAttribute(\"title\", title.trim()));\n }\n const body = lines.rest.length\n ? [{ children: lines.rest, type: \"paragraph\" }]\n : [];\n return jsxFlowElement(\"Callout\", attributes, [\n ...body,\n ...childrenOf(quote).slice(1),\n ]);\n};\n\n/** Whether `node` sits inside a quote that is itself an alert. */\nconst insideAlert = (node: MdastNode, ctx: AlertVisitorContext): boolean => {\n for (\n let parent = ctx.parent?.(node);\n parent !== undefined;\n parent = ctx.parent?.(parent)\n ) {\n if (\n parent.type === \"blockquote\" &&\n alertOf(parent, ctx.source ?? \"\") !== undefined\n ) {\n return true;\n }\n }\n return false;\n};\n\n/**\n * Satteri MDAST plugin for GitHub alerts in `.mdx`: a quote whose first line\n * is `[!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, or `[!CAUTION]`\n * renders as the matching `<Callout>` (see {@link ALERT_CALLOUTS}), as on\n * GitHub. An alert quoted inside another stays a quote, as GitHub leaves it.\n * `.md` pages render no components, so their alerts stay quotes, which\n * `blume check` warns about (`core/alert-diagnostics.ts`).\n */\nexport const githubAlertsPlugin = () => ({\n blockquote(node: MdastNode, ctx: AlertVisitorContext) {\n const alert = alertOf(node, ctx.source ?? \"\");\n if (alert === undefined || insideAlert(node, ctx)) {\n return;\n }\n ctx.replaceNode(node, alertCallout(alert, node));\n },\n name: \"blume-github-alerts\",\n // Positions are opt-in since satteri 0.10; they tell an escaped marker\n // from a written one.\n options: { position: true },\n});\n",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"import type { Nodes, Paragraph } from \"mdast\";\nimport { markdownToMdast, mdxToMdast } from \"satteri\";\n\nimport {\n CALLOUT_ALIASES,\n CALLOUT_TYPES,\n calloutTypeFor,\n} from \"../markdown/directives.ts\";\nimport {\n MARKDOWN_BODY_FEATURES,\n MDX_BODY_FEATURES,\n} from \"../markdown/features.ts\";\nimport { strippedLineOffset } from \"./sources/normalize.ts\";\nimport type { SourceEntry } from \"./sources/types.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\ntype ContainerDirective = Extract<Nodes, { type: \"containerDirective\" }>;\n\n// A line that may open a container directive: a colon fence and a name, after\n// any quote or list indentation.\nconst CONTAINER_OPENING = /^[\\t >]*:{3,}(?<name>[a-z][\\w-]*)/gimu;\n\n// A colon fence followed by text that opens no directive: text after a space\n// (`::: card`), or a character no name starts with (`:::{.x}`). Such a line\n// either closes a container and loses its text, or is a spaced opener.\nconst FENCE_WITH_TEXT = /^[\\t >]*:{3,}(?:[\\t ]+\\S|[^\\s:a-z])/imu;\n\n// A container's closing line: the colon fence and whatever follows it.\nconst CLOSING_LINE =\n /^[\\t >]*(?<written>(?<fence>:{3,})[\\t ]*(?<text>.*?))\\s*$/u;\n\n// A container opener with text after its name, and after any `[label]` or\n// `{attributes}`: `:::tip Some title`. Sätteri drops that text.\nconst OPENING_TEXT =\n /^[\\t >]*(?<written>(?<fence>:{3,})(?<name>[a-z][\\w-]*)(?<label>\\[[^\\]\\n]*\\])?(?<attributes>\\{[^}\\n]*\\})?[\\t ]+(?<text>\\S.*?))\\s*$/iu;\nconst OPENING_TEXT_LINE =\n /^[\\t >]*:{3,}[a-z][\\w-]*(?:\\[[^\\]\\n]*\\])?(?:\\{[^}\\n]*\\})?[\\t ]+\\S/imu;\n\n// A markdown-it style opener, `::: tip Title`, which is no directive at all.\nconst SPACED_OPENING =\n /^[\\t >]*(?<written>(?<fence>:{3,})[\\t ]+(?<name>[a-z][\\w-]*)(?<title>.*?))\\s*$/iu;\n\n// A container opener's colon fence and name, after any quote or list\n// indentation, as one line of a `.md` paragraph holds it.\nconst MD_OPENING = /^[\\t >]*(?<written>:{3,}(?<name>[a-z][\\w-]*))/iu;\nconst MD_OPENING_LINE = /^[\\t >]*:{3,}[a-z]/imu;\n\nconst codeList = (names: Iterable<string>): string =>\n [...names].map((name) => `\\`${name}\\``).join(\", \");\n\nconst CALLOUT_NAMES = `${codeList(CALLOUT_TYPES)} (or the aliases ${codeList(Object.keys(CALLOUT_ALIASES))})`;\n\n/** A directive problem at a line of the parsed text, before it's placed in a file. */\ninterface Finding {\n code: string;\n line: number;\n message: string;\n suggestion: string;\n}\n\nconst unknownContainer = (node: ContainerDirective): Finding[] =>\n calloutTypeFor(node.name) === null\n ? [\n {\n code: \"BLUME_UNKNOWN_DIRECTIVE\",\n line: node.position?.start.line ?? 1,\n message: `\\`:::${node.name}\\` isn't a callout type, so the page shows its \\`:::\\` lines as written around its content.`,\n suggestion: `Use a callout type — ${CALLOUT_NAMES} — or remove the \\`:::\\` lines to keep the content as plain prose.`,\n },\n ]\n : [];\n\n/**\n * Text after the colons of a container's closing fence. Sätteri closes a\n * container on any line that starts with at least its fence's colons and\n * drops the rest of that line (micromark's directive grammar, which\n * `remark-directive` uses, keeps such a line as content), so a `::: card`\n * inside a `:::warning` ends the callout early and `card` never reaches the\n * page. A container left unclosed ends with its content rather than on a\n * fence line of its own.\n */\nconst closingText = (\n node: ContainerDirective,\n lines: readonly string[]\n): Finding[] => {\n const start = node.position?.start.line ?? 1;\n const end = node.position?.end.line ?? start;\n const content = node.children.at(-1)?.position?.end.line ?? start;\n const groups =\n end > content ? CLOSING_LINE.exec(lines[end - 1] ?? \"\")?.groups : undefined;\n if (!(groups?.text && groups.fence && groups.written)) {\n return [];\n }\n const longer = \":\".repeat(groups.fence.length + 1);\n return [\n {\n code: \"BLUME_DIRECTIVE_CLOSING_TEXT\",\n line: end,\n message: `\\`${groups.written}\\` closes the \\`:::${node.name}\\` container above it, so \\`${groups.text}\\` never reaches the page.`,\n suggestion: `Give the container a longer fence than this line's — \\`${longer}${node.name}\\`, closed by \\`${longer}\\` — to keep the line inside it as text, or remove \\`${groups.text}\\` from the line.`,\n },\n ];\n};\n\n/**\n * Text after a callout opener's name (`:::tip Some title`). Sätteri ends the\n * name at the space and drops the rest of the line, so the callout renders\n * untitled and the text never shows. Docusaurus and the markdown-it\n * containers VitePress uses read that text as the title, which is where the\n * spelling comes from. Only callouts count: any other container renders its\n * opening line as written (see `markdown/directives.ts`), text and all.\n */\nconst openingText = (\n node: ContainerDirective,\n lines: readonly string[]\n): Finding[] => {\n const line = node.position?.start.line ?? 1;\n const groups = OPENING_TEXT.exec(lines[line - 1] ?? \"\")?.groups;\n if (\n !(groups?.fence && groups.name && groups.text && groups.written) ||\n calloutTypeFor(node.name) === null\n ) {\n return [];\n }\n const opener = `${groups.fence}${groups.name}`;\n return [\n {\n code: \"BLUME_DIRECTIVE_OPENING_TEXT\",\n line,\n message: `\\`${groups.written}\\` opens a \\`${groups.name}\\` callout, but the text after its name, \\`${groups.text}\\`, never reaches the page.`,\n suggestion:\n groups.label || groups.attributes\n ? `Move \\`${groups.text}\\` into the callout's title, or onto the next line as its text.`\n : `Put the title in brackets: \\`${opener}[${groups.text}]\\`.`,\n },\n ];\n};\n\n/**\n * Callout openers written with a space after the colons (`::: tip`, the\n * markdown-it spelling VitePress, VuePress, and Docusaurus v2 use). That is\n * never a directive, so the line and its whole block render as plain text.\n * Only paragraph lines count, so an example in a code block stays quiet.\n */\nconst spacedOpenings = (\n node: Paragraph,\n lines: readonly string[]\n): Finding[] => {\n const start = node.position?.start.line ?? 1;\n const end = node.position?.end.line ?? start;\n return lines.slice(start - 1, end).flatMap((text, index) => {\n const groups = SPACED_OPENING.exec(text)?.groups;\n if (\n !(groups?.fence && groups.name && groups.written) ||\n calloutTypeFor(groups.name) === null\n ) {\n return [];\n }\n const opener = `${groups.fence}${groups.name}`;\n const title = groups.title?.trim();\n return [\n {\n code: \"BLUME_DIRECTIVE_SPACED_NAME\",\n line: start + index,\n message: `\\`${groups.written}\\` has a space between its colons and its name, so it isn't a callout and the page shows it as text.`,\n suggestion: title\n ? `Remove the space and put the title in brackets: \\`${opener}[${title}]\\`.`\n : `Remove the space: \\`${opener}\\`.`,\n },\n ];\n });\n};\n\n/**\n * The directive problems in an `.mdx` body, in source order. The body is\n * parsed as the renderer reads it, so a fence in a code block never counts. A\n * page is parsed only when a line looks like one of these problems, so pages\n * without one cost a scan. A body MDX can't parse fails to render anyway, with\n * its own error.\n */\nconst directiveFindings = (text: string): Finding[] => {\n const suspect =\n FENCE_WITH_TEXT.test(text) ||\n OPENING_TEXT_LINE.test(text) ||\n [...text.matchAll(CONTAINER_OPENING)].some(\n (match) => calloutTypeFor(match.groups?.name ?? \"\") === null\n );\n if (!suspect) {\n return [];\n }\n let tree: Nodes;\n try {\n tree = mdxToMdast(text, { features: MDX_BODY_FEATURES });\n } catch {\n return [];\n }\n const lines = text.split(\"\\n\");\n const found: Finding[] = [];\n const walk = (node: Nodes): void => {\n if (node.type === \"containerDirective\") {\n found.push(\n ...unknownContainer(node),\n ...openingText(node, lines),\n ...closingText(node, lines)\n );\n } else if (node.type === \"paragraph\") {\n found.push(...spacedOpenings(node, lines));\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n walk(child);\n }\n }\n };\n walk(tree);\n return found.toSorted((a, b) => a.line - b.line);\n};\n\n/**\n * Container directive openers on the lines of an `.md` paragraph (`:::note`).\n * A `.md` page renders no directives, so the opener, its content, and its\n * closing `:::` show as text. A directive in a code block is no paragraph.\n */\nconst mdOpenings = (node: Paragraph, lines: readonly string[]): Finding[] => {\n const start = node.position?.start.line ?? 1;\n const end = node.position?.end.line ?? start;\n return lines.slice(start - 1, end).flatMap((text, index) => {\n const groups = MD_OPENING.exec(text)?.groups;\n if (!(groups?.name && groups.written)) {\n return [];\n }\n const callout = calloutTypeFor(groups.name);\n return [\n {\n code: \"BLUME_MD_DIRECTIVE\",\n line: start + index,\n message: `\\`${groups.written}\\` opens a directive, which Blume renders only in .mdx, so this .md page shows it and its closing \\`:::\\` as text.`,\n suggestion: callout\n ? `Rename the page to .mdx to render it as a \\`${callout}\\` callout.`\n : `Rename the page to .mdx and use a callout type — ${CALLOUT_NAMES} — or remove the \\`:::\\` lines to keep the content as plain prose.`,\n },\n ];\n });\n};\n\n/**\n * The directives in an `.md` body, in source order, read the way the\n * renderer reads the page: as paragraphs, since `.md` has no directives. A\n * page is parsed only when a line looks like an opener.\n */\nconst mdDirectiveFindings = (text: string): Finding[] => {\n if (!MD_OPENING_LINE.test(text)) {\n return [];\n }\n const tree: Nodes = markdownToMdast(text, {\n features: MARKDOWN_BODY_FEATURES,\n });\n const lines = text.split(\"\\n\");\n const found: Finding[] = [];\n const walk = (node: Nodes): void => {\n if (node.type === \"paragraph\") {\n found.push(...mdOpenings(node, lines));\n } else if (\"children\" in node) {\n for (const child of node.children) {\n walk(child);\n }\n }\n };\n walk(tree);\n return found;\n};\n\n/**\n * Warn about the `:::` directives in an entry that don't render as their\n * author meant. In `.mdx`:\n *\n * - `BLUME_UNKNOWN_DIRECTIVE`: a `:::name` container that isn't a callout.\n * The page keeps its content — the body renders between the literal `:::`\n * lines (see `markdown/directives.ts`) — but a typo like `:::warnig`, or a\n * `:::details` carried over from another docs tool, should read as the\n * mistake it is rather than as a finished page.\n * - `BLUME_DIRECTIVE_OPENING_TEXT`: a callout opener with text after its\n * name, which the page drops (`:::tip Some title`).\n * - `BLUME_DIRECTIVE_CLOSING_TEXT`: a closing fence with text after it, which\n * the page drops (`::: card` inside a `:::warning`).\n * - `BLUME_DIRECTIVE_SPACED_NAME`: a spaced callout opener (`::: tip`), which\n * the page shows as text.\n *\n * In `.md`, which renders no directives:\n *\n * - `BLUME_MD_DIRECTIVE`: a `:::name` opener, which the page shows as text.\n *\n * Lines point into the file the author wrote, a partial's own file for a\n * directive an `<include>` brought in.\n */\nexport const directiveDiagnostics = (\n entry: SourceEntry,\n sourceName: string\n): Diagnostic[] => {\n const page = entry.sourcePath ?? `${sourceName}:${entry.ref}`;\n const offset =\n entry.bodyLineOffset ?? strippedLineOffset(entry.raw, entry.body.text);\n const text = entry.expanded?.text ?? entry.body.text;\n const findings =\n entry.body.format === \"mdx\"\n ? directiveFindings(text)\n : mdDirectiveFindings(text);\n return findings.map(({ line, ...finding }) => {\n const origin = entry.expanded?.origins[line - 1];\n return {\n ...finding,\n file: origin?.file ?? page,\n line: origin?.line ?? line + offset,\n severity: \"warning\",\n };\n });\n};\n",
|
|
16
16
|
"import { normalizePath, stripBasePath, withBasePath } from \"./base-path.ts\";\nimport type { ResolvedConfig } from \"./schema.ts\";\nimport type { PageRecord } from \"./types.ts\";\n\ntype Redirect = ResolvedConfig[\"redirects\"][number];\n\n/**\n * Redirects from the routes an earlier Blume published pages at\n * (`PageRecord.formerRoute`) to where they publish now, so a date-named\n * page's old URL keeps working. None is added where the old URL is still\n * served (another page, or a custom page, lives there now), where an authored\n * redirect already starts, or where two pages once resolved to it: that was a\n * duplicate route, which failed the build, so the URL never served either.\n * Both ends are written base-less, like authored redirects.\n */\nexport const formerRouteRedirects = (\n pages: readonly PageRecord[],\n served: ReadonlySet<string>,\n config: Pick<ResolvedConfig, \"basePath\" | \"redirects\">\n): Redirect[] => {\n const targets = new Map<string, string | undefined>();\n for (const page of pages) {\n if (page.formerRoute !== undefined) {\n targets.set(\n page.formerRoute,\n targets.has(page.formerRoute) ? undefined : page.route\n );\n }\n }\n const authored = new Set(\n config.redirects.map((redirect) =>\n normalizePath(withBasePath(config.basePath, redirect.from))\n )\n );\n return [...targets].flatMap(([from, to]) =>\n to === undefined || served.has(from) || authored.has(from)\n ? []\n : [\n {\n from: stripBasePath(config.basePath, from),\n status: 301,\n to: stripBasePath(config.basePath, to),\n } satisfies Redirect,\n ]\n );\n};\n",
|
|
17
17
|
"import { mountBasePath, withBasePath } from \"./base-path.ts\";\nimport {\n localizeInternalPath,\n localizeRoute,\n resolveFallbackLocale,\n} from \"./i18n.ts\";\nimport { resolveLocalizable } from \"./localizable.ts\";\nimport {\n validateNavIcons,\n validateNavStructure,\n validateSidebarItems,\n} from \"./nav-diagnostics.ts\";\nimport { buildNavigation, isPageRef, pagesByRef } from \"./navigation.ts\";\nimport type {\n FolderMeta,\n LocalizableLabel,\n ResolvedConfig,\n ResolvedI18nConfig,\n ResolvedVersionsConfig,\n SidebarItemConfig,\n} from \"./schema.ts\";\nimport type {\n ContentGraph,\n Diagnostic,\n Navigation,\n NavTab,\n PageRecord,\n} from \"./types.ts\";\nimport { versionizeRoute } from \"./versions.ts\";\n\ninterface BuildContentGraphOptions {\n /** The banner's link target as configured (`banner.link.href`), if any. */\n bannerHref?: string;\n /** Site-wide route mount point (`\"\"` or `/seg`); invisible to the nav tree. */\n basePath?: string;\n /** The header brand link as configured (`logo.href`, default `/`). */\n brandHref?: string;\n /** Routes served outside the content tree that tabs may link to directly. */\n extraRoutes?: ReadonlySet<string>;\n folderMeta: Map<string, FolderMeta>;\n sharedFolderMeta?: Map<string, FolderMeta>;\n navigation: ResolvedConfig[\"navigation\"];\n i18n?: ResolvedI18nConfig;\n versions?: ResolvedVersionsConfig;\n}\n\ntype FallbackLocale = ReturnType<typeof resolveFallbackLocale>;\n\n/** Build the route → page-id map, flagging any duplicate-route collisions. */\nconst collectRoutes = (pages: PageRecord[]) => {\n const routes = new Map<string, string>();\n const diagnostics: Diagnostic[] = [];\n for (const page of pages) {\n const existing = routes.get(page.route);\n if (existing) {\n diagnostics.push({\n code: \"BLUME_DUPLICATE_ROUTE\",\n file: page.sourcePath ?? page.id,\n message: `Two files resolve to ${page.route}: ${existing} and ${page.id}`,\n severity: \"error\",\n suggestion: \"Rename or move one of the files so each route is unique.\",\n });\n continue;\n }\n routes.set(page.route, page.id);\n }\n return { diagnostics, routes };\n};\n\n/**\n * A locale's pages, padded with fallback-locale entries for any translation it\n * hasn't authored yet, so navigation mirrors the default structure instead of\n * showing an empty (or partial) tree.\n */\nconst localePagesFor = (\n code: string,\n real: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n i18n: ResolvedI18nConfig,\n basePath: string\n): PageRecord[] => {\n if (!(fallback && code !== fallback)) {\n return real;\n }\n const present = new Set(real.map((page) => page.translationKey));\n const filled: PageRecord[] = [];\n for (const [key, source] of fallbackByKey) {\n if (!present.has(key)) {\n filled.push({\n ...source,\n fallback: true,\n locale: code,\n route: mountBasePath(basePath, localizeRoute(key, code, i18n)),\n });\n }\n }\n return [...real, ...filled];\n};\n\n/**\n * An explicit sidebar with every item's `href` passed through `localize` (page\n * refs and `root`s resolve against each locale's own pages already).\n */\nconst localizeSidebarHrefs = (\n items: SidebarItemConfig[],\n localize: (href: string) => string\n): SidebarItemConfig[] =>\n items.map((item) => {\n if (isPageRef(item)) {\n return item;\n }\n const localized = { ...item };\n if (item.href !== undefined) {\n localized.href = localize(item.href);\n }\n if (item.items) {\n localized.items = localizeSidebarHrefs(item.items, localize);\n }\n return localized;\n });\n\n/** Resolve every localizable label in the configured tabs for one locale. */\nconst resolveTabLabels = (\n tabs: BuildContentGraphOptions[\"navigation\"][\"tabs\"],\n locale: string,\n defaultLocale?: string\n): NavTab[] =>\n (tabs ?? []).map((tab) => ({\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n label: resolveLocalizable(item.label, locale, defaultLocale),\n })),\n label: resolveLocalizable(tab.label, locale, defaultLocale),\n }));\n\n/** A configured header or footer link with its label resolved for a locale. */\nconst withLabel = <T extends { label: LocalizableLabel }>(\n link: T,\n locale: string,\n defaultLocale?: string\n): Omit<T, \"label\"> & { label: string } => ({\n ...link,\n label: resolveLocalizable(link.label, locale, defaultLocale),\n});\n\n/** The configured header links (plain, call to action, featured) in `locale`. */\nconst resolveHeaderLinks = (\n navigation: BuildContentGraphOptions[\"navigation\"],\n locale: string,\n defaultLocale?: string\n) => ({\n actions: navigation.actions.map((link) =>\n withLabel(link, locale, defaultLocale)\n ),\n cta: navigation.cta ? withLabel(navigation.cta, locale, defaultLocale) : null,\n featured: navigation.featured.map((link) =>\n withLabel(link, locale, defaultLocale)\n ),\n});\n\n/**\n * Mount a configured link authored as if the site were served at root (the\n * banner's): under `basePath`, except a route served outside the content tree\n * — a custom page, the generated changelog index — which answers only at its\n * own path.\n */\nconst mountConfiguredLink = (\n path: string,\n basePath: string,\n extraRoutes: ReadonlySet<string>\n): string => (extraRoutes.has(path) ? path : withBasePath(basePath, path));\n\n/**\n * Build one locale's navigation tree from its own pages and folder meta.\n * `version` is the archived version id when building a snapshot's tree\n * (`\"\"` for the current docs): it shifts the folder-meta lookups into the\n * snapshot's key space and roots the tree at the localized version root.\n */\nconst buildLocaleNavigation = (\n code: string,\n pages: PageRecord[],\n fallback: FallbackLocale,\n fallbackByKey: Map<string, PageRecord>,\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n): Navigation => {\n const basePath = options.basePath ?? \"\";\n const real = pages.filter((page) => page.locale === code);\n const localePages = localePagesFor(\n code,\n real,\n fallback,\n fallbackByKey,\n i18n,\n basePath\n );\n // Every route the build serves: each locale's pages (this locale's fallback\n // copies included) plus the routes outside the content tree — custom pages\n // and the generated changelog index, which mount outside `basePath`.\n const pageRoutes = [\n ...new Set([...pages, ...localePages].map((page) => page.route)),\n ];\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n // Whether `path` (authored at root, like a tab path) is served — exactly, or\n // with `section`, as the prefix of a served page (a tab resolves to its\n // section's first page, a plain link doesn't).\n const serves = (path: string, section: boolean): boolean => {\n if (extraRoutes.has(path)) {\n return true;\n }\n const based = withBasePath(basePath, path);\n const prefix = based === \"/\" ? \"/\" : `${based}/`;\n return pageRoutes.some(\n (route) => route === based || (section && route.startsWith(prefix))\n );\n };\n // Localize an internal link so it points to its in-locale route (e.g. `/docs`\n // -> `/fr/docs`); external paths pass through. A route this locale doesn't\n // serve while the default one does — a custom page, the generated changelog\n // index — exists only at its own path, so the link stays there instead of\n // 404ing. Tab paths (and their dropdown items') resolve to a section's first\n // page, so a translated section counts; hrefs must be served exactly.\n // Selectors are left alone: a language selector's items intentionally target\n // specific locales. The header's brand link resolves the same way, so the\n // logo and the tabs beside it always agree on the reader's locale.\n const localizeServed = (path: string, section: boolean): string => {\n const localized = localizeInternalPath(path, code, i18n);\n return localized === path ||\n serves(localized, section) ||\n !serves(path, section)\n ? localized\n : path;\n };\n const localizePath = (path: string): string => localizeServed(path, true);\n const tabs = resolveTabLabels(\n options.navigation.tabs,\n code,\n i18n.defaultLocale\n ).map((tab) => {\n const localized = {\n ...tab,\n items: tab.items?.map((item) => ({\n ...item,\n path: localizePath(item.path),\n })),\n path: localizePath(tab.path),\n };\n if (localized.href) {\n localized.href = localizeServed(localized.href, false);\n }\n return localized;\n });\n // Meta files live in locale directories only under the `dir` parser\n // (`fr/guides/meta.ts` -> key `fr/guides`). Under `dot`, translations sit\n // next to the originals and `guides/meta.ts` applies to every locale —\n // prefixing would look up keys that can never exist. Inside a snapshot the\n // version dir is hoisted in front (`v1.0/fr`), matching `discoverFolderMeta`.\n const localeDirOf = (locale: string): string =>\n i18n.parser === \"dir\" && locale !== i18n.defaultLocale ? locale : \"\";\n const localeDir = localeDirOf(code);\n // A locale padded from the fallback locale mirrors that locale's folder meta\n // for any folder it has no meta of its own for.\n const fallbackMetaPrefix =\n fallback && code !== fallback\n ? [version, localeDirOf(fallback)].filter(Boolean).join(\"/\")\n : undefined;\n // Internal featured and header hrefs are localized like tab paths — a pinned\n // `/changelog` link rendered on `/fr/…` pages must stay inside the reader's\n // locale, not kick them back to the default one.\n const localizeHref = <T extends { href: string }>(item: T): T => ({\n ...item,\n href: localizeServed(item.href, false),\n });\n const { actions, cta, featured } = resolveHeaderLinks(\n options.navigation,\n code,\n i18n.defaultLocale\n );\n const sidebarItems = options.navigation.sidebar.items;\n\n const navigation = buildNavigation(localePages, {\n actions: actions.map(localizeHref),\n basePath,\n cta: cta ? localizeHref(cta) : null,\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n fallbackMetaPrefix,\n featured: featured.map(localizeHref),\n folderMeta: options.folderMeta,\n // The localized tree root (\"/\" for the hidden default, \"/fr\" otherwise;\n // \"/fr/v1.0\" inside a snapshot): the tab pointing here spans the whole\n // tree and must not be treated as a tab section.\n localizedRoot: localizeRoute(versionizeRoute(\"/\", version), code, i18n),\n metaPrefix: [version, localeDir].filter(Boolean).join(\"/\"),\n refByLogical: true,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n // Shared `meta.$.*` files are locale-agnostic but version-specific: a\n // snapshot's shared meta keys under its version dir.\n sharedMetaPrefix: version,\n // A configured explicit sidebar describes the current docs; a frozen\n // snapshot's structure comes from the snapshot itself, so archived trees\n // always build from the filesystem. Its `href` links are localized like\n // featured links.\n sidebar:\n version || !sidebarItems\n ? undefined\n : localizeSidebarHrefs(sidebarItems, (href) =>\n localizeServed(href, false)\n ),\n // Tab paths are written against the current docs' root, which a\n // snapshot's versionized `localizedRoot` no longer is.\n tabRoot: localizeRoute(\"/\", code, i18n),\n tabs,\n });\n // `serves` checked the localized brand link against based routes, and\n // unlike tab and header links it isn't rebased later, so a localized one\n // takes the base here (`/fr` is served at `/docs/fr`).\n const localizedBrand = (href: string): string => {\n const localized = localizeServed(href, false);\n return localized === href ? localized : withBasePath(basePath, localized);\n };\n const branded =\n options.brandHref === undefined\n ? navigation\n : { ...navigation, brandHref: localizedBrand(options.brandHref) };\n // The banner link is authored like a featured href — in the default\n // locale's path space, as if mounted at root — so it is localized the same\n // way before it is mounted.\n return options.bannerHref === undefined\n ? branded\n : {\n ...branded,\n bannerHref: mountConfiguredLink(\n localizeServed(options.bannerHref, false),\n basePath,\n extraRoutes\n ),\n };\n};\n\n/**\n * Per-locale navigation trees plus the default-locale tree for i18n sites.\n * Called once for the current docs and once per archived version (with that\n * version's pages and its id as `version`).\n */\nconst buildI18nNavigation = (\n pages: PageRecord[],\n options: BuildContentGraphOptions,\n i18n: ResolvedI18nConfig,\n diagnostics: Diagnostic[],\n version = \"\"\n) => {\n // Pages of the fallback locale, by translation key — used to fill in a\n // locale's sidebar for pages it hasn't translated yet.\n const fallback = resolveFallbackLocale(i18n);\n // Monolingual pages (GitHub releases) are left out: they aren't served at the\n // other locales' URLs (see the route manifest), so no sidebar may link there.\n const fallbackByKey = new Map<string, PageRecord>();\n if (fallback) {\n for (const page of pages) {\n if (page.locale === fallback && !page.monolingual) {\n fallbackByKey.set(page.translationKey, page);\n }\n }\n }\n\n // Each locale gets an independent tree, so navigation may diverge per language.\n // Untranslated pages are padded into every locale from the fallback, so a tie\n // in shared content would otherwise be re-reported once per locale — dedupe on\n // code + file + message, which are all locale-stable for padded pages. A\n // locale-specific tie names its own translated files/labels and survives.\n const navigationByLocale: Record<string, Navigation> = {};\n const seen = new Set<string>();\n for (const { code } of i18n.locales) {\n const localeDiagnostics: Diagnostic[] = [];\n navigationByLocale[code] = buildLocaleNavigation(\n code,\n pages,\n fallback,\n fallbackByKey,\n options,\n i18n,\n localeDiagnostics,\n version\n );\n for (const diagnostic of localeDiagnostics) {\n const key = `${diagnostic.code}\\n${diagnostic.file ?? \"\"}\\n${diagnostic.message}`;\n if (!seen.has(key)) {\n seen.add(key);\n diagnostics.push(diagnostic);\n }\n }\n }\n const navigation: Navigation = navigationByLocale[i18n.defaultLocale] ?? {\n featured: [],\n selectors: [],\n sidebar: [],\n tabs: [],\n };\n return { navigation, navigationByLocale };\n};\n\n/** One archived version's navigation trees, keyed by locale (`\"\"` sans i18n). */\nconst buildVersionNavigation = (\n id: string,\n versionPages: PageRecord[],\n options: BuildContentGraphOptions,\n diagnostics: Diagnostic[]\n) => {\n const { i18n } = options;\n if (i18n) {\n return buildI18nNavigation(versionPages, options, i18n, diagnostics, id)\n .navigationByLocale;\n }\n return {\n \"\": buildNavigation(versionPages, {\n ...resolveHeaderLinks(options.navigation, \"\"),\n basePath: options.basePath ?? \"\",\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n folderMeta: options.folderMeta,\n localizedRoot: versionizeRoute(\"/\", id),\n metaPrefix: id,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sharedMetaPrefix: id,\n // Tab paths are written against the current docs' root.\n tabRoot: \"/\",\n // A configured explicit sidebar describes the current docs; a snapshot's\n // structure comes from the snapshot itself.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n }),\n };\n};\n\n/** Assemble the content graph: routes map, nav, and duplicate diagnostics. */\nexport const buildContentGraph = (\n pages: PageRecord[],\n options: BuildContentGraphOptions\n): ContentGraph => {\n const { diagnostics, routes } = collectRoutes(pages);\n const { i18n } = options;\n\n // Under versioning, each version gets independent trees: navPath is\n // version-stripped, so mixing versions into one build would collide the\n // same logical page once per version.\n const currentPages = options.versions\n ? pages.filter((page) => page.version === \"\")\n : pages;\n\n // A single-locale site has no per-locale trees; the empty map is its\n // navigationByLocale.\n let navigationByLocale: Record<string, Navigation> = {};\n let navigation: Navigation;\n if (i18n) {\n ({ navigation, navigationByLocale } = buildI18nNavigation(\n currentPages,\n options,\n i18n,\n diagnostics\n ));\n } else {\n navigation = buildNavigation(currentPages, {\n // No locale to prefer: a per-locale label map resolves to its first\n // entry on a single-locale site.\n ...resolveHeaderLinks(options.navigation, \"\"),\n basePath: options.basePath ?? \"\",\n diagnostics,\n display: options.navigation.sidebar.display,\n extraRoutes: options.extraRoutes,\n folderMeta: options.folderMeta,\n selectors: options.navigation.selectors,\n sharedFolderMeta: options.sharedFolderMeta,\n sidebar: options.navigation.sidebar.items,\n // No locale to prefer: a per-locale label map resolves to its first\n // entry on a single-locale site.\n tabs: resolveTabLabels(options.navigation.tabs, \"\"),\n });\n if (options.bannerHref !== undefined) {\n navigation = {\n ...navigation,\n bannerHref: mountConfiguredLink(\n options.bannerHref,\n options.basePath ?? \"\",\n options.extraRoutes ?? new Set<string>()\n ),\n };\n }\n }\n\n const navigationByVersion: Record<string, Record<string, Navigation>> = {};\n for (const { id } of options.versions?.archived ?? []) {\n navigationByVersion[id] = buildVersionNavigation(\n id,\n pages.filter((page) => page.version === id),\n options,\n diagnostics\n );\n }\n\n // Icon typos, duplicate labels, and hidden-page-in-sidebar are validated on\n // the built navigation. Missing-target detection needs the full route set\n // (incl. custom + generated pages), so it runs later in generateRuntime.\n diagnostics.push(\n ...validateNavIcons(navigation),\n ...validateNavStructure(navigation, currentPages)\n );\n // Checked once against every locale's pages, not per locale tree: a page\n // missing from one locale's sidebar is an untranslated page, not a typo.\n const sidebarItems = options.navigation.sidebar.items;\n if (sidebarItems) {\n const byRef = pagesByRef(\n currentPages,\n options.basePath ?? \"\",\n Boolean(i18n)\n );\n const extraRoutes = options.extraRoutes ?? new Set<string>();\n diagnostics.push(\n ...validateSidebarItems(\n sidebarItems,\n (route) => byRef.has(route) || extraRoutes.has(route)\n )\n );\n }\n\n return {\n diagnostics,\n navigation,\n navigationByLocale,\n navigationByVersion,\n pages,\n routes,\n };\n};\n",
|
|
18
|
-
"import { execFileSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\n\nimport { normalize, relative } from \"pathe\";\n\nimport type { Diagnostic } from \"./types.ts\";\n\n/** Normalized form of the `lastModified` config. */\nexport interface ResolvedLastModified {\n enabled: boolean;\n source: \"git\" | \"frontmatter\";\n}\n\n/**\n * Env for git invocations, with the repo-locating GIT_* variables stripped. A\n * parent git process exports an absolute GIT_DIR (and friends) to its hooks —\n * husky pre-commit in a linked worktree, post-merge, CI wrappers — and an\n * inherited GIT_DIR overrides `-C` discovery, silently pointing every call at\n * the parent's repository instead of the project's.\n */\nconst GIT_LOCATION_VARS = new Set([\n \"GIT_COMMON_DIR\",\n \"GIT_DIR\",\n \"GIT_INDEX_FILE\",\n \"GIT_OBJECT_DIRECTORY\",\n \"GIT_PREFIX\",\n \"GIT_WORK_TREE\",\n]);\n\nexport const gitEnv = (): NodeJS.ProcessEnv =>\n Object.fromEntries(\n Object.entries(process.env).filter(([key]) => !GIT_LOCATION_VARS.has(key))\n );\n\n/** Normalize the `lastModified` config (`false | \"git\" | \"frontmatter\"`) into `{ enabled, source }`. */\nexport const resolveLastModifiedConfig = (\n value: false | \"git\" | \"frontmatter\"\n): ResolvedLastModified =>\n value === false\n ? { enabled: false, source: \"git\" }\n : { enabled: true, source: value };\n\n/**\n * Parse `git log --format=%x00%cI --name-status -M100%` output into a map of\n * repo-root-relative path → the committer ISO date of the newest commit that\n * changed the file. Each commit emits a NUL-prefixed date line followed by a\n * status line per path it touched (`M\\tpath`, `R100\\told\\tnew`); since git\n * logs newest-first, the first date seen for a path wins. Blank lines are\n * ignored.\n *\n * A rename (`-M100%` reports only exact ones, where the content is unchanged)\n * follows the file the way `git log --follow` does for one path: it dates\n * nothing itself, and the older commits that name the old path date the file\n * under its current name, so renaming `page.md` to `page.mdx` keeps the page's\n * date. A file whose visible history starts at a rename (a shallow clone cut\n * off the commits before it) takes the rename's date.\n */\nexport const parseGitLog = (output: string): Map<string, string> => {\n const times = new Map<string, string>();\n // An older name of a file → its name now, for the commits read after the\n // rename (older ones).\n const currentNames = new Map<string, string>();\n const renamedAt = new Map<string, string>();\n let current: string | null = null;\n for (const line of output.split(\"\\n\")) {\n if (line.startsWith(\"\\0\")) {\n current = line.slice(1);\n continue;\n }\n const [status = \"\", from = \"\", to] = line.split(\"\\t\");\n const path = to ?? from;\n if (!(current && path)) {\n continue;\n }\n const name = currentNames.get(path) ?? path;\n if (status.startsWith(\"R\")) {\n currentNames.set(from, name);\n if (!renamedAt.has(name)) {\n renamedAt.set(name, current);\n }\n } else if (!times.has(name)) {\n times.set(name, current);\n }\n }\n for (const [name, date] of renamedAt) {\n if (!times.has(name)) {\n times.set(name, date);\n }\n }\n return times;\n};\n\n/**\n * `path` with every symlink resolved, the spelling git prints paths in: a\n * project opened through a link (`/tmp/site` on macOS, where `/tmp` links to\n * `/private/tmp`) gets `/private/tmp/site` from `rev-parse --show-toplevel`,\n * so the project's own spelling would compare as outside the repository and\n * every page would go undated. The native realpath also expands a Windows\n * 8.3 short name (`RUNNER~1`), which git does too. A path that doesn't exist\n * stays as written.\n */\nexport const realPath = (path: string): string => {\n try {\n return normalize(realpathSync.native(path));\n } catch {\n return path;\n }\n};\n\n/**\n * The toplevel of the repository containing `root`, or null when git is\n * unavailable or the project isn't a repo. Callers use it to decide which\n * content roots a `git log` pathspec can cover at all — a root outside the\n * repository would fail the log outright and can never yield dates.\n */\nexport const gitRepositoryRoot = (root: string): string | null => {\n try {\n return execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--show-toplevel\"],\n // stderr silenced: outside a repository the probe fails by design.\n { encoding: \"utf-8\", env: gitEnv(), stdio: [\"ignore\", \"pipe\", \"ignore\"] }\n ).trim();\n } catch {\n return null;\n }\n};\n\n/**\n * Resolve each source file's last-modified date from git history, keyed by\n * absolute source path. Runs a single `git log` over the given content roots\n * (each local source's own root, which may diverge from `content.root`),\n * following renames within them (see `parseGitLog`; a file moved in from\n * outside every root dates from the move), and maps repo-root-relative paths\n * back to the given absolute paths\n * (monorepo-safe via `rev-parse --show-toplevel`). Returns an empty map if git\n * is unavailable or the project isn't a repo — the feature then simply shows\n * no dates.\n */\nexport const gitLastModifiedTimes = (\n root: string,\n contentRoots: string[],\n sourcePaths: string[],\n repositoryRoot?: string | null\n): Map<string, string> => {\n // Nothing to date, or nowhere bounded to look — either way, don't pay for a\n // git scan. Both guards matter: `git log -- ` with no pathspec logs the\n // entire repository, which is what an all-staged project produces (a staged\n // source contributes no content root, yet its entries can still carry a\n // `sourcePath`).\n if (sourcePaths.length === 0 || contentRoots.length === 0) {\n return new Map();\n }\n // The caller that bounded `contentRoots` already resolved the repo root;\n // reuse it rather than spawning `rev-parse` a second time per scan.\n const gitRoot =\n repositoryRoot === undefined ? gitRepositoryRoot(root) : repositoryRoot;\n if (gitRoot === null) {\n return new Map();\n }\n // Git names paths by their real location, so the pathspecs and the paths\n // read back against the log are compared in that spelling too (see\n // `realPath`).\n const top = realPath(gitRoot);\n try {\n const output = execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\n \"-C\",\n root,\n \"-c\",\n \"core.quotePath=false\",\n \"log\",\n \"--format=%x00%cI\",\n \"--name-status\",\n // Exact renames only: git pairs them by blob id without comparing\n // contents, so following them costs nothing, and a rename with edits\n // dates the file at that commit either way.\n \"-M100%\",\n \"--\",\n ...contentRoots.map(realPath),\n ],\n { encoding: \"utf-8\", env: gitEnv(), maxBuffer: 256 * 1024 * 1024 }\n );\n const byRepoPath = parseGitLog(output);\n const result = new Map<string, string>();\n for (const sourcePath of sourcePaths) {\n const iso = byRepoPath.get(relative(top, realPath(sourcePath)));\n if (iso) {\n result.set(sourcePath, iso);\n }\n }\n return result;\n } catch {\n return new Map();\n }\n};\n\n/**\n * Whether the repository containing `root` is a shallow clone. Returns false\n * when git is unavailable or the project isn't a repo — those cases already\n * yield no dates at all, and the shallow warning would only mislead.\n */\nexport const isShallowGitRepository = (root: string): boolean => {\n try {\n return (\n execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--is-shallow-repository\"],\n // stderr silenced: outside a repository the probe fails by design.\n {\n encoding: \"utf-8\",\n env: gitEnv(),\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }\n ).trim() === \"true\"\n );\n } catch {\n return false;\n }\n};\n\n/**\n * A warning for git-derived dates silently missing because the build ran in a\n * shallow clone — the default on Vercel and `actions/checkout`, where `git log`\n * only sees the last few commits, so most pages get no date and the sitemap's\n * `<lastmod>` / \"Last updated\" stamps quietly disappear in production while\n * working locally. Empty when every page got a date or the clone isn't\n * shallow.\n */\nexport const lastModifiedShallowWarning = (\n root: string,\n undatedCount: number\n): Diagnostic[] => {\n if (undatedCount === 0 || !isShallowGitRepository(root)) {\n return [];\n }\n return [\n {\n code: \"BLUME_SHALLOW_GIT_HISTORY\",\n message: `lastModified is on, but this build runs in a shallow git clone, so ${undatedCount} page(s) have no git-derived date — their sitemap <lastmod> and \"Last updated\" stamps are omitted.`,\n severity: \"warning\",\n suggestion:\n \"Fetch full history in CI: set the VERCEL_DEEP_CLONE=true environment variable on Vercel, or fetch-depth: 0 for actions/checkout.\",\n },\n ];\n};\n",
|
|
18
|
+
"import { execFileSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\n\nimport { normalize, relative } from \"pathe\";\n\nimport type { Diagnostic } from \"./types.ts\";\n\n/** Normalized form of the `lastModified` config. */\nexport interface ResolvedLastModified {\n enabled: boolean;\n source: \"git\" | \"frontmatter\";\n}\n\n/**\n * Env for git invocations, with the repo-locating GIT_* variables stripped. A\n * parent git process exports an absolute GIT_DIR (and friends) to its hooks —\n * husky pre-commit in a linked worktree, post-merge, CI wrappers — and an\n * inherited GIT_DIR overrides `-C` discovery, silently pointing every call at\n * the parent's repository instead of the project's.\n */\nconst GIT_LOCATION_VARS = new Set([\n \"GIT_COMMON_DIR\",\n \"GIT_DIR\",\n \"GIT_INDEX_FILE\",\n \"GIT_OBJECT_DIRECTORY\",\n \"GIT_PREFIX\",\n \"GIT_WORK_TREE\",\n]);\n\nexport const gitEnv = (): NodeJS.ProcessEnv =>\n Object.fromEntries(\n Object.entries(process.env).filter(([key]) => !GIT_LOCATION_VARS.has(key))\n );\n\n/** Normalize the `lastModified` config (`false | \"git\" | \"frontmatter\"`) into `{ enabled, source }`. */\nexport const resolveLastModifiedConfig = (\n value: false | \"git\" | \"frontmatter\"\n): ResolvedLastModified =>\n value === false\n ? { enabled: false, source: \"git\" }\n : { enabled: true, source: value };\n\n/** Each file's git dates, keyed by path. */\nexport interface GitDates {\n /** The committer ISO date of the newest commit that changed the file. */\n modified: Map<string, string>;\n /** The committer ISO date of the commit that added the file. */\n published: Map<string, string>;\n}\n\n/**\n * Parse `git log --format=%x00%cI --name-status -M100%` output into each\n * repo-root-relative path's dates. Each commit emits a NUL-prefixed date line\n * followed by a status line per path it touched (`M\\tpath`, `R100\\told\\tnew`);\n * since git logs newest-first, the first date seen for a path is when it last\n * changed, and the add (`A\\tpath`) that ends its history is when it was\n * published. Blank lines are ignored.\n *\n * A rename (`-M100%` reports only exact ones, where the content is unchanged)\n * follows the file the way `git log --follow` does for one path: it dates\n * nothing itself, and the older commits that name the old path date the file\n * under its current name, so renaming `page.md` to `page.mdx` keeps the page's\n * dates. A file whose visible history starts at a rename (a shallow clone cut\n * off the commits before it) takes the rename's date. Only exact renames are\n * followed: `--follow`'s default 50% similarity would hand a new page the\n * history of a similar one deleted in the same commit.\n */\nexport const parseGitLog = (output: string): GitDates => {\n const modified = new Map<string, string>();\n const published = new Map<string, string>();\n // An older name of a file → its name now, for the commits read after the\n // rename (older ones).\n const currentNames = new Map<string, string>();\n const renamedAt = new Map<string, string>();\n // Files whose add has been read: anything older under the same name was an\n // earlier file at that path, deleted before this one was created.\n const added = new Set<string>();\n let current: string | null = null;\n for (const line of output.split(\"\\n\")) {\n if (line.startsWith(\"\\0\")) {\n current = line.slice(1);\n continue;\n }\n const [status = \"\", from = \"\", to] = line.split(\"\\t\");\n const path = to ?? from;\n if (!(current && path)) {\n continue;\n }\n const name = currentNames.get(path) ?? path;\n if (!added.has(name)) {\n published.set(name, current);\n if (status === \"A\") {\n added.add(name);\n }\n }\n if (status.startsWith(\"R\")) {\n currentNames.set(from, name);\n if (!renamedAt.has(name)) {\n renamedAt.set(name, current);\n }\n } else if (!modified.has(name)) {\n modified.set(name, current);\n }\n }\n for (const [name, date] of renamedAt) {\n if (!modified.has(name)) {\n modified.set(name, date);\n }\n }\n return { modified, published };\n};\n\n/**\n * `path` with every symlink resolved, the spelling git prints paths in: a\n * project opened through a link (`/tmp/site` on macOS, where `/tmp` links to\n * `/private/tmp`) gets `/private/tmp/site` from `rev-parse --show-toplevel`,\n * so the project's own spelling would compare as outside the repository and\n * every page would go undated. The native realpath also expands a Windows\n * 8.3 short name (`RUNNER~1`), which git does too. A path that doesn't exist\n * stays as written.\n */\nexport const realPath = (path: string): string => {\n try {\n return normalize(realpathSync.native(path));\n } catch {\n return path;\n }\n};\n\n/**\n * The toplevel of the repository containing `root`, or null when git is\n * unavailable or the project isn't a repo. Callers use it to decide which\n * content roots a `git log` pathspec can cover at all — a root outside the\n * repository would fail the log outright and can never yield dates.\n */\nexport const gitRepositoryRoot = (root: string): string | null => {\n try {\n return execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--show-toplevel\"],\n // stderr silenced: outside a repository the probe fails by design.\n { encoding: \"utf-8\", env: gitEnv(), stdio: [\"ignore\", \"pipe\", \"ignore\"] }\n ).trim();\n } catch {\n return null;\n }\n};\n\nconst noDates = (): GitDates => ({ modified: new Map(), published: new Map() });\n\n/**\n * Resolve each source file's git dates (see `parseGitLog`), keyed by absolute\n * source path. Runs a single `git log` over the given content roots (each\n * local source's own root, which may diverge from `content.root`), following\n * renames within them (a file moved in from outside every root dates from the\n * move), and maps repo-root-relative paths back to the given absolute paths\n * (monorepo-safe via `rev-parse --show-toplevel`). Returns empty maps if git\n * is unavailable or the project isn't a repo — the features then simply show\n * no dates.\n */\nexport const gitFileDates = (\n root: string,\n contentRoots: string[],\n sourcePaths: string[],\n repositoryRoot?: string | null\n): GitDates => {\n // Nothing to date, or nowhere bounded to look — either way, don't pay for a\n // git scan. Both guards matter: `git log -- ` with no pathspec logs the\n // entire repository, which is what an all-staged project produces (a staged\n // source contributes no content root, yet its entries can still carry a\n // `sourcePath`).\n if (sourcePaths.length === 0 || contentRoots.length === 0) {\n return noDates();\n }\n // The caller that bounded `contentRoots` already resolved the repo root;\n // reuse it rather than spawning `rev-parse` a second time per scan.\n const gitRoot =\n repositoryRoot === undefined ? gitRepositoryRoot(root) : repositoryRoot;\n if (gitRoot === null) {\n return noDates();\n }\n // Git names paths by their real location, so the pathspecs and the paths\n // read back against the log are compared in that spelling too (see\n // `realPath`).\n const top = realPath(gitRoot);\n try {\n const output = execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\n \"-C\",\n root,\n \"-c\",\n \"core.quotePath=false\",\n \"log\",\n \"--format=%x00%cI\",\n \"--name-status\",\n // Exact renames only: git pairs them by blob id without comparing\n // contents, so following them costs nothing, and a rename with edits\n // dates the file at that commit either way.\n \"-M100%\",\n \"--\",\n ...contentRoots.map(realPath),\n ],\n { encoding: \"utf-8\", env: gitEnv(), maxBuffer: 256 * 1024 * 1024 }\n );\n const byRepoPath = parseGitLog(output);\n const result = noDates();\n for (const sourcePath of sourcePaths) {\n const repoPath = relative(top, realPath(sourcePath));\n for (const key of [\"modified\", \"published\"] as const) {\n const iso = byRepoPath[key].get(repoPath);\n if (iso) {\n result[key].set(sourcePath, iso);\n }\n }\n }\n return result;\n } catch {\n return noDates();\n }\n};\n\n/**\n * Whether the repository containing `root` is a shallow clone. Returns false\n * when git is unavailable or the project isn't a repo — those cases already\n * yield no dates at all, and the shallow warning would only mislead.\n */\nexport const isShallowGitRepository = (root: string): boolean => {\n try {\n return (\n execFileSync(\n // oxlint-disable-next-line sonarjs/no-os-command-from-path -- git is a required dev-tool dependency resolved from PATH\n \"git\",\n [\"-C\", root, \"rev-parse\", \"--is-shallow-repository\"],\n // stderr silenced: outside a repository the probe fails by design.\n {\n encoding: \"utf-8\",\n env: gitEnv(),\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }\n ).trim() === \"true\"\n );\n } catch {\n return false;\n }\n};\n\nconst SHALLOW_CLONE_SUGGESTION =\n \"Fetch full history in CI: set the VERCEL_DEEP_CLONE=true environment variable on Vercel, or fetch-depth: 0 for actions/checkout.\";\n\n/**\n * A warning for git-derived dates silently missing because the build ran in a\n * shallow clone — the default on Vercel and `actions/checkout`, where `git log`\n * only sees the last few commits, so most pages get no date and the sitemap's\n * `<lastmod>` / \"Last updated\" stamps quietly disappear in production while\n * working locally. Empty when every page got a date or the clone isn't\n * shallow.\n */\nexport const lastModifiedShallowWarning = (\n root: string,\n undatedCount: number\n): Diagnostic[] => {\n if (undatedCount === 0 || !isShallowGitRepository(root)) {\n return [];\n }\n return [\n {\n code: \"BLUME_SHALLOW_GIT_HISTORY\",\n message: `lastModified is on, but this build runs in a shallow git clone, so ${undatedCount} page(s) have no git-derived date — their sitemap <lastmod> and \"Last updated\" stamps are omitted.`,\n severity: \"warning\",\n suggestion: SHALLOW_CLONE_SUGGESTION,\n },\n ];\n};\n\n/**\n * The warning for `seo.datePublished: \"git\"` in a shallow clone, where the\n * oldest commit git can see is where the clone was cut, not where each page\n * began. Git then dates no page rather than every page wrongly. Empty when\n * every page has a front matter date.\n */\nexport const datePublishedShallowWarning = (\n undatedCount: number\n): Diagnostic[] =>\n undatedCount === 0\n ? []\n : [\n {\n code: \"BLUME_SHALLOW_GIT_HISTORY\",\n message: `seo.datePublished is \"git\", but this build runs in a shallow git clone, so ${undatedCount} page(s) without a front matter date have no datePublished.`,\n severity: \"warning\",\n suggestion: SHALLOW_CLONE_SUGGESTION,\n },\n ];\n",
|
|
19
19
|
"import { readFile } from \"node:fs/promises\";\n\nimport type { Nodes } from \"mdast\";\nimport { createMdxMdastHandle, dropHandle, mdxToMdast } from \"satteri\";\n\nimport { MDX_BODY_FEATURES } from \"../markdown/features.ts\";\nimport matter from \"./frontmatter.ts\";\nimport { expandIncludes, hasIncludeStatements } from \"./includes.ts\";\nimport type { LineOrigin } from \"./includes.ts\";\nimport { isExpression } from \"./mdx-elements.ts\";\nimport { strippedLineOffset } from \"./sources/normalize.ts\";\nimport type { SourceEntry } from \"./sources/types.ts\";\nimport type { Diagnostic } from \"./types.ts\";\nimport { substituteVariables } from \"./variables.ts\";\nimport type { ContentVariables } from \"./variables.ts\";\n\n/**\n * MDX that doesn't parse, found before Astro compiles it. The parse is\n * Sätteri's, with the feature set the renderer uses, so a body that fails it\n * here fails `astro build` too: Astro compiles every `.mdx` file in the\n * collection, drafts and pages the scan dropped included. Parsing only (no\n * plugins, no render) keeps it cheap enough to run on every page.\n *\n * - `BLUME_MDX_SYNTAX` (error): the page's own text doesn't parse, so the\n * build fails at it.\n * - `BLUME_MDX_SYNTAX` (warning): the page parses, but not once its\n * `<include>`s are spliced in. Reported in the partial. The render splices a\n * partial more leniently than this parse reads it, so the page may still\n * build, with the partial's markup rendered wrong (an HTML comment shown as\n * text, an unclosed `<img>` taking in what follows it).\n *\n * The same reading locates a build failure Astro reports with no line: an\n * `.mdx` page that throws while it renders (a `{…}` expression reading a name\n * nothing defines), or a partial that breaks the including page's compile.\n */\n\n/** Where MDX stopped reading a text, and why. */\nexport interface MdxSyntaxError {\n column: number;\n line: number;\n /** Sätteri's message, without its leading position and trailing rule id. */\n reason: string;\n}\n\n// Sätteri's message: `line:column: reason (source:rule)`.\nconst POSITIONED =\n /^(?<line>\\d+):(?<column>\\d+): (?<reason>[\\s\\S]*?)(?: \\([\\w-]+:[\\w-]+\\))?$/u;\n// A position inside the reason (`… for \\`<img>\\` (2:1)`).\nconst INNER_POSITION = / \\((?<line>\\d+):(?<column>\\d+)\\)/gu;\n\n/**\n * The first MDX syntax error in `text`, a page body with its front matter\n * off, or null when it parses.\n *\n * Only the verdict is needed, so the parse stays native: Sätteri's tree is\n * dropped unread rather than built as JavaScript objects, which costs as much\n * again as the parse itself on every page. A parse error carries its own\n * position, so node positions aren't tracked either.\n */\nexport const mdxSyntaxError = (text: string): MdxSyntaxError | null => {\n try {\n dropHandle(createMdxMdastHandle(text, MDX_BODY_FEATURES, false));\n return null;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const groups = POSITIONED.exec(message)?.groups;\n return {\n column: Number(groups?.column ?? 1),\n line: Number(groups?.line ?? 1),\n reason: groups?.reason ?? message,\n };\n }\n};\n\n/** A position in the file the author wrote. */\ninterface Site {\n column?: number;\n file: string;\n line: number;\n}\n\n/** Maps a line and column of the parsed text to the file it came from. */\ntype SiteOf = (line: number, column?: number) => Site;\n\n/**\n * Where each line of a parsed text came from: the expansion's origins when\n * `<include>`s were spliced, else the page's own file, shifted past its front\n * matter.\n */\nconst sitesIn =\n (file: string, lineOffset: number, origins?: readonly LineOrigin[]): SiteOf =>\n (line, column) => {\n const origin = origins?.[line - 1];\n return origin\n ? { column, file: origin.file, line: origin.line }\n : { column, file, line: line + lineOffset };\n };\n\n/**\n * The reason with each position inside it moved to the file the diagnostic\n * names: a position from another file (a partial's opening tag, read from\n * the page) is dropped rather than shown as a line it isn't.\n */\nconst placedReason = (reason: string, at: Site, siteOf: SiteOf): string =>\n reason.replaceAll(INNER_POSITION, (written, line: string, column: string) => {\n const inner = siteOf(Number(line), Number(column));\n return inner.file === at.file ? ` (${inner.line}:${column})` : \"\";\n });\n\n// What fixes the common failures, by what the reason says.\nconst EXPRESSION_REASON = /could not parse expression/iu;\nconst COMMENT_REASON = /to create a comment in MDX/u;\nconst LINK_REASON = /to create a link in MDX/u;\n\n/** How to fix a syntax error, read from its reason. */\nconst syntaxSuggestion = (reason: string): string => {\n if (EXPRESSION_REASON.test(reason)) {\n return \"In .mdx, `{` starts a JavaScript expression. To show a brace as text, escape it (`\\\\{`) or put the text in inline code.\";\n }\n if (COMMENT_REASON.test(reason)) {\n return \"Write the comment as `{/* … */}`.\";\n }\n if (LINK_REASON.test(reason)) {\n return \"Write the link as `[text](https://…)`.\";\n }\n return \"MDX reads HTML as JSX: close every element (`<br />`, `<img … />`) and match each closing tag. A page that needs no components can be a .md file instead.\";\n};\n\n/**\n * The `BLUME_MDX_SYNTAX` diagnostic for `error`, read from a text whose lines\n * `siteOf` places.\n */\nexport const mdxSyntaxDiagnostic = (\n error: MdxSyntaxError,\n siteOf: SiteOf,\n options: { includedIn?: string; severity: Diagnostic[\"severity\"] }\n): Diagnostic => {\n const at = siteOf(error.line, error.column);\n const reason = placedReason(error.reason, at, siteOf);\n return {\n code: \"BLUME_MDX_SYNTAX\",\n column: at.column,\n file: at.file,\n line: at.line,\n message: options.includedIn\n ? `MDX can't parse this file once ${options.includedIn} includes it: ${reason}.`\n : `MDX can't parse this page: ${reason}.`,\n severity: options.severity,\n suggestion: syntaxSuggestion(reason),\n };\n};\n\n/** What the scan learned from parsing an `.mdx` entry. */\nexport interface MdxSyntaxCheck {\n diagnostics: Diagnostic[];\n /** Whether the page's own text fails to parse, so its build would fail. */\n unparsable: boolean;\n}\n\n/**\n * Parse an `.mdx` entry's body, and its include-expanded text when it has\n * one (see the module comment). The body is read as the build reads it: with\n * the site's variables substituted, which the scan has already done when\n * there was no expansion to do it in.\n */\nexport const mdxSyntaxCheck = (\n entry: SourceEntry,\n sourceName: string,\n variables?: ContentVariables\n): MdxSyntaxCheck => {\n if (entry.body.format !== \"mdx\") {\n return { diagnostics: [], unparsable: false };\n }\n // Where the parsed text's lines sit in the files, worked out only for a\n // page that fails: counting the lines of its front matter means splitting\n // its whole file, which every page that parses would pay for.\n const siteOf = (origins?: readonly LineOrigin[]): SiteOf =>\n sitesIn(\n entry.sourcePath ?? `${sourceName}:${entry.ref}`,\n entry.bodyLineOffset ?? strippedLineOffset(entry.raw, entry.body.text),\n origins\n );\n const { expanded } = entry;\n const body = expanded\n ? substituteVariables(entry.body.text, variables)\n : entry.body.text;\n const own = mdxSyntaxError(body);\n if (own) {\n return {\n diagnostics: [mdxSyntaxDiagnostic(own, siteOf(), { severity: \"error\" })],\n unparsable: true,\n };\n }\n const spliced = expanded ? mdxSyntaxError(expanded.text) : null;\n if (!(expanded && spliced)) {\n return { diagnostics: [], unparsable: false };\n }\n return {\n diagnostics: [\n mdxSyntaxDiagnostic(spliced, siteOf(expanded.origins), {\n includedIn: entry.ref,\n severity: \"warning\",\n }),\n ],\n unparsable: false,\n };\n};\n\n/** A page as the build failure locator reads it. */\nexport interface FailedPage {\n /** The owning source's content root, which bounds its includes. */\n contentRoot?: string;\n /** How a message names the page: its path from the project root. */\n name: string;\n sourcePath: string;\n variables?: ContentVariables;\n}\n\n/** A page's text as the build compiled it, and where its lines came from. */\ninterface CompiledText {\n siteOf: SiteOf;\n text: string;\n /** The same text before variables were substituted, line for line. */\n written: string;\n}\n\n/**\n * Read a page the way the build compiled it: front matter off, includes\n * spliced, variables substituted.\n */\nconst compiledText = async (page: FailedPage): Promise<CompiledText> => {\n const raw = await readFile(page.sourcePath, \"utf-8\");\n const body = matter(raw).content;\n const offset = strippedLineOffset(raw, body);\n const expansion =\n page.contentRoot && hasIncludeStatements(body)\n ? await expandIncludes(body, {\n contentRoot: page.contentRoot,\n lineOffset: offset,\n sourcePath: page.sourcePath,\n })\n : null;\n const written = expansion?.text ?? body;\n return {\n siteOf: sitesIn(page.sourcePath, offset, expansion?.origins),\n text: substituteVariables(written, page.variables),\n written,\n };\n};\n\n/**\n * Whether an expression's source reads `name` as a variable: as a word of its\n * own, not a property (`user.name` reads `user`), though a spread\n * (`...rest`) reads what it spreads.\n */\nconst readsName = (expression: string, name: string): boolean =>\n new RegExp(\n String.raw`(?<![\\w$.])${name.replaceAll(\"$\", String.raw`\\$`)}(?![\\w$])`,\n \"u\"\n ).test(expression.replaceAll(\"...\", \" \"));\n\n/** The expressions a node holds: its own, or its JSX attributes'. */\nconst expressionsOf = (node: Nodes): string[] => {\n if (node.type === \"mdxFlowExpression\" || node.type === \"mdxTextExpression\") {\n return [node.value];\n }\n if (node.type === \"mdxJsxFlowElement\" || node.type === \"mdxJsxTextElement\") {\n return node.attributes.flatMap((attribute) => {\n if (attribute.type === \"mdxJsxExpressionAttribute\") {\n return [attribute.value];\n }\n return isExpression(attribute.value) ? [attribute.value.value] : [];\n });\n }\n return [];\n};\n\n/** A `{…}` expression, and the node that holds it. */\ninterface FoundExpression {\n expression: string;\n /** The expression's own node, or the element whose attribute holds it. */\n node: Nodes;\n}\n\n/** The first `{…}` expression in `text` that reads `name`. */\nconst expressionReading = (\n text: string,\n name: string\n): FoundExpression | null => {\n let tree: Nodes;\n try {\n tree = mdxToMdast(text, { features: MDX_BODY_FEATURES });\n } catch {\n return null;\n }\n const visit = (node: Nodes): FoundExpression | null => {\n const expression = expressionsOf(node).find((source) =>\n readsName(source, name)\n );\n if (expression !== undefined) {\n return { expression: `{${expression.trim()}}`, node };\n }\n if (\"children\" in node) {\n for (const child of node.children) {\n const found = visit(child);\n if (found) {\n return found;\n }\n }\n }\n return null;\n };\n return visit(tree);\n};\n\n/** What a build failure in an `.mdx` page said about itself. */\nexport type MdxFailure =\n | { kind: \"syntax\" }\n | { kind: \"undefined-name\"; name: string };\n\n/** Where a build failure happened in the files the author wrote. */\nexport interface MdxFailureSite extends Site {\n /** For a syntax failure, the parse's own diagnostic. */\n diagnostic?: Diagnostic;\n /** For an undefined name, the expression that reads it, braces included. */\n expression?: string;\n}\n\n/**\n * Locate a build failure Astro reported against an `.mdx` page with no line:\n * the expression that reads an undefined name, or the syntax error that\n * stopped the compile (which, when the page's own text parsed, sits in a\n * partial it includes). Null when the page can't be read or the cause can't\n * be found in it.\n */\nexport const locateMdxFailure = async (\n page: FailedPage,\n failure: MdxFailure\n): Promise<MdxFailureSite | null> => {\n let compiled: CompiledText;\n try {\n compiled = await compiledText(page);\n } catch {\n return null;\n }\n const { siteOf, text, written } = compiled;\n if (failure.kind === \"undefined-name\") {\n const found = expressionReading(text, failure.name);\n const start = found?.node.position?.start;\n if (!(found && start)) {\n return null;\n }\n // A substituted variable earlier on the line moves the column, so it's\n // read from the line as written when the expression is there.\n const at =\n written.split(\"\\n\")[start.line - 1]?.indexOf(found.expression) ?? -1;\n return {\n ...siteOf(start.line, at === -1 ? start.column : at + 1),\n expression: found.expression,\n };\n }\n const error = mdxSyntaxError(text);\n if (!error) {\n return null;\n }\n const diagnostic = mdxSyntaxDiagnostic(error, siteOf, {\n includedIn:\n siteOf(error.line).file === page.sourcePath ? undefined : page.name,\n severity: \"error\",\n });\n return {\n column: diagnostic.column,\n diagnostic,\n file: diagnostic.file ?? page.sourcePath,\n line: diagnostic.line ?? 1,\n };\n};\n",
|
|
20
20
|
"import { readFile } from \"node:fs/promises\";\n\nimport { closestMatch } from \"./closest-match.ts\";\nimport { locatePath } from \"./diagnostics.ts\";\nimport type { DiscoveredFolderMeta, UnreadFolderMeta } from \"./meta.ts\";\nimport { folderChildKeys, pageKey } from \"./navigation.ts\";\nimport type { Diagnostic, PageRecord } from \"./types.ts\";\n\n/**\n * Folder-meta diagnostics that need the project's pages: a `pages` entry that\n * names no child of its folder, and a `meta.ts` Blume found but doesn't read\n * although its folder is a sidebar group. Both would otherwise do nothing\n * without a word.\n */\n\n/**\n * The group path a folder-meta key configures: the key without the version\n * and locale directories `discoverFolderMeta` hoists in front of it, since\n * pages' nav paths carry neither.\n */\nconst groupPathOf = (\n key: string,\n versionDirs: ReadonlySet<string>,\n localeDirs: ReadonlySet<string>\n): string => {\n const parts = key.split(\"/\");\n if (versionDirs.has(parts[0] ?? \"\")) {\n parts.shift();\n }\n if (localeDirs.has(parts[0] ?? \"\")) {\n parts.shift();\n }\n return parts.join(\"/\");\n};\n\n/**\n * The child a mistyped entry most likely means: the entry spelled as a file\n * name (`01-quickstart.mdx` for `quickstart`), or a near miss.\n */\nconst likelyChild = (\n entry: string,\n children: ReadonlySet<string>\n): string | undefined => {\n const key = pageKey(entry);\n return key !== entry && children.has(key)\n ? key\n : closestMatch(entry, [...children]);\n};\n\nconst SLUG_HINT =\n \"List each child by its slug: the file or folder name without its extension, numeric prefix, or parentheses.\";\n\n/** Warn about each `pages` entry that names no child of the meta's folder. */\nconst unknownPageDiagnostics = async (\n file: string,\n pages: readonly string[],\n group: string,\n children: ReadonlySet<string>\n): Promise<Diagnostic[]> => {\n const unknown = pages.flatMap((entry, index) =>\n children.has(entry) ? [] : [{ entry, index }]\n );\n if (unknown.length === 0) {\n return [];\n }\n const source = await readFile(file, \"utf-8\");\n const where = group ? `\"${group}\"` : \"the content root\";\n return unknown.map(({ entry, index }) => {\n const position = locatePath(source, [\"pages\", index]);\n const match = likelyChild(entry, children);\n return {\n code: \"BLUME_META_UNKNOWN_PAGE\",\n column: position?.column,\n file,\n line: position?.line,\n message: `pages lists \"${entry}\", but no page or folder in ${where} has that slug, so the entry orders nothing.`,\n severity: \"warning\",\n suggestion: match ? `Did you mean \"${match}\"? ${SLUG_HINT}` : SLUG_HINT,\n } satisfies Diagnostic;\n });\n};\n\n/** Warn about a meta file outside every `include` glob whose folder has pages. */\nconst unreadDiagnostic = (\n { dir, file }: UnreadFolderMeta,\n group: string\n): Diagnostic => ({\n code: \"BLUME_META_OUTSIDE_INCLUDE\",\n file,\n message: `This meta file is in the \"${group}\" sidebar group's folder, but no include glob of its content source reaches that folder, so Blume doesn't read it.`,\n severity: \"warning\",\n suggestion: `Add an include glob that reaches the folder, such as \"${dir}/**/*.{md,mdx}\".`,\n});\n\n/** Folder-meta diagnostics against every page the sources produced. */\nexport const folderMetaDiagnostics = async (\n discovered: DiscoveredFolderMeta,\n pages: readonly PageRecord[],\n options: {\n localeDirs?: readonly string[];\n versionDirs?: readonly string[];\n } = {}\n): Promise<Diagnostic[]> => {\n const children = folderChildKeys(pages.map((page) => page.navPath));\n const versionDirs = new Set(options.versionDirs);\n const localeDirs = new Set(options.localeDirs);\n const groupOf = (key: string): string =>\n groupPathOf(key, versionDirs, localeDirs);\n\n const listed = await Promise.all(\n [...discovered.meta, ...discovered.shared].flatMap(([key, meta]) => {\n const file = discovered.files.get(meta);\n const group = groupOf(key);\n return file && meta.pages\n ? [\n unknownPageDiagnostics(\n file,\n meta.pages,\n group,\n children.get(group) ?? new Set()\n ),\n ]\n : [];\n })\n );\n // A meta file outside the include globs is only worth a word when its\n // folder is a sidebar group some page lives in, like a reference's tag\n // folder; elsewhere it's likely application code that shares the name.\n const unread = discovered.unread.flatMap((entry) => {\n const group = groupOf(entry.key);\n return children.has(group) ? [unreadDiagnostic(entry, group)] : [];\n });\n return [...listed.flat(), ...unread];\n};\n",
|
|
21
21
|
"import { basename, dirname, relative } from \"pathe\";\nimport { glob, isDynamicPattern } from \"tinyglobby\";\n\nimport { diagnosticsFromZod } from \"./diagnostics.ts\";\nimport { createModuleLoader } from \"./load-module.ts\";\nimport { folderMetaSchema } from \"./schema.ts\";\nimport type { FolderMeta } from \"./schema.ts\";\nimport { trimChar } from \"./trim.ts\";\nimport type { Diagnostic } from \"./types.ts\";\n\nconst META_FILES = [\n \"**/meta.ts\",\n \"**/meta.js\",\n \"**/meta.mjs\",\n // Shared, locale-agnostic folder meta (applies to every locale).\n \"**/meta.$.ts\",\n \"**/meta.$.js\",\n \"**/meta.$.mjs\",\n];\n\n/**\n * A meta module's default export before validation: `folderMetaSchema` parses\n * it only after any factory is resolved, so it carries the loader's raw type.\n */\ntype MetaModuleExport = Awaited<\n ReturnType<ReturnType<typeof createModuleLoader>>\n>;\n\n/** A factory-style meta module default-exports a function returning the meta. */\nconst isMetaFactory = (\n mod: MetaModuleExport\n): mod is () => MetaModuleExport | Promise<MetaModuleExport> =>\n typeof mod === \"function\";\n\n/** Resolve a meta module's default export, calling it if it is a factory. */\nconst resolveMeta = async (mod: MetaModuleExport) =>\n isMetaFactory(mod) ? await mod() : mod;\n\n/** A filesystem content source to scan for folder meta: its on-disk root and\n * optional route prefix. The prefix is folded into every key so meta lines up\n * with the sidebar group path, which carries the same prefix. `include` and\n * `exclude` are the source's content globs, which scope the scan to the\n * folders the source reads. */\nexport interface FolderMetaSource {\n root: string;\n prefix?: string;\n include?: readonly string[];\n exclude?: readonly string[];\n}\n\n/**\n * The literal directory a glob starts from (`docs/**\\/*.md` → `docs`, `\"\"`\n * when it matches from the root): its leading segments up to the first one\n * with glob syntax, the file-name segment excluded.\n */\nconst globBase = (pattern: string): string => {\n const literal: string[] = [];\n for (const segment of pattern.split(\"/\").slice(0, -1)) {\n if (isDynamicPattern(segment)) {\n break;\n }\n if (segment !== \"\" && segment !== \".\") {\n literal.push(segment);\n }\n }\n return literal.join(\"/\");\n};\n\n/** Whether `dir` is `base`, or nested beneath or above it (`\"\"` is the root). */\nconst onPathOf = (dir: string, base: string): boolean =>\n dir === base ||\n base === \"\" ||\n dir === \"\" ||\n dir.startsWith(`${base}/`) ||\n base.startsWith(`${dir}/`);\n\n/**\n * Whether a meta file's directory can configure a sidebar group of the\n * source: it lies on the path of some `include` glob's base — the folders\n * that glob reads, or the ancestors whose groups hold them. Negated globs\n * only narrow what a source reads, so they never qualify a folder.\n */\nconst withinInclude = (\n dir: string,\n include: readonly string[] | undefined\n): boolean =>\n include === undefined ||\n include.some(\n (pattern) => !pattern.startsWith(\"!\") && onPathOf(dir, globBase(pattern))\n );\n\n/**\n * Every folder-meta file under a filesystem source's root: `patterns` (every\n * meta module name, shared `meta.$.*` included, by default), minus the\n * source's `exclude` globs, dependencies, and build output — whether or not\n * its `include` globs reach the file's folder.\n */\nconst globFolderMetaFiles = (\n source: FolderMetaSource,\n patterns: readonly string[]\n): Promise<string[]> =>\n glob([...patterns], {\n absolute: true,\n cwd: source.root,\n // Never descend into dependencies or build output — relevant when the\n // root is the project root (e.g. a `.`-rooted or all-staged project).\n // The source's own `exclude` applies too: a `meta.ts` under an excluded\n // folder (`src/lib/meta.ts` beside `exclude: [\"src/**\"]`) is application\n // code, not folder meta, and importing it would fail.\n ignore: [\n ...(source.exclude ?? []),\n \"**/node_modules/**\",\n \"**/.blume/**\",\n \"**/dist/**\",\n ],\n onlyFiles: true,\n });\n\n/** Whether the source's `include` globs reach a meta file's folder. */\nconst isReadMetaFile = (source: FolderMetaSource, file: string): boolean =>\n withinInclude(relative(source.root, dirname(file)), source.include);\n\n/**\n * The folder-meta files a filesystem source contributes: `patterns` (every\n * meta module name, shared `meta.$.*` included, by default) under the source's\n * root, minus its `exclude` globs, dependencies, and build output, and only in\n * folders its `include` globs reach. `blume translate` finds the meta files it\n * translates through this too, so it covers exactly the ones the scan reads.\n */\nexport const findFolderMetaFiles = async (\n source: FolderMetaSource,\n patterns: readonly string[] = META_FILES\n): Promise<string[]> => {\n const found = await globFolderMetaFiles(source, patterns);\n return found.filter((file) => isReadMetaFile(source, file));\n};\n\n/**\n * The folder-meta key for a directory. Mirrors the sidebar group path: the\n * source's route prefix (`docs`) followed by the directory relative to the\n * source root (`provider`) — so `docs/provider/meta.ts` under a `prefix: \"docs\"`\n * source keys to `docs/provider`, exactly the group path navigation builds.\n */\nconst metaKeyFor = (prefix: string | undefined, dir: string): string => {\n const clean = prefix ? trimChar(prefix, \"/\") : \"\";\n if (!clean) {\n return dir;\n }\n return dir ? `${clean}/${dir}` : clean;\n};\n\n/** Folder meta by key: per-locale `meta.*` files, and shared `meta.$.*` ones. */\nexport interface FolderMetaMaps {\n meta: Map<string, FolderMeta>;\n shared: Map<string, FolderMeta>;\n}\n\n/** A folder-meta file Blume found but doesn't read, and the key it would have. */\nexport interface UnreadFolderMeta {\n /** Its folder, relative to the source root. */\n dir: string;\n file: string;\n key: string;\n}\n\n/** What {@link discoverFolderMeta} found across the sources. */\nexport interface DiscoveredFolderMeta extends FolderMetaMaps {\n diagnostics: Diagnostic[];\n /** The file each meta in `meta` and `shared` was read from. */\n files: Map<FolderMeta, string>;\n /** Meta files under a source root that no source's `include` globs reach. */\n unread: UnreadFolderMeta[];\n}\n\n/**\n * Discover `meta.{ts,js,mjs}` files across the given filesystem sources. Keys are\n * the source's route prefix joined with the directory relative to that source's\n * root (`\"\"`/the prefix itself for a source's root directory), so meta matches\n * the prefixed sidebar group path. A bare string is shorthand for a single,\n * unprefixed source (the default project layout). `meta.$.*` files are returned\n * in `shared` — folder meta that applies to that directory in every locale (a\n * locale-specific `meta.*` overrides it). Each file default-exports an object or\n * a (sync/async) function returning one.\n *\n * `localeDirs` names the top-level locale directories of a `dir`-parser i18n\n * project. Navigation looks locale meta up as `locale/<group path>` where the\n * group path starts with the source prefix, so a locale directory found at a\n * source root is hoisted in front of the prefix (`docs/fr/guides/meta.ts` keys\n * to `fr/docs/guides`, not `docs/fr/guides`).\n *\n * `versionDirs` names the archived-version snapshot directories, which sit\n * outermost on disk — a locale directory inside a snapshot is one level deeper.\n * Both are hoisted, version first (`v1.0/fr/guides/meta.ts` keys to\n * `v1.0/fr/<prefix>/guides`), matching navigation's version-aware meta prefix.\n */\nexport const discoverFolderMeta = async (\n sources: string | FolderMetaSource[],\n options: {\n localeDirs?: readonly string[];\n versionDirs?: readonly string[];\n } = {}\n): Promise<DiscoveredFolderMeta> => {\n const list: FolderMetaSource[] = Array.isArray(sources)\n ? sources\n : [{ root: sources }];\n // Locale folders match case-insensitively, like content does (`pt-br/` for\n // a configured `pt-BR`), and key under the configured casing, which is what\n // navigation looks meta up by.\n const localeDirs = new Map(\n (options.localeDirs ?? []).map((code) => [code.toLowerCase(), code])\n );\n const versionDirs = new Set(options.versionDirs);\n\n const load = createModuleLoader();\n const meta = new Map<string, FolderMeta>();\n const shared = new Map<string, FolderMeta>();\n const files = new Map<FolderMeta, string>();\n const unread: UnreadFolderMeta[] = [];\n const diagnostics: Diagnostic[] = [];\n\n // A version snapshot dir is outermost, with a locale dir one level deeper;\n // both are hoisted in front of the (prefixed) group path, in that order —\n // the lookup key reads `version/locale/prefix/dir`.\n const keyOf = (source: FolderMetaSource, file: string): string => {\n const dir = relative(source.root, dirname(file));\n const [head, ...tail] = dir.split(\"/\");\n const version = head && versionDirs.has(head) ? head : \"\";\n const afterVersion = version ? tail : [head ?? \"\", ...tail];\n const [localeHead, ...localeTail] = afterVersion;\n const locale = localeHead\n ? (localeDirs.get(localeHead.toLowerCase()) ?? \"\")\n : \"\";\n const rest = (locale ? localeTail : afterVersion).filter(Boolean).join(\"/\");\n return [version, locale, metaKeyFor(source.prefix, rest)]\n .filter(Boolean)\n .join(\"/\");\n };\n\n // Scan every source under its own root so a source rooted outside\n // `content.root` still contributes its folder meta.\n const perSource = await Promise.all(\n list.map(async (source) => {\n const found = await globFolderMetaFiles(source, META_FILES);\n // Files outside every `include` glob are never imported; they're kept\n // by key so a scan that finds pages in their group can say so.\n for (const file of found) {\n if (!isReadMetaFile(source, file)) {\n unread.push({\n dir: relative(source.root, dirname(file)),\n file,\n key: keyOf(source, file),\n });\n }\n }\n const loaded = await Promise.all(\n found\n .filter((file) => isReadMetaFile(source, file))\n .map(\n async (\n file\n ): Promise<\n | { ok: true; file: string; value: unknown }\n | { ok: false; file: string; error: Error }\n > => {\n try {\n return {\n file,\n ok: true,\n value: await resolveMeta(await load(file)),\n };\n } catch (error) {\n // SAFETY: jiti surfaces load/evaluate failures as Error\n // instances, and only `message` is read downstream.\n return { error: error as Error, file, ok: false };\n }\n }\n )\n );\n return { loaded, source };\n })\n );\n\n for (const { loaded, source } of perSource) {\n for (const entry of loaded) {\n const key = keyOf(source, entry.file);\n\n if (!entry.ok) {\n diagnostics.push({\n code: \"BLUME_META_LOAD_FAILED\",\n file: entry.file,\n message: `Could not load meta file: ${entry.error.message}`,\n severity: \"error\",\n });\n continue;\n }\n\n const result = folderMetaSchema.safeParse(entry.value);\n if (result.success) {\n const target = basename(entry.file).startsWith(\"meta.$.\")\n ? shared\n : meta;\n target.set(key, result.data);\n files.set(result.data, entry.file);\n } else {\n diagnostics.push(\n ...diagnosticsFromZod(result.error, {\n code: \"BLUME_META_INVALID\",\n file: entry.file,\n })\n );\n }\n }\n }\n\n // Sources sharing a root partition it with `include` globs, so a file one\n // source skips may be another's: only a file no source reads is unread.\n const read = new Set(\n perSource.flatMap(({ loaded }) => loaded.map((entry) => entry.file))\n );\n return {\n diagnostics,\n files,\n meta,\n shared,\n unread: unread.filter((entry) => !read.has(entry.file)),\n };\n};\n\n/**\n * Lay the folder meta content sources derive (the OpenAPI source's tag\n * titles and order) beneath the user's `meta.ts` and `meta.$.ts` files, field\n * by field: a user file's own keys win, and the generated ones fill the rest,\n * so a `meta.ts` that only renames a tag group keeps its generated `order`.\n * Generated meta is locale-agnostic, keyed like `meta.$.*`, so it also sits\n * beneath a locale's own `meta.ts` (`fr/reference/pets` over\n * `reference/pets`). It doesn't reach into an archived version's snapshot,\n * whose groups read only meta keyed under the version.\n */\nexport const withGeneratedFolderMeta = (\n user: FolderMetaMaps,\n generated: Map<string, FolderMeta>,\n localeDirs: readonly string[] = []\n): FolderMetaMaps => {\n const locales = new Set(localeDirs);\n const beneath = (key: string, meta: FolderMeta): FolderMeta => {\n const [head, ...rest] = key.split(\"/\");\n const generatedMeta = generated.get(\n head !== undefined && locales.has(head) ? rest.join(\"/\") : key\n );\n return generatedMeta ? { ...generatedMeta, ...meta } : meta;\n };\n return {\n meta: new Map(\n [...user.meta].map(([key, meta]) => [key, beneath(key, meta)])\n ),\n shared: new Map([\n ...generated,\n ...[...user.shared].map(([key, meta]): [string, FolderMeta] => [\n key,\n { ...generated.get(key), ...meta },\n ]),\n ]),\n };\n};\n",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"import { readFile } from \"node:fs/promises\";\n\nimport { imageMetadata } from \"astro/assets/utils\";\nimport { dirname, extname } from \"pathe\";\n\nimport { contentAssetParam, contentAssetUrl } from \"./content-assets.ts\";\nimport { resolveRelativeImage } from \"./relative-files.ts\";\nimport type { Diagnostic, PageRecord } from \"./types.ts\";\n\n/**\n * Colocated SVGs Astro's image pipeline can't measure. Astro reads an image's\n * size before it optimizes it, and for an SVG it looks for the `<svg>` tag in\n * the file's first 1,000 bytes only, then needs a width and height or a\n * viewBox on that tag. A draw.io export carries its whole diagram in a\n * `content` attribute on the tag, which pushes the tag's end past that\n * window, so one diagram fails the build (`NoImageMetadata`). Blume serves\n * such an SVG as it is instead, from the endpoint that already serves content\n * images to agents (`/blume-assets/content/…`), and warns about it\n * (`BLUME_SVG_UNOPTIMIZED`). A browser draws an SVG at any size, so the\n * only loss is the intrinsic `width`/`height` the optimized `<img>` carries.\n */\n\n/** Whether the file at `path` is an SVG Astro can't read the size of. */\nexport const isUnmeasurableSvg = async (path: string): Promise<boolean> => {\n if (extname(path).toLowerCase() !== \".svg\") {\n return false;\n }\n let data: Buffer;\n try {\n data = await readFile(path);\n } catch {\n return false;\n }\n try {\n await imageMetadata(data, path);\n return false;\n } catch {\n return true;\n }\n};\n\n/**\n * The URL an unmeasurable SVG is served at, unbased (the base links plugin\n * mounts `deployment.base`), or null when `target` isn't a colocated image\n * Astro can measure no size for.\n */\nexport const unmeasurableSvgUrl = async (\n sourceDir: string,\n target: string,\n projectRoot: string\n): Promise<string | null> => {\n const abs = resolveRelativeImage(sourceDir, target);\n if (!(abs && (await isUnmeasurableSvg(abs)))) {\n return null;\n }\n return contentAssetUrl(contentAssetParam(projectRoot, abs));\n};\n\n/**\n * A warning for each image embed of a colocated SVG Astro can't measure, at\n * the line that embeds it (in a partial, when an `<include>` brought it in).\n */\nexport const unmeasurableSvgDiagnostics = async (\n pages: readonly PageRecord[]\n): Promise<Diagnostic[]> => {\n const seen = new Set<string>();\n const embeds = pages.flatMap((page) => {\n const { sourcePath } = page;\n if (!sourcePath) {\n return [];\n }\n return page.links.flatMap((link) => {\n const file = link.file ?? sourcePath;\n const key = `${file}:${link.line}:${link.column}`;\n if (!link.image || seen.has(key)) {\n return [];\n }\n seen.add(key);\n const abs = resolveRelativeImage(dirname(sourcePath), link.target);\n return abs ? [{ abs, file, link }] : [];\n });\n });\n const found = await Promise.all(\n embeds.map(async (embed) =>\n (await isUnmeasurableSvg(embed.abs)) ? [embed] : []\n )\n );\n return found.flat().map(({ file, link }) => ({\n code: \"BLUME_SVG_UNOPTIMIZED\",\n column: link.column,\n file,\n line: link.line,\n message: `\\`${link.target}\\` is served as it is, not optimized: Astro can't read its size, which takes the whole \\`<svg>\\` tag within the file's first 1,000 bytes, with a width and height or a viewBox.`,\n severity: \"warning\",\n suggestion:\n \"The image still shows. To have it optimized, put the `<svg>` tag's width and height (or viewBox) near the start of the file. In a draw.io export, the `content` attribute pushes them out: export without a copy of the diagram, or remove that attribute.\",\n }));\n};\n",
|
|
39
39
|
"import { slug } from \"github-slugger\";\nimport type { Nodes } from \"mdast\";\nimport { markdownToMdast } from \"satteri\";\n\nimport { MARKDOWN_BODY_FEATURES } from \"../markdown/features.ts\";\nimport { nextFenceState } from \"./code-fences.ts\";\nimport type { FenceState } from \"./code-fences.ts\";\nimport {\n ATTRIBUTE,\n HTML_COMMENT,\n INLINE_CODE,\n strippedLineOffset,\n trailingCurlyMarker,\n} from \"./sources/normalize.ts\";\nimport type { SourceEntry } from \"./sources/types.ts\";\nimport type { Diagnostic, PageRecord } from \"./types.ts\";\n\n/**\n * Syntax from other docs tools that Blume doesn't read, found in a page body\n * outside code and comments. Each one either ships as literal text on a green\n * build or, in `.mdx`, breaks the page only once it renders, so it's reported\n * at its line instead:\n *\n * - `BLUME_TEMPLATE_TAG`: a Liquid or Markdoc tag (`{% include x %}`) or a\n * Liquid output (`{{ site.title }}`) in `.md`. A `{{name}}` that could be a\n * Blume variable is left to the variables pass.\n * - `BLUME_WIKILINK_UNSUPPORTED`: a wiki link (`[[Page]]`, `[[Text|Page]]`)\n * to one of the site's pages, or any with a `|`. A bare `[[Name]]` that\n * names no page is left alone: JavaScript docs write the spec's internal\n * slots that way (`[[Prototype]]`). The Obsidian source rewrites its own\n * links before this sees them.\n * - `BLUME_MDC_SYNTAX`: a Nuxt Content (MDC) block (`::callout` … `::`) or\n * inline component (`:badge[New]{color=\"primary\"}`).\n * - `BLUME_MDX_ATTRIBUTE_LIST`: an attribute list (`{ width=\"300\" }`,\n * `{ .class }`) in `.mdx`, which MDX reads as JavaScript.\n * - `BLUME_MD_ATTRIBUTE_LIST`: an attribute list in `.md`, kramdown's IAL\n * (`{: .note }`) or MkDocs' `attr_list`, which shows as written. A heading's\n * `{#id}` marker is left to `BLUME_MD_CURLY_ANCHOR`.\n * - `BLUME_MDX_UNCLOSED_ELEMENT`: a void element written as HTML (`<img …>`)\n * in `.mdx`, which MDX reads as an unclosed JSX element.\n */\n\n/** A problem at a line of the scanned text, before it's placed in a file. */\ninterface Finding {\n code: string;\n column: number;\n line: number;\n message: string;\n suggestion: string;\n}\n\n/** A match's position in the scanned text. */\ninterface Site {\n column: number;\n line: number;\n}\n\n/** The route of the page a wiki link names, if one does. */\ntype PageRoute = (name: string) => string | undefined;\n\n/** What a check reads: the masked body, where its lines start, and the site's pages. */\ninterface Scan {\n pageRoute: PageRoute;\n starts: number[];\n text: string;\n}\n\n/** The site's pages by the names a wiki link can call them (see {@link wikiKey}). */\nexport type PageNameIndex = ReadonlyMap<string, readonly PageRecord[]>;\n\n/** A backslash escapes the character after it, so only an even run is text. */\nconst UNESCAPED = String.raw`(?<=(?:^|[^\\\\])(?:\\\\\\\\)*)`;\n\n// Liquid and Markdoc tags, and Liquid output, on one line.\nconst TEMPLATE_TAG = new RegExp(String.raw`${UNESCAPED}\\{%[^\\n]*?%\\}`, \"gu\");\nconst TEMPLATE_OUTPUT = new RegExp(\n String.raw`${UNESCAPED}\\{\\{(?<expression>[^\\n{}]*)\\}\\}`,\n \"gu\"\n);\n// What a Blume variable reference holds (see `variables.ts`).\nconst VARIABLE_REFERENCE = /^\\s*[\\w-]+\\s*$/u;\n\n// `[[Page]]` or `[[Text|Page]]`. An embed (`![[x]]`) and a link whose label\n// is in brackets (`[[x]](/url)`, `[[x]][ref]`) aren't wiki links.\nconst WIKILINK = /(?<![!\\\\[])\\[\\[(?<inner>[^[\\]\\n]+)\\]\\](?![([:])/gu;\n\n// An MDC block component opener on its own line: two colons, a name, and an\n// optional `[slot]` and `{props}`. Three colons is a `:::` container.\nconst MDC_BLOCK =\n /^[\\t ]*(?<written>::(?<name>[a-z][\\w-]*)(?:\\[[^\\]\\n]*\\])?(?:\\{[^}\\n]*\\})?)[\\t ]*$/gimu;\n// An inline MDC component: a colon and a name, then a `[slot]`, `{props}`,\n// or both. A word character before the colon (`og:image`, `16:9`) is prose.\n// Two colons is a block opener that shares its line with text, which no\n// parser reads as a block.\nconst MDC_INLINE =\n /(?<![\\w:\\\\])(?<written>:{1,2}(?<name>[a-z][\\w-]*)(?:\\[[^\\]\\n]*\\](?:\\{[^}\\n]*\\})?|\\{[^}\\n]*\\}))/giu;\n\n// A brace-wrapped attribute list (`{ width=\"300\" }`, kramdown's `{: .note }`).\n// After `=` it's a JSX attribute's value (`style={…}`).\nconst ATTRIBUTE_LIST = new RegExp(\n String.raw`(?<![=\\\\])\\{:?[\\t ]*${ATTRIBUTE}(?:[\\t ]+${ATTRIBUTE})*[\\t ]*\\}`,\n \"gu\"\n);\n// A directive's `{attributes}` (`:::note{title=\"x\"}`, `::name{a=\"b\"}`), which\n// the directive parser reads before MDX can.\nconst DIRECTIVE_ATTRIBUTES = /:+[a-z][\\w-]*(?:\\[[^\\]\\n]*\\])?\\{[^}\\n]*\\}/giu;\nconst ATX_HEADING = /^ {0,3}#{1,6}[\\t ]/u;\nconst SETEXT_UNDERLINE = /^ {0,3}(?:=+|-+)[\\t ]*$/u;\n\n// An HTML void element not closed with `/>`. Attribute values may hold `/`\n// and `>`, so quoted ones are skipped whole.\nconst VOID_ELEMENT = new RegExp(\n String.raw`${UNESCAPED}<(?<tag>area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=[\\s/>])(?:[^<>\"'/]|\"[^\"]*\"|'[^']*'|\\/(?!>))*>`,\n \"gu\"\n);\n\n// The cheap tests that gate the scans both formats share.\nconst SUSPECT_WIKILINK = /\\[\\[/u;\nconst SUSPECT_MDC = /(?:^|[^\\w:]):{1,2}[a-z][\\w-]*[[{]|^[\\t ]*::[a-z]/imu;\n\n// An MDX comment, `{/* … */}`, which renders nothing.\nconst MDX_COMMENT = /\\{\\s*\\/\\*[\\s\\S]*?\\*\\/\\s*\\}/gu;\n\n// A link or image destination in angle brackets, after `](` or a reference\n// definition's `]:` (``, `[ref]: <br/x.png>`). Both\n// formats read it as a URL, never as HTML, though it can open with a tag name.\nconst ANGLE_DESTINATION =\n /(?<=\\]\\([\\t ]*|^ {0,3}\\[[^\\]\\n]+\\]:[\\t ]*)<[^<>\\n]*>/gmu;\n\n/** `text` with every character but line breaks turned into a space. */\nconst blank = (text: string): string => text.replaceAll(/[^\\n]/gu, \" \");\n\n/**\n * An `.md` body with its code (fenced, indented, and inline) and HTML\n * comments blanked, exactly as the renderer's parser reads them.\n */\nconst maskMarkdown = (text: string): string => {\n const ranges: [number, number][] = [];\n const walk = (node: Nodes): void => {\n const start = node.position?.start.offset ?? 0;\n const end = node.position?.end.offset ?? start;\n if (\n node.type === \"code\" ||\n node.type === \"inlineCode\" ||\n (node.type === \"html\" && node.value.startsWith(\"<!--\"))\n ) {\n ranges.push([start, end]);\n } else if (\"children\" in node) {\n for (const child of node.children) {\n walk(child);\n }\n }\n };\n walk(\n markdownToMdast(text, {\n features: { ...MARKDOWN_BODY_FEATURES, gfm: true },\n })\n );\n let masked = \"\";\n let cursor = 0;\n for (const [start, end] of ranges) {\n masked += text.slice(cursor, start) + blank(text.slice(start, end));\n cursor = end;\n }\n return masked + text.slice(cursor);\n};\n\n/**\n * An `.mdx` body with fenced code, inline code, comments, and angle-bracket\n * link destinations blanked, line by line rather than parsed: the problems\n * this looks for are what keeps MDX from parsing a page. MDX has no indented\n * code blocks.\n */\nconst maskMdx = (text: string): string => {\n let fence: FenceState = null;\n return text\n .split(\"\\n\")\n .map((line) => {\n const next = nextFenceState(line, fence);\n const inFence = fence !== null || next !== null;\n fence = next;\n return inFence ? blank(line) : line.replaceAll(INLINE_CODE, blank);\n })\n .join(\"\\n\")\n .replaceAll(MDX_COMMENT, blank)\n .replaceAll(HTML_COMMENT, blank)\n .replaceAll(ANGLE_DESTINATION, blank);\n};\n\n/** Where each line of `text` starts. */\nconst lineStartsOf = (text: string): number[] => {\n const starts = [0];\n for (\n let index = text.indexOf(\"\\n\");\n index !== -1;\n index = text.indexOf(\"\\n\", index + 1)\n ) {\n starts.push(index + 1);\n }\n return starts;\n};\n\n/** The 1-based line and column of offset `at`. */\nconst siteOf = (starts: readonly number[], at: number): Site => {\n const line = starts.findLastIndex((start) => start <= at);\n return { column: at - (starts[line] ?? 0) + 1, line: line + 1 };\n};\n\nconst templateFindings = ({ starts, text }: Scan): Finding[] => [\n ...[...text.matchAll(TEMPLATE_TAG)].map((match) => ({\n ...siteOf(starts, match.index),\n code: \"BLUME_TEMPLATE_TAG\",\n message: `\\`${match[0]}\\` is a Liquid or Markdoc tag, which Blume doesn't run, so the page shows it as written.`,\n suggestion:\n \"Rewrite what it produced as Markdown or a Blume component, or remove it. To show it as text, put it in inline code.\",\n })),\n ...[...text.matchAll(TEMPLATE_OUTPUT)]\n .filter((match) => !VARIABLE_REFERENCE.test(match.groups?.expression ?? \"\"))\n .map((match) => ({\n ...siteOf(starts, match.index),\n code: \"BLUME_TEMPLATE_TAG\",\n message: `\\`${match[0]}\\` is a Liquid output tag, which Blume doesn't fill in, so the page shows it as written.`,\n suggestion:\n \"Write the value in its place, or define it under `variables` in blume.config.ts and write `{{name}}`. To show it as text, put it in inline code.\",\n })),\n];\n\n/**\n * A page name the way wiki links match it: GitHub wikis link `[[Getting\n * Started]]` to `Getting-Started.md`, and case doesn't count.\n */\nconst wikiKey = (name: string): string =>\n name\n .trim()\n .toLowerCase()\n .replaceAll(/[\\s_-]+/gu, \"-\");\n\n/** Index pages by file name and title, for {@link syntaxDiagnostics}. */\nexport const indexPageNames = (pages: readonly PageRecord[]): PageNameIndex => {\n const index = new Map<string, PageRecord[]>();\n for (const page of pages) {\n const stem = (page.source.ref.split(\"/\").at(-1) ?? \"\").replace(\n /\\.mdx?$/iu,\n \"\"\n );\n for (const key of new Set([wikiKey(stem), wikiKey(page.title)])) {\n const named = index.get(key);\n if (named) {\n named.push(page);\n } else {\n index.set(key, [page]);\n }\n }\n }\n return index;\n};\n\n/** One side of a wiki link's `|`, and the route it names, if any. */\ninterface WikiPart {\n route?: string;\n text: string;\n}\n\n/** A wiki link side's route, with a `#heading` as the anchor it slugs to. */\nconst partRoute = (text: string, pageRoute: PageRoute): string | undefined => {\n const [name = \"\", heading] = text.split(\"#\", 2);\n const route = pageRoute(name);\n return route && heading ? `${route}#${slug(heading)}` : route;\n};\n\nconst wikilinkFindings = ({ pageRoute, starts, text }: Scan): Finding[] =>\n [...text.matchAll(WIKILINK)].flatMap((match) => {\n const parts: WikiPart[] = (match.groups?.inner ?? \"\")\n .split(\"|\")\n .map((part) => ({\n route: partRoute(part, pageRoute),\n text: part.trim(),\n }));\n const target = parts.find((part) => part.route !== undefined);\n if (!target && parts.length === 1) {\n return [];\n }\n const label = parts.find((part) => part !== target) ?? target;\n return [\n {\n ...siteOf(starts, match.index),\n code: \"BLUME_WIKILINK_UNSUPPORTED\",\n message: `\\`${match[0]}\\` is a wiki link, which Blume reads only in an Obsidian vault source, so the page shows it as written${target ? ` instead of linking to ${target.route}` : \"\"}.`,\n suggestion: target\n ? `Rewrite it as a Markdown link: \\`[${label?.text}](${target.route})\\`.`\n : \"Rewrite it as a Markdown link to the page, like `[Text](./page.md)`.\",\n },\n ];\n });\n\nconst mdcFindings = ({ starts, text }: Scan): Finding[] => {\n const blocks = [...text.matchAll(MDC_BLOCK)].map((match) => ({\n at: match.index + match[0].indexOf(\"::\"),\n written: match.groups?.written,\n }));\n const opened = new Set(blocks.map(({ at }) => at));\n return [\n ...blocks.map(({ at, written }) => ({\n ...siteOf(starts, at),\n code: \"BLUME_MDC_SYNTAX\",\n message: `\\`${written}\\` opens a Nuxt Content (MDC) block component, which Blume doesn't render, so the page shows its \\`::\\` lines as text.`,\n suggestion:\n \"Rewrite the block as the matching Blume component (`<Callout>`, `<Card>`, `<Tabs>`, …) or a `:::` callout.\",\n })),\n ...[...text.matchAll(MDC_INLINE)]\n .filter((match) => !opened.has(match.index))\n .map((match) => ({\n ...siteOf(starts, match.index),\n code: \"BLUME_MDC_SYNTAX\",\n message: `\\`${match.groups?.written}\\` is an inline component in Nuxt Content (MDC) syntax, which Blume doesn't render, so the page shows it as written.`,\n suggestion:\n \"Rewrite it as the matching Blume component (`<Badge>`, `<Icon>`, …) or as plain text.\",\n })),\n ];\n};\n\n/**\n * Whether the list at `column` of `line` is a heading's trailing `{#id}`\n * marker, which `BLUME_MDX_CURLY_ANCHOR` or `BLUME_MD_CURLY_ANCHOR` already\n * reports (an unspaced `{#id}` pins the anchor in `.md`). In `.mdx`, one that\n * also sets classes or attributes (`{#id .wide}`) is reported here instead.\n */\nconst isHeadingMarker = (\n lines: readonly string[],\n site: Site,\n written: string,\n format: \"md\" | \"mdx\"\n): boolean => {\n const line = lines[site.line - 1] ?? \"\";\n const heading =\n ATX_HEADING.test(line) || SETEXT_UNDERLINE.test(lines[site.line] ?? \"\");\n const marker = trailingCurlyMarker(line);\n return (\n heading &&\n marker?.marker === written &&\n marker.index === site.column - 1 &&\n (format === \"md\" || !marker.attributes)\n );\n};\n\n/** What an attribute list does to a page in each format, and the way out. */\nconst ATTRIBUTE_LIST_PROBLEMS = {\n md: {\n code: \"BLUME_MD_ATTRIBUTE_LIST\",\n effect: \"which Blume doesn't read, so the page shows it as written\",\n suggestion:\n 'Remove it. To keep the attributes, write the element as HTML (`<img src=\"…\" width=\"300\">`), or pin a heading\\'s anchor with `[#id]`. To show the braces as text, put them in inline code.',\n },\n mdx: {\n code: \"BLUME_MDX_ATTRIBUTE_LIST\",\n effect:\n \"which MDX reads as a JavaScript expression, so the page fails to build\",\n suggestion:\n 'Remove it. To keep the attributes, write the element as JSX (`<img src=\"…\" width=\"300\" />`), or pin a heading\\'s anchor with `[#id]`. To show the braces as text, escape them: `\\\\{…\\\\}`.',\n },\n} as const;\n\n/**\n * The attribute lists in a body in `format`. A directive's own attributes and\n * a `{{ }}` variable or Liquid output aren't one.\n */\nconst attributeListFindings =\n (format: \"md\" | \"mdx\") =>\n ({ starts, text }: Scan): Finding[] => {\n const { code, effect, suggestion } = ATTRIBUTE_LIST_PROBLEMS[format];\n const scanned = text\n .replaceAll(DIRECTIVE_ATTRIBUTES, blank)\n .replaceAll(TEMPLATE_OUTPUT, blank);\n const lines = text.split(\"\\n\");\n return [...scanned.matchAll(ATTRIBUTE_LIST)]\n .map((match) => ({\n site: siteOf(starts, match.index),\n written: match[0],\n }))\n .filter(\n ({ site, written }) => !isHeadingMarker(lines, site, written, format)\n )\n .map(({ site, written }) => ({\n ...site,\n code,\n message: `\\`${written}\\` is an attribute list, ${effect}.`,\n suggestion,\n }));\n };\n\n// An attribute list's opening brace and first attribute.\nconst SUSPECT_ATTRIBUTE_LIST = /\\{:?[\\t ]*(?:[#.][A-Za-z_-]|[\\w-]+=)/u;\n\nconst voidElementFindings = ({ starts, text }: Scan): Finding[] =>\n [...text.matchAll(VOID_ELEMENT)]\n .filter(\n (match) =>\n !text\n .slice(match.index + match[0].length)\n .trimStart()\n .startsWith(`</${match.groups?.tag}>`)\n )\n .map((match) => ({\n ...siteOf(starts, match.index),\n code: \"BLUME_MDX_UNCLOSED_ELEMENT\",\n message: `\\`<${match.groups?.tag}>\\` isn't closed. MDX reads HTML as JSX, where it needs \\`/>\\`: unclosed, it fails the page, or in an included file it takes in everything after it.`,\n suggestion: `Close it: \\`<${match.groups?.tag} … />\\`.`,\n }));\n\n/** A scan over masked text, and the cheap check that says it's worth running. */\ninterface Check {\n find: (scan: Scan) => Finding[];\n suspect: RegExp;\n}\n\n/** The checks each body format runs. */\nconst CHECKS: Record<\"md\" | \"mdx\", Check[]> = {\n md: [\n { find: templateFindings, suspect: /\\{[%{]/u },\n { find: wikilinkFindings, suspect: SUSPECT_WIKILINK },\n { find: mdcFindings, suspect: SUSPECT_MDC },\n { find: attributeListFindings(\"md\"), suspect: SUSPECT_ATTRIBUTE_LIST },\n ],\n mdx: [\n { find: wikilinkFindings, suspect: SUSPECT_WIKILINK },\n { find: mdcFindings, suspect: SUSPECT_MDC },\n { find: attributeListFindings(\"mdx\"), suspect: SUSPECT_ATTRIBUTE_LIST },\n {\n find: voidElementFindings,\n suspect:\n /<(?:area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)[\\s/>]/u,\n },\n ],\n};\n\n/**\n * Every finding in `text`, a body in `format`, in source order. The body is\n * masked only when a check's cheap test matches, so most pages cost a few\n * regex tests.\n */\nconst syntaxFindings = (\n text: string,\n format: \"md\" | \"mdx\",\n pageRoute: PageRoute\n): Finding[] => {\n const checks = CHECKS[format].filter((check) => check.suspect.test(text));\n if (checks.length === 0) {\n return [];\n }\n const masked = format === \"mdx\" ? maskMdx(text) : maskMarkdown(text);\n const scan = { pageRoute, starts: lineStartsOf(masked), text: masked };\n return checks\n .flatMap((check) => check.find(scan))\n .toSorted((a, b) => a.line - b.line || a.column - b.column);\n};\n\n/**\n * Warn about syntax from other docs tools in an entry's body (see the module\n * comment). `pages` are the site's pages by name, which a wiki link resolves\n * against, preferring one in the entry's own `locale`. Lines point into the\n * file the author wrote, a partial's own file for syntax an `<include>`\n * brought in.\n */\nexport const syntaxDiagnostics = (\n entry: SourceEntry,\n sourceName: string,\n pages: PageNameIndex = new Map(),\n locale = \"\"\n): Diagnostic[] => {\n const page = entry.sourcePath ?? `${sourceName}:${entry.ref}`;\n const offset =\n entry.bodyLineOffset ?? strippedLineOffset(entry.raw, entry.body.text);\n const pageRoute = (name: string): string | undefined => {\n const named = pages.get(wikiKey(name));\n return (named?.find((other) => other.locale === locale) ?? named?.[0])\n ?.route;\n };\n return syntaxFindings(\n entry.expanded?.text ?? entry.body.text,\n entry.body.format,\n pageRoute\n ).map(({ line, ...finding }) => {\n const origin = entry.expanded?.origins[line - 1];\n return {\n ...finding,\n file: origin?.file ?? page,\n line: origin?.line ?? line + offset,\n severity: \"warning\",\n };\n });\n};\n"
|
|
40
40
|
],
|
|
41
|
-
"mappings": "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",
|
|
42
|
-
"debugId": "
|
|
41
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAM,aACJ;AAEF,IAAM,aAAa;AAGZ,IAAM,cAAc,CAAC,UAA2B,WAAW,KAAK,KAAK;AAGrE,IAAM,cAAc,CAAC,UAA2B,WAAW,KAAK,KAAK;AAGrE,IAAM,cAAc,CAAC,UAC1B,YAAY,KAAK,KAAK,YAAY,KAAK;;;ACVzC;AAGA;AAMA,IAAM,cAAc,cAAc,YAAY,GAAG;AAGjD,IAAM,UAAU,CAAC,QAA6B,YAAY,GAAG;AAE7D,IAAM,OAAO;AAAA,EACX,QAAQ,QAAQ,iCAAiC;AACnD;AAGA,IAAM,cAAc;AAGpB,IAAM,cAAc;AAAA,EAClB,QAAQ;AACV;AAQA,IAAM,WAAW,CAAI,KAAwB,QAC3C,OAAO,OAAO,KAAK,GAAG,IAAI,IAAI,OAAO;AAWvC,IAAM,YAAY,CAAC,SACjB,KACG,KAAK,EACL,YAAY,EACZ,WAAW,YAAY,GAAG;AAE/B,IAAM,UAAU,CAAC,SAAiB,aAA0C;AAAA,EAC1E,MAAM,MAAM,SAAS,MAAM,OAAO;AAAA,EAClC,MAAM,OAAO,OAAO,YAAY,KAAK,QAAQ;AAAA,EAC7C,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,YAAY,SAAS,UAAU,MAAM,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC/D,OAAO,EAAE,MAAM,MAAM,UAAU,SAAS,WAAW,QAAQ;AAAA;AAOtD,IAAM,cAAc,CAAC,SAAsC;AAAA,EAChE,MAAM,aAAa,UAAU,IAAI;AAAA,EACjC,MAAM,QAAQ,WAAW,QAAQ,GAAG;AAAA,EACpC,IAAI,QAAQ,GAAG;AAAA,IACb,MAAM,UAAU,SAAS,aAAa,WAAW,MAAM,GAAG,KAAK,CAAC;AAAA,IAChE,OAAO,UAAU,QAAQ,SAAS,WAAW,MAAM,QAAQ,CAAC,CAAC,IAAI;AAAA,EACnE;AAAA,EACA,OAAO,QAAQ,aAAa,UAAU;AAAA;AASjC,IAAM,UAAU,CAAC,SAA0B,YAAY,IAAI,MAAM;;;ACxExE,IAAM,mBACJ;AAGF,IAAM,eAAe,CAAC,UACpB,MAAM,QAAQ,CAAC,SACb,KAAK,SAAS,UAAU,CAAC,MAAM,GAAG,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CACxE;AAGF,IAAM,eAAe,CACnB,eACsC;AAAA,EACtC,MAAM,QAA2C,CAAC;AAAA,EAClD,MAAM,OAAO,CAAC,MAA0B,UAAwB;AAAA,IAC9D,IAAI,MAAM;AAAA,MACR,MAAM,KAAK,EAAE,MAAM,MAAM,CAAC;AAAA,IAC5B;AAAA;AAAA,EAEF,WAAW,OAAO,WAAW,MAAM;AAAA,IACjC,KAAK,IAAI,MAAM,QAAQ,IAAI,QAAQ;AAAA,IACnC,WAAW,QAAQ,IAAI,SAAS,CAAC,GAAG;AAAA,MAClC,KAAK,KAAK,MAAM,aAAa,KAAK,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,WAAW,YAAY,WAAW,WAAW;AAAA,IAC3C,WAAW,QAAQ,SAAS,OAAO;AAAA,MACjC,KAAK,KAAK,MAAM,aAAa,KAAK,QAAQ;AAAA,IAC5C;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,WAAW,UAAU;AAAA,IACtC,KAAK,KAAK,MAAM,kBAAkB,KAAK,QAAQ;AAAA,EACjD;AAAA,EACA,MAAM,WAAW,CAAC,WAAW,OAAO;AAAA,EACpC,WAAW,WAAW,UAAU;AAAA,IAC9B,WAAW,QAAQ,aAAa,OAAO,GAAG;AAAA,MACxC,KAAK,KAAK,MAAM,IAAI,KAAK,QAAQ;AAAA,IACnC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,yBAAyB,CAC7B,OACA,eACiB;AAAA,EACjB,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,aAAa,MAAM,WAAW,OAAO;AAAA,IACnC,IAAI,YAAY,IAAI,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG;AAAA,MACxD;AAAA,IACF;AAAA,IACA,KAAK,IAAI,IAAI;AAAA,IAGb,MAAM,UAAU,KAAK,UAAU,EAAE,WAAW,GAAG,IAC3C,gBAAgB,UAAU,sEAC1B,iBAAiB,UAAU;AAAA,IAC/B,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN;AAAA,MACA,UAAU;AAAA,MACV;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAIF,IAAM,mBAAmB,CAAC,eAC/B,uBAAuB,aAAa,UAAU,GAAG,gBAAgB;AAM5D,IAAM,6BAA6B,CACxC,YACiB;AAAA,EACjB,MAAM,QAAQ,QAAQ,QAAQ,CAAC,SAC7B,KAAK,OACD,CAAC,EAAE,MAAM,KAAK,MAAM,OAAO,iBAAiB,KAAK,SAAS,CAAC,IAC3D,CAAC,CACP;AAAA,EACA,OAAO,uBAAuB,OAAO,gBAAgB;AAAA;AAQhD,IAAM,yBAAyB,CACpC,SACA,kBACiB;AAAA,EACjB,MAAM,QAAQ,QAAQ,QAAQ,CAAC,WAC7B,CAAC,mBAAmB,MAAM,KAAK,OAAO,OAClC;AAAA,IACE;AAAA,MACE,MAAM,OAAO;AAAA,MACb,OAAO,eAAe,mBAAmB,OAAO,OAAO,eAAe,aAAa;AAAA,IACrF;AAAA,EACF,IACA,CAAC,CACP;AAAA,EACA,OAAO,uBAAuB,OAAO,gBAAgB;AAAA;AAIvD,IAAM,kBAAkB,CAAC,QAAqB,SAC5C,OAAO,IAAI,IAAI,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,UAAU,MAAM,WAAW,GAAG,OAAO,CAAC;AAevE,IAAM,qBAAqB,CAChC,YACA,QACA,aAAwC,MAAM,UAC7B;AAAA,EACjB,MAAM,UAA6C;AAAA,IACjD,GAAG,WAAW,KAAK,IAAI,CAAC,SAAS;AAAA,MAC/B,OAAO,IAAI;AAAA,MACX,MAAM,IAAI,QAAQ,IAAI;AAAA,IACxB,EAAE;AAAA,IACF,GAAG,WAAW,UAAU,QAAQ,CAAC,aAC/B,SAAS,MAAM,IAAI,CAAC,UAAU,EAAE,OAAO,KAAK,OAAO,MAAM,KAAK,KAAK,EAAE,CACvE;AAAA,IACA,GAAG,WAAW,SAAS,IAAI,CAAC,UAAU;AAAA,MACpC,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,IACb,EAAE;AAAA,IACF,IAAI,WAAW,WAAW,CAAC,GAAG,IAAI,CAAC,YAAY;AAAA,MAC7C,OAAO,OAAO;AAAA,MACd,MAAM,OAAO;AAAA,IACf,EAAE;AAAA,IACF,GAAI,WAAW,MACX,CAAC,EAAE,OAAO,WAAW,IAAI,OAAO,MAAM,WAAW,IAAI,KAAK,CAAC,IAC3D,CAAC;AAAA,EACP;AAAA,EACA,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,aAAa,OAAO,UAAU,SAAS;AAAA,IAGrC,IAAI,CAAC,eAAe,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,IAAI,GAAG;AAAA,MACpE;AAAA,IACF;AAAA,IAGA,MAAM,OAAO,KAAK,MAAM,OAAO,EAAE,MAAM;AAAA,IACvC,IAAI,EAAE,gBAAgB,QAAQ,IAAI,KAAK,WAAW,IAAI,IAAI;AAAA,MACxD,KAAK,IAAI,IAAI;AAAA,MACb,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,qBAAqB,oBAAoB;AAAA,QAClD,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAWF,IAAM,uBAAuB,CAClC,OACA,aACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,CAAC,SAAoC;AAAA,IAChD,WAAW,QAAQ,MAAM;AAAA,MACvB,IAAI,UAAU,IAAI,GAAG;AAAA,QACnB,IAAI,CAAC,SAAS,aAAa,IAAI,CAAC,GAAG;AAAA,UACjC,YAAY,KAAK;AAAA,YACf,MAAM;AAAA,YACN,SAAS,kBAAkB;AAAA,YAC3B,UAAU;AAAA,YACV,YAAY;AAAA,UACd,CAAC;AAAA,QACH;AAAA,QACA;AAAA,MACF;AAAA,MACA,IAAI,KAAK,QAAQ,CAAC,SAAS,aAAa,KAAK,IAAI,CAAC,GAAG;AAAA,QACnD,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,kBAAkB,KAAK,oBAAoB,KAAK;AAAA,UACzD,UAAU;AAAA,UACV,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,MACA,IAAI,KAAK,OAAO;AAAA,QACd,KAAK,KAAK,KAAK;AAAA,MACjB,EAAO,SAAI,EAAE,KAAK,QAAQ,KAAK,OAAO;AAAA,QACpC,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,kBAAkB,KAAK;AAAA,UAChC,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,KAAK;AAAA,EACV,OAAO;AAAA;AAIT,IAAM,4BAA4B,CAAC,eAAyC;AAAA,EAC1E,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,aAAa,CAAC,OAAkB,UAAwB;AAAA,IAC5D,MAAM,SAAS,IAAI;AAAA,IACnB,WAAW,QAAQ,OAAO;AAAA,MACxB,OAAO,IAAI,KAAK,QAAQ,OAAO,IAAI,KAAK,KAAK,KAAK,KAAK,CAAC;AAAA,IAC1D;AAAA,IACA,YAAY,OAAO,UAAU,QAAQ;AAAA,MACnC,IAAI,QAAQ,GAAG;AAAA,QACb,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,4BAA4B,kBAAkB,eAAe;AAAA,UACtE,UAAU;AAAA,UACV,YAAY;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,KAAK,SAAS,SAAS;AAAA,QACzB,WAAW,KAAK,UAAU,UAAU,KAAK,QAAQ;AAAA,MACnD;AAAA,IACF;AAAA;AAAA,EAEF,MAAM,WAAkD;AAAA,IACtD,EAAE,OAAO,WAAW,SAAS,OAAO,mBAAmB;AAAA,EACzD;AAAA,EACA,aAAa,OAAO,WAAW,UAAU;AAAA,IACvC,WAAW,OAAO,KAAK;AAAA,EACzB;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,6BAA6B,CACjC,YACA,UACiB;AAAA,EACjB,MAAM,SAAS,IAAI,IACjB,MAAM,QAAQ,CAAC,SAAU,KAAK,KAAK,QAAQ,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAE,CACrE;AAAA,EACA,IAAI,OAAO,SAAS,GAAG;AAAA,IACrB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,WAAW,CAAC,WAAW,OAAO;AAAA,EACpC,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,WAAW,UAAU;AAAA,IAC9B,WAAW,QAAQ,aAAa,OAAO,GAAG;AAAA,MACxC,IACE,KAAK,SAAS,UACd,OAAO,IAAI,KAAK,MAAM,KACtB,CAAC,KAAK,IAAI,KAAK,MAAM,GACrB;AAAA,QACA,KAAK,IAAI,KAAK,MAAM;AAAA,QACpB,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,SAAS,SAAS,KAAK;AAAA,UACvB,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUF,IAAM,uBAAuB,CAClC,YACA,UACiB;AAAA,EACjB,GAAG,0BAA0B,UAAU;AAAA,EACvC,GAAG,2BAA2B,YAAY,KAAK;AACjD;;;ACrUA,uBAAS;AAET,uBAAS,qBAAY,mBAAM;;;ACD3B;;;ACDA,qBAAS;AA4BF,IAAM,gBAAqC,IAAI,IAAI;AAAA,EACxD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAOM,IAAM,kBAA4C;AAAA,EACvD,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,MAAM;AACR;AAGO,IAAM,iBAAiB,CAAC,SAAgC;AAAA,EAC7D,MAAM,QAAQ,KAAK,YAAY;AAAA,EAC/B,IAAI,cAAc,IAAI,KAAK,GAAG;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,OAAO,gBAAgB,UAAU;AAAA;AAsEnC,IAAM,kBAAkB,IAAI,IAAI;AAAA,EAC9B,CAAC,iBAAiB,IAAI;AAAA,EACtB,CAAC,iBAAiB,GAAG;AACvB,CAAC;AAGD,IAAM,cAAc,CAAC,UACnB,MAAM,SAAS,IACX,IAAI,cAAc,OAAO,EAAE,iBAAiB,MAAM,CAAC,OACnD;AAGN,IAAM,kBAAkB,CAAC,SAAgC;AAAA,EACvD,MAAM,aAAa,OAAO,QAAQ,KAAK,cAAc,CAAC,CAAC,EAAE,IACvD,EAAE,KAAK,WAAY,QAAQ,GAAG,QAAQ,WAAW,GACnD;AAAA,EACA,OAAO,WAAW,SAAS,IAAI,IAAI,WAAW,KAAK,GAAG,OAAO;AAAA;AAI/D,IAAM,gBAAgB,CAAC,MAAqB,WAAkC;AAAA,EAC5E,MAAM,QAAQ,KAAK,UAAU,OAAO;AAAA,EACpC,MAAM,MAAM,KAAK,UAAU,KAAK;AAAA,EAChC,OAAO,UAAU,aAAa,QAAQ,YAClC,OAAO,MAAM,OAAO,GAAG,IACvB;AAAA;AAUC,IAAM,kBAAkB,CAC7B,MACA,QACA,WACW;AAAA,EACX,MAAM,UAAU,GAAG,SAAS,KAAK;AAAA,EACjC,MAAM,QAAQ,cAAc,MAAM,MAAM;AAAA,EACxC,IAAI,OAAO,WAAW,OAAO,GAAG;AAAA,IAC9B,OAAO;AAAA,EACT;AAAA,EACA,OAAO,GAAG,UAAU,YAAY,KAAK,YAAY,CAAC,CAAC,IAAI,gBAAgB,IAAI;AAAA;;;ACjKtE,IAAM,iBAA8C,IAAI,IAAI;AAAA,EACjE,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,QAAQ,MAAM;AAAA,EACf,CAAC,OAAO,KAAK;AAAA,EACb,CAAC,WAAW,SAAS;AACvB,CAAC;AAGD,IAAM,eAAe;AASd,IAAM,gBAAgB,CAAC,SAA0C;AAAA,EACtE,MAAM,QAAQ,aAAa,KAAK,IAAI;AAAA,EACpC,MAAM,UAAU,eAAe,IAAI,OAAO,QAAQ,MAAM,YAAY,KAAK,EAAE;AAAA,EAC3E,OAAO,SAAS,UAAU,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI;AAAA;;;AFnB5D,IAAM,aAAa;AAanB,IAAM,gBAAgB,CAAC,SAAiC;AAAA,EACtD,IAAI,CAAC,WAAW,KAAK,IAAI,GAAG;AAAA,IAC1B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,OAAc,gBAAgB,MAAM;AAAA,IACxC,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,MAAM,QAAwB,CAAC;AAAA,EAC/B,MAAM,OAAO,CAAC,SAAsB;AAAA,IAClC,IAAI,KAAK,SAAS,cAAc;AAAA,MAC9B,OAAO,aAAa,KAAK;AAAA,MACzB,MAAM,QACJ,WAAW,SAAS,cAAc,UAAU,SAAS,KAAK;AAAA,MAC5D,MAAM,UAAU,KAAK,OAAO,UAAU,MAAM,UAAU,OAAO;AAAA,MAC7D,MAAM,QACJ,OAAO,SAAS,UAAU,CAAC,UACvB,cAAc,MAAM,KAAK,IACzB;AAAA,MACN,IAAI,UAAU,WAAW;AAAA,QACvB,MAAM,KAAK,KAAK,OAAO,MAAM,KAAK,UAAU,MAAM,QAAQ,EAAE,CAAC;AAAA,QAE7D;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,KAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,IAAI;AAAA,EACT,OAAO;AAAA;AAUF,IAAM,mBAAmB,CAC9B,OACA,eACiB;AAAA,EACjB,IAAI,MAAM,KAAK,WAAW,MAAM;AAAA,IAC9B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,OAAO,MAAM,cAAc,GAAG,cAAc,MAAM;AAAA,EACxD,MAAM,SACJ,MAAM,kBAAkB,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,EACvE,OAAO,cAAc,MAAM,UAAU,QAAQ,MAAM,KAAK,IAAI,EAAE,IAC5D,GAAG,SAAS,MAAM,aAAa;AAAA,IAC7B,MAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAAA,IAC9C,OAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,QAAQ,QAAQ;AAAA,MACtB,MAAM,QAAQ,QAAQ,OAAO;AAAA,MAC7B,SAAS,KAAK,sGAAsG;AAAA,MACpH,UAAU;AAAA,MACV,YAAY,+CAA+C,kCAAkC;AAAA,IAC/F;AAAA,GAEJ;AAAA;;;AGtFF,4BAAS;;;ACiBT;AAKA,IAAM,kBAAuC,IAAI,IAAI;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,kBAAkB,CAAC,SAC9B,gBAAgB,IAAI,IAAI,KAAK,OAAO,OAAO,kBAAkB,IAAI;AAGnE,IAAM,cAAc;AAGpB,IAAM,oBACJ;AAcK,IAAM,iBAAiB,CAC5B,MACA,SACiB;AAAA,EACjB,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,YAAY,KAAK,IAAI,GAAG;AAAA,EACtC,MAAM,KAAK,OAAO,QAAQ;AAAA,EAC1B,MAAM,aACH,OAAO,QACJ,CAAC,MAAM,OAAO,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IAC5C,OACD,QAAQ,mBAAmB,mBAAmB,KAAK;AAAA,EACxD,MAAM,QAAQ,GAAG,YAAY;AAAA,EAC7B,MAAM,WAAW,CAAC,gBAAgB,EAAE,KAAK,gBAAgB,KAAK,IAAI,QAAQ;AAAA,EAC1E,OAAO,aAAa,QAAQ,eAAe,QAAQ,QAC/C,OACA,EAAE,MAAM,UAAU,MAAM,UAAU;AAAA;;;AC1DjC,IAAM,cAAc;AAQ3B,IAAM,aAAa;AAOnB,IAAM,aAAa,IAAI,OACrB,GAAG,YAAY,UAAU,WAAW,eACpC,IACF;AAGO,IAAM,aAAa,CAAC,SACzB,MAAM,MAAM,UAAU,KAAK,CAAC;AAMvB,IAAM,yBAA8C,IAAI,IAAI;AAAA,EACjE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAUD,IAAM,wBAA6C,IAAI,IAAI;AAAA,EACzD;AAAA,EACA;AACF,CAAC;AAID,IAAM,oBAAoB;AAEnB,IAAM,qBAA0C,IAAI,IAAI;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,iBAAsC,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC;AAGlE,IAAM,mBAAmB,CAC9B,OACA,SAEA,sBAAsB,IAAI,KAAK,KAC/B,kBAAkB,KAAK,KAAK,KAC3B,eAAe,IAAI,QAAQ,EAAE,KAAK,mBAAmB,IAAI,KAAK;AAG1D,IAAM,cAAc,CAAC,UAA2B,MAAM,WAAW,GAAG;;;AFrE3E,IAAM,kBAAuC,IAAI,IAAI;AAAA,EACnD;AAAA,EACA;AACF,CAAC;AAuBD,IAAM,YAAY,CAAC,UACjB,IAAI,MACD,KAAK,EACL,MAAM,SAAS,EACf,KAAK,GAAG;AAEb,IAAM,kBAA4C;AAAA,EAChD;AAAA,IACE,QAAQ;AAAA,IACR,SAAS,CAAC,UACR,yDAAyD,UAAU,KAAK;AAAA,IAC1E,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,SAAS,CAAC,UACR,oDACE,MAAM,KAAK,MAAM,MAAM,KAAK;AAAA,IAEhC,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,SAAS,MAAM;AAAA,IACf,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IAGE,QAAQ;AAAA,IACR,SAAS,MACP;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,SAAS,MAAM;AAAA,IACf,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,SAAS,CAAC,UAAU,kBAAkB;AAAA,IACtC,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IAEE,QACE;AAAA,IACF,SAAS,MAAM;AAAA,IACf,WAAW;AAAA,IACX,SAAS,IAAI,OAAO,OAAO,CAAC,GAAG,kBAAkB,EAAE,KAAK,GAAG,OAAO,GAAG;AAAA,EACvE;AACF;AAGA,IAAM,gBAAgB,CACpB,OACA,SACoD;AAAA,EACpD,WAAW,UAAU,iBAAiB;AAAA,IACpC,MAAM,QAAQ,OAAO,QAAQ,KAAK,KAAK;AAAA,IACvC,IAAI,UAAU,OAAO,WAAW,IAAI,IAAI,KAAK,OAAO;AAAA,MAClD,OAAO,EAAE,QAAQ,OAAO,MAAM,QAAQ,SAAS,GAAG;AAAA,IACpD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,kBAAkB,CAAC,SACvB,gBAAgB,IAAI,KAAK,gBAAgB,IAAI,IAAI;AAGnD,IAAM,aAAa,CACjB,MACA,SACG;AAAA,EACH,MAAM,QAAQ,eAAe,MAAM,IAAI,KAAK;AAAA,IAC1C,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,EAChB;AAAA,EACA,OAAO,EAAE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,QAAQ,WAAW,MAAM,IAAI,EAAE;AAAA;AAG9E,IAAM,kBAAkB,CAAC,MAAY,SAA4B;AAAA,EAC/D,QAAQ,SAAS,WAAW,KAAK,MAAM,KAAK,IAAI;AAAA,EAChD,IAAI,CAAC,QAAQ,gBAAgB,IAAI,GAAG;AAAA,IAClC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,SAAS,KAAK;AAAA,MACd,YACE;AAAA,IACJ;AAAA,EACF;AAAA;AAGF,IAAM,iBAAiB,CAAC,MAAY,SAA4B;AAAA,EAC9D,QAAQ,MAAM,WAAW,WAAW,KAAK,MAAM,KAAK,IAAI;AAAA,EAGxD,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,MAAM,EAAE,QAAQ,CAAC,UAAU;AAAA,IACrD,MAAM,QAAQ,cAAc,OAAO,IAAI;AAAA,IACvC,IAAI,CAAC,OAAO;AAAA,MACV,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN;AAAA,QACA,SAAS,KAAK,+CAA+C,MAAM,OAAO;AAAA,QAC1E,YAAY,MAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,MAC9C;AAAA,IACF;AAAA,GACD;AAAA;AAOH,IAAM,aAAa;AAGnB,IAAM,cAAc,CAAC,SAA0B;AAAA,EAC7C,OAAO,SAAS,QAAQ,KAAK,KAAK,EAAE,MAAM,MAAM;AAAA,EAChD,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,WAAW,MAAM,KAAK,KAAK,GAAG,KAAK,IAAI;AAAA,EACrD,OACE,CAAC,gBAAgB,MAAM,IAAI,KAC3B,CAAC,MAAM,GAAG,MAAM,MAAM,EAAE,KACtB,CAAC,UAAU,cAAc,OAAO,MAAM,IAAI,MAAM,IAClD;AAAA;AAIJ,IAAM,QAAQ,CAAC,MAAc,WAAuC;AAAA,EAClE,IAAI;AAAA,IACF,OAAO,WAAW,QACd,WAAW,MAAM,EAAE,UAAU,kBAAkB,CAAC,IAChD,iBAAgB,MAAM,EAAE,UAAU,uBAAuB,CAAC;AAAA,IAC9D,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAWX,IAAM,gBAAgB,CAAC,MAAc,WAAoC;AAAA,EACvE,MAAM,UAAU,CAAC,GAAG,KAAK,SAAS,UAAU,CAAC,EAAE,KAAK,CAAC,UACnD,YAAY,MAAM,QAAQ,QAAQ,EAAE,CACtC;AAAA,EACA,MAAM,OAAO,UAAU,MAAM,MAAM,MAAM,IAAI;AAAA,EAC7C,IAAI,CAAC,MAAM;AAAA,IACT,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,QAAmB,CAAC;AAAA,EAC1B,MAAM,OAAO,CAAC,SAAsB;AAAA,IAClC,IAAI,KAAK,SAAS,QAAQ;AAAA,MACxB,MAAM,OAAO,KAAK,UAAU,MAAM,QAAQ;AAAA,MAC1C,MAAM,KAAK,GAAG,gBAAgB,MAAM,IAAI,GAAG,GAAG,eAAe,MAAM,IAAI,CAAC;AAAA,IAC1E;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,KAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,IAAI;AAAA,EACT,OAAO;AAAA;AAkBF,IAAM,uBAAuB,CAClC,OACA,eACiB;AAAA,EACjB,MAAM,OAAO,MAAM,cAAc,GAAG,cAAc,MAAM;AAAA,EACxD,MAAM,SACJ,MAAM,kBAAkB,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,EACvE,OAAO,cACL,MAAM,UAAU,QAAQ,MAAM,KAAK,MACnC,MAAM,KAAK,MACb,EAAE,IAAI,GAAG,SAAS,cAAc;AAAA,IAC9B,MAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAAA,IAC9C,OAAO;AAAA,SACF;AAAA,MACH,MAAM,QAAQ,QAAQ;AAAA,MACtB,MAAM,QAAQ,QAAQ,OAAO;AAAA,MAC7B,UAAU;AAAA,IACZ;AAAA,GACD;AAAA;;;AGxQH,4BAAS,gCAAiB;AAmB1B,IAAM,oBAAoB;AAK1B,IAAM,kBAAkB;AAGxB,IAAM,eACJ;AAIF,IAAM,eACJ;AACF,IAAM,oBACJ;AAGF,IAAM,iBACJ;AAIF,IAAM,aAAa;AACnB,IAAM,kBAAkB;AAExB,IAAM,WAAW,CAAC,UAChB,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,KAAK,IAAI;AAEnD,IAAM,gBAAgB,GAAG,SAAS,aAAa,qBAAqB,SAAS,OAAO,KAAK,eAAe,CAAC;AAUzG,IAAM,mBAAmB,CAAC,SACxB,eAAe,KAAK,IAAI,MAAM,OAC1B;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,MAAM,KAAK,UAAU,MAAM,QAAQ;AAAA,IACnC,SAAS,QAAQ,KAAK;AAAA,IACtB,YAAY,wBAAwB;AAAA,EACtC;AACF,IACA,CAAC;AAWP,IAAM,cAAc,CAClB,MACA,UACc;AAAA,EACd,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ;AAAA,EAC3C,MAAM,MAAM,KAAK,UAAU,IAAI,QAAQ;AAAA,EACvC,MAAM,UAAU,KAAK,SAAS,GAAG,EAAE,GAAG,UAAU,IAAI,QAAQ;AAAA,EAC5D,MAAM,SACJ,MAAM,UAAU,aAAa,KAAK,MAAM,MAAM,MAAM,EAAE,GAAG,SAAS;AAAA,EACpE,IAAI,EAAE,QAAQ,QAAQ,OAAO,SAAS,OAAO,UAAU;AAAA,IACrD,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAS,IAAI,OAAO,OAAO,MAAM,SAAS,CAAC;AAAA,EACjD,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS,KAAK,OAAO,6BAA6B,KAAK,mCAAmC,OAAO;AAAA,MACjG,YAAY,0DAA0D,SAAS,KAAK,uBAAuB,8DAA8D,OAAO;AAAA,IAClL;AAAA,EACF;AAAA;AAWF,IAAM,cAAc,CAClB,MACA,UACc;AAAA,EACd,MAAM,OAAO,KAAK,UAAU,MAAM,QAAQ;AAAA,EAC1C,MAAM,SAAS,aAAa,KAAK,MAAM,OAAO,MAAM,EAAE,GAAG;AAAA,EACzD,IACE,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,QAAQ,OAAO,YACxD,eAAe,KAAK,IAAI,MAAM,MAC9B;AAAA,IACA,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAS,GAAG,OAAO,QAAQ,OAAO;AAAA,EACxC,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,SAAS,KAAK,OAAO,uBAAuB,OAAO,kDAAkD,OAAO;AAAA,MAC5G,YACE,OAAO,SAAS,OAAO,aACnB,UAAU,OAAO,wEACjB,gCAAgC,UAAU,OAAO;AAAA,IACzD;AAAA,EACF;AAAA;AASF,IAAM,iBAAiB,CACrB,MACA,UACc;AAAA,EACd,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ;AAAA,EAC3C,MAAM,MAAM,KAAK,UAAU,IAAI,QAAQ;AAAA,EACvC,OAAO,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC,MAAM,UAAU;AAAA,IAC1D,MAAM,SAAS,eAAe,KAAK,IAAI,GAAG;AAAA,IAC1C,IACE,EAAE,QAAQ,SAAS,OAAO,QAAQ,OAAO,YACzC,eAAe,OAAO,IAAI,MAAM,MAChC;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,SAAS,GAAG,OAAO,QAAQ,OAAO;AAAA,IACxC,MAAM,QAAQ,OAAO,OAAO,KAAK;AAAA,IACjC,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,QACd,SAAS,KAAK,OAAO;AAAA,QACrB,YAAY,QACR,qDAAqD,UAAU,cAC/D,uBAAuB;AAAA,MAC7B;AAAA,IACF;AAAA,GACD;AAAA;AAUH,IAAM,oBAAoB,CAAC,SAA4B;AAAA,EACrD,MAAM,UACJ,gBAAgB,KAAK,IAAI,KACzB,kBAAkB,KAAK,IAAI,KAC3B,CAAC,GAAG,KAAK,SAAS,iBAAiB,CAAC,EAAE,KACpC,CAAC,UAAU,eAAe,MAAM,QAAQ,QAAQ,EAAE,MAAM,IAC1D;AAAA,EACF,IAAI,CAAC,SAAS;AAAA,IACZ,OAAO,CAAC;AAAA,EACV;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,YAAW,MAAM,EAAE,UAAU,kBAAkB,CAAC;AAAA,IACvD,MAAM;AAAA,IACN,OAAO,CAAC;AAAA;AAAA,EAEV,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,MAAM,QAAmB,CAAC;AAAA,EAC1B,MAAM,OAAO,CAAC,SAAsB;AAAA,IAClC,IAAI,KAAK,SAAS,sBAAsB;AAAA,MACtC,MAAM,KACJ,GAAG,iBAAiB,IAAI,GACxB,GAAG,YAAY,MAAM,KAAK,GAC1B,GAAG,YAAY,MAAM,KAAK,CAC5B;AAAA,IACF,EAAO,SAAI,KAAK,SAAS,aAAa;AAAA,MACpC,MAAM,KAAK,GAAG,eAAe,MAAM,KAAK,CAAC;AAAA,IAC3C;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,KAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,IAAI;AAAA,EACT,OAAO,MAAM,SAAS,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI;AAAA;AAQjD,IAAM,aAAa,CAAC,MAAiB,UAAwC;AAAA,EAC3E,MAAM,QAAQ,KAAK,UAAU,MAAM,QAAQ;AAAA,EAC3C,MAAM,MAAM,KAAK,UAAU,IAAI,QAAQ;AAAA,EACvC,OAAO,MAAM,MAAM,QAAQ,GAAG,GAAG,EAAE,QAAQ,CAAC,MAAM,UAAU;AAAA,IAC1D,MAAM,SAAS,WAAW,KAAK,IAAI,GAAG;AAAA,IACtC,IAAI,EAAE,QAAQ,QAAQ,OAAO,UAAU;AAAA,MACrC,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,UAAU,eAAe,OAAO,IAAI;AAAA,IAC1C,OAAO;AAAA,MACL;AAAA,QACE,MAAM;AAAA,QACN,MAAM,QAAQ;AAAA,QACd,SAAS,KAAK,OAAO;AAAA,QACrB,YAAY,UACR,+CAA+C,uBAC/C,oDAAoD;AAAA,MAC1D;AAAA,IACF;AAAA,GACD;AAAA;AAQH,IAAM,sBAAsB,CAAC,SAA4B;AAAA,EACvD,IAAI,CAAC,gBAAgB,KAAK,IAAI,GAAG;AAAA,IAC/B,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,OAAc,iBAAgB,MAAM;AAAA,IACxC,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,MAAM,QAAmB,CAAC;AAAA,EAC1B,MAAM,OAAO,CAAC,SAAsB;AAAA,IAClC,IAAI,KAAK,SAAS,aAAa;AAAA,MAC7B,MAAM,KAAK,GAAG,WAAW,MAAM,KAAK,CAAC;AAAA,IACvC,EAAO,SAAI,cAAc,MAAM;AAAA,MAC7B,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,KAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAEF,KAAK,IAAI;AAAA,EACT,OAAO;AAAA;AA0BF,IAAM,uBAAuB,CAClC,OACA,eACiB;AAAA,EACjB,MAAM,OAAO,MAAM,cAAc,GAAG,cAAc,MAAM;AAAA,EACxD,MAAM,SACJ,MAAM,kBAAkB,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,EACvE,MAAM,OAAO,MAAM,UAAU,QAAQ,MAAM,KAAK;AAAA,EAChD,MAAM,WACJ,MAAM,KAAK,WAAW,QAClB,kBAAkB,IAAI,IACtB,oBAAoB,IAAI;AAAA,EAC9B,OAAO,SAAS,IAAI,GAAG,SAAS,cAAc;AAAA,IAC5C,MAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAAA,IAC9C,OAAO;AAAA,SACF;AAAA,MACH,MAAM,QAAQ,QAAQ;AAAA,MACtB,MAAM,QAAQ,QAAQ,OAAO;AAAA,MAC7B,UAAU;AAAA,IACZ;AAAA,GACD;AAAA;;;AC5SI,IAAM,uBAAuB,CAClC,OACA,QACA,WACe;AAAA,EACf,MAAM,UAAU,IAAI;AAAA,EACpB,WAAW,QAAQ,OAAO;AAAA,IACxB,IAAI,KAAK,gBAAgB,WAAW;AAAA,MAClC,QAAQ,IACN,KAAK,aACL,QAAQ,IAAI,KAAK,WAAW,IAAI,YAAY,KAAK,KACnD;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,WAAW,IAAI,IACnB,OAAO,UAAU,IAAI,CAAC,aACpB,cAAc,aAAa,OAAO,UAAU,SAAS,IAAI,CAAC,CAC5D,CACF;AAAA,EACA,OAAO,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,QAClC,OAAO,aAAa,OAAO,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IACrD,CAAC,IACD;AAAA,IACE;AAAA,MACE,MAAM,cAAc,OAAO,UAAU,IAAI;AAAA,MACzC,QAAQ;AAAA,MACR,IAAI,cAAc,OAAO,UAAU,EAAE;AAAA,IACvC;AAAA,EACF,CACN;AAAA;;;ACKF,IAAM,gBAAgB,CAAC,UAAwB;AAAA,EAC7C,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,cAA4B,CAAC;AAAA,EACnC,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,WAAW,OAAO,IAAI,KAAK,KAAK;AAAA,IACtC,IAAI,UAAU;AAAA,MACZ,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK,cAAc,KAAK;AAAA,QAC9B,SAAS,wBAAwB,KAAK,UAAU,gBAAgB,KAAK;AAAA,QACrE,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,MACD;AAAA,IACF;AAAA,IACA,OAAO,IAAI,KAAK,OAAO,KAAK,EAAE;AAAA,EAChC;AAAA,EACA,OAAO,EAAE,aAAa,OAAO;AAAA;AAQ/B,IAAM,iBAAiB,CACrB,MACA,MACA,UACA,eACA,MACA,aACiB;AAAA,EACjB,IAAI,EAAE,YAAY,SAAS,WAAW;AAAA,IACpC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,SAAS,KAAK,cAAc,CAAC;AAAA,EAC/D,MAAM,SAAuB,CAAC;AAAA,EAC9B,YAAY,KAAK,WAAW,eAAe;AAAA,IACzC,IAAI,CAAC,QAAQ,IAAI,GAAG,GAAG;AAAA,MACrB,OAAO,KAAK;AAAA,WACP;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,OAAO,cAAc,UAAU,cAAc,KAAK,MAAM,IAAI,CAAC;AAAA,MAC/D,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM;AAAA;AAO5B,IAAM,uBAAuB,CAC3B,OACA,aAEA,MAAM,IAAI,CAAC,SAAS;AAAA,EAClB,IAAI,UAAU,IAAI,GAAG;AAAA,IACnB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,YAAY,KAAK,KAAK;AAAA,EAC5B,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,UAAU,OAAO,SAAS,KAAK,IAAI;AAAA,EACrC;AAAA,EACA,IAAI,KAAK,OAAO;AAAA,IACd,UAAU,QAAQ,qBAAqB,KAAK,OAAO,QAAQ;AAAA,EAC7D;AAAA,EACA,OAAO;AAAA,CACR;AAGH,IAAM,mBAAmB,CACvB,MACA,QACA,mBAEC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS;AAAA,KACtB;AAAA,EACH,OAAO,IAAI,OAAO,IAAI,CAAC,UAAU;AAAA,OAC5B;AAAA,IACH,OAAO,mBAAmB,KAAK,OAAO,QAAQ,aAAa;AAAA,EAC7D,EAAE;AAAA,EACF,OAAO,mBAAmB,IAAI,OAAO,QAAQ,aAAa;AAC5D,EAAE;AAGJ,IAAM,YAAY,CAChB,MACA,QACA,mBAC0C;AAAA,KACvC;AAAA,EACH,OAAO,mBAAmB,KAAK,OAAO,QAAQ,aAAa;AAC7D;AAGA,IAAM,qBAAqB,CACzB,YACA,QACA,mBACI;AAAA,EACJ,SAAS,WAAW,QAAQ,IAAI,CAAC,SAC/B,UAAU,MAAM,QAAQ,aAAa,CACvC;AAAA,EACA,KAAK,WAAW,MAAM,UAAU,WAAW,KAAK,QAAQ,aAAa,IAAI;AAAA,EACzE,UAAU,WAAW,SAAS,IAAI,CAAC,SACjC,UAAU,MAAM,QAAQ,aAAa,CACvC;AACF;AAQA,IAAM,sBAAsB,CAC1B,MACA,UACA,gBACY,YAAY,IAAI,IAAI,IAAI,OAAO,aAAa,UAAU,IAAI;AAQxE,IAAM,wBAAwB,CAC5B,MACA,OACA,UACA,eACA,SACA,MACA,aACA,UAAU,OACK;AAAA,EACf,MAAM,WAAW,QAAQ,YAAY;AAAA,EACrC,MAAM,OAAO,MAAM,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI;AAAA,EACxD,MAAM,cAAc,eAClB,MACA,MACA,UACA,eACA,MACA,QACF;AAAA,EAIA,MAAM,aAAa;AAAA,IACjB,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,GAAG,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;AAAA,EACjE;AAAA,EACA,MAAM,cAAc,QAAQ,eAAe,IAAI;AAAA,EAI/C,MAAM,SAAS,CAAC,MAAc,YAA8B;AAAA,IAC1D,IAAI,YAAY,IAAI,IAAI,GAAG;AAAA,MACzB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,aAAa,UAAU,IAAI;AAAA,IACzC,MAAM,SAAS,UAAU,MAAM,MAAM,GAAG;AAAA,IACxC,OAAO,WAAW,KAChB,CAAC,UAAU,UAAU,SAAU,WAAW,MAAM,WAAW,MAAM,CACnE;AAAA;AAAA,EAWF,MAAM,iBAAiB,CAAC,MAAc,YAA6B;AAAA,IACjE,MAAM,YAAY,qBAAqB,MAAM,MAAM,IAAI;AAAA,IACvD,OAAO,cAAc,QACnB,OAAO,WAAW,OAAO,KACzB,CAAC,OAAO,MAAM,OAAO,IACnB,YACA;AAAA;AAAA,EAEN,MAAM,eAAe,CAAC,SAAyB,eAAe,MAAM,IAAI;AAAA,EACxE,MAAM,OAAO,iBACX,QAAQ,WAAW,MACnB,MACA,KAAK,aACP,EAAE,IAAI,CAAC,QAAQ;AAAA,IACb,MAAM,YAAY;AAAA,SACb;AAAA,MACH,OAAO,IAAI,OAAO,IAAI,CAAC,UAAU;AAAA,WAC5B;AAAA,QACH,MAAM,aAAa,KAAK,IAAI;AAAA,MAC9B,EAAE;AAAA,MACF,MAAM,aAAa,IAAI,IAAI;AAAA,IAC7B;AAAA,IACA,IAAI,UAAU,MAAM;AAAA,MAClB,UAAU,OAAO,eAAe,UAAU,MAAM,KAAK;AAAA,IACvD;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EAMD,MAAM,cAAc,CAAC,WACnB,KAAK,WAAW,SAAS,WAAW,KAAK,gBAAgB,SAAS;AAAA,EACpE,MAAM,YAAY,YAAY,IAAI;AAAA,EAGlC,MAAM,qBACJ,YAAY,SAAS,WACjB,CAAC,SAAS,YAAY,QAAQ,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,IACzD;AAAA,EAIN,MAAM,eAAe,CAA6B,UAAgB;AAAA,OAC7D;AAAA,IACH,MAAM,eAAe,KAAK,MAAM,KAAK;AAAA,EACvC;AAAA,EACA,QAAQ,SAAS,KAAK,aAAa,mBACjC,QAAQ,YACR,MACA,KAAK,aACP;AAAA,EACA,MAAM,eAAe,QAAQ,WAAW,QAAQ;AAAA,EAEhD,MAAM,aAAa,gBAAgB,aAAa;AAAA,IAC9C,SAAS,QAAQ,IAAI,YAAY;AAAA,IACjC;AAAA,IACA,KAAK,MAAM,aAAa,GAAG,IAAI;AAAA,IAC/B;AAAA,IACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,IACpC,aAAa,QAAQ;AAAA,IACrB;AAAA,IACA,UAAU,SAAS,IAAI,YAAY;AAAA,IACnC,YAAY,QAAQ;AAAA,IAIpB,eAAe,cAAc,gBAAgB,KAAK,OAAO,GAAG,MAAM,IAAI;AAAA,IACtE,YAAY,CAAC,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IACzD,cAAc;AAAA,IACd,WAAW,QAAQ,WAAW;AAAA,IAC9B,kBAAkB,QAAQ;AAAA,IAG1B,kBAAkB;AAAA,IAKlB,SACE,WAAW,CAAC,eACR,YACA,qBAAqB,cAAc,CAAC,SAClC,eAAe,MAAM,KAAK,CAC5B;AAAA,IAGN,SAAS,cAAc,KAAK,MAAM,IAAI;AAAA,IACtC;AAAA,EACF,CAAC;AAAA,EAID,MAAM,iBAAiB,CAAC,SAAyB;AAAA,IAC/C,MAAM,YAAY,eAAe,MAAM,KAAK;AAAA,IAC5C,OAAO,cAAc,OAAO,YAAY,aAAa,UAAU,SAAS;AAAA;AAAA,EAE1E,MAAM,UACJ,QAAQ,cAAc,YAClB,aACA,KAAK,YAAY,WAAW,eAAe,QAAQ,SAAS,EAAE;AAAA,EAIpE,OAAO,QAAQ,eAAe,YAC1B,UACA;AAAA,OACK;AAAA,IACH,YAAY,oBACV,eAAe,QAAQ,YAAY,KAAK,GACxC,UACA,WACF;AAAA,EACF;AAAA;AAQN,IAAM,sBAAsB,CAC1B,OACA,SACA,MACA,aACA,UAAU,OACP;AAAA,EAGH,MAAM,WAAW,sBAAsB,IAAI;AAAA,EAG3C,MAAM,gBAAgB,IAAI;AAAA,EAC1B,IAAI,UAAU;AAAA,IACZ,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,KAAK,WAAW,YAAY,CAAC,KAAK,aAAa;AAAA,QACjD,cAAc,IAAI,KAAK,gBAAgB,IAAI;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAAA,EAOA,MAAM,qBAAiD,CAAC;AAAA,EACxD,MAAM,OAAO,IAAI;AAAA,EACjB,aAAa,UAAU,KAAK,SAAS;AAAA,IACnC,MAAM,oBAAkC,CAAC;AAAA,IACzC,mBAAmB,QAAQ,sBACzB,MACA,OACA,UACA,eACA,SACA,MACA,mBACA,OACF;AAAA,IACA,WAAW,cAAc,mBAAmB;AAAA,MAC1C,MAAM,MAAM,GAAG,WAAW;AAAA,EAAS,WAAW,QAAQ;AAAA,EAAO,WAAW;AAAA,MACxE,IAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAAA,QAClB,KAAK,IAAI,GAAG;AAAA,QACZ,YAAY,KAAK,UAAU;AAAA,MAC7B;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,aAAyB,mBAAmB,KAAK,kBAAkB;AAAA,IACvE,UAAU,CAAC;AAAA,IACX,WAAW,CAAC;AAAA,IACZ,SAAS,CAAC;AAAA,IACV,MAAM,CAAC;AAAA,EACT;AAAA,EACA,OAAO,EAAE,YAAY,mBAAmB;AAAA;AAI1C,IAAM,yBAAyB,CAC7B,IACA,cACA,SACA,gBACG;AAAA,EACH,QAAQ,SAAS;AAAA,EACjB,IAAI,MAAM;AAAA,IACR,OAAO,oBAAoB,cAAc,SAAS,MAAM,aAAa,EAAE,EACpE;AAAA,EACL;AAAA,EACA,OAAO;AAAA,IACL,IAAI,gBAAgB,cAAc;AAAA,SAC7B,mBAAmB,QAAQ,YAAY,EAAE;AAAA,MAC5C,UAAU,QAAQ,YAAY;AAAA,MAC9B;AAAA,MACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,MACpC,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,MACpB,eAAe,gBAAgB,KAAK,EAAE;AAAA,MACtC,YAAY;AAAA,MACZ,WAAW,QAAQ,WAAW;AAAA,MAC9B,kBAAkB,QAAQ;AAAA,MAC1B,kBAAkB;AAAA,MAElB,SAAS;AAAA,MAGT,MAAM,iBAAiB,QAAQ,WAAW,MAAM,EAAE;AAAA,IACpD,CAAC;AAAA,EACH;AAAA;AAIK,IAAM,oBAAoB,CAC/B,OACA,YACiB;AAAA,EACjB,QAAQ,aAAa,WAAW,cAAc,KAAK;AAAA,EACnD,QAAQ,SAAS;AAAA,EAKjB,MAAM,eAAe,QAAQ,WACzB,MAAM,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,IAC1C;AAAA,EAIJ,IAAI,qBAAiD,CAAC;AAAA,EACtD,IAAI;AAAA,EACJ,IAAI,MAAM;AAAA,KACP,EAAE,YAAY,mBAAmB,IAAI,oBACpC,cACA,SACA,MACA,WACF;AAAA,EACF,EAAO;AAAA,IACL,aAAa,gBAAgB,cAAc;AAAA,SAGtC,mBAAmB,QAAQ,YAAY,EAAE;AAAA,MAC5C,UAAU,QAAQ,YAAY;AAAA,MAC9B;AAAA,MACA,SAAS,QAAQ,WAAW,QAAQ;AAAA,MACpC,aAAa,QAAQ;AAAA,MACrB,YAAY,QAAQ;AAAA,MACpB,WAAW,QAAQ,WAAW;AAAA,MAC9B,kBAAkB,QAAQ;AAAA,MAC1B,SAAS,QAAQ,WAAW,QAAQ;AAAA,MAGpC,MAAM,iBAAiB,QAAQ,WAAW,MAAM,EAAE;AAAA,IACpD,CAAC;AAAA,IACD,IAAI,QAAQ,eAAe,WAAW;AAAA,MACpC,aAAa;AAAA,WACR;AAAA,QACH,YAAY,oBACV,QAAQ,YACR,QAAQ,YAAY,IACpB,QAAQ,eAAe,IAAI,GAC7B;AAAA,MACF;AAAA,IACF;AAAA;AAAA,EAGF,MAAM,sBAAkE,CAAC;AAAA,EACzE,aAAa,QAAQ,QAAQ,UAAU,YAAY,CAAC,GAAG;AAAA,IACrD,oBAAoB,MAAM,uBACxB,IACA,MAAM,OAAO,CAAC,SAAS,KAAK,YAAY,EAAE,GAC1C,SACA,WACF;AAAA,EACF;AAAA,EAKA,YAAY,KACV,GAAG,iBAAiB,UAAU,GAC9B,GAAG,qBAAqB,YAAY,YAAY,CAClD;AAAA,EAGA,MAAM,eAAe,QAAQ,WAAW,QAAQ;AAAA,EAChD,IAAI,cAAc;AAAA,IAChB,MAAM,QAAQ,WACZ,cACA,QAAQ,YAAY,IACpB,QAAQ,IAAI,CACd;AAAA,IACA,MAAM,cAAc,QAAQ,eAAe,IAAI;AAAA,IAC/C,YAAY,KACV,GAAG,qBACD,cACA,CAAC,UAAU,MAAM,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,CACtD,CACF;AAAA,EACF;AAAA,EAEA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA;;;AC3hBF;AACA;AAEA,sBAAS;AAiBT,IAAM,oBAAoB,IAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,SAAS,MACpB,OAAO,YACL,OAAO,QAAQ,QAAQ,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAC3E;AAGK,IAAM,4BAA4B,CACvC,UAEA,UAAU,QACN,EAAE,SAAS,OAAO,QAAQ,MAAM,IAChC,EAAE,SAAS,MAAM,QAAQ,MAAM;AA2B9B,IAAM,cAAc,CAAC,WAA6B;AAAA,EACvD,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,YAAY,IAAI;AAAA,EAGtB,MAAM,eAAe,IAAI;AAAA,EACzB,MAAM,YAAY,IAAI;AAAA,EAGtB,MAAM,QAAQ,IAAI;AAAA,EAClB,IAAI,UAAyB;AAAA,EAC7B,WAAW,QAAQ,OAAO,MAAM;AAAA,CAAI,GAAG;AAAA,IACrC,IAAI,KAAK,WAAW,MAAI,GAAG;AAAA,MACzB,UAAU,KAAK,MAAM,CAAC;AAAA,MACtB;AAAA,IACF;AAAA,IACA,OAAO,SAAS,IAAI,OAAO,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,IACpD,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,EAAE,WAAW,OAAO;AAAA,MACtB;AAAA,IACF;AAAA,IACA,MAAM,OAAO,aAAa,IAAI,IAAI,KAAK;AAAA,IACvC,IAAI,CAAC,MAAM,IAAI,IAAI,GAAG;AAAA,MACpB,UAAU,IAAI,MAAM,OAAO;AAAA,MAC3B,IAAI,WAAW,KAAK;AAAA,QAClB,MAAM,IAAI,IAAI;AAAA,MAChB;AAAA,IACF;AAAA,IACA,IAAI,OAAO,WAAW,GAAG,GAAG;AAAA,MAC1B,aAAa,IAAI,MAAM,IAAI;AAAA,MAC3B,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG;AAAA,QACxB,UAAU,IAAI,MAAM,OAAO;AAAA,MAC7B;AAAA,IACF,EAAO,SAAI,CAAC,SAAS,IAAI,IAAI,GAAG;AAAA,MAC9B,SAAS,IAAI,MAAM,OAAO;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,YAAY,MAAM,SAAS,WAAW;AAAA,IACpC,IAAI,CAAC,SAAS,IAAI,IAAI,GAAG;AAAA,MACvB,SAAS,IAAI,MAAM,IAAI;AAAA,IACzB;AAAA,EACF;AAAA,EACA,OAAO,EAAE,UAAU,UAAU;AAAA;AAYxB,IAAM,WAAW,CAAC,SAAyB;AAAA,EAChD,IAAI;AAAA,IACF,OAAO,WAAU,aAAa,OAAO,IAAI,CAAC;AAAA,IAC1C,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAUJ,IAAM,oBAAoB,CAAC,SAAgC;AAAA,EAChE,IAAI;AAAA,IACF,OAAO,aAEL,OACA,CAAC,MAAM,MAAM,aAAa,iBAAiB,GAE3C,EAAE,UAAU,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAC1E,EAAE,KAAK;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,UAAU,OAAiB,EAAE,UAAU,IAAI,KAAO,WAAW,IAAI,IAAM;AAYtE,IAAM,eAAe,CAC1B,MACA,cACA,aACA,mBACa;AAAA,EAMb,IAAI,YAAY,WAAW,KAAK,aAAa,WAAW,GAAG;AAAA,IACzD,OAAO,QAAQ;AAAA,EACjB;AAAA,EAGA,MAAM,UACJ,mBAAmB,YAAY,kBAAkB,IAAI,IAAI;AAAA,EAC3D,IAAI,YAAY,MAAM;AAAA,IACpB,OAAO,QAAQ;AAAA,EACjB;AAAA,EAIA,MAAM,MAAM,SAAS,OAAO;AAAA,EAC5B,IAAI;AAAA,IACF,MAAM,SAAS,aAEb,OACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAIA;AAAA,MACA;AAAA,MACA,GAAG,aAAa,IAAI,QAAQ;AAAA,IAC9B,GACA,EAAE,UAAU,SAAS,KAAK,OAAO,GAAG,WAAW,MAAM,OAAO,KAAK,CACnE;AAAA,IACA,MAAM,aAAa,YAAY,MAAM;AAAA,IACrC,MAAM,SAAS,QAAQ;AAAA,IACvB,WAAW,cAAc,aAAa;AAAA,MACpC,MAAM,WAAW,SAAS,KAAK,SAAS,UAAU,CAAC;AAAA,MACnD,WAAW,OAAO,CAAC,YAAY,WAAW,GAAY;AAAA,QACpD,MAAM,MAAM,WAAW,KAAK,IAAI,QAAQ;AAAA,QACxC,IAAI,KAAK;AAAA,UACP,OAAO,KAAK,IAAI,YAAY,GAAG;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO,QAAQ;AAAA;AAAA;AASZ,IAAM,yBAAyB,CAAC,SAA0B;AAAA,EAC/D,IAAI;AAAA,IACF,OACE,aAEE,OACA,CAAC,MAAM,MAAM,aAAa,yBAAyB,GAEnD;AAAA,MACE,UAAU;AAAA,MACV,KAAK,OAAO;AAAA,MACZ,OAAO,CAAC,UAAU,QAAQ,QAAQ;AAAA,IACpC,CACF,EAAE,KAAK,MAAM;AAAA,IAEf,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAIX,IAAM,2BACJ;AAUK,IAAM,6BAA6B,CACxC,MACA,iBACiB;AAAA,EACjB,IAAI,iBAAiB,KAAK,CAAC,uBAAuB,IAAI,GAAG;AAAA,IACvD,OAAO,CAAC;AAAA,EACV;AAAA,EACA,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,SAAS,sEAAsE;AAAA,MAC/E,UAAU;AAAA,MACV,YAAY;AAAA,IACd;AAAA,EACF;AAAA;AASK,IAAM,8BAA8B,CACzC,iBAEA,iBAAiB,IACb,CAAC,IACD;AAAA,EACE;AAAA,IACE,MAAM;AAAA,IACN,SAAS,8EAA8E;AAAA,IACvF,UAAU;AAAA,IACV,YAAY;AAAA,EACd;AACF;;;ACvSN;AAGA,yDAA2C;AA0C3C,IAAM,aACJ;AAEF,IAAM,iBAAiB;AAWhB,IAAM,iBAAiB,CAAC,SAAwC;AAAA,EACrE,IAAI;AAAA,IACF,WAAW,qBAAqB,MAAM,mBAAmB,KAAK,CAAC;AAAA,IAC/D,OAAO;AAAA,IACP,OAAO,OAAO;AAAA,IACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IACrE,MAAM,SAAS,WAAW,KAAK,OAAO,GAAG;AAAA,IACzC,OAAO;AAAA,MACL,QAAQ,OAAO,QAAQ,UAAU,CAAC;AAAA,MAClC,MAAM,OAAO,QAAQ,QAAQ,CAAC;AAAA,MAC9B,QAAQ,QAAQ,UAAU;AAAA,IAC5B;AAAA;AAAA;AAmBJ,IAAM,UACJ,CAAC,MAAc,YAAoB,YACnC,CAAC,MAAM,WAAW;AAAA,EAChB,MAAM,SAAS,UAAU,OAAO;AAAA,EAChC,OAAO,SACH,EAAE,QAAQ,MAAM,OAAO,MAAM,MAAM,OAAO,KAAK,IAC/C,EAAE,QAAQ,MAAM,MAAM,OAAO,WAAW;AAAA;AAQhD,IAAM,eAAe,CAAC,QAAgB,IAAU,WAC9C,OAAO,WAAW,gBAAgB,CAAC,SAAS,MAAc,WAAmB;AAAA,EAC3E,MAAM,QAAQ,OAAO,OAAO,IAAI,GAAG,OAAO,MAAM,CAAC;AAAA,EACjD,OAAO,MAAM,SAAS,GAAG,OAAO,KAAK,MAAM,QAAQ,YAAY;AAAA,CAChE;AAGH,IAAM,oBAAoB;AAC1B,IAAM,iBAAiB;AACvB,IAAM,cAAc;AAGpB,IAAM,mBAAmB,CAAC,WAA2B;AAAA,EACnD,IAAI,kBAAkB,KAAK,MAAM,GAAG;AAAA,IAClC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,eAAe,KAAK,MAAM,GAAG;AAAA,IAC/B,OAAO;AAAA,EACT;AAAA,EACA,IAAI,YAAY,KAAK,MAAM,GAAG;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA;AAOF,IAAM,sBAAsB,CACjC,OACA,QACA,YACe;AAAA,EACf,MAAM,KAAK,OAAO,MAAM,MAAM,MAAM,MAAM;AAAA,EAC1C,MAAM,SAAS,aAAa,MAAM,QAAQ,IAAI,MAAM;AAAA,EACpD,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,GAAG;AAAA,IACX,MAAM,GAAG;AAAA,IACT,MAAM,GAAG;AAAA,IACT,SAAS,QAAQ,aACb,kCAAkC,QAAQ,2BAA2B,YACrE,8BAA8B;AAAA,IAClC,UAAU,QAAQ;AAAA,IAClB,YAAY,iBAAiB,MAAM;AAAA,EACrC;AAAA;AAgBK,IAAM,iBAAiB,CAC5B,OACA,YACA,cACmB;AAAA,EACnB,IAAI,MAAM,KAAK,WAAW,OAAO;AAAA,IAC/B,OAAO,EAAE,aAAa,CAAC,GAAG,YAAY,MAAM;AAAA,EAC9C;AAAA,EAIA,MAAM,SAAS,CAAC,YACd,QACE,MAAM,cAAc,GAAG,cAAc,MAAM,OAC3C,MAAM,kBAAkB,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI,GACrE,OACF;AAAA,EACF,QAAQ,aAAa;AAAA,EACrB,MAAM,OAAO,WACT,oBAAoB,MAAM,KAAK,MAAM,SAAS,IAC9C,MAAM,KAAK;AAAA,EACf,MAAM,MAAM,eAAe,IAAI;AAAA,EAC/B,IAAI,KAAK;AAAA,IACP,OAAO;AAAA,MACL,aAAa,CAAC,oBAAoB,KAAK,OAAO,GAAG,EAAE,UAAU,QAAQ,CAAC,CAAC;AAAA,MACvE,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA,MAAM,UAAU,WAAW,eAAe,SAAS,IAAI,IAAI;AAAA,EAC3D,IAAI,EAAE,YAAY,UAAU;AAAA,IAC1B,OAAO,EAAE,aAAa,CAAC,GAAG,YAAY,MAAM;AAAA,EAC9C;AAAA,EACA,OAAO;AAAA,IACL,aAAa;AAAA,MACX,oBAAoB,SAAS,OAAO,SAAS,OAAO,GAAG;AAAA,QACrD,YAAY,MAAM;AAAA,QAClB,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,IACA,YAAY;AAAA,EACd;AAAA;AAyBF,IAAM,eAAe,OAAO,SAA4C;AAAA,EACtE,MAAM,MAAM,MAAM,SAAS,KAAK,YAAY,OAAO;AAAA,EACnD,MAAM,OAAO,oBAAO,GAAG,EAAE;AAAA,EACzB,MAAM,SAAS,mBAAmB,KAAK,IAAI;AAAA,EAC3C,MAAM,YACJ,KAAK,eAAe,qBAAqB,IAAI,IACzC,MAAM,eAAe,MAAM;AAAA,IACzB,aAAa,KAAK;AAAA,IAClB,YAAY;AAAA,IACZ,YAAY,KAAK;AAAA,EACnB,CAAC,IACD;AAAA,EACN,MAAM,UAAU,WAAW,QAAQ;AAAA,EACnC,OAAO;AAAA,IACL,QAAQ,QAAQ,KAAK,YAAY,QAAQ,WAAW,OAAO;AAAA,IAC3D,MAAM,oBAAoB,SAAS,KAAK,SAAS;AAAA,IACjD;AAAA,EACF;AAAA;AAQF,IAAM,YAAY,CAAC,YAAoB,SACrC,IAAI,OACF,OAAO,iBAAiB,KAAK,WAAW,KAAK,OAAO,OAAO,cAC3D,GACF,EAAE,KAAK,WAAW,WAAW,OAAO,KAAK,CAAC;AAG5C,IAAM,gBAAgB,CAAC,SAA0B;AAAA,EAC/C,IAAI,KAAK,SAAS,uBAAuB,KAAK,SAAS,qBAAqB;AAAA,IAC1E,OAAO,CAAC,KAAK,KAAK;AAAA,EACpB;AAAA,EACA,IAAI,KAAK,SAAS,uBAAuB,KAAK,SAAS,qBAAqB;AAAA,IAC1E,OAAO,KAAK,WAAW,QAAQ,CAAC,cAAc;AAAA,MAC5C,IAAI,UAAU,SAAS,6BAA6B;AAAA,QAClD,OAAO,CAAC,UAAU,KAAK;AAAA,MACzB;AAAA,MACA,OAAO,aAAa,UAAU,KAAK,IAAI,CAAC,UAAU,MAAM,KAAK,IAAI,CAAC;AAAA,KACnE;AAAA,EACH;AAAA,EACA,OAAO,CAAC;AAAA;AAWV,IAAM,oBAAoB,CACxB,MACA,SAC2B;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,YAAW,MAAM,EAAE,UAAU,kBAAkB,CAAC;AAAA,IACvD,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,MAAM,QAAQ,CAAC,SAAwC;AAAA,IACrD,MAAM,aAAa,cAAc,IAAI,EAAE,KAAK,CAAC,WAC3C,UAAU,QAAQ,IAAI,CACxB;AAAA,IACA,IAAI,eAAe,WAAW;AAAA,MAC5B,OAAO,EAAE,YAAY,IAAI,WAAW,KAAK,MAAM,KAAK;AAAA,IACtD;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,MAAM,QAAQ,MAAM,KAAK;AAAA,QACzB,IAAI,OAAO;AAAA,UACT,OAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA,OAAO;AAAA;AAAA,EAET,OAAO,MAAM,IAAI;AAAA;AAuBZ,IAAM,mBAAmB,OAC9B,MACA,YACmC;AAAA,EACnC,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,WAAW,MAAM,aAAa,IAAI;AAAA,IAClC,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,QAAQ,QAAQ,MAAM,YAAY;AAAA,EAClC,IAAI,QAAQ,SAAS,kBAAkB;AAAA,IACrC,MAAM,QAAQ,kBAAkB,MAAM,QAAQ,IAAI;AAAA,IAClD,MAAM,QAAQ,OAAO,KAAK,UAAU;AAAA,IACpC,IAAI,EAAE,SAAS,QAAQ;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,IAGA,MAAM,KACJ,QAAQ,MAAM;AAAA,CAAI,EAAE,MAAM,OAAO,IAAI,QAAQ,MAAM,UAAU,KAAK;AAAA,IACpE,OAAO;AAAA,SACF,OAAO,MAAM,MAAM,OAAO,KAAK,MAAM,SAAS,KAAK,CAAC;AAAA,MACvD,YAAY,MAAM;AAAA,IACpB;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,eAAe,IAAI;AAAA,EACjC,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,MAAM,aAAa,oBAAoB,OAAO,QAAQ;AAAA,IACpD,YACE,OAAO,MAAM,IAAI,EAAE,SAAS,KAAK,aAAa,YAAY,KAAK;AAAA,IACjE,UAAU;AAAA,EACZ,CAAC;AAAA,EACD,OAAO;AAAA,IACL,QAAQ,WAAW;AAAA,IACnB;AAAA,IACA,MAAM,WAAW,QAAQ,KAAK;AAAA,IAC9B,MAAM,WAAW,QAAQ;AAAA,EAC3B;AAAA;;;ACvXF,qBAAS;AAoBT,IAAM,cAAc,CAClB,KACA,aACA,eACW;AAAA,EACX,MAAM,QAAQ,IAAI,MAAM,GAAG;AAAA,EAC3B,IAAI,YAAY,IAAI,MAAM,MAAM,EAAE,GAAG;AAAA,IACnC,MAAM,MAAM;AAAA,EACd;AAAA,EACA,IAAI,WAAW,IAAI,MAAM,MAAM,EAAE,GAAG;AAAA,IAClC,MAAM,MAAM;AAAA,EACd;AAAA,EACA,OAAO,MAAM,KAAK,GAAG;AAAA;AAOvB,IAAM,cAAc,CAClB,OACA,aACuB;AAAA,EACvB,MAAM,MAAM,QAAQ,KAAK;AAAA,EACzB,OAAO,QAAQ,SAAS,SAAS,IAAI,GAAG,IACpC,MACA,aAAa,OAAO,CAAC,GAAG,QAAQ,CAAC;AAAA;AAGvC,IAAM,YACJ;AAGF,IAAM,yBAAyB,OAC7B,MACA,OACA,OACA,aAC0B;AAAA,EAC1B,MAAM,UAAU,MAAM,QAAQ,CAAC,OAAO,UACpC,SAAS,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,MAAM,CAAC,CAC9C;AAAA,EACA,IAAI,QAAQ,WAAW,GAAG;AAAA,IACxB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAS,MAAM,UAAS,MAAM,OAAO;AAAA,EAC3C,MAAM,QAAQ,QAAQ,IAAI,WAAW;AAAA,EACrC,OAAO,QAAQ,IAAI,GAAG,OAAO,YAAY;AAAA,IACvC,MAAM,WAAW,WAAW,QAAQ,CAAC,SAAS,KAAK,CAAC;AAAA,IACpD,MAAM,QAAQ,YAAY,OAAO,QAAQ;AAAA,IACzC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ,UAAU;AAAA,MAClB;AAAA,MACA,MAAM,UAAU;AAAA,MAChB,SAAS,gBAAgB,oCAAoC;AAAA,MAC7D,UAAU;AAAA,MACV,YAAY,QAAQ,iBAAiB,WAAW,cAAc;AAAA,IAChE;AAAA,GACD;AAAA;AAIH,IAAM,mBAAmB,GACrB,KAAK,QACP,WACgB;AAAA,EAChB,MAAM;AAAA,EACN;AAAA,EACA,SAAS,6BAA6B;AAAA,EACtC,UAAU;AAAA,EACV,YAAY,yDAAyD;AACvE;AAGO,IAAM,wBAAwB,OACnC,YACA,OACA,UAGI,CAAC,MACqB;AAAA,EAC1B,MAAM,WAAW,gBAAgB,MAAM,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;AAAA,EAClE,MAAM,cAAc,IAAI,IAAI,QAAQ,WAAW;AAAA,EAC/C,MAAM,aAAa,IAAI,IAAI,QAAQ,UAAU;AAAA,EAC7C,MAAM,UAAU,CAAC,QACf,YAAY,KAAK,aAAa,UAAU;AAAA,EAE1C,MAAM,SAAS,MAAM,QAAQ,IAC3B,CAAC,GAAG,WAAW,MAAM,GAAG,WAAW,MAAM,EAAE,QAAQ,EAAE,KAAK,UAAU;AAAA,IAClE,MAAM,OAAO,WAAW,MAAM,IAAI,IAAI;AAAA,IACtC,MAAM,QAAQ,QAAQ,GAAG;AAAA,IACzB,OAAO,QAAQ,KAAK,QAChB;AAAA,MACE,uBACE,MACA,KAAK,OACL,OACA,SAAS,IAAI,KAAK,KAAK,IAAI,GAC7B;AAAA,IACF,IACA,CAAC;AAAA,GACN,CACH;AAAA,EAIA,MAAM,SAAS,WAAW,OAAO,QAAQ,CAAC,UAAU;AAAA,IAClD,MAAM,QAAQ,QAAQ,MAAM,GAAG;AAAA,IAC/B,OAAO,SAAS,IAAI,KAAK,IAAI,CAAC,iBAAiB,OAAO,KAAK,CAAC,IAAI,CAAC;AAAA,GAClE;AAAA,EACD,OAAO,CAAC,GAAG,OAAO,KAAK,GAAG,GAAG,MAAM;AAAA;;;ACpIrC,wCAA4B;AAC5B;AASA,IAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AACF;AAWA,IAAM,gBAAgB,CACpB,QAEA,OAAO,QAAQ;AAGjB,IAAM,cAAc,OAAO,QACzB,cAAc,GAAG,IAAI,MAAM,IAAI,IAAI;AAmBrC,IAAM,WAAW,CAAC,YAA4B;AAAA,EAC5C,MAAM,UAAoB,CAAC;AAAA,EAC3B,WAAW,WAAW,QAAQ,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG;AAAA,IACrD,IAAI,iBAAiB,OAAO,GAAG;AAAA,MAC7B;AAAA,IACF;AAAA,IACA,IAAI,YAAY,MAAM,YAAY,KAAK;AAAA,MACrC,QAAQ,KAAK,OAAO;AAAA,IACtB;AAAA,EACF;AAAA,EACA,OAAO,QAAQ,KAAK,GAAG;AAAA;AAIzB,IAAM,WAAW,CAAC,KAAa,SAC7B,QAAQ,QACR,SAAS,MACT,QAAQ,MACR,IAAI,WAAW,GAAG,OAAO,KACzB,KAAK,WAAW,GAAG,MAAM;AAQ3B,IAAM,gBAAgB,CACpB,KACA,YAEA,YAAY,aACZ,QAAQ,KACN,CAAC,YAAY,CAAC,QAAQ,WAAW,GAAG,KAAK,SAAS,KAAK,SAAS,OAAO,CAAC,CAC1E;AAQF,IAAM,sBAAsB,CAC1B,QACA,aAEA,KAAK,CAAC,GAAG,QAAQ,GAAG;AAAA,EAClB,UAAU;AAAA,EACV,KAAK,OAAO;AAAA,EAMZ,QAAQ;AAAA,IACN,GAAI,OAAO,WAAW,CAAC;AAAA,IACvB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW;AACb,CAAC;AAGH,IAAM,iBAAiB,CAAC,QAA0B,SAChD,cAAc,UAAS,OAAO,MAAM,QAAQ,IAAI,CAAC,GAAG,OAAO,OAAO;AAS7D,IAAM,sBAAsB,OACjC,QACA,WAA8B,eACR;AAAA,EACtB,MAAM,QAAQ,MAAM,oBAAoB,QAAQ,QAAQ;AAAA,EACxD,OAAO,MAAM,OAAO,CAAC,SAAS,eAAe,QAAQ,IAAI,CAAC;AAAA;AAS5D,IAAM,aAAa,CAAC,QAA4B,QAAwB;AAAA,EACtE,MAAM,QAAQ,SAAS,SAAS,QAAQ,GAAG,IAAI;AAAA,EAC/C,IAAI,CAAC,OAAO;AAAA,IACV,OAAO;AAAA,EACT;AAAA,EACA,OAAO,MAAM,GAAG,SAAS,QAAQ;AAAA;AA+C5B,IAAM,qBAAqB,OAChC,SACA,UAGI,CAAC,MAC6B;AAAA,EAClC,MAAM,OAA2B,MAAM,QAAQ,OAAO,IAClD,UACA,CAAC,EAAE,MAAM,QAAQ,CAAC;AAAA,EAItB,MAAM,aAAa,IAAI,KACpB,QAAQ,cAAc,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,GAAG,IAAI,CAAC,CACrE;AAAA,EACA,MAAM,cAAc,IAAI,IAAI,QAAQ,WAAW;AAAA,EAE/C,MAAM,OAAO,mBAAmB;AAAA,EAChC,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAS,IAAI;AAAA,EACnB,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,SAA6B,CAAC;AAAA,EACpC,MAAM,cAA4B,CAAC;AAAA,EAKnC,MAAM,QAAQ,CAAC,QAA0B,SAAyB;AAAA,IAChE,MAAM,MAAM,UAAS,OAAO,MAAM,QAAQ,IAAI,CAAC;AAAA,IAC/C,OAAO,SAAS,QAAQ,IAAI,MAAM,GAAG;AAAA,IACrC,MAAM,UAAU,QAAQ,YAAY,IAAI,IAAI,IAAI,OAAO;AAAA,IACvD,MAAM,eAAe,UAAU,OAAO,CAAC,QAAQ,IAAI,GAAG,IAAI;AAAA,IAC1D,OAAO,eAAe,cAAc;AAAA,IACpC,MAAM,SAAS,aACV,WAAW,IAAI,WAAW,YAAY,CAAC,KAAK,KAC7C;AAAA,IACJ,MAAM,QAAQ,SAAS,aAAa,cAAc,OAAO,OAAO,EAAE,KAAK,GAAG;AAAA,IAC1E,OAAO,CAAC,SAAS,QAAQ,WAAW,OAAO,QAAQ,IAAI,CAAC,EACrD,OAAO,OAAO,EACd,KAAK,GAAG;AAAA;AAAA,EAKb,MAAM,YAAY,MAAM,QAAQ,IAC9B,KAAK,IAAI,OAAO,WAAW;AAAA,IACzB,MAAM,QAAQ,MAAM,oBAAoB,QAAQ,UAAU;AAAA,IAG1D,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,CAAC,eAAe,QAAQ,IAAI,GAAG;AAAA,QACjC,OAAO,KAAK;AAAA,UACV,KAAK,UAAS,OAAO,MAAM,QAAQ,IAAI,CAAC;AAAA,UACxC;AAAA,UACA,KAAK,MAAM,QAAQ,IAAI;AAAA,QACzB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,MAAM,SAAS,MAAM,QAAQ,IAC3B,MACG,OAAO,CAAC,SAAS,eAAe,QAAQ,IAAI,CAAC,EAC7C,IACC,OACE,SAIG;AAAA,MACH,IAAI;AAAA,QACF,OAAO;AAAA,UACL;AAAA,UACA,IAAI;AAAA,UACJ,OAAO,MAAM,YAAY,MAAM,KAAK,IAAI,CAAC;AAAA,QAC3C;AAAA,QACA,OAAO,OAAO;AAAA,QAGd,OAAO,EAAE,OAAuB,MAAM,IAAI,MAAM;AAAA;AAAA,KAGtD,CACJ;AAAA,IACA,OAAO,EAAE,QAAQ,OAAO;AAAA,GACzB,CACH;AAAA,EAEA,aAAa,QAAQ,YAAY,WAAW;AAAA,IAC1C,WAAW,SAAS,QAAQ;AAAA,MAC1B,MAAM,MAAM,MAAM,QAAQ,MAAM,IAAI;AAAA,MAEpC,IAAI,CAAC,MAAM,IAAI;AAAA,QACb,YAAY,KAAK;AAAA,UACf,MAAM;AAAA,UACN,MAAM,MAAM;AAAA,UACZ,SAAS,6BAA6B,MAAM,MAAM;AAAA,UAClD,UAAU;AAAA,QACZ,CAAC;AAAA,QACD;AAAA,MACF;AAAA,MAEA,MAAM,SAAS,iBAAiB,UAAU,MAAM,KAAK;AAAA,MACrD,IAAI,OAAO,SAAS;AAAA,QAClB,MAAM,SAAS,SAAS,MAAM,IAAI,EAAE,WAAW,SAAS,IACpD,SACA;AAAA,QACJ,OAAO,IAAI,KAAK,OAAO,IAAI;AAAA,QAC3B,MAAM,IAAI,OAAO,MAAM,MAAM,IAAI;AAAA,MACnC,EAAO;AAAA,QACL,YAAY,KACV,GAAG,mBAAmB,OAAO,OAAO;AAAA,UAClC,MAAM;AAAA,UACN,MAAM,MAAM;AAAA,QACd,CAAC,CACH;AAAA;AAAA,IAEJ;AAAA,EACF;AAAA,EAIA,MAAM,OAAO,IAAI,IACf,UAAU,QAAQ,GAAG,aAAa,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,CACrE;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ,OAAO,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC;AAAA,EACxD;AAAA;AAaK,IAAM,0BAA0B,CACrC,MACA,WACA,aAAgC,CAAC,MACd;AAAA,EACnB,MAAM,UAAU,IAAI,IAAI,UAAU;AAAA,EAClC,MAAM,UAAU,CAAC,KAAa,SAAiC;AAAA,IAC7D,OAAO,SAAS,QAAQ,IAAI,MAAM,GAAG;AAAA,IACrC,MAAM,gBAAgB,UAAU,IAC9B,SAAS,aAAa,QAAQ,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,GAC7D;AAAA,IACA,OAAO,gBAAgB,KAAK,kBAAkB,KAAK,IAAI;AAAA;AAAA,EAEzD,OAAO;AAAA,IACL,MAAM,IAAI,IACR,CAAC,GAAG,KAAK,IAAI,EAAE,IAAI,EAAE,KAAK,UAAU,CAAC,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,CAC/D;AAAA,IACA,QAAQ,IAAI,IAAI;AAAA,MACd,GAAG;AAAA,MACH,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,UAAgC;AAAA,QAC7D;AAAA,QACA,KAAK,UAAU,IAAI,GAAG,MAAM,KAAK;AAAA,MACnC,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;;;AC1WF,iBAAS;;;ACuDT,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,aAAa;AAGZ,IAAM,iBAAiB,CAAC,UAA8C;AAAA,EAC3E,MAAM,MAAM,SAAS,QAAQ,OAAO,iBAAiB,CAAC;AAAA,EACtD,IAAI,CAAC,KAAK;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,aAAa,SAAS,QAAQ,OAAO,yBAAyB,CAAC;AAAA,IAC/D,aAAa,SAAS,QAAQ,OAAO,oBAAoB,CAAC;AAAA,IAC1D,UAAU,SAAS,QAAQ,OAAO,sBAAsB,CAAC;AAAA,IACzD,OAAO,SAAS,QAAQ,OAAO,cAAc,CAAC;AAAA,IAC9C,KAAK,YAAY,GAAG;AAAA,EACtB;AAAA;AAGF,IAAM,WAAW,CAAC,SAAmC,UAAU,KAAK,OAAO;AAE3E,IAAM,UAAU,CAAC,SAAkC;AAAA,EACjD,MAAM,QAAqB,CAAC;AAAA,EAC5B,WAAW,QAAQ,UAAU,KAAK,KAAK,GAAG;AAAA,IACxC,QAAQ,SAAS,KAAK,IAAI;AAAA,WACnB,QAAQ;AAAA,QACX,MAAM,OAAO;AAAA,QACb;AAAA,MACF;AAAA,WACK,UAAU;AAAA,QACb,MAAM,SAAS;AAAA,QACf;AAAA,MACF;AAAA,WACK,QAAQ;AAAA,QACX,MAAM,OAAO;AAAA,QACb;AAAA,MACF;AAAA,WACK,iBAAiB;AAAA,QACpB,MAAM,SAAS;AAAA,QACf;AAAA,MACF;AAAA;AAAA;AAAA,EAGJ;AAAA,EACA,OAAO;AAAA;AAOT,IAAM,eAAe,CACnB,MACA,YACsB;AAAA,EACtB,MAAM,SAAS,QAAQ,MAAM,aAAa;AAAA,EAC1C,IAAI,QAAQ,MAAM,oBAAoB,MAAM,WAAW;AAAA,IAGrD,OAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,SAAS,QAAQ,MAAM,oBAAoB,CAAC;AAAA,EACvD,OAAO,KAAM,UAAU,EAAE,KAAK,OAAQ;AAAA;AAGxC,IAAM,cAAc,CAClB,MACA,YAC2B;AAAA,EAC3B,IAAI,QAAQ,MAAM,oBAAoB,MAAM,WAAW;AAAA,IACrD,MAAM,SAAS,aAAa,IAAI;AAAA,IAChC,OAAO,SAAS,eAAe,MAAM,IAAI;AAAA,EAC3C;AAAA,EACA,MAAM,KAAK,SAAS,QAAQ,MAAM,oBAAoB,CAAC;AAAA,EACvD,OAAO,KAAM,QAAQ,eAAe,EAAE,KAAK,OAAQ;AAAA;AAGrD,IAAM,gBAAgB,CACpB,MACA,YACW;AAAA,EACX,MAAM,QAAQ,aAAa,MAAM,QAAQ,YAAY;AAAA,EACrD,MAAM,cAAc,QAChB,SAAS,QAAQ,OAAO,wBAAwB,CAAC,IACjD;AAAA,EACJ,MAAM,aAAa,cACf,QAAQ,cAAc,eACtB;AAAA,EACJ,IAAI,SAAS,YAAY;AAAA,IACvB,OAAO,WAAW,KAAK;AAAA,EACzB;AAAA,EACA,OAAO,YACL,4BAA4B,cAAc,KAAK,gBAAgB,MAC/D,UAAU,QAAQ,WAAW,CAC/B;AAAA;AAGF,IAAM,cAAc,CAClB,OACA,YAGA,MAAM,QAAQ,CAAC,SAAS,gBAAgB,MAAM,OAAO,CAAC;AAExD,IAAM,kBAAkB,CACtB,MACA,YACiB;AAAA,EACjB,QAAQ,SAAS,KAAK,QAAQ;AAAA,SACvB,QAAQ;AAAA,MACX,OAAO,CAAC,EAAE,OAAO,QAAQ,IAAI,GAAG,MAAM,SAAS,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACpE;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,UACL,YAAY,SAAS,IAAI,GAAG,OAAO,GACnC,SAAS,QAAQ,MAAM,UAAU,CAAC,CACpC;AAAA,IACF;AAAA,SACK,mBAAmB;AAAA,MACtB,OAAO,UACL,YAAY,SAAS,IAAI,GAAG,OAAO,GACnC,YAAY,MAAM,OAAO,GAAG,GAC9B;AAAA,IACF;AAAA,SACK,mBAAmB;AAAA,MACtB,MAAM,QAAQ,aAAa,MAAM,QAAQ,YAAY;AAAA,MACrD,MAAM,OAAO,QAAQ,QAAQ,YAAY,KAAK,IAAI;AAAA,MAClD,OAAO,UAAU,YAAY,SAAS,IAAI,GAAG,OAAO,GAAG,IAAI;AAAA,IAC7D;AAAA,SACK,yBAAyB;AAAA,MAC5B,OAAO,CAAC,EAAE,UAAU,cAAc,MAAM,OAAO,EAAE,CAAC;AAAA,IACpD;AAAA,aACS;AAAA,MAEP,OAAO,YAAY,SAAS,IAAI,GAAG,OAAO;AAAA,IAC5C;AAAA;AAAA;AAKJ,IAAM,YAAY,CAChB,MACA,YAEA,gBAAgB,aAAa,YAAY,SAAS,IAAI,GAAG,OAAO,CAAC,CAAC;AAEpE,IAAM,aAAa,CACjB,OACA,QACA,YAEA,MACG,IAAI,CAAC,MAAM,UACV,SACE,OAAO,KAAK,GAGZ,SAAS,IAAI,EAEV,IAAI,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC,EAC1C,OAAO,CAAC,UAAU,UAAU,EAAE,EAC9B,KAAK;AAAA,CAAI,CACd,CACF,EACC,KAAK;AAAA,CAAI;AAId,IAAM,WAAW,CACf,MACA,YAEA,SAAS,IAAI,EACV,IAAI,CAAC,cAAc,UAAU,WAAW,OAAO,CAAC,EAChD,KAAK,GAAG,EACR,WAAW,YAAY,GAAG,EAC1B,WAAW,WAAW,OAAO,OAAO;AAEzC,IAAM,WAAW,CAAC,UAA4B,KAAK,MAAM,KAAK,KAAK;AAEnE,IAAM,cAAc,CAClB,MACA,YACW;AAAA,EACX,MAAM,OAAO,SAAS,IAAI,EAAE,IAAI,CAAC,QAC/B,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,SAAS,MAAM,OAAO,CAAC,CACrD;AAAA,EACA,OAAO,SAAS,QAAQ;AAAA,EACxB,IAAI,CAAC,MAAM;AAAA,IACT,OAAO;AAAA,EACT;AAAA,EACA,OAAO;AAAA,IACL,SAAS,IAAI;AAAA,IACb,SAAS,KAAK,IAAI,MAAM,KAAK,CAAC;AAAA,IAC9B,GAAG,KAAK,IAAI,CAAC,UAAU,SAAS,KAAK,CAAC;AAAA,EACxC,EAAE,KAAK;AAAA,CAAI;AAAA;AAGb,IAAM,cAAc,CAClB,MACA,YACW;AAAA,EACX,MAAM,OAAO,SAAS,KAAK,QAAQ,KAAK;AAAA,EACxC,MAAM,UAAU,QAAQ,KAAK,IAAI,GAAG,QAAQ;AAAA,EAC5C,IAAI,SAAS;AAAA,IACX,OAAO,GAAG,cAAc,OAAO,OAAO,CAAC,IAAI,UAAU,MAAM,OAAO;AAAA,EACpE;AAAA,EACA,QAAQ;AAAA,SACD,aAAa;AAAA,MAChB,OAAO,UAAU,MAAM,OAAO;AAAA,IAChC;AAAA,SACK,cAAc;AAAA,MACjB,OAAO,WACL,WAAW,SAAS,IAAI,EAAE,IAAI,CAAC,UAAU,YAAY,OAAO,OAAO,CAAC,CAAC,CACvE;AAAA,IACF;AAAA,SACK,kBAAkB;AAAA,MACrB,OAAO,WAAW,SAAS,IAAI,GAAG,MAAM,KAAK,OAAO;AAAA,IACtD;AAAA,SACK,gBAAgB;AAAA,MACnB,OAAO,WAAW,SAAS,IAAI,GAAG,CAAC,UAAU,GAAG,QAAQ,MAAM,OAAO;AAAA,IACvE;AAAA,SACK,MAAM;AAAA,MACT,OAAO;AAAA,IACT;AAAA,SACK,wBAAwB;AAAA,MAC3B,MAAM,QAAQ,YAAY,MAAM,OAAO;AAAA,MACvC,IAAI,CAAC,OAAO;AAAA,QACV,OAAO;AAAA,MACT;AAAA,MAGA,IAAI,MAAM,eAAe,CAAC,MAAM,YAAY,WAAW,QAAQ,GAAG;AAAA,QAChE,MAAM,QAAQ,MAAM,SAAS,MAAM,YAAY,MAAM;AAAA,QACrD,OAAO,aAAa,UAAU,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,MACxE;AAAA,MAGA,OAAO,MAAM,MAAM,eAAe,MAAM,SAAS,IAAI,MAAM,GAAG;AAAA,IAChE;AAAA,SACK,wBAAwB;AAAA,MAC3B,OAAO,cAAc,MAAM,OAAO;AAAA,IACpC;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,YAAY,MAAM,OAAO;AAAA,IAClC;AAAA,aACS;AAAA,MACP,OAAO,YACL,oBAAoB,QACpB,UAAU,QAAQ,WAAW,CAC/B;AAAA,IACF;AAAA;AAAA;AAKG,IAAM,+BAA+B,CAC1C,KACA,UAAqC,CAAC,MAEtC,iBAAiB,SAAS,GAAG,EAAE,IAAI,CAAC,SAAS,YAAY,MAAM,OAAO,CAAC,CAAC;;;AC3T1E;AAsDO,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,QAAQ,cACZ,KAAK,YAAY,KAAK,UAAU,SAAS,QAAQ,IAAI,CACvD;AAAA,EACA,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,OAAO,OACX,UAAU,KAAK,WAAW,SACI;AAAA,IAC9B,QAAQ,mBAAmB;AAAA,IAG3B,IAAI,WAAyB,CAAC;AAAA,IAC9B,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,MAAM,QAAsB,CAAC;AAAA,MAC7B,MAAM,UAAU,MAAM,QAAQ,aAAa,CAAC,eAAe;AAAA,QACzD,MAAM,KAAK,UAAU;AAAA,OACtB;AAAA,MACD,WAAW;AAAA,MACX,OAAO;AAAA,OAET,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO,KAAK,QAAQ,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,QAAQ,EAAE;AAAA;AAAA,EAGxE,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,OAAO,IAAI,KAAK,CAAC,UAAU,MAAM,QAAQ,GAAG,GAAG,OAAO;AAAA;AAAA,EAGxD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,KAAK,IAAI,GACf,QAAQ,cACR,MAAM,KAAK,CACb,IACA;AAAA,IACJ,aAAa,QAAQ;AAAA,EACvB;AAAA;AAgBK,IAAM,cAAc,CACzB,MACA,MACA,UACA,cACA,SAAuB,SACP;AAAA,EAChB,MAAM,MAAM,oBAAO,UAAU,UAAU,IAAI;AAAA,EAC3C,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,MAAM,SAAS;AAAA,IAG/B,MAAM,KAAK,KAAK;AAAA,IAChB,MAAM,SAAS,GAAG;AAAA,IAClB;AAAA,IACA;AAAA,IACA,KAAK,GAAG,QAAQ;AAAA,EAClB;AAAA;AASK,IAAM,qBAAqB,CAAC,MAAc,QAC/C,IAAI,WAAW;AAAA,EACb,MAAM;AAAA,EACN,SAAS,WAAW,eAAe;AAAA,EACnC,UAAU;AAAA,EACV,YAAY,OAAO;AACrB,CAAC;AAeI,IAAM,oBAAoB;AAQ1B,IAAM,YAAY,OACvB,KACA,WACuB;AAAA,EACvB,MAAM,UAAU,OAAO,aAAa,WAAW;AAAA,EAC/C,MAAM,MAAM,MAAM,QAAQ,KAAK;AAAA,IAC7B,SAAS,EAAE,QAAQ,uBAAuB,OAAO,QAAQ;AAAA,IACzD,QAAQ,YAAY,QAAQ,iBAAiB;AAAA,EAC/C,CAAC;AAAA,EACD,IAAI,CAAC,IAAI,IAAI;AAAA,IACX,MAAM,IAAI,MAAM,GAAG,iBAAiB,IAAI,UAAU,IAAI,aAAa,KAAK,CAAC;AAAA,EAC3E;AAAA,EAGA,OAAQ,MAAM,IAAI,KAAK;AAAA;AAIlB,IAAM,cAAc,CACzB,WACW;AAAA,EACX,MAAM,SAAS,IAAI;AAAA,EACnB,YAAY,KAAK,UAAU,OAAO,QAAQ,MAAM,GAAG;AAAA,IACjD,IAAI,UAAU,WAAW;AAAA,MACvB,OAAO,IAAI,KAAK,KAAK;AAAA,IACvB;AAAA,EACF;AAAA,EACA,OAAO,OAAO,SAAS;AAAA;AA6BlB,IAAM,eAAe,CAC1B,KACA,WACA,OAEA,YAAY,SAAS,QAAQ,KAAK,SAAS,CAAC,KAAK,EAAE,KACnD,QAAQ,EAAE,KACV;AAUK,IAAM,gBAAgB,CAC3B,KACA,QACA,IACA,OACA,QAAQ,OACR,cAAc,UACE;AAAA,EAChB,MAAM,OAAO,aAAa,KAAK,OAAO,MAAM,EAAE;AAAA,EAC9C,MAAM,OAA0B,CAAC;AAAA,EACjC,MAAM,QAAQ,SAAS,QAAQ,KAAK,OAAO,KAAK,CAAC;AAAA,EACjD,MAAM,cAAc,SAAS,QAAQ,KAAK,OAAO,WAAW,CAAC;AAAA,EAC7D,IAAI,OAAO;AAAA,IACT,KAAK,QAAQ;AAAA,EACf;AAAA,EACA,IAAI,aAAa;AAAA,IACf,KAAK,cAAc;AAAA,EACrB;AAAA,EACA,IAAI,OAAO;AAAA,IACT,KAAK,QAAQ;AAAA,EACf;AAAA,EACA,MAAM,QAAQ,OAAO,QAAQ,SAAS,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI;AAAA,EACpE,IAAI,UAAU,WAAW;AAAA,IACvB,KAAK,UAAU,EAAE,MAAM;AAAA,EACzB;AAAA,EACA,MAAM,OAAO,QAAQ,KAAK,OAAO,IAAI;AAAA,EACrC,IAAI,WAAW;AAAA,EACf,IAAI,SAAuB;AAAA,EAC3B,IAAI,eAAc,IAAI,GAAG;AAAA,IAIvB,WAAW,sBAAsB,GAAG,KAAK,QAAQ;AAAA,CAAK;AAAA,EACxD,EAAO,SAAI,SAAS,WAAW;AAAA,IAC7B,WAAW,MAAM,IAAI;AAAA,IACrB,SAAS,cAAc,QAAQ;AAAA,EACjC;AAAA,EACA,OAAO,YACL,MACA,MACA,UACA,SAAS,QAAQ,KAAK,OAAO,YAAY,CAAC,GAC1C,MACF;AAAA;;;AC/NF,IAAM,gBAAgB;AACtB,IAAM,eAAe;AACrB,IAAM,YAAY;AAElB,IAAM,iBAA+B;AAAA,EACnC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AACT;AAGA,IAAM,OAAO,CAAC,YACZ,IAAI,IACF,QAAQ,IAAI,CAAC,WAAW,CAAC,SAAS,QAAQ,QAAQ,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,CAC7E;AAgBF,IAAM,YAAY,CAAC,SAAgC;AAAA,EACjD,MAAM,MAAM,SAAS,KAAK,GAAG,KAAK,CAAC;AAAA,EACnC,OAAO;AAAA,IACL,IAAI,SAAS,IAAI,EAAE,KAAK;AAAA,IACxB,MAAM,KAAK,SAAS,KAAK,MAAM,GAAG,IAAI;AAAA,EACxC;AAAA;AAUK,IAAM,mBAAmB,CAC9B,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,KAAK,mBAAmB,QAAQ,OAAO;AAAA,EAMtD,MAAM,UAAU,CAAC,MAAkB,OAAuB;AAAA,IACxD,MAAM,QAAQ,kBACZ,EAAE,KAAK,GAAG,aAAa,MAAM,OAAO,MAAM,EAAE,OAAO,GACnD,OACA,WACA,EAAE,MAAM,QAAQ,MAAM,QAAQ,QAAQ,QAAQ,UAAU,QAAQ,SAAS,CAC3E;AAAA,IACA,OAAO,eACL,MAAM,cACN,MAAM,QAAQ,MAAM,IACpB,QAAQ,IACV;AAAA;AAAA,EAGF,MAAM,UAAU,CACd,QACE,QAAQ,UACV,QACA,SACgB;AAAA,IAChB,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,IAInC,MAAM,UAAU,IAAI;AAAA,IACpB,MAAM,QAAQ,cACZ,MACA,QACA,IACA,CAAC,SACC,aAAa,IAAI,IACb,6BAA6B,MAAM;AAAA,MAIjC,WAAW,CAAC,WACV,OAAO,IAAI,SAAS,QAAQ,QAAQ,QAAQ,CAAC,KAAK,EAAE;AAAA,MACtD,cAAc,CAAC,YAAY;AAAA,QACzB,MAAM,QAAQ,OAAO,IAAI,OAAO;AAAA,QAChC,IAAI,CAAC,OAAO;AAAA,UACV,QAAQ,IAAI,UAAU,UAAU;AAAA,UAChC,OAAO;AAAA,QACT;AAAA,QACA,OAAO,eAAe,KAAK;AAAA;AAAA,MAE7B,cAAc,CAAC,YAAY;AAAA,QACzB,MAAM,SAAS,OAAO,IAAI,OAAO;AAAA,QACjC,IAAI,CAAC,QAAQ;AAAA,UACX,QAAQ,IAAI,UAAU,UAAU;AAAA,QAClC;AAAA,QACA,OAAO,UAAU;AAAA;AAAA,MAEnB,aAAa,QAAQ;AAAA,IACvB,CAAC,IACD,IACN,OACA,UAAU,QAAQ,WAAW,CAC/B;AAAA,IACA,WAAW,QAAQ,SAAS;AAAA,MAC1B,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,WAAW,MAAM,4BAA4B;AAAA,QACzE,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,UAAU,KAAK,WAAW;AAAA,EAChC,MAAM,eAAe,MACnB,QAAQ,gBAAgB,QAAQ,IAAI;AAAA,EAKtC,MAAM,mBAAmB,MAAY;AAAA,IACnC,IAAI,WAAW,CAAC,aAAa,GAAG;AAAA,MAC9B,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ;AAAA,QAC5B,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA;AAAA,EAGF,MAAM,eAAe,OACnB,SAC2B;AAAA,IAC3B,MAAM,QAAQ,UACV,aAAa,IACZ,QAAQ,SAAS,QAAQ,IAAI;AAAA,IAGlC,IAAI,CAAC,OAAO;AAAA,MACV,MAAM,mBAAmB,QAAQ,MAAM,yBAAyB;AAAA,IAClE;AAAA,IACA,MAAM,SAAqB;AAAA,MACzB,WAAW,QAAQ;AAAA,MACnB,SAAS,EAAE,eAAe,UAAU,QAAQ;AAAA,IAC9C;AAAA,IACA,MAAM,OAAO,UACR,QAAQ,eAAe,eACvB,QAAQ,QAAQ;AAAA,IACrB,MAAM,OAAO,WAAW,eAAe,QAAQ,sBAAsB,QAAQ,eAAe;AAAA,IAC5F,MAAM,QAAuB,CAAC;AAAA,IAC9B,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,OAAO,MAAM;AAAA,MAGX,MAAM,QAAQ,YAAY;AAAA,WACrB,QAAQ;AAAA,QACX,cAAc,QAAQ;AAAA,QACtB,SAAS;AAAA,QACT,OAAO,OAAO,SAAS;AAAA,QACvB,QAAQ,QAAQ;AAAA,QAChB,MAAM,OAAO,IAAI;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,OAAO,SAAS,MAAM,UAAU,GAAG,QAAQ,SAAS,MAAM,CAAC;AAAA,MACjE,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,IAAI,MAAM,2CAA2C;AAAA,MAC7D;AAAA,MACA,MAAM,QAAQ,UAAU,KAAK,KAAK;AAAA,MAClC,MAAM,KAAK;AAAA,QACT,QAAQ,KAAK,UAAU,QAAQ,MAAM,gBAAgB,CAAC,CAAC;AAAA,QACvD;AAAA,QAGA,QAAQ,KAAK,CAAC,GAAG,UAAU,QAAQ,MAAM,gBAAgB,CAAC,GAAG,GAAG,KAAK,CAAC;AAAA,MACxE,CAAC;AAAA,MACD,QAAQ,MAAM;AAAA,MACd,OAAO,MAAM,SAAS,KAAK,QAAQ,SAAS,KAAK,KAAK,KAAK;AAAA,IAC7D;AAAA,IAGA,MAAM,SAAS,IAAI,IACjB,MAAM,QAAQ,GAAG,YACf,MAAM,IAAI,CAAC,SAA2B;AAAA,MACpC,QAAQ,IAAI,SAAS,UAAU,IAAI;AAAA,MACnC,OAAO,CAAC,IAAI,QAAQ,MAAM,EAAE,CAAC;AAAA,KAC9B,CACH,CACF;AAAA,IACA,OAAO,MAAM,QAAQ,CAAC,SACpB,KAAK,MAAM,IAAI,CAAC,SAAS,QAAQ,MAAM,MAAM,QAAQ,IAAI,CAAC,CAC5D;AAAA;AAAA,EAGF,OAAO,aACL;AAAA,IACE;AAAA,IACA;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,cAAc,QAAQ;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB,aAAa,CAAC,SAAS,iBAAiB,SAAS,IAAI;AAAA,EACvD,GACA,GACF;AAAA;;;ACtSF,8BAAqB;AACrB,qBAAS;AAET;AACA,sCAA8B,mBAAM;AACpC,iBAAS;AAsCF,IAAM,mBAAmB,CAC9B,YACqD;AAAA,EACrD,MAAM,cAAc,WAAW,QAAQ,IAAI,IACvC,QAAQ,OACR,MAAK,QAAQ,QAAQ,WAAW,GAAG,QAAQ,IAAI;AAAA,EAEnD,MAAM,OAAO,YAAuC;AAAA,IAClD,MAAM,QAAQ,MAAM,MAAK,QAAQ,SAAS;AAAA,MACxC,UAAU;AAAA,MACV,KAAK;AAAA,MAIL,QAAQ,CAAC,GAAG,QAAQ,SAAS,GAAG,mBAAmB,CAAC;AAAA,MACpD,WAAW;AAAA,IACb,CAAC;AAAA,IACD,MAAM,KAAK;AAAA,IAIX,MAAM,cAA4B,CAAC;AAAA,IACnC,MAAM,WAAqB,CAAC;AAAA,IAC5B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,aAAa,yBACjB,UAAS,aAAa,IAAI,GAC1B,IACF;AAAA,MACA,IAAI,YAAY;AAAA,QACd,YAAY,KAAK,UAAU;AAAA,MAC7B,EAAO;AAAA,QACL,SAAS,KAAK,IAAI;AAAA;AAAA,IAEtB;AAAA,IAEA,MAAM,OAAO,MAAM,QAAQ,IACzB,SAAS,IAAI,OAAO,SAA4C;AAAA,MAC9D,MAAM,SAAS,MAAM,UAAS,MAAM,OAAO;AAAA,MAC3C,MAAM,MAAM,QAAQ,IAAI,EAAE,YAAY;AAAA,MACtC,MAAM,SAAS,QAAQ,SAAS,QAAQ;AAAA,MAGxC,IAAI;AAAA,MACJ,IAAI;AAAA,QACF,SAAS,oBAAO,MAAM;AAAA,QACtB,OAAO,OAAO;AAAA,QACd,IAAI,iBAAiB,eAAe;AAAA,UAClC,OAAO,0BAA0B,OAAO,IAAI;AAAA,QAC9C;AAAA,QACA,MAAM;AAAA;AAAA,MAER,OAAO;AAAA,QACL,MAAM,EAAE,QAAQ,MAAM,OAAO,QAAQ;AAAA,QACrC,MAAM,OAAO;AAAA,QAIb,KAAK;AAAA,QACL,KAAK,UAAS,aAAa,IAAI;AAAA,QAC/B,YAAY;AAAA,MACd;AAAA,KACD,CACH;AAAA,IACA,MAAM,UAAyB,CAAC;AAAA,IAChC,WAAW,QAAQ,MAAM;AAAA,MACvB,IAAI,UAAU,MAAM;AAAA,QAClB,QAAQ,KAAK,IAAI;AAAA,MACnB,EAAO;AAAA,QACL,YAAY,KAAK,IAAI;AAAA;AAAA,IAEzB;AAAA,IAEA,OAAO,EAAE,aAAa,QAAQ;AAAA;AAAA,EAGhC,MAAM,WAAW,MAAY;AAAA,IAC3B,IAAI,CAAC,WAAW,WAAW,GAAG;AAAA,MAC5B,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM,QAAQ,eAAe;AAAA,QAC7B,MAAM;AAAA,QACN,SAAS,2BAA2B,QAAQ;AAAA,QAC5C,UAAU;AAAA,QAGV,YAAY,aAAa,QAAQ;AAAA,MACnC,CAAC;AAAA,IACH;AAAA;AAAA,EAOF,MAAM,kBAAkB,IAAI,IAAI;AAAA,IAC9B,GAAG;AAAA,IACH,GAAG,mBAAmB,QAAQ,OAAO;AAAA,EACvC,CAAC;AAAA,EAED,MAAM,QAAQ,CAAC,aAAuC;AAAA,IACpD,IAAI,CAAC,WAAW,WAAW,GAAG;AAAA,MAC5B,OAAO,MAAM;AAAA,IAGf;AAAA,IACA,MAAM,UAAU,QACd,aACA,EAAE,WAAW,KAAK,GAClB,sBAAsB,UAAU,eAAe,CACjD;AAAA,IACA,OAAO,MAAM,QAAQ,MAAM;AAAA;AAAA,EAG7B,OAAO;AAAA,IACL;AAAA,IACA,SAAS,QAAQ;AAAA,IACjB,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,MAAM,CAAC,QACL,UAAS,MAAK,aAAa,GAAG,GAAG,OAAO;AAAA,IAC1C,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAAA;;;ACtKF;AACA;AACA,qBAAS;AACT;AACA;AA8DA,IAAM,gBAAgB;AACtB,IAAM,WAAW;AAEjB,IAAM,YAAY;AAClB,IAAM,WAAW;AACjB,IAAM,cAAc;AAMpB,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AAKxB,IAAM,iBAAiB;AACvB,IAAM,aAAa;AACnB,IAAM,oBAAoB;AAG1B,IAAM,YAAY,IAAI,IAAI,CAAC,QAAQ,WAAW,QAAQ,eAAe,CAAC;AAUtE,IAAM,qBAAqB,CAAC,SAAqC;AAAA,EAC/D,MAAM,OAAO,aAAa,KAAK,WAAW,gBAAgB,SAAS,GAAG;AAAA,IACpE,YAAY,CAAC,IAAI,CAAC;AAAA,IAClB,iBAAiB,CAAC,gBAAgB,CAAC;AAAA,EACrC,CAAC;AAAA,EACD,MAAM,OAAO,KAAK,SACf,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC,EAG1C,IAAI,CAAC,SACJ,eAAc,MAAM,EAAE,aAAa,OAAO,iBAAiB,MAAM,CAAC,CACpE,EACC,KAAK,GAAG,EACR,WAAW,YAAY,GAAG,EAC1B,KAAK;AAAA,EACR,IAAI,CAAC,MAAM;AAAA,IACT;AAAA,EACF;AAAA,EACA,IAAI,YAAY,IAAI,KAAK,iBAAiB;AAAA,IACxC,OAAO;AAAA,EACT;AAAA,EAGA,MAAM,QAAQ,cAAc,MAAM,kBAAkB,CAAC;AAAA,EACrD,MAAM,WAAW,MAAM,YAAY,GAAG;AAAA,EACtC,MAAM,QACJ,aAAa,MAAM,YAAY,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,kBACxD,MAAM,MAAM,GAAG,QAAQ,IACvB,OACJ,QAAQ,mBAAmB,EAAE;AAAA,EAC/B,OAAO,GAAG;AAAA;AAIZ,IAAM,aAAa,CAAC,SAA2B;AAAA,EAC7C,IAAI,KAAK,SAAS,WAAW;AAAA,IAC3B,OAAO,CAAC,IAAI;AAAA,EACd;AAAA,EACA,MAAM,QAAmB,CAAC;AAAA,EAC1B,IAAI,cAAc,MAAM;AAAA,IACtB,WAAW,SAAS,KAAK,UAAU;AAAA,MACjC,MAAM,KAAK,GAAG,WAAW,KAAK,CAAC;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,IAAM,eAAe,CAAC,SAAyB;AAAA,EAC7C,MAAM,WAAW,WACf,aAAa,MAAM;AAAA,IACjB,YAAY,CAAC,IAAI,CAAC;AAAA,IAClB,iBAAiB,CAAC,gBAAgB,CAAC;AAAA,EACrC,CAAC,CACH;AAAA,EACA,MAAM,OAAO,KAAK,IAAI,GAAG,SAAS,IAAI,CAAC,YAAY,QAAQ,KAAK,CAAC,IAAI;AAAA,EACrE,IAAI,SAAS,WAAW,KAAK,QAAQ,GAAG;AAAA,IACtC,OAAO;AAAA,EACT;AAAA,EACA,IAAI,SAAS;AAAA,EAEb,WAAW,WAAW,SAAS,WAAW,GAAG;AAAA,IAC3C,MAAM,SAAS,OAAO,QAAQ,KAAK,QAAQ,UAAU,MAAM,MAAM;AAAA,IACjE,SAAS,OAAO,MAAM,GAAG,MAAM,IAAI,OAAO,MAAM,SAAS,IAAI;AAAA,EAC/D;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,eAAe;AACrB,IAAM,iBAAiB;AAGvB,IAAM,YAAY,CAAC,SAAiC;AAAA,EAClD,MAAM,SAAS,OAAO,IAAI,MAAM,IAAI,IAAI;AAAA,EACxC,OAAO,UAAU,aAAa,KAAK,OAAO,QAAQ,IAAI,OAAO,SAAS;AAAA;AAIxE,IAAM,cAAc,CAAC,UACnB,QAAQ,KAAK,MAAM,WAAW,gBAAgB,OAAO,QAAQ,OAAO;AAOtE,IAAM,gBAAgB,CACpB,UACA,MACA,SACW;AAAA,EACX,MAAM,SAAS,GAAG,YAAY,IAAI,IAAI,YAAY,KAAK,KAAK;AAAA,EAC5D,IAAI,KAAK,SAAS,cAAc;AAAA,IAC9B,OAAO,IAAI,KAAK,SAAS,KAAK,gBAAgB;AAAA,EAChD;AAAA,EACA,MAAM,QAAQ,KAAK,UAAU,MAAM,UAAU;AAAA,EAC7C,IAAI,SAAS,WAAW,KAAK;AAAA,IAC3B,OAAO,IAAI,mBAAmB,eAAc,IAAI,CAAC,MAAM;AAAA,EACzD;AAAA,EACA,MAAM,QAAQ,KAAK,SAAS,GAAG,CAAC,GAAG,UAAU,MAAM,UAAU,QAAQ;AAAA,EACrE,MAAM,OAAO,KAAK,SAAS,GAAG,EAAE,GAAG,UAAU,IAAI,UAAU;AAAA,EAC3D,OAAO,IAAI,SAAS,MAAM,OAAO,IAAI,MAAM;AAAA;AAS7C,IAAM,qBAAqB,CAAC,UAAkB,SAA0B;AAAA,EACtE,MAAM,SAAS,UAAU,IAAI;AAAA,EAC7B,IAAI,CAAC,QAAQ;AAAA,IACX,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAwD,CAAC;AAAA,EAC/D,MAAM,QAAQ,CAAC,SAAsB;AAAA,IACnC,IAAI,KAAK,SAAS,UAAU,KAAK,SAAS,cAAc;AAAA,MACtD,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG;AAAA,MACjC,IAAI,QAAQ,WAAW,QAAQ;AAAA,QAC7B,MAAM,KAAK;AAAA,UAET,KAAK,KAAK,UAAU,IAAI,UAAU;AAAA,UAClC,OAAO,KAAK,UAAU,MAAM,UAAU;AAAA,UACtC,MAAM,cACJ,UACA,MACA,GAAG,OAAO,WAAW,OAAO,SAAS,OAAO,MAC9C;AAAA,QACF,CAAC;AAAA,QACD;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAI,cAAc,MAAM;AAAA,MACtB,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,MAAM,KAAK;AAAA,MACb;AAAA,IACF;AAAA;AAAA,EAEF,MACE,aAAa,UAAU;AAAA,IACrB,YAAY,CAAC,IAAI,CAAC;AAAA,IAClB,iBAAiB,CAAC,gBAAgB,CAAC;AAAA,EACrC,CAAC,CACH;AAAA,EACA,IAAI,MAAM;AAAA,EACV,IAAI,SAAS;AAAA,EACb,WAAW,QAAQ,OAAO;AAAA,IACxB,OAAO,SAAS,MAAM,QAAQ,KAAK,KAAK,IAAI,KAAK;AAAA,IACjD,SAAS,KAAK;AAAA,EAChB;AAAA,EACA,OAAO,MAAM,SAAS,MAAM,MAAM;AAAA;AAIpC,IAAM,aAAa,CAAC,QAClB,IAAI,YAAY,EAAE,WAAW,UAAU,GAAG,EAAE,WAAW,aAAa,EAAE;AAGxE,IAAM,gBAAgB,MAAe;AAAA,EACnC,MAAM,UAAU,IAAI,QAAQ,EAAE,QAAQ,8BAA8B,CAAC;AAAA,EACrE,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,IAAI,OAAO;AAAA,IACT,QAAQ,IAAI,iBAAiB,UAAU,OAAO;AAAA,EAChD;AAAA,EACA,OAAO;AAAA;AAoBT,IAAM,kBAAkB,CAAC,YAAmC;AAAA,EAC1D,IAAI,QAAQ,OAAO;AAAA,IACjB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,QAAQ,aAAa,eAAe;AAAA;AAS7C,IAAM,iBAAiB,CAAC,SAAwB,SAA+B;AAAA,EAC7E,MAAM,UAAU,QAAQ,SAAS,QAAQ,WAAW,EAAE;AAAA,EACtD,MAAM,QAAQ,QAAQ,MAAM,KAAK,KAAK,QAAQ;AAAA,EAC9C,MAAM,OAAO,QAAQ,gBAAgB,QAAQ;AAAA,EAC7C,MAAM,WAAW,gBAAgB,OAAO;AAAA,EAKxC,MAAM,OAAO,aACX,mBACE,uBACG,QAAQ,QAAQ,IAAI,WAAW;AAAA,GAAQ;AAAA,CAAI,CAC9C,EAAE,KAAK,GACP,IACF,CACF;AAAA,EAIA,MAAM,cAAc,mBAAmB,IAAI;AAAA,EAG3C,MAAM,OAA6B;AAAA,IACjC,WAAW,EAAE,UAAU,QAAQ;AAAA,IAC/B;AAAA,EACF;AAAA,EACA,IAAI,aAAa;AAAA,IACf,KAAK,MAAM,EAAE,YAAY;AAAA,EAC3B;AAAA,EACA,KAAK,QAAQ;AAAA,EACb,KAAK,OAAO;AAAA,EACZ,MAAM,MAAM,oBAAO,UAAU,GAAG;AAAA,GAAU,IAAI;AAAA,EAC9C,MAAM,cAAc,WAAW,QAAQ;AAAA,EACvC,MAAM,MAAM,GAAG,WAAW,QAAQ,QAAQ,KAAK;AAAA,EAC/C,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,MAAM,MAAM,KAAK;AAAA,IAGjC,MAAM,KAAK,KAAK;AAAA,IAChB,SAAS,QAAQ;AAAA,IACjB,MAAM,SAAS,GAAG;AAAA,IAClB,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF;AAAA;AAUK,IAAM,uBAAuB,CAClC,SACA,QACkB;AAAA,EAClB,MAAM,UAAU,QAAQ,aAAa,WAAW;AAAA,EAChD,MAAM,QAAQ,QAAQ,WAAW,gBAAgB,QAAQ,QAAQ,EAAE;AAAA,EACnE,MAAM,MAAM,QAAQ,SAAS;AAAA,EAC7B,MAAM,QAAQ,cAAc,IAAI,QAAQ;AAAA,EACxC,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,UAAU,CAAC,aACd,QAAQ,UAAU,CAAC,QAAQ,WAC3B,QAAQ,eAAe,CAAC,QAAQ;AAAA,EAOnC,MAAM,YAAY,OAAO,SAA2C;AAAA,IAClE,MAAM,MAAM,GAAG,cAAc,QAAQ,SAAS,QAAQ,0BAA0B,iBAAiB;AAAA,IACjG,IAAI;AAAA,MACF,MAAM,MAAM,MAAM,QAAQ,KAAK;AAAA,QAC7B,SAAS,cAAc;AAAA,QACvB,QAAQ,YAAY,QAAQ,iBAAiB;AAAA,MAC/C,CAAC;AAAA,MACD,IAAI,CAAC,IAAI,IAAI;AAAA,QACX,MAAM,IAAI,MAAM,GAAG,UAAU,IAAI,QAAQ;AAAA,MAC3C;AAAA,MAGA,OAAQ,MAAM,IAAI,KAAK;AAAA,MACvB,OAAO,OAAO;AAAA,MACd,IAAI,iBAAiB,gBAAgB,MAAM,SAAS,gBAAgB;AAAA,QAClE,MAAM,IAAI,MACR,GAAG,8BAA8B,oBAAoB,SACrD,EAAE,OAAO,MAAM,CACjB;AAAA,MACF;AAAA,MACA,MAAM;AAAA;AAAA;AAAA,EAIV,MAAM,gBAAgB,YAAsC;AAAA,IAC1D,MAAM,YAA6B,CAAC;AAAA,IACpC,IAAI,OAAO;AAAA,IACX,OAAO,UAAU,SAAS,KAAK;AAAA,MAE7B,MAAM,QAAQ,MAAM,UAAU,IAAI;AAAA,MAClC,UAAU,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAAA,MACvC,IAAI,MAAM,SAAS,UAAU;AAAA,QAC3B;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,IACV;AAAA,IACA,OAAO,UAAU,MAAM,GAAG,GAAG;AAAA;AAAA,EAG/B,MAAM,OAAO,OACX,UAAU,IAAI,WAAW,SACK;AAAA,IAC9B,IAAI;AAAA,MACF,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,QACV,MAAM,WAAW,MAAM,cAAc;AAAA,QACrC,OAAO,SAAS,IAAI,CAAC,YACnB,eAAe,SAAS,QAAQ,IAAI,CACtC;AAAA,SAEF,OACF;AAAA,MACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,MACpE,OAAO;AAAA,MACP,OAAO,OAAO;AAAA,MAKd,WAAW,IAAI;AAAA,MAGf,OAAO;AAAA,QACL,aAAa;AAAA,UACX;AAAA,YACE,MAAM;AAAA,YACN,SAAS,WAAW,QAAQ,0CAA2C,MAAgB;AAAA,YACvF,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,QACA,SAAS,CAAC;AAAA,MACZ;AAAA;AAAA;AAAA,EAIJ,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,IAC3C,OAAO,OAAO,OAAO,OAAO,KAAK,QAAQ;AAAA;AAAA,EAG3C,OAAO;AAAA,IACL;AAAA,IAEA,aAAa;AAAA,IACb,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,KAAK,IAAI,GACf,QAAQ,cACR,MAAM,KAAK,CACb,IACA;AAAA,IACJ,aAAa,CAAC,SAAS,qBAAqB,SAAS,IAAI;AAAA,EAC3D;AAAA;;;ACheF;AAgDA,IAAM,iBAAiB,CAAC,YAAkD;AAAA,EAGxE,MAAM,WAAW,UACf,QAAQ,OAAO,CAAC,YAAY,CAAC,QAAQ,WAAW,GAAG,CAAC,CACtD;AAAA,EACA,MAAM,WAAW,UACf,QACG,OAAO,CAAC,YAAY,QAAQ,WAAW,GAAG,CAAC,EAC3C,IAAI,CAAC,YAAY,QAAQ,MAAM,CAAC,CAAC,CACtC;AAAA,EACA,OAAO,CAAC,QAAQ,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG;AAAA;AAahD,IAAM,eAAe,IAAI,IAAI,CAAC,kBAAkB,2BAA2B,CAAC;AAE5E,IAAM,cAAc,CAAC,QACnB,IAAI,SAAS,GAAG,KAAK,aAAa,IAAI,IAAI,IAAI,GAAG,EAAE,QAAQ;AAE7D,IAAM,iBAAgB,CAAC,QAAwC;AAAA,EAC7D,MAAM,QAAQ,QAAQ,IAAI;AAAA,EAC1B,OAAO,SAAS,YAAY,GAAG,IAAI,EAAE,eAAe,UAAU,QAAQ,IAAI,CAAC;AAAA;AAM7E,IAAM,iBAAiB,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AAO9C,IAAM,eAAe,CAAC,KAAa,WACjC,eAAe,IAAI,MAAM,KAAK,CAAC,QAAQ,IAAI,gBAAgB,YAAY,GAAG,IACtE,GAAG,UAAU,sEACb,GAAG,UAAU;AASnB,IAAM,YAAY,OAChB,KACA,YACoB;AAAA,EACpB,IAAI;AAAA,IAEF,MAAM,MAAM,MAAM,QAAQ,KAAK;AAAA,MAC7B,SAAS,eAAc,GAAG;AAAA,MAC1B,QAAQ,YAAY,QAAQ,iBAAiB;AAAA,IAC/C,CAAC;AAAA,IACD,IAAI,CAAC,IAAI,IAAI;AAAA,MACX,MAAM,IAAI,MAAM,aAAa,KAAK,IAAI,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,OAAO,MAAM,IAAI,KAAK;AAAA,IACtB,OAAO,OAAO;AAAA,IACd,IAAI,iBAAiB,gBAAgB,MAAM,SAAS,gBAAgB;AAAA,MAClE,MAAM,IAAI,MACR,GAAG,8BAA8B,oBAAoB,SACrD,EAAE,OAAO,MAAM,CACjB;AAAA,IACF;AAAA,IACA,MAAM;AAAA;AAAA;AAqBV,IAAM,kBAAkB,OACtB,QACA,SACA,YACyB;AAAA,EACzB,QAAQ,OAAO,MAAM,QAAQ;AAAA,EAC7B,MAAM,OAAO,OAAO,KAAK,WAAW,aAAa,EAAE;AAAA,EACnD,MAAM,UAAU,gCAAgC,SAAS,kBAAkB;AAAA,EAC3E,MAAM,OAAO,MAAM,UAAU,SAAS,OAAO;AAAA,EAG7C,MAAM,OAAO,KAAK,MAAM,IAAI;AAAA,EAI5B,MAAM,SAAS,OAAO,GAAG,UAAU;AAAA,EACnC,MAAM,WAAW,eAAe,OAAO;AAAA,EACvC,MAAM,QAAQ,KAAK,QAAQ,CAAC,GAAG,QAAQ,CAAC,SAAS;AAAA,IAC/C,IAAI,EAAE,KAAK,SAAS,UAAU,KAAK,KAAK,WAAW,MAAM,IAAI;AAAA,MAC3D,OAAO,CAAC;AAAA,IACV;AAAA,IACA,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,MAAM;AAAA,IACzC,IAAI,CAAC,SAAS,GAAG,GAAG;AAAA,MAClB,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACL;AAAA,QACE,SAAS,sBAAsB,SAAS,aAAa,OAAO,SAAS;AAAA,QACrE,UAAU,qCAAqC,SAAS,QAAQ,OAAO,SAAS;AAAA,QAChF,KAAK;AAAA,MACP;AAAA,IACF;AAAA,GACD;AAAA,EAGD,MAAM,YAAY,KAAK,cAAc;AAAA,EAGrC,MAAM,QACJ,WAAW,MACX,cACC,KAAK,QAAQ,CAAC,GAAG,KAAK,CAAC,SAAS,KAAK,KAAK,WAAW,MAAM,CAAC;AAAA,EAC/D,OAAO;AAAA,IACL,SAAS,QAAQ,YAAY,IAAI,YAAY,SAAS,WAAW;AAAA,IACjE;AAAA,IACA;AAAA,EACF;AAAA;AAKF,IAAM,cAAc;AAoBpB,IAAM,sBAAsB,CAAC,SAAiC;AAAA,EAC5D,MAAM,QAAQ,KAAK,KAAK,MAAM;AAAA,CAAI;AAAA,EAClC,MAAM,QAAQ,MAAM,UAAU,CAAC,SAAS,KAAK,KAAK,MAAM,EAAE;AAAA,EAC1D,MAAM,OAAO,YAAY,KAAK,MAAM,UAAU,EAAE,IAAI,IAAI;AAAA,EACxD,OAAO,WACL,UAAU,KACN,CAAC,IACD,gBAAgB,MAAM,MAAM,OAAO,QAAQ,IAAI,EAAE,KAAK;AAAA,CAAI,CAAC;AAAA,EACjE,IACE,SAAS,UAAU,KACnB,QAAQ,SAAS,MAChB,KAAK,KAAK,UAAU,aAAa,KAAK,KAAK,UAAU,QAAQ,MAC9D;AAAA,IACA,OAAO;AAAA,EACT;AAAA,EACA,MAAM,KAAK,IAAI,OAAO,QAAQ,IAAI;AAAA,EAClC,OAAO;AAAA,IACL,MAAM,MAAM,KAAK;AAAA,CAAI;AAAA,IACrB,MAAM,KAAK,KAAK,MAAM,OAAO,QAAQ,KAAK;AAAA,EAC5C;AAAA;AAQK,IAAM,kBAAkB,CAC7B,SACA,QACkB;AAAA,EAClB,MAAM,UAAU,QAAQ,aAAa,WAAW;AAAA,EAChD,MAAM,QAAQ,cAAc,IAAI,QAAQ;AAAA,EACxC,IAAI,WAAW,IAAI;AAAA,EAMnB,MAAM,mBAAmB,MAAY;AAAA,IACnC,IAAI,QAAQ,UAAW,QAAQ,SAAS,QAAQ,KAAM;AAAA,MACpD;AAAA,IACF;AAAA,IACA,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ;AAAA,MAC5B,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAGH,MAAM,YAAY,YAAkC;AAAA,IAClD,IAAI,QAAQ,QAAQ;AAAA,MAClB,OAAO,MAAM,gBAAgB,QAAQ,QAAQ,QAAQ,SAAS,OAAO;AAAA,IACvE;AAAA,IACA,MAAM,QAAQ,QAAQ,OAAO,IAAI,QAAQ,QAAQ,EAAE;AAAA,IACnD,MAAM,WAAW,eAAe,QAAQ,OAAO;AAAA,IAC/C,MAAM,QAAQ,QAAQ,SAAS,CAAC,GAAG,QAAQ,CAAC,QAC1C,SAAS,GAAG,IACR,CAAC,EAAE,SAAS,GAAG,QAAQ,OAAO,UAAU,GAAG,QAAQ,OAAO,IAAI,CAAC,IAC/D,CAAC,CACP;AAAA,IACA,OAAO,EAAE,MAAM,WAAW,MAAM;AAAA;AAAA,EAGlC,MAAM,aAAa,OAAO,SAA0C;AAAA,IAClE,MAAM,OAAO,MAAM,UAAU,KAAK,UAAU,OAAO;AAAA,IACnD,MAAM,SAAS,oBAAO,IAAI;AAAA,IAC1B,MAAM,SAAS,KAAK,IAAI,YAAY,EAAE,SAAS,MAAM,IAAI,QAAQ;AAAA,IACjE,MAAM,OAAO,oBAAoB;AAAA,MAC/B,MAAM,OAAO;AAAA,MACb,MAAM,OAAO;AAAA,IACf,CAAC;AAAA,IACD,OAAO;AAAA,MACL,MAAM,EAAE,QAAQ,MAAM,KAAK,KAAK;AAAA,MAChC,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,MAAM,SAAS,IAAI;AAAA,MAInB,KAAK,KAAK,MAAM,GAAG,KAAK,SAAS,OAAO,QAAQ,MAAM,IAAI,KAAK;AAAA,MAC/D,KAAK,KAAK;AAAA,IACZ;AAAA;AAAA,EAGF,MAAM,OAAO,OACX,UAAU,IAAI,WAAW,SACK;AAAA,IAC9B,iBAAiB;AAAA,IACjB,MAAM,UAAwB,CAAC;AAAA,IAC/B,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,QAAQ,SAAS,MAAM,cAAc,MAAM,UAAU;AAAA,MACrD,IAAI,SAAS;AAAA,QACX,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,SAAS,WAAW,QAAQ,2CAA2C;AAAA,UACvE,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,MACA,IAAI,WAAW;AAAA,QAGb,QAAQ,KAAK;AAAA,UACX,MAAM;AAAA,UACN,SAAS,WAAW,QAAQ;AAAA,UAC5B,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,MACA,MAAM,UAAoB,CAAC;AAAA,MAC3B,MAAM,UAAU,MAAM,QAAQ,IAC5B,KAAK,IAAI,OAAO,QAAQ;AAAA,QACtB,IAAI;AAAA,UACF,OAAO,MAAM,WAAW,GAAG;AAAA,UAC3B,OAAO,OAAO;AAAA,UAGd,MAAM,SAAU,MAAgB;AAAA,UAChC,QAAQ,KAAK,MAAM;AAAA,UACnB,QAAQ,KAAK;AAAA,YACX,MAAM;AAAA,YACN,SAAS,WAAW,QAAQ,kBAAkB,IAAI,SAAS;AAAA,YAC3D,UAAU;AAAA,UACZ,CAAC;AAAA,UACD,OAAO;AAAA;AAAA,OAEV,CACH;AAAA,MACA,MAAM,UAAU,QAAQ,OACtB,CAAC,UAAgC,UAAU,IAC7C;AAAA,MAMA,IAAI,KAAK,SAAS,KAAK,QAAQ,WAAW,GAAG;AAAA,QAC3C,QAAQ,SAAS;AAAA,QACjB,MAAM,IAAI,MACR,OAAO,KAAK,0CAA0C,QAAQ,KAChE;AAAA,MACF;AAAA,MACA,OAAO;AAAA,OAET,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO;AAAA,SACF;AAAA,MACH,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,OAAO;AAAA,IACjD;AAAA;AAAA,EAGF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG;AAAA,IAC3C,OAAO,OAAO,OAAO,OAAO,KAAK,QAAQ;AAAA;AAAA,EAG3C,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IAId,cAAc;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,KAAK,IAAI,GACf,QAAQ,cACR,MAAM,KAAK,CACb,IACA;AAAA,IACJ,aAAa,CAAC,SAAS,gBAAgB,SAAS,IAAI;AAAA,EACtD;AAAA;;;ACpZF,uBAAS;AAET;AACA,iBAAS;;;ACHT;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,oBAAS,kBAAS;AAQlB,IAAM,WACJ;AAGF,IAAM,qBAAqB;AAK3B,IAAM,iBACJ;AACF,IAAM,SAAS;AACf,IAAM,mBACJ;AAGF,IAAM,cAAc;AASpB,IAAM,cAAc,IAAI,IAAI;AAAA,EAC1B,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,iBAAiB,MAAM;AAAA,EACxB,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,4BAA4B,MAAM;AAAA,EACnC,CAAC,cAAc,OAAO;AAAA,EACtB,CAAC,gBAAgB,MAAM;AAAA,EACvB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,aAAa,MAAM;AAAA,EACpB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,cAAc,OAAO;AACxB,CAAC;AAGD,IAAM,aAAa,IAAI,IAAI,CAAC,GAAG,YAAY,OAAO,GAAG,OAAO,CAAC;AAG7D,IAAM,eAAe,IAAI,IAAI;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,cAAc;AAGpB,IAAM,qBAAqB;AA0B3B,IAAM,aAAa,CAAC,QAA+B;AAAA,EACjD,MAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,MAAM;AAAA,EACnC,MAAM,MAAM,SAAQ,KAAK,EAAE,YAAY;AAAA,EACvC,OAAO,WAAW,IAAI,GAAG,IAAI,MAAM;AAAA;AAIrC,IAAM,WAAW,CAAC,QAAiB,UAChC,UAAU,QAAQ,IAAI,WAAW,oBAAoB,SAAS;AAGjE,IAAM,YAAY,CAAC,QACjB,IAAI,QAAQ,IAAI,cAAc,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE,YAAY,KAAK;AAE1E,IAAM,SAAS,OAAO,SAAmC;AAAA,EACvD,IAAI;AAAA,IACF,MAAM,OAAO,IAAI;AAAA,IACjB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAWX,IAAM,eAAe,OACnB,KACA,SAC2B;AAAA,EAC3B,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,QAAQ,MAAM,QAAQ,GAAG;AAAA,IACzB,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,MAAM,aAAa,MAAM,OACvB,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI,KAAK,MAAM,KAAK,MAAM,CAAC,CAC3E;AAAA,EACA,OAAO,WAAW,WAAW,IAAK,WAAW,MAAM,OAAQ;AAAA;AAQ7D,IAAM,SAAS,CAAC,MAAc,WAAkC;AAAA,EAC9D,MAAM,MAAM,YAAY,IAAI,IAAI,MAAM,aAAa,IAAI,IAAI,IAAI,SAAS;AAAA,EACxE,IAAI,KAAK;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA,MAAM,IAAI,MACR,aAAa,IAAI,IAAI,IACjB,kBAAkB,QAAQ,+DAC1B,kBAAkB,6BACxB;AAAA;AAYK,IAAM,oBAAoB,OAC/B,UACA,QAC6D;AAAA,EAC7D,MAAM,UAAU,IAAI,aAAa,WAAW;AAAA,EAC5C,MAAM,QAAQ,IAAI,UAAU,CAAC,SAAS,KAAK;AAAA,EAC3C,MAAM,WAAW,IAAI,YAAY,IAAI;AAAA,EACrC,MAAM,YAAY,IAAI,aAAa;AAAA,EACnC,MAAM,cAA4B,CAAC;AAAA,EAKnC,MAAM,SAAmB,CAAC;AAAA,EAC1B,MAAM,SAAS,SAAS,QAAQ,kBAAkB,CAAC,UAAU;AAAA,IAC3D,OAAO,KAAK,KAAK;AAAA,IACjB,OAAO,mBAAqB,OAAO,SAAS;AAAA,GAC7C;AAAA,EAED,MAAM,aAAa;AAAA,IACjB,GAAG,CAAC,GAAG,OAAO,SAAS,QAAQ,CAAC,EAAE,IAAI,CAAC,UACrC,SAAS,MAAM,QAAQ,QAAQ,MAAM,QAAQ,IAAI,CACnD;AAAA,IACA,GAAG,CAAC,GAAG,OAAO,SAAS,cAAc,CAAC,EAAE,IACtC,CAAC,UAAU,MAAM,QAAQ,OAAO,EAClC;AAAA,EACF;AAAA,EACA,MAAM,OAAO,IAAI,IAAI,WAAW,OAAO,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC,CAAC;AAAA,EAGjE,MAAM,WAAW,OAAO,KAAa,SAAkC;AAAA,IACrE,MAAM,SAAS,WAAW,GAAG;AAAA,IAI7B,IAAI,UAAW,MAAM,OAAO,MAAK,IAAI,WAAW,GAAG,OAAO,QAAQ,CAAC,GAAI;AAAA,MACrE,OAAO,GAAG,OAAO;AAAA,IACnB;AAAA,IACA,MAAM,YAAY,MAAM,aAAa,IAAI,WAAW,IAAI;AAAA,IACxD,IAAI,WAAW;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,MAAM,MAAM,MAAM,QAAQ,KAAK,EAAE,QAAQ,YAAY,QAAQ,SAAS,EAAE,CAAC;AAAA,IACzE,IAAI,CAAC,IAAI,IAAI;AAAA,MACX,MAAM,IAAI,MAAM,GAAG,IAAI,QAAQ;AAAA,IACjC;AAAA,IAIA,MAAM,MAAM,OAAO,UAAU,GAAG,GAAG,MAAM;AAAA,IACzC,IAAI,CAAC,IAAI,MAAM;AAAA,MACb,MAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAAA,IACA,MAAM,OAAO,GAAG,OAAO;AAAA,IACvB,MAAM,SAAS,MAAK,IAAI,WAAW,IAAI;AAAA,IACvC,MAAM,MAAM,IAAI,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,IAO9C,MAAM,OAAO,GAAG,UAAU,WAAW,IAAI;AAAA,IACzC,IAAI;AAAA,MACF,MAAM,UAAU,MAAM,IAAI,IAAI;AAAA,MAC9B,OAAO,OAAO;AAAA,MACd,MAAM,GAAG,MAAM,EAAE,OAAO,KAAK,CAAC;AAAA,MAC9B,MAAM;AAAA;AAAA,IAER,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,OAAO;AAAA;AAAA,EAUT,MAAM,UAAU,OAAO,QAAiC;AAAA,IAMtD,MAAM,OAAO,SAAS,IAAI,MAAM,GAAG,EAAE,MAAM,GAAG;AAAA,IAC9C,MAAM,UAAU,SAAS,IAAI,IAAI;AAAA,IACjC,IAAI,SAAS;AAAA,MACX,IAAI;AAAA,QACF,OAAO,MAAM;AAAA,QACb,MAAM;AAAA,QAGN,OAAO,MAAM,QAAQ,GAAG;AAAA;AAAA,IAE5B;AAAA,IACA,MAAM,OAAO,YAAY;AAAA,MACvB,IAAI;AAAA,QACF,OAAO,MAAM,MAAM,MAAM,SAAS,KAAK,IAAI,CAAC;AAAA,gBAC5C;AAAA,QACA,SAAS,OAAO,IAAI;AAAA;AAAA,OAErB;AAAA,IACH,SAAS,IAAI,MAAM,GAAG;AAAA,IACtB,OAAO,MAAM;AAAA;AAAA,EAGf,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,QAAQ,IACZ,CAAC,GAAG,IAAI,EAAE,IAAI,OAAO,QAAQ;AAAA,IAC3B,IAAI;AAAA,MACF,MAAM,OAAO,MAAM,QAAQ,GAAG;AAAA,MAC9B,SAAS,IAAI,KAAK,GAAG,IAAI,iBAAiB,MAAM;AAAA,MAChD,OAAO,OAAO;AAAA,MAGd,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,SAAS,4BAA4B,QAAS,MAAgB;AAAA,QAC9D,UAAU;AAAA,MACZ,CAAC;AAAA;AAAA,GAEJ,CACH;AAAA,EAEA,MAAM,YAAY,OACf,WACC,UACA,CAAC,OAAe,KAAa,QAAiB,SAAkB;AAAA,IAC9D,MAAM,QAAQ,SAAS,IAAI,SAAS,QAAQ,IAAI,CAAC;AAAA,IACjD,OAAO,QAAQ,KAAK,QAAQ,WAAW;AAAA,GAE3C,EACC,WAAW,gBAAgB,CAAC,OAAO,MAAM,KAAK,UAAU;AAAA,IACvD,MAAM,QAAQ,SAAS,IAAI,GAAG;AAAA,IAC9B,OAAO,QAAQ,GAAG,OAAO,QAAQ,UAAU;AAAA,GAC5C,EACA,WAAW,aAAa,CAAC,OAAO,UAAU,OAAO,OAAO,KAAK,MAAM,KAAK;AAAA,EAE3E,OAAO,EAAE,aAAa,UAAU,UAAU;AAAA;;;AD5H5C,IAAM,iBAAiB,CAAC,OAAyB,CAAC,GAAG,MAAM,UAAkB;AAAA,EAC3E,MAAM,SAAuB,CAAC;AAAA,EAC9B,aAAa,cAAc,CAAC,GAAG,MAAM,YAAY,UAAU,MAAM;AAAA,IAC/D,MAAM,MAAiB;AAAA,MACrB,OAAO;AAAA,QACL,MAAM,YAAY;AAAA,QAClB,MAAM,YAAY;AAAA,QAClB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAAA,IACA,MAAM,OAAO,OAAO,GAAG,EAAE;AAAA,IACzB,IAAI,QAAQ,KAAK,UAAU,QAAQ,YAAY;AAAA,MAC7C,KAAK,KAAK,KAAK,GAAG;AAAA,IACpB,EAAO;AAAA,MACL,OAAO,KAAK,EAAE,MAAM,QAAQ,WAAW,MAAM,CAAC,GAAG,EAAE,CAAC;AAAA;AAAA,EAExD;AAAA,EACA,MAAM,QAAQ,OAAO,QAAQ,GAAG,MAAM,WAAW,UAAU,MAAM,MAAM,GAAG,CAAC;AAAA,EAC3E,OAAO,MAAM,gBAAgB,KAAK,IAAI,aAAa,KAAK;AAAA;AAQ1D,IAAM,aAAY,CAAC,MAAoC,QACrD,MAAM,eAAe,MAAM,IAAI,IAAI,gBAAgB,eAAe,IAAI,CAAC;AAEzE,IAAM,iBAAiB,CACrB,UACgC,OAAO,UAAU;AAGnD,IAAM,YAAY,CAAC,UAAuD;AAAA,EACxE,MAAM,QAAQ,MAAM,MAAM;AAAA,EAC1B,OAAO,eAAe,KAAK,IAAI,QAAQ;AAAA;AAGzC,IAAM,aAAa,CAAC,UAClB,UAAU,KAAK,GAAG,aAAa,CAAC;AAElC,IAAM,eAAe;AACrB,IAAM,cAAc;AACpB,IAAM,gBAAgB;AACtB,IAAM,YAAY;AAClB,IAAM,sBAAsB;AAC5B,IAAM,6BAA6B;AAUnC,IAAM,kBAAkB,OACtB,MACA,UAAU,MACK;AAAA,EACf,IAAI;AAAA,IACF,OAAO,MAAM,KAAK;AAAA,IAClB,OAAO,OAAO;AAAA,IAId,QAAQ,WAAW;AAAA,IACnB,IAAI,WAAW,gBAAgB,YAAY,aAAa;AAAA,MACtD,MAAM;AAAA,IACR;AAAA,IAKA,QAAQ,YAAY;AAAA,IACpB,MAAM,aAAa,OAAO,SAAS,MAAM,aAAa,CAAC;AAAA,IACvD,MAAM,OACJ,aAAa,IACT,aAAa,YACb,gBAAgB,KAAK,WAAW,IAAI,KAAK,OAAO;AAAA,IACtD,MAAM,MAAM,IAAI;AAAA,IAChB,OAAO,gBAAgB,MAAM,UAAU,CAAC;AAAA;AAAA;AAK5C,IAAM,aAAa,OACjB,MACA,QACA,MAAW,CAAC,MACK;AAAA,EACjB,MAAM,MAAM,MAAM,KAAK,MAAM;AAAA,EAC7B,MAAM,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,OAAO;AAAA,EACnC,OAAO,IAAI,YAAY,IAAI,cACvB,WAAW,MAAM,IAAI,aAAa,GAAG,IACrC;AAAA;AAGN,IAAM,cAAc,IAAI,IAAI;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGD,IAAM,aAAa,CAAC,UAClB,UAAU,aAAa,YAAY,IAAI,MAAM,IAAI;AAEnD,IAAM,cAAc,CAAC,OAAyB,CAAC,MAC7C,KAAK,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,KAAK,EAAE;AAQ7C,IAAM,YAAY,CAAC,UAA0B,IAAI,KAAK,UAAU,KAAK;AAMrE,IAAM,gBAAgB;AAEtB,IAAM,eAAe;AAMrB,IAAM,eAAe,CAAC,QAAyB;AAAA,EAC7C,MAAM,OAAO,IAAI,MAAM,GAAG,GAAG,YAAY;AAAA,EACzC,OAAO,aAAa,KAAK,IAAI,KAAK,gBAAgB,GAAG,MAAM;AAAA;AAO7D,IAAM,cAAc,CAAC,SAAqC;AAAA,EACxD,MAAM,MAAM,KAAK,UAAU,OAAO,KAAK,MAAM;AAAA,EAC7C,IAAI,CAAC,KAAK;AAAA,IACR,OAAO;AAAA,EACT;AAAA,EACA,MAAM,UAAU,eAAe,KAAK,OAAO;AAAA,EAO3C,MAAM,QAAQ,UAAU,UAAU,UAAU,YAAY,KAAK,OAAO,CAAC,MAAM;AAAA,EAQ3E,MAAM,QAAQ,aAAa,GAAG,IAC1B,WAAW,aAAa,UAAU,GAAG,SACrC,wBAAwB,IAAI,WAAW,KAAK,KAAK;AAAA,EACrD,OAAO,UACH,kBAAkB,UAAU,QAAQ,WAAW,eAAe,EAAE,CAAC;AAAA,EAAO;AAAA,YACxE;AAAA;AAIN,IAAM,aAAa,CAAC,OAAoB,QAAgC;AAAA,EACtE,MAAM,OAAO,UAAU,KAAK,KAAK,CAAC;AAAA,EAClC,MAAM,OAAO,WAAU,WAAW,KAAK,GAAG,GAAG;AAAA,EAC7C,QAAQ,MAAM;AAAA,SACP,aAAa;AAAA,MAChB,OAAO;AAAA,IACT;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,KAAK;AAAA,IACd;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,MAAM;AAAA,IACf;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,OAAO;AAAA,IAChB;AAAA,SACK,sBAAsB;AAAA,MACzB,OAAO,KAAK;AAAA,IACd;AAAA,SACK,sBAAsB;AAAA,MACzB,OAAO,MAAM;AAAA,IACf;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,MAAM,KAAK,UAAU,MAAM,QAAQ;AAAA,IAC5C;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,KAAK;AAAA,IACd;AAAA,SACK,WAAW;AAAA,MACd,OAAO;AAAA,IACT;AAAA,SACK,QAAQ;AAAA,MAEX,OAAO,UAAU,YAAY,WAAW,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;AAAA,IACtE;AAAA,SACK,SAAS;AAAA,MACZ,MAAM,MAAM,KAAK,UAAU,OAAO,KAAK,MAAM;AAAA,MAC7C,OAAO,MAAM,MAAM,YAAY,KAAK,OAAO,GAAG,GAAG,IAAI;AAAA,IACvD;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,YAAY,IAAI;AAAA,IACzB;AAAA,aACS;AAAA,MACP,OAAO;AAAA,IACT;AAAA;AAAA;AASG,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,QAAQ,QAAQ,cAAc,CAAC;AAAA,EACrC,MAAM,YAAY,QAAQ,OAAO;AAAA,EAMjC,MAAM,QAAQ,OAAO,KAAK,IAAI,GAAG,QAAQ,eAAe,mBAAmB,CAAC;AAAA,EAI5E,MAAM,YAAY,OAAO,0BAA0B;AAAA,EAEnD,MAAM,WAAW,IAAI;AAAA,EAGrB,MAAM,aAAa,CAAI,SACrB,gBAAgB,MAAM,MAAM,IAAI,CAAC;AAAA,EACnC,MAAM,QAAQ,cACZ,KAAK,YAAY,MAAK,UAAU,SAAS,QAAQ,IAAI,CACvD;AAAA,EACA,MAAM,YACJ,KAAK,aAAa,MAAK,UAAU,UAAU,gBAAgB,QAAQ,IAAI;AAAA,EACzE,MAAM,gBAAgB,KAAK,iBAAiB,iBAAiB,QAAQ;AAAA,EACrE,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,gBAAgB,MAAwB;AAAA,IAC5C,IAAI,QAAQ,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,IACjB;AAAA,IACA,IAAI;AAAA,IACJ,IAAI;AAAA,MAMF,MAAM,MAAe,YAAY,kBAAkB;AAAA,OAIlD,EAAE,OAAO,IAAI;AAAA,MAGd,MAAM;AAAA,MACN,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ;AAAA,QAC5B,UAAU;AAAA,MACZ,CAAC;AAAA;AAAA,IAGH,MAAM,OAAO,QAAQ,SAAS,QAAQ,IAAI;AAAA,IAC1C,IAAI,CAAC,MAAM;AAAA,MACT,MAAM,mBAAmB,QAAQ,MAAM,cAAc;AAAA,IACvD;AAAA,IACA,OAAO,IAAI,OAAO,EAAE,KAAK,CAAC;AAAA;AAAA,EAG5B,MAAM,aAAa,CACjB,QACA,YAEA,WAAW,CAAC,WACV,WAAW,MACT,OAAO,OAAO,SAAS,KAAK,EAAE,UAAU,SAAS,cAAc,OAAO,CAAC,CACzE,CACF;AAAA,EAIF,MAAM,kBAAkB,OACtB,QACA,OACA,WACoB;AAAA,IACpB,MAAM,WAAW,OAAO,WAAyC;AAAA,MAC/D,IAAI,CAAC,OAAO,cAAc;AAAA,QACxB,OAAO;AAAA,MACT;AAAA,MACA,OAAO,OAAO,QAAQ,MAAM,WAAW,QAAQ,OAAO,EAAE,CAAC;AAAA;AAAA,IAG3D,IAAI,MAAM,SAAS,WAAW;AAAA,MAC5B,MAAM,OAAO;AAAA,QACX,WAAU,WAAW,KAAK,GAAG,SAAS;AAAA,QACtC,MAAM,SAAS,KAAK;AAAA,MACtB,EACG,OAAO,OAAO,EACd,KAAK;AAAA;AAAA,CAAM;AAAA,MACd,OAAO;AAAA,EAAc;AAAA;AAAA,IACvB;AAAA,IACA,IAAI,MAAM,SAAS,UAAU;AAAA,MAE3B,MAAM,QAAQ,UAAU,YAAY,WAAW,KAAK,CAAC,CAAC;AAAA,MACtD,OAAO;AAAA,uBAAqC;AAAA,EAAW,MAAM,SAAS,KAAK;AAAA;AAAA;AAAA,IAC7E;AAAA,IACA,IAAI,MAAM,SAAS,eAAe;AAAA,MAChC,MAAM,OAAO,MAAM,WAAW,QAAQ,MAAM,EAAE;AAAA,MAC9C,MAAM,WAAW,MAAM,QAAQ,IAC7B,KAAK,IAAI,OAAO,QAAQ;AAAA,EAAa,MAAM,SAAS,GAAG;AAAA,UAAc,CACvE;AAAA,MACA,OAAO;AAAA,EAAc,SAAS,KAAK;AAAA,CAAI;AAAA;AAAA,IACzC;AAAA,IACA,OAAO,iCAAiC,MAAM;AAAA;AAAA,EAGhD,MAAM,eAAe,OACnB,QACA,WACoB;AAAA,IACpB,MAAM,QAAQ,MAAM,QAAQ,IAC1B,OAAO,IAAI,OAAO,UAAU;AAAA,MAC1B,MAAM,OAAO,WAAW,OAAO,SAAS;AAAA,MACxC,IAAI,SAAS,MAAM;AAAA,QACjB,OAAO,gBAAgB,QAAQ,OAAO,YAAY;AAAA,MACpD;AAAA,MAGA,IAAI,CAAC,MAAM,cAAc;AAAA,QACvB,OAAO;AAAA,MACT;AAAA,MACA,MAAM,SAAS,MAAM,aACnB,QACA,MAAM,WAAW,QAAQ,MAAM,EAAE,CACnC;AAAA,MACA,IAAI,CAAC,QAAQ;AAAA,QACX,OAAO;AAAA,MACT;AAAA,MACA,IAAI,WAAW,KAAK,GAAG;AAAA,QAGrB,MAAM,SAAS,IAAI,OACjB,MAAM,SAAS,uBAAuB,IAAI,CAC5C;AAAA,QACA,MAAM,WAAW,OACd,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,SAAU,OAAO,GAAG,SAAS,SAAS,IAAK,EAChD,KAAK;AAAA,CAAI;AAAA,QACZ,OAAO,GAAG;AAAA,EAAS;AAAA,MACrB;AAAA,MAIA,OAAO,GAAG;AAAA;AAAA,EAAW;AAAA,KACtB,CACH;AAAA,IAGA,MAAM,QAAQ,OAAO,QAAQ,CAAC,OAAO,MAAM;AAAA,MACzC,MAAM,OAAO,MAAM,MAAM;AAAA,MACzB,OAAO,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC;AAAA,KACpC;AAAA,IACD,OAAO,MACJ,IAAI,CAAC,MAAM,MAAM;AAAA,MAChB,IAAI,MAAM,GAAG;AAAA,QACX,OAAO,KAAK;AAAA,MACd;AAAA,MACA,MAAM,QAAQ,WAAW,MAAM,IAAI,IAAI,KAAK,KAAK,WAAW,KAAK,KAAK;AAAA,MACtE,OAAO,GAAG,QAAQ;AAAA,IAAO;AAAA;AAAA,IAAS,KAAK;AAAA,KACxC,EACA,KAAK,EAAE;AAAA;AAAA,EAGZ,MAAM,gBAAgB,CAAC,SAAiD;AAAA,IACtE,IAAI,MAAM,OAAO;AAAA,MACf,OAAO,KAAK,WAAW,MAAM;AAAA,IAC/B;AAAA,IACA,OAAO,OAAO,OAAO,KAAK,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAAA;AAAA,EAGtE,MAAM,UAAU,CAAC,SAA8B;AAAA,IAC7C,MAAM,OAAO,KAAK,WAAW,MAAM,UAAU;AAAA,IAC7C,MAAM,SAAS,MAAM,QAAQ,QAAQ,MAAM,QAAQ;AAAA,IAGnD,OAAO,QACL,UAAU,YAAY,QAAQ,kBAAkB,YAClD;AAAA;AAAA,EAGF,MAAM,UAAU,CAAC,SAAyC;AAAA,IACxD,MAAM,QAAQ,KAAK,WAAW,MAAM,SAAS,UAAU;AAAA,IACvD,OAAO,UAAU,OAAO,YAAY;AAAA;AAAA,EAGtC,MAAM,cAAc,CAAC,SAAqB;AAAA,IACxC,MAAM,OAA0B,CAAC;AAAA,IAEjC,MAAM,QAAQ,YAAY,cAAc,IAAI,GAAG,KAAK;AAAA,IACpD,IAAI,OAAO;AAAA,MACT,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,MAAM,cAAc,YAClB,KAAK,WAAW,MAAM,eAAe,gBAAgB,SACvD;AAAA,IACA,IAAI,aAAa;AAAA,MACf,KAAK,cAAc;AAAA,IACrB;AAAA,IACA,IAAI,QAAQ,IAAI,GAAG;AAAA,MACjB,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,MAAM,QAAQ,QAAQ,IAAI;AAAA,IAC1B,IAAI,UAAU,WAAW;AAAA,MACvB,KAAK,UAAU,EAAE,MAAM;AAAA,IACzB;AAAA,IACA,MAAM,WAAW,YACf,KAAK,WAAW,MAAM,QAAQ,SAAS,SACzC;AAAA,IAKA,MAAM,QACH,WACG,YAAY,QAAQ,IACpB,QAAQ,MAAM,WAAW,KAAK,GAAG,CAAC,MAAM,KAAK;AAAA,IACnD,OAAO,EAAE,MAAM,KAAK;AAAA;AAAA,EAGtB,MAAM,UAAU,OACd,QACA,SAC+D;AAAA,IAC/D,QAAQ,MAAM,SAAS,YAAY,IAAI;AAAA,IACvC,MAAM,MAAM,MAAM,aAAa,QAAQ,MAAM,WAAW,QAAQ,KAAK,EAAE,CAAC;AAAA,IACxE,MAAM,SAAS,MAAM,kBAAkB,KAAK;AAAA,MAC1C;AAAA,MACA;AAAA,MACA,WAAW,QAAQ;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,IACT,CAAC;AAAA,IACD,MAAM,MAAM,oBAAO,UAAU,OAAO,UAAU,IAAI;AAAA,IAClD,OAAO;AAAA,MACL,aAAa,OAAO;AAAA,MACpB,OAAO;AAAA,QACL,MAAM,EAAE,QAAQ,OAAO,MAAM,OAAO,SAAS;AAAA,QAC7C;AAAA,QACA,MAAM,SAAS,GAAG;AAAA,QAClB,cAAc,KAAK;AAAA,QACnB;AAAA,QACA,KAAK,GAAG;AAAA,MACV;AAAA,IACF;AAAA;AAAA,EAKF,MAAM,oBAAoB,OACxB,WACoB;AAAA,IACpB,MAAM,WAAW,MAAM,WAAW,MAChC,OAAO,UAAU,SAAS,EAAE,aAAa,QAAQ,SAAS,CAAC,CAC7D;AAAA,IACA,OAAO,cAAc,SAAS;AAAA,IAC9B,IAAI,CAAC,YAAY;AAAA,MACf,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,2BAA2B,QAAQ;AAAA,QAC/D,UAAU;AAAA,MACZ,CAAC;AAAA,IACH;AAAA,IACA,OAAO,WAAW;AAAA;AAAA,EAKpB,MAAM,kBAAkB,CACtB,QACA,cACA,WAEA,WAAW,MACT,OAAO,YAAY,MAAM;AAAA,IACvB,gBAAgB;AAAA,IAChB,cAAc;AAAA,EAChB,CAAC,CACH;AAAA,EAEF,MAAM,OAAO,OACX,UAAU,KAAK,WAAW,SACI;AAAA,IAC9B,MAAM,mBAAiC,CAAC;AAAA,IACxC,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,MAAM,SAAS,cAAc;AAAA,MAC7B,MAAM,eAAe,MAAM,kBAAkB,MAAM;AAAA,MACnD,MAAM,QAAQ,MAAM,WAAW,CAAC,WAC9B,gBAAgB,QAAQ,cAAc,MAAM,CAC9C;AAAA,MACA,MAAM,QAAQ,MAAM,QAAQ,IAC1B,MAAM,IAAI,CAAC,SAAS,QAAQ,QAAQ,IAAI,CAAC,CAC3C;AAAA,MACA,WAAW,QAAQ,OAAO;AAAA,QACxB,iBAAiB,KAAK,GAAG,KAAK,WAAW;AAAA,MAC3C;AAAA,MACA,OAAO,MAAM,IAAI,CAAC,SAAS,KAAK,KAAK;AAAA,OAEvC,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO;AAAA,MACL,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,gBAAgB;AAAA,MACxD,SAAS,OAAO;AAAA,IAClB;AAAA;AAAA,EAGF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,OAAO;AAAA;AAAA,EAGhD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,KAAK,IAAI,GACf,QAAQ,cACR,MAAM,KAAK,CACb,IACA;AAAA,IACJ,aAAa,CAAC,SAAS,aAAa,SAAS,IAAI;AAAA,EACnD;AAAA;;;AE9uBF,uBAAS,sBAAY;AAErB,oBAAS,sBAAS;AAElB,0BAAS;AACT,qBAAS,yBAAU,qBAAY,mBAAM,sBAAU;AAiE/C,IAAM,gBAAgB;AAEtB,IAAM,mBAAmB;AASzB,IAAM,WACJ;AAoBF,IAAM,WAAW,CAAC,UAChB,MAAM,UAAU,KAAK,EAAE,YAAY;AAGrC,IAAM,cAAc;AAMpB,IAAM,eAAe;AAQrB,IAAM,aAAa,CAAC,SAClB,SACE,KAAK,WAAW,aAAa,SAAS,EAAE,WAAW,cAAc,EAAE,CACrE;AASF,IAAM,uBAAuB,IAAI,IAAI;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAQD,IAAM,eAAe,CAAC,YACpB,YAAY,QAAQ,QAAQ,eAAe,EAAE,CAAC;AA+ChD,IAAM,YAAY,OAA0B;AAAA,EAC1C,WAAW,CAAC;AAAA,EACZ,SAAS,CAAC;AAAA,EACV,OAAO,CAAC;AACV;AAUA,IAAM,cAAc,CAClB,QACA,MACA,SACW;AAAA,EACX,MAAM,MAAM,KAAK,QAAQ,MAAM;AAAA,EAC/B,MAAM,SAAS,OAAO,QAAQ,SAAS,GAAG,IAAI,MAAO,OAAO,QAAQ,MAAM;AAAA,EAC1E,OAAO,eAAe,OAAO,cAAc,QAAQ,IAAI;AAAA;AASzD,IAAM,eAAe,CAAC,QAA0B;AAAA,EAC9C,MAAM,WAAW,IAAI,QAAQ,eAAe,EAAE,EAAE,MAAM,GAAG;AAAA,EACzD,OAAO,SAAS,IAAI,CAAC,GAAG,SAAS,SAAS,SAAS,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC;AAAA;AAI3E,IAAM,eAAe;AASrB,IAAM,YAAY,CAAC,MAAc,OAAwB;AAAA,EACvD,IAAI,cAAc;AAAA,EAClB,SAAS,IAAI,KAAK,EAAG,KAAK,KAAK,KAAK,OAAO,MAAM,KAAK,GAAG;AAAA,IACvD,eAAe;AAAA,EACjB;AAAA,EACA,OAAO,cAAc,MAAM;AAAA;AAQ7B,IAAM,eAAe,CAAC,SAAgC;AAAA,EACpD,MAAM,OAAsB,CAAC;AAAA,EAC7B,WAAW,SAAS,KAAK,SAAS,YAAY,GAAG;AAAA,IAC/C,MAAM,UAAU,UAAU,MAAM,MAAM,KAAK;AAAA,IAC3C,MAAM,KAAK,UAAU,MAAM,QAAQ,IAAI,MAAM;AAAA,IAC7C,MAAM,SAAS,UAAU,MAAM,GAAG,SAAS,IAAI,MAAM,GAAG;AAAA,IACxD,IAAI,SAAS,GAAG;AAAA,MACd,KAAK,KAAK,EAAE,IAAI,OAAO,CAAC;AAAA,IAC1B;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAgBT,IAAM,cAAc,CAClB,MACA,MACA,WACW;AAAA,EACX,SAAS,IAAI,KAAM,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,IAC1C,IAAI,KAAK,IAAI,WAAW,QAAQ;AAAA,MAC9B,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAST,IAAM,eAAe,CACnB,MACA,SACuB;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,IACvC,MAAM,MAAM,KAAK;AAAA,IACjB,IAAI,QAAQ,aAAa,IAAI,KAAK,MAAM;AAAA,MACtC;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,YAAY,MAAM,IAAI,GAAG,IAAI,MAAM;AAAA,IACjD,IAAI,UAAU,IAAI;AAAA,MAChB,OAAO,EAAE,MAAM,KAAK,QAAQ,MAAM,KAAK,IAAI,QAAQ,OAAO,IAAI,GAAG;AAAA,IACnE;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGT,IAAM,eAAe;AACrB,IAAM,gBAAgB;AAOtB,IAAM,cAAc,CAAC,MAAc,SAAqC;AAAA,EACtE,MAAM,QAAQ,KAAK,QAAQ,cAAc,IAAI;AAAA,EAC7C,IAAI,UAAU,IAAI;AAAA,IAChB,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,KAAK,QAAQ,eAAe,QAAQ,aAAa,MAAM;AAAA,EACrE,OAAO,UAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,cAAc,QAAQ,MAAM;AAAA;AAU1E,IAAM,gBAAgB,CAAC,SAA8B;AAAA,EACnD,MAAM,OAAO,aAAa,IAAI;AAAA,EAC9B,MAAM,SAAsB,CAAC;AAAA,EAC7B,IAAI,SAAS;AAAA,EACb,UAAS;AAAA,IACP,MAAM,OAAO,aAAa,MAAM,MAAM;AAAA,IACtC,MAAM,UAAU,YAAY,MAAM,MAAM;AAAA,IACxC,MAAM,OACJ,SAAS,QAAS,YAAY,QAAQ,QAAQ,QAAQ,KAAK,QACvD,UACA;AAAA,IACN,IAAI,SAAS,MAAM;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAO,KACL,EAAE,SAAS,OAAO,MAAM,KAAK,MAAM,QAAQ,KAAK,KAAK,EAAE,GACvD,EAAE,SAAS,MAAM,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,GAAG,EAAE,CAC1D;AAAA,IACA,SAAS,KAAK;AAAA,EAChB;AAAA,EACA,OAAO,KAAK,EAAE,SAAS,OAAO,MAAM,KAAK,MAAM,MAAM,EAAE,CAAC;AAAA,EACxD,OAAO;AAAA;AAIT,IAAM,iBAAiB,CACrB,OACA,OACA,MACA,eAEA,MAAM,WAAW,kBAAkB,EAAE,EAAE,WAAW,UAAU,IAAI,SAAS;AAAA,EAGvE,MAAM,SAAS,KAAK,GAAG,EAAE;AAAA,EACzB,MAAM,UAAU,OAAO,UAAU,IAAI,KAAK;AAAA,EAC1C,MAAM,UAAU,OAAO,SAAS,KAAK;AAAA,EACrC,MAAM,QAAQ,OAAO,OAAO,KAAK,KAAK,WAAW;AAAA,EAGjD,IAAI,OAAO,OAAO;AAAA,IAEhB,OAAO,KAAK;AAAA,EACd;AAAA,EAGA,IAAI,WAAW,IAAI;AAAA,IACjB,IAAI,YAAY,WAAW;AAAA,MAEzB,OAAO,KAAK;AAAA,IACd;AAAA,IACA,MAAM,UAAU,YAAY,MAAM,MAAM,MAAM,IAAI;AAAA,IAKlD,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,MAC3B,OAAO,IAAI,OAAO,OAAO,KAAK,KAAK,QAAQ,MAAM,CAAC,MAAM;AAAA,IAC1D;AAAA,IACA,MAAM,MAAM,KAAK,QAAQ,IAAI,WAAW,OAAO,CAAC;AAAA,IAChD,IAAI,QAAQ,WAAW;AAAA,MAGrB,WAAW,QAAQ,KAAK,IAAI,SAAS;AAAA,MACrC,OAAO,IAAI,UAAU;AAAA,IACvB;AAAA,IACA,OAAO,IAAI,UAAU,WAAW;AAAA,EAClC;AAAA,EAGA,MAAM,MAAM,SAAS,OAAO,QAAQ,eAAe,EAAE,CAAC;AAAA,EACtD,MAAM,OAAO,MAAM,MAAM,IAAI,GAAG;AAAA,EAChC,IAAI,SAAS,WAAW;AAAA,IACtB,WAAW,MAAM,KAAK,MAAM;AAAA,IAC5B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,QAAQ,MAAM,UAAU,IAAI,GAAG;AAAA,EACrC,IAAI,UAAU,WAAW;AAAA,IACvB,WAAW,UAAU,KAAK,KAAK;AAAA,EACjC;AAAA,EACA,MAAM,OAAO,YAAY,MAAM,MAAM,MAAM,IAAI;AAAA,EAC/C,IAAI,YAAY,WAAW;AAAA,IACzB,OAAO,IAAI,UAAU;AAAA,EACvB;AAAA,EAGA,IAAI,QAAQ,WAAW,GAAG,GAAG;AAAA,IAC3B,OAAO,IAAI,OAAO,OAAO,KAAK,KAAK,WAAW;AAAA,EAChD;AAAA,EACA,MAAM,SAAS,KAAK,QAAQ,IAAI,WAAW,OAAO,CAAC;AAAA,EACnD,IAAI,WAAW,WAAW;AAAA,IAGxB,WAAW,QAAQ,KAAK,GAAG,UAAU,SAAS;AAAA,IAC9C,OAAO,IAAI,UAAU;AAAA,EACvB;AAAA,EACA,OAAO,IAAI,UAAU,QAAQ;AAAA,CAC9B;AAMH,IAAM,iBAAiB,CACrB,MACA,OACA,MACA,eAEA,cAAc,IAAI,EACf,IAAI,CAAC,UACJ,MAAM,UACF,MAAM,OACN,eAAe,MAAM,MAAM,OAAO,MAAM,UAAU,CACxD,EACC,KAAK,EAAE;AAGZ,IAAM,gBAAgB;AAEtB,IAAM,YAAY;AAGlB,IAAM,WAAW,CAAC,SAChB,KAAK,SAAS,KAAK,UAAU,EAAE;AAMjC,IAAM,YAAY,CAAC,MAAc,WAA6B;AAAA,EAC5D,IAAI,KAAK,KAAK,MAAM,IAAI;AAAA,IACtB,OAAO;AAAA,EACT;AAAA,EACA,IAAI,UAAU,KAAK,IAAI,GAAG;AAAA,IACxB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,IAAI,IAAI,SAAS;AAAA;AAWlE,IAAM,aAAa,CACjB,MACA,OACA,aACA,WACe;AAAA,EACf,MAAM,aACJ,UAAU,OACN,UAAU,CAAC,cAAc,KAAK,IAAI,IAClC,SAAS,IAAI,KAAK,cAAc;AAAA,EACtC,OAAO,aAAa,eAAe,MAAM,KAAK,IAAI;AAAA;AASpD,IAAM,gBAAgB,CACpB,MACA,OACA,MACA,eACW;AAAA,EACX,IAAI,QAAoB;AAAA,EAGxB,IAAI,cAAc;AAAA,EAKlB,IAAI,aAAa;AAAA,EACjB,IAAI,eAAe;AAAA,EACnB,IAAI,SAAS;AAAA,EACb,MAAM,MAAgB,CAAC;AAAA,EACvB,IAAI,QAAkB,CAAC;AAAA,EACvB,MAAM,QAAQ,MAAY;AAAA,IACxB,IAAI,MAAM,SAAS,GAAG;AAAA,MACpB,IAAI,KAAK,eAAe,MAAM,KAAK;AAAA,CAAI,GAAG,OAAO,MAAM,UAAU,CAAC;AAAA,MAClE,QAAQ,CAAC;AAAA,IACX;AAAA;AAAA,EAEF,WAAW,QAAQ,KAAK,MAAM;AAAA,CAAI,GAAG;AAAA,IACnC,MAAM,QAAQ,KAAK,KAAK,MAAM;AAAA,IAC9B,IAAI,UAAU,QAAQ,cAAc;AAAA,MAClC,IAAI,SAAS,cAAc,KAAK,IAAI,GAAG;AAAA,QACrC,IAAI,KAAK,IAAI;AAAA,QACb,aAAa;AAAA,QACb;AAAA,MACF;AAAA,MACA,eAAe;AAAA,IACjB;AAAA,IACA,SAAS,UAAU,MAAM,MAAM;AAAA,IAC/B,IACE,UAAU,QACV,cACA,EAAE,SAAS,WACX,cAAc,KAAK,IAAI,GACvB;AAAA,MACA,MAAM;AAAA,MACN,eAAe;AAAA,MACf,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,OAAmB,WAAW,MAAM,OAAO,aAAa,MAAM;AAAA,IACpE,IAAI,UAAU,QAAQ,SAAS,MAAM;AAAA,MACnC,IAAI,UAAU,MAAM;AAAA,QAClB,cAAc,SAAS,IAAI;AAAA,MAC7B;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,IAAI,OAAO;AAAA,MAKT,MAAM;AAAA,MACN,IAAI,KAAK,IAAI;AAAA,MACb,aAAa;AAAA,MACb;AAAA,IACF;AAAA,IACA,MAAM,KAAK,IAAI;AAAA,IACf,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,EACN,OAAO,IAAI,KAAK;AAAA,CAAI;AAAA;AAgBtB,IAAM,cAAc,CAAC,MAAmB,UAA2B;AAAA,EACjE,MAAM,MAAM,gBAAgB,KAAK,KAAK,OAAO;AAAA,EAC7C,MAAM,YAAY,IAAI,KACpB,CAAC,YACC,eAAe,QAAQ,MAAM,OAAO,KAAK,MAAM,UAAU,CAAC,MAC1D,QAAQ,IACZ;AAAA,EACA,MAAM,WAAW,YACb,gBACE,cAAc,KAAK,KAAK,SAAS,OAAO,KAAK,MAAM,UAAU,CAAC,CAChE,IACA;AAAA,EACJ,WAAW,WAAW,UAAU;AAAA,IAC9B,MAAM,MAAM,WAAW,QAAQ,IAAI;AAAA,IAGnC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,GAAG,GAAG;AAAA,MAC/B,KAAK,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,IACzC;AAAA,EACF;AAAA;AAaF,IAAM,iBAAiB,CACrB,OACA,YACc;AAAA,EACd,MAAM,UAAU,IAAI;AAAA,EACpB,MAAM,UAAU,CAAC,SAAkC;AAAA,IACjD,MAAM,SAAS,QAAQ,IAAI,KAAK,GAAG;AAAA,IACnC,IAAI,QAAQ;AAAA,MACV,OAAO;AAAA,IACT;AAAA,IAIA,MAAM,QAAQ,kBACZ,EAAE,KAAK,KAAK,KAAK,MAAM,aAAa,KAAK,UAAU,OAAO,EAAE,GAC5D,OACA,cAAc,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,WACjD,KAAK,SAAS,kBAAkB,KAAK,CACvC;AAAA,IACA,MAAM,QAAqB;AAAA,MACzB,SAAS,IAAI;AAAA,MACb,SAAS,MAAM;AAAA,MACf,cAAc,MAAM;AAAA,IACtB;AAAA,IACA,QAAQ,IAAI,KAAK,KAAK,KAAK;AAAA,IAC3B,OAAO;AAAA;AAAA,EAET,MAAM,SAAS,IAAI;AAAA,EACnB,WAAW,QAAQ,OAAO;AAAA,IACxB,WAAW,OAAO,aAAa,KAAK,GAAG,GAAG;AAAA,MACxC,MAAM,UAAU,OAAO,IAAI,GAAG;AAAA,MAC9B,IAAI,SAAS;AAAA,QACX,QAAQ,KAAK,IAAI;AAAA,MACnB,EAAO;AAAA,QACL,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA;AAAA,IAE1B;AAAA,EACF;AAAA,EACA,MAAM,YAAY,IAAI,IACpB,MAAM,IAAI,CAAC,SAAS,SAAS,KAAK,IAAI,QAAQ,eAAe,EAAE,CAAC,CAAC,CACnE;AAAA,EACA,MAAM,QAAmB;AAAA,IACvB,WAAW,IAAI;AAAA,IACf,MAAM,QAAQ;AAAA,IACd,OAAO,IAAI;AAAA,EACb;AAAA,EACA,YAAY,KAAK,cAAc,QAAQ;AAAA,IACrC,OAAO,UAAU,QAAQ;AAAA,IACzB,IAAI,KAAK,SAAS,KAAK,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,IAAI,GAAG,GAAG;AAAA,MAChE,MAAM,UAAU,IACd,KACA,GAAG,QAAQ,UAAU,IAAI,CAAC,SAAS,KAAK,GAAG,EAAE,KAAK,IAAI,IACxD;AAAA,IACF;AAAA,IACA,MAAM,MAAM,IAAI,KAAK,QAAQ,KAAK,CAAC;AAAA,EACrC;AAAA,EACA,MAAM,QAAQ,MAAM,IAAI,CAAC,SAAS;AAAA,IAChC,MAAM,OAAO,QAAQ,IAAI;AAAA,IAGzB,MAAM,MAAM,IAAI,SAAS,KAAK,IAAI,QAAQ,eAAe,EAAE,CAAC,GAAG,IAAI;AAAA,IACnE,OAAO,EAAE,MAAM,KAAK;AAAA,GACrB;AAAA,EAGD,WAAW,QAAQ,OAAO;AAAA,IACxB,YAAY,MAAM,KAAK;AAAA,EACzB;AAAA,EACA,OAAO,EAAE,OAAO,MAAM;AAAA;AAQxB,IAAM,WAAW,CACf,KACA,qBACuB;AAAA,EACvB,IAAI,cAAc,gBAAgB,GAAG;AAAA,IACnC,OAAO;AAAA,EACT;AAAA,EACA,MAAM,WAAW,UAAS,GAAG,EAAE,QAAQ,eAAe,EAAE;AAAA,EACxD,OAAO,SAAS,YAAY,MAAM,UAAU,YAAY;AAAA;AAS1D,IAAM,cAAc,CAClB,MACA,YAIgB;AAAA,EAChB,MAAM,YAAY,cAAc,KAAK,IAAI,IAAI,KAAK,OAAO,QAAQ;AAAA,EACjE,MAAM,WACJ,cAAc,YACV,CAAC,IACA,QAAQ,sBAAsB,cAAc,CAAC;AAAA,EACpD,OAAO,IAAI,IAAI,CAAC,GAAI,QAAQ,mBAAmB,CAAC,GAAI,GAAG,QAAQ,CAAC;AAAA;AAUlE,IAAM,cAAc,CAClB,MACA,OACA,SAIA,eACgB;AAAA,EAChB,QAAQ,SAAS;AAAA,EACjB,MAAM,QAAQ,SAAS,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,EAChD,MAAM,OAAO,YAAY,KAAK,MAAM,OAAO;AAAA,EAC3C,MAAM,OAAO,OAAO,YAClB,OAAO,QAAQ,KAAK,IAAI,EAAE,OACxB,EAAE,SACA,CAAC,qBAAqB,IAAI,GAAG,MAC5B,wBAAwB,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,EACrD,CACF;AAAA,EACA,MAAM,SAAS,UAAU,YAAY,OAAO,KAAK,MAAM,MAAM;AAAA,EAC7D,MAAM,OAAO,KAAK,QAAQ,KAAK;AAAA,EAC/B,MAAM,OAAO,cAAc,MAAM,OAAO,KAAK,MAAM,UAAU;AAAA,EAC7D,MAAM,MAAM,oBAAO,UAAU,GAAG;AAAA,GAAU,MAAM;AAAA,EAKhD,MAAM,UAAU,KAAK,QAAQ,MAAM,GAAG,KAAK,QAAQ,QAAQ,IAAI,CAAC;AAAA,EAChE,OAAO;AAAA,IACL,MAAM,EAAE,QAAQ,MAAM,KAAK;AAAA,IAC3B,gBAAgB,KAAK,mBAAmB,QAAQ,MAAM;AAAA,CAAI,EAAE,SAAS;AAAA,IACrE,MAAM;AAAA,IACN,MAAM,SAAS,GAAG;AAAA,IAClB;AAAA,IACA,KAAK,KAAK;AAAA,IACV,MAAM,aAAa,KAAK,UAAU,OAAO;AAAA,IACzC,YAAY,KAAK;AAAA,EACnB;AAAA;AAUF,IAAM,WAAW,OACf,UACA,KACA,YAC4C;AAAA,EAC5C,MAAM,UAAU,MAAK,UAAU,GAAG;AAAA,EAClC,IAAI;AAAA,IACF,MAAM,OAAO,MAAM,UAAS,SAAS,OAAO;AAAA,IAC5C,QAAQ,SAAS,SAAS,oBAAO,IAAI;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,kBAAkB,mBAAmB,MAAM,OAAO;AAAA,MAIlD,WAAW,cAAc,KAAK,OAAO,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,OAAO,OAAO;AAAA,IACd,IAAI,iBAAiB,gBAAe;AAAA,MAClC,OAAO,0BAA0B,OAAO,OAAO;AAAA,IACjD;AAAA,IAGA,IAAK,MAAgC,SAAS,UAAU;AAAA,MACtD,OAAO;AAAA,IACT;AAAA,IACA,MAAM;AAAA;AAAA;AAgBV,IAAM,WAAW,CAAC,SAA0B,KAAK,WAAW,GAAG;AAU/D,IAAM,WAAW,OAAO,KAAa,UAAuC;AAAA,EAC1E,IAAI,CAAC,MAAM,eAAe,GAAG;AAAA,IAC3B,OAAO;AAAA,MACL,WAAW,MAAM,YAAY;AAAA,MAC7B,MAAM,MAAM,OAAO;AAAA,MACnB,MAAM,MAAM;AAAA,IACd;AAAA,EACF;AAAA,EACA,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,KAAK,MAAK,KAAK,MAAM,IAAI,CAAC;AAAA,IAC/C,OAAO;AAAA,MACL,WAAW,OAAO,YAAY;AAAA,MAC9B,MAAM,OAAO,OAAO;AAAA,MACpB,MAAM,MAAM;AAAA,IACd;AAAA,IACA,MAAM;AAAA,IACN,OAAO;AAAA,MACL,WAAW;AAAA,MACX,MAAM,cAAc,KAAK,MAAM,IAAI;AAAA,MACnC,MAAM,MAAM;AAAA,IACd;AAAA;AAAA;AASJ,IAAM,eAAe,CAAC,GAAe,MACnC,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,SAAS,KACxC,EAAE,KAAK,cAAc,EAAE,MAAM,MAAM,EAAE,SAAS,MAAM,aAAa,OAAO,CAAC,MACxE,EAAE,OAAO,EAAE,OAAO,KAAK;AAG1B,IAAM,YAAY,OAChB,KACA,MACA,YACsB;AAAA,EACtB,MAAM,QAAkB,CAAC;AAAA,EACzB,MAAM,SAAS,MAAM,SAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAAA,EACzD,MAAM,UAAU,MAAM,QAAQ,IAC5B,OACG,OAAO,CAAC,UAAU,EAAE,SAAS,MAAM,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAI,EAAE,EACpE,IAAI,CAAC,UAAU,SAAS,KAAK,KAAK,CAAC,CACxC;AAAA,EACA,WAAW,SAAS,QAAQ,SAAS,YAAY,GAAG;AAAA,IAClD,MAAM,OAAO,MAAK,KAAK,MAAM,IAAI;AAAA,IACjC,IAAI,MAAM,WAAW;AAAA,MAEnB,MAAM,KAAK,GAAI,MAAM,UAAU,MAAM,MAAM,OAAO,CAAE;AAAA,IACtD,EAAO,SAAI,MAAM,QAAQ,cAAc,KAAK,MAAM,IAAI,GAAG;AAAA,MACvD,MAAM,KAAK,UAAS,MAAM,IAAI,CAAC;AAAA,IACjC;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,SAAS,CAAC,YACd,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI;AAG7C,IAAM,wBAAwB,CAC5B,MACA,eACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,IAAI,WAAW,MAAM,SAAS,GAAG;AAAA,IAC/B,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,MAAM,yCAAyC,OAAO,WAAW,KAAK;AAAA,MACpH,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,UAAU,SAAS,GAAG;AAAA,IACnC,MAAM,QAAQ,IAAI,IAAI,WAAW,SAAS,EAAE;AAAA,IAC5C,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,UAAU,yBAAyB,qDAAqD,OAAO,WAAW,SAAS;AAAA,MACjK,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,IAAI,WAAW,QAAQ,SAAS,GAAG;AAAA,IACjC,YAAY,KAAK;AAAA,MACf,MAAM;AAAA,MACN,SAAS,WAAW,eAAe,WAAW,QAAQ,4CAA4C,OAAO,WAAW,OAAO;AAAA,MAC3H,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EACA,OAAO;AAAA;AAYF,IAAM,iBAAiB,CAC5B,SACA,QACkB;AAAA,EAClB,MAAM,WAAW,SAAQ,IAAI,aAAa,QAAQ,KAAK;AAAA,EAKvD,MAAM,UAAU,IAAI,IAAI,CAAC,GAAG,mBAAmB,GAAI,QAAQ,WAAW,CAAC,CAAE,CAAC;AAAA,EAE1E,MAAM,OAAO,YAAuC;AAAA,IAIlD,MAAM,UAAwB,CAAC;AAAA,IAC/B,MAAM,QAAkB,CAAC;AAAA,IACzB,WAAW,OAAO,MAAM,UAAU,UAAU,UAAU,OAAO,GAAG;AAAA,MAC9D,MAAM,aAAa,yBAAyB,KAAK,MAAK,UAAU,GAAG,CAAC;AAAA,MACpE,IAAI,YAAY;AAAA,QACd,QAAQ,KAAK,UAAU;AAAA,MACzB,EAAO;AAAA,QACL,MAAM,KAAK,GAAG;AAAA;AAAA,IAElB;AAAA,IACA,MAAM,OAAO,MAAM,QAAQ,IACzB,MAAM,IAAI,CAAC,QAAQ,SAAS,UAAU,KAAK,OAAO,CAAC,CACrD;AAAA,IACA,MAAM,QAAQ,KAAK,OACjB,CAAC,SAA6B,SAAS,SAAQ,SAAS,KAC1D;AAAA,IACA,QAAQ,KACN,GAAG,KAAK,OACN,CAAC,SAA6B,SAAS,SAAQ,UAAU,KAC3D,CACF;AAAA,IAGA,QAAQ,OAAO,UAAU,eAAe,OAAO,OAAO;AAAA,IACtD,MAAM,aAAa,UAAU;AAAA,IAC7B,MAAM,UAAU,MAAM,IAAI,CAAC,SACzB,YAAY,MAAM,OAAO,SAAS,UAAU,CAC9C;AAAA,IACA,OAAO;AAAA,MACL,aAAa;AAAA,QACX,GAAG;AAAA,QACH,GAAG,sBAAsB,QAAQ,MAAM,UAAU;AAAA,MACnD;AAAA,MACA;AAAA,IACF;AAAA;AAAA,EAOF,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,UAAU,SAAQ,UAAU,GAAG;AAAA,IAKrC,MAAM,MAAM,UAAS,UAAU,OAAO;AAAA,IACtC,IAAI,IAAI,WAAW,IAAI,KAAK,YAAW,GAAG,GAAG;AAAA,MAC3C,MAAM,IAAI,WAAW;AAAA,QACnB,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,sBAAsB;AAAA,QAClD,UAAU;AAAA,QACV,YAAY;AAAA,MACd,CAAC;AAAA,IACH;AAAA,IACA,OAAO,MAAM,UAAS,SAAS,OAAO;AAAA;AAAA,EAGxC,MAAM,WAAW,MAAY;AAAA,IAG3B,MAAM,QAAQ,SAAS,UAAU,EAAE,gBAAgB,MAAM,CAAC;AAAA,IAC1D,IAAI,OAAO,YAAY,GAAG;AAAA,MACxB;AAAA,IACF;AAAA,IACA,MAAM,UAAU,QAAQ,uBAAuB;AAAA,IAC/C,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ,oBAAoB,QAAQ,iBAAiB;AAAA,MACzE,UAAU;AAAA,MACV,YACE;AAAA,IACJ,CAAC;AAAA;AAAA,EAOH,MAAM,QAAQ,CAAC,aAAuC;AAAA,IACpD,IAAI,CAAC,YAAW,QAAQ,GAAG;AAAA,MACzB,OAAO,MAAM;AAAA,IAGf;AAAA,IACA,MAAM,UAAU,SACd,UACA,EAAE,WAAW,KAAK,GAClB,sBAAsB,UAAU,SAAS,QAAQ,CACnD;AAAA,IACA,OAAO,MAAM,QAAQ,MAAM;AAAA;AAAA,EAG7B,OAAO;AAAA,IAIL,aAAa;AAAA,IACb;AAAA,IACA,MAAM,QAAQ;AAAA,IAEd,cAAc;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,EACF;AAAA;;;AChhCF,IAAM,UAAU;AAChB,IAAM,YAAY;AAClB,IAAM,mBAAmB;AACzB,IAAM,UAAU;AAGhB,IAAM,UAAU,CAAC,QAAgB,SAC/B,KAAK,MAAM,SAAS,IAAI,IAAI,MAAM;AAEpC,IAAM,WAAU,CAAC,SAAkC;AAAA,EACjD,MAAM,SAAS,SAAS,KAAK,MAAM,KAAK;AAAA,EACxC,OAAO;AAAA,IACL,MAAM,QAAQ,QAAQ,OAAO;AAAA,IAC7B,MAAM,QAAQ,QAAQ,OAAO;AAAA,IAC7B,QAAQ,QAAQ,QAAQ,SAAS;AAAA,IACjC,QAAQ,QAAQ,QAAQ,gBAAgB;AAAA,EAC1C;AAAA;AAGF,IAAM,YAAW,CAAC,SAAmC,UAAU,KAAK,QAAQ;AAG5E,IAAM,UAAU,CAAC,MAAc,YAAoC;AAAA,EACjE,QAAQ,gBAAgB,IAAI;AAAA,EAC5B,OAAO,YAAY,MAAM,UAAU,QAAQ,WAAW,CAAC;AAAA;AAGzD,IAAM,SAAS,CAAC,SAA6B,SAAS,KAAK,IAAI,KAAK;AAEpE,IAAM,cAAc,CAAC,MAAkB,YAAoC;AAAA,EACzE,MAAM,SAAS,SAAS,KAAK,MAAM;AAAA,EACnC,MAAM,YAAY,SAAS,SAAS,OAAO,SAAS,IAAI;AAAA,EACxD,MAAM,aAAa,YAAY,QAAQ,cAAc,aAAa;AAAA,EAClE,IAAI,UAAU,YAAY;AAAA,IACxB,OAAO,WAAW,MAAM;AAAA,EAC1B;AAAA,EACA,OAAO,QAAQ,gBAAgB,YAAY,KAAK,cAAc,MAAM,OAAO;AAAA;AAG7E,IAAM,eAAc,CAClB,OACA,YAGA,MAAM,QAAQ,CAAC,SAAS,iBAAgB,MAAM,OAAO,CAAC;AAExD,IAAM,mBAAkB,CACtB,MACA,YACiB;AAAA,EACjB,QAAQ,OAAO,IAAI;AAAA,SACZ,QAAQ;AAAA,MACX,OAAO,CAAC,EAAE,OAAO,SAAQ,IAAI,GAAG,MAAM,SAAS,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,IACnE;AAAA,SACK,aAAa;AAAA,MAChB,OAAO,CAAC,EAAE,UAAU;AAAA,EAAK,CAAC;AAAA,IAC5B;AAAA,SACK,OAAO;AAAA,MACV,OAAO,CAAC,EAAE,UAAU,KAAK,CAAC;AAAA,IAC5B;AAAA,SACK;AAAA,SACA,YAAY;AAAA,MAIf,OAAO,UACL,aAAY,UAAS,IAAI,GAAG,OAAO,GACnC,SAAS,QAAQ,MAAM,YAAY,CAAC,KAAK,SAAS,KAAK,GAAG,CAC5D;AAAA,IACF;AAAA,SACK,eAAe;AAAA,MAClB,OAAO,CAAC,EAAE,UAAU,YAAY,MAAM,OAAO,EAAE,CAAC;AAAA,IAClD;AAAA,aACS;AAAA,MACP,OAAO,aAAY,UAAS,IAAI,GAAG,OAAO;AAAA,IAC5C;AAAA;AAAA;AAKJ,IAAM,aAAa,CAAC,OAAqB,YACvC,gBAAgB,aAAa,aAAY,OAAO,OAAO,CAAC,CAAC;AAG3D,IAAM,aAAY,CAAC,MAAkB,YACnC,WAAW,UAAS,IAAI,GAAG,OAAO;AAEpC,IAAM,eAAe,CAAC,MAAkB,YAAoC;AAAA,EAC1E,MAAM,QAAQ,SAAS,KAAK,KAAK;AAAA,EACjC,MAAM,MAAM,QAAQ,SAAS,MAAM,GAAG,IAAI;AAAA,EAC1C,IAAI,EAAE,SAAS,MAAM;AAAA,IACnB,OAAO,QACL,sDACA,OACF;AAAA,EACF;AAAA,EACA,MAAM,MAAM,SAAS,MAAM,GAAG,KAAK,SAAS,MAAM,QAAQ,KAAK;AAAA,EAC/D,OAAO,MAAM,KAAK,YAAY,KAAK,QAAQ,OAAO,CAAC;AAAA;AAGrD,IAAM,cAAa,CAAC,MAAkB,YAAoC;AAAA,EACxE,MAAM,WAAW,SAAS,KAAK,QAAQ,KAAK;AAAA,EAC5C,MAAM,QAAQ,SAAS,KAAK,KAAK,KAAK;AAAA,EACtC,MAAM,QAAkB,CAAC;AAAA,EACzB,IAAI,aAAa;AAAA,EACjB,IAAI,QAAQ;AAAA,EACZ,WAAW,QAAQ,UAAS,IAAI,GAAG;AAAA,IACjC,MAAM,OAAO,UAAS,IAAI;AAAA,IAC1B,MAAM,SAAS,KAAK,OAAO,CAAC,QAAQ,OAAO,GAAG,MAAM,MAAM;AAAA,IAC1D,MAAM,SAAS,KAAK,OAAO,CAAC,QAAQ,OAAO,GAAG,MAAM,MAAM;AAAA,IAC1D,MAAM,MAAM,OAAO,IAAI,CAAC,SAAS,YAAW,MAAM,OAAO,CAAC,EAAE,KAAK;AAAA,CAAI;AAAA,IACrE,IAAI,OAAO,WAAW,KAAK,OAAO,SAAS,GAAG;AAAA,MAG5C,MAAM,KAAK,MAAM,SAAS,IAAI,OAAO,KAAK,WAAW,SAAS,CAAC,IAAI,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,IACA,aAAa,aAAa,WAAW,GAAG,QAAQ,WAAW;AAAA,IAC3D,IAAI,QAAQ;AAAA,IACZ,IAAI,aAAa,SAAS;AAAA,MACxB,QAAQ,KAAK,YAAY,OAAO,SAAS;AAAA,IAC3C;AAAA,IACA,MAAM,OAAO,GAAG,QAAQ,WAAW,QAAQ,OAAO;AAAA,IAClD,MAAM,KAAK,SAAS,YAAY,MAAM,GAAG;AAAA,EAAS,QAAQ,IAAI,CAAC;AAAA,IAC/D,SAAS;AAAA,EACX;AAAA,EACA,OAAO,MAAM,KAAK;AAAA,CAAI;AAAA;AAGxB,IAAM,eAAc,CAAC,MAAkB,YAAoC;AAAA,EACzE,QAAQ,OAAO,IAAI;AAAA,SACZ,aAAa;AAAA,MAChB,OAAO,WAAU,MAAM,OAAO;AAAA,IAChC;AAAA,SACK,WAAW;AAAA,MACd,MAAM,QAAQ,QAAQ,SAAS,KAAK,GAAG,KAAK,MAAM,MAAM,CAAC,CAAC;AAAA,MAC1D,OAAO,GAAG,cAAc,KAAK,IAAI,WAAU,MAAM,OAAO;AAAA,IAC1D;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,WAAW,WAAU,MAAM,OAAO,CAAC;AAAA,IAC5C;AAAA,SACK,QAAQ;AAAA,MACX,OAAO,YAAW,MAAM,OAAO;AAAA,IACjC;AAAA,SACK,kBAAkB;AAAA,MACrB,OAAO;AAAA,IACT;AAAA,SACK,UAAU;AAAA,MACb,OAAO,aAAa,MAAM,OAAO;AAAA,IACnC;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,YAAY,MAAM,OAAO;AAAA,IAClC;AAAA,aACS;AAAA,MACP,OAAO,QAAQ,iBAAiB,OAAO,IAAI,KAAK,OAAO;AAAA,IACzD;AAAA;AAAA;AAQG,IAAM,oBAAoB,CAC/B,OACA,UAA0B,CAAC,MAChB;AAAA,EACX,MAAM,OAAO,SAAS,MAAM,IAAI,KAAK;AAAA,EACrC,OAAO,iBACL,UAAS,IAAI,EAAE,IAAI,CAAC,SAAS,aAAY,MAAM,OAAO,CAAC,CACzD;AAAA;;;ACnKF,IAAM,aAAY;AAElB,IAAM,kBAA+B;AAAA,EACnC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AACT;AAOO,IAAM,gBAAgB,CAC3B,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,KAAK,oBAAmB,QAAQ,OAAO;AAAA,EACtD,MAAM,SAAS,QAAQ,IAAI,QAAQ,SAAS,EAAE;AAAA,EAE9C,MAAM,QAAQ,CAAC,MAAkB,YAC/B,kBAAkB,MAAM;AAAA,IACtB,SAAS;AAAA,IACT,eAAe,CAAC,SAAS,QAAQ,IAAI,IAAI;AAAA,IACzC,aAAa,QAAQ;AAAA,EACvB,CAAC;AAAA,EAIH,MAAM,UAAU,CACd,KACA,OACA,SACgB;AAAA,IAChB,MAAM,UAAU,IAAI;AAAA,IACpB,MAAM,KAAK,SAAS,IAAI,EAAE,KAAK,OAAO,IAAI,MAAM,EAAE;AAAA,IAClD,MAAM,QAAQ,cACZ,KACA,QACA,IACA,CAAC,SAAU,aAAa,IAAI,IAAI,MAAM,MAAM,OAAO,IAAI,IACvD,OACA,UAAU,QAAQ,WAAW,CAC/B;AAAA,IACA,WAAW,QAAQ,SAAS;AAAA,MAC1B,KAAK;AAAA,QACH,MAAM;AAAA,QACN,SAAS,WAAW,QAAQ,WAAW,MAAM,+CAA+C;AAAA,QAC5F,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,MAAM,eAAe,OACnB,SAC2B;AAAA,IAC3B,MAAM,UAAU,KAAK,WAAW;AAAA,IAChC,MAAM,QAAQ,QAAQ,SAAS,QAAQ,IAAI;AAAA,IAC3C,MAAM,SAAqB;AAAA,MACzB,WAAW,QAAQ;AAAA,MACnB,SAAS,QACL;AAAA,QACE,eAAe,GAAG,QAAQ,kBAAkB,mBAAmB;AAAA,MACjE,IACA,CAAC;AAAA,IACP;AAAA,IACA,MAAM,OAAO,GAAG,cAAc,QAAQ;AAAA,IACtC,MAAM,UAAyB,CAAC;AAAA,IAChC,IAAI,OAAO;AAAA,IACX,IAAI,OAAO;AAAA,IACX,OAAO,MAAM;AAAA,MAGX,MAAM,QAAQ,YAAY;AAAA,WACrB,QAAQ;AAAA,QACX,OAAO,OAAO,QAAQ,SAAS,CAAC;AAAA,QAChC,OAAO,UAAU,SAAS;AAAA,QAC1B,OAAO,OAAO,UAAS;AAAA,QACvB,MAAM,OAAO,IAAI;AAAA,MACnB,CAAC;AAAA,MAED,MAAM,SAAS,SAAS,MAAM,UAAU,GAAG,QAAQ,SAAS,MAAM,CAAC;AAAA,MACnE,IAAI,CAAC,QAAQ;AAAA,QACX,MAAM,IAAI,MAAM,wCAAwC;AAAA,MAC1D;AAAA,MACA,WAAW,OAAO,UAAU,OAAO,IAAI,GAAG;AAAA,QACxC,MAAM,QAAQ,SAAS,IAAI,OAAO,MAAM;AAAA,QACxC,IAAI,SAAS,CAAC,SAAS;AAAA,UACrB;AAAA,QACF;AAAA,QACA,QAAQ,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAC;AAAA,MACxC;AAAA,MACA,OAAO,OAAO,gBAAgB;AAAA,MAC9B,QAAQ;AAAA,IACV;AAAA,IACA,OAAO;AAAA;AAAA,EAGT,OAAO,aACL;AAAA,IACE;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,cAAc,QAAQ;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB,aAAa,CAAC,SAAS,cAAc,SAAS,IAAI;AAAA,EACpD,GACA,GACF;AAAA;;;AC7JF,iBAAS;;;ACmET,IAAM,iBAAiB,IAAI,IAAI;AAAA,EAC7B,CAAC,MAAM,IAAI;AAAA,EACX,CAAC,MAAM,KAAK;AAAA,EACZ,CAAC,MAAM,MAAM;AAAA,EACb,CAAC,MAAM,OAAO;AAAA,EACd,CAAC,MAAM,QAAQ;AAAA,EACf,CAAC,MAAM,SAAS;AAClB,CAAC;AAGD,IAAM,UAAU,CAAC,SAAsC;AAAA,EACrD,MAAM,QAAQ,KAAK,SAAS,CAAC;AAAA,EAC7B,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM,MAAM,SAAS,QAAQ;AAAA,MAC7B,MAAM,MAAM,SAAS,MAAM;AAAA,MAC3B,QAAQ,MAAM,SAAS,IAAI;AAAA,MAC3B,QAAQ,MAAM,SAAS,gBAAgB;AAAA,IACzC;AAAA,IACA,MAAM,KAAK,QAAQ;AAAA,EACrB;AAAA;AAiBF,IAAM,iBAAiB,CAAC,UAAqC;AAAA,EAC3D,MAAM,OAAO,IAAI,KACd,MAAM,YAAY,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,MAAM,GAAG,CAAU,CAC9D;AAAA,EACA,MAAM,SAAwB,CAAC;AAAA,EAC/B,WAAW,QAAQ,MAAM,YAAY,CAAC,GAAG;AAAA,IACvC,MAAM,QAAQ,KAAK,SAAS,CAAC,GAC1B,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,EAC5B,SAAS,CAAC,QAAQ,KAAK,UAAU,MAAM;AAAA,IAC1C,MAAM,OAAO,OAAO,GAAG,EAAE;AAAA,IACzB,IAAI,QAAQ,KAAK,SAAS,MAAM;AAAA,MAC9B,KAAK,KAAK,KAAK,QAAQ,IAAI,CAAC;AAAA,IAC9B,EAAO;AAAA,MACL,OAAO,KAAK,EAAE,MAAM,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;AAAA;AAAA,EAE/C;AAAA,EACA,OAAO,gBACL,aACE,OAAO,QAAQ,GAAG,MAAM,WAAW,UAAU,MAAM,MAAM,IAAI,CAAC,CAChE,CACF;AAAA;AAIF,IAAM,YAAY,CAAC,UACjB,OAAO,UAAU;AAGnB,IAAM,aAAa,CAAC,UAClB,MAAM,aAAa,WAAW,OAAO;AASvC,IAAM,cAAc,CAAC,WAA0C;AAAA,EAC7D,MAAM,UAAoB,CAAC;AAAA,EAC3B,OAAO,OAAO,IAAI,CAAC,UAAU;AAAA,IAC3B,IAAI,CAAC,MAAM,UAAU;AAAA,MACnB,QAAQ,SAAS;AAAA,MACjB,OAAO;AAAA,IACT;AAAA,IACA,MAAM,QAAQ,KAAK,IAAI,KAAK,IAAI,IAAI,MAAM,SAAS,KAAK,CAAC,GAAG,QAAQ,MAAM;AAAA,IAC1E,MAAM,SAAS,QAAQ,QAAQ,MAAM;AAAA,IACrC,QAAQ,SAAS;AAAA,IACjB,QAAQ,KAAK,SAAS,WAAW,KAAK,EAAE,SAAS,CAAC;AAAA,IAClD,OAAO;AAAA,GACR;AAAA;AAGH,IAAM,eAAc,CAClB,OACA,SACA,WACW;AAAA,EACX,MAAM,SAAS,QAAQ,cAAc,MAAM;AAAA,EAC3C,IAAI,QAAQ;AAAA,IACV,OAAO,OAAO,KAAK;AAAA,EACrB;AAAA,EACA,IAAI,MAAM,UAAU,SAAS;AAAA,IAC3B,MAAM,MAAM,QAAQ,WAAW,KAAK;AAAA,IACpC,MAAM,MAAM,UAAU,MAAM,GAAG,IAAI,MAAM,MAAM;AAAA,IAC/C,OAAO,MAAM,MAAM,KAAK,GAAG,IAAI;AAAA,EACjC;AAAA,EACA,IAAI,MAAM,UAAU,SAAS;AAAA,IAC3B,OAAO,YACL,wBAAwB,MAAM,SAC9B,UAAU,QAAQ,WAAW,CAC/B;AAAA,EACF;AAAA,EAEA,MAAM,SAAS,eAAe,KAAK;AAAA,EACnC,IAAI,MAAM,UAAU;AAAA,IAClB,OAAO,GAAG,IAAI,OAAO,MAAM,IAAI,WAAW,KAAK,KAAK;AAAA,EACtD;AAAA,EACA,IAAI,MAAM,UAAU,cAAc;AAAA,IAChC,OAAO,KAAK;AAAA,EACd;AAAA,EACA,OAAO,GAAG,eAAe,IAAI,MAAM,SAAS,QAAQ,KAAK,KAAK;AAAA;AAIzD,IAAM,yBAAyB,CACpC,QACA,UAA+B,CAAC,MACrB;AAAA,EACX,MAAM,UAAU,YAAY,MAAM;AAAA,EAClC,MAAM,QAAQ,OAAO,IAAI,CAAC,OAAO,MAC/B,aAAY,OAAO,SAAS,QAAQ,MAAM,CAAC,CAC7C;AAAA,EAEA,MAAM,MAAgB,CAAC;AAAA,EACvB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AAAA,IACxC,MAAM,OAAO,MAAM,MAAM;AAAA,IACzB,MAAM,WAAW,QAAQ,OAAO,IAAI,IAAI,QAAQ;AAAA,IAChD,MAAM,WAAW,QAAQ,OAAO,IAAI,QAAQ;AAAA,IAC5C,IAAI,IAAI,GAAG;AAAA,MACT,IAAI,KAAK,YAAY,WAAW;AAAA,IAAO;AAAA;AAAA,CAAM;AAAA,IAC/C;AAAA,IACA,IAAI,KAAK,IAAI;AAAA,EACf;AAAA,EACA,OAAO,GAAG,IAAI,KAAK,EAAE;AAAA;AAAA;;;AD/IvB,IAAM,YAAY;AAYlB,IAAM,kBAAkB,CACtB,KACA,WACA,YACkB;AAAA,EAClB,MAAM,QAAQ,IAAI,MAAM,SAAS;AAAA,EACjC,IAAI,CAAC,OAAO,QAAQ;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,IAAI,MAAM,QAAQ,MAAM;AAAA,EAChC,OAAO,gCAAgC,aAAa,WAAW,MAAM,QAAQ;AAAA;AAa/E,IAAM,gBAAgB,CACpB,SACA,YACqB;AAAA,EACrB,IAAI,QAAQ,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,EACjB;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,KAMD,EAAE,aAAa,IAAI,YAAY,gBAAgB;AAAA,IAGhD,MAAM;AAAA,IACN,MAAM,IAAI,WAAW;AAAA,MACnB,MAAM;AAAA,MACN,SAAS,WAAW,QAAQ;AAAA,MAC5B,UAAU;AAAA,IACZ,CAAC;AAAA;AAAA,EAEH,OAAO,aAAa;AAAA,IAClB,YAAY,QAAQ,cAAc;AAAA,IAClC,SAAS,QAAQ;AAAA,IAEjB,aAAa,UAAU,kBAAkB;AAAA,IACzC,WAAW,QAAQ;AAAA,IACnB,OAAO,QAAQ,SAAS,QAAQ,IAAI;AAAA,IACpC,QAAQ,CAAC;AAAA,EACX,CAAC;AAAA;AAOI,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,QAAQ,UAAU,CAAC;AAAA,EAGlC,MAAM,QAAQ,cACZ,KAAK,YAAY,MAAK,UAAU,SAAS,QAAQ,IAAI,CACvD;AAAA,EACA,IAAI,WAAW,IAAI;AAAA,EAEnB,MAAM,UAAU,CAAC,QAAqC;AAAA,IACpD,MAAM,YACJ,SAAS,QAAQ,KAAK,OAAO,QAAQ,cAAc,CAAC,KACpD,SAAS,IAAI,GAAG,KAChB;AAAA,IAMF,MAAM,OACJ,YAAY,SAAS,KAAK,QAAQ,SAAS,IAAI,GAAG,KAAK,EAAE,KAAK;AAAA,IAEhE,MAAM,OAA0B,CAAC;AAAA,IACjC,MAAM,QAAQ,SAAS,QAAQ,KAAK,OAAO,SAAS,OAAO,CAAC;AAAA,IAC5D,MAAM,cAAc,SAClB,QAAQ,KAAK,OAAO,eAAe,aAAa,CAClD;AAAA,IACA,IAAI,OAAO;AAAA,MACT,KAAK,QAAQ;AAAA,IACf;AAAA,IACA,IAAI,aAAa;AAAA,MACf,KAAK,cAAc;AAAA,IACrB;AAAA,IAEA,MAAM,OAAO,QAAQ,KAAK,OAAO,QAAQ,MAAM;AAAA,IAC/C,IAAI,WAAW;AAAA,IAGf,IAAI,SAAuB,UAAU,QAAQ,WAAW,IAAI,QAAQ;AAAA,IACpE,IAAI,eAAc,IAAI,GAAG;AAAA,MAGvB,WAAW,sBAAsB,GAAG,KAAK,QAAQ;AAAA,CAAK;AAAA,MACtD,SAAS;AAAA,IACX,EAAO,SAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,MAG9B,WAAW,uBAAuB,MAA6B;AAAA,QAC7D,UAAU,CAAC,UAAU;AAAA,UAInB,MAAM,MAAO,MAAM,OAAyC;AAAA,UAC5D,OAAO,MACH,gBAAgB,KAAK,QAAQ,WAAW,QAAQ,OAAO,IACvD;AAAA;AAAA,QAEN,aAAa,QAAQ;AAAA,MACvB,CAAC;AAAA,IACH;AAAA,IACA,MAAM,MAAM,oBAAO,UAAU,UAAU,IAAI;AAAA,IAC3C,OAAO;AAAA,MACL,MAAM,EAAE,QAAQ,MAAM,SAAS;AAAA,MAG/B,MAAM,KAAK,KAAK;AAAA,MAChB,MAAM,SAAS,GAAG;AAAA,MAClB,cAAc,SAAS,QAAQ,KAAK,OAAO,gBAAgB,YAAY,CAAC;AAAA,MACxE;AAAA,MACA,KAAK,GAAG,QAAQ;AAAA,IAClB;AAAA;AAAA,EAGF,MAAM,OAAO,OACX,UAAU,KAAK,WAAW,SACI;AAAA,IAC9B,MAAM,QAAsB,CAAC;AAAA,IAC7B,MAAM,SAAS,MAAM,cACnB,QAAQ,MACR,OACA,YAAY;AAAA,MACV,MAAM,SAAS,cAAc,SAAS,KAAK,WAAW,KAAK;AAAA,MAC3D,MAAM,OAAO,MAAM,OAAO,MAAwB,QAAQ,KAAK;AAAA,MAI/D,IAAI,KAAK,WAAW,KAAK,EAAE,QAAQ,SAAS,QAAQ,IAAI,eAAe;AAAA,QACrE,MAAM,KAAK;AAAA,UACT,MAAM;AAAA,UACN,SAAS,WAAW,QAAQ;AAAA,UAC5B,UAAU;AAAA,UACV,YACE;AAAA,QACJ,CAAC;AAAA,MACH;AAAA,MACA,OAAO,KAAK,IAAI,OAAO;AAAA,OAEzB,OACF;AAAA,IACA,WAAW,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAAA,IACpE,OAAO,KAAK,QAAQ,aAAa,CAAC,GAAG,OAAO,aAAa,GAAG,KAAK,EAAE;AAAA;AAAA,EAGrE,MAAM,OAAO,OAAO,QAAiC;AAAA,IACnD,MAAM,SAAS,SAAS,IAAI,GAAG;AAAA,IAC/B,IAAI,QAAQ;AAAA,MACV,OAAO,OAAO,OAAO,OAAO,KAAK;AAAA,IACnC;AAAA,IACA,MAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC7B,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,GAAG,OAAO;AAAA;AAAA,EAGhD,OAAO;AAAA,IACL;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB;AAAA,IACA,QAAQ;AAAA,IACR,OAAO,QAAQ,eACX,aACE,MAAM,KAAK,IAAI,GACf,QAAQ,cACR,MAAM,KAAK,CACb,IACA;AAAA,IACJ,aAAa,CAAC,SAAS,aAAa,SAAS,IAAI;AAAA,EACnD;AAAA;;;AEjPF,IAAM,YAAW,CAAC,SAAmC,UAAU,KAAK,QAAQ;AAE5E,IAAM,UAAS,CAAC,SAA6B,SAAS,KAAK,IAAI,KAAK;AAEpE,IAAM,eAAc,CAAC,UAEnB,MAAM,QAAQ,CAAC,SAAS,iBAAgB,IAAI,CAAC;AAE/C,IAAM,mBAAkB,CAAC,SAAmC;AAAA,EAC1D,QAAQ,QAAO,IAAI;AAAA,SACZ,QAAQ;AAAA,MACX,OAAO;AAAA,QACL;AAAA,UACE,OAAO;AAAA,YACL,MAAM,KAAK,SAAS;AAAA,YACpB,MAAM,KAAK,SAAS;AAAA,YACpB,QAAQ,KAAK,WAAW;AAAA,YACxB,QAAQ,KAAK,kBAAkB;AAAA,UACjC;AAAA,UACA,MAAM,SAAS,KAAK,IAAI,KAAK;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AAAA,SACK,QAAQ;AAAA,MACX,OAAO,UAAU,aAAY,UAAS,IAAI,CAAC,GAAG,SAAS,KAAK,GAAG,CAAC;AAAA,IAClE;AAAA,aACS;AAAA,MACP,OAAO,aAAY,UAAS,IAAI,CAAC;AAAA,IACnC;AAAA;AAAA;AAKJ,IAAM,aAAY,CAAC,UACjB,gBAAgB,aAAa,aAAY,KAAK,CAAC,CAAC;AAElD,IAAM,cAAa,CAAC,SAA6B;AAAA,EAC/C,MAAM,UAAU,SAAS,KAAK,MAAM,MAAM;AAAA,EAC1C,OAAO,UAAS,IAAI,EACjB,IAAI,CAAC,MAAM,UAAU;AAAA,IACpB,MAAM,OAAO,UAAS,IAAI;AAAA,IAC1B,MAAM,OAAO,WAAU,KAAK,OAAO,CAAC,QAAQ,QAAO,GAAG,MAAM,MAAM,CAAC;AAAA,IACnE,MAAM,MAAM,KACT,OAAO,CAAC,QAAQ,QAAO,GAAG,MAAM,MAAM,EACtC,IAAI,CAAC,SAAS,YAAW,IAAI,CAAC,EAC9B,KAAK;AAAA,CAAI;AAAA,IACZ,MAAM,OAAO,MAAM,GAAG;AAAA,EAAS,QAAQ;AAAA,IACvC,OAAO,SAAS,UAAU,GAAG,QAAQ,OAAO,KAAK,IAAI;AAAA,GACtD,EACA,KAAK;AAAA,CAAI;AAAA;AAGd,IAAM,cAAc,CAClB,MACA,YACW;AAAA,EACX,MAAM,OAAO,SAAS,KAAK,KAAK;AAAA,EAChC,MAAM,MAAM,OAAO,SAAS,KAAK,GAAG,IAAI;AAAA,EACxC,IAAI,EAAE,QAAQ,MAAM;AAAA,IAClB,OAAO;AAAA,EACT;AAAA,EACA,OAAO,MACL,SAAS,KAAK,eAAe,KAAK,SAAS,KAAK,IAAI,KAAK,IACzD,YAAY,KAAK,QAAQ,OAAO,CAClC;AAAA;AAGF,IAAM,eAAc,CAClB,MACA,YACW;AAAA,EACX,QAAQ,QAAO,IAAI;AAAA,SACZ,aAAa;AAAA,MAChB,OAAO,WAAU,UAAS,IAAI,CAAC;AAAA,IACjC;AAAA,SACK,WAAW;AAAA,MACd,OAAO,GAAG,cAAc,SAAS,KAAK,KAAK,KAAK,CAAC,IAAI,WAAU,UAAS,IAAI,CAAC;AAAA,IAC/E;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,WAAW,WAAU,UAAS,IAAI,CAAC,CAAC;AAAA,IAC7C;AAAA,SACK,QAAQ;AAAA,MACX,OAAO,YAAW,IAAI;AAAA,IACxB;AAAA,SACK,QAAQ;AAAA,MAEX,MAAM,OAAO,UAAS,IAAI,EACvB,IAAI,CAAC,UAAU,SAAS,MAAM,IAAI,KAAK,EAAE,EACzC,KAAK,EAAE;AAAA,MACV,OAAO,UAAU,MAAM,SAAS,KAAK,QAAQ,KAAK,EAAE;AAAA,IACtD;AAAA,SACK,SAAS;AAAA,MACZ,OAAO,YAAY,MAAM,OAAO;AAAA,IAClC;AAAA,aACS;AAAA,MACP,OAAO,YAAY,iBAAiB,QAAO,IAAI,GAAG;AAAA,IACpD;AAAA;AAAA;AAKG,IAAM,yBAAyB,CACpC,QACA,UAA+B,CAAC,MAEhC,iBAAiB,UAAU,MAAM,EAAE,IAAI,CAAC,SAAS,aAAY,MAAM,OAAO,CAAC,CAAC;;;AC9F9E,IAAM,aAAY;AAElB,IAAM,kBAA+B;AAAA,EACnC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,cAAc;AAAA,EACd,MAAM;AAAA,EACN,OAAO;AACT;AAOA,IAAM,UAAU,CAAC,SAAiC;AAAA,EAChD,MAAM,aAAa,SAAS,KAAK,UAAU;AAAA,EAC3C,OAAO,aAAa,KAAK,YAAY,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA;AAG/D,IAAM,OAAO,CAAC,QAA4B;AAAA,EACxC,MAAM,MAAM,IAAI,cAAc,IAAI;AAAA,EAClC,OAAO,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG,KAAK,EAAE;AAAA;AAWpD,IAAM,cAAc,CAAC,QAA6B,IAAI,gBAAgB;AAO/D,IAAM,eAAe,CAC1B,SACA,QACkB;AAAA,EAClB,MAAM,SAAS,KAAK,oBAAmB,QAAQ,OAAO;AAAA,EACtD,MAAM,SAAS,QAAQ,IAAI,QAAQ,SAAS,EAAE;AAAA,EAE9C,MAAM,eAAe,YAAoC;AAAA,IACvD,MAAM,QAAQ,QAAQ,SAAS,QAAQ,IAAI;AAAA,IAC3C,MAAM,SAAqB;AAAA,MACzB,WAAW,QAAQ;AAAA,MACnB,SAAS,QAAQ,EAAE,eAAe,UAAU,QAAQ,IAAI,CAAC;AAAA,IAC3D;AAAA,IACA,MAAM,OAAO,GAAG,cAAc,QAAQ;AAAA,IAEtC,MAAM,OAAO,OACX,gBAC2B;AAAA,MAC3B,MAAM,UAAyB,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM;AAAA,MACrD,IAAI,OAAO;AAAA,MACX,IAAI,OAAO;AAAA,MACX,OAAO,MAAM;AAAA,QAGX,MAAM,QAAQ,YAAY;AAAA,aACrB,QAAQ;AAAA,UACX,QAAQ,QAAQ;AAAA,UAChB,wBAAwB,OAAO,UAAS;AAAA,UACxC,oBAAoB,OAAO,IAAI;AAAA,UAC/B,UAAU,QAAQ,YAAY;AAAA,aAC3B;AAAA,QACL,CAAC;AAAA,QAED,MAAM,SAAS,SAAS,MAAM,UAAU,GAAG,QAAQ,SAAS,MAAM,CAAC;AAAA,QACnE,IAAI,CAAC,QAAQ;AAAA,UACX,MAAM,IAAI,MAAM,uCAAuC;AAAA,QACzD;AAAA,QACA,MAAM,QAAQ,UAAU,OAAO,IAAI;AAAA,QACnC,WAAW,QAAQ,OAAO;AAAA,UACxB,QAAQ,OAAO,SAAS,KAAK,UAAU,MAAM;AAAA,UAC7C,QAAQ,KAAK,KAAK,QAAQ,IAAI,CAAC;AAAA,QACjC;AAAA,QACA,MAAM,YACJ,SAAS,QAAQ,QAAQ,2BAA2B,CAAC,KAAK;AAAA,QAC5D,OAAO,MAAM,SAAS,KAAK,OAAO;AAAA,QAClC,QAAQ;AAAA,MACV;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,MAAM,YAAY,CAChB,MACA,YAEA,KAAK,IAAI,CAAC,QACR,cACE,KACA,QACA,KAAK,GAAG,GACR,CAAC,SAAS,uBAAuB,MAAM,EAAE,SAAS,OAAO,CAAC,GAC1D,QAAQ,GAAG,CACb,CACF;AAAA,IAIF,MAAM,YAAY,MAAM,KAAK,CAAC,CAAC;AAAA,IAC/B,IAAI,CAAC,KAAK,SAAS;AAAA,MACjB,OAAO,UAAU,UAAU,MAAM,MAAM,KAAK;AAAA,IAC9C;AAAA,IAGA,IAAI,UAAU,IAAI;AAAA,MAChB,MAAM,YAAY,MAAM,KAAK,EAAE,kBAAkB,UAAU,CAAC;AAAA,MAC5D,OAAO,UAAU,UAAU,MAAM,WAAW;AAAA,IAC9C;AAAA,IAIA,MAAM,SAAS,MAAM,KAAK,EAAE,QAAQ,QAAQ,CAAC;AAAA,IAC7C,IAAI,OAAO,KAAK,WAAW,KAAK,UAAU,KAAK,WAAW,GAAG;AAAA,MAK3D,MAAM,YAAY,MAAM,KAAK,EAAE,kBAAkB,UAAU,CAAC,EAAE,MAC5D,MAAM,IACR;AAAA,MACA,OAAO,YAAY,UAAU,UAAU,MAAM,WAAW,IAAI,CAAC;AAAA,IAC/D;AAAA,IACA,MAAM,eAAe,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC;AAAA,IACrD,MAAM,WAAW,IAAI,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC;AAAA,IAG9C,OAAO;AAAA,MACL,GAAG,UAAU,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,IAAI,KAAK,GAAG,CAAC,CAAC;AAAA,MAC/D,GAAG,UACD,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,GAAG,CAAC,CAAC,GACvD,MAAM,KACR;AAAA,IACF;AAAA;AAAA,EAGF,OAAO,aACL;AAAA,IACE;AAAA,IACA,MAAM,QAAQ;AAAA,IACd,cAAc,QAAQ;AAAA,IACtB,QAAQ,QAAQ;AAAA,IAChB,aAAa,CAAC,SAAS,aAAa,SAAS,IAAI;AAAA,EACnD,GACA,GACF;AAAA;;;AflKF,IAAM,cAAc,MAAkC;AAAA,EACpD,MAAM,OAAO,IAAI;AAAA,EACjB,OAAO,CAAC,SAAS;AAAA,IACf,IAAI,OAAO;AAAA,IACX,IAAI,IAAI;AAAA,IACR,OAAO,KAAK,IAAI,IAAI,GAAG;AAAA,MACrB,OAAO,GAAG,QAAQ;AAAA,MAClB,KAAK;AAAA,IACP;AAAA,IACA,KAAK,IAAI,IAAI;AAAA,IACb,OAAO;AAAA;AAAA;AAqBJ,IAAM,cAAc,CACzB,SACA,YACW;AAAA,EACX,MAAM,OAAO,QAAQ,UAAU,YAAY;AAAA,EAC3C,IAAI,QAAQ,SAAS,UAAU;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,QAAQ,cAAc,WAAW,YAAY,QAAQ;AAAA,EACrD,OAAO,GAAG,QAAQ,SAAS,KAAK,UAAU,OAAO,CAAC;AAAA;AAGpD,IAAM,gBAAgB,CACpB,SACA,MACA,SACA,cACmB;AAAA,EACnB,eAAe,iBAAiB;AAAA,EAChC,WAAW,MAAK,QAAQ,QAAQ,UAAU,gBAAgB,IAAI;AAAA,EAC9D,UACE,aAAa,YACT,MAAK,QAAQ,QAAQ,SAAS,IAAI,IAClC,MAAK,QAAQ,QAAQ,SAAS,MAAM,QAAQ;AAAA,EAClD,MAAM,QAAQ;AAAA,EACd,SAAS,QAAQ;AAAA,EACjB,aAAa,QAAQ;AAAA,EACrB,SAAS,QAAQ,WAAW,QAAQ,SAAS;AAC/C;AAOA,IAAM,sBAAsB,CAC1B,WAEA,OAAO,YACL,OAAO,QAAQ,OAAO,QAAQ,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS;AAAA,EACxD;AAAA,EACA,OAAO,KAAK,IAAI,WAAW;AAC7B,CAAC,CACH;AAOF,IAAM,cAAc,CAClB,SACA,MACA,QACA,SACA,YACkB;AAAA,EAClB,MAAM,MAAM,MACV,cAAc,SAAS,MAAM,SAAS,YAAY,SAAS,OAAO,CAAC;AAAA,EACrE,QAAQ,QAAQ;AAAA,SACT,cAAc;AAAA,MACjB,QAAQ,cAAc,aAAa,YAAY,QAAQ;AAAA,MACvD,OAAO,iBAAiB,KAAK,SAAS,MAAM,aAAa,QAAQ,KAAK,CAAC;AAAA,IACzE;AAAA,SACK,UAAU;AAAA,MAOb,MAAM,SAAS,QAAQ,QAAQ,cAAc,IAAI,CAAC,KAAK,QAAQ;AAAA,MAC/D,OAAO,OAAO,SAAS,OAAO,SAAS,KAAK,QAAQ,KAAK;AAAA,IAC3D;AAAA,SACK,UAAU;AAAA,MACb,OAAO,aAAa,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,SACK,UAAU;AAAA,MACb,OAAO,aAAa,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,SACK,cAAc;AAAA,MAGjB,OAAO,iBACL;AAAA,WACK,QAAQ;AAAA,QACX,MAAM,OAAO;AAAA,QACb;AAAA,QACA,UAAU,OAAO;AAAA,MACnB,GACA,IAAI,CACN;AAAA,IACF;AAAA,SACK,WAAW;AAAA,MACd,OAAO,cAAc,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,CAAC;AAAA,IAC1D;AAAA,SACK,UAAU;AAAA,MACb,OAAO,aAAa,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,CAAC;AAAA,IACzD;AAAA,SACK,YAAY;AAAA,MACf,QAAQ,cAAc,aAAa,YAAY,QAAQ;AAAA,MACvD,OAAO,eACL;AAAA,WACK;AAAA,QACH,aAAa,OAAO,QAAQ;AAAA,QAC5B,iBAAiB,OAAO,KAAK,OAAO,YAAY,MAAM;AAAA,QACtD,MAAM,OAAO;AAAA,QACb;AAAA,QACA,qBAAqB,oBAAoB,MAAM;AAAA,QAC/C,UAAU,OAAO;AAAA,MACnB,GACA,IAAI,CACN;AAAA,IACF;AAAA,SACK,mBAAmB;AAAA,MACtB,OAAO,qBACL,KAAK,QAAQ,SAAS,MAAM,MAAM,OAAO,WAAW,QAAQ,KAAK,GACjE,IAAI,CACN;AAAA,IACF;AAAA,aACS;AAAA,MAKP;AAAA,IACF;AAAA;AAAA,EAEF,OAAO,gBAAgB,KAAK,QAAQ,SAAS,KAAK,GAAG,IAAI,CAAC;AAAA;AAI5D,IAAM,WAAW,CAAC,YAA0C;AAAA,EAC1D,IAAI,QAAQ,SAAS,UAAU;AAAA,IAC7B,OAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAIA,OAAO,SAAS,QAAQ,QAAQ,UAAU,IAAI,GAAG,KAAK,QAAQ;AAAA;AAUzD,IAAM,iBAAiB,CAC5B,QACA,SACA,YACoB;AAAA,EACpB,MAAM,UAAU,YAAY;AAAA,EAC5B,MAAM,UAAU,OAAO,QAAQ,QAAQ,IAAI,CAAC,YAC1C,YAAY,SAAS,QAAQ,SAAS,OAAO,CAAC,GAAG,QAAQ,SAAS,OAAO,CAC3E;AAAA,EAEA,MAAM,aAAa,gBAAgB,MAAM;AAAA,EACzC,IAAI,WAAW,SAAS,GAAG;AAAA,IACzB,QAAQ,KACN,cAAc,YAAY,cAAc,SAAS,WAAW,OAAO,CAAC,CACtE;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;;;AgBjOT,qBAAS;AAET;AACA,oBAAS,qBAAS;AAoBX,IAAM,oBAAoB,OAAO,SAAmC;AAAA,EACzE,IAAI,SAAQ,IAAI,EAAE,YAAY,MAAM,QAAQ;AAAA,IAC1C,OAAO;AAAA,EACT;AAAA,EACA,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,OAAO,MAAM,UAAS,IAAI;AAAA,IAC1B,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET,IAAI;AAAA,IACF,MAAM,cAAc,MAAM,IAAI;AAAA,IAC9B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAyBJ,IAAM,6BAA6B,OACxC,UAC0B;AAAA,EAC1B,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,SAAS,MAAM,QAAQ,CAAC,SAAS;AAAA,IACrC,QAAQ,eAAe;AAAA,IACvB,IAAI,CAAC,YAAY;AAAA,MACf,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO,KAAK,MAAM,QAAQ,CAAC,SAAS;AAAA,MAClC,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,MAAM,MAAM,GAAG,QAAQ,KAAK,QAAQ,KAAK;AAAA,MACzC,IAAI,CAAC,KAAK,SAAS,KAAK,IAAI,GAAG,GAAG;AAAA,QAChC,OAAO,CAAC;AAAA,MACV;AAAA,MACA,KAAK,IAAI,GAAG;AAAA,MACZ,MAAM,MAAM,qBAAqB,SAAQ,UAAU,GAAG,KAAK,MAAM;AAAA,MACjE,OAAO,MAAM,CAAC,EAAE,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC;AAAA,KACvC;AAAA,GACF;AAAA,EACD,MAAM,QAAQ,MAAM,QAAQ,IAC1B,OAAO,IAAI,OAAO,UACf,MAAM,kBAAkB,MAAM,GAAG,IAAK,CAAC,KAAK,IAAI,CAAC,CACpD,CACF;AAAA,EACA,OAAO,MAAM,KAAK,EAAE,IAAI,GAAG,MAAM,YAAY;AAAA,IAC3C,MAAM;AAAA,IACN,QAAQ,KAAK;AAAA,IACb;AAAA,IACA,MAAM,KAAK;AAAA,IACX,SAAS,KAAK,KAAK;AAAA,IACnB,UAAU;AAAA,IACV,YACE;AAAA,EACJ,EAAE;AAAA;;;AChGJ;AAEA,4BAAS;AAqET,IAAM,YAAY,OAAO;AAGzB,IAAM,eAAe,IAAI,OAAO,OAAO,MAAM,0BAA0B,IAAI;AAC3E,IAAM,kBAAkB,IAAI,OAC1B,OAAO,MAAM,4CACb,IACF;AAEA,IAAM,qBAAqB;AAI3B,IAAM,YAAW;AAIjB,IAAM,YACJ;AAKF,IAAM,aACJ;AAIF,IAAM,iBAAiB,IAAI,OACzB,OAAO,0BAA0B,qBAAqB,uBACtD,IACF;AAGA,IAAM,uBAAuB;AAC7B,IAAM,eAAc;AACpB,IAAM,mBAAmB;AAIzB,IAAM,eAAe,IAAI,OACvB,OAAO,MAAM,0IACb,IACF;AAGA,IAAM,mBAAmB;AACzB,IAAM,cAAc;AAGpB,IAAM,cAAc;AAKpB,IAAM,oBACJ;AAGF,IAAM,QAAQ,CAAC,SAAyB,KAAK,WAAW,WAAW,GAAG;AAMtE,IAAM,eAAe,CAAC,SAAyB;AAAA,EAC7C,MAAM,SAA6B,CAAC;AAAA,EACpC,MAAM,OAAO,CAAC,SAAsB;AAAA,IAClC,MAAM,QAAQ,KAAK,UAAU,MAAM,UAAU;AAAA,IAC7C,MAAM,MAAM,KAAK,UAAU,IAAI,UAAU;AAAA,IACzC,IACE,KAAK,SAAS,UACd,KAAK,SAAS,gBACb,KAAK,SAAS,UAAU,KAAK,MAAM,WAAW,MAAM,GACrD;AAAA,MACA,OAAO,KAAK,CAAC,OAAO,GAAG,CAAC;AAAA,IAC1B,EAAO,SAAI,cAAc,MAAM;AAAA,MAC7B,WAAW,SAAS,KAAK,UAAU;AAAA,QACjC,KAAK,KAAK;AAAA,MACZ;AAAA,IACF;AAAA;AAAA,EAEF,KACE,iBAAgB,MAAM;AAAA,IACpB,UAAU,KAAK,wBAAwB,KAAK,KAAK;AAAA,EACnD,CAAC,CACH;AAAA,EACA,IAAI,SAAS;AAAA,EACb,IAAI,SAAS;AAAA,EACb,YAAY,OAAO,QAAQ,QAAQ;AAAA,IACjC,UAAU,KAAK,MAAM,QAAQ,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,GAAG,CAAC;AAAA,IAClE,SAAS;AAAA,EACX;AAAA,EACA,OAAO,SAAS,KAAK,MAAM,MAAM;AAAA;AASnC,IAAM,UAAU,CAAC,SAAyB;AAAA,EACxC,IAAI,QAAoB;AAAA,EACxB,OAAO,KACJ,MAAM;AAAA,CAAI,EACV,IAAI,CAAC,SAAS;AAAA,IACb,MAAM,OAAO,eAAe,MAAM,KAAK;AAAA,IACvC,MAAM,UAAU,UAAU,QAAQ,SAAS;AAAA,IAC3C,QAAQ;AAAA,IACR,OAAO,UAAU,MAAM,IAAI,IAAI,KAAK,WAAW,aAAa,KAAK;AAAA,GAClE,EACA,KAAK;AAAA,CAAI,EACT,WAAW,aAAa,KAAK,EAC7B,WAAW,cAAc,KAAK,EAC9B,WAAW,mBAAmB,KAAK;AAAA;AAIxC,IAAM,eAAe,CAAC,SAA2B;AAAA,EAC/C,MAAM,SAAS,CAAC,CAAC;AAAA,EACjB,SACM,QAAQ,KAAK,QAAQ;AAAA,CAAI,EAC7B,UAAU,IACV,QAAQ,KAAK,QAAQ;AAAA,GAAM,QAAQ,CAAC,GACpC;AAAA,IACA,OAAO,KAAK,QAAQ,CAAC;AAAA,EACvB;AAAA,EACA,OAAO;AAAA;AAIT,IAAM,SAAS,CAAC,QAA2B,OAAqB;AAAA,EAC9D,MAAM,OAAO,OAAO,cAAc,CAAC,UAAU,SAAS,EAAE;AAAA,EACxD,OAAO,EAAE,QAAQ,MAAM,OAAO,SAAS,KAAK,GAAG,MAAM,OAAO,EAAE;AAAA;AAGhE,IAAM,mBAAmB,GAAG,QAAQ,WAA4B;AAAA,EAC9D,GAAG,CAAC,GAAG,KAAK,SAAS,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW;AAAA,OAC/C,OAAO,QAAQ,MAAM,KAAK;AAAA,IAC7B,MAAM;AAAA,IACN,SAAS,KAAK,MAAM;AAAA,IACpB,YACE;AAAA,EACJ,EAAE;AAAA,EACF,GAAG,CAAC,GAAG,KAAK,SAAS,eAAe,CAAC,EAClC,OAAO,CAAC,UAAU,CAAC,mBAAmB,KAAK,MAAM,QAAQ,cAAc,EAAE,CAAC,EAC1E,IAAI,CAAC,WAAW;AAAA,OACZ,OAAO,QAAQ,MAAM,KAAK;AAAA,IAC7B,MAAM;AAAA,IACN,SAAS,KAAK,MAAM;AAAA,IACpB,YACE;AAAA,EACJ,EAAE;AACN;AAMA,IAAM,UAAU,CAAC,SACf,KACG,KAAK,EACL,YAAY,EACZ,WAAW,aAAa,GAAG;AAGzB,IAAM,iBAAiB,CAAC,UAAgD;AAAA,EAC7E,MAAM,QAAQ,IAAI;AAAA,EAClB,WAAW,QAAQ,OAAO;AAAA,IACxB,MAAM,QAAQ,KAAK,OAAO,IAAI,MAAM,GAAG,EAAE,GAAG,EAAE,KAAK,IAAI,QACrD,aACA,EACF;AAAA,IACA,WAAW,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,QAAQ,KAAK,KAAK,CAAC,CAAC,GAAG;AAAA,MAC/D,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,MAC3B,IAAI,OAAO;AAAA,QACT,MAAM,KAAK,IAAI;AAAA,MACjB,EAAO;AAAA,QACL,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC;AAAA;AAAA,IAEzB;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,IAAM,YAAY,CAAC,MAAc,cAA6C;AAAA,EAC5E,OAAO,OAAO,IAAI,WAAW,KAAK,MAAM,KAAK,CAAC;AAAA,EAC9C,MAAM,QAAQ,UAAU,IAAI;AAAA,EAC5B,OAAO,SAAS,UAAU,GAAG,SAAS,KAAK,OAAO,MAAM;AAAA;AAG1D,IAAM,mBAAmB,GAAG,WAAW,QAAQ,WAC7C,CAAC,GAAG,KAAK,SAAS,SAAQ,CAAC,EAAE,QAAQ,CAAC,UAAU;AAAA,EAC9C,MAAM,SAAqB,MAAM,QAAQ,SAAS,IAC/C,MAAM,GAAG,EACT,IAAI,CAAC,UAAU;AAAA,IACd,OAAO,UAAU,MAAM,SAAS;AAAA,IAChC,MAAM,KAAK,KAAK;AAAA,EAClB,EAAE;AAAA,EACJ,MAAM,SAAS,MAAM,KAAK,CAAC,SAAS,KAAK,UAAU,SAAS;AAAA,EAC5D,IAAI,CAAC,UAAU,MAAM,WAAW,GAAG;AAAA,IACjC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,QAAQ,MAAM,KAAK,CAAC,SAAS,SAAS,MAAM,KAAK;AAAA,EACvD,OAAO;AAAA,IACL;AAAA,SACK,OAAO,QAAQ,MAAM,KAAK;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS,KAAK,MAAM,2GAA2G,SAAS,0BAA0B,OAAO,UAAU;AAAA,MACnL,YAAY,SACR,qCAAqC,OAAO,SAAS,OAAO,cAC5D;AAAA,IACN;AAAA,EACF;AAAA,CACD;AAEH,IAAM,cAAc,GAAG,QAAQ,WAA4B;AAAA,EACzD,MAAM,SAAS,CAAC,GAAG,KAAK,SAAS,SAAS,CAAC,EAAE,IAAI,CAAC,WAAW;AAAA,IAC3D,IAAI,MAAM,QAAQ,MAAM,GAAG,QAAQ,IAAI;AAAA,IACvC,SAAS,MAAM,QAAQ;AAAA,EACzB,EAAE;AAAA,EACF,MAAM,SAAS,IAAI,IAAI,OAAO,IAAI,GAAG,SAAS,EAAE,CAAC;AAAA,EACjD,OAAO;AAAA,IACL,GAAG,OAAO,IAAI,GAAG,IAAI,eAAe;AAAA,SAC/B,OAAO,QAAQ,EAAE;AAAA,MACpB,MAAM;AAAA,MACN,SAAS,KAAK;AAAA,MACd,YACE;AAAA,IACJ,EAAE;AAAA,IACF,GAAG,CAAC,GAAG,KAAK,SAAS,UAAU,CAAC,EAC7B,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,KAAK,CAAC,EAC1C,IAAI,CAAC,WAAW;AAAA,SACZ,OAAO,QAAQ,MAAM,KAAK;AAAA,MAC7B,MAAM;AAAA,MACN,SAAS,KAAK,MAAM,QAAQ;AAAA,MAC5B,YACE;AAAA,IACJ,EAAE;AAAA,EACN;AAAA;AASF,IAAM,kBAAkB,CACtB,OACA,MACA,SACA,WACY;AAAA,EACZ,MAAM,OAAO,MAAM,KAAK,OAAO,MAAM;AAAA,EACrC,MAAM,UACJ,aAAY,KAAK,IAAI,KAAK,iBAAiB,KAAK,MAAM,KAAK,SAAS,EAAE;AAAA,EACxE,MAAM,SAAS,oBAAoB,IAAI;AAAA,EACvC,OACE,WACA,QAAQ,WAAW,WACnB,OAAO,UAAU,KAAK,SAAS,MAC9B,WAAW,QAAQ,CAAC,OAAO;AAAA;AAKhC,IAAM,0BAA0B;AAAA,EAC9B,IAAI;AAAA,IACF,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,YACE;AAAA,EACJ;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,QACE;AAAA,IACF,YACE;AAAA,EACJ;AACF;AAMA,IAAM,wBACJ,CAAC,WACD,GAAG,QAAQ,WAA4B;AAAA,EACrC,QAAQ,MAAM,QAAQ,eAAe,wBAAwB;AAAA,EAC7D,MAAM,UAAU,KACb,WAAW,sBAAsB,KAAK,EACtC,WAAW,iBAAiB,KAAK;AAAA,EACpC,MAAM,QAAQ,KAAK,MAAM;AAAA,CAAI;AAAA,EAC7B,OAAO,CAAC,GAAG,QAAQ,SAAS,cAAc,CAAC,EACxC,IAAI,CAAC,WAAW;AAAA,IACf,MAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,IAChC,SAAS,MAAM;AAAA,EACjB,EAAE,EACD,OACC,GAAG,MAAM,cAAc,CAAC,gBAAgB,OAAO,MAAM,SAAS,MAAM,CACtE,EACC,IAAI,GAAG,MAAM,eAAe;AAAA,OACxB;AAAA,IACH;AAAA,IACA,SAAS,KAAK,mCAAmC;AAAA,IACjD;AAAA,EACF,EAAE;AAAA;AAIR,IAAM,yBAAyB;AAE/B,IAAM,sBAAsB,GAAG,QAAQ,WACrC,CAAC,GAAG,KAAK,SAAS,YAAY,CAAC,EAC5B,OACC,CAAC,UACC,CAAC,KACE,MAAM,MAAM,QAAQ,MAAM,GAAG,MAAM,EACnC,UAAU,EACV,WAAW,KAAK,MAAM,QAAQ,MAAM,CAC3C,EACC,IAAI,CAAC,WAAW;AAAA,KACZ,OAAO,QAAQ,MAAM,KAAK;AAAA,EAC7B,MAAM;AAAA,EACN,SAAS,MAAM,MAAM,QAAQ;AAAA,EAC7B,YAAY,gBAAgB,MAAM,QAAQ;AAC5C,EAAE;AASN,IAAM,SAAwC;AAAA,EAC5C,IAAI;AAAA,IACF,EAAE,MAAM,kBAAkB,SAAS,UAAU;AAAA,IAC7C,EAAE,MAAM,kBAAkB,SAAS,iBAAiB;AAAA,IACpD,EAAE,MAAM,aAAa,SAAS,YAAY;AAAA,IAC1C,EAAE,MAAM,sBAAsB,IAAI,GAAG,SAAS,uBAAuB;AAAA,EACvE;AAAA,EACA,KAAK;AAAA,IACH,EAAE,MAAM,kBAAkB,SAAS,iBAAiB;AAAA,IACpD,EAAE,MAAM,aAAa,SAAS,YAAY;AAAA,IAC1C,EAAE,MAAM,sBAAsB,KAAK,GAAG,SAAS,uBAAuB;AAAA,IACtE;AAAA,MACE,MAAM;AAAA,MACN,SACE;AAAA,IACJ;AAAA,EACF;AACF;AAOA,IAAM,iBAAiB,CACrB,MACA,QACA,cACc;AAAA,EACd,MAAM,SAAS,OAAO,QAAQ,OAAO,CAAC,UAAU,MAAM,QAAQ,KAAK,IAAI,CAAC;AAAA,EACxE,IAAI,OAAO,WAAW,GAAG;AAAA,IACvB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,SAAS,WAAW,QAAQ,QAAQ,IAAI,IAAI,aAAa,IAAI;AAAA,EACnE,MAAM,OAAO,EAAE,WAAW,QAAQ,aAAa,MAAM,GAAG,MAAM,OAAO;AAAA,EACrE,OAAO,OACJ,QAAQ,CAAC,UAAU,MAAM,KAAK,IAAI,CAAC,EACnC,SAAS,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM;AAAA;AAUvD,IAAM,oBAAoB,CAC/B,OACA,YACA,QAAuB,IAAI,KAC3B,SAAS,OACQ;AAAA,EACjB,MAAM,OAAO,MAAM,cAAc,GAAG,cAAc,MAAM;AAAA,EACxD,MAAM,SACJ,MAAM,kBAAkB,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,EACvE,MAAM,YAAY,CAAC,SAAqC;AAAA,IACtD,MAAM,QAAQ,MAAM,IAAI,QAAQ,IAAI,CAAC;AAAA,IACrC,QAAQ,OAAO,KAAK,CAAC,UAAU,MAAM,WAAW,MAAM,KAAK,QAAQ,KAC/D;AAAA;AAAA,EAEN,OAAO,eACL,MAAM,UAAU,QAAQ,MAAM,KAAK,MACnC,MAAM,KAAK,QACX,SACF,EAAE,IAAI,GAAG,SAAS,cAAc;AAAA,IAC9B,MAAM,SAAS,MAAM,UAAU,QAAQ,OAAO;AAAA,IAC9C,OAAO;AAAA,SACF;AAAA,MACH,MAAM,QAAQ,QAAQ;AAAA,MACtB,MAAM,QAAQ,QAAQ,OAAO;AAAA,MAC7B,UAAU;AAAA,IACZ;AAAA,GACD;AAAA;;;A/B/ZI,IAAM,WAAW,CAAC,KAAa,SAA0B;AAAA,EAC9D,MAAM,MAAM,UAAS,KAAK,IAAI;AAAA,EAC9B,OAAO,EAAE,IAAI,WAAW,IAAI,KAAK,YAAW,GAAG;AAAA;AAIjD,IAAM,uBAAuB,CAC3B,QACA,cACmB;AAAA,EACnB,IAAI,CAAC,WAAW;AAAA,IACd,OAAO;AAAA,EACT;AAAA,EAIA,QAAQ,gBAAgB;AAAA,EACxB,MAAM,UAAU,cACZ,OAAO,QAAQ,QAAQ,IAAI,CAAC,WAC1B,OAAO,SAAS,eACZ,KAAK,QAAQ,SAAS,KAAK,OAAO,SAAS,MAAM,YAAY,EAAE,IAC/D,MACN,IACA,OAAO,QAAQ;AAAA,EACnB,OAAO;AAAA,OACF;AAAA,IACH,SAAS,KAAK,OAAO,SAAS,QAAQ;AAAA,EACxC;AAAA;AAiDF,IAAM,qBAAqB,CACzB,OACA,mBACiB;AAAA,EACjB,MAAM,cAA4B,CAAC;AAAA,EACnC,MAAM,OAAO,IAAI;AAAA,EACjB,WAAW,QAAQ,OAAO;AAAA,IAGxB,IAAI,KAAK,cAAc,CAAC,KAAK,cAAc,KAAK,IAAI,KAAK,UAAU,GAAG;AAAA,MACpE;AAAA,IACF;AAAA,IACA,KAAK,IAAI,KAAK,UAAU;AAAA,IACxB,MAAM,WAAW,UAAS,gBAAgB,KAAK,UAAU,EACtD,MAAM,IAAI,EACV,KAAK,GAAG;AAAA,IACX,MAAM,UAAU,KAAK,WAAW,KAAK,OAAO;AAAA,IAC5C,IAAI,aAAa,SAAS;AAAA,MACxB,YAAY,KAAK;AAAA,QACf,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,QACX,SAAS,mBAAmB,KAAK,OAAO,wDAAwD,KAAK,4BAA4B,+CAA+C;AAAA,QAChL,UAAU;AAAA,QACV,YACE;AAAA,MACJ,CAAC;AAAA,IACH;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAYT,IAAM,yBAAyB,CAC7B,QACA,QACA,mBACG;AAAA,EAIH,MAAM,oBACJ,OAAO,KAAK,OAAO,YAAY,MAAM,EAAE,SAAS,IAC5C,OAAO,YAAY,SACnB;AAAA,EACN,MAAM,gBAAgB,OAAO,QAAQ,OAAO,QAAQ,KAAK,EAAE,OACzD,IAAI,UAAU,OAAO,KAAK,KAAK,WAAW,EAAE,SAAS,CACvD;AAAA,EACA,MAAM,kBACJ,cAAc,SAAS,IACnB,OAAO,YACL,cAAc,IAAI,EAAE,MAAM,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,CAC9D,IACA;AAAA,EAEN,MAAM,QAAsB,CAAC;AAAA,EAC7B,MAAM,iBAA+B,CAAC;AAAA,EACtC,MAAM,eAA6B,CAAC;AAAA,EACpC,MAAM,aAAuB,CAAC;AAAA,EAG9B,MAAM,YACJ,CAAC;AAAA,EACH,IAAI,eAAe;AAAA,EACnB,aAAa,QAAQ,SAAS,iBAAiB,QAAQ;AAAA,IACrD,eAAe,KAAK,GAAG,WAAW;AAAA,IAClC,WAAW,SAAS,SAAS;AAAA,MAC3B,MAAM,SAAS,eAAe,OAAO,OAAO,MAAM,OAAO,SAAS;AAAA,MAClE,aAAa,KAAK,GAAG,OAAO,WAAW;AAAA,MAIvC,MAAM,OAAO,OAAO,cAAc;AAAA,MAClC,IAAI,QAAQ,MAAM,cAAc,CAAC,OAAO,QAAQ;AAAA,QAC9C,WAAW,KAAK,MAAM,UAAU;AAAA,MAClC;AAAA,MACA,MAAM,aAAa,eAAe,OAAO;AAAA,QACvC,UAAU,OAAO;AAAA,QACjB,aAAa,OAAO,QAAQ;AAAA,QAC5B;AAAA,QACA,MAAM,OAAO;AAAA,QACb,QAAQ;AAAA,UACN,aAAa,OAAO;AAAA,UACpB,MAAM,OAAO;AAAA,UACb,cAAc,OAAO;AAAA,UACrB,QAAQ,OAAO;AAAA,UACf,QAAQ,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,QACA,UAAU,OAAO;AAAA,MACnB,CAAC;AAAA,MACD,OAAO,QAAQ,WAAW;AAAA,MAC1B,IAAI,OAAO,OAAO,WAAW,YAAY,SAAS,GAAG;AAAA,QACnD,gBAAgB;AAAA,MAClB;AAAA,MACA,IAAI,CAAC,MAAM;AAAA,QACT,MAAM,KAAK,GAAG,WAAW,KAAK;AAAA,MAChC;AAAA,MACA,eAAe,KAAK,GAAG,WAAW,WAAW;AAAA,MAC7C,IAAI,MAAM;AAAA,QACR,eAAe,KACb,GAAG,qBAAqB,OAAO,OAAO,IAAI,GAC1C,GAAG,qBAAqB,OAAO,OAAO,IAAI,GAC1C,GAAG,iBAAiB,OAAO,OAAO,IAAI,CACxC;AAAA,QACA,UAAU,KAAK,EAAE,OAAO,QAAQ,KAAK,QAAQ,QAAQ,OAAO,KAAK,CAAC;AAAA,MACpE;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,QAAQ,eAAe,KAAK;AAAA,EAClC,aAAa,OAAO,QAAQ,YAAY,WAAW;AAAA,IACjD,eAAe,KAAK,GAAG,kBAAkB,OAAO,QAAQ,OAAO,MAAM,CAAC;AAAA,EACxE;AAAA,EAIA,MAAM,UAAU,CAAC,eACf,eAAe,KACb,CAAC,UACC,MAAM,SAAS,WAAW,QAC1B,MAAM,SAAS,WAAW,SACzB,MAAM,aAAa,WACjB,MAAM,aAAa,aAAa,WAAW,aAAa,UAC/D;AAAA,EACF,eAAe,KAAK,GAAG,aAAa,OAAO,CAAC,UAAU,CAAC,QAAQ,KAAK,CAAC,CAAC;AAAA,EACtE,OAAO,EAAE,aAAa,gBAAgB,cAAc,OAAO,WAAW;AAAA;AAUxE,IAAM,kBAAkB,CACtB,SACA,YACa;AAAA,EACb,IAAI,YAAY,MAAM;AAAA,IACpB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,MAAM,SAAS,OAAO;AAAA,EAC5B,OAAO,QACJ,QAAQ,CAAC,WAAY,OAAO,cAAc,CAAC,OAAO,WAAW,IAAI,CAAC,CAAE,EACpE,OAAO,CAAC,QAAQ,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC;AAAA;AAIjD,IAAM,mBAAmB,CAAC,SACxB,QAAQ,KAAK,KAAK,QAAQ,KAAK,KAAK,WAAW,IAAI;AAQrD,IAAM,gBAAgB,CACpB,OACA,SACA,MACA,WACiB;AAAA,EACjB,MAAM,eAAe,0BAA0B,OAAO,YAAY;AAAA,EAClE,MAAM,cAAc,aAAa,WAAW,aAAa,WAAW;AAAA,EACpE,MAAM,eAAe,OAAO,IAAI,kBAAkB;AAAA,EAClD,IAAI,EAAE,eAAe,eAAe;AAAA,IAClC,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,UAAU,MACb,IAAI,CAAC,SAAS,KAAK,UAAU,EAC7B,OAAO,CAAC,SAAyB,SAAS,SAAS;AAAA,EAKtD,MAAM,UAAU,kBAAkB,IAAI;AAAA,EACtC,MAAM,eAAe,gBAAgB,SAAS,OAAO;AAAA,EACrD,MAAM,WAAW,aAAa,MAAM,cAAc,SAAS,OAAO;AAAA,EAIlE,MAAM,UAAU,MAAM,OACpB,CAAC,SACC,KAAK,cACL,aAAa,KAAK,CAAC,QAAQ,SAAS,KAAK,KAAK,cAAc,EAAE,CAAC,CACnE;AAAA,EACA,MAAM,WAAyB,CAAC;AAAA,EAChC,IAAI,aAAa;AAAA,IACf,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,CAAC,KAAK,gBAAgB,KAAK,YAAY;AAAA,QACzC,KAAK,eAAe,SAAS,SAAS,IAAI,KAAK,UAAU;AAAA,MAC3D;AAAA,IACF;AAAA,IAGA,SAAS,KACP,GAAG,2BACD,MACA,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,YAAY,EAAE,MAC/C,CACF;AAAA,EACF;AAAA,EACA,IAAI,cAAc;AAAA,IAGhB,MAAM,UAAU,uBAAuB,IAAI;AAAA,IAC3C,WAAW,QAAQ,OAAO;AAAA,MACxB,IAAI,EAAE,WAAW,iBAAiB,IAAI,MAAM,KAAK,YAAY;AAAA,QAC3D,KAAK,YAAY,SAAS,UAAU,IAAI,KAAK,UAAU;AAAA,MACzD;AAAA,IACF;AAAA,IACA,IAAI,SAAS;AAAA,MACX,SAAS,KACP,GAAG,4BACD,QAAQ,OAAO,CAAC,SAAS,CAAC,iBAAiB,IAAI,CAAC,EAAE,MACpD,CACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAUT,IAAM,kBAAkB,CACtB,SACmB,OAAO,SAAS;AAGrC,IAAM,WAAW,CAAC,SAChB,SAAS,aAAa,gBAAgB,IAAI,IAAI,MAAO,KAAK,QAAQ;AAGpE,IAAM,oBAAoB,CACxB,WACqB,OAAO,WAAW;AAQzC,IAAM,2BAA2B,CAC/B,OACA,cACiB;AAAA,EACjB,QAAQ,aAAa;AAAA,EACrB,MAAM,OAAO,UAAU,QAAQ,MAAM,KAAK;AAAA,EAC1C,MAAM,SAAS,WAAW,IAAI,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,EAC3E,MAAM,cAAc,mBAAmB,MAAM,SAAS,EAAE,IACtD,GAAG,MAAM,WAAuB;AAAA,IAC9B,MAAM,SAAS,UAAU,QAAQ,OAAO;AAAA,IACxC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,QAAQ,QAAQ,MAAM;AAAA,MAC5B,MAAM,QAAQ,QAAQ,OAAO;AAAA,MAC7B,SAAS,KAAK;AAAA,MACd,UAAU;AAAA,MACV,YAAY,WAAW;AAAA,IACzB;AAAA,GAEJ;AAAA,EACA,IAAI,UAAU;AAAA,IACZ,SAAS,OAAO,oBAAoB,SAAS,MAAM,SAAS;AAAA,EAC9D,EAAO;AAAA,IACL,MAAM,KAAK,OAAO,oBAAoB,MAAM,KAAK,MAAM,SAAS;AAAA;AAAA,EAElE,OAAO;AAAA;AAIT,IAAM,4BAA4B,CAChC,QACA,cAEA,aAAa,SAAS,IAClB,OAAO,QAAQ,GAAG,cAChB,QAAQ,QAAQ,CAAC,UAAU,yBAAyB,OAAO,SAAS,CAAC,CACvE,IACA,CAAC;AAiBP,IAAM,0BAA0B,CAC9B,QACA,OACA,UACA,eAEA,OAAO,UAAU,QAAQ,CAAC,aAA2B;AAAA,EACnD,MAAM,OAAO,aAAa,OAAO,UAAU,SAAS,IAAI;AAAA,EACxD,IAAI,CAAC,cAAc,SAAS,IAAI,GAAG;AAAA,IACjC,MAAM,OAAO,cAAc,IAAI;AAAA,IAC/B,IAAI,MAAM,SAAS,IAAI,GAAG;AAAA,MACxB,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,MAAM,cAAc;AAAA,UACpB,SAAS,qBAAqB,SAAS,yBAAyB,qDAAqD,SAAS;AAAA,UAC9H,UAAU;AAAA,UACV,YACE;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,QAAQ,aAAa,UAAU,IAAI;AAAA,IACzC,OAAO,UAAU,YACb,CAAC,IACD;AAAA,MACE;AAAA,QACE,MAAM;AAAA,QACN,MAAM,cAAc;AAAA,QACpB,SAAS,qBAAqB,SAAS,8CAA8C,6DAA6D,SAAS;AAAA,QAC3J,UAAU;AAAA,QACV,YACE;AAAA,MACJ;AAAA,IACF;AAAA,EACN;AAAA,EACA,MAAM,UAAU,kBAAkB,MAAM,KAAK;AAAA,EAC7C,OAAO,SAAS;AAAA,EAChB,IAAI,UAAU,WAAW;AAAA,IACvB,OAAO,CAAC;AAAA,EACV;AAAA,EACA,MAAM,OAAO,QAAQ,SAAS,IAAI,QAAQ,QAAQ,SAAS,WAAW;AAAA,EACtE,OAAO;AAAA,IACL;AAAA,MACE,MAAM;AAAA,MACN,MAAM,cAAc;AAAA,MACpB,SAAS,qBAAqB,SAAS,8BAA8B,QAAQ;AAAA,MAC7E,UAAU;AAAA,MACV,YACE;AAAA,IACJ;AAAA,EACF;AAAA,CACD;AAYH,IAAM,sBAAsB,CAC1B,QACA,QACA,UACmB;AAAA,EACnB,MAAM,YAAY,OAAO,QAAQ,GAAG,gBAAgB,aAAa,CAAC,CAAC;AAAA,EACnE,IAAI,UAAU,WAAW,GAAG;AAAA,IAC1B,OAAO;AAAA,EACT;AAAA,EACA,MAAM,SAAS,CAAC,UACd,cAAc,aAAa,OAAO,UAAU,KAAK,CAAC;AAAA,EACpD,MAAM,WAAW;AAAA,IACf;AAAA,IACA,GAAI,OAAO,MAAM,QAAQ,IAAI,CAAC,WAAW,IAAI,OAAO,MAAM,KAAK,CAAC;AAAA,EAClE;AAAA,EACA,MAAM,QAAQ,IAAI,IAChB,OAAO,UAAU,IAAI,CAAC,aAAa,OAAO,SAAS,IAAI,CAAC,CAC1D;AAAA,EACA,MAAM,QAAqC,CAAC;AAAA,EAC5C,WAAW,YAAY,WAAW;AAAA,IAChC,WAAW,UAAU,UAAU;AAAA,MAC7B,MAAM,OAAO,GAAG,SAAS,SAAS;AAAA,MAClC,MAAM,KAAK,GAAG,SAAS,SAAS;AAAA,MAChC,IACE,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC,KACrB,MAAM,IAAI,OAAO,IAAI,CAAC,KACtB,MAAM,IAAI,OAAO,IAAI,CAAC,GACtB;AAAA,QACA;AAAA,MACF;AAAA,MACA,MAAM,IAAI,OAAO,IAAI,CAAC;AAAA,MACtB,MAAM,KAAK,EAAE,MAAM,QAAQ,KAAK,GAAG,CAAC;AAAA,IACtC;AAAA,EACF;AAAA,EACA,OAAO,MAAM,SAAS,IAClB,KAAK,QAAQ,WAAW,CAAC,GAAG,OAAO,WAAW,GAAG,KAAK,EAAE,IACxD;AAAA;AAWN,IAAM,2BAA2B,CAC/B,QACA,SACiB;AAAA,EACjB,MAAM,OAAO,MAAK,MAAM,UAAU,cAAc;AAAA,EAChD,OAAO,OAAO,OAAO,OAAO,YAAW,IAAI,IACvC;AAAA,IACE;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,SACE;AAAA,MACF,UAAU;AAAA,MACV,YACE;AAAA,IACJ;AAAA,EACF,IACA,CAAC;AAAA;AAIP,IAAM,iBAAiB,CACrB,WAEA,WAAW,aAAa,kBAAkB,MAAM,IAC5C,YACA,OAAO,MAAM;AAQnB,IAAM,mBAAmB,CACvB,QACA,SACA,SACA,kBACoB;AAAA,EACpB,gBAAgB,MAAM;AAAA,EACtB,MAAM,UAAU,eAAe,QAAQ,SAAS,OAAO;AAAA,EACvD,WAAW,UAAU,SAAS;AAAA,IAC5B,OAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAO;AAAA;AAGF,IAAM,cAAc,OACzB,MACA,UAeI,CAAC,MACqB;AAAA,EAC1B,MAAM,OAAO,QAAQ,QAAQ;AAAA,EAC7B,MAAM,UAAU,QAAQ,WAAW;AAAA,EACnC,MAAM,eAAe,MAAM,WAAW,MAAM;AAAA,IAC1C,cAAc,QAAQ;AAAA,EACxB,CAAC;AAAA,EACD,MAAM,SAAS,qBAAqB,aAAa,QAAQ,QAAQ,SAAS;AAAA,EAC1E,MAAM,UAAU,sBAAsB,MAAM,QAAQ;AAAA,IAClD,YAAY,QAAQ;AAAA,EACtB,CAAC;AAAA,EACD,MAAM,UAAU,iBACd,QACA,SACA,EAAE,MAAM,SAAS,SAAS,QAAQ,QAAQ,GAC1C,QAAQ,aACV;AAAA,EAKA,MAAM,cAAkC,QAAQ,QAAQ,CAAC,WACvD,OAAO,UAAU,CAAC,OAAO,cACrB,CAAC,IACD;AAAA,IACE;AAAA,MACE,SAAS,OAAO;AAAA,MAChB,SAAS,OAAO;AAAA,MAChB,QAAQ,OAAO;AAAA,MACf,MAAM,OAAO;AAAA,IACf;AAAA,EACF,CACN;AAAA,EAOA,MAAM,aACJ,OAAO,QAAQ,OAAO,KAAK,WAAW,QAClC,OAAO,KAAK,QAAQ,QAAQ,CAAC,WAC3B,OAAO,SAAS,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,IAAI,CAChE,IACA;AAAA,EAEN,OAAO,QAAQ,cAAc,MAAM,QAAQ,IAAI;AAAA,IAC7C,QAAQ,IACN,QAAQ,IAAI,OAAO,YAAY,EAAE,WAAY,MAAM,OAAO,KAAK,EAAG,EAAE,CACtE;AAAA,IACA,mBAAmB,aAAa;AAAA,MAC9B;AAAA,MACA,aAAa,OAAO,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,IACpE,CAAC;AAAA,EACH,CAAC;AAAA,EAOD,MAAM,qBAAmC,CAAC;AAAA,EAC1C,MAAM,QAAQ,IACZ,OAAO,QAAQ,GAAG,QAAQ,cAAc;AAAA,IACtC,IAAI,OAAO,UAAU,CAAC,OAAO,aAAa;AAAA,MACxC,OAAO,CAAC;AAAA,IACV;AAAA,IACA,OAAO,QAAQ,IAAI,OAAO,UAAU;AAAA,MAClC,IAAI,CAAC,MAAM,cAAc,CAAC,qBAAqB,MAAM,KAAK,IAAI,GAAG;AAAA,QAC/D;AAAA,MACF;AAAA,MACA,MAAM,YAAY,MAAM,eAAe,MAAM,KAAK,MAAM;AAAA,QACtD,aAAa,OAAO;AAAA,QACpB,YAAY,mBAAmB,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,QACzD,YAAY,MAAM;AAAA,MACpB,CAAC;AAAA,MACD,MAAM,WAAW;AAAA,MACjB,mBAAmB,KAAK,GAAG,UAAU,MAAM;AAAA,KAC5C;AAAA,GACF,CACH;AAAA,EAKA,MAAM,sBAAsB,0BAC1B,QACA,OAAO,SACT;AAAA,EAMA,MAAM,mBAAmB,wBACvB,YACA,IAAI,IACF,OAAO,QAAQ,GAAG,YAAY,iBAC5B,OAAO,QAAQ,cAAc,CAAC,CAAC,CACjC,CACF,GACA,UACF;AAAA,EAEA;AAAA,IACE,aAAa;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP;AAAA,MACE,uBAAuB,QAAQ,QAAQ,SAAS,OAAO;AAAA,EAI3D,MAAM,kBAAkB,MAAM,sBAAsB,YAAY,UAAU;AAAA,IACxE;AAAA,IACA,aAAa,OAAO,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,EAAE;AAAA,EACpE,CAAC;AAAA,EAGD,MAAM,QACJ,SAAS,WAAW,CAAC,UACjB,SAAS,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,IAC1C;AAAA,EAIN,MAAM,kBAAkB,cAAc,OAAO,SAAS,QAAQ,MAAM,MAAM;AAAA,EAM1E,MAAM,cAAc,QAAQ,YACxB,MAAM,cAAc,QAAQ,SAAS,IACrC,CAAC;AAAA,EACL,MAAM,cAAc,IAAI,IAAI;AAAA,IAC1B,GAAG,mBAAmB,WAAW;AAAA,IACjC,GAAI,kBAAkB,OAAO,MAAM,IAAI,CAAC,qBAAqB,IAAI,CAAC;AAAA,EACpE,CAAC;AAAA,EACD,MAAM,QAAQ,kBAAkB,OAAO;AAAA,IACrC,YAAY,eAAe,OAAO,MAAM;AAAA,IACxC,UAAU,OAAO;AAAA,IACjB,WAAW,SAAS,OAAO,IAAI;AAAA,IAC/B;AAAA,IACA,YAAY,iBAAiB;AAAA,IAC7B,MAAM,OAAO;AAAA,IACb,YAAY,OAAO;AAAA,IACnB,kBAAkB,iBAAiB;AAAA,IACnC,UAAU,OAAO;AAAA,EACnB,CAAC;AAAA,EACD,MAAM,WAAW,cAAc,EAAE,QAAQ,SAAS,MAAM,CAAC;AAAA,EAEzD,MAAM,eAAe,OAAO,OACxB,gBAAgB,OAAO,OAAO,MAAM,OAAO,QAAQ,IACnD,CAAC;AAAA,EACL,MAAM,cAAc,MAAM,2BAA2B,KAAK;AAAA,EAC1D,MAAM,kBAAkB,OAAO,WAC3B,oBAAoB,OAAO,OAAO,QAAQ,IAC1C,CAAC;AAAA,EAEL,MAAM,cAAc;AAAA,IAClB,GAAG,SAAS,OAAO,IAAI,CAAC,UAAU,MAAM,IAAI;AAAA,IAC5C,GAAG;AAAA,EACL;AAAA,EAGA,MAAM,YAAY;AAAA,IAChB,GAAG,OAAO;AAAA,IACV,GAAG,qBAAqB,OAAO,IAAI,IAAI,WAAW,GAAG,MAAM;AAAA,EAC7D;AAAA,EAEA,OAAO;AAAA,IAGL,QAAQ,oBACN,UAAU,WAAW,OAAO,UAAU,SAClC,SACA,KAAK,QAAQ,UAAU,GAC3B,QACA,IAAI,IAAI,CAAC,GAAG,YAAY,SAAS,MAAM,GAAG,GAAG,WAAW,CAAC,CAC3D;AAAA,IACA;AAAA,IACA,aAAa;AAAA,MACX,GAAG,aAAa;AAAA,MAChB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,WAAW;AAAA,MACd,GAAG;AAAA,MACH,GAAG,mBACD,OACA,sBAAsB,QAAQ,QAAQ,IAAI,EAAE,IAC9C;AAAA,MACA,GAAG,MAAM;AAAA,MACT,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG,yBAAyB,QAAQ,QAAQ,IAAI;AAAA,MAChD,GAAG,wBACD,QACA,aACA,YAAY,SAAS,MAAM,GAC3B,QAAQ,UACV;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAsB,aAAa;AAAA,IACnC;AAAA,EACF;AAAA;",
|
|
42
|
+
"debugId": "C199F41EFA089E4F64756E2164756E21",
|
|
43
43
|
"names": []
|
|
44
44
|
}
|