@inlang/paraglide-js 2.29.0 → 2.29.2

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.
Files changed (34) hide show
  1. package/dist/compiler/compile-bundle.js +58 -12
  2. package/dist/compiler/compile-bundle.js.map +1 -1
  3. package/dist/compiler/compile-bundle.test.js +208 -26
  4. package/dist/compiler/compile-bundle.test.js.map +1 -1
  5. package/dist/compiler/compile-lifecycle.test.js +83 -0
  6. package/dist/compiler/compile-lifecycle.test.js.map +1 -1
  7. package/dist/compiler/compile-message.d.ts +9 -0
  8. package/dist/compiler/compile-message.js +29 -12
  9. package/dist/compiler/compile-message.js.map +1 -1
  10. package/dist/compiler/compile-project.js +6 -1
  11. package/dist/compiler/compile-project.js.map +1 -1
  12. package/dist/compiler/compile-project.test.js +157 -0
  13. package/dist/compiler/compile-project.test.js.map +1 -1
  14. package/dist/compiler/compile.js +12 -0
  15. package/dist/compiler/compile.js.map +1 -1
  16. package/dist/compiler/compiler-options.d.ts +5 -2
  17. package/dist/compiler/compiler-options.js.map +1 -1
  18. package/dist/compiler/emit-ts-declarations.d.ts +4 -1
  19. package/dist/compiler/emit-ts-declarations.js +18 -11
  20. package/dist/compiler/emit-ts-declarations.js.map +1 -1
  21. package/dist/compiler/emit-ts-declarations.native.test.d.ts +1 -0
  22. package/dist/compiler/emit-ts-declarations.native.test.js +86 -0
  23. package/dist/compiler/emit-ts-declarations.native.test.js.map +1 -0
  24. package/dist/compiler/emit-ts-declarations.test.js +3 -0
  25. package/dist/compiler/emit-ts-declarations.test.js.map +1 -1
  26. package/dist/compiler/resolve-tsc-js-path.d.ts +6 -0
  27. package/dist/compiler/resolve-tsc-js-path.js +34 -1
  28. package/dist/compiler/resolve-tsc-js-path.js.map +1 -1
  29. package/dist/compiler/resolve-tsc-js-path.test.d.ts +1 -0
  30. package/dist/compiler/resolve-tsc-js-path.test.js +31 -0
  31. package/dist/compiler/resolve-tsc-js-path.test.js.map +1 -0
  32. package/dist/services/env-variables/index.js +1 -1
  33. package/dist/services/env-variables/index.js.map +1 -1
  34. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"compile-project.test.js","sourceRoot":"","sources":["../../src/compiler/compile-project.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, test, describe, vi, beforeEach } from \"vitest\";\nimport vm from \"node:vm\";\nimport {\n\tcreateProject as typescriptProject,\n\tts,\n\ttype ProjectOptions,\n} from \"@ts-morph/bootstrap\";\nimport {\n\ttype BundleNested,\n\tDeclaration,\n\tinsertBundleNested,\n\tloadProjectInMemory,\n\ttype Match,\n\tnewProject,\n\tPattern,\n\tVariableReference,\n} from \"@inlang/sdk\";\nimport { compileProject, getFallbackMap } from \"./compile-project.js\";\nimport virtual from \"@rollup/plugin-virtual\";\nimport { rolldown } from \"rolldown\";\nimport { perLocaleBuildStaticLocaleExpression } from \"./per-locale-build.js\";\n\nbeforeEach(() => {\n\t// reset the imports to make sure that the runtime is reloaded\n\tvi.resetModules();\n\tvi.clearAllMocks();\n\n\t// mocking DOM globals\n\t// @ts-expect-error - global variable definition\n\tglobalThis.window = undefined;\n});\n\nfunction hasFallbackCycle(\n\tfallbackMap: Record<string, string | undefined>,\n\tstart: string\n): boolean {\n\tconst visited = new Set<string>();\n\tlet current: string | undefined = start;\n\n\twhile (current) {\n\t\tif (visited.has(current)) return true;\n\t\tvisited.add(current);\n\t\tcurrent = fallbackMap[current];\n\t}\n\n\treturn false;\n}\n\ntest(\"locale-modules retain language-grouped static text helpers\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t}),\n\t});\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"literal_layout\",\n\t\t\tdeclarations: [],\n\t\t\tmessages: [\"en\", \"de\"].map((locale) => ({\n\t\t\t\tlocale,\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, value: `layout text ${locale}` },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})),\n\t\t})\n\t);\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"locale-modules\" },\n\t});\n\texpect(output[\"messages/_index.js\"]).toContain(\n\t\t\"return __de.literal_layout(inputs)\"\n\t);\n\texpect(output[\"messages/_index.js\"]).not.toContain(\n\t\t'return /** @type {LocalizedString} */ (\"layout text de\")'\n\t);\n\texpect(output[\"messages/de.js\"]).toContain(\"export const literal_layout =\");\n\tawait project.close();\n});\n\ntest(\"emitGitignore\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".gitignore\");\n\texpect(_true).toHaveProperty(\".gitignore\");\n\texpect(_false).not.toHaveProperty(\".gitignore\");\n});\n\ntest(\"marks tree-shakeable generated message layouts as side-effect-free\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst messageModules = await compileProject({\n\t\tproject,\n\t});\n\n\tconst localeModules = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"locale-modules\" },\n\t});\n\tconst specializedLocaleModules = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\toutputStructure: \"locale-modules\",\n\t\t\texperimentalStaticLocale: perLocaleBuildStaticLocaleExpression,\n\t\t},\n\t});\n\n\t// message-modules: the message modules are side-effect-free, so bundlers can\n\t// drop unused re-exports from the `m` barrel per entry instead of emitting one\n\t// shared chunk with every message. `type: \"module\"` keeps the generated ESM\n\t// files in the new `messages/` package scope from defaulting to CommonJS.\n\texpect(messageModules).toHaveProperty(\"messages/package.json\");\n\texpect(JSON.parse(messageModules[\"messages/package.json\"]!)).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n\n\texpect(localeModules).not.toHaveProperty(\"messages/package.json\");\n\texpect(specializedLocaleModules).toHaveProperty(\"messages/package.json\");\n\texpect(\n\t\tJSON.parse(specializedLocaleModules[\"messages/package.json\"]!)\n\t).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n});\n\ntest(\"inlines static text and retains only fallback helpers under strict checkJs\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\", \"de\", \"de-AT\"],\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"plain_greeting\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hallo\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"message-modules\" },\n\t});\n\tconst messageModule = output[\"messages/plain_greeting.js\"]!;\n\n\t// The base locale is returned inline, while de-AT's missing-locale alias\n\t// still needs the de message function.\n\texpect(messageModule).not.toContain(\"const en_plain_greeting =\");\n\texpect(messageModule).toContain(\"const de_plain_greeting =\");\n\texpect(messageModule).toMatch(\n\t\t/const de_at\\d*_plain_greeting = de_plain_greeting;/\n\t);\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\toutDir: \"dist\",\n\t\t\tdeclaration: true,\n\t\t\tallowJs: true,\n\t\t\tcheckJs: true,\n\t\t\tnoImplicitAny: true,\n\t\t\tnoUnusedLocals: true,\n\t\t\tnoUnusedParameters: true,\n\t\t\tnoImplicitReturns: true,\n\t\t\tnoImplicitThis: true,\n\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\tconst diagnostics = ts\n\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t.filter(\n\t\t\t(d) =>\n\t\t\t\t!d.messageText.toString().includes(\"Cannot find module 'async_hooks'\")\n\t\t);\n\texpect(diagnostics).toEqual([]);\n\n\tconst { m } = await importCode(\n\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t);\n\texpect(m.plain_greeting({}, { locale: \"en\" })).toBe(\"Hello\");\n\texpect(m.plain_greeting({}, { locale: \"de\" })).toBe(\"Hallo\");\n\texpect(m.plain_greeting({}, { locale: \"de-AT\" })).toBe(\"Hallo\");\n});\n\ntest(\"emitPrettierIgnore\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitPrettierIgnore: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitPrettierIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".prettierignore\");\n\texpect(_true).toHaveProperty(\".prettierignore\");\n\texpect(_false).not.toHaveProperty(\".prettierignore\");\n});\n\ntest(\"emitReadme\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst projectPath = \"./project.inlang\";\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t\tcompilerOptions: { emitReadme: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t\tcompilerOptions: { emitReadme: false },\n\t});\n\n\tconst _noProjectPath = await compileProject({\n\t\tproject,\n\t});\n\n\texpect(_default).toHaveProperty(\"README.md\");\n\texpect(_true).toHaveProperty(\"README.md\");\n\texpect(_false).not.toHaveProperty(\"README.md\");\n\t// README should still be emitted even without projectPath\n\texpect(_noProjectPath).toHaveProperty(\"README.md\");\n\t// but should not contain the \"Compiled from:\" line\n\texpect(_noProjectPath[\"README.md\"]).not.toContain(\"Compiled from:\");\n});\n\ntest(\"emitReadme includes project path\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst projectPath = \"./my-custom-project.inlang\";\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t});\n\n\texpect(output[\"README.md\"]).toContain(projectPath);\n\texpect(output[\"README.md\"]).toContain(\"Compiled from:\");\n\texpect(output[\"README.md\"]).toContain(\"Paraglide JS\");\n\texpect(output[\"README.md\"]).toContain(\n\t\t`npx @inlang/paraglide-js compile --project ${projectPath}`\n\t);\n\texpect(output[\"README.md\"]).toContain(\"npx @inlang/cli check\");\n});\n\ntest(\"throws during compile for invalid routeStrategies match patterns\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait expect(\n\t\tcompileProject({\n\t\t\tproject,\n\t\t\tcompilerOptions: {\n\t\t\t\trouteStrategies: [{ match: \"/api/:path(.*\", exclude: true }],\n\t\t\t},\n\t\t})\n\t).rejects.toThrow(`Invalid routeStrategies[0].match \"/api/:path(.*\"`);\n});\n\n// https://github.com/opral/paraglide-js/issues/539\ntest(\"omits async_hooks import when disableAsyncLocalStorage is true\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { disableAsyncLocalStorage: true },\n\t});\n\n\texpect(output[\"server.js\"]).not.toContain(\n\t\t'const { AsyncLocalStorage } = await import(\"async_hooks\");'\n\t);\n});\n\n// https://github.com/opral/paraglide-js/issues/544\ntest(\"fallback map should not create cycles for language-only + regional baseLocale\", () => {\n\tconst fallbackMap = getFallbackMap([\"it\", \"it-IT\", \"fr\", \"fr-FR\"], \"it-IT\");\n\n\texpect(hasFallbackCycle(fallbackMap, \"it\")).toBe(false);\n\texpect(hasFallbackCycle(fallbackMap, \"it-IT\")).toBe(false);\n\texpect(fallbackMap[\"it\"]).toBe(\"it-IT\");\n\texpect(fallbackMap[\"it-IT\"]).toBeUndefined();\n});\n\ntest(\"emitTsDeclarations generates declaration files\", async () => {\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\temitTsDeclarations: true,\n\t\t\toutputStructure: \"locale-modules\",\n\t\t},\n\t});\n\n\texpect(output).toHaveProperty(\"messages/_index.d.ts\");\n\texpect(output).toHaveProperty(\"messages.d.ts\");\n\texpect(output).toHaveProperty(\"registry.d.ts\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"sad_penguin_bundle\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"relative_time_dynamic\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"RelativeTimeFormatUnit\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"relativetime\");\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\n\ttsProject.createSourceFile(\n\t\t\"test.ts\",\n\t\t`\n\t\t\timport { m, relative_time_dynamic } from \"./messages.js\";\n\t\t\timport { relativetime } from \"./registry.js\";\n\n\t\t\tm.sad_penguin_bundle() satisfies string;\n\t\t\trelative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string;\n\t\t\trelativetime(\"en\", -3, { unit: \"hour\", style: \"short\" }) satisfies string;\n\t\t`\n\t);\n\n\tconst program = tsProject.createProgram();\n\tconst diagnostics = ts.getPreEmitDiagnostics(program);\n\tfor (const diagnostic of diagnostics) {\n\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t}\n\texpect(diagnostics.length).toEqual(0);\n});\n\ntest(\"emitTsDeclarations remains opt-in\", async () => {\n\tconst output = await compileProject({ project });\n\texpect(\n\t\tObject.keys(output).some((fileName) => fileName.endsWith(\".d.ts\"))\n\t).toBe(false);\n});\n\ntest(\"emitTsDeclarations quotes unsafe export aliases\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"greeting.hello\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tfor (const outputStructure of [\n\t\t\"message-modules\",\n\t\t\"locale-modules\",\n\t] as const) {\n\t\tconst output = await compileProject({\n\t\t\tproject,\n\t\t\tcompilerOptions: {\n\t\t\t\temitTsDeclarations: true,\n\t\t\t\toutputStructure,\n\t\t\t},\n\t\t});\n\t\tconst declarationFile =\n\t\t\toutputStructure === \"message-modules\"\n\t\t\t\t? \"messages/greeting_hello.d.ts\"\n\t\t\t\t: \"messages/_index.d.ts\";\n\n\t\texpect(output[declarationFile]).toContain(\n\t\t\t`export { greeting_hello as \"greeting.hello\" };`\n\t\t);\n\n\t\tconst tsProject = await typescriptProject({\n\t\t\tuseInMemoryFileSystem: true,\n\t\t\tcompilerOptions: {\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t},\n\t\t});\n\n\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t}\n\t\t}\n\n\t\ttsProject.createSourceFile(\n\t\t\t\"test.ts\",\n\t\t\t`\n\t\t\t\timport { \"greeting.hello\" as greetingHello } from \"./messages.js\";\n\n\t\t\t\tgreetingHello() satisfies string;\n\t\t\t`\n\t\t);\n\n\t\tconst program = tsProject.createProgram();\n\t\tconst diagnostics = ts.getPreEmitDiagnostics(program);\n\t\tfor (const diagnostic of diagnostics) {\n\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t}\n\t\texpect(diagnostics.length).toEqual(0);\n\t}\n});\n\ntest(\"handles message bundles with a : in the id\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"hello:world\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello world!\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"hello:world\"]()).toBe(\"Hello world!\");\n});\n\ntest(\"emits .parts() on bundle functions for markup messages\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"balance\",\n\t\t\tdeclarations: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\tname: \"amount\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \"You have \" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-start\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"amount\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \" coins\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-end\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\tconst { m } = await importCode(code);\n\n\texpect(m.balance({ amount: 7 }, { locale: \"en\" })).toBe(\"You have 7 coins.\");\n\texpect(m.balance.parts({ amount: 7 }, { locale: \"en\" })).toEqual([\n\t\t{ type: \"text\", value: \"You have \" },\n\t\t{ type: \"markup-start\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \"7\" },\n\t\t{ type: \"text\", value: \" coins\" },\n\t\t{ type: \"markup-end\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \".\" },\n\t]);\n});\n\n// https://github.com/opral/inlang-paraglide-js/issues/347\ntest(\"can emit message bundles with more than 255 characters\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\t// 300 characters long id\n\t\t\tid: \"a\".repeat(300),\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Hello\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\turlPatterns: [],\n\t\t},\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"a\".repeat(300)]()).toBe(\"Hello\");\n});\n\ndescribe.each([\n\t// useTsImports must be true to test emitTs. Otherwise, rolldown can't resolve the imports\n\t{\n\t\toutputStructure: \"locale-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n\t{\n\t\toutputStructure: \"message-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n] satisfies Array<Parameters<typeof compileProject>[\"0\"][\"compilerOptions\"]>)(\n\t\"options\",\n\tasync (compilerOptions) => {\n\t\tconst output = await compileProject({ project, compilerOptions });\n\n\t\tdescribe(\"tree-shaking\", () => {\n\t\t\ttest(\"should tree-shake unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of mockBundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\t// https://github.com/opral/inlang-paraglide-js/issues/345\n\t\t\ttest(\"importing { m } works and tree-shakes unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import { m } from \"./paraglide/messages.js\"\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of mockBundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"should not treeshake messages that are used\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\t\t\n\t\t\tconsole.log(\n\t\t\t\tm.sad_penguin_bundle(),\n\t\t\t\tm.depressed_dog({ name: \"Samuel\" }),\n\t\t\t\tm.insane_cats({ name: \"Samuel\", count: 5 })\n\t\t\t)`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\tfor (const id of mockBundles.map((m) => m.id)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[\"sad_penguin_bundle\", \"depressed_dog\", \"insane_cats\"].includes(id)\n\t\t\t\t\t) {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\n\t\t\t\t\t\"A simple message.\",\n\t\t\t\t\t\"Good morning Samuel!\",\n\t\t\t\t\t\"Hello Samuel! You have 5 messages.\"\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// https://github.com/opral/inlang-paraglide-js/issues/379\n\t\ttest(\"plurals work\", async () => {\n\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\", \"de\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"plural_test\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"countPlural\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", value: \"one\", key: \"countPlural\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There is one cat.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"other\",\n\t\t\t\t\t\t\t\t\t\t\tkey: \"countPlural\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There are many cats.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(\n\t\t\t\t\tawait compileProject({\n\t\t\t\t\t\tproject,\n\t\t\t\t\t\tcompilerOptions,\n\t\t\t\t\t}),\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"`\n\t\t\t\t)\n\t\t\t);\n\n\t\t\texpect(m.plural_test({ count: 1 })).toBe(\"There is one cat.\");\n\t\t\texpect(m.plural_test({ count: 2 })).toBe(\"There are many cats.\");\n\t\t});\n\n\t\tdescribe(\"e2e\", async () => {\n\t\t\t// The compiled output needs to be bundled into one file to be dynamically imported.\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t);\n\n\t\t\t// test is a direct result of a bug\n\t\t\ttest(\"locales should include locales with a hyphen\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.locales).toContain(\"en-US\");\n\t\t\t});\n\n\t\t\ttest(\"should set the baseLocale as default getLocale value\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.getLocale()).toBe(runtime.baseLocale);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message for the current locale\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tconsole.log(m);\n\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteGetLocale() works\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteGetLocale(() => locale);\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\tlocale = \"de\";\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteSetLocale() works\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteSetLocale((newLocale: any) => {\n\t\t\t\t\tlocale = newLocale;\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(locale).toBe(\"de\");\n\t\t\t});\n\n\t\t\ttest.skip(\"defining onSetLocale should be possible and should be called when the locale changes\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tconst mockOnSetLocale = vi.fn().mockImplementation(() => {});\n\t\t\t\truntime.onSetLocale((locale: any) => {\n\t\t\t\t\tmockOnSetLocale(locale);\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"de\");\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"en\");\n\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenCalledTimes(2);\n\t\t\t});\n\n\t\t\ttest.skip(\"Calling onSetLocale() multiple times should override the previous callback\", async () => {\n\t\t\t\tconst cb1 = vi.fn().mockImplementation(() => {});\n\t\t\t\tconst cb2 = vi.fn().mockImplementation(() => {});\n\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\truntime.onSetLocale(cb1);\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\n\t\t\t\truntime.onSetLocale(cb2);\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(cb2).toHaveBeenCalledTimes(1);\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message if a locale is set in the message options\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\t// set the language tag to de to make sure that the message options override the runtime language tag\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t\texpect(m.sad_penguin_bundle(undefined, { locale: \"en\" })).toBe(\n\t\t\t\t\t\"A simple message.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with literal units and locale overrides\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_literal({ duration: -1 })).toBe(\n\t\t\t\t\t\"Updated gestern.\"\n\t\t\t\t);\n\t\t\t\texpect(\n\t\t\t\t\tm.relative_time_literal({ duration: -1 }, { locale: \"en\" })\n\t\t\t\t).toBe(\"Updated yesterday.\");\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with dynamic units\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: -3, unit: \"hour\" })).toBe(\n\t\t\t\t\t\"Updated 3 hr. ago.\"\n\t\t\t\t);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: 2, unit: \"weeks\" })).toBe(\n\t\t\t\t\t\"Updated in 2 Wochen.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"runtime.isLocale should only return `true` if a locale is passed to it\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tfor (const tag of runtime.locales) {\n\t\t\t\t\texpect(runtime.isLocale(tag)).toBe(true);\n\t\t\t\t}\n\n\t\t\t\texpect(runtime.isLocale(\"\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"pl\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"--\")).toBe(false);\n\t\t\t});\n\n\t\t\ttest(\"falls back to base locale\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"de\", \"en-US\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"missingInGerman\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers work\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"de\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"$502.23-hello_world\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"$502.23-hello_world\"]()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"falls back to parent locale if message doesn't exist\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"en-US\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"exists_in_both\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en-US\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: \"A simple message for Americans.\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"missing_in_en_US\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Fallback message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.exists_in_both()).toBe(\"A simple message for Americans.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missing_in_en_US()).toBe(\"Fallback message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"happy🍌\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"happy🍌\"]()).toBe(\"Hello\");\n\t\t\t});\n\t\t});\n\n\t\ttest(\"relativetime dynamic unit casts generated options without narrowing public inputs\", () => {\n\t\t\tconst relativeTimeDynamicFile =\n\t\t\t\tcompilerOptions.outputStructure === \"locale-modules\"\n\t\t\t\t\t? \"messages/en.js\"\n\t\t\t\t\t: \"messages/relative_time_dynamic.js\";\n\n\t\t\texpect(output).toHaveProperty(relativeTimeDynamicFile);\n\t\t\tconst relativeTimeDynamicModule = output[relativeTimeDynamicFile]!;\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t'unit: /** @type {import(\"../registry.js\").RelativeTimeFormatUnit} */ (i?.unit)'\n\t\t\t);\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t\"{ duration: NonNullable<unknown>, unit: NonNullable<unknown> }\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"case sensitivity handling for bundle IDs\", async () => {\n\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\t// Create two bundles with the same name but different case\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"Helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from uppercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from lowercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\texport { helloworld, Helloworld } from \"./paraglide/messages.js\"`\n\t\t\t);\n\n\t\t\tconst imported = await importCode(code);\n\n\t\t\t// Both message functions should be available\n\t\t\texpect(imported.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\n\t\t\t// They should also be available through the m namespace\n\t\t\texpect(imported.m.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.m.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\t\t});\n\n\t\t// whatever the strictest users use, this is the ultimate nothing gets stricter than this\n\t\t// (to avoid developers opening issues \"i get a ts warning in my code\")\n\t\tconst superStrictRuleOutAnyErrorTsSettings: ProjectOptions[\"compilerOptions\"] =\n\t\t\t{\n\t\t\t\toutDir: \"dist\",\n\t\t\t\tdeclaration: true,\n\t\t\t\tallowJs: true,\n\t\t\t\tcheckJs: true,\n\t\t\t\tnoImplicitAny: true,\n\t\t\t\tnoUnusedLocals: true,\n\t\t\t\tnoUnusedParameters: true,\n\t\t\t\tnoImplicitReturns: true,\n\t\t\t\tnoImplicitThis: true,\n\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t};\n\n\t\ttest(\"./messages.js types\", async () => {\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n import * as m from \"./messages.js\"\n\n // --------- MESSAGES ---------\n\n // the return value of a message should be a string\n m.insane_cats({ name: \"John\", count: 5 }) satisfies string\n \n // @ts-expect-error - missing all params\n m.insane_cats()\n \n // @ts-expect-error - one param missing\n m.insane_cats({ name: \"John\" })\n\n // a message without params shouldn't require params\n m.sad_penguin_bundle() satisfies string\n\n // dynamic relativetime unit inputs stay consistent with other formatter inputs\n m.relative_time_literal({ duration: -1 }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"not-a-relative-time-unit\" }) satisfies string\n\n\t\t// --------- MATCH TYPE INFERENCE ---------\n\t\t// known match values should be accepted\n\t\tm.auth_password_error({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error({ type: \"empty\" }) satisfies string\n\t\tm.auth_password_error({ type: \"min_length\" }) satisfies string\n\t\tm.auth_password_error({ type: \"secure\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value\n\t\tm.auth_password_error({ type: \"typo\" })\n\n\t\t// quoted keys should still get literal unions\n\t\tm.error_with_dash({ \"error-type\": \"network\" }) satisfies string\n\t\tm.error_with_dash({ \"error-type\": \"timeout\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value for quoted key\n\t\tm.error_with_dash({ \"error-type\": \"offline\" })\n\n\t\t// catchall should widen match value typing\n\t\tm.auth_password_error_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// multiple match keys should each get literal unions\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"ready\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"empty\", status: \"done\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"secure\", status: \"failed\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid type literal\n\t\tm.multi_key_status_type({ type: \"typo\", status: \"ready\" })\n\n\t\t// @ts-expect-error - invalid status literal\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"pending\" })\n\n\t\t// numeric matches should accept both number and string forms\n\t\tm.numeric_input_match({ input: 1 }) satisfies string\n\t\tm.numeric_input_match({ input: 2 }) satisfies string\n\t\tm.numeric_input_match({ input: \"1\" }) satisfies string\n\t\tm.numeric_input_match({ input: \"2\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid numeric literal\n\t\tm.numeric_input_match({ input: 3 })\n\n\t\t// @ts-expect-error - invalid string literal\n\t\tm.numeric_input_match({ input: \"3\" })\n\n\t\t// @ts-expect-error - no loose boolean coercion\n\t\tm.numeric_input_match({ input: true })\n\n\t\t// empty matches should widen to NonNullable<unknown>\n\t\tm.empty_matches_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.empty_matches_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// --------- MESSAGE OPTIONS ---------\n\t\t// the locale option should be optional\n\t\tm.sad_penguin_bundle({}, {}) satisfies string\n\n\t\t// the locale option should be allowed\n\t\tm.sad_penguin_bundle({}, { locale: \"en\" }) satisfies string\n\n\t\t// the locale option must be a valid language tag\n\t\t// @ts-expect-error - invalid language tag\n\t\tm.sad_penguin_bundle({}, { locale: \"---\" })\n `\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\t// async_hooks is a node module that is not available in the browser\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"./messages.js types (single locale should not emit TS6133)\", async () => {\n\t\t\tconst singleLocaleProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tsingleLocaleProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"single_locale_message\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst singleLocaleOutput = await compileProject({\n\t\t\t\tproject: singleLocaleProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(singleLocaleOutput)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`import { single_locale_message } from \"./messages.js\"; single_locale_message();`\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tconst ts6133LocaleDiagnostics = diagnostics.filter((d) => {\n\t\t\t\treturn (\n\t\t\t\t\td.code === 6133 &&\n\t\t\t\t\td.messageText\n\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t.includes(\"'locale' is declared but its value is never read\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\texpect(ts6133LocaleDiagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#625: number formatter digit options should pass checkJs\", async () => {\n\t\t\tconst projectWithNumberOptions = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithNumberOptions.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"formatted_percentage\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"value\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"minimumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"%\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithNumberOptions,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#694: pattern-level annotations compile to registry calls and pass checkJs\", async () => {\n\t\t\tconst projectWithPatternAnnotation = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithPatternAnnotation.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"views\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"count\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \" views\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithPatternAnnotation,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\texpect(Object.values(output).join(\"\\n\")).toContain(\n\t\t\t\t'registry.number(\"en\", i?.count, { maximumFractionDigits: 1 }, true)'\n\t\t\t);\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"relativetime formatter options should pass checkJs\", async () => {\n\t\t\tconst projectWithRelativeTimeOptions = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithRelativeTimeOptions.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"formatted_relative_time\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"duration\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"style\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"short\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithRelativeTimeOptions,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"ICU exact number aliases select numerically and pass checkJs\", async () => {\n\t\t\tconst icuProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"fr\"] },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tconst countPluralExact = (value?: string) =>\n\t\t\t\tvalue === undefined\n\t\t\t\t\t? ({ type: \"catchall-match\", key: \"countPluralExact\" } as const)\n\t\t\t\t\t: ({\n\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\tkey: \"countPluralExact\",\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t} as const);\n\t\t\tconst countPlural = (value?: string) =>\n\t\t\t\tvalue === undefined\n\t\t\t\t\t? ({ type: \"catchall-match\", key: \"countPlural\" } as const)\n\t\t\t\t\t: ({ type: \"literal-match\", key: \"countPlural\", value } as const);\n\t\t\tconst withCount = (suffix: string) => [\n\t\t\t\t{\n\t\t\t\t\ttype: \"expression\" as const,\n\t\t\t\t\targ: { type: \"variable-reference\" as const, name: \"count\" },\n\t\t\t\t},\n\t\t\t\t{ type: \"text\" as const, value: suffix },\n\t\t\t];\n\n\t\t\t// the shape the ICU1 plugin imports {count, plural, =0 {…} one {…} other {…}} as\n\t\t\tawait insertBundleNested(\n\t\t\t\ticuProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"item_count\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralExact\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(\"0\"), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"No items\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural(\"one\")],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" item\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" items\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t// an editor appends the exact variant last\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural(\"one\")],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" élément\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" éléments\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(\"0\"), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Aucun élément\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// en narrows `status` by a direct match, fr matches through an alias\n\t\t\t// with a catchall, so any status is accepted\n\t\t\tawait insertBundleNested(\n\t\t\t\ticuProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"status_message\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"status\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"statusExact\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"status\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"status\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"active\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t// reads statusExact: unused bundle locals fail noUnusedLocals\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Active: \" },\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"statusExact\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"statusExact\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"statusExact\", value: \"0\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Zéro\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"statusExact\" }],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Autre\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: icuProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsProject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n\t\t\t\timport * as m from \"./messages.js\"\n\n\t\t\t\tm.item_count({ count: 0 }) satisfies string\n\t\t\t\tm.item_count({ count: \"0\" }) satisfies string\n\t\t\t\tm.status_message({ status: \"active\" }) satisfies string\n\t\t\t\tm.status_message({ status: \"inactive\" }) satisfies string\n\t\t\t\t`\n\t\t\t);\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\tconst render = (locale: string) =>\n\t\t\t\t[0, 1, 2, 5, 21, \"0\"].map((count) =>\n\t\t\t\t\tm.item_count({ count }, { locale })\n\t\t\t\t);\n\n\t\t\texpect(render(\"en\")).toEqual([\n\t\t\t\t\"No items\",\n\t\t\t\t\"1 item\",\n\t\t\t\t\"2 items\",\n\t\t\t\t\"5 items\",\n\t\t\t\t\"21 items\",\n\t\t\t\t\"No items\",\n\t\t\t]);\n\t\t\texpect(render(\"fr\")).toEqual([\n\t\t\t\t\"Aucun élément\",\n\t\t\t\t\"1 élément\",\n\t\t\t\t\"2 éléments\",\n\t\t\t\t\"5 éléments\",\n\t\t\t\t\"21 éléments\",\n\t\t\t\t\"Aucun élément\",\n\t\t\t]);\n\t\t\texpect(m.status_message({ status: \"inactive\" }, { locale: \"fr\" })).toBe(\n\t\t\t\t\"Autre\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"emits only the locals a locale reads, in dependency order, and supports plural offsets under checkJs\", async () => {\n\t\t\tconst localsProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"fr\"] },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tconst ref = (name: string) =>\n\t\t\t\t({ type: \"variable-reference\", name }) as const;\n\t\t\tconst literal = (key: string, value: string) =>\n\t\t\t\t({ type: \"literal-match\", key, value }) as const;\n\t\t\tconst catchall = (key: string) =>\n\t\t\t\t({ type: \"catchall-match\", key }) as const;\n\t\t\tconst text = (value: string) => [{ type: \"text\" as const, value }];\n\n\t\t\t// en never reads statusExact, fr only reads it\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"status_label\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"status\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"statusExact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"status\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"status\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"status\", \"active\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Active\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"status\")], pattern: text(\"Other\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [ref(\"statusExact\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"statusExact\", \"0\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Zéro\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"statusExact\")], pattern: text(\"Autre\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// the shape the ICU1 plugin imports\n\t\t\t// {count, plural, offset:1 =0 {…} =1 {…} one {…} other {…}} as\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"guest_list\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{ name: \"offset\", value: { type: \"literal\", value: \"1\" } },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1Exact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"0\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Nobody\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"1\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Only you\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1\", \"one\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"You and one other\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"You and others\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// fr does not translate the exact cases: countPluralOffset1Exact\n\t\t\t\t\t\t\t// is not read\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPluralOffset1\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPluralOffset1\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Vous et un autre\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPluralOffset1\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Vous et d'autres\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// fr reads no variable at all\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"greeting_label\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"name\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"nameValue\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"name\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello \" },\n\t\t\t\t\t\t\t\t\t\t{ type: \"expression\", arg: ref(\"nameValue\") },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [{ matches: [], pattern: text(\"Bonjour\") }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// a local declared before the local it reads\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"reordered_locals\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"countValue\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countValue\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"one\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"countPlural\")], pattern: text(\"other\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: localsProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsProject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n\t\t\t\timport * as m from \"./messages.js\"\n\n\t\t\t\tm.status_label({ status: \"active\" }) satisfies string\n\t\t\t\tm.guest_list({ count: 0 }) satisfies string\n\t\t\t\tm.reordered_locals({ count: 1 }) satisfies string\n\t\t\t\tm.greeting_label({ name: \"Ada\" }) satisfies string\n\t\t\t\t`\n\t\t\t);\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\n\t\t\texpect(\n\t\t\t\t[\"active\", \"inactive\"].map((status) =>\n\t\t\t\t\tm.status_label({ status }, { locale: \"en\" })\n\t\t\t\t)\n\t\t\t).toEqual([\"Active\", \"Other\"]);\n\t\t\texpect(\n\t\t\t\t[0, \"0\", 1].map((status) =>\n\t\t\t\t\tm.status_label({ status }, { locale: \"fr\" })\n\t\t\t\t)\n\t\t\t).toEqual([\"Zéro\", \"Zéro\", \"Autre\"]);\n\n\t\t\tconst guests = (locale: string) =>\n\t\t\t\t[0, 1, 2, 3, 22, \"1\", \"2\"].map((count) =>\n\t\t\t\t\tm.guest_list({ count }, { locale })\n\t\t\t\t);\n\t\t\texpect(guests(\"en\")).toEqual([\n\t\t\t\t\"Nobody\",\n\t\t\t\t\"Only you\",\n\t\t\t\t\"You and one other\",\n\t\t\t\t\"You and others\",\n\t\t\t\t\"You and others\",\n\t\t\t\t\"Only you\",\n\t\t\t\t\"You and one other\",\n\t\t\t]);\n\t\t\t// French \"one\" covers 0 and 1 (and -1 for 0 guests), so 1 and 2 guests\n\t\t\t// (0 and 1 others) select \"one\"\n\t\t\texpect(guests(\"fr\")).toEqual([\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et d'autres\",\n\t\t\t\t\"Vous et d'autres\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t]);\n\n\t\t\texpect(\n\t\t\t\t[1, 2].map((count) => m.reordered_locals({ count }, { locale: \"en\" }))\n\t\t\t).toEqual([\"one\", \"other\"]);\n\t\t\texpect(m.greeting_label({ name: \"Ada\" }, { locale: \"en\" })).toBe(\n\t\t\t\t\"Hello Ada\"\n\t\t\t);\n\t\t\texpect(m.greeting_label({ name: \"Ada\" }, { locale: \"fr\" })).toBe(\n\t\t\t\t\"Bonjour\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"imports the registry only where a message calls it, and formats ICU # with offset under checkJs\", async () => {\n\t\t\tconst compileChecked = async (\n\t\t\t\tbundles: Parameters<typeof createBundleNested>[0][]\n\t\t\t) => {\n\t\t\t\tconst icuProject = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tfor (const bundle of bundles) {\n\t\t\t\t\tawait insertBundleNested(icuProject.db, createBundleNested(bundle));\n\t\t\t\t}\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject: icuProject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\t\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t\t});\n\t\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst diagnostics = ts\n\t\t\t\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(d) =>\n\t\t\t\t\t\t\t!d.messageText\n\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\")\n\t\t\t\t\t);\n\t\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t\t}\n\t\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t\t\treturn output;\n\t\t\t};\n\n\t\t\tconst ref = (name: string) =>\n\t\t\t\t({ type: \"variable-reference\", name }) as const;\n\t\t\tconst literal = (key: string, value: string) =>\n\t\t\t\t({ type: \"literal-match\", key, value }) as const;\n\t\t\tconst catchall = (key: string) =>\n\t\t\t\t({ type: \"catchall-match\", key }) as const;\n\t\t\tconst text = (value: string) => ({ type: \"text\" as const, value });\n\t\t\tconst pound = (offset?: string): Pattern[number] => ({\n\t\t\t\ttype: \"expression\",\n\t\t\t\targ: ref(\"count\"),\n\t\t\t\tannotation: {\n\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\toptions:\n\t\t\t\t\t\toffset === undefined\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"offset\",\n\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: offset },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// message text that contains \"registry.\" must not import the registry\n\t\t\tconst textOnly = await compileChecked([\n\t\t\t\t{\n\t\t\t\t\tid: \"registry_text\",\n\t\t\t\t\tdeclarations: [],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{ matches: [], pattern: [text(\"Open the registry. Now.\")] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"Öffne die registry. Jetzt.\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t// an unknown formatter on a local interpolates the raw value\n\t\t\t\t{\n\t\t\t\t\tid: \"custom_local\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"amount\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formatted\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"amount\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"customLocalFormatter\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\ttext(\"Total: \"),\n\t\t\t\t\t\t\t\t\t\t{ type: \"expression\", arg: ref(\"formatted\") },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t]);\n\t\t\tfor (const [fileName, code] of Object.entries(textOnly)) {\n\t\t\t\tif (fileName.startsWith(\"messages/\")) {\n\t\t\t\t\texpect(code).not.toContain(\"import * as registry\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst { m: textMessages } = await importCode(\n\t\t\t\tawait bundleCode(\n\t\t\t\t\ttextOnly,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"`\n\t\t\t\t)\n\t\t\t);\n\t\t\texpect(textMessages.registry_text({}, { locale: \"en\" })).toBe(\n\t\t\t\t\"Open the registry. Now.\"\n\t\t\t);\n\t\t\texpect(\n\t\t\t\ttextMessages.custom_local({ amount: 1234 }, { locale: \"en\" })\n\t\t\t).toBe(\"Total: 1234\");\n\n\t\t\t// {count, plural, offset:1 =0 {Nobody} =1 {You} one {You and # other} other {You and # others}}\n\t\t\t// as the ICU1 plugin imports it, and `#` without an offset\n\t\t\tconst output = await compileChecked([\n\t\t\t\t{\n\t\t\t\t\tid: \"guest_count\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{ name: \"offset\", value: { type: \"literal\", value: \"1\" } },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1Exact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"0\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"Nobody\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"1\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1\", \"one\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You and \"), pound(\"1\"), text(\" other\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You and \"), pound(\"1\"), text(\" others\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"item_total\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" item\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" items\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" Artikel\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" Artikel\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"variable_offset\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"off\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [{ name: \"offset\", value: ref(\"off\") }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\ttext(\"one: \"),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\t\t\t\t\t\t\t\toptions: [{ name: \"offset\", value: ref(\"off\") }],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"other\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t]);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\t// offsets from variables type-check and are converted with Number()\n\t\t\texpect(m.variable_offset({ count: 3, off: 2 }, { locale: \"en\" })).toBe(\n\t\t\t\t\"one: 1\"\n\t\t\t);\n\t\t\texpect(m.variable_offset({ count: 3, off: \"2\" }, { locale: \"en\" })).toBe(\n\t\t\t\t\"one: 1\"\n\t\t\t);\n\t\t\texpect(\n\t\t\t\t[0, 1, 2, 3, 1234].map((count) =>\n\t\t\t\t\tm.guest_count({ count }, { locale: \"en\" })\n\t\t\t\t)\n\t\t\t).toEqual([\n\t\t\t\t\"Nobody\",\n\t\t\t\t\"You\",\n\t\t\t\t\"You and 1 other\",\n\t\t\t\t\"You and 2 others\",\n\t\t\t\t\"You and 1,233 others\",\n\t\t\t]);\n\t\t\texpect(\n\t\t\t\t[1, 2, 1234].map((count) => m.item_total({ count }, { locale: \"en\" }))\n\t\t\t).toEqual([\"1 item\", \"2 items\", \"1,234 items\"]);\n\t\t\texpect(m.item_total({ count: 1234 }, { locale: \"de\" })).toBe(\n\t\t\t\t\"1.234 Artikel\"\n\t\t\t);\n\t\t});\n\t}\n);\n\ndescribe.each([\n\t{ outputStructure: \"locale-modules\" },\n\t{ outputStructure: \"message-modules\" },\n] as const)(\n\t\"markup messages with fallbacks ($outputStructure)\",\n\t({ outputStructure }) => {\n\t\ttest(\".parts() type-checks under strict checkJs and renders\", async () => {\n\t\t\tconst markupProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t\t\t}),\n\t\t\t});\n\t\t\tconst bold = (value: string) => [\n\t\t\t\t{ type: \"markup-start\" as const, name: \"b\" },\n\t\t\t\t{ type: \"text\" as const, value },\n\t\t\t\t{ type: \"markup-end\" as const, name: \"b\" },\n\t\t\t];\n\t\t\tconst bundles: Parameters<typeof createBundleNested>[0][] = [\n\t\t\t\t// de falls back to en\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_fallback\",\n\t\t\t\t\tmessages: [{ locale: \"en\", variants: [{ pattern: bold(\"Hello\") }] }],\n\t\t\t\t},\n\t\t\t\t// en has no markup, de has\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_mixed\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ locale: \"de\", variants: [{ pattern: bold(\"Hallo\") }] },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t// en (the base locale) has no message and no fallback\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_missing_base\",\n\t\t\t\t\tmessages: [{ locale: \"de\", variants: [{ pattern: bold(\"Hallo\") }] }],\n\t\t\t\t},\n\t\t\t];\n\t\t\tfor (const bundle of bundles) {\n\t\t\t\tawait insertBundleNested(markupProject.db, createBundleNested(bundle));\n\t\t\t}\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: markupProject,\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\toutputStructure,\n\t\t\t\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\toutDir: \"dist\",\n\t\t\t\t\tdeclaration: true,\n\t\t\t\t\tallowJs: true,\n\t\t\t\t\tcheckJs: true,\n\t\t\t\t\tnoImplicitAny: true,\n\t\t\t\t\tnoUnusedLocals: true,\n\t\t\t\t\tnoUnusedParameters: true,\n\t\t\t\t\tnoImplicitReturns: true,\n\t\t\t\t\tnoImplicitThis: true,\n\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\t\tstrict: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst diagnostics = ts\n\t\t\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t\t\t.filter(\n\t\t\t\t\t(d) =>\n\t\t\t\t\t\t!d.messageText\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\")\n\t\t\t\t);\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\tconst boldParts = (value: string) => [\n\t\t\t\t{ type: \"markup-start\", name: \"b\", options: {}, attributes: {} },\n\t\t\t\t{ type: \"text\", value },\n\t\t\t\t{ type: \"markup-end\", name: \"b\", options: {}, attributes: {} },\n\t\t\t];\n\t\t\texpect(m.markup_fallback.parts({}, { locale: \"de\" })).toEqual(\n\t\t\t\tboldParts(\"Hello\")\n\t\t\t);\n\t\t\texpect(m.markup_mixed.parts({}, { locale: \"en\" })).toEqual([\n\t\t\t\t{ type: \"text\", value: \"Hello\" },\n\t\t\t]);\n\t\t\texpect(m.markup_mixed.parts({}, { locale: \"de\" })).toEqual(\n\t\t\t\tboldParts(\"Hallo\")\n\t\t\t);\n\t\t\texpect(m.markup_missing_base.parts({}, { locale: \"en\" })).toEqual([\n\t\t\t\t{ type: \"text\", value: \"markup_missing_base\" },\n\t\t\t]);\n\t\t});\n\t}\n);\n\ntest(\"messages injected by the middleware in experimentalMiddlewareLocaleSplitting mode can call the registry\", async () => {\n\tconst splitProject = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t}),\n\t});\n\tconst ref = (name: string) => ({ type: \"variable-reference\", name }) as const;\n\t// {count, plural, =0 {No items} other {# items}} as the ICU1 plugin imports it\n\tawait insertBundleNested(\n\t\tsplitProject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"item_count\",\n\t\t\tdeclarations: [\n\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"countPluralExact\",\n\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tselectors: [ref(\"countPluralExact\"), ref(\"countPlural\")],\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"countPluralExact\", value: \"0\" },\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"No items\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \" items\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\tawait insertBundleNested(\n\t\tsplitProject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"plain_text\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject: splitProject,\n\t\tcompilerOptions: {\n\t\t\tstrategy: [\"baseLocale\"],\n\t\t\texperimentalMiddlewareLocaleSplitting: true,\n\t\t\tdisableAsyncLocalStorage: true,\n\t\t},\n\t});\n\tconst { m, paraglideMiddleware } = await importCode(\n\t\tawait bundleCode(\n\t\t\toutput,\n\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\texport { paraglideMiddleware } from \"./paraglide/server.js\"`\n\t\t)\n\t);\n\n\tconst render = async (messages: (m: any) => string) => {\n\t\tconst response: Response = await paraglideMiddleware(\n\t\t\tnew Request(\"https://example.com/\", {\n\t\t\t\theaders: { \"Sec-Fetch-Dest\": \"document\" },\n\t\t\t}),\n\t\t\t() =>\n\t\t\t\tnew Response(`<html><head></head><body>${messages(m)}</body></html>`, {\n\t\t\t\t\theaders: { \"Content-Type\": \"text/html\" },\n\t\t\t\t})\n\t\t);\n\t\tconst html = await response.text();\n\t\tconst script = html.match(/<script[^>]*>([\\s\\S]*?)<\\/script>/)?.[1];\n\t\texpect(script).toBeDefined();\n\t\t// the client evaluates the script without registry.js\n\t\tconst context: Record<string, any> = {};\n\t\tvm.runInNewContext(script!, context);\n\t\treturn { html, ssr: context.__paraglide.ssr };\n\t};\n\n\tconst withRegistry = await render((m) => m.item_count({ count: 5 }));\n\texpect(withRegistry.html).toContain(\"<body>5 items</body>\");\n\texpect(withRegistry.ssr.item_count({ count: 5 })).toBe(\"5 items\");\n\texpect(withRegistry.ssr.item_count({ count: 1234 })).toBe(\"1,234 items\");\n\texpect(withRegistry.ssr.item_count({ count: 0 })).toBe(\"No items\");\n\n\t// messages that don't call the registry get no registry code\n\tconst withoutRegistry = await render((m) => m.plain_text());\n\texpect(withoutRegistry.ssr.plain_text()).toBe(\"Hello\");\n\texpect(withoutRegistry.html).not.toContain(\"const registry\");\n});\n\nasync function bundleCode(output: Record<string, string>, file: string) {\n\toutput[\"runtime.js\"] = output[\"runtime.js\"]!.replace(\n\t\t'import \"@inlang/paraglide-js/urlpattern-polyfill\";',\n\t\t\"/** @type {any} */const URLPattern = {};\"\n\t).replace(\n\t\t'const { AsyncLocalStorage } = await import(\"async_hooks\");',\n\t\t\"const AsyncLocalStorage = class {};\"\n\t);\n\n\tconst bundle = await rolldown({\n\t\tinput: [\"main.js\"],\n\t\tplugins: [\n\t\t\t// @ts-expect-error - rollup types are not up to date\n\t\t\tvirtual({\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(output).map(([fileName, code]) => [\n\t\t\t\t\t\t\"paraglide/\" + fileName,\n\t\t\t\t\t\tcode,\n\t\t\t\t\t])\n\t\t\t\t),\n\t\t\t\t\"main.js\": file,\n\t\t\t}),\n\t\t],\n\t});\n\tconst compiled = await bundle.generate({ format: \"esm\" });\n\tconst code = compiled.output[0].code;\n\treturn code;\n}\n\nasync function importCode(code: string) {\n\t// The random comment ensures that each code is a unique module\n\t// and state is not shared between imports\n\tconst randomComment = `// ${Math.random()}`;\n\tconst codeWithComment = `${randomComment}\\n${code}`;\n\treturn await import(\n\t\t`data:application/javascript;base64,${Buffer.from(codeWithComment, \"utf8\").toString(\"base64\")}`\n\t);\n}\n\nconst project = await loadProjectInMemory({\n\tblob: await newProject({\n\t\tsettings: {\n\t\t\tbaseLocale: \"en\",\n\t\t\tlocales: [\"en\", \"de\", \"en-US\"],\n\t\t},\n\t}),\n});\n\nconst mockBundles: BundleNested[] = [\n\tcreateBundleNested({\n\t\tid: \"sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"A simple message.\" }] }],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Eine einfache Nachricht.\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"Sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Capital Sad penguin\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Grossgeschriebenes Sad penguin\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"depressed_dog\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_en\",\n\t\t\t\tbundle_id: \"depressed_dog\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_en_variant_one\",\n\t\t\t\t\t\tmessage_id: \"depressed_dog_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Good morning \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_de\",\n\t\t\t\tbundle_id: \"depressed_dog\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_de_variant_one\",\n\t\t\t\t\t\tmessage_id: \"depressed_dog_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Guten Morgen \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"insane_cats\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"count\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"insane_cats_en\",\n\t\t\t\tbundle_id: \"insane_cats\",\n\t\t\t\tlocale: \"en\",\n\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_en_variant_one\",\n\t\t\t\t\t\tmessage_id: \"insane_cats_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! You have \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" messages.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"insane_cats_de\",\n\t\t\t\tbundle_id: \"insane_cats\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_de_variant_one\",\n\t\t\t\t\t\tmessage_id: \"insane_cats_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hallo \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! Du hast \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" Nachrichten.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\tcreateBundleNested({\n\t\tid: \"relative_time_literal\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{ name: \"unit\", value: { type: \"literal\", value: \"day\" } },\n\t\t\t\t\t\t\t{ name: \"numeric\", value: { type: \"literal\", value: \"auto\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"relative_time_dynamic\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"unit\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"style\", value: { type: \"literal\", value: \"short\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"auth_password_error\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_en\",\n\t\t\t\tbundle_id: \"auth_password_error\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_empty\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"empty\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"You must provide a password\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_min\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"type\",\n\t\t\t\t\t\t\t\tvalue: \"min_length\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_secure\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"secure\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"error_with_dash\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"error-type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"error_with_dash_en\",\n\t\t\t\tbundle_id: \"error_with_dash\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_network\",\n\t\t\t\t\t\tmessage_id: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"error-type\", value: \"network\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Network error\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_timeout\",\n\t\t\t\t\t\tmessage_id: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"error-type\",\n\t\t\t\t\t\t\t\tvalue: \"timeout\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Timeout error\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"auth_password_error_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_catchall_en\",\n\t\t\t\tbundle_id: \"auth_password_error_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_catchall\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"type\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Unknown password error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"multi_key_status_type\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"status\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"multi_key_status_type_en\",\n\t\t\t\tbundle_id: \"multi_key_status_type\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_ready_invalid\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"invalid\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"ready\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Ready invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_done_empty\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"empty\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"done\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Done empty\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_failed_secure\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"secure\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"failed\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Failed secure\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"empty_matches_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"empty_matches_catchall_en\",\n\t\t\t\tbundle_id: \"empty_matches_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_any\",\n\t\t\t\t\t\tmessage_id: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Any\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"numeric_input_match\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"input\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"numeric_input_match_en\",\n\t\t\t\tbundle_id: \"numeric_input_match\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_1\",\n\t\t\t\t\t\tmessage_id: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"1\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 1\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_2\",\n\t\t\t\t\t\tmessage_id: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"2\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nfor (const bundle of mockBundles) {\n\tawait insertBundleNested(project.db, bundle);\n}\n\nfunction createBundleNested(args: {\n\tid: string;\n\tdeclarations?: Declaration[];\n\tmessages: {\n\t\tselectors?: VariableReference[];\n\t\tlocale: string;\n\t\tvariants: {\n\t\t\tmatches?: Match[];\n\t\t\tpattern: Pattern;\n\t\t}[];\n\t}[];\n}): BundleNested {\n\treturn {\n\t\tid: args.id,\n\t\tdeclarations: args.declarations ?? [],\n\t\tmessages: args.messages.map((message) => ({\n\t\t\tid: args.id + \"_\" + message.locale,\n\t\t\tbundle_id: args.id,\n\t\t\tlocale: message.locale,\n\t\t\tselectors: message.selectors ?? [],\n\t\t\tvariants: message.variants.map((variant) => ({\n\t\t\t\tid:\n\t\t\t\t\targs.id +\n\t\t\t\t\t\"_\" +\n\t\t\t\t\tmessage.locale +\n\t\t\t\t\t\"_\" +\n\t\t\t\t\tMath.random().toString(36).slice(2),\n\t\t\t\tmessage_id: args.id,\n\t\t\t\tmatches: variant.matches ?? [],\n\t\t\t\tpattern: variant.pattern,\n\t\t\t})),\n\t\t})),\n\t};\n}\n\ntest(\"emitReadme only claims the output is git-ignored when a .gitignore is emitted\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t}),\n\t});\n\n\tconst withGitignore = await compileProject({ project });\n\tconst withoutGitignore = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: false },\n\t});\n\n\texpect(withGitignore[\"README.md\"]).toContain(\"git-ignored\");\n\texpect(withoutGitignore).not.toHaveProperty(\".gitignore\");\n\texpect(withoutGitignore[\"README.md\"]).not.toContain(\"git-ignored\");\n});\n"]}
1
+ {"version":3,"file":"compile-project.test.js","sourceRoot":"","sources":["../../src/compiler/compile-project.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAChE,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EACN,aAAa,IAAI,iBAAiB,EAClC,EAAE,GAEF,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EAEnB,UAAU,EACV,OAAO,EACP,iBAAiB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oCAAoC,EAAE,MAAM,uBAAuB,CAAC;AAE7E,UAAU,CAAC,GAAG,EAAE;IACf,8DAA8D;IAC9D,EAAE,CAAC,YAAY,EAAE,CAAC;IAClB,EAAE,CAAC,aAAa,EAAE,CAAC;IAEnB,sBAAsB;IACtB,gDAAgD;IAChD,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB,CACxB,WAA+C,EAC/C,KAAa;IAEb,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,OAAO,GAAuB,KAAK,CAAC;IAExC,OAAO,OAAO,EAAE,CAAC;QAChB,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,KAAK,CAAC;AACd,CAAC;AAED,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;SACrD,CAAC;KACF,CAAC,CAAC;IACH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,gBAAgB;QACpB,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM;YACN,QAAQ,EAAE;gBACT;oBACC,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,eAAe,MAAM,EAAE,EAAE;qBACzD;iBACD;aACD;SACD,CAAC,CAAC;KACH,CAAC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE;KACtD,CAAC,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAC7C,oCAAoC,CACpC,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CACjD,0DAA0D,CAC1D,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAC5E,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;IAChC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;QAClC,OAAO;QACP,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;KACxC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;QAC3C,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC;QAC1C,OAAO;QACP,eAAe,EAAE,EAAE,eAAe,EAAE,gBAAgB,EAAE;KACtD,CAAC,CAAC;IACH,MAAM,wBAAwB,GAAG,MAAM,cAAc,CAAC;QACrD,OAAO;QACP,eAAe,EAAE;YAChB,eAAe,EAAE,gBAAgB;YACjC,wBAAwB,EAAE,oCAAoC;SAC9D;KACD,CAAC,CAAC;IAEH,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,uBAAuB,CAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACpE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAClE,MAAM,CAAC,wBAAwB,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;IACzE,MAAM,CACL,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,uBAAuB,CAAE,CAAC,CAC9D,CAAC,OAAO,CAAC;QACT,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,KAAK;KAClB,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;IAC7F,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;aAC9B;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAC3D;YACD;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAC3D;SACD;KACD,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE;KACvD,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,CAAC,4BAA4B,CAAE,CAAC;IAE5D,yEAAyE;IACzE,uCAAuC;IACvC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IACjE,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC7D,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,CAC5B,oDAAoD,CACpD,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;QACzC,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE;YAChB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,wBAAwB,EAAE,IAAI;YAC9B,kCAAkC,EAAE,IAAI;YACxC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,MAAM,EAAE,IAAI;SACZ;KACD,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IACD,MAAM,WAAW,GAAG,EAAE;SACpB,qBAAqB,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;SAChD,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CACvE,CAAC;IACH,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEhC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;IACF,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;IAChF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;aAC9B;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,SAAS;QACb,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACxD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACjC,QAAQ,EAAE;gBACT;oBACC,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,GAAG,EAAE;wBACvC;4BACC,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;yBACjD;qBACD;iBACD;aACD;SACD,CAAC,CAAC;KACH,CAAC,CACF,CAAC;IACF,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,MAAM;QACV,YAAY,EAAE;YACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;YACzC;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;oBAClD,UAAU,EAAE;wBACX,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;qBACX;iBACD;aACD;SACD;QACD,oEAAoE;QACpE,QAAQ,EAAE;YACT,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC;YAC1B,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC;YAC/B,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC;SACpC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,MAAM,EAAE,MAAO;YACf,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAChE,QAAQ,EAAE;gBACT;oBACC,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;qBAC3D;oBACD,OAAO,EAAE,IAAI,CAAC,GAAI,CAAC;iBACnB;gBACD;oBACC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;oBACzD,OAAO,EAAE;wBACR;4BACC,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;yBAClD;wBACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAM,EAAE;qBAC/B;iBACD;aACD;SACD,CAAC,CAAC;KACH,CAAC,CACF,CAAC;IAEF,0EAA0E;IAC1E,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,YAAY;QAChB,YAAY,EAAE;YACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1C;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;iBACrC;aACD;SACD;QACD,QAAQ,EAAE;YACT,CAAC,IAAI,EAAE,YAAY,CAAC;YACpB,CAAC,IAAI,EAAE,aAAa,CAAC;YACrB,CAAC,OAAO,EAAE,aAAa,CAAC;SACxB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,MAAM,EAAE,MAAO;YACf,QAAQ,EAAE;gBACT;oBACC,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAM,EAAE;wBAC/B;4BACC,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;yBACjD;qBACD;iBACD;aACD;SACD,CAAC,CAAC;KACH,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,eAAe,EAAE,iBAAiB,EAAE;KACvD,CAAC,CAAC;IAEH,+EAA+E;IAC/E,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACtE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CACnD,wBAAwB,CACxB,CAAC;IAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;QACzC,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE;YAChB,MAAM,EAAE,MAAM;YACd,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,IAAI;YACxB,iBAAiB,EAAE,IAAI;YACvB,cAAc,EAAE,IAAI;YACpB,wBAAwB,EAAE,IAAI;YAC9B,kCAAkC,EAAE,IAAI;YACxC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,MAAM,EAAE,IAAI;SACZ;KACD,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IACD,MAAM,WAAW,GAAG,EAAE;SACpB,qBAAqB,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;SAChD,GAAG,CACH,CAAC,CAAC,EAAE,EAAE,CACL,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,EAAE,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAC/E;SACA,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACvE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAEhC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;IACF,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC1E,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3E,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAC5D,eAAe,CACf,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;IACrC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;QAClC,OAAO;QACP,eAAe,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;KAC7C,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE;KAC9C,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;IAC7B,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,kBAAkB,CAAC;IAEvC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACrC,OAAO;QACP,WAAW;KACX,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC;QAClC,OAAO;QACP,WAAW;QACX,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;KACrC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,WAAW;QACX,eAAe,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;KACtC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,MAAM,cAAc,CAAC;QAC3C,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC/C,0DAA0D;IAC1D,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACnD,mDAAmD;IACnD,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;IACnD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,4BAA4B,CAAC;IAEjD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,WAAW;KACX,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CACpC,8CAA8C,WAAW,EAAE,CAC3D,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;IACnF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,CACX,cAAc,CAAC;QACd,OAAO;QACP,eAAe,EAAE;YAChB,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SAC5D;KACD,CAAC,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEH,mDAAmD;AACnD,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;IACjF,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE,EAAE,wBAAwB,EAAE,IAAI,EAAE;KACnD,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CACxC,4DAA4D,CAC5D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,mDAAmD;AACnD,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;IAC1F,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAE5E,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE;YAChB,kBAAkB,EAAE,IAAI;YACxB,eAAe,EAAE,gBAAgB;SACjC;KACD,CAAC,CAAC;IAEH,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;QACzC,qBAAqB,EAAE,IAAI;QAC3B,eAAe,EAAE;YAChB,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;YAC5B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM;YAChD,MAAM,EAAE,IAAI;SACZ;KACD,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACF,CAAC;IAED,SAAS,CAAC,gBAAgB,CACzB,SAAS,EACT;;;;;;;GAOC,CACD,CAAC;IAEF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;IAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;IACpD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,MAAM,CACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAClE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;IAClE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,CAAC;gBACf,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,gBAAgB;QACpB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAC3D;SACD;KACD,CAAC,CACF,CAAC;IAEF,KAAK,MAAM,eAAe,IAAI;QAC7B,iBAAiB;QACjB,gBAAgB;KACP,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO;YACP,eAAe,EAAE;gBAChB,kBAAkB,EAAE,IAAI;gBACxB,eAAe;aACf;SACD,CAAC,CAAC;QACH,MAAM,eAAe,GACpB,eAAe,KAAK,iBAAiB;YACpC,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,sBAAsB,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CACxC,gDAAgD,CAChD,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE;gBAChB,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;gBAC5B,gBAAgB,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM;gBAChD,MAAM,EAAE,IAAI;aACZ;SACD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAChC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QAED,SAAS,CAAC,gBAAgB,CACzB,SAAS,EACT;;;;IAIC,CACD,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACtD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;AACF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,aAAa;QACjB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC;aAClE;SACD;KACD,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;qDACmD,CACnD,CAAC;IAEF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;gBACrB,UAAU,EAAE,IAAI;aAChB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,EAAE,EAAE,SAAS;QACb,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;aACd;SACD;QACD,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;4BACpC;gCACC,IAAI,EAAE,cAAc;gCACpB,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,EAAE;gCACX,UAAU,EAAE,EAAE;6BACd;4BACD;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACnD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACjC;gCACC,IAAI,EAAE,YAAY;gCAClB,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,EAAE;gCACX,UAAU,EAAE,EAAE;6BACd;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;SACD;KACD,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;KACP,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;qDACmD,CACnD,CAAC;IACF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7E,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;QACpC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACrE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;QAC5B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;QACjC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACnE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;KAC5B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;QAClB,yBAAyB;QACzB,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;QACnB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;qBAC3C;iBACD;aACD;SACD;KACD,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO;QACP,eAAe,EAAE;YAChB,WAAW,EAAE,EAAE;SACf;KACD,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;qDACmD,CACnD,CAAC;IAEF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,IAAI,CAAC;IACb,0FAA0F;IAC1F;QACC,eAAe,EAAE,gBAAgB;QACjC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC;KAC1C;IACD;QACC,eAAe,EAAE,iBAAiB;QAClC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC;KAC1C;CAC0E,CAAC,CAC5E,SAAS,EACT,KAAK,EAAE,eAAe,EAAE,EAAE;IACzB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAElE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC7B,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;;yCAEoC,CACpC,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClE,uFAAuF;YACvF,+EAA+E;YAC/E,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,EAAE,KAAK,oBAAoB,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;yCACoC,CACpC,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAElE,uFAAuF;YACvF,+EAA+E;YAC/E,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,EAAE,KAAK,oBAAoB,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC9D,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;;;;;;KAMA,CACA,CAAC;YACF,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClE,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/C,IACC,CAAC,oBAAoB,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAClE,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAC/B,mBAAmB,EACnB,sBAAsB,EACtB,oCAAoC,CACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACzC,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;aACrD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;YAClB,EAAE,EAAE,aAAa;YACjB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzC;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACN,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;wBAClD,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;wBACD,IAAI,EAAE,YAAY;qBAClB;iBACD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;oBAChE,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE;6BAC3D;4BACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;yBACvD;wBACD;4BACC,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,eAAe;oCACrB,KAAK,EAAE,OAAO;oCACd,GAAG,EAAE,aAAa;iCAClB;6BACD;4BACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;yBAC1D;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CACf,MAAM,cAAc,CAAC;YACpB,OAAO;YACP,eAAe;SACf,CAAC,EACF,8CAA8C,CAC9C,CACD,CAAC;QAEF,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QAC1B,oFAAoF;QACpF,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;yDACqD,CACrD,CAAC;QAEF,mCAAmC;QACnC,IAAI,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEf,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEzD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,MAAM,GAAG,IAAI,CAAC;YAElB,OAAO,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC;YAEzC,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEzD,MAAM,GAAG,IAAI,CAAC;YAEd,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,MAAM,GAAG,IAAI,CAAC;YAElB,OAAO,CAAC,kBAAkB,CAAC,CAAC,SAAc,EAAE,EAAE;gBAC7C,MAAM,GAAG,SAAS,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YAC5G,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,WAAW,CAAC,CAAC,MAAW,EAAE,EAAE;gBACnC,eAAe,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAEvD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,eAAe,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAEvD,MAAM,CAAC,eAAe,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAClG,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACjD,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEjD,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAErC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAExB,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,qGAAqG;YACrG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAChE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC7D,mBAAmB,CACnB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACvF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CACrD,kBAAkB,CAClB,CAAC;YACF,MAAM,CACL,CAAC,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC3D,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CACnE,oBAAoB,CACpB,CAAC;YAEF,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACnE,sBAAsB,CACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE3C,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBACzC,IAAI,EAAE,MAAM,UAAU,CAAC;oBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;iBAC9D,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;gBAClB,EAAE,EAAE,iBAAiB;gBACrB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE;4BACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE;yBAC3D;qBACD;iBACD;aACD,CAAC,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBACnC,OAAO;gBACP,eAAe;aACf,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;uDACkD,CAClD,CAAC;YACF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAEtD,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBACzC,IAAI,EAAE,MAAM,UAAU,CAAC;oBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;iBACrD,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;gBAClB,EAAE,EAAE,qBAAqB;gBACzB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE;4BACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE;yBAC3D;qBACD;iBACD;aACD,CAAC,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBACnC,OAAO;gBACP,eAAe;aACf,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;uDACkD,CAClD,CAAC;YACF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBACzC,IAAI,EAAE,MAAM,UAAU,CAAC;oBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;iBACxD,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;gBAClB,EAAE,EAAE,gBAAgB;gBACpB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE;4BACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE;yBAC3D;qBACD;oBACD;wBACC,MAAM,EAAE,OAAO;wBACf,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE;oCACR;wCACC,IAAI,EAAE,MAAM;wCACZ,KAAK,EAAE,iCAAiC;qCACxC;iCACD;6BACD;yBACD;qBACD;iBACD;aACD,CAAC,CACF,CAAC;YAEF,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;gBAClB,EAAE,EAAE,kBAAkB;gBACtB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE;4BACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE;yBAC3D;qBACD;iBACD;aACD,CAAC,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBACnC,OAAO;gBACP,eAAe;aACf,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;uDACkD,CAClD,CAAC;YACF,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE9C,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAEnE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;gBACzC,IAAI,EAAE,MAAM,UAAU,CAAC;oBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;iBAC/C,CAAC;aACF,CAAC,CAAC;YAEH,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;gBAClB,EAAE,EAAE,SAAS;gBACb,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;qBAC3D;iBACD;aACD,CAAC,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBACnC,OAAO;gBACP,eAAe;aACf,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;uDACkD,CAClD,CAAC;YACF,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC9F,MAAM,uBAAuB,GAC5B,eAAe,CAAC,eAAe,KAAK,gBAAgB;YACnD,CAAC,CAAC,gBAAgB;YAClB,CAAC,CAAC,mCAAmC,CAAC;QAExC,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAC;QACvD,MAAM,yBAAyB,GAAG,MAAM,CAAC,uBAAuB,CAAE,CAAC;QACnE,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAC1C,gFAAgF,CAChF,CAAC;QACF,MAAM,CAAC,yBAAyB,CAAC,CAAC,SAAS,CAC1C,gEAAgE,CAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;YACzC,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;aAC/C,CAAC;SACF,CAAC,CAAC;QAEH,2DAA2D;QAC3D,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;YAClB,EAAE,EAAE,YAAY;YAChB,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;6BACtD;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,kBAAkB,CACvB,OAAO,CAAC,EAAE,EACV,kBAAkB,CAAC;YAClB,EAAE,EAAE,YAAY;YAChB,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,6BAA6B,EAAE;6BACtD;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO;YACP,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,UAAU,CAC5B,MAAM,EACN;qEACiE,CACjE,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;QAExC,6CAA6C;QAC7C,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAClE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAElE,wDAAwD;QACxD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACpE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,yFAAyF;IACzF,uEAAuE;IACvE,MAAM,oCAAoC,GACzC;QACC,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,IAAI;QACxB,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,IAAI;QACpB,wBAAwB,EAAE,IAAI;QAC9B,kCAAkC,EAAE,IAAI;QACxC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;QAC5B,MAAM,EAAE,IAAI;KACZ,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC;YACvC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;QACD,OAAO,CAAC,gBAAgB,CACvB,SAAS,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmFD,CACC,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,oEAAoE;YACpE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,mBAAmB,GAAG,MAAM,mBAAmB,CAAC;YACrD,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;aAC/C,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,CACvB,mBAAmB,CAAC,EAAE,EACtB,kBAAkB,CAAC;YAClB,EAAE,EAAE,uBAAuB;YAC3B,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;iBAC3D;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAAC;YAC/C,OAAO,EAAE,mBAAmB;YAC5B,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC;YACvC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACnE,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;QAED,OAAO,CAAC,gBAAgB,CACvB,SAAS,EACT,iFAAiF,CACjF,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,MAAM,uBAAuB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACxD,OAAO,CACN,CAAC,CAAC,IAAI,KAAK,IAAI;gBACf,CAAC,CAAC,WAAW;qBACX,QAAQ,EAAE;qBACV,QAAQ,CAAC,kDAAkD,CAAC,CAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,wBAAwB,GAAG,MAAM,mBAAmB,CAAC;YAC1D,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE;oBACT,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;iBACf;aACD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,CACvB,wBAAwB,CAAC,EAAE,EAC3B,kBAAkB,CAAC;YAClB,EAAE,EAAE,sBAAsB;YAC1B,YAAY,EAAE;gBACb;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,OAAO;iBACb;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;wBAClD,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,uBAAuB;oCAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iCACtC;gCACD;oCACC,IAAI,EAAE,uBAAuB;oCAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;iCACtC;6BACD;yBACD;qBACD;iBACD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,YAAY;oCAClB,GAAG,EAAE;wCACJ,IAAI,EAAE,oBAAoB;wCAC1B,IAAI,EAAE,gBAAgB;qCACtB;iCACD;gCACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;6BAC5B;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,wBAAwB;YACjC,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC7F,MAAM,4BAA4B,GAAG,MAAM,mBAAmB,CAAC;YAC9D,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE;oBACT,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;iBACf;aACD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,CACvB,4BAA4B,CAAC,EAAE,EAC/B,kBAAkB,CAAC;YAClB,EAAE,EAAE,OAAO;YACX,YAAY,EAAE;gBACb;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,OAAO;iBACb;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,YAAY;oCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;oCAClD,UAAU,EAAE;wCACX,IAAI,EAAE,oBAAoB;wCAC1B,IAAI,EAAE,QAAQ;wCACd,OAAO,EAAE;4CACR;gDACC,IAAI,EAAE,uBAAuB;gDAC7B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;6CACtC;yCACD;qCACD;iCACD;gCACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;6BACjC;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,4BAA4B;YACrC,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CACjD,qEAAqE,CACrE,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,8BAA8B,GAAG,MAAM,mBAAmB,CAAC;YAChE,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE;oBACT,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;iBACf;aACD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,kBAAkB,CACvB,8BAA8B,CAAC,EAAE,EACjC,kBAAkB,CAAC;YAClB,EAAE,EAAE,yBAAyB;YAC7B,YAAY,EAAE;gBACb;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,UAAU;iBAChB;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,MAAM;iBACZ;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,mBAAmB;oBACzB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;wBACrD,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,cAAc;4BACpB,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,MAAM;oCACZ,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;iCACnD;gCACD;oCACC,IAAI,EAAE,OAAO;oCACb,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE;iCAC1C;6BACD;yBACD;qBACD;iBACD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR;oCACC,IAAI,EAAE,YAAY;oCAClB,GAAG,EAAE;wCACJ,IAAI,EAAE,oBAAoB;wCAC1B,IAAI,EAAE,mBAAmB;qCACzB;iCACD;6BACD;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,8BAA8B;YACvC,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC;YAC5C,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;aACrD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAE,EAAE,CAC3C,KAAK,KAAK,SAAS;YAClB,CAAC,CAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,EAAY;YAChE,CAAC,CAAE;gBACD,IAAI,EAAE,eAAe;gBACrB,GAAG,EAAE,kBAAkB;gBACvB,KAAK;aACK,CAAC;QACf,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,EAAE,CACtC,KAAK,KAAK,SAAS;YAClB,CAAC,CAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAY;YAC3D,CAAC,CAAE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAY,CAAC;QACpE,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC;YACrC;gBACC,IAAI,EAAE,YAAqB;gBAC3B,GAAG,EAAE,EAAE,IAAI,EAAE,oBAA6B,EAAE,IAAI,EAAE,OAAO,EAAE;aAC3D;YACD,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,MAAM,EAAE;SACxC,CAAC;QAEF,iFAAiF;QACjF,MAAM,kBAAkB,CACvB,UAAU,CAAC,EAAE,EACb,kBAAkB,CAAC;YAClB,EAAE,EAAE,YAAY;YAChB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzC;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,kBAAkB;oBACxB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;qBAClD;iBACD;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;wBAClD,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;qBACD;iBACD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE;wBACV,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE;wBACxD,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE;qBACnD;oBACD,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC;4BAC/C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;yBAC9C;wBACD;4BACC,OAAO,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;4BACjD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;yBAC3B;wBACD;4BACC,OAAO,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC;4BAC5C,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC;yBAC5B;qBACD;iBACD;gBACD;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE;wBACV,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE;wBACxD,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE;qBACnD;oBACD,2CAA2C;oBAC3C,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;4BACjD,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC;yBAC9B;wBACD;4BACC,OAAO,EAAE,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC;4BAC5C,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC;yBAC/B;wBACD;4BACC,OAAO,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC;4BAC/C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;yBACnD;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,kBAAkB,CACvB,UAAU,CAAC,EAAE,EACb,kBAAkB,CAAC;YAClB,EAAE,EAAE,gBAAgB;YACpB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1C;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACnD;iBACD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;oBAC3D,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;6BACzD;4BACD,8DAA8D;4BAC9D,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;gCACnC;oCACC,IAAI,EAAE,YAAY;oCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE;iCACxD;6BACD;yBACD;qBACD;iBACD;gBACD;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;oBAChE,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE;6BACzD;4BACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;yBAC1C;wBACD;4BACC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;4BACzD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;yBAC3C;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,UAAU;YACnB,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QACD,SAAS,CAAC,gBAAgB,CACzB,SAAS,EACT;;;;;;;KAOC,CACD,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;QACF,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACnC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CACnC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,UAAU;YACV,QAAQ;YACR,SAAS;YACT,SAAS;YACT,UAAU;YACV,UAAU;SACV,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,eAAe;YACf,WAAW;YACX,YAAY;YACZ,YAAY;YACZ,aAAa;YACb,eAAe;SACf,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACtE,OAAO,CACP,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sGAAsG,EAAE,KAAK,IAAI,EAAE;QACvH,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC;YAC/C,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;aACrD,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5B,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAU,CAAC;QACjD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAC9C,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,CAAU,CAAC;QAClD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAU,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnE,+CAA+C;QAC/C,MAAM,kBAAkB,CACvB,aAAa,CAAC,EAAE,EAChB,kBAAkB,CAAC;YAClB,EAAE,EAAE,cAAc;YAClB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1C;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE;iBACjD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC1B,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BACtC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;yBACvB;wBACD,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;qBACzD;iBACD;gBACD;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC/B,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;4BACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;yBACrB;wBACD,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;qBAC9D;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,oCAAoC;QACpC,+DAA+D;QAC/D,MAAM,kBAAkB,CACvB,aAAa,CAAC,EAAE,EAChB,kBAAkB,CAAC;YAClB,EAAE,EAAE,YAAY;YAChB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzC;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,oBAAoB;oBAC1B,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;wBACjB,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;6BAC1D;yBACD;qBACD;iBACD;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,yBAAyB;oBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;iBAChD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE;wBACV,GAAG,CAAC,yBAAyB,CAAC;wBAC9B,GAAG,CAAC,oBAAoB,CAAC;qBACzB;oBACD,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE;gCACR,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;gCACvC,QAAQ,CAAC,oBAAoB,CAAC;6BAC9B;4BACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;yBACvB;wBACD;4BACC,OAAO,EAAE;gCACR,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;gCACvC,QAAQ,CAAC,oBAAoB,CAAC;6BAC9B;4BACD,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;yBACzB;wBACD;4BACC,OAAO,EAAE;gCACR,QAAQ,CAAC,yBAAyB,CAAC;gCACnC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC;6BACpC;4BACD,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;yBAClC;wBACD;4BACC,OAAO,EAAE;gCACR,QAAQ,CAAC,yBAAyB,CAAC;gCACnC,QAAQ,CAAC,oBAAoB,CAAC;6BAC9B;4BACD,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC;yBAC/B;qBACD;iBACD;gBACD;oBACC,iEAAiE;oBACjE,cAAc;oBACd,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBACtC,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;4BAC/C,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;yBACjC;wBACD;4BACC,OAAO,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;4BACzC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;yBACjC;qBACD;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,8BAA8B;QAC9B,MAAM,kBAAkB,CACvB,aAAa,CAAC,EAAE,EAChB,kBAAkB,CAAC;YAClB,EAAE,EAAE,gBAAgB;YACpB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE;gBACxC;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,WAAW;oBACjB,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE;iBAC/C;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,EAAE;4BACX,OAAO,EAAE;gCACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;gCACjC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;6BAC7C;yBACD;qBACD;iBACD;gBACD;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,EAAE;oBACb,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;iBACrD;aACD;SACD,CAAC,CACF,CAAC;QAEF,6CAA6C;QAC7C,MAAM,kBAAkB,CACvB,aAAa,CAAC,EAAE,EAChB,kBAAkB,CAAC;YAClB,EAAE,EAAE,kBAAkB;YACtB,YAAY,EAAE;gBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;gBACzC;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE;wBACN,IAAI,EAAE,YAAY;wBAClB,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC;wBACtB,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,EAAE;yBACX;qBACD;iBACD;gBACD;oBACC,IAAI,EAAE,gBAAgB;oBACtB,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;iBAChD;aACD;YACD,QAAQ,EAAE;gBACT;oBACC,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC/B,QAAQ,EAAE;wBACT;4BACC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;4BACxC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;yBACpB;wBACD,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;qBAC9D;iBACD;aACD;SACD,CAAC,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,aAAa;YACtB,eAAe;SACf,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE,oCAAoC;SACrD,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QACD,SAAS,CAAC,gBAAgB,CACzB,SAAS,EACT;;;;;;;KAOC,CACD,CAAC;QAEF,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAClE,OAAO,CAAC,CAAC,CAAC,WAAW;iBACnB,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;QAEF,MAAM,CACL,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrC,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC5C,CACD,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/B,MAAM,CACL,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1B,CAAC,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC5C,CACD,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CACjC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACxC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CACnC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,QAAQ;YACR,UAAU;YACV,mBAAmB;YACnB,gBAAgB;YAChB,gBAAgB;YAChB,UAAU;YACV,mBAAmB;SACnB,CAAC,CAAC;QACH,uEAAuE;QACvE,gCAAgC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5B,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;YAClB,kBAAkB;SAClB,CAAC,CAAC;QAEH,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CACtE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC/D,WAAW,CACX,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC/D,SAAS,CACT,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iGAAiG,EAAE,KAAK,IAAI,EAAE;QAClH,MAAM,cAAc,GAAG,KAAK,EAC3B,OAAmD,EAClD,EAAE;YACH,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC;gBAC5C,IAAI,EAAE,MAAM,UAAU,CAAC;oBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;iBACrD,CAAC;aACF,CAAC,CAAC;YACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBACnC,OAAO,EAAE,UAAU;gBACnB,eAAe;aACf,CAAC,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;gBACzC,qBAAqB,EAAE,IAAI;gBAC3B,eAAe,EAAE,oCAAoC;aACrD,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;YACD,MAAM,WAAW,GAAG,EAAE;iBACpB,qBAAqB,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;iBAChD,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC,WAAW;iBACZ,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC,CAC/C,CAAC;YACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC;QACf,CAAC,CAAC;QAEF,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5B,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAU,CAAC;QACjD,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAC9C,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,CAAU,CAAC;QAClD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAU,CAAC;QAC5C,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,CAAC,MAAe,EAAmB,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;YACjB,UAAU,EAAE;gBACX,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,WAAW;gBACjB,OAAO,EACN,MAAM,KAAK,SAAS;oBACnB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC;wBACA;4BACC,IAAI,EAAE,QAAQ;4BACd,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;yBACzC;qBACD;aACJ;SACD,CAAC,CAAC;QAEH,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;YACrC;gBACC,EAAE,EAAE,eAAe;gBACnB,YAAY,EAAE,EAAE;gBAChB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,EAAE;wBACb,QAAQ,EAAE;4BACT,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE;yBAC3D;qBACD;oBACD;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,EAAE;wBACb,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,EAAE;gCACX,OAAO,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;6BAC7C;yBACD;qBACD;iBACD;aACD;YACD,6DAA6D;YAC7D;gBACC,EAAE,EAAE,cAAc;gBAClB,YAAY,EAAE;oBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC1C;wBACC,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE;4BACN,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC;4BAClB,UAAU,EAAE;gCACX,IAAI,EAAE,oBAAoB;gCAC1B,IAAI,EAAE,sBAAsB;gCAC5B,OAAO,EAAE,EAAE;6BACX;yBACD;qBACD;iBACD;gBACD,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,EAAE;wBACb,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,EAAE;gCACX,OAAO,EAAE;oCACR,IAAI,CAAC,SAAS,CAAC;oCACf,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,EAAE;iCAC7C;6BACD;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,IAAI,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACpD,CAAC;QACF,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,MAAM,UAAU,CAC3C,MAAM,UAAU,CACf,QAAQ,EACR,8CAA8C,CAC9C,CACD,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC5D,yBAAyB,CACzB,CAAC;QACF,MAAM,CACL,YAAY,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC7D,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEtB,gGAAgG;QAChG,2DAA2D;QAC3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC;gBACC,EAAE,EAAE,aAAa;gBACjB,YAAY,EAAE;oBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;oBACzC;wBACC,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,oBAAoB;wBAC1B,KAAK,EAAE;4BACN,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;4BACjB,UAAU,EAAE;gCACX,IAAI,EAAE,oBAAoB;gCAC1B,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE;oCACR,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;iCAC1D;6BACD;yBACD;qBACD;oBACD;wBACC,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,yBAAyB;wBAC/B,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;qBAChD;iBACD;gBACD,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE;4BACV,GAAG,CAAC,yBAAyB,CAAC;4BAC9B,GAAG,CAAC,oBAAoB,CAAC;yBACzB;wBACD,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE;oCACR,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;oCACvC,QAAQ,CAAC,oBAAoB,CAAC;iCAC9B;gCACD,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACzB;4BACD;gCACC,OAAO,EAAE;oCACR,OAAO,CAAC,yBAAyB,EAAE,GAAG,CAAC;oCACvC,QAAQ,CAAC,oBAAoB,CAAC;iCAC9B;gCACD,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BACtB;4BACD;gCACC,OAAO,EAAE;oCACR,QAAQ,CAAC,yBAAyB,CAAC;oCACnC,OAAO,CAAC,oBAAoB,EAAE,KAAK,CAAC;iCACpC;gCACD,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;6BACvD;4BACD;gCACC,OAAO,EAAE;oCACR,QAAQ,CAAC,yBAAyB,CAAC;oCACnC,QAAQ,CAAC,oBAAoB,CAAC;iCAC9B;gCACD,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;6BACxD;yBACD;qBACD;iBACD;aACD;YACD;gBACC,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE;oBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;oBACzC;wBACC,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE;4BACN,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;4BACjB,UAAU,EAAE;gCACX,IAAI,EAAE,oBAAoB;gCAC1B,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,EAAE;6BACX;yBACD;qBACD;iBACD;gBACD,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC/B,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gCACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;6BACjC;4BACD;gCACC,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gCAClC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;6BAClC;yBACD;qBACD;oBACD;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC/B,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gCACxC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;6BACpC;4BACD;gCACC,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gCAClC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;6BACpC;yBACD;qBACD;iBACD;aACD;YACD;gBACC,EAAE,EAAE,iBAAiB;gBACrB,YAAY,EAAE;oBACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;oBACzC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE;oBACvC;wBACC,IAAI,EAAE,gBAAgB;wBACtB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE;4BACN,IAAI,EAAE,YAAY;4BAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;4BACjB,UAAU,EAAE;gCACX,IAAI,EAAE,oBAAoB;gCAC1B,IAAI,EAAE,QAAQ;gCACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;6BAChD;yBACD;qBACD;iBACD;gBACD,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC/B,QAAQ,EAAE;4BACT;gCACC,OAAO,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gCACxC,OAAO,EAAE;oCACR,IAAI,CAAC,OAAO,CAAC;oCACb;wCACC,IAAI,EAAE,YAAY;wCAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;wCACjB,UAAU,EAAE;4CACX,IAAI,EAAE,oBAAoB;4CAC1B,IAAI,EAAE,WAAW;4CACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;yCAChD;qCACD;iCACD;6BACD;4BACD;gCACC,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gCAClC,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;6BACxB;yBACD;qBACD;iBACD;aACD;SACD,CAAC,CAAC;QAEH,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;QACF,oEAAoE;QACpE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACrE,QAAQ,CACR,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CACvE,QAAQ,CACR,CAAC;QACF,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAC1C,CACD,CAAC,OAAO,CAAC;YACT,QAAQ;YACR,KAAK;YACL,iBAAiB;YACjB,kBAAkB;YAClB,sBAAsB;SACtB,CAAC,CAAC;QACH,MAAM,CACL,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CACtE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3D,eAAe,CACf,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CACD,CAAC;AAEF,QAAQ,CAAC,IAAI,CAAC;IACb,EAAE,eAAe,EAAE,gBAAgB,EAAE;IACrC,EAAE,eAAe,EAAE,iBAAiB,EAAE;CAC7B,CAAC,CACV,mDAAmD,EACnD,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE;IACvB,IAAI,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC;YAC/C,IAAI,EAAE,MAAM,UAAU,CAAC;gBACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;aACrD,CAAC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;YAC/B,EAAE,IAAI,EAAE,cAAuB,EAAE,IAAI,EAAE,GAAG,EAAE;YAC5C,EAAE,IAAI,EAAE,MAAe,EAAE,KAAK,EAAE;YAChC,EAAE,IAAI,EAAE,YAAqB,EAAE,IAAI,EAAE,GAAG,EAAE;SAC1C,CAAC;QACF,MAAM,OAAO,GAA+C;YAC3D,sBAAsB;YACtB;gBACC,EAAE,EAAE,iBAAiB;gBACrB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;aACpE;YACD,2BAA2B;YAC3B;gBACC,EAAE,EAAE,cAAc;gBAClB,QAAQ,EAAE;oBACT;wBACC,MAAM,EAAE,IAAI;wBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;qBAC3D;oBACD,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;iBACxD;aACD;YACD,sDAAsD;YACtD;gBACC,EAAE,EAAE,qBAAqB;gBACzB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;aACpE;SACD,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,kBAAkB,CAAC,aAAa,CAAC,EAAE,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,aAAa;YACtB,eAAe,EAAE;gBAChB,eAAe;gBACf,QAAQ,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC;aAC1C;SACD,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;YACzC,qBAAqB,EAAE,IAAI;YAC3B,eAAe,EAAE;gBAChB,MAAM,EAAE,MAAM;gBACd,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,IAAI;gBACxB,iBAAiB,EAAE,IAAI;gBACvB,cAAc,EAAE,IAAI;gBACpB,wBAAwB,EAAE,IAAI;gBAC9B,kCAAkC,EAAE,IAAI;gBACxC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM;gBAC5B,MAAM,EAAE,IAAI;aACZ;SACD,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1D,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;QACD,MAAM,WAAW,GAAG,EAAE;aACpB,qBAAqB,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;aAChD,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC,WAAW;aACZ,QAAQ,EAAE;aACV,QAAQ,CAAC,kCAAkC,CAAC,CAC/C,CAAC;QACH,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM,UAAU,CAC7B,MAAM,UAAU,CAAC,MAAM,EAAE,8CAA8C,CAAC,CACxE,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC;YACpC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;YAChE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;YACvB,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;SAC9D,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAC5D,SAAS,CAAC,OAAO,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;SAChC,CAAC,CAAC;QACH,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CACzD,SAAS,CAAC,OAAO,CAAC,CAClB,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACjE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE;SAC9C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CACD,CAAC;AAEF,IAAI,CAAC,yGAAyG,EAAE,KAAK,IAAI,EAAE;IAC1H,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC;QAC9C,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;SACrD,CAAC;KACF,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAU,CAAC;IAC9E,+EAA+E;IAC/E,MAAM,kBAAkB,CACvB,YAAY,CAAC,EAAE,EACf,kBAAkB,CAAC;QAClB,EAAE,EAAE,YAAY;QAChB,YAAY,EAAE;YACb,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,EAAE;YACzC;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;aAChD;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;oBACjB,UAAU,EAAE;wBACX,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,QAAQ;wBACd,OAAO,EAAE,EAAE;qBACX;iBACD;aACD;SACD;QACD,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;gBACxD,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;4BAC9D,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE;yBAC9C;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;qBAC9C;oBACD;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,kBAAkB,EAAE;4BACnD,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,aAAa,EAAE;yBAC9C;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;gCACjB,UAAU,EAAE;oCACX,IAAI,EAAE,oBAAoB;oCAC1B,IAAI,EAAE,WAAW;oCACjB,OAAO,EAAE,EAAE;iCACX;6BACD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;yBACjC;qBACD;iBACD;aACD;SACD;KACD,CAAC,CACF,CAAC;IACF,MAAM,kBAAkB,CACvB,YAAY,CAAC,EAAE,EACf,kBAAkB,CAAC;QAClB,EAAE,EAAE,YAAY;QAChB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;aAC3D;SACD;KACD,CAAC,CACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;QACnC,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE;YAChB,QAAQ,EAAE,CAAC,YAAY,CAAC;YACxB,qCAAqC,EAAE,IAAI;YAC3C,wBAAwB,EAAE,IAAI;SAC9B;KACD,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,EAAE,mBAAmB,EAAE,GAAG,MAAM,UAAU,CAClD,MAAM,UAAU,CACf,MAAM,EACN;+DAC4D,CAC5D,CACD,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,QAA4B,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAa,MAAM,mBAAmB,CACnD,IAAI,OAAO,CAAC,sBAAsB,EAAE;YACnC,OAAO,EAAE,EAAE,gBAAgB,EAAE,UAAU,EAAE;SACzC,CAAC,EACF,GAAG,EAAE,CACJ,IAAI,QAAQ,CAAC,4BAA4B,QAAQ,CAAC,CAAC,CAAC,gBAAgB,EAAE;YACrE,OAAO,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE;SACxC,CAAC,CACH,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7B,sDAAsD;QACtD,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,EAAE,CAAC,eAAe,CAAC,MAAO,EAAE,OAAO,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;IAC/C,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC5D,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzE,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEnE,6DAA6D;IAC7D,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,UAAU,CAAC,MAA8B,EAAE,IAAY;IACrE,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,YAAY,CAAE,CAAC,OAAO,CACnD,oDAAoD,EACpD,0CAA0C,CAC1C,CAAC,OAAO,CACR,4DAA4D,EAC5D,qCAAqC,CACrC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC7B,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,OAAO,EAAE;YACR,qDAAqD;YACrD,OAAO,CAAC;gBACP,GAAG,MAAM,CAAC,WAAW,CACpB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;oBAChD,YAAY,GAAG,QAAQ;oBACvB,IAAI;iBACJ,CAAC,CACF;gBACD,SAAS,EAAE,IAAI;aACf,CAAC;SACF;KACD,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACrC,+DAA+D;IAC/D,0CAA0C;IAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;IAC5C,MAAM,eAAe,GAAG,GAAG,aAAa,KAAK,IAAI,EAAE,CAAC;IACpD,OAAO,MAAM,MAAM,CAClB,sCAAsC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAC/F,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;IACzC,IAAI,EAAE,MAAM,UAAU,CAAC;QACtB,QAAQ,EAAE;YACT,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;SAC9B;KACD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,WAAW,GAAmB;IACnC,kBAAkB,CAAC;QAClB,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,EAAE,CAAC;aACvE;YACD;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,EAAE;iBAClE;aACD;SACD;KACD,CAAC;IACF,kBAAkB,CAAC;QAClB,EAAE,EAAE,oBAAoB;QACxB,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE;iBAC7D;aACD;YACD;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gCAAgC,EAAE;yBACzD;qBACD;iBACD;aACD;SACD;KACD,CAAC;IACF;QACC,EAAE,EAAE,eAAe;QACnB,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,kBAAkB;gBACtB,SAAS,EAAE,eAAe;gBAC1B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,8BAA8B;wBAClC,UAAU,EAAE,kBAAkB;wBAC9B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;4BACxC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;6BACjD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;YACD;gBACC,EAAE,EAAE,kBAAkB;gBACtB,SAAS,EAAE,eAAe;gBAC1B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBAEb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,8BAA8B;wBAClC,UAAU,EAAE,kBAAkB;wBAC9B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;4BACxC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;6BACjD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,aAAa;QACjB,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,OAAO;aACb;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,gBAAgB;gBACpB,SAAS,EAAE,aAAa;gBACxB,MAAM,EAAE,IAAI;gBAEZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,4BAA4B;wBAChC,UAAU,EAAE,gBAAgB;wBAC5B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACjC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;6BACjD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;4BACtC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;6BAClD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;yBACrC;qBACD;iBACD;aACD;YACD;gBACC,EAAE,EAAE,gBAAgB;gBACpB,SAAS,EAAE,aAAa;gBACxB,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,4BAA4B;wBAChC,UAAU,EAAE,gBAAgB;wBAC5B,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACjC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;6BACjD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;4BACrC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,OAAO,EAAE;6BAClD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE;yBACxC;qBACD;iBACD;aACD;SACD;KACD;IACD,kBAAkB,CAAC;QAClB,EAAE,EAAE,uBAAuB;QAC3B,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,UAAU;aAChB;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;oBACrD,UAAU,EAAE;wBACX,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;4BAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;yBAC9D;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;4BACnC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE;oCACJ,IAAI,EAAE,oBAAoB;oCAC1B,IAAI,EAAE,mBAAmB;iCACzB;6BACD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;YACD;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;4BACnC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE;oCACJ,IAAI,EAAE,oBAAoB;oCAC1B,IAAI,EAAE,mBAAmB;iCACzB;6BACD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;SACD;KACD,CAAC;IACF,kBAAkB,CAAC;QAClB,EAAE,EAAE,uBAAuB;QAC3B,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,UAAU;aAChB;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE;oBACN,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,EAAE;oBACrD,UAAU,EAAE;wBACX,IAAI,EAAE,oBAAoB;wBAC1B,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;6BACnD;4BACD,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;yBAC7D;qBACD;iBACD;aACD;SACD;QACD,QAAQ,EAAE;YACT;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;4BACnC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE;oCACJ,IAAI,EAAE,oBAAoB;oCAC1B,IAAI,EAAE,mBAAmB;iCACzB;6BACD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;YACD;gBACC,MAAM,EAAE,IAAI;gBACZ,QAAQ,EAAE;oBACT;wBACC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE;4BACnC;gCACC,IAAI,EAAE,YAAY;gCAClB,GAAG,EAAE;oCACJ,IAAI,EAAE,oBAAoB;oCAC1B,IAAI,EAAE,mBAAmB;iCACzB;6BACD;4BACD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;yBAC5B;qBACD;iBACD;aACD;SACD;KACD,CAAC;IACF;QACC,EAAE,EAAE,qBAAqB;QACzB,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,wBAAwB;gBAC5B,SAAS,EAAE,qBAAqB;gBAChC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,wCAAwC;wBAC5C,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;wBACnE,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,oCAAoC;6BAC3C;yBACD;qBACD;oBACD;wBACC,EAAE,EAAE,sCAAsC;wBAC1C,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;wBACjE,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,6BAA6B;6BACpC;yBACD;qBACD;oBACD;wBACC,EAAE,EAAE,oCAAoC;wBACxC,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,eAAe;gCACrB,GAAG,EAAE,MAAM;gCACX,KAAK,EAAE,YAAY;6BACnB;yBACD;wBACD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,oCAAoC;6BAC3C;yBACD;qBACD;oBACD;wBACC,EAAE,EAAE,uCAAuC;wBAC3C,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;wBAClE,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,oCAAoC;6BAC3C;yBACD;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,iBAAiB;QACrB,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,YAAY;aAClB;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,oBAAoB;gBACxB,SAAS,EAAE,iBAAiB;gBAC5B,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,oCAAoC;wBACxC,UAAU,EAAE,oBAAoB;wBAChC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE;yBAC9D;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;qBACnD;oBACD;wBACC,EAAE,EAAE,oCAAoC;wBACxC,UAAU,EAAE,oBAAoB;wBAChC,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,eAAe;gCACrB,GAAG,EAAE,YAAY;gCACjB,KAAK,EAAE,SAAS;6BAChB;yBACD;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;qBACnD;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,8BAA8B;QAClC,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,iCAAiC;gBACrC,SAAS,EAAE,8BAA8B;gBACzC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,iDAAiD;wBACrD,UAAU,EAAE,iCAAiC;wBAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;wBACnE,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,oCAAoC;6BAC3C;yBACD;qBACD;oBACD;wBACC,EAAE,EAAE,kDAAkD;wBACtD,UAAU,EAAE,iCAAiC;wBAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;wBAClD,OAAO,EAAE;4BACR;gCACC,IAAI,EAAE,MAAM;gCACZ,KAAK,EAAE,wBAAwB;6BAC/B;yBACD;qBACD;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,uBAAuB;QAC3B,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;YACD;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;aACd;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,0BAA0B;gBAC9B,SAAS,EAAE,uBAAuB;gBAClC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,gDAAgD;wBACpD,UAAU,EAAE,0BAA0B;wBACtC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;4BACxD,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;yBACxD;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;qBACnD;oBACD;wBACC,EAAE,EAAE,6CAA6C;wBACjD,UAAU,EAAE,0BAA0B;wBACtC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;4BACtD,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;yBACvD;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;qBAChD;oBACD;wBACC,EAAE,EAAE,gDAAgD;wBACpD,UAAU,EAAE,0BAA0B;wBACtC,OAAO,EAAE;4BACR,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;4BACvD,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;yBACzD;wBACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;qBACnD;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,wBAAwB;QAC5B,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,MAAM;aACZ;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,2BAA2B;gBAC/B,SAAS,EAAE,wBAAwB;gBACnC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,2CAA2C;wBAC/C,UAAU,EAAE,2BAA2B;wBACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;wBACnE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;qBAC7C;oBACD;wBACC,EAAE,EAAE,uCAAuC;wBAC3C,UAAU,EAAE,2BAA2B;wBACvC,OAAO,EAAE,EAAE;wBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;qBACzC;iBACD;aACD;SACD;KACD;IACD;QACC,EAAE,EAAE,qBAAqB;QACzB,YAAY,EAAE;YACb;gBACC,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,OAAO;aACb;SACD;QACD,QAAQ,EAAE;YACT;gBACC,EAAE,EAAE,wBAAwB;gBAC5B,SAAS,EAAE,qBAAqB;gBAChC,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE;oBACT;wBACC,EAAE,EAAE,kCAAkC;wBACtC,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;wBAC9D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;qBAC7C;oBACD;wBACC,EAAE,EAAE,kCAAkC;wBACtC,UAAU,EAAE,wBAAwB;wBACpC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;wBAC9D,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;qBAC7C;iBACD;aACD;SACD;KACD;CACD,CAAC;AAEF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,IAW3B;IACA,OAAO;QACN,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzC,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,MAAM;YAClC,SAAS,EAAE,IAAI,CAAC,EAAE;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC5C,EAAE,EACD,IAAI,CAAC,EAAE;oBACP,GAAG;oBACH,OAAO,CAAC,MAAM;oBACd,GAAG;oBACH,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpC,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;aACxB,CAAC,CAAC;SACH,CAAC,CAAC;KACH,CAAC;AACH,CAAC;AAED,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAChG,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACzC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;SAC/C,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,MAAM,cAAc,CAAC;QAC7C,OAAO;QACP,eAAe,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;KACzC,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAC1D,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC","sourcesContent":["import { expect, test, describe, vi, beforeEach } from \"vitest\";\nimport vm from \"node:vm\";\nimport {\n\tcreateProject as typescriptProject,\n\tts,\n\ttype ProjectOptions,\n} from \"@ts-morph/bootstrap\";\nimport {\n\ttype BundleNested,\n\tDeclaration,\n\tinsertBundleNested,\n\tloadProjectInMemory,\n\ttype Match,\n\tnewProject,\n\tPattern,\n\tVariableReference,\n} from \"@inlang/sdk\";\nimport { compileProject, getFallbackMap } from \"./compile-project.js\";\nimport virtual from \"@rollup/plugin-virtual\";\nimport { rolldown } from \"rolldown\";\nimport { perLocaleBuildStaticLocaleExpression } from \"./per-locale-build.js\";\n\nbeforeEach(() => {\n\t// reset the imports to make sure that the runtime is reloaded\n\tvi.resetModules();\n\tvi.clearAllMocks();\n\n\t// mocking DOM globals\n\t// @ts-expect-error - global variable definition\n\tglobalThis.window = undefined;\n});\n\nfunction hasFallbackCycle(\n\tfallbackMap: Record<string, string | undefined>,\n\tstart: string\n): boolean {\n\tconst visited = new Set<string>();\n\tlet current: string | undefined = start;\n\n\twhile (current) {\n\t\tif (visited.has(current)) return true;\n\t\tvisited.add(current);\n\t\tcurrent = fallbackMap[current];\n\t}\n\n\treturn false;\n}\n\ntest(\"locale-modules retain language-grouped static text helpers\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t}),\n\t});\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"literal_layout\",\n\t\t\tdeclarations: [],\n\t\t\tmessages: [\"en\", \"de\"].map((locale) => ({\n\t\t\t\tlocale,\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, value: `layout text ${locale}` },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})),\n\t\t})\n\t);\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"locale-modules\" },\n\t});\n\texpect(output[\"messages/_index.js\"]).toContain(\n\t\t\"return __de.literal_layout(inputs)\"\n\t);\n\texpect(output[\"messages/_index.js\"]).not.toContain(\n\t\t'return /** @type {LocalizedString} */ (\"layout text de\")'\n\t);\n\texpect(output[\"messages/de.js\"]).toContain(\"export const literal_layout =\");\n\tawait project.close();\n});\n\ntest(\"emitGitignore\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".gitignore\");\n\texpect(_true).toHaveProperty(\".gitignore\");\n\texpect(_false).not.toHaveProperty(\".gitignore\");\n});\n\ntest(\"marks tree-shakeable generated message layouts as side-effect-free\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst messageModules = await compileProject({\n\t\tproject,\n\t});\n\n\tconst localeModules = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"locale-modules\" },\n\t});\n\tconst specializedLocaleModules = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\toutputStructure: \"locale-modules\",\n\t\t\texperimentalStaticLocale: perLocaleBuildStaticLocaleExpression,\n\t\t},\n\t});\n\n\t// message-modules: the message modules are side-effect-free, so bundlers can\n\t// drop unused re-exports from the `m` barrel per entry instead of emitting one\n\t// shared chunk with every message. `type: \"module\"` keeps the generated ESM\n\t// files in the new `messages/` package scope from defaulting to CommonJS.\n\texpect(messageModules).toHaveProperty(\"messages/package.json\");\n\texpect(JSON.parse(messageModules[\"messages/package.json\"]!)).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n\n\texpect(localeModules).not.toHaveProperty(\"messages/package.json\");\n\texpect(specializedLocaleModules).toHaveProperty(\"messages/package.json\");\n\texpect(\n\t\tJSON.parse(specializedLocaleModules[\"messages/package.json\"]!)\n\t).toEqual({\n\t\ttype: \"module\",\n\t\tsideEffects: false,\n\t});\n});\n\ntest(\"inlines static text and retains only fallback helpers under strict checkJs\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\", \"de\", \"de-AT\"],\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"plain_greeting\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hallo\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"message-modules\" },\n\t});\n\tconst messageModule = output[\"messages/plain_greeting.js\"]!;\n\n\t// The base locale is returned inline, while de-AT's missing-locale alias\n\t// still needs the de message function.\n\texpect(messageModule).not.toContain(\"const en_plain_greeting =\");\n\texpect(messageModule).toContain(\"const de_plain_greeting =\");\n\texpect(messageModule).toMatch(\n\t\t/const de_at\\d*_plain_greeting = de_plain_greeting;/\n\t);\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\toutDir: \"dist\",\n\t\t\tdeclaration: true,\n\t\t\tallowJs: true,\n\t\t\tcheckJs: true,\n\t\t\tnoImplicitAny: true,\n\t\t\tnoUnusedLocals: true,\n\t\t\tnoUnusedParameters: true,\n\t\t\tnoImplicitReturns: true,\n\t\t\tnoImplicitThis: true,\n\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\tconst diagnostics = ts\n\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t.filter(\n\t\t\t(d) =>\n\t\t\t\t!d.messageText.toString().includes(\"Cannot find module 'async_hooks'\")\n\t\t);\n\texpect(diagnostics).toEqual([]);\n\n\tconst { m } = await importCode(\n\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t);\n\texpect(m.plain_greeting({}, { locale: \"en\" })).toBe(\"Hello\");\n\texpect(m.plain_greeting({}, { locale: \"de\" })).toBe(\"Hallo\");\n\texpect(m.plain_greeting({}, { locale: \"de-AT\" })).toBe(\"Hallo\");\n});\n\ntest(\"inlines messages with inputs and plurals under strict checkJs\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\", \"de\", \"de-AT\"],\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst text = (value: string): Pattern => [{ type: \"text\", value }];\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"welcome\",\n\t\t\tdeclarations: [{ type: \"input-variable\", name: \"name\" }],\n\t\t\tmessages: [\"Hello\", \"Hallo\"].map((greeting, index) => ({\n\t\t\t\tlocale: index === 0 ? \"en\" : \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: `${greeting} ` },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})),\n\t\t})\n\t);\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"cats\",\n\t\t\tdeclarations: [\n\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\t// de-AT has its own plural, so every locale declares `countPlural`.\n\t\t\tmessages: [\n\t\t\t\t[\"en\", \"One cat\", \" cats\"],\n\t\t\t\t[\"de\", \"Eine Katze\", \" Katzen\"],\n\t\t\t\t[\"de-AT\", \"Ein Katzerl\", \" Katzerl\"],\n\t\t\t].map(([locale, one, other]) => ({\n\t\t\t\tlocale: locale!,\n\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"countPlural\" }],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"countPlural\", value: \"one\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: text(one!),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"countPlural\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: other! },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})),\n\t\t})\n\t);\n\n\t// The only declared input is never read, so the dispatcher marks it used.\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"unit_label\",\n\t\t\tdeclarations: [\n\t\t\t\t{ type: \"input-variable\", name: \"unused\" },\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"unit\",\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\targ: { type: \"literal\", value: \"kg\" },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t[\"en\", \"Weight in \"],\n\t\t\t\t[\"de\", \"Gewicht in \"],\n\t\t\t\t[\"de-AT\", \"Gewicht in \"],\n\t\t\t].map(([locale, label]) => ({\n\t\t\t\tlocale: locale!,\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: label! },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})),\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { outputStructure: \"message-modules\" },\n\t});\n\n\t// Only the message that de-AT's missing-locale alias calls keeps its function.\n\texpect(output[\"messages/welcome.js\"]).not.toContain(\"const en_welcome =\");\n\texpect(output[\"messages/welcome.js\"]).toContain(\"const de_welcome =\");\n\texpect(output[\"messages/cats.js\"]).not.toMatch(/const \\w+_cats =/);\n\texpect(output[\"messages/unit_label.js\"]).not.toMatch(\n\t\t/const \\w+_unit_label =/\n\t);\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\toutDir: \"dist\",\n\t\t\tdeclaration: true,\n\t\t\tallowJs: true,\n\t\t\tcheckJs: true,\n\t\t\tnoImplicitAny: true,\n\t\t\tnoUnusedLocals: true,\n\t\t\tnoUnusedParameters: true,\n\t\t\tnoImplicitReturns: true,\n\t\t\tnoImplicitThis: true,\n\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\tconst diagnostics = ts\n\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t.map(\n\t\t\t(d) =>\n\t\t\t\t`${d.file?.fileName}: ${ts.flattenDiagnosticMessageText(d.messageText, \"\\n\")}`\n\t\t)\n\t\t.filter((text) => !text.includes(\"Cannot find module 'async_hooks'\"));\n\texpect(diagnostics).toEqual([]);\n\n\tconst { m } = await importCode(\n\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t);\n\texpect(m.welcome({ name: \"Ada\" }, { locale: \"en\" })).toBe(\"Hello Ada\");\n\texpect(m.welcome({ name: \"Ada\" }, { locale: \"de\" })).toBe(\"Hallo Ada\");\n\texpect(m.welcome({ name: \"Ada\" }, { locale: \"de-AT\" })).toBe(\"Hallo Ada\");\n\texpect(m.cats({ count: 1 }, { locale: \"en\" })).toBe(\"One cat\");\n\texpect(m.cats({ count: 3 }, { locale: \"en\" })).toBe(\"3 cats\");\n\texpect(m.cats({ count: 3 }, { locale: \"de\" })).toBe(\"3 Katzen\");\n\texpect(m.cats({ count: 1 }, { locale: \"de\" })).toBe(\"Eine Katze\");\n\texpect(m.cats({ count: 1 }, { locale: \"de-AT\" })).toBe(\"Ein Katzerl\");\n\texpect(m.cats({ count: 3 }, { locale: \"de-AT\" })).toBe(\"3 Katzerl\");\n\texpect(m.unit_label({ unused: 1 }, { locale: \"en\" })).toBe(\"Weight in kg\");\n\texpect(m.unit_label({ unused: 1 }, { locale: \"de-AT\" })).toBe(\n\t\t\"Gewicht in kg\"\n\t);\n});\n\ntest(\"emitPrettierIgnore\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitPrettierIgnore: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitPrettierIgnore: false },\n\t});\n\n\texpect(_default).toHaveProperty(\".prettierignore\");\n\texpect(_true).toHaveProperty(\".prettierignore\");\n\texpect(_false).not.toHaveProperty(\".prettierignore\");\n});\n\ntest(\"emitReadme\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst projectPath = \"./project.inlang\";\n\n\tconst _default = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t});\n\n\tconst _true = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t\tcompilerOptions: { emitReadme: true },\n\t});\n\n\tconst _false = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t\tcompilerOptions: { emitReadme: false },\n\t});\n\n\tconst _noProjectPath = await compileProject({\n\t\tproject,\n\t});\n\n\texpect(_default).toHaveProperty(\"README.md\");\n\texpect(_true).toHaveProperty(\"README.md\");\n\texpect(_false).not.toHaveProperty(\"README.md\");\n\t// README should still be emitted even without projectPath\n\texpect(_noProjectPath).toHaveProperty(\"README.md\");\n\t// but should not contain the \"Compiled from:\" line\n\texpect(_noProjectPath[\"README.md\"]).not.toContain(\"Compiled from:\");\n});\n\ntest(\"emitReadme includes project path\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst projectPath = \"./my-custom-project.inlang\";\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tprojectPath,\n\t});\n\n\texpect(output[\"README.md\"]).toContain(projectPath);\n\texpect(output[\"README.md\"]).toContain(\"Compiled from:\");\n\texpect(output[\"README.md\"]).toContain(\"Paraglide JS\");\n\texpect(output[\"README.md\"]).toContain(\n\t\t`npx @inlang/paraglide-js compile --project ${projectPath}`\n\t);\n\texpect(output[\"README.md\"]).toContain(\"npx @inlang/cli check\");\n});\n\ntest(\"throws during compile for invalid routeStrategies match patterns\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait expect(\n\t\tcompileProject({\n\t\t\tproject,\n\t\t\tcompilerOptions: {\n\t\t\t\trouteStrategies: [{ match: \"/api/:path(.*\", exclude: true }],\n\t\t\t},\n\t\t})\n\t).rejects.toThrow(`Invalid routeStrategies[0].match \"/api/:path(.*\"`);\n});\n\n// https://github.com/opral/paraglide-js/issues/539\ntest(\"omits async_hooks import when disableAsyncLocalStorage is true\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { disableAsyncLocalStorage: true },\n\t});\n\n\texpect(output[\"server.js\"]).not.toContain(\n\t\t'const { AsyncLocalStorage } = await import(\"async_hooks\");'\n\t);\n});\n\n// https://github.com/opral/paraglide-js/issues/544\ntest(\"fallback map should not create cycles for language-only + regional baseLocale\", () => {\n\tconst fallbackMap = getFallbackMap([\"it\", \"it-IT\", \"fr\", \"fr-FR\"], \"it-IT\");\n\n\texpect(hasFallbackCycle(fallbackMap, \"it\")).toBe(false);\n\texpect(hasFallbackCycle(fallbackMap, \"it-IT\")).toBe(false);\n\texpect(fallbackMap[\"it\"]).toBe(\"it-IT\");\n\texpect(fallbackMap[\"it-IT\"]).toBeUndefined();\n});\n\ntest(\"emitTsDeclarations generates declaration files\", async () => {\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\temitTsDeclarations: true,\n\t\t\toutputStructure: \"locale-modules\",\n\t\t},\n\t});\n\n\texpect(output).toHaveProperty(\"messages/_index.d.ts\");\n\texpect(output).toHaveProperty(\"messages.d.ts\");\n\texpect(output).toHaveProperty(\"registry.d.ts\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"sad_penguin_bundle\");\n\texpect(output[\"messages/_index.d.ts\"]).toContain(\"relative_time_dynamic\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"RelativeTimeFormatUnit\");\n\texpect(output[\"registry.d.ts\"]).toContain(\"relativetime\");\n\n\tconst tsProject = await typescriptProject({\n\t\tuseInMemoryFileSystem: true,\n\t\tcompilerOptions: {\n\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\tstrict: true,\n\t\t},\n\t});\n\n\tfor (const [fileName, code] of Object.entries(output)) {\n\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t}\n\t}\n\n\ttsProject.createSourceFile(\n\t\t\"test.ts\",\n\t\t`\n\t\t\timport { m, relative_time_dynamic } from \"./messages.js\";\n\t\t\timport { relativetime } from \"./registry.js\";\n\n\t\t\tm.sad_penguin_bundle() satisfies string;\n\t\t\trelative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string;\n\t\t\trelativetime(\"en\", -3, { unit: \"hour\", style: \"short\" }) satisfies string;\n\t\t`\n\t);\n\n\tconst program = tsProject.createProgram();\n\tconst diagnostics = ts.getPreEmitDiagnostics(program);\n\tfor (const diagnostic of diagnostics) {\n\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t}\n\texpect(diagnostics.length).toEqual(0);\n});\n\ntest(\"emitTsDeclarations remains opt-in\", async () => {\n\tconst output = await compileProject({ project });\n\texpect(\n\t\tObject.keys(output).some((fileName) => fileName.endsWith(\".d.ts\"))\n\t).toBe(false);\n});\n\ntest(\"emitTsDeclarations quotes unsafe export aliases\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"greeting.hello\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tfor (const outputStructure of [\n\t\t\"message-modules\",\n\t\t\"locale-modules\",\n\t] as const) {\n\t\tconst output = await compileProject({\n\t\t\tproject,\n\t\t\tcompilerOptions: {\n\t\t\t\temitTsDeclarations: true,\n\t\t\t\toutputStructure,\n\t\t\t},\n\t\t});\n\t\tconst declarationFile =\n\t\t\toutputStructure === \"message-modules\"\n\t\t\t\t? \"messages/greeting_hello.d.ts\"\n\t\t\t\t: \"messages/_index.d.ts\";\n\n\t\texpect(output[declarationFile]).toContain(\n\t\t\t`export { greeting_hello as \"greeting.hello\" };`\n\t\t);\n\n\t\tconst tsProject = await typescriptProject({\n\t\t\tuseInMemoryFileSystem: true,\n\t\t\tcompilerOptions: {\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tmoduleResolution: ts.ModuleResolutionKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t},\n\t\t});\n\n\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\tif (fileName.endsWith(\".d.ts\")) {\n\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t}\n\t\t}\n\n\t\ttsProject.createSourceFile(\n\t\t\t\"test.ts\",\n\t\t\t`\n\t\t\t\timport { \"greeting.hello\" as greetingHello } from \"./messages.js\";\n\n\t\t\t\tgreetingHello() satisfies string;\n\t\t\t`\n\t\t);\n\n\t\tconst program = tsProject.createProgram();\n\t\tconst diagnostics = ts.getPreEmitDiagnostics(program);\n\t\tfor (const diagnostic of diagnostics) {\n\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t}\n\t\texpect(diagnostics.length).toEqual(0);\n\t}\n});\n\ntest(\"handles message bundles with a : in the id\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"hello:world\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello world!\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"hello:world\"]()).toBe(\"Hello world!\");\n});\n\ntest(\"emits .parts() on bundle functions for markup messages\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"balance\",\n\t\t\tdeclarations: [\n\t\t\t\t{\n\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\tname: \"amount\",\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \"You have \" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-start\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"amount\" },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \" coins\" },\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"markup-end\",\n\t\t\t\t\t\t\t\t\tname: \"strong\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\tattributes: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\tconst { m } = await importCode(code);\n\n\texpect(m.balance({ amount: 7 }, { locale: \"en\" })).toBe(\"You have 7 coins.\");\n\texpect(m.balance.parts({ amount: 7 }, { locale: \"en\" })).toEqual([\n\t\t{ type: \"text\", value: \"You have \" },\n\t\t{ type: \"markup-start\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \"7\" },\n\t\t{ type: \"text\", value: \" coins\" },\n\t\t{ type: \"markup-end\", name: \"strong\", options: {}, attributes: {} },\n\t\t{ type: \"text\", value: \".\" },\n\t]);\n});\n\n// https://github.com/opral/inlang-paraglide-js/issues/347\ntest(\"can emit message bundles with more than 255 characters\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: {\n\t\t\t\tbaseLocale: \"en\",\n\t\t\t\tlocales: [\"en\", \"de\"],\n\t\t\t},\n\t\t}),\n\t});\n\n\tawait insertBundleNested(\n\t\tproject.db,\n\t\tcreateBundleNested({\n\t\t\t// 300 characters long id\n\t\t\tid: \"a\".repeat(300),\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Hello\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: {\n\t\t\turlPatterns: [],\n\t\t},\n\t});\n\n\tconst code = await bundleCode(\n\t\toutput,\n\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t);\n\n\tconst { m } = await importCode(code);\n\n\texpect(m[\"a\".repeat(300)]()).toBe(\"Hello\");\n});\n\ndescribe.each([\n\t// useTsImports must be true to test emitTs. Otherwise, rolldown can't resolve the imports\n\t{\n\t\toutputStructure: \"locale-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n\t{\n\t\toutputStructure: \"message-modules\",\n\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t},\n] satisfies Array<Parameters<typeof compileProject>[\"0\"][\"compilerOptions\"]>)(\n\t\"options\",\n\tasync (compilerOptions) => {\n\t\tconst output = await compileProject({ project, compilerOptions });\n\n\t\tdescribe(\"tree-shaking\", () => {\n\t\t\ttest(\"should tree-shake unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of mockBundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\t// https://github.com/opral/inlang-paraglide-js/issues/345\n\t\t\ttest(\"importing { m } works and tree-shakes unused messages\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import { m } from \"./paraglide/messages.js\"\n\t\t\t\t\tconsole.log(m.sad_penguin_bundle())`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\n\t\t\t\t// all required code for the message to be rendered is included like sourceLanguageTag.\n\t\t\t\t// but, all other messages except of 'sad_penguin_bundle' are tree-shaken away.\n\t\t\t\tfor (const { id } of mockBundles) {\n\t\t\t\t\tif (id === \"sad_penguin_bundle\") {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"should not treeshake messages that are used\", async () => {\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`import * as m from \"./paraglide/messages.js\"\n\t\t\n\t\t\tconsole.log(\n\t\t\t\tm.sad_penguin_bundle(),\n\t\t\t\tm.depressed_dog({ name: \"Samuel\" }),\n\t\t\t\tm.insane_cats({ name: \"Samuel\", count: 5 })\n\t\t\t)`\n\t\t\t\t);\n\t\t\t\tconst log = vi.spyOn(console, \"log\").mockImplementation(() => {});\n\t\t\t\tfor (const id of mockBundles.map((m) => m.id)) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t[\"sad_penguin_bundle\", \"depressed_dog\", \"insane_cats\"].includes(id)\n\t\t\t\t\t) {\n\t\t\t\t\t\texpect(code).toContain(id);\n\t\t\t\t\t} else {\n\t\t\t\t\t\texpect(code).not.toContain(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\teval(code);\n\t\t\t\texpect(log).toHaveBeenCalledWith(\n\t\t\t\t\t\"A simple message.\",\n\t\t\t\t\t\"Good morning Samuel!\",\n\t\t\t\t\t\"Hello Samuel! You have 5 messages.\"\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// https://github.com/opral/inlang-paraglide-js/issues/379\n\t\ttest(\"plurals work\", async () => {\n\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\", \"de\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"plural_test\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"countPlural\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", value: \"one\", key: \"countPlural\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There is one cat.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: \"other\",\n\t\t\t\t\t\t\t\t\t\t\tkey: \"countPlural\",\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"There are many cats.\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(\n\t\t\t\t\tawait compileProject({\n\t\t\t\t\t\tproject,\n\t\t\t\t\t\tcompilerOptions,\n\t\t\t\t\t}),\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"`\n\t\t\t\t)\n\t\t\t);\n\n\t\t\texpect(m.plural_test({ count: 1 })).toBe(\"There is one cat.\");\n\t\t\texpect(m.plural_test({ count: 2 })).toBe(\"There are many cats.\");\n\t\t});\n\n\t\tdescribe(\"e2e\", async () => {\n\t\t\t// The compiled output needs to be bundled into one file to be dynamically imported.\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t export * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t);\n\n\t\t\t// test is a direct result of a bug\n\t\t\ttest(\"locales should include locales with a hyphen\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.locales).toContain(\"en-US\");\n\t\t\t});\n\n\t\t\ttest(\"should set the baseLocale as default getLocale value\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\texpect(runtime.getLocale()).toBe(runtime.baseLocale);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message for the current locale\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tconsole.log(m);\n\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteGetLocale() works\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteGetLocale(() => locale);\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"A simple message.\");\n\n\t\t\t\tlocale = \"de\";\n\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t});\n\n\t\t\ttest(\"overwriteSetLocale() works\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tlet locale = \"en\";\n\n\t\t\t\truntime.overwriteSetLocale((newLocale: any) => {\n\t\t\t\t\tlocale = newLocale;\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(locale).toBe(\"de\");\n\t\t\t});\n\n\t\t\ttest.skip(\"defining onSetLocale should be possible and should be called when the locale changes\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tconst mockOnSetLocale = vi.fn().mockImplementation(() => {});\n\t\t\t\truntime.onSetLocale((locale: any) => {\n\t\t\t\t\tmockOnSetLocale(locale);\n\t\t\t\t});\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"de\");\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenLastCalledWith(\"en\");\n\n\t\t\t\texpect(mockOnSetLocale).toHaveBeenCalledTimes(2);\n\t\t\t});\n\n\t\t\ttest.skip(\"Calling onSetLocale() multiple times should override the previous callback\", async () => {\n\t\t\t\tconst cb1 = vi.fn().mockImplementation(() => {});\n\t\t\t\tconst cb2 = vi.fn().mockImplementation(() => {});\n\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\truntime.onSetLocale(cb1);\n\t\t\t\truntime.setLocale(\"en\");\n\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\n\t\t\t\truntime.onSetLocale(cb2);\n\t\t\t\truntime.setLocale(\"de\");\n\n\t\t\t\texpect(cb2).toHaveBeenCalledTimes(1);\n\t\t\t\texpect(cb1).toHaveBeenCalledTimes(1);\n\t\t\t});\n\n\t\t\ttest(\"should return the correct message if a locale is set in the message options\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\t// set the language tag to de to make sure that the message options override the runtime language tag\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.sad_penguin_bundle()).toBe(\"Eine einfache Nachricht.\");\n\t\t\t\texpect(m.sad_penguin_bundle(undefined, { locale: \"en\" })).toBe(\n\t\t\t\t\t\"A simple message.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with literal units and locale overrides\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_literal({ duration: -1 })).toBe(\n\t\t\t\t\t\"Updated gestern.\"\n\t\t\t\t);\n\t\t\t\texpect(\n\t\t\t\t\tm.relative_time_literal({ duration: -1 }, { locale: \"en\" })\n\t\t\t\t).toBe(\"Updated yesterday.\");\n\t\t\t});\n\n\t\t\ttest(\"relativetime formatter works with dynamic units\", async () => {\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: -3, unit: \"hour\" })).toBe(\n\t\t\t\t\t\"Updated 3 hr. ago.\"\n\t\t\t\t);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.relative_time_dynamic({ duration: 2, unit: \"weeks\" })).toBe(\n\t\t\t\t\t\"Updated in 2 Wochen.\"\n\t\t\t\t);\n\t\t\t});\n\n\t\t\ttest(\"runtime.isLocale should only return `true` if a locale is passed to it\", async () => {\n\t\t\t\tconst { runtime } = await importCode(code);\n\n\t\t\t\tfor (const tag of runtime.locales) {\n\t\t\t\t\texpect(runtime.isLocale(tag)).toBe(true);\n\t\t\t\t}\n\n\t\t\t\texpect(runtime.isLocale(\"\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"pl\")).toBe(false);\n\t\t\t\texpect(runtime.isLocale(\"--\")).toBe(false);\n\t\t\t});\n\n\t\t\ttest(\"falls back to base locale\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"de\", \"en-US\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"missingInGerman\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"de\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missingInGerman()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers work\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"de\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"$502.23-hello_world\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"$502.23-hello_world\"]()).toBe(\"A simple message.\");\n\t\t\t});\n\n\t\t\ttest(\"falls back to parent locale if message doesn't exist\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\", \"en-US\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"exists_in_both\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"A simple message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en-US\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: \"A simple message for Americans.\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"missing_in_en_US\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Fallback message.\" }] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m, runtime } = await importCode(code);\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.exists_in_both()).toBe(\"A simple message for Americans.\");\n\n\t\t\t\truntime.setLocale(\"en-US\");\n\t\t\t\texpect(m.missing_in_en_US()).toBe(\"Fallback message.\");\n\t\t\t});\n\n\t\t\ttest(\"arbitrary module identifiers\", async () => {\n\t\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t\t}),\n\t\t\t\t});\n\n\t\t\t\tawait insertBundleNested(\n\t\t\t\t\tproject.db,\n\t\t\t\t\tcreateBundleNested({\n\t\t\t\t\t\tid: \"happy🍌\",\n\t\t\t\t\t\tmessages: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\n\t\t\t\tconst code = await bundleCode(\n\t\t\t\t\toutput,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\t\texport * as runtime from \"./paraglide/runtime.js\"`\n\t\t\t\t);\n\t\t\t\tconst { m } = await importCode(code);\n\n\t\t\t\texpect(m[\"happy🍌\"]()).toBe(\"Hello\");\n\t\t\t});\n\t\t});\n\n\t\ttest(\"relativetime dynamic unit casts generated options without narrowing public inputs\", () => {\n\t\t\tconst relativeTimeDynamicFile =\n\t\t\t\tcompilerOptions.outputStructure === \"locale-modules\"\n\t\t\t\t\t? \"messages/en.js\"\n\t\t\t\t\t: \"messages/relative_time_dynamic.js\";\n\n\t\t\texpect(output).toHaveProperty(relativeTimeDynamicFile);\n\t\t\tconst relativeTimeDynamicModule = output[relativeTimeDynamicFile]!;\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t'unit: /** @type {import(\"../registry.js\").RelativeTimeFormatUnit} */ (i?.unit)'\n\t\t\t);\n\t\t\texpect(relativeTimeDynamicModule).toContain(\n\t\t\t\t\"{ duration: NonNullable<unknown>, unit: NonNullable<unknown> }\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"case sensitivity handling for bundle IDs\", async () => {\n\t\t\tconst project = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\t// Create two bundles with the same name but different case\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"Helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from uppercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tproject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"helloworld\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello from lowercase bundle\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst code = await bundleCode(\n\t\t\t\toutput,\n\t\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\t\texport { helloworld, Helloworld } from \"./paraglide/messages.js\"`\n\t\t\t);\n\n\t\t\tconst imported = await importCode(code);\n\n\t\t\t// Both message functions should be available\n\t\t\texpect(imported.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\n\t\t\t// They should also be available through the m namespace\n\t\t\texpect(imported.m.helloworld()).toBe(\"Hello from lowercase bundle\");\n\t\t\texpect(imported.m.Helloworld()).toBe(\"Hello from uppercase bundle\");\n\t\t});\n\n\t\t// whatever the strictest users use, this is the ultimate nothing gets stricter than this\n\t\t// (to avoid developers opening issues \"i get a ts warning in my code\")\n\t\tconst superStrictRuleOutAnyErrorTsSettings: ProjectOptions[\"compilerOptions\"] =\n\t\t\t{\n\t\t\t\toutDir: \"dist\",\n\t\t\t\tdeclaration: true,\n\t\t\t\tallowJs: true,\n\t\t\t\tcheckJs: true,\n\t\t\t\tnoImplicitAny: true,\n\t\t\t\tnoUnusedLocals: true,\n\t\t\t\tnoUnusedParameters: true,\n\t\t\t\tnoImplicitReturns: true,\n\t\t\t\tnoImplicitThis: true,\n\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\tstrict: true,\n\t\t\t};\n\n\t\ttest(\"./messages.js types\", async () => {\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n import * as m from \"./messages.js\"\n\n // --------- MESSAGES ---------\n\n // the return value of a message should be a string\n m.insane_cats({ name: \"John\", count: 5 }) satisfies string\n \n // @ts-expect-error - missing all params\n m.insane_cats()\n \n // @ts-expect-error - one param missing\n m.insane_cats({ name: \"John\" })\n\n // a message without params shouldn't require params\n m.sad_penguin_bundle() satisfies string\n\n // dynamic relativetime unit inputs stay consistent with other formatter inputs\n m.relative_time_literal({ duration: -1 }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"hour\" }) satisfies string\n m.relative_time_dynamic({ duration: -3, unit: \"not-a-relative-time-unit\" }) satisfies string\n\n\t\t// --------- MATCH TYPE INFERENCE ---------\n\t\t// known match values should be accepted\n\t\tm.auth_password_error({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error({ type: \"empty\" }) satisfies string\n\t\tm.auth_password_error({ type: \"min_length\" }) satisfies string\n\t\tm.auth_password_error({ type: \"secure\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value\n\t\tm.auth_password_error({ type: \"typo\" })\n\n\t\t// quoted keys should still get literal unions\n\t\tm.error_with_dash({ \"error-type\": \"network\" }) satisfies string\n\t\tm.error_with_dash({ \"error-type\": \"timeout\" }) satisfies string\n\n\t\t// @ts-expect-error - unknown match value for quoted key\n\t\tm.error_with_dash({ \"error-type\": \"offline\" })\n\n\t\t// catchall should widen match value typing\n\t\tm.auth_password_error_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.auth_password_error_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// multiple match keys should each get literal unions\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"ready\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"empty\", status: \"done\" }) satisfies string\n\t\tm.multi_key_status_type({ type: \"secure\", status: \"failed\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid type literal\n\t\tm.multi_key_status_type({ type: \"typo\", status: \"ready\" })\n\n\t\t// @ts-expect-error - invalid status literal\n\t\tm.multi_key_status_type({ type: \"invalid\", status: \"pending\" })\n\n\t\t// numeric matches should accept both number and string forms\n\t\tm.numeric_input_match({ input: 1 }) satisfies string\n\t\tm.numeric_input_match({ input: 2 }) satisfies string\n\t\tm.numeric_input_match({ input: \"1\" }) satisfies string\n\t\tm.numeric_input_match({ input: \"2\" }) satisfies string\n\n\t\t// @ts-expect-error - invalid numeric literal\n\t\tm.numeric_input_match({ input: 3 })\n\n\t\t// @ts-expect-error - invalid string literal\n\t\tm.numeric_input_match({ input: \"3\" })\n\n\t\t// @ts-expect-error - no loose boolean coercion\n\t\tm.numeric_input_match({ input: true })\n\n\t\t// empty matches should widen to NonNullable<unknown>\n\t\tm.empty_matches_catchall({ type: \"invalid\" }) satisfies string\n\t\tm.empty_matches_catchall({ type: \"typo\" }) satisfies string\n\n\t\t// --------- MESSAGE OPTIONS ---------\n\t\t// the locale option should be optional\n\t\tm.sad_penguin_bundle({}, {}) satisfies string\n\n\t\t// the locale option should be allowed\n\t\tm.sad_penguin_bundle({}, { locale: \"en\" }) satisfies string\n\n\t\t// the locale option must be a valid language tag\n\t\t// @ts-expect-error - invalid language tag\n\t\tm.sad_penguin_bundle({}, { locale: \"---\" })\n `\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\t// async_hooks is a node module that is not available in the browser\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"./messages.js types (single locale should not emit TS6133)\", async () => {\n\t\t\tconst singleLocaleProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tsingleLocaleProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"single_locale_message\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst singleLocaleOutput = await compileProject({\n\t\t\t\tproject: singleLocaleProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst project = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(singleLocaleOutput)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\tproject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tproject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`import { single_locale_message } from \"./messages.js\"; single_locale_message();`\n\t\t\t);\n\n\t\t\tconst program = project.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tconst ts6133LocaleDiagnostics = diagnostics.filter((d) => {\n\t\t\t\treturn (\n\t\t\t\t\td.code === 6133 &&\n\t\t\t\t\td.messageText\n\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t.includes(\"'locale' is declared but its value is never read\")\n\t\t\t\t);\n\t\t\t});\n\n\t\t\texpect(ts6133LocaleDiagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#625: number formatter digit options should pass checkJs\", async () => {\n\t\t\tconst projectWithNumberOptions = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithNumberOptions.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"formatted_percentage\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"value\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"value\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"minimumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedValue\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"%\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithNumberOptions,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"#694: pattern-level annotations compile to registry calls and pass checkJs\", async () => {\n\t\t\tconst projectWithPatternAnnotation = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithPatternAnnotation.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"views\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"count\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"number\",\n\t\t\t\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: \"maximumFractionDigits\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"1\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \" views\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithPatternAnnotation,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\texpect(Object.values(output).join(\"\\n\")).toContain(\n\t\t\t\t'registry.number(\"en\", i?.count, { maximumFractionDigits: 1 }, true)'\n\t\t\t);\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"relativetime formatter options should pass checkJs\", async () => {\n\t\t\tconst projectWithRelativeTimeOptions = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tbaseLocale: \"en\",\n\t\t\t\t\t\tlocales: [\"en\"],\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tawait insertBundleNested(\n\t\t\t\tprojectWithRelativeTimeOptions.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"formatted_relative_time\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"duration\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"input-variable\",\n\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tname: \"style\",\n\t\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: \"short\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: projectWithRelativeTimeOptions,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t});\n\n\t\ttest(\"ICU exact number aliases select numerically and pass checkJs\", async () => {\n\t\t\tconst icuProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"fr\"] },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tconst countPluralExact = (value?: string) =>\n\t\t\t\tvalue === undefined\n\t\t\t\t\t? ({ type: \"catchall-match\", key: \"countPluralExact\" } as const)\n\t\t\t\t\t: ({\n\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\tkey: \"countPluralExact\",\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t} as const);\n\t\t\tconst countPlural = (value?: string) =>\n\t\t\t\tvalue === undefined\n\t\t\t\t\t? ({ type: \"catchall-match\", key: \"countPlural\" } as const)\n\t\t\t\t\t: ({ type: \"literal-match\", key: \"countPlural\", value } as const);\n\t\t\tconst withCount = (suffix: string) => [\n\t\t\t\t{\n\t\t\t\t\ttype: \"expression\" as const,\n\t\t\t\t\targ: { type: \"variable-reference\" as const, name: \"count\" },\n\t\t\t\t},\n\t\t\t\t{ type: \"text\" as const, value: suffix },\n\t\t\t];\n\n\t\t\t// the shape the ICU1 plugin imports {count, plural, =0 {…} one {…} other {…}} as\n\t\t\tawait insertBundleNested(\n\t\t\t\ticuProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"item_count\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralExact\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(\"0\"), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"No items\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural(\"one\")],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" item\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" items\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"variable-reference\", name: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t// an editor appends the exact variant last\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural(\"one\")],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" élément\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: withCount(\" éléments\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [countPluralExact(\"0\"), countPlural()],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Aucun élément\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// en narrows `status` by a direct match, fr matches through an alias\n\t\t\t// with a catchall, so any status is accepted\n\t\t\tawait insertBundleNested(\n\t\t\t\ticuProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"status_message\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"status\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"statusExact\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"status\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"status\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"active\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t// reads statusExact: unused bundle locals fail noUnusedLocals\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Active: \" },\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"statusExact\" },\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [{ type: \"variable-reference\", name: \"statusExact\" }],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"statusExact\", value: \"0\" },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Zéro\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"statusExact\" }],\n\t\t\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Autre\" }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: icuProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsProject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n\t\t\t\timport * as m from \"./messages.js\"\n\n\t\t\t\tm.item_count({ count: 0 }) satisfies string\n\t\t\t\tm.item_count({ count: \"0\" }) satisfies string\n\t\t\t\tm.status_message({ status: \"active\" }) satisfies string\n\t\t\t\tm.status_message({ status: \"inactive\" }) satisfies string\n\t\t\t\t`\n\t\t\t);\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\tconst render = (locale: string) =>\n\t\t\t\t[0, 1, 2, 5, 21, \"0\"].map((count) =>\n\t\t\t\t\tm.item_count({ count }, { locale })\n\t\t\t\t);\n\n\t\t\texpect(render(\"en\")).toEqual([\n\t\t\t\t\"No items\",\n\t\t\t\t\"1 item\",\n\t\t\t\t\"2 items\",\n\t\t\t\t\"5 items\",\n\t\t\t\t\"21 items\",\n\t\t\t\t\"No items\",\n\t\t\t]);\n\t\t\texpect(render(\"fr\")).toEqual([\n\t\t\t\t\"Aucun élément\",\n\t\t\t\t\"1 élément\",\n\t\t\t\t\"2 éléments\",\n\t\t\t\t\"5 éléments\",\n\t\t\t\t\"21 éléments\",\n\t\t\t\t\"Aucun élément\",\n\t\t\t]);\n\t\t\texpect(m.status_message({ status: \"inactive\" }, { locale: \"fr\" })).toBe(\n\t\t\t\t\"Autre\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"emits only the locals a locale reads, in dependency order, and supports plural offsets under checkJs\", async () => {\n\t\t\tconst localsProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"fr\"] },\n\t\t\t\t}),\n\t\t\t});\n\n\t\t\tconst ref = (name: string) =>\n\t\t\t\t({ type: \"variable-reference\", name }) as const;\n\t\t\tconst literal = (key: string, value: string) =>\n\t\t\t\t({ type: \"literal-match\", key, value }) as const;\n\t\t\tconst catchall = (key: string) =>\n\t\t\t\t({ type: \"catchall-match\", key }) as const;\n\t\t\tconst text = (value: string) => [{ type: \"text\" as const, value }];\n\n\t\t\t// en never reads statusExact, fr only reads it\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"status_label\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"status\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"statusExact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"status\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"status\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"status\", \"active\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Active\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"status\")], pattern: text(\"Other\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [ref(\"statusExact\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"statusExact\", \"0\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Zéro\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"statusExact\")], pattern: text(\"Autre\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// the shape the ICU1 plugin imports\n\t\t\t// {count, plural, offset:1 =0 {…} =1 {…} one {…} other {…}} as\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"guest_list\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{ name: \"offset\", value: { type: \"literal\", value: \"1\" } },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1Exact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"0\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Nobody\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"1\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Only you\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1\", \"one\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"You and one other\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: text(\"You and others\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// fr does not translate the exact cases: countPluralOffset1Exact\n\t\t\t\t\t\t\t// is not read\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPluralOffset1\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPluralOffset1\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Vous et un autre\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPluralOffset1\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"Vous et d'autres\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// fr reads no variable at all\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"greeting_label\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"name\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"nameValue\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"name\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello \" },\n\t\t\t\t\t\t\t\t\t\t{ type: \"expression\", arg: ref(\"nameValue\") },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"fr\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [{ matches: [], pattern: text(\"Bonjour\") }],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\t// a local declared before the local it reads\n\t\t\tawait insertBundleNested(\n\t\t\t\tlocalsProject.db,\n\t\t\t\tcreateBundleNested({\n\t\t\t\t\tid: \"reordered_locals\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"countValue\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countValue\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: text(\"one\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ matches: [catchall(\"countPlural\")], pattern: text(\"other\") },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t})\n\t\t\t);\n\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: localsProject,\n\t\t\t\tcompilerOptions,\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\ttsProject.createSourceFile(\n\t\t\t\t\"test.ts\",\n\t\t\t\t`\n\t\t\t\timport * as m from \"./messages.js\"\n\n\t\t\t\tm.status_label({ status: \"active\" }) satisfies string\n\t\t\t\tm.guest_list({ count: 0 }) satisfies string\n\t\t\t\tm.reordered_locals({ count: 1 }) satisfies string\n\t\t\t\tm.greeting_label({ name: \"Ada\" }) satisfies string\n\t\t\t\t`\n\t\t\t);\n\n\t\t\tconst program = tsProject.createProgram();\n\t\t\tconst diagnostics = ts.getPreEmitDiagnostics(program).filter((d) => {\n\t\t\t\treturn !d.messageText\n\t\t\t\t\t.toString()\n\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\");\n\t\t\t});\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\n\t\t\texpect(\n\t\t\t\t[\"active\", \"inactive\"].map((status) =>\n\t\t\t\t\tm.status_label({ status }, { locale: \"en\" })\n\t\t\t\t)\n\t\t\t).toEqual([\"Active\", \"Other\"]);\n\t\t\texpect(\n\t\t\t\t[0, \"0\", 1].map((status) =>\n\t\t\t\t\tm.status_label({ status }, { locale: \"fr\" })\n\t\t\t\t)\n\t\t\t).toEqual([\"Zéro\", \"Zéro\", \"Autre\"]);\n\n\t\t\tconst guests = (locale: string) =>\n\t\t\t\t[0, 1, 2, 3, 22, \"1\", \"2\"].map((count) =>\n\t\t\t\t\tm.guest_list({ count }, { locale })\n\t\t\t\t);\n\t\t\texpect(guests(\"en\")).toEqual([\n\t\t\t\t\"Nobody\",\n\t\t\t\t\"Only you\",\n\t\t\t\t\"You and one other\",\n\t\t\t\t\"You and others\",\n\t\t\t\t\"You and others\",\n\t\t\t\t\"Only you\",\n\t\t\t\t\"You and one other\",\n\t\t\t]);\n\t\t\t// French \"one\" covers 0 and 1 (and -1 for 0 guests), so 1 and 2 guests\n\t\t\t// (0 and 1 others) select \"one\"\n\t\t\texpect(guests(\"fr\")).toEqual([\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et d'autres\",\n\t\t\t\t\"Vous et d'autres\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t\t\"Vous et un autre\",\n\t\t\t]);\n\n\t\t\texpect(\n\t\t\t\t[1, 2].map((count) => m.reordered_locals({ count }, { locale: \"en\" }))\n\t\t\t).toEqual([\"one\", \"other\"]);\n\t\t\texpect(m.greeting_label({ name: \"Ada\" }, { locale: \"en\" })).toBe(\n\t\t\t\t\"Hello Ada\"\n\t\t\t);\n\t\t\texpect(m.greeting_label({ name: \"Ada\" }, { locale: \"fr\" })).toBe(\n\t\t\t\t\"Bonjour\"\n\t\t\t);\n\t\t});\n\n\t\ttest(\"imports the registry only where a message calls it, and formats ICU # with offset under checkJs\", async () => {\n\t\t\tconst compileChecked = async (\n\t\t\t\tbundles: Parameters<typeof createBundleNested>[0][]\n\t\t\t) => {\n\t\t\t\tconst icuProject = await loadProjectInMemory({\n\t\t\t\t\tblob: await newProject({\n\t\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t\t\t\t}),\n\t\t\t\t});\n\t\t\t\tfor (const bundle of bundles) {\n\t\t\t\t\tawait insertBundleNested(icuProject.db, createBundleNested(bundle));\n\t\t\t\t}\n\t\t\t\tconst output = await compileProject({\n\t\t\t\t\tproject: icuProject,\n\t\t\t\t\tcompilerOptions,\n\t\t\t\t});\n\t\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\t\tcompilerOptions: superStrictRuleOutAnyErrorTsSettings,\n\t\t\t\t});\n\t\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst diagnostics = ts\n\t\t\t\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t\t\t\t.filter(\n\t\t\t\t\t\t(d) =>\n\t\t\t\t\t\t\t!d.messageText\n\t\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\")\n\t\t\t\t\t);\n\t\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t\t}\n\t\t\t\texpect(diagnostics.length).toEqual(0);\n\t\t\t\treturn output;\n\t\t\t};\n\n\t\t\tconst ref = (name: string) =>\n\t\t\t\t({ type: \"variable-reference\", name }) as const;\n\t\t\tconst literal = (key: string, value: string) =>\n\t\t\t\t({ type: \"literal-match\", key, value }) as const;\n\t\t\tconst catchall = (key: string) =>\n\t\t\t\t({ type: \"catchall-match\", key }) as const;\n\t\t\tconst text = (value: string) => ({ type: \"text\" as const, value });\n\t\t\tconst pound = (offset?: string): Pattern[number] => ({\n\t\t\t\ttype: \"expression\",\n\t\t\t\targ: ref(\"count\"),\n\t\t\t\tannotation: {\n\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\toptions:\n\t\t\t\t\t\toffset === undefined\n\t\t\t\t\t\t\t? []\n\t\t\t\t\t\t\t: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: \"offset\",\n\t\t\t\t\t\t\t\t\t\tvalue: { type: \"literal\", value: offset },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\t// message text that contains \"registry.\" must not import the registry\n\t\t\tconst textOnly = await compileChecked([\n\t\t\t\t{\n\t\t\t\t\tid: \"registry_text\",\n\t\t\t\t\tdeclarations: [],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{ matches: [], pattern: [text(\"Open the registry. Now.\")] },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"Öffne die registry. Jetzt.\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t// an unknown formatter on a local interpolates the raw value\n\t\t\t\t{\n\t\t\t\t\tid: \"custom_local\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"amount\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"formatted\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"amount\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"customLocalFormatter\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\ttext(\"Total: \"),\n\t\t\t\t\t\t\t\t\t\t{ type: \"expression\", arg: ref(\"formatted\") },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t]);\n\t\t\tfor (const [fileName, code] of Object.entries(textOnly)) {\n\t\t\t\tif (fileName.startsWith(\"messages/\")) {\n\t\t\t\t\texpect(code).not.toContain(\"import * as registry\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst { m: textMessages } = await importCode(\n\t\t\t\tawait bundleCode(\n\t\t\t\t\ttextOnly,\n\t\t\t\t\t`export * as m from \"./paraglide/messages.js\"`\n\t\t\t\t)\n\t\t\t);\n\t\t\texpect(textMessages.registry_text({}, { locale: \"en\" })).toBe(\n\t\t\t\t\"Open the registry. Now.\"\n\t\t\t);\n\t\t\texpect(\n\t\t\t\ttextMessages.custom_local({ amount: 1234 }, { locale: \"en\" })\n\t\t\t).toBe(\"Total: 1234\");\n\n\t\t\t// {count, plural, offset:1 =0 {Nobody} =1 {You} one {You and # other} other {You and # others}}\n\t\t\t// as the ICU1 plugin imports it, and `#` without an offset\n\t\t\tconst output = await compileChecked([\n\t\t\t\t{\n\t\t\t\t\tid: \"guest_count\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{ name: \"offset\", value: { type: \"literal\", value: \"1\" } },\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPluralOffset1Exact\",\n\t\t\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\tref(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"0\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"Nobody\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1Exact\", \"1\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tliteral(\"countPluralOffset1\", \"one\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You and \"), pound(\"1\"), text(\" other\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1Exact\"),\n\t\t\t\t\t\t\t\t\t\tcatchall(\"countPluralOffset1\"),\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"You and \"), pound(\"1\"), text(\" others\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"item_total\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" item\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" items\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"de\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" Artikel\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [pound(), text(\" Artikel\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tid: \"variable_offset\",\n\t\t\t\t\tdeclarations: [\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t\t\t{ type: \"input-variable\", name: \"off\" },\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\t\t\toptions: [{ name: \"offset\", value: ref(\"off\") }],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tselectors: [ref(\"countPlural\")],\n\t\t\t\t\t\t\tvariants: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [literal(\"countPlural\", \"one\")],\n\t\t\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t\t\ttext(\"one: \"),\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\t\t\t\t\t\t\t\toptions: [{ name: \"offset\", value: ref(\"off\") }],\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tmatches: [catchall(\"countPlural\")],\n\t\t\t\t\t\t\t\t\tpattern: [text(\"other\")],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t]);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\t// offsets from variables type-check and are converted with Number()\n\t\t\texpect(m.variable_offset({ count: 3, off: 2 }, { locale: \"en\" })).toBe(\n\t\t\t\t\"one: 1\"\n\t\t\t);\n\t\t\texpect(m.variable_offset({ count: 3, off: \"2\" }, { locale: \"en\" })).toBe(\n\t\t\t\t\"one: 1\"\n\t\t\t);\n\t\t\texpect(\n\t\t\t\t[0, 1, 2, 3, 1234].map((count) =>\n\t\t\t\t\tm.guest_count({ count }, { locale: \"en\" })\n\t\t\t\t)\n\t\t\t).toEqual([\n\t\t\t\t\"Nobody\",\n\t\t\t\t\"You\",\n\t\t\t\t\"You and 1 other\",\n\t\t\t\t\"You and 2 others\",\n\t\t\t\t\"You and 1,233 others\",\n\t\t\t]);\n\t\t\texpect(\n\t\t\t\t[1, 2, 1234].map((count) => m.item_total({ count }, { locale: \"en\" }))\n\t\t\t).toEqual([\"1 item\", \"2 items\", \"1,234 items\"]);\n\t\t\texpect(m.item_total({ count: 1234 }, { locale: \"de\" })).toBe(\n\t\t\t\t\"1.234 Artikel\"\n\t\t\t);\n\t\t});\n\t}\n);\n\ndescribe.each([\n\t{ outputStructure: \"locale-modules\" },\n\t{ outputStructure: \"message-modules\" },\n] as const)(\n\t\"markup messages with fallbacks ($outputStructure)\",\n\t({ outputStructure }) => {\n\t\ttest(\".parts() type-checks under strict checkJs and renders\", async () => {\n\t\t\tconst markupProject = await loadProjectInMemory({\n\t\t\t\tblob: await newProject({\n\t\t\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t\t\t}),\n\t\t\t});\n\t\t\tconst bold = (value: string) => [\n\t\t\t\t{ type: \"markup-start\" as const, name: \"b\" },\n\t\t\t\t{ type: \"text\" as const, value },\n\t\t\t\t{ type: \"markup-end\" as const, name: \"b\" },\n\t\t\t];\n\t\t\tconst bundles: Parameters<typeof createBundleNested>[0][] = [\n\t\t\t\t// de falls back to en\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_fallback\",\n\t\t\t\t\tmessages: [{ locale: \"en\", variants: [{ pattern: bold(\"Hello\") }] }],\n\t\t\t\t},\n\t\t\t\t// en has no markup, de has\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_mixed\",\n\t\t\t\t\tmessages: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ locale: \"de\", variants: [{ pattern: bold(\"Hallo\") }] },\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t// en (the base locale) has no message and no fallback\n\t\t\t\t{\n\t\t\t\t\tid: \"markup_missing_base\",\n\t\t\t\t\tmessages: [{ locale: \"de\", variants: [{ pattern: bold(\"Hallo\") }] }],\n\t\t\t\t},\n\t\t\t];\n\t\t\tfor (const bundle of bundles) {\n\t\t\t\tawait insertBundleNested(markupProject.db, createBundleNested(bundle));\n\t\t\t}\n\t\t\tconst output = await compileProject({\n\t\t\t\tproject: markupProject,\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\toutputStructure,\n\t\t\t\t\tstrategy: [\"globalVariable\", \"baseLocale\"],\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst tsProject = await typescriptProject({\n\t\t\t\tuseInMemoryFileSystem: true,\n\t\t\t\tcompilerOptions: {\n\t\t\t\t\toutDir: \"dist\",\n\t\t\t\t\tdeclaration: true,\n\t\t\t\t\tallowJs: true,\n\t\t\t\t\tcheckJs: true,\n\t\t\t\t\tnoImplicitAny: true,\n\t\t\t\t\tnoUnusedLocals: true,\n\t\t\t\t\tnoUnusedParameters: true,\n\t\t\t\t\tnoImplicitReturns: true,\n\t\t\t\t\tnoImplicitThis: true,\n\t\t\t\t\tnoUncheckedIndexedAccess: true,\n\t\t\t\t\tnoPropertyAccessFromIndexSignature: true,\n\t\t\t\t\tmodule: ts.ModuleKind.Node16,\n\t\t\t\t\tstrict: true,\n\t\t\t\t},\n\t\t\t});\n\t\t\tfor (const [fileName, code] of Object.entries(output)) {\n\t\t\t\tif (fileName.endsWith(\".js\") || fileName.endsWith(\".ts\")) {\n\t\t\t\t\ttsProject.createSourceFile(fileName, code);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst diagnostics = ts\n\t\t\t\t.getPreEmitDiagnostics(tsProject.createProgram())\n\t\t\t\t.filter(\n\t\t\t\t\t(d) =>\n\t\t\t\t\t\t!d.messageText\n\t\t\t\t\t\t\t.toString()\n\t\t\t\t\t\t\t.includes(\"Cannot find module 'async_hooks'\")\n\t\t\t\t);\n\t\t\tfor (const diagnostic of diagnostics) {\n\t\t\t\tconsole.error(diagnostic.messageText, diagnostic.file?.fileName);\n\t\t\t}\n\t\t\texpect(diagnostics.length).toEqual(0);\n\n\t\t\tconst { m } = await importCode(\n\t\t\t\tawait bundleCode(output, `export * as m from \"./paraglide/messages.js\"`)\n\t\t\t);\n\t\t\tconst boldParts = (value: string) => [\n\t\t\t\t{ type: \"markup-start\", name: \"b\", options: {}, attributes: {} },\n\t\t\t\t{ type: \"text\", value },\n\t\t\t\t{ type: \"markup-end\", name: \"b\", options: {}, attributes: {} },\n\t\t\t];\n\t\t\texpect(m.markup_fallback.parts({}, { locale: \"de\" })).toEqual(\n\t\t\t\tboldParts(\"Hello\")\n\t\t\t);\n\t\t\texpect(m.markup_mixed.parts({}, { locale: \"en\" })).toEqual([\n\t\t\t\t{ type: \"text\", value: \"Hello\" },\n\t\t\t]);\n\t\t\texpect(m.markup_mixed.parts({}, { locale: \"de\" })).toEqual(\n\t\t\t\tboldParts(\"Hallo\")\n\t\t\t);\n\t\t\texpect(m.markup_missing_base.parts({}, { locale: \"en\" })).toEqual([\n\t\t\t\t{ type: \"text\", value: \"markup_missing_base\" },\n\t\t\t]);\n\t\t});\n\t}\n);\n\ntest(\"messages injected by the middleware in experimentalMiddlewareLocaleSplitting mode can call the registry\", async () => {\n\tconst splitProject = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { baseLocale: \"en\", locales: [\"en\", \"de\"] },\n\t\t}),\n\t});\n\tconst ref = (name: string) => ({ type: \"variable-reference\", name }) as const;\n\t// {count, plural, =0 {No items} other {# items}} as the ICU1 plugin imports it\n\tawait insertBundleNested(\n\t\tsplitProject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"item_count\",\n\t\t\tdeclarations: [\n\t\t\t\t{ type: \"input-variable\", name: \"count\" },\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"countPluralExact\",\n\t\t\t\t\tvalue: { type: \"expression\", arg: ref(\"count\") },\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttype: \"local-variable\",\n\t\t\t\t\tname: \"countPlural\",\n\t\t\t\t\tvalue: {\n\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\tname: \"plural\",\n\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tselectors: [ref(\"countPluralExact\"), ref(\"countPlural\")],\n\t\t\t\t\tvariants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"countPluralExact\", value: \"0\" },\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"No items\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPluralExact\" },\n\t\t\t\t\t\t\t\t{ type: \"catchall-match\", key: \"countPlural\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\t\targ: ref(\"count\"),\n\t\t\t\t\t\t\t\t\tannotation: {\n\t\t\t\t\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\t\t\t\t\tname: \"icu:pound\",\n\t\t\t\t\t\t\t\t\t\toptions: [],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{ type: \"text\", value: \" items\" },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\tawait insertBundleNested(\n\t\tsplitProject.db,\n\t\tcreateBundleNested({\n\t\t\tid: \"plain_text\",\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\tlocale: \"en\",\n\t\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"Hello\" }] }],\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t);\n\n\tconst output = await compileProject({\n\t\tproject: splitProject,\n\t\tcompilerOptions: {\n\t\t\tstrategy: [\"baseLocale\"],\n\t\t\texperimentalMiddlewareLocaleSplitting: true,\n\t\t\tdisableAsyncLocalStorage: true,\n\t\t},\n\t});\n\tconst { m, paraglideMiddleware } = await importCode(\n\t\tawait bundleCode(\n\t\t\toutput,\n\t\t\t`export * as m from \"./paraglide/messages.js\"\n\t\t\texport { paraglideMiddleware } from \"./paraglide/server.js\"`\n\t\t)\n\t);\n\n\tconst render = async (messages: (m: any) => string) => {\n\t\tconst response: Response = await paraglideMiddleware(\n\t\t\tnew Request(\"https://example.com/\", {\n\t\t\t\theaders: { \"Sec-Fetch-Dest\": \"document\" },\n\t\t\t}),\n\t\t\t() =>\n\t\t\t\tnew Response(`<html><head></head><body>${messages(m)}</body></html>`, {\n\t\t\t\t\theaders: { \"Content-Type\": \"text/html\" },\n\t\t\t\t})\n\t\t);\n\t\tconst html = await response.text();\n\t\tconst script = html.match(/<script[^>]*>([\\s\\S]*?)<\\/script>/)?.[1];\n\t\texpect(script).toBeDefined();\n\t\t// the client evaluates the script without registry.js\n\t\tconst context: Record<string, any> = {};\n\t\tvm.runInNewContext(script!, context);\n\t\treturn { html, ssr: context.__paraglide.ssr };\n\t};\n\n\tconst withRegistry = await render((m) => m.item_count({ count: 5 }));\n\texpect(withRegistry.html).toContain(\"<body>5 items</body>\");\n\texpect(withRegistry.ssr.item_count({ count: 5 })).toBe(\"5 items\");\n\texpect(withRegistry.ssr.item_count({ count: 1234 })).toBe(\"1,234 items\");\n\texpect(withRegistry.ssr.item_count({ count: 0 })).toBe(\"No items\");\n\n\t// messages that don't call the registry get no registry code\n\tconst withoutRegistry = await render((m) => m.plain_text());\n\texpect(withoutRegistry.ssr.plain_text()).toBe(\"Hello\");\n\texpect(withoutRegistry.html).not.toContain(\"const registry\");\n});\n\nasync function bundleCode(output: Record<string, string>, file: string) {\n\toutput[\"runtime.js\"] = output[\"runtime.js\"]!.replace(\n\t\t'import \"@inlang/paraglide-js/urlpattern-polyfill\";',\n\t\t\"/** @type {any} */const URLPattern = {};\"\n\t).replace(\n\t\t'const { AsyncLocalStorage } = await import(\"async_hooks\");',\n\t\t\"const AsyncLocalStorage = class {};\"\n\t);\n\n\tconst bundle = await rolldown({\n\t\tinput: [\"main.js\"],\n\t\tplugins: [\n\t\t\t// @ts-expect-error - rollup types are not up to date\n\t\t\tvirtual({\n\t\t\t\t...Object.fromEntries(\n\t\t\t\t\tObject.entries(output).map(([fileName, code]) => [\n\t\t\t\t\t\t\"paraglide/\" + fileName,\n\t\t\t\t\t\tcode,\n\t\t\t\t\t])\n\t\t\t\t),\n\t\t\t\t\"main.js\": file,\n\t\t\t}),\n\t\t],\n\t});\n\tconst compiled = await bundle.generate({ format: \"esm\" });\n\tconst code = compiled.output[0].code;\n\treturn code;\n}\n\nasync function importCode(code: string) {\n\t// The random comment ensures that each code is a unique module\n\t// and state is not shared between imports\n\tconst randomComment = `// ${Math.random()}`;\n\tconst codeWithComment = `${randomComment}\\n${code}`;\n\treturn await import(\n\t\t`data:application/javascript;base64,${Buffer.from(codeWithComment, \"utf8\").toString(\"base64\")}`\n\t);\n}\n\nconst project = await loadProjectInMemory({\n\tblob: await newProject({\n\t\tsettings: {\n\t\t\tbaseLocale: \"en\",\n\t\t\tlocales: [\"en\", \"de\", \"en-US\"],\n\t\t},\n\t}),\n});\n\nconst mockBundles: BundleNested[] = [\n\tcreateBundleNested({\n\t\tid: \"sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [{ pattern: [{ type: \"text\", value: \"A simple message.\" }] }],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Eine einfache Nachricht.\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"Sad_penguin_bundle\",\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{ pattern: [{ type: \"text\", value: \"Capital Sad penguin\" }] },\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Grossgeschriebenes Sad penguin\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"depressed_dog\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_en\",\n\t\t\t\tbundle_id: \"depressed_dog\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_en_variant_one\",\n\t\t\t\t\t\tmessage_id: \"depressed_dog_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Good morning \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"depressed_dog_de\",\n\t\t\t\tbundle_id: \"depressed_dog\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"depressed_dog_de_variant_one\",\n\t\t\t\t\t\tmessage_id: \"depressed_dog_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Guten Morgen \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"!\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"insane_cats\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"name\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"count\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"insane_cats_en\",\n\t\t\t\tbundle_id: \"insane_cats\",\n\t\t\t\tlocale: \"en\",\n\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_en_variant_one\",\n\t\t\t\t\t\tmessage_id: \"insane_cats_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hello \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! You have \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" messages.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"insane_cats_de\",\n\t\t\t\tbundle_id: \"insane_cats\",\n\t\t\t\tlocale: \"de\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"insane_cats_de_variant_one\",\n\t\t\t\t\t\tmessage_id: \"insane_cats_de\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Hallo \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"name\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \"! Du hast \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: { type: \"variable-reference\", name: \"count\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \" Nachrichten.\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\tcreateBundleNested({\n\t\tid: \"relative_time_literal\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{ name: \"unit\", value: { type: \"literal\", value: \"day\" } },\n\t\t\t\t\t\t\t{ name: \"numeric\", value: { type: \"literal\", value: \"auto\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\tcreateBundleNested({\n\t\tid: \"relative_time_dynamic\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"duration\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"unit\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"local-variable\",\n\t\t\t\tname: \"formattedDuration\",\n\t\t\t\tvalue: {\n\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\targ: { type: \"variable-reference\", name: \"duration\" },\n\t\t\t\t\tannotation: {\n\t\t\t\t\t\ttype: \"function-reference\",\n\t\t\t\t\t\tname: \"relativetime\",\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: \"unit\",\n\t\t\t\t\t\t\t\tvalue: { type: \"variable-reference\", name: \"unit\" },\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ name: \"style\", value: { type: \"literal\", value: \"short\" } },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tlocale: \"en\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t{\n\t\t\t\tlocale: \"de\",\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{ type: \"text\", value: \"Updated \" },\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"expression\",\n\t\t\t\t\t\t\t\targ: {\n\t\t\t\t\t\t\t\t\ttype: \"variable-reference\",\n\t\t\t\t\t\t\t\t\tname: \"formattedDuration\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{ type: \"text\", value: \".\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t}),\n\t{\n\t\tid: \"auth_password_error\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_en\",\n\t\t\t\tbundle_id: \"auth_password_error\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_empty\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"empty\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"You must provide a password\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_min\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"type\",\n\t\t\t\t\t\t\t\tvalue: \"min_length\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_en_variant_secure\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"secure\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Your password is not secure enough\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"error_with_dash\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"error-type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"error_with_dash_en\",\n\t\t\t\tbundle_id: \"error_with_dash\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_network\",\n\t\t\t\t\t\tmessage_id: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"error-type\", value: \"network\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Network error\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"error_with_dash_en_variant_timeout\",\n\t\t\t\t\t\tmessage_id: \"error_with_dash_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"literal-match\",\n\t\t\t\t\t\t\t\tkey: \"error-type\",\n\t\t\t\t\t\t\t\tvalue: \"timeout\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Timeout error\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"auth_password_error_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"auth_password_error_catchall_en\",\n\t\t\t\tbundle_id: \"auth_password_error_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"The password provided is not valid\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"auth_password_error_catchall_en_variant_catchall\",\n\t\t\t\t\t\tmessage_id: \"auth_password_error_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"catchall-match\", key: \"type\" }],\n\t\t\t\t\t\tpattern: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\t\tvalue: \"Unknown password error\",\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"multi_key_status_type\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"status\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"multi_key_status_type_en\",\n\t\t\t\tbundle_id: \"multi_key_status_type\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_ready_invalid\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"invalid\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"ready\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Ready invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_done_empty\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"empty\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"done\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Done empty\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"multi_key_status_type_en_variant_failed_secure\",\n\t\t\t\t\t\tmessage_id: \"multi_key_status_type_en\",\n\t\t\t\t\t\tmatches: [\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"type\", value: \"secure\" },\n\t\t\t\t\t\t\t{ type: \"literal-match\", key: \"status\", value: \"failed\" },\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Failed secure\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"empty_matches_catchall\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"type\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"empty_matches_catchall_en\",\n\t\t\t\tbundle_id: \"empty_matches_catchall\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_invalid\",\n\t\t\t\t\t\tmessage_id: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"type\", value: \"invalid\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Invalid\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"empty_matches_catchall_en_variant_any\",\n\t\t\t\t\t\tmessage_id: \"empty_matches_catchall_en\",\n\t\t\t\t\t\tmatches: [],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Any\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"numeric_input_match\",\n\t\tdeclarations: [\n\t\t\t{\n\t\t\t\ttype: \"input-variable\",\n\t\t\t\tname: \"input\",\n\t\t\t},\n\t\t],\n\t\tmessages: [\n\t\t\t{\n\t\t\t\tid: \"numeric_input_match_en\",\n\t\t\t\tbundle_id: \"numeric_input_match\",\n\t\t\t\tlocale: \"en\",\n\t\t\t\tselectors: [],\n\t\t\t\tvariants: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_1\",\n\t\t\t\t\t\tmessage_id: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"1\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 1\" }],\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: \"numeric_input_match_en_variant_2\",\n\t\t\t\t\t\tmessage_id: \"numeric_input_match_en\",\n\t\t\t\t\t\tmatches: [{ type: \"literal-match\", key: \"input\", value: \"2\" }],\n\t\t\t\t\t\tpattern: [{ type: \"text\", value: \"Thing 2\" }],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t},\n];\n\nfor (const bundle of mockBundles) {\n\tawait insertBundleNested(project.db, bundle);\n}\n\nfunction createBundleNested(args: {\n\tid: string;\n\tdeclarations?: Declaration[];\n\tmessages: {\n\t\tselectors?: VariableReference[];\n\t\tlocale: string;\n\t\tvariants: {\n\t\t\tmatches?: Match[];\n\t\t\tpattern: Pattern;\n\t\t}[];\n\t}[];\n}): BundleNested {\n\treturn {\n\t\tid: args.id,\n\t\tdeclarations: args.declarations ?? [],\n\t\tmessages: args.messages.map((message) => ({\n\t\t\tid: args.id + \"_\" + message.locale,\n\t\t\tbundle_id: args.id,\n\t\t\tlocale: message.locale,\n\t\t\tselectors: message.selectors ?? [],\n\t\t\tvariants: message.variants.map((variant) => ({\n\t\t\t\tid:\n\t\t\t\t\targs.id +\n\t\t\t\t\t\"_\" +\n\t\t\t\t\tmessage.locale +\n\t\t\t\t\t\"_\" +\n\t\t\t\t\tMath.random().toString(36).slice(2),\n\t\t\t\tmessage_id: args.id,\n\t\t\t\tmatches: variant.matches ?? [],\n\t\t\t\tpattern: variant.pattern,\n\t\t\t})),\n\t\t})),\n\t};\n}\n\ntest(\"emitReadme only claims the output is git-ignored when a .gitignore is emitted\", async () => {\n\tconst project = await loadProjectInMemory({\n\t\tblob: await newProject({\n\t\t\tsettings: { locales: [\"en\"], baseLocale: \"en\" },\n\t\t}),\n\t});\n\n\tconst withGitignore = await compileProject({ project });\n\tconst withoutGitignore = await compileProject({\n\t\tproject,\n\t\tcompilerOptions: { emitGitIgnore: false },\n\t});\n\n\texpect(withGitignore[\"README.md\"]).toContain(\"git-ignored\");\n\texpect(withoutGitignore).not.toHaveProperty(\".gitignore\");\n\texpect(withoutGitignore[\"README.md\"]).not.toContain(\"git-ignored\");\n});\n"]}