@prisma/orm-framework 8.0.0-rc.15-dev.2 → 8.0.0-rc.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/{authoring-CcT010vl.d.mts → authoring-DZ6xCFkL.d.mts} +2 -2
  2. package/dist/{authoring-CcT010vl.d.mts.map → authoring-DZ6xCFkL.d.mts.map} +1 -1
  3. package/dist/authoring-DcJL9g8s.mjs +352 -0
  4. package/dist/authoring-DcJL9g8s.mjs.map +1 -0
  5. package/dist/{binder-Dz5zT7tr-Dc_RkyB2.d.mts → binder-CfxKD8hm-CtG0Bs3W.d.mts} +30 -13
  6. package/dist/binder-CfxKD8hm-CtG0Bs3W.d.mts.map +1 -0
  7. package/dist/codec-U-xbQys_.mjs.map +1 -1
  8. package/dist/{components-CK8GHz8l.d.mts → components-DFGmVWZ7.d.mts} +2 -2
  9. package/dist/{components-CK8GHz8l.d.mts.map → components-DFGmVWZ7.d.mts.map} +1 -1
  10. package/dist/components.d.mts +8 -8
  11. package/dist/components.mjs +7 -6
  12. package/dist/components__authoring.d.mts +3 -3
  13. package/dist/components__authoring.mjs +3 -3
  14. package/dist/components__codec.mjs +2 -1
  15. package/dist/components__components.d.mts +2 -2
  16. package/dist/components__control.d.mts +3 -3
  17. package/dist/components__control.mjs +2 -2
  18. package/dist/components__execution.d.mts +1 -1
  19. package/dist/{config-types-D-P60plU.d.mts → config-types-CHO5rbVo.d.mts} +10 -8
  20. package/dist/config-types-CHO5rbVo.d.mts.map +1 -0
  21. package/dist/config.d.mts +1 -1
  22. package/dist/config__config-types.d.mts +1 -1
  23. package/dist/contract-authoring.d.mts +1 -1
  24. package/dist/contract-authoring.mjs +1 -1
  25. package/dist/{control-BIv_-3QB.mjs → control-DZJQzwlC.mjs} +8 -4
  26. package/dist/control-DZJQzwlC.mjs.map +1 -0
  27. package/dist/{control-C1x8zzHb.d.mts → control-_4dB7KvO.d.mts} +7 -7
  28. package/dist/{control-C1x8zzHb.d.mts.map → control-_4dB7KvO.d.mts.map} +1 -1
  29. package/dist/{resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs → data-type-4xQlxYB5-DD158cOq.mjs} +3 -70
  30. package/dist/data-type-4xQlxYB5-DD158cOq.mjs.map +1 -0
  31. package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs → declarations-5xLxC310-R3-Z4vcK.mjs} +6 -6
  32. package/dist/{declarations-DDT0hm5r-BZoOKiu1.mjs.map → declarations-5xLxC310-R3-Z4vcK.mjs.map} +1 -1
  33. package/dist/errors.d.mts +1 -1
  34. package/dist/errors__execution.d.mts +1 -1
  35. package/dist/{execution-gjfB1CvH.d.mts → execution-CYxp6gvp.d.mts} +2 -2
  36. package/dist/{execution-gjfB1CvH.d.mts.map → execution-CYxp6gvp.d.mts.map} +1 -1
  37. package/dist/{execution-o-z5gzZh.d.mts → execution-Utsq8aY6.d.mts} +2 -2
  38. package/dist/{execution-o-z5gzZh.d.mts.map → execution-Utsq8aY6.d.mts.map} +1 -1
  39. package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts → framework-components-BY_7sg-B-ChOD-ovL.d.mts} +3 -3
  40. package/dist/{framework-components-DDr6lZoZ-EpXYrZj7.d.mts.map → framework-components-BY_7sg-B-ChOD-ovL.d.mts.map} +1 -1
  41. package/dist/{mutation-default-types-D_M8NC3U-BQNexfRU.d.mts → mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts} +4 -10
  42. package/dist/mutation-default-types-CMx8Y9zx-yQN8l2GU.d.mts.map +1 -0
  43. package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs → parse-Cjjj1-m4-Coaz3UzQ.mjs} +3 -3
  44. package/dist/{parse-ymgXJUnk-CwVCe8ZD.mjs.map → parse-Cjjj1-m4-Coaz3UzQ.mjs.map} +1 -1
  45. package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts → parse-GXhoypXR-CeQ_TuEg.d.mts} +7 -7
  46. package/dist/{parse-eSQ_clQv-YWR_NQoq.d.mts.map → parse-GXhoypXR-CeQ_TuEg.d.mts.map} +1 -1
  47. package/dist/psl-parser.d.mts +36 -7
  48. package/dist/psl-parser.d.mts.map +1 -1
  49. package/dist/psl-parser.mjs +161 -18
  50. package/dist/psl-parser.mjs.map +1 -1
  51. package/dist/psl-parser__format.d.mts +1 -1
  52. package/dist/psl-parser__format.mjs +2 -2
  53. package/dist/psl-parser__format.mjs.map +1 -1
  54. package/dist/psl-parser__interpret.d.mts +4 -4
  55. package/dist/psl-parser__interpret.mjs +1 -1
  56. package/dist/psl-parser__syntax.d.mts +1 -1
  57. package/dist/psl-parser__syntax.mjs +2 -2
  58. package/dist/psl-parser__syntax.mjs.map +1 -1
  59. package/dist/psl-printer.d.mts +1 -1
  60. package/dist/psl-printer.mjs +1 -1
  61. package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs +74 -0
  62. package/dist/resolve-codec-qqMjZrmn-Cok8elAo.mjs.map +1 -0
  63. package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs → temporal-presets-DUCEijgt-CODhqGVy.mjs} +20 -11
  64. package/dist/{temporal-presets-DIo9uYtS-Odk6WBk8.mjs.map → temporal-presets-DUCEijgt-CODhqGVy.mjs.map} +1 -1
  65. package/dist/utils.d.mts +1 -1
  66. package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts +278 -0
  67. package/dist/written-value-BB9UYfrg-OiFCVcz2.d.mts.map +1 -0
  68. package/package.json +15 -15
  69. package/dist/authoring-iMWszF7p.mjs +0 -157
  70. package/dist/authoring-iMWszF7p.mjs.map +0 -1
  71. package/dist/binder-Dz5zT7tr-Dc_RkyB2.d.mts.map +0 -1
  72. package/dist/config-types-D-P60plU.d.mts.map +0 -1
  73. package/dist/control-BIv_-3QB.mjs.map +0 -1
  74. package/dist/mutation-default-types-D_M8NC3U-BQNexfRU.d.mts.map +0 -1
  75. package/dist/resolve-codec-vOfdHcIJ-IeNjz3Tm.mjs.map +0 -1
  76. package/dist/temporal-presets-CLsu00ZK-CAx-cLAM.d.mts +0 -160
  77. package/dist/temporal-presets-CLsu00ZK-CAx-cLAM.d.mts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"psl-parser.mjs","names":["#registry","#records","#namespace","#declarations","#references","#documentScope","#scopes","#base"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/symbol-table-C1ATzvmU.mjs","../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, x as PathExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, n as nodePslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/attribute-spec/assemble.ts\nfunction* modelAttributeDescriptors(namespace) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringModelAttributeDescriptor(value)) {\n\t\t\tyield value;\n\t\t\tcontinue;\n\t\t}\n\t\tyield* modelAttributeDescriptors(value);\n\t}\n}\nfunction assembleAttributeSpecs(contributions) {\n\tconst entries = Object.entries(contributions.attributeSpecs.model);\n\tconst claimed = new Set(entries.map(([attribute]) => attribute));\n\tfor (const descriptor of modelAttributeDescriptors(contributions.modelAttributes)) {\n\t\tif (claimed.has(descriptor.attribute)) throw new InternalError(`Duplicate attribute spec registration for \"${descriptor.attribute}\". Each model attribute name may be registered once across family built-ins and model-attribute descriptors.`);\n\t\tclaimed.add(descriptor.attribute);\n\t\tentries.push([descriptor.attribute, descriptor.spec]);\n\t}\n\treturn Object.freeze(blindCast({\n\t\tmodel: Object.freeze(Object.fromEntries(entries)),\n\t\tfield: Object.freeze({ ...contributions.attributeSpecs.field })\n\t}));\n}\nfunction resolveDescribeUnsupportedAttribute(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnsupportedAttribute === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnsupportedAttribute);\n}\nfunction resolveDescribeUnresolvedType(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnresolvedType === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnresolvedType);\n}\n//#endregion\n//#region src/entity-reference.ts\nfunction writtenEntityReference(node) {\n\tconst name = IdentifierAst.cast(node)?.name();\n\tif (name !== void 0) return {\n\t\tnamespace: void 0,\n\t\tname\n\t};\n\tconst path = PathExprAst.cast(node)?.path();\n\tif (path === void 0 || path.length !== 2) return void 0;\n\tconst [namespace, member] = path;\n\treturn namespace === void 0 || member === void 0 ? void 0 : {\n\t\tnamespace,\n\t\tname: member\n\t};\n}\nfunction describeWrittenEntityReference(reference) {\n\treturn reference.namespace === void 0 ? reference.name : `${reference.namespace}.${reference.name}`;\n}\nconst references = /* @__PURE__ */ new WeakMap();\nfunction entityReference(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\":\n\t\tcase \"compositeType\":\n\t\tcase \"namedType\":\n\t\tcase \"block\": return interned(resolution.symbol, resolution.namespace);\n\t\tdefault: return;\n\t}\n}\nfunction interned(declaration, namespace) {\n\tconst existing = references.get(declaration);\n\tif (existing !== void 0) return existing;\n\tconst reference = {\n\t\tdeclaration,\n\t\tnamespace\n\t};\n\treferences.set(declaration, reference);\n\treturn reference;\n}\nfunction matchesSelector(reference, expected) {\n\tconst declaration = reference.declaration;\n\tif (declaration.kind !== expected.kind) return false;\n\treturn expected.kind !== \"block\" || declaration.kind === \"block\" && declaration.keyword === expected.keyword;\n}\nfunction describeResolution(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"block\": return resolution.symbol.keyword;\n\t\tcase \"contributedType\": return \"scalar type\";\n\t\tcase \"crossSpace\": return \"cross-space reference\";\n\t\tcase \"unresolved\": return \"unresolved name\";\n\t\tdefault: return resolution.kind;\n\t}\n}\n//#endregion\n//#region src/block-spec/descriptor.ts\nfunction blockSpecFactoryOf(descriptor) {\n\treturn blindCast(descriptor.spec);\n}\n//#endregion\n//#region src/contributed-type-scope.ts\nfunction isContributedTypeDescriptor(value) {\n\treturn \"kind\" in value && (value.kind === \"typeConstructor\" || value.kind === \"fieldPreset\");\n}\nfunction mergeContributedTypes(...namespaces) {\n\tconst merged = {};\n\tfor (const namespace of namespaces) for (const [name, value] of Object.entries(namespace)) {\n\t\tconst existing = Object.hasOwn(merged, name) ? merged[name] : void 0;\n\t\tmerged[name] = existing !== void 0 && !isContributedTypeDescriptor(existing) && !isContributedTypeDescriptor(value) ? mergeContributedTypes(existing, value) : value;\n\t}\n\treturn merged;\n}\nfunction contributedTypeScope(contributedTypes) {\n\tconst members = collect(contributedTypes, []);\n\treturn {\n\t\tlookup(name) {\n\t\t\treturn members.get(name);\n\t\t},\n\t\tentries() {\n\t\t\treturn members.entries();\n\t\t}\n\t};\n}\nfunction collect(namespace, prefix) {\n\tconst members = /* @__PURE__ */ new Map();\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tconst path = [...prefix, name];\n\t\tmembers.set(name, isContributedTypeDescriptor(value) ? {\n\t\t\tkind: \"contributedType\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tdescriptor: value\n\t\t} : {\n\t\t\tkind: \"contributedNamespace\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tmembers: collect(value, path)\n\t\t});\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/extension-block.ts\nfunction findBlockDescriptor(descriptors, keyword) {\n\tif (descriptors === void 0) return void 0;\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (value === void 0) continue;\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tif (value.keyword === keyword) return value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst nested = findBlockDescriptor(value, keyword);\n\t\tif (nested !== void 0) return nested;\n\t}\n}\n//#endregion\n//#region src/scope.ts\nfunction* recordNames(...records) {\n\tfor (const record of records) yield* Object.keys(record);\n}\nvar Scope = class {\n\tparent;\n\tconstructor(parent) {\n\t\tthis.parent = parent;\n\t}\n\t*entries() {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const name of this.ownNames()) {\n\t\t\tif (seen.has(name)) continue;\n\t\t\tseen.add(name);\n\t\t\tconst resolution = this.lookup(name);\n\t\t\tif (resolution !== void 0) yield [name, resolution];\n\t\t}\n\t\tfor (const entry of this.parent?.entries() ?? []) if (!seen.has(entry[0])) yield entry;\n\t}\n};\nfunction contributedResolution(member) {\n\treturn member.kind === \"contributedType\" ? {\n\t\tkind: \"contributedType\",\n\t\tsymbol: member\n\t} : {\n\t\tkind: \"contributedNamespace\",\n\t\tsymbol: member\n\t};\n}\nfunction namespaceMember(namespace, name) {\n\tconst model = namespace.models[name];\n\tif (model !== void 0) return {\n\t\tkind: \"model\",\n\t\tsymbol: model,\n\t\tnamespace\n\t};\n\tconst compositeType = namespace.compositeTypes[name];\n\tif (compositeType !== void 0) return {\n\t\tkind: \"compositeType\",\n\t\tsymbol: compositeType,\n\t\tnamespace\n\t};\n\tconst block = namespace.blocks[name];\n\tif (block !== void 0) return {\n\t\tkind: \"block\",\n\t\tsymbol: block,\n\t\tnamespace\n\t};\n}\nvar ContributedScope = class extends Scope {\n\t#registry;\n\tconstructor(registry) {\n\t\tsuper(void 0);\n\t\tthis.#registry = registry;\n\t}\n\tlookup(name) {\n\t\tconst member = this.#registry.lookup(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\t*ownNames() {\n\t\tfor (const [name] of this.#registry.entries()) yield name;\n\t}\n};\nvar DocumentScope = class extends Scope {\n\t#records;\n\tconstructor(records, parent) {\n\t\tsuper(parent);\n\t\tthis.#records = records;\n\t}\n\tlookup(name) {\n\t\tconst records = this.#records;\n\t\tconst model = records.models[name];\n\t\tif (model !== void 0) return {\n\t\t\tkind: \"model\",\n\t\t\tsymbol: model\n\t\t};\n\t\tconst compositeType = records.compositeTypes[name];\n\t\tif (compositeType !== void 0) return {\n\t\t\tkind: \"compositeType\",\n\t\t\tsymbol: compositeType\n\t\t};\n\t\tconst namedType = records.namedTypes[name];\n\t\tif (namedType !== void 0) return {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol: namedType\n\t\t};\n\t\tconst block = records.blocks[name];\n\t\tif (block !== void 0) return {\n\t\t\tkind: \"block\",\n\t\t\tsymbol: block\n\t\t};\n\t\tconst namespace = records.namespaces[name];\n\t\tif (namespace !== void 0) return {\n\t\t\tkind: \"namespace\",\n\t\t\tsymbol: namespace\n\t\t};\n\t\treturn this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst records = this.#records;\n\t\treturn recordNames(records.models, records.compositeTypes, records.namedTypes, records.blocks, records.namespaces);\n\t}\n};\nvar NamespaceScope = class extends Scope {\n\t#namespace;\n\tconstructor(namespace, parent) {\n\t\tsuper(parent);\n\t\tthis.#namespace = namespace;\n\t}\n\tlookup(name) {\n\t\treturn namespaceMember(this.#namespace, name) ?? this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst namespace = this.#namespace;\n\t\treturn recordNames(namespace.models, namespace.compositeTypes, namespace.blocks);\n\t}\n};\nfunction contributedScope(registry) {\n\treturn new ContributedScope(registry);\n}\nfunction documentScope(records, parent) {\n\treturn new DocumentScope(records, parent);\n}\nfunction namedTypeBaseScope(records, parent) {\n\treturn new DocumentScope({\n\t\t...records,\n\t\tnamedTypes: {}\n\t}, parent);\n}\nfunction namespaceScope(namespace, parent) {\n\treturn new NamespaceScope(namespace, parent);\n}\nfunction isNamespaceLike(resolution) {\n\treturn resolution.kind === \"namespace\" || resolution.kind === \"contributedNamespace\";\n}\nfunction* memberEntries(qualifier) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tfor (const [name, member] of qualifier.symbol.members) yield [name, contributedResolution(member)];\n\t\treturn;\n\t}\n\tyield* new NamespaceScope(qualifier.symbol, void 0).entries();\n}\nfunction lookupMember(qualifier, name) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tconst member = qualifier.symbol.members.get(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\treturn namespaceMember(qualifier.symbol, name);\n}\n//#endregion\n//#region src/binder.ts\nconst PSL_UNRESOLVED_REFERENCE = \"PSL_UNRESOLVED_REFERENCE\";\nfunction typeReferenceNode(symbol) {\n\treturn symbol.node.typeAnnotation()?.name()?.syntax;\n}\nfunction contributedTypeOf(resolution, binder) {\n\tconst base = resolution?.kind === \"namedType\" ? typeReferenceNode(resolution.symbol) : void 0;\n\tconst target = base === void 0 ? resolution : binder.symbolForNode(base);\n\treturn target?.kind === \"contributedType\" ? target.symbol : void 0;\n}\nvar PslBinder = class {\n\t#declarations;\n\t#references;\n\t#documentScope;\n\t#scopes;\n\tconstructor(declarations, references, documentScope, scopes) {\n\t\tthis.#declarations = declarations;\n\t\tthis.#references = references;\n\t\tthis.#documentScope = documentScope;\n\t\tthis.#scopes = scopes;\n\t}\n\tdeclaredSymbol(node) {\n\t\treturn this.#declarations.get(node);\n\t}\n\tsymbolForNode(node) {\n\t\treturn this.#references.get(node);\n\t}\n\tscopeAt(node) {\n\t\treturn node.findAncestor((ancestor) => this.#scopes.get(ancestor)) ?? this.#documentScope;\n\t}\n};\nvar ScopeStack = class {\n\t#base;\n\t#scopes;\n\tconstructor(base) {\n\t\tthis.#base = base;\n\t\tthis.#scopes = [base];\n\t}\n\tcurrent() {\n\t\treturn this.#scopes[this.#scopes.length - 1] ?? this.#base;\n\t}\n\tpush(scope) {\n\t\tthis.#scopes.push(scope);\n\t}\n\tpop() {\n\t\tthis.#scopes.pop();\n\t}\n};\nfunction walkEntities(symbolTable, stack, binder, visit) {\n\tconst { topLevel } = symbolTable;\n\tfor (const entity of Object.values(topLevel.models)) visit(entity);\n\tfor (const entity of Object.values(topLevel.compositeTypes)) visit(entity);\n\tfor (const namespace of Object.values(topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tfor (const entity of Object.values(namespace.models)) visit(entity, namespace);\n\t\tfor (const entity of Object.values(namespace.compositeTypes)) visit(entity, namespace);\n\t\tstack.pop();\n\t}\n}\nfunction declarationResolution(entity, namespace) {\n\treturn entity.kind === \"model\" ? {\n\t\tkind: \"model\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t} : {\n\t\tkind: \"compositeType\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t};\n}\nfunction createBinder(input) {\n\tconst { symbolTable, sources, context } = input;\n\tconst contributions = context.authoringContributions;\n\tconst describeUnsupportedAttributeFactory = resolveDescribeUnsupportedAttribute(context.pslDiagnostics);\n\tconst describeUnresolvedTypeFactory = resolveDescribeUnresolvedType(context.pslDiagnostics);\n\treturn bind({\n\t\tsources,\n\t\tsymbolTable,\n\t\tcontributedTypes: mergeContributedTypes(contributions.field, contributions.type),\n\t\tattributeSpecs: assembleAttributeSpecs(contributions),\n\t\tpslBlockDescriptors: contributions.pslBlockDescriptors,\n\t\tcontrolMutationDefaults: {\n\t\t\tdefaultFunctionRegistry: context.controlMutationDefaults.defaultFunctionRegistry,\n\t\t\tdataTypeEntries: contributions.dataTypes\n\t\t},\n\t\t...describeUnsupportedAttributeFactory !== void 0 ? { describeUnsupportedAttribute: describeUnsupportedAttributeFactory(sources) } : {},\n\t\t...describeUnresolvedTypeFactory !== void 0 ? { describeUnresolvedType: describeUnresolvedTypeFactory(contributions) } : {}\n\t});\n}\nfunction bind(options) {\n\tconst { sources, symbolTable, contributedTypes, attributeSpecs, controlMutationDefaults, describeUnsupportedAttribute, describeUnresolvedType } = options;\n\tconst pslBlockDescriptors = options.pslBlockDescriptors ?? {};\n\tconst contributed = contributedScope(contributedTypeScope(contributedTypes));\n\tconst document = documentScope(symbolTable.topLevel, contributed);\n\tconst stack = new ScopeStack(document);\n\tconst scopes = /* @__PURE__ */ new WeakMap();\n\tconst declarations = /* @__PURE__ */ new WeakMap();\n\tconst references = /* @__PURE__ */ new WeakMap();\n\tconst diagnostics = [];\n\tconst binder = new PslBinder(declarations, references, document, scopes);\n\tconst baseScope = namedTypeBaseScope(symbolTable.topLevel, contributed);\n\tfor (const symbol of Object.values(symbolTable.topLevel.namedTypes)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol\n\t\t});\n\t\tconst name = symbol.node.typeAnnotation()?.name();\n\t\tconst outcome = resolveTypeReference(name, baseScope, references);\n\t\tif (name === void 0 || outcome === void 0) continue;\n\t\treferences.set(name.syntax, outcome.resolution);\n\t}\n\tfor (const symbol of Object.values(symbolTable.topLevel.blocks)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"block\",\n\t\t\tsymbol\n\t\t});\n\t}\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst scope = namespaceScope(namespace, document);\n\t\tfor (const declaration of namespace.declarations) {\n\t\t\tdeclarations.set(declaration.node.syntax, namespace);\n\t\t\tscopes.set(declaration.node.syntax, scope);\n\t\t\tconst declaredName = declaration.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"namespace\",\n\t\t\t\tsymbol: namespace\n\t\t\t});\n\t\t}\n\t\tfor (const symbol of Object.values(namespace.blocks)) {\n\t\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"block\",\n\t\t\t\tsymbol,\n\t\t\t\tnamespace\n\t\t\t});\n\t\t}\n\t}\n\twalkEntities(symbolTable, stack, binder, (entity, namespace) => {\n\t\tdeclarations.set(entity.node.syntax, entity);\n\t\tconst declaredName = entity.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, declarationResolution(entity, namespace));\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tdeclarations.set(field.node.syntax, field);\n\t\t\tconst fieldName = field.node.name()?.syntax;\n\t\t\tif (fieldName !== void 0) references.set(fieldName, {\n\t\t\t\tkind: \"field\",\n\t\t\t\tsymbol: field\n\t\t\t});\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tif (node === void 0) continue;\n\t\t\tconst name = field.node.typeAnnotation()?.name();\n\t\t\tconst outcome = resolveTypeReference(name, stack.current(), references, (written) => describeUnresolvedType?.({\n\t\t\t\tfield,\n\t\t\t\towner: entity,\n\t\t\t\twritten\n\t\t\t}));\n\t\t\tif (outcome === void 0) continue;\n\t\t\treferences.set(node, outcome.resolution);\n\t\t\tif (outcome.message !== void 0) diagnostics.push({\n\t\t\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\t\t\tmessage: outcome.message,\n\t\t\t\tdata: {\n\t\t\t\t\treference: \"type\",\n\t\t\t\t\tname: outcome.name,\n\t\t\t\t\tconstructorCall: field.typeConstructor !== void 0\n\t\t\t\t},\n\t\t\t\t...diagnosticSource(sources, node).at()\n\t\t\t});\n\t\t}\n\t});\n\twalkEntities(symbolTable, stack, binder, (entity) => {\n\t\tconst context = {\n\t\t\towner: entity,\n\t\t\tscope: stack.current(),\n\t\t\treferences,\n\t\t\tdiagnostics,\n\t\t\tsymbolTable,\n\t\t\tsources,\n\t\t\tdescribeUnsupportedAttribute\n\t\t};\n\t\tconst specContext = entity.kind === \"model\" ? {\n\t\t\tsymbols: symbolTable,\n\t\t\tmodel: entity,\n\t\t\tcontrolMutationDefaults\n\t\t} : void 0;\n\t\tbindAttributes(entity, entity.attributes, attributeSpecs.model, (factory) => specContext === void 0 ? void 0 : factory(specContext), {\n\t\t\t...context,\n\t\t\tfield: void 0\n\t\t});\n\t\tfor (const field of Object.values(entity.fields)) bindAttributes(field, field.attributes, attributeSpecs.field, (factory) => {\n\t\t\tif (specContext === void 0) return void 0;\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tconst typeResolution = node === void 0 ? void 0 : references.get(node);\n\t\t\treturn factory({\n\t\t\t\t...specContext,\n\t\t\t\tfield,\n\t\t\t\ttypeResolution\n\t\t\t});\n\t\t}, {\n\t\t\t...context,\n\t\t\tfield\n\t\t});\n\t});\n\tconst blockContext = {\n\t\tpslBlockDescriptors,\n\t\tsymbolTable,\n\t\tsources,\n\t\treferences,\n\t\tdiagnostics\n\t};\n\tconst bindBlocks = (blocks) => {\n\t\tconst context = {\n\t\t\t...blockContext,\n\t\t\tscope: stack.current()\n\t\t};\n\t\tfor (const block of Object.values(blocks)) bindBlock(block, context);\n\t};\n\tbindBlocks(symbolTable.topLevel.blocks);\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tbindBlocks(namespace.blocks);\n\t\tstack.pop();\n\t}\n\treturn {\n\t\tbinder,\n\t\tdiagnostics\n\t};\n}\nfunction bindBlock(block, ctx) {\n\tconst descriptor = findBlockDescriptor(ctx.pslBlockDescriptors, block.keyword);\n\tif (descriptor === void 0) return;\n\tconst spec = blockSpecFactoryOf(descriptor)({ symbols: ctx.symbolTable });\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst parameter = spec.mode === \"struct\" && Object.hasOwn(spec.parameters, key) ? spec.parameters[key] : void 0;\n\t\tconst rule = spec.mode === \"struct\" ? parameter?.type : spec.value.type;\n\t\tif (parameter !== void 0) {\n\t\t\tconst keyNode = entry.key()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: key,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst value = entry.value();\n\t\tif (rule === void 0 || value === void 0) continue;\n\t\tbindExpression(rule, value, ctx);\n\t}\n\tconst attributeSpecs = descriptor.attributes ?? {};\n\tif (Object.keys(attributeSpecs).length === 0) return;\n\tfor (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {\n\t\tconst factory = attributeSpecs[attribute.name];\n\t\tif (factory === void 0) continue;\n\t\tconst attributeSpec = blindCast(factory)({ symbols: ctx.symbolTable });\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel: \"block\",\n\t\t\tspec: attributeSpec\n\t\t};\n\t\tconst nameNode = attribute.node.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, attributeSpec, ctx);\n\t}\n}\nfunction bindExpression(rule, expression, ctx, modelContext) {\n\tconst trial = tryBindExpression(rule, expression, ctx, modelContext);\n\tfor (const [node, resolution] of trial.references) ctx.references.set(node, resolution);\n\tctx.diagnostics.push(...trial.diagnostics.values());\n}\nfunction tryBindExpression(rule, expression, ctx, modelContext) {\n\tconst references = /* @__PURE__ */ new Map();\n\tconst diagnostics = /* @__PURE__ */ new Map();\n\tswitch (rule.kind) {\n\t\tcase \"oneOf\":\n\t\t\tfor (const alternative of rule.alternatives) {\n\t\t\t\tconst trial = tryBindExpression(alternative, expression, ctx, modelContext);\n\t\t\t\tif (trial.matched) return trial;\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t\tfor (const [node, resolution] of trial.references) if (resolution.kind === \"unresolved\") references.set(node, resolution);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\tcase \"list\":\n\t\tcase \"record\": {\n\t\t\tconst children = rule.kind === \"list\" ? ArrayLiteralAst.cast(expression.syntax)?.elements() : recordValues(expression);\n\t\t\tif (children === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tlet matched = true;\n\t\t\tfor (const child of children) {\n\t\t\t\tconst trial = tryBindExpression(rule.of, child, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"funcCall\": {\n\t\t\tconst call = FunctionCallAst.cast(expression.syntax);\n\t\t\tconst name = call?.name();\n\t\t\tif (call === void 0 || name === void 0 || name.dot() !== void 0 || name.colon() !== void 0 || name.identifier()?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst functionSymbol = {\n\t\t\t\tkind: \"function\",\n\t\t\t\tname: rule.name,\n\t\t\t\tsignature: rule.signature\n\t\t\t};\n\t\t\treferences.set(name.syntax, {\n\t\t\t\tkind: \"function\",\n\t\t\t\tsymbol: functionSymbol\n\t\t\t});\n\t\t\tlet matched = true;\n\t\t\tlet positional = 0;\n\t\t\tfor (const arg of call.args()) {\n\t\t\t\tconst key = arg.name()?.name();\n\t\t\t\tconst parameter = argumentParameter(rule.signature, key, key === void 0 ? positional++ : positional);\n\t\t\t\tif (parameter === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (key !== void 0) {\n\t\t\t\t\tconst keyNode = arg.name()?.syntax;\n\t\t\t\t\tif (keyNode !== void 0) references.set(keyNode, {\n\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\tsymbol: {\n\t\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\tparam: parameter\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst value = arg.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst trial = tryBindExpression(parameter.type, value, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"identifier\": {\n\t\t\tif (rule.name === void 0) return {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst node = expression.syntax;\n\t\t\tif (IdentifierAst.cast(node)?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\treferences.set(node, {\n\t\t\t\tkind: \"constant\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"constant\",\n\t\t\t\t\tname: rule.name,\n\t\t\t\t\tdocumentation: rule.documentation\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"entityRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst written = writtenEntityReference(node);\n\t\t\tif (written === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveEntity(written, node, {\n\t\t\t\t...ctx,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"fieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveOwnerField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"referencedFieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveReferencedField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"str\":\n\t\tcase \"json\": return {\n\t\t\tmatched: StringLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"num\":\n\t\tcase \"int\": return {\n\t\t\tmatched: NumberLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"bool\": return {\n\t\t\tmatched: BooleanLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"null\": return {\n\t\t\tmatched: IdentifierAst.cast(expression.syntax)?.name() === \"null\",\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"taggedLiteral\": return {\n\t\t\tmatched: TaggedLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"rejecting\": return {\n\t\t\tmatched: false,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t}\n}\nfunction recordValues(expression) {\n\tconst record = ObjectLiteralExprAst.cast(expression.syntax);\n\tif (record === void 0) return void 0;\n\treturn (function* () {\n\t\tfor (const field of record.fields()) {\n\t\t\tconst value = field.value();\n\t\t\tif (value !== void 0) yield value;\n\t\t}\n\t})();\n}\nfunction bindAttributes(holder, attributes, specs, instantiate, ctx) {\n\tconst declared = holder.node.attributes();\n\tconst nodes = Array.from(declared);\n\tconst level = holder.kind === \"field\" ? \"field\" : \"model\";\n\tattributes.forEach((attribute, index) => {\n\t\tconst factory = own(specs, attribute.name);\n\t\tif (factory === void 0) {\n\t\t\tconst diagnostic = ctx.describeUnsupportedAttribute?.({\n\t\t\t\tattribute,\n\t\t\t\tlevel,\n\t\t\t\towner: ctx.owner,\n\t\t\t\tfield: level === \"field\" ? ctx.field : void 0\n\t\t\t});\n\t\t\tif (diagnostic !== void 0) ctx.diagnostics.push(diagnostic);\n\t\t\treturn;\n\t\t}\n\t\tconst spec = instantiate(factory);\n\t\tif (spec === void 0) return;\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel,\n\t\t\tspec\n\t\t};\n\t\tconst nameNode = nodes[index]?.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, spec, ctx, ctx);\n\t});\n}\nfunction bindArguments(attribute, spec, ctx, modelContext) {\n\tconst rawArgs = Array.from(attribute.node.argList()?.args() ?? []);\n\tlet positional = 0;\n\tattribute.args.forEach((arg, index) => {\n\t\tconst parameter = argumentParameter(spec, arg.name, arg.name === void 0 ? positional++ : positional);\n\t\tif (parameter === void 0) return;\n\t\tif (arg.name !== void 0) {\n\t\t\tconst keyNode = rawArgs[index]?.name()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: arg.name,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (arg.expression === void 0) return;\n\t\tbindExpression(parameter.type, arg.expression, ctx, modelContext);\n\t});\n}\nfunction argumentParameter(spec, name, position) {\n\tif (name === void 0) return spec.positional?.[position];\n\treturn spec.named === void 0 ? void 0 : own(spec.named, name);\n}\nfunction resolveOwnerField(name, node, ctx) {\n\tconst field = ctx.owner.fields[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on \"${ctx.owner.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction resolveReferencedField(name, node, ctx) {\n\tconst declaring = ctx.field;\n\tif (declaring === void 0) return {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n\tif (declaring.typeContractSpaceId !== void 0) return { kind: \"crossSpace\" };\n\tconst typeNode = typeReferenceNode(declaring);\n\tconst field = targetFields(typeNode === void 0 ? void 0 : ctx.references.get(typeNode))?.[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on the type of \"${ctx.owner.name}.${declaring.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction targetFields(target) {\n\tif (target === void 0) return void 0;\n\tif (target.kind === \"model\" || target.kind === \"compositeType\") return target.symbol.fields;\n}\nfunction resolveEntity(written, node, ctx) {\n\tconst found = written.namespace === void 0 ? ctx.scope.lookup(written.name) : qualifiedMember(written.namespace, written.name, bindQualifier(entityQualifier(node), ctx.scope, ctx.references));\n\tif (found === void 0) {\n\t\tconst name = describeWrittenEntityReference(written);\n\t\tif (written.name !== \"\") report(`Cannot find entity \"${name}\"`, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) {\n\t\treport(found.badQualifier, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t};\n\t}\n\treturn found;\n}\nfunction report(message, node, ctx, reference) {\n\tctx.diagnostics.push({\n\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\tmessage,\n\t\tdata: { reference },\n\t\t...diagnosticSource(ctx.sources, node).at()\n\t});\n}\nfunction entityQualifier(node) {\n\tconst path = PathExprAst.cast(node);\n\tif (path === void 0) return void 0;\n\tconst [qualifier] = path.segments();\n\treturn qualifier;\n}\nfunction bindQualifier(qualifier, scope, references) {\n\tconst id = qualifier?.name();\n\tif (qualifier === void 0 || id === void 0) return void 0;\n\tconst resolution = scope.lookup(id);\n\tif (resolution !== void 0 && isNamespaceLike(resolution)) references.set(qualifier.syntax, resolution);\n\treturn resolution;\n}\nfunction resolveTypeReference(reference, scope, references, describeUnresolved) {\n\tif (reference === void 0 || reference.isOverQualified()) return void 0;\n\tif (reference.space() !== void 0) return { resolution: { kind: \"crossSpace\" } };\n\tconst name = reference.identifier()?.name();\n\tif (name === void 0 || name === \"\") return void 0;\n\tconst qualifier = reference.namespace();\n\tconst namespaceId = qualifier?.name();\n\tconst found = namespaceId === void 0 ? scope.lookup(name) : qualifiedMember(namespaceId, name, bindQualifier(qualifier, scope, references));\n\tif (found === void 0) {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\tconst message = describeUnresolved?.(written) ?? `Cannot find type \"${written}\"`;\n\t\treturn {\n\t\t\tresolution: {\n\t\t\t\tkind: \"unresolved\",\n\t\t\t\tname: written\n\t\t\t},\n\t\t\tmessage,\n\t\t\tname: written\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) return {\n\t\tresolution: {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t},\n\t\tmessage: found.badQualifier,\n\t\tname: found.qualifier\n\t};\n\tif (found.kind === \"namespace\" || found.kind === \"contributedNamespace\") {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\treturn {\n\t\t\tresolution: found,\n\t\t\tmessage: `\"${written}\" is a namespace; a type reference must name a model, composite type, enum, or named type`,\n\t\t\tname: written\n\t\t};\n\t}\n\treturn { resolution: found };\n}\nfunction qualifiedMember(namespaceId, name, qualifier) {\n\tif (qualifier === void 0) return void 0;\n\tif (!isNamespaceLike(qualifier)) return {\n\t\tbadQualifier: `\"${namespaceId}\" is ${describeQualifier(qualifier)}, not a namespace`,\n\t\tqualifier: namespaceId\n\t};\n\treturn lookupMember(qualifier, name);\n}\nfunction describeQualifier(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\": return \"a model\";\n\t\tcase \"compositeType\": return \"a composite type\";\n\t\tcase \"namedType\": return \"a named type\";\n\t\tcase \"block\": return `${resolution.symbol.keyword === \"enum\" ? \"an\" : \"a\"} ${resolution.symbol.keyword}`;\n\t\tdefault: return \"a scalar type\";\n\t}\n}\nfunction own(record, name) {\n\treturn Object.hasOwn(record, name) ? record[name] : void 0;\n}\n//#endregion\n//#region src/symbol-table.ts\n/**\n* Owns duplicate-declaration detection for all PSL scopes; downstream consumers\n* should consume first-wins symbols rather than re-emitting duplicate diagnostics.\n*/\nfunction buildSymbolTable(options) {\n\tconst { documents, sources } = options;\n\tconst diagnostics = [];\n\tconst namespaces = Object.create(null);\n\tconst namedTypes = Object.create(null);\n\tconst blocks = Object.create(null);\n\tconst models = Object.create(null);\n\tconst compositeTypes = Object.create(null);\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tfor (const document of documents) {\n\t\tconst sourceFile = sources.sourceFileFor(document.syntax);\n\t\tconst claim = (taken, name) => {\n\t\t\tconst text = name?.name();\n\t\t\tif (text === void 0) return void 0;\n\t\t\tif (taken.has(text)) {\n\t\t\t\tconst range = nameRange(name, sources);\n\t\t\t\tif (range) diagnostics.push({\n\t\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\t\trange\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttaken.add(text);\n\t\t\treturn text;\n\t\t};\n\t\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sources);\n\t\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\t\tconst declaredName = declaration.name()?.name();\n\t\t\tif (declaredName === void 0) continue;\n\t\t\tlet namespace = namespaces[declaredName];\n\t\t\tif (namespace === void 0) {\n\t\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\t\tif (name === void 0) continue;\n\t\t\t\tnamespace = {\n\t\t\t\t\tkind: \"namespace\",\n\t\t\t\t\tname,\n\t\t\t\t\tdeclarations: [{\n\t\t\t\t\t\tnode: declaration,\n\t\t\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t\t\t}],\n\t\t\t\t\tmodels: Object.create(null),\n\t\t\t\t\tcompositeTypes: Object.create(null),\n\t\t\t\t\tblocks: Object.create(null)\n\t\t\t\t};\n\t\t\t\tnamespaces[name] = namespace;\n\t\t\t} else namespace.declarations.push({\n\t\t\t\tnode: declaration,\n\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t});\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources);\n\t\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\t\tconst name = claim(topLevelNames, binding.name());\n\t\t\tif (name === void 0) continue;\n\t\t\tconst resolved = resolveNamedTypeBinding(binding, sources);\n\t\t\tnamedTypes[name] = {\n\t\t\t\tkind: \"namedType\",\n\t\t\t\tname,\n\t\t\t\tnode: binding,\n\t\t\t\tspan: nodePslSpan(binding.syntax, sources),\n\t\t\t\t...resolved\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsymbolTable: { topLevel: {\n\t\t\tnamespaces,\n\t\t\tnamedTypes,\n\t\t\tblocks,\n\t\t\tmodels,\n\t\t\tcompositeTypes\n\t\t} },\n\t\tdiagnostics\n\t};\n}\nfunction buildModel(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildCompositeType(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildBlock(name, node, sources) {\n\treturn {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword: node.keyword()?.text ?? \"\",\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction extendNamespace(namespace, node, diagnostics, sources) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (Object.hasOwn(models, memberName) || Object.hasOwn(compositeTypes, memberName) || Object.hasOwn(blocks, memberName)) {\n\t\t\tconst range = nameRange(member.name(), sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${memberName}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(member.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources);\n\t}\n}\nfunction buildFields(ownerName, fields, sources, diagnostics) {\n\tconst result = Object.create(null);\n\tfor (const field of fields) {\n\t\tconst nameNode = field.name();\n\t\tconst name = nameNode?.name();\n\t\tif (name === void 0) continue;\n\t\tif (Object.hasOwn(result, name)) {\n\t\t\tconst range = nameRange(nameNode, sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${name}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(field.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sources, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sources, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sources);\n\tconst span = nodePslSpan(node.syntax, sources);\n\tconst annotation = node.typeAnnotation();\n\tconst typeName = annotation?.name();\n\tif (typeName?.isOverQualified()) {\n\t\tconst path = typeName.path();\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_INVALID_QUALIFIED_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${name}\" has an invalid qualified type \"${path.join(\".\")}\"; use at most one namespace qualifier (e.g. \"ns.TypeName\")`,\n\t\t\tfilename: sources.sourceFileFor(typeName.syntax).filename,\n\t\t\trange: nodeRange(typeName.syntax, sources)\n\t\t});\n\t\treturn {\n\t\t\tkind: \"field\",\n\t\t\tname,\n\t\t\tnode,\n\t\t\tspan,\n\t\t\ttypeName: path[path.length - 1] ?? \"\",\n\t\t\toptional: false,\n\t\t\tlist: false,\n\t\t\telementOptional: false,\n\t\t\tmalformedType: true,\n\t\t\tattributes\n\t\t};\n\t}\n\tconst typeConstructor = annotation?.isConstructor() ? readResolvedConstructorCall(annotation, sources) : void 0;\n\tconst typeNamespaceId = typeName?.namespace()?.name();\n\tconst typeContractSpaceId = typeName?.space()?.name();\n\treturn {\n\t\tkind: \"field\",\n\t\tname,\n\t\tnode,\n\t\tspan,\n\t\ttypeName: typeName?.identifier()?.name() ?? \"\",\n\t\t...typeNamespaceId !== void 0 ? { typeNamespaceId } : {},\n\t\t...typeContractSpaceId !== void 0 ? { typeContractSpaceId } : {},\n\t\toptional: annotation?.isOptional() ?? false,\n\t\tlist: annotation?.isList() ?? false,\n\t\telementOptional: annotation?.isElementOptional() ?? false,\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes\n\t};\n}\nfunction resolveNamedTypeBinding(node, sources) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sources);\n\treturn {\n\t\tisConstructor,\n\t\t...!isConstructor && baseType !== void 0 ? { baseType } : {},\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction nameRange(name, sources) {\n\tif (name === void 0) return void 0;\n\tconst sourceFile = sources.sourceFileFor(name.syntax);\n\tfor (const token of name.syntax.tokens()) if (token.kind === \"Ident\") return {\n\t\tstart: sourceFile.positionAt(token.offset),\n\t\tend: sourceFile.positionAt(token.offset + token.text.length)\n\t};\n}\nfunction nodeRange(node, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: sourceFile.positionAt(start),\n\t\tend: sourceFile.positionAt(end)\n\t};\n}\n//#endregion\nexport { typeReferenceNode as a, findBlockDescriptor as c, describeWrittenEntityReference as d, entityReference as f, assembleAttributeSpecs as h, createBinder as i, blockSpecFactoryOf as l, writtenEntityReference as m, PSL_UNRESOLVED_REFERENCE as n, isNamespaceLike as o, matchesSelector as p, contributedTypeOf as r, memberEntries as s, buildSymbolTable as t, describeResolution as u };\n\n//# sourceMappingURL=symbol-table-C1ATzvmU.mjs.map","import { a as typeReferenceNode, c as findBlockDescriptor, d as describeWrittenEntityReference, f as entityReference, h as assembleAttributeSpecs, i as createBinder, l as blockSpecFactoryOf, m as writtenEntityReference, n as PSL_UNRESOLVED_REFERENCE, o as isNamespaceLike, p as matchesSelector, r as contributedTypeOf, s as memberEntries, t as buildSymbolTable, u as describeResolution } from \"./symbol-table-C1ATzvmU.mjs\";\nimport { n as isPslIdentifier } from \"./tokenizer-BMz7z2KR.mjs\";\nimport { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, g as BooleanLiteralExprAst, m as ArrayLiteralAst, v as NumberLiteralExprAst } from \"./declarations-DDT0hm5r.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, l as mapPslDiagnostics, n as nodePslSpan, o as createPslDiagnosticCollector, r as readResolvedAttribute, s as diagnosticFromSpan, t as keywordPslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { and, notOk, ok, okVoid, or } from \"@internal/utils/result\";\n//#region src/attribute-helpers.ts\nfunction getPositionalArgument(attribute, index = 0) {\n\treturn attribute.args.filter((arg) => arg.kind === \"positional\")[index]?.value;\n}\nfunction parseQuotedStringLiteral(value) {\n\tconst match = value.trim().match(/^(['\"])(.*)\\1$/);\n\tif (!match) return void 0;\n\treturn match[2] ?? \"\";\n}\n//#endregion\n//#region src/attribute-spec/block-attribute.ts\nfunction blockAttribute(name, config) {\n\treturn {\n\t\tlevel: \"block\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: config.named ?? {},\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/diagnostic.ts\nconst ATTRIBUTE_DIAGNOSTIC_CODE = \"PSL_INVALID_ATTRIBUTE_SYNTAX\";\nfunction leafDiagnostic(ctx, node, message, code = ATTRIBUTE_DIAGNOSTIC_CODE) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(nodePslSpan(node.syntax, ctx.sources))\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/bool.ts\nfunction bool() {\n\treturn {\n\t\tkind: \"bool\",\n\t\tlabel: \"boolean\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = BooleanLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a boolean literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/entity-ref.ts\nfunction entityRef(expected) {\n\tconst label = `${expected.kind === \"block\" ? expected.keyword : expected.kind} reference`;\n\treturn {\n\t\tkind: \"entityRef\",\n\t\tlabel,\n\t\texpected,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst written = writtenEntityReference(arg.syntax);\n\t\t\tif (written === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t\tconst name = describeWrittenEntityReference(written);\n\t\t\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\t\t\tif (resolution === void 0 || resolution.kind === \"unresolved\") return notOk([]);\n\t\t\tconst reference = entityReference(resolution);\n\t\t\tif (reference === void 0 || !matchesSelector(reference, expected)) return notOk([leafDiagnostic(ctx, arg, `Expected ${label} \"${name}\", found ${describeResolution(resolution)}`)]);\n\t\t\treturn ok(reference);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx) {\n\tconst identifier = IdentifierAst.cast(arg.syntax);\n\tif (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst name = identifier.name();\n\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\tif (resolution === void 0) return notOk([]);\n\tif (resolution.kind === \"field\") return ok(resolution.symbol.name);\n\tif (resolution.kind === \"crossSpace\") return ok(name);\n\treturn notOk([]);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tlet outcome = okVoid();\n\tconst output = {};\n\tconst seen = /* @__PURE__ */ new Set();\n\tlet positionalSlot = 0;\n\tlet reportedExcess = false;\n\tfor (const arg of args) {\n\t\tconst name = arg.name()?.name();\n\t\tlet key;\n\t\tlet param;\n\t\tif (name === void 0) {\n\t\t\tconst posParam = spec.positional[positionalSlot];\n\t\t\tif (posParam === void 0) {\n\t\t\t\tif (!reportedExcess) {\n\t\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received too many positional arguments`, ctx, span, sourceNode)]));\n\t\t\t\t\treportedExcess = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpositionalSlot += 1;\n\t\t\tkey = posParam.key;\n\t\t\tparam = posParam.type;\n\t\t} else {\n\t\t\tconst namedParam = Object.hasOwn(spec.named, name) ? spec.named[name] : void 0;\n\t\t\tif (namedParam === void 0) {\n\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received unknown argument \"${name}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkey = name;\n\t\t\tparam = namedParam.type;\n\t\t}\n\t\tif (seen.has(key)) {\n\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received duplicate argument \"${key}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst result = parseArgValue(arg, param, ctx);\n\t\tif (result.ok) output[key] = result.value;\n\t\toutcome = and(outcome, result);\n\t}\n\tconst finalized = /* @__PURE__ */ new Set();\n\tconst finalizeAbsentKey = (key, positionalParam, namedParam) => {\n\t\tif (finalized.has(key) || seen.has(key)) return;\n\t\tfinalized.add(key);\n\t\tconst effective = namedParam ?? positionalParam;\n\t\tif (effective === void 0) return;\n\t\tif (isOptionalArgType(effective)) {\n\t\t\tif (effective.hasDefault) output[key] = effective.defaultValue;\n\t\t\treturn;\n\t\t}\n\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" is missing required argument \"${key}\"`, ctx, span, sourceNode)]));\n\t};\n\tfor (const param of spec.positional) {\n\t\tconst namedParam = Object.hasOwn(spec.named, param.key) ? spec.named[param.key] : void 0;\n\t\tfinalizeAbsentKey(param.key, param.type, namedParam?.type);\n\t}\n\tfor (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]?.type);\n\tif (!outcome.ok) return notOk(outcome.failure);\n\treturn ok(output);\n}\nfunction interpretAttribute(attrNode, spec, ctx) {\n\tconst attributeSpan = nodePslSpan(attrNode.syntax, ctx.sources);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan, attrNode.syntax);\n\tif (!bound.ok) return notOk(bound.failure);\n\tconst value = blindCast(bound.value);\n\tif (spec.refine !== void 0) {\n\t\tconst refineDiagnostics = spec.refine(value, ctx, attrNode);\n\t\tif (refineDiagnostics.length > 0) return notOk(refineDiagnostics);\n\t}\n\treturn ok(value);\n}\nfunction parseArgValue(arg, argType, ctx) {\n\tconst value = arg.value();\n\tif (value === void 0) return notOk([diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]);\n\treturn argType.parse(value, ctx);\n}\nfunction isOptionalArgType(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\nfunction diagnostic(message, ctx, span, sourceNode) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, sourceNode).at(span)\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/func-call.ts\nfunction funcCall(name, sig) {\n\treturn {\n\t\tkind: \"funcCall\",\n\t\tlabel: `${name}()`,\n\t\tname,\n\t\tsignature: sig,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst guard = matchCallee(arg, name, ctx);\n\t\t\tif (!guard.ok) return guard;\n\t\t\tconst span = nodePslSpan(guard.value.syntax, ctx.sources);\n\t\t\tconst bound = interpretArgs(guard.value.args(), {\n\t\t\t\tname,\n\t\t\t\tpositional: sig.positional ?? [],\n\t\t\t\tnamed: sig.named ?? {}\n\t\t\t}, ctx, span, guard.value.syntax);\n\t\t\tif (!bound.ok) return notOk(bound.failure);\n\t\t\treturn ok({\n\t\t\t\tfn: name,\n\t\t\t\tspan,\n\t\t\t\targs: bound.value\n\t\t\t});\n\t\t}\n\t};\n}\nfunction matchCallee(arg, name, ctx) {\n\tconst call = FunctionCallAst.cast(arg.syntax);\n\tif (call === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst qname = call.name();\n\tif (qname === void 0 || qname.dot() !== void 0 || qname.colon() !== void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tconst calleeName = qname.identifier()?.token()?.text;\n\tif (calleeName === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tif (calleeName !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);\n\treturn ok(call);\n}\n//#endregion\n//#region src/attribute-spec/combinators/identifier.ts\nfunction identifier(name, options) {\n\tconst label = name ?? \"identifier\";\n\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel,\n\t\tname,\n\t\tdocumentation: options?.documentation ?? \"\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = IdentifierAst.cast(arg.syntax)?.name();\n\t\t\tif (value !== void 0 && (name === void 0 || value === name)) return ok(value);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/int.ts\nfunction int(opts) {\n\tconst min = opts?.min;\n\tconst max = opts?.max;\n\treturn {\n\t\tkind: \"int\",\n\t\tlabel: \"integer\",\n\t\t...min === void 0 ? {} : { min },\n\t\t...max === void 0 ? {} : { max },\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0 && Number.isInteger(value)) {\n\t\t\t\t\tif ((min === void 0 || value >= min) && (max === void 0 || value <= max)) return ok(value);\n\t\t\t\t\treturn notOk([leafDiagnostic(ctx, arg, rangeMessage(min, max))]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected an integer literal\")]);\n\t\t}\n\t};\n}\nfunction rangeMessage(min, max) {\n\tif (min !== void 0 && max !== void 0) return `Expected an integer between ${min} and ${max}`;\n\tif (min !== void 0) return `Expected an integer greater than or equal to ${min}`;\n\treturn `Expected an integer less than or equal to ${max}`;\n}\n//#endregion\n//#region src/attribute-spec/combinators/json.ts\n/**\n* Reads an opaque JSON object from a quoted JSON string — the ADR's one text-encoded surface\n* exception (e.g. an index `filter` / `weights` argument). The string is decoded by the parser,\n* then JSON-parsed; a non-object (array/scalar) or invalid JSON is a diagnostic.\n*/\nfunction json() {\n\treturn {\n\t\tkind: \"json\",\n\t\tlabel: \"JSON object\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a JSON object string\")]);\n\t\t\tconst raw = literal.value();\n\t\t\tif (raw !== void 0) try {\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) return ok(blindCast(parsed));\n\t\t\t} catch {}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a valid JSON object\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/list.ts\nfunction list(of, opts) {\n\tconst allowEmpty = opts?.allowEmpty ?? true;\n\tconst unique = opts?.unique ?? false;\n\treturn {\n\t\tkind: \"list\",\n\t\tlabel: opts?.label ?? (of.label.includes(\" | \") ? `(${of.label})[]` : `${of.label}[]`),\n\t\tof,\n\t\tallowEmpty,\n\t\tunique,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ArrayLiteralAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);\n\t\t\tconst parsed = [];\n\t\t\tlet outcome = okVoid();\n\t\t\tlet count = 0;\n\t\t\tfor (const element of literal.elements()) {\n\t\t\t\tcount += 1;\n\t\t\t\tconst result = of.parse(element, ctx);\n\t\t\t\tif (result.ok) parsed.push({\n\t\t\t\t\tnode: element,\n\t\t\t\t\tvalue: result.value\n\t\t\t\t});\n\t\t\t\toutcome = and(outcome, result);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) outcome = and(outcome, notOk([leafDiagnostic(ctx, arg, \"Expected a non-empty list\")]));\n\t\t\tif (unique) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const { node, value } of parsed) if (seen.has(value)) outcome = and(outcome, notOk([leafDiagnostic(ctx, node, \"Duplicate list entry\")]));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\talternatives: alts,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst [head, ...tail] = blindCast(alts);\n\t\t\tlet rejection = head.parse(arg, ctx);\n\t\t\tif (rejection.ok) return rejection;\n\t\t\tfor (const alt of tail) {\n\t\t\t\tconst result = alt.parse(arg, ctx);\n\t\t\t\tif (result.ok) return result;\n\t\t\t\trejection = or(rejection, result);\n\t\t\t}\n\t\t\tif (!rejection.ok && rejection.failure.length === 0) return notOk([]);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected one of: ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/record.ts\nfunction record(of) {\n\treturn {\n\t\tkind: \"record\",\n\t\tlabel: `{ [key]: ${of.label} }`,\n\t\tof,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ObjectLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected an object literal\")]);\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\n\t\t\tlet outcome = okVoid();\n\t\t\tfor (const field of Array.from(literal.fields())) {\n\t\t\t\tconst key = field.keyName();\n\t\t\t\tif (key === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, \"Expected a key\")]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = field.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Expected a value for key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst parsed = of.parse(value, ctx);\n\t\t\t\tif (!parsed.ok) {\n\t\t\t\t\toutcome = and(outcome, parsed);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Duplicate key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tkeys.add(key);\n\t\t\t\tentries.push([key, parsed.value]);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(Object.fromEntries(entries));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/str.ts\nfunction str(value) {\n\tif (value === void 0) return {\n\t\tkind: \"str\",\n\t\tlabel: \"string\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a string literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"str\",\n\t\tlabel: JSON.stringify(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${JSON.stringify(value)}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/json-value.ts\nfunction jsonValue() {\n\tconst self = {\n\t\tkind: \"oneOf\",\n\t\tlabel: \"JSON value\",\n\t\tget alternatives() {\n\t\t\treturn composed.alternatives;\n\t\t},\n\t\tparse: (arg, ctx) => composed.parse(arg, ctx)\n\t};\n\tconst composed = oneOf(str(), finiteNumber(), bool(), jsonNull(), list(self), record(self));\n\treturn self;\n}\nfunction finiteNumber() {\n\treturn {\n\t\tkind: \"num\",\n\t\tvalue: void 0,\n\t\tlabel: \"number\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = NumberLiteralExprAst.cast(arg.syntax)?.value();\n\t\t\tif (value === void 0 || Number.isNaN(value) || !Number.isFinite(value)) return notOk([leafDiagnostic(ctx, arg, \"Expected a finite number literal\")]);\n\t\t\treturn ok(value);\n\t\t}\n\t};\n}\nfunction jsonNull() {\n\treturn {\n\t\tkind: \"null\",\n\t\tlabel: \"null\",\n\t\tparse: (arg, ctx) => {\n\t\t\tif (IdentifierAst.cast(arg.syntax)?.name() === \"null\") return ok(null);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected null\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num.ts\nfunction num(value) {\n\tif (value === void 0) return {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: String(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num-literal.ts\n/** A number literal kept as its source text, for consumers that must not round it through a JS number. */\nfunction numLiteral() {\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst text = NumberLiteralExprAst.cast(arg.syntax)?.token()?.text;\n\t\t\tif (text !== void 0) return ok({ text });\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/tagged-literal.ts\n/**\n* A `` tag`...` ``, `tag\"...\"`, or `tag'...'` argument. `tags` and `documentation` describe the\n* registered tags for tooling; parsing accepts any tag.\n*/\nfunction taggedLiteral(tags, options) {\n\treturn {\n\t\tkind: \"taggedLiteral\",\n\t\tlabel: `${tags[0] ?? \"tag\"}\\`...\\``,\n\t\ttags,\n\t\tdocumentation: options.documentation,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = TaggedLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a tagged literal\")]);\n\t\t\treturn ok({\n\t\t\t\ttag: literal.tagName(),\n\t\t\t\tcanonicalization: literal.canonicalization(),\n\t\t\t\tspan: nodePslSpan(literal.syntax, ctx.sources)\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/field-attribute.ts\nfunction fieldAttribute(name, config) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/model-attribute.ts\nfunction modelAttribute(name, config) {\n\treturn {\n\t\tlevel: \"model\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/optional.ts\nfunction optional(type, ...rest) {\n\tif (rest.length === 0) return {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: false\n\t};\n\treturn {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: true,\n\t\tdefaultValue: rest[0]\n\t};\n}\n//#endregion\n//#region src/block-spec/constructors.ts\nfunction structBlock(config) {\n\treturn {\n\t\tmode: \"struct\",\n\t\tparameters: config.parameters\n\t};\n}\nfunction mapBlock(config) {\n\treturn {\n\t\tmode: \"map\",\n\t\tvalue: config.value,\n\t\tallowBare: config.allowBare ?? false\n\t};\n}\n//#endregion\n//#region src/block-spec/interpret.ts\nfunction interpretExtensionBlock(input) {\n\tconst { block, descriptor, spec, symbols, sources, binder } = input;\n\tconst ctx = {\n\t\tsources,\n\t\tsymbols,\n\t\tbinder,\n\t\tselfBlock: block\n\t};\n\tconst entries = spec.mode === \"struct\" ? interpretStructBlock(block, spec, ctx) : interpretMapBlock(block, spec, ctx);\n\tconst diagnostics = [...entries.diagnostics];\n\tconst interpretedAttributes = interpretExtensionBlockAttributes({\n\t\tblock,\n\t\tdescriptor,\n\t\tsymbols,\n\t\tsources,\n\t\tbinder\n\t});\n\tdiagnostics.push(...interpretedAttributes.diagnostics);\n\tif (entries.failed || diagnostics.length > 0) return notOk(diagnostics);\n\treturn ok({\n\t\tkind: descriptor.discriminator,\n\t\tkeyword: block.keyword,\n\t\tname: block.name,\n\t\tvalues: blindCast(entries.values),\n\t\tparameterSpans: entries.parameterSpans,\n\t\tnumberTexts: entries.numberTexts,\n\t\tattributes: interpretedAttributes.attributes,\n\t\tspan: block.span\n\t});\n}\nfunction interpretStructBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst numberTexts = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst rule = Object.hasOwn(spec.parameters, key) ? spec.parameters[key]?.type : void 0;\n\t\tif (rule === void 0) {\n\t\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_UNKNOWN_PARAMETER\", `Unknown parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\". The block does not declare this parameter.`, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = rule.parse(value, ctx);\n\t\tif (parsed.ok) {\n\t\t\tvalues[key] = parsed.value;\n\t\t\trecordNumberText(numberTexts, key, value);\n\t\t} else {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\tfor (const [key, param] of Object.entries(spec.parameters)) {\n\t\tif (seen.has(key)) continue;\n\t\tif (isOptionalArgType(param.type)) {\n\t\t\tif (param.type.hasDefault) values[key] = param.type.defaultValue;\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_MISSING_REQUIRED_PARAMETER\", `Required parameter \"${key}\" is missing from \"${block.keyword}\" block \"${block.name}\".`, ctx, block.node, block.span));\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tnumberTexts,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction interpretMapBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst numberTexts = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tif (spec.allowBare) {\n\t\t\t\tvalues[key] = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = spec.value.type.parse(value, ctx);\n\t\tif (parsed.ok) {\n\t\t\tvalues[key] = parsed.value;\n\t\t\trecordNumberText(numberTexts, key, value);\n\t\t} else {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tnumberTexts,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction recordNumberText(numberTexts, key, value) {\n\tconst text = NumberLiteralExprAst.cast(value.syntax)?.token()?.text;\n\tif (text !== void 0) numberTexts[key] = text;\n}\nfunction duplicateParameterDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_EXTENSION_DUPLICATE_PARAMETER\", `Duplicate parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`, ctx, node, span);\n}\nfunction bareEntryDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", `Parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\" must be written as \"${key} = <value>\".`, ctx, node, span);\n}\nfunction interpretExtensionBlockAttributes(input) {\n\tconst { block, descriptor, symbols, sources, binder } = input;\n\tconst declared = descriptor.attributes ?? {};\n\tconst attributes = Object.create(null);\n\tconst diagnostics = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of block.node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tif (!Object.hasOwn(declared, name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenNames.has(name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenNames.add(name);\n\t\tconst spec = blindCast(declared[name])({ symbols });\n\t\tconst result = interpretAttribute(attribute, spec, {\n\t\t\tsources,\n\t\t\tsymbols,\n\t\t\tbinder,\n\t\t\tselfBlock: block\n\t\t});\n\t\tif (result.ok) {\n\t\t\tconst argSpans = Object.create(null);\n\t\t\tlet positionalSlot = 0;\n\t\t\tfor (const arg of readResolvedAttribute(attribute, sources).args) {\n\t\t\t\tconst key = arg.name ?? spec.positional[positionalSlot++]?.key;\n\t\t\t\tif (key !== void 0) argSpans[key] = arg.span;\n\t\t\t}\n\t\t\tattributes[name] = {\n\t\t\t\targs: result.value,\n\t\t\t\targSpans,\n\t\t\t\tspan\n\t\t\t};\n\t\t} else diagnostics.push(...result.failure);\n\t}\n\treturn {\n\t\tattributes,\n\t\tdiagnostics\n\t};\n}\nfunction entryDiagnostic(code, message, ctx, node, span) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(span)\n\t};\n}\nfunction interpretExtensionBlocks(input) {\n\tconst { symbolTable, sources, pslBlockDescriptors, binder } = input;\n\tconst parsedBlocks = /* @__PURE__ */ new Map();\n\tconst diagnostics = [];\n\tconst scopes = [symbolTable.topLevel, ...Object.values(symbolTable.topLevel.namespaces)];\n\tfor (const scope of scopes) for (const block of Object.values(scope.blocks)) {\n\t\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);\n\t\tif (descriptor === void 0) continue;\n\t\tconst parsed = interpretExtensionBlock({\n\t\t\tblock,\n\t\t\tdescriptor,\n\t\t\tspec: blockSpecFactoryOf(descriptor)({ symbols: symbolTable }),\n\t\t\tsymbols: symbolTable,\n\t\t\tsources,\n\t\t\tbinder\n\t\t});\n\t\tif (parsed.ok) parsedBlocks.set(block, parsed.value);\n\t\telse diagnostics.push(...parsed.failure);\n\t}\n\treturn {\n\t\tparsedBlocks,\n\t\tdiagnostics\n\t};\n}\n//#endregion\n//#region src/name-the-psl-source-loses.ts\n/**\n* A name that is lost when a PSL file is read. The parser keeps block members, and the PSL contract sources keep other names, as keys of plain objects, where assigning this key sets the object's prototype instead of adding a key. Code that writes PSL must not write this name anywhere a PSL source reads a name, including inside `@map` and `@@map`.\n*/\nconst NAME_THE_PSL_SOURCE_LOSES = \"__proto__\";\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\nexport { NAME_THE_PSL_SOURCE_LOSES, PSL_UNRESOLVED_REFERENCE, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"psl-parser.mjs","names":["#registry","#records","#namespace","#declarations","#references","#documentScope","#scopes","#base"],"sources":["../../../../1-framework/2-authoring/psl-parser/dist/symbol-table-BtWXPbMr.mjs","../../../../1-framework/2-authoring/psl-parser/dist/index.mjs"],"sourcesContent":["import { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, c as NamespaceDeclarationAst, g as BooleanLiteralExprAst, i as GenericBlockDeclarationAst, l as TypesBlockAst, m as ArrayLiteralAst, o as ModelDeclarationAst, t as CompositeTypeDeclarationAst, v as NumberLiteralExprAst, x as PathExprAst } from \"./declarations-5xLxC310.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, n as nodePslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { isAuthoringModelAttributeDescriptor, isAuthoringPslBlockDescriptor } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\n//#region src/attribute-spec/assemble.ts\nfunction* modelAttributeDescriptors(namespace) {\n\tfor (const value of Object.values(namespace)) {\n\t\tif (isAuthoringModelAttributeDescriptor(value)) {\n\t\t\tyield value;\n\t\t\tcontinue;\n\t\t}\n\t\tyield* modelAttributeDescriptors(value);\n\t}\n}\nfunction assembleAttributeSpecs(contributions) {\n\tconst entries = Object.entries(contributions.attributeSpecs.model);\n\tconst claimed = new Set(entries.map(([attribute]) => attribute));\n\tfor (const descriptor of modelAttributeDescriptors(contributions.modelAttributes)) {\n\t\tif (claimed.has(descriptor.attribute)) throw new InternalError(`Duplicate attribute spec registration for \"${descriptor.attribute}\". Each model attribute name may be registered once across family built-ins and model-attribute descriptors.`);\n\t\tclaimed.add(descriptor.attribute);\n\t\tentries.push([descriptor.attribute, descriptor.spec]);\n\t}\n\treturn Object.freeze(blindCast({\n\t\tmodel: Object.freeze(Object.fromEntries(entries)),\n\t\tfield: Object.freeze({ ...contributions.attributeSpecs.field })\n\t}));\n}\nfunction resolveDescribeUnsupportedAttribute(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnsupportedAttribute === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnsupportedAttribute);\n}\nfunction resolveDescribeUnresolvedType(pslDiagnostics) {\n\tif (pslDiagnostics?.describeUnresolvedType === void 0) return;\n\treturn blindCast(pslDiagnostics.describeUnresolvedType);\n}\n//#endregion\n//#region src/written-scalar.ts\nconst AN_EXPRESSION = {\n\tok: false,\n\treason: \"not-a-literal\",\n\tfound: \"an expression\"\n};\nfunction written(value) {\n\treturn {\n\t\tok: true,\n\t\twritten: value\n\t};\n}\n/** Reads a PSL literal expression as a `WrittenScalar`, for a position that takes a value of a data type. ADR 254. */\nfunction readWrittenScalar(expression) {\n\tconst syntax = expression.syntax;\n\tconst string = StringLiteralExprAst.cast(syntax)?.value();\n\tif (string !== void 0) return written({\n\t\tkind: \"string\",\n\t\ttext: string\n\t});\n\tconst number = NumberLiteralExprAst.cast(syntax);\n\tif (number !== void 0) {\n\t\tconst text = number.token()?.text;\n\t\treturn text === void 0 ? AN_EXPRESSION : written({\n\t\t\tkind: \"number\",\n\t\t\ttext\n\t\t});\n\t}\n\tconst boolean = BooleanLiteralExprAst.cast(syntax)?.value();\n\tif (boolean !== void 0) return written({\n\t\tkind: \"boolean\",\n\t\tvalue: boolean\n\t});\n\tconst tagged = TaggedLiteralExprAst.cast(syntax);\n\tif (tagged !== void 0) {\n\t\tconst canonicalization = tagged.canonicalization();\n\t\treturn canonicalization.ok ? written({\n\t\t\tkind: \"tag\",\n\t\t\ttag: tagged.tagName(),\n\t\t\ttext: canonicalization.text\n\t\t}) : {\n\t\t\tok: false,\n\t\t\treason: canonicalization.reason\n\t\t};\n\t}\n\tif (IdentifierAst.cast(syntax) !== void 0) return {\n\t\tok: false,\n\t\treason: \"not-a-literal\",\n\t\tfound: \"an identifier\"\n\t};\n\tif (FunctionCallAst.cast(syntax) !== void 0) return {\n\t\tok: false,\n\t\treason: \"not-a-literal\",\n\t\tfound: \"a function call\"\n\t};\n\tif (ArrayLiteralAst.cast(syntax) !== void 0) return {\n\t\tok: false,\n\t\treason: \"not-a-literal\",\n\t\tfound: \"a list\"\n\t};\n\tif (ObjectLiteralExprAst.cast(syntax) !== void 0) return {\n\t\tok: false,\n\t\treason: \"not-a-literal\",\n\t\tfound: \"an object\"\n\t};\n\treturn AN_EXPRESSION;\n}\n//#endregion\n//#region src/entity-reference.ts\nfunction writtenEntityReference(node) {\n\tconst name = IdentifierAst.cast(node)?.name();\n\tif (name !== void 0) return {\n\t\tnamespace: void 0,\n\t\tname\n\t};\n\tconst path = PathExprAst.cast(node)?.path();\n\tif (path === void 0 || path.length !== 2) return void 0;\n\tconst [namespace, member] = path;\n\treturn namespace === void 0 || member === void 0 ? void 0 : {\n\t\tnamespace,\n\t\tname: member\n\t};\n}\nfunction describeWrittenEntityReference(reference) {\n\treturn reference.namespace === void 0 ? reference.name : `${reference.namespace}.${reference.name}`;\n}\nconst references = /* @__PURE__ */ new WeakMap();\nfunction entityReference(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\":\n\t\tcase \"compositeType\":\n\t\tcase \"namedType\":\n\t\tcase \"block\": return interned(resolution.symbol, resolution.namespace);\n\t\tdefault: return;\n\t}\n}\nfunction interned(declaration, namespace) {\n\tconst existing = references.get(declaration);\n\tif (existing !== void 0) return existing;\n\tconst reference = {\n\t\tdeclaration,\n\t\tnamespace\n\t};\n\treferences.set(declaration, reference);\n\treturn reference;\n}\nfunction matchesSelector(reference, expected) {\n\tconst declaration = reference.declaration;\n\tif (declaration.kind !== expected.kind) return false;\n\treturn expected.kind !== \"block\" || declaration.kind === \"block\" && declaration.keyword === expected.keyword;\n}\nfunction describeResolution(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"block\": return resolution.symbol.keyword;\n\t\tcase \"contributedType\": return \"scalar type\";\n\t\tcase \"crossSpace\": return \"cross-space reference\";\n\t\tcase \"unresolved\": return \"unresolved name\";\n\t\tdefault: return resolution.kind;\n\t}\n}\n//#endregion\n//#region src/block-spec/descriptor.ts\nfunction blockSpecFactoryOf(descriptor) {\n\treturn blindCast(descriptor.spec);\n}\n//#endregion\n//#region src/contributed-type-scope.ts\nfunction isContributedTypeDescriptor(value) {\n\treturn \"kind\" in value && (value.kind === \"typeConstructor\" || value.kind === \"fieldPreset\");\n}\nfunction mergeContributedTypes(...namespaces) {\n\tconst merged = {};\n\tfor (const namespace of namespaces) for (const [name, value] of Object.entries(namespace)) {\n\t\tconst existing = Object.hasOwn(merged, name) ? merged[name] : void 0;\n\t\tmerged[name] = existing !== void 0 && !isContributedTypeDescriptor(existing) && !isContributedTypeDescriptor(value) ? mergeContributedTypes(existing, value) : value;\n\t}\n\treturn merged;\n}\nfunction contributedTypeScope(contributedTypes) {\n\tconst members = collect(contributedTypes, []);\n\treturn {\n\t\tlookup(name) {\n\t\t\treturn members.get(name);\n\t\t},\n\t\tentries() {\n\t\t\treturn members.entries();\n\t\t}\n\t};\n}\nfunction collect(namespace, prefix) {\n\tconst members = /* @__PURE__ */ new Map();\n\tfor (const [name, value] of Object.entries(namespace)) {\n\t\tconst path = [...prefix, name];\n\t\tmembers.set(name, isContributedTypeDescriptor(value) ? {\n\t\t\tkind: \"contributedType\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tdescriptor: value\n\t\t} : {\n\t\t\tkind: \"contributedNamespace\",\n\t\t\tname,\n\t\t\tpath,\n\t\t\tmembers: collect(value, path)\n\t\t});\n\t}\n\treturn members;\n}\n//#endregion\n//#region src/extension-block.ts\nfunction findBlockDescriptor(descriptors, keyword) {\n\tif (descriptors === void 0) return void 0;\n\tfor (const value of Object.values(descriptors)) {\n\t\tif (value === void 0) continue;\n\t\tif (isAuthoringPslBlockDescriptor(value)) {\n\t\t\tif (value.keyword === keyword) return value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst nested = findBlockDescriptor(value, keyword);\n\t\tif (nested !== void 0) return nested;\n\t}\n}\n//#endregion\n//#region src/scope.ts\nfunction* recordNames(...records) {\n\tfor (const record of records) yield* Object.keys(record);\n}\nvar Scope = class {\n\tparent;\n\tconstructor(parent) {\n\t\tthis.parent = parent;\n\t}\n\t*entries() {\n\t\tconst seen = /* @__PURE__ */ new Set();\n\t\tfor (const name of this.ownNames()) {\n\t\t\tif (seen.has(name)) continue;\n\t\t\tseen.add(name);\n\t\t\tconst resolution = this.lookup(name);\n\t\t\tif (resolution !== void 0) yield [name, resolution];\n\t\t}\n\t\tfor (const entry of this.parent?.entries() ?? []) if (!seen.has(entry[0])) yield entry;\n\t}\n};\nfunction contributedResolution(member) {\n\treturn member.kind === \"contributedType\" ? {\n\t\tkind: \"contributedType\",\n\t\tsymbol: member\n\t} : {\n\t\tkind: \"contributedNamespace\",\n\t\tsymbol: member\n\t};\n}\nfunction namespaceMember(namespace, name) {\n\tconst model = namespace.models[name];\n\tif (model !== void 0) return {\n\t\tkind: \"model\",\n\t\tsymbol: model,\n\t\tnamespace\n\t};\n\tconst compositeType = namespace.compositeTypes[name];\n\tif (compositeType !== void 0) return {\n\t\tkind: \"compositeType\",\n\t\tsymbol: compositeType,\n\t\tnamespace\n\t};\n\tconst block = namespace.blocks[name];\n\tif (block !== void 0) return {\n\t\tkind: \"block\",\n\t\tsymbol: block,\n\t\tnamespace\n\t};\n}\nvar ContributedScope = class extends Scope {\n\t#registry;\n\tconstructor(registry) {\n\t\tsuper(void 0);\n\t\tthis.#registry = registry;\n\t}\n\tlookup(name) {\n\t\tconst member = this.#registry.lookup(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\t*ownNames() {\n\t\tfor (const [name] of this.#registry.entries()) yield name;\n\t}\n};\nvar DocumentScope = class extends Scope {\n\t#records;\n\tconstructor(records, parent) {\n\t\tsuper(parent);\n\t\tthis.#records = records;\n\t}\n\tlookup(name) {\n\t\tconst records = this.#records;\n\t\tconst model = records.models[name];\n\t\tif (model !== void 0) return {\n\t\t\tkind: \"model\",\n\t\t\tsymbol: model\n\t\t};\n\t\tconst compositeType = records.compositeTypes[name];\n\t\tif (compositeType !== void 0) return {\n\t\t\tkind: \"compositeType\",\n\t\t\tsymbol: compositeType\n\t\t};\n\t\tconst namedType = records.namedTypes[name];\n\t\tif (namedType !== void 0) return {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol: namedType\n\t\t};\n\t\tconst block = records.blocks[name];\n\t\tif (block !== void 0) return {\n\t\t\tkind: \"block\",\n\t\t\tsymbol: block\n\t\t};\n\t\tconst namespace = records.namespaces[name];\n\t\tif (namespace !== void 0) return {\n\t\t\tkind: \"namespace\",\n\t\t\tsymbol: namespace\n\t\t};\n\t\treturn this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst records = this.#records;\n\t\treturn recordNames(records.models, records.compositeTypes, records.namedTypes, records.blocks, records.namespaces);\n\t}\n};\nvar NamespaceScope = class extends Scope {\n\t#namespace;\n\tconstructor(namespace, parent) {\n\t\tsuper(parent);\n\t\tthis.#namespace = namespace;\n\t}\n\tlookup(name) {\n\t\treturn namespaceMember(this.#namespace, name) ?? this.parent?.lookup(name);\n\t}\n\townNames() {\n\t\tconst namespace = this.#namespace;\n\t\treturn recordNames(namespace.models, namespace.compositeTypes, namespace.blocks);\n\t}\n};\nfunction contributedScope(registry) {\n\treturn new ContributedScope(registry);\n}\nfunction documentScope(records, parent) {\n\treturn new DocumentScope(records, parent);\n}\nfunction namedTypeBaseScope(records, parent) {\n\treturn new DocumentScope({\n\t\t...records,\n\t\tnamedTypes: {}\n\t}, parent);\n}\nfunction namespaceScope(namespace, parent) {\n\treturn new NamespaceScope(namespace, parent);\n}\nfunction isNamespaceLike(resolution) {\n\treturn resolution.kind === \"namespace\" || resolution.kind === \"contributedNamespace\";\n}\nfunction* memberEntries(qualifier) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tfor (const [name, member] of qualifier.symbol.members) yield [name, contributedResolution(member)];\n\t\treturn;\n\t}\n\tyield* new NamespaceScope(qualifier.symbol, void 0).entries();\n}\nfunction lookupMember(qualifier, name) {\n\tif (qualifier.kind === \"contributedNamespace\") {\n\t\tconst member = qualifier.symbol.members.get(name);\n\t\treturn member === void 0 ? void 0 : contributedResolution(member);\n\t}\n\treturn namespaceMember(qualifier.symbol, name);\n}\n//#endregion\n//#region src/binder.ts\nconst PSL_UNRESOLVED_REFERENCE = \"PSL_UNRESOLVED_REFERENCE\";\nfunction typeReferenceNode(symbol) {\n\treturn symbol.node.typeAnnotation()?.name()?.syntax;\n}\nfunction contributedTypeOf(resolution, binder) {\n\tconst base = resolution?.kind === \"namedType\" ? typeReferenceNode(resolution.symbol) : void 0;\n\tconst target = base === void 0 ? resolution : binder.symbolForNode(base);\n\treturn target?.kind === \"contributedType\" ? target.symbol : void 0;\n}\nvar PslBinder = class {\n\t#declarations;\n\t#references;\n\t#documentScope;\n\t#scopes;\n\tconstructor(declarations, references, documentScope, scopes) {\n\t\tthis.#declarations = declarations;\n\t\tthis.#references = references;\n\t\tthis.#documentScope = documentScope;\n\t\tthis.#scopes = scopes;\n\t}\n\tdeclaredSymbol(node) {\n\t\treturn this.#declarations.get(node);\n\t}\n\tsymbolForNode(node) {\n\t\treturn this.#references.get(node);\n\t}\n\tscopeAt(node) {\n\t\treturn node.findAncestor((ancestor) => this.#scopes.get(ancestor)) ?? this.#documentScope;\n\t}\n};\nvar ScopeStack = class {\n\t#base;\n\t#scopes;\n\tconstructor(base) {\n\t\tthis.#base = base;\n\t\tthis.#scopes = [base];\n\t}\n\tcurrent() {\n\t\treturn this.#scopes[this.#scopes.length - 1] ?? this.#base;\n\t}\n\tpush(scope) {\n\t\tthis.#scopes.push(scope);\n\t}\n\tpop() {\n\t\tthis.#scopes.pop();\n\t}\n};\nfunction walkEntities(symbolTable, stack, binder, visit) {\n\tconst { topLevel } = symbolTable;\n\tfor (const entity of Object.values(topLevel.models)) visit(entity);\n\tfor (const entity of Object.values(topLevel.compositeTypes)) visit(entity);\n\tfor (const namespace of Object.values(topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tfor (const entity of Object.values(namespace.models)) visit(entity, namespace);\n\t\tfor (const entity of Object.values(namespace.compositeTypes)) visit(entity, namespace);\n\t\tstack.pop();\n\t}\n}\nfunction declarationResolution(entity, namespace) {\n\treturn entity.kind === \"model\" ? {\n\t\tkind: \"model\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t} : {\n\t\tkind: \"compositeType\",\n\t\tsymbol: entity,\n\t\t...namespace === void 0 ? {} : { namespace }\n\t};\n}\nfunction createBinder(input) {\n\tconst { symbolTable, sources, context } = input;\n\tconst contributions = context.authoringContributions;\n\tconst describeUnsupportedAttributeFactory = resolveDescribeUnsupportedAttribute(context.pslDiagnostics);\n\tconst describeUnresolvedTypeFactory = resolveDescribeUnresolvedType(context.pslDiagnostics);\n\treturn bind({\n\t\tsources,\n\t\tsymbolTable,\n\t\tcontributedTypes: mergeContributedTypes(contributions.field, contributions.type),\n\t\tattributeSpecs: assembleAttributeSpecs(contributions),\n\t\tpslBlockDescriptors: contributions.pslBlockDescriptors,\n\t\tcontrolMutationDefaults: { defaultFunctionRegistry: context.controlMutationDefaults.defaultFunctionRegistry },\n\t\tdataTypes: context.dataTypes,\n\t\t...describeUnsupportedAttributeFactory !== void 0 ? { describeUnsupportedAttribute: describeUnsupportedAttributeFactory(sources) } : {},\n\t\t...describeUnresolvedTypeFactory !== void 0 ? { describeUnresolvedType: describeUnresolvedTypeFactory(contributions) } : {}\n\t});\n}\nfunction bind(options) {\n\tconst { sources, symbolTable, contributedTypes, attributeSpecs, controlMutationDefaults, dataTypes, describeUnsupportedAttribute, describeUnresolvedType } = options;\n\tconst pslBlockDescriptors = options.pslBlockDescriptors ?? {};\n\tconst contributed = contributedScope(contributedTypeScope(contributedTypes));\n\tconst document = documentScope(symbolTable.topLevel, contributed);\n\tconst stack = new ScopeStack(document);\n\tconst scopes = /* @__PURE__ */ new WeakMap();\n\tconst declarations = /* @__PURE__ */ new WeakMap();\n\tconst references = /* @__PURE__ */ new WeakMap();\n\tconst diagnostics = [];\n\tconst binder = new PslBinder(declarations, references, document, scopes);\n\tconst baseScope = namedTypeBaseScope(symbolTable.topLevel, contributed);\n\tfor (const symbol of Object.values(symbolTable.topLevel.namedTypes)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"namedType\",\n\t\t\tsymbol\n\t\t});\n\t\tconst name = symbol.node.typeAnnotation()?.name();\n\t\tconst outcome = resolveTypeReference(name, baseScope, references);\n\t\tif (name === void 0 || outcome === void 0) continue;\n\t\treferences.set(name.syntax, outcome.resolution);\n\t}\n\tfor (const symbol of Object.values(symbolTable.topLevel.blocks)) {\n\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\tkind: \"block\",\n\t\t\tsymbol\n\t\t});\n\t}\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tconst scope = namespaceScope(namespace, document);\n\t\tfor (const declaration of namespace.declarations) {\n\t\t\tdeclarations.set(declaration.node.syntax, namespace);\n\t\t\tscopes.set(declaration.node.syntax, scope);\n\t\t\tconst declaredName = declaration.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"namespace\",\n\t\t\t\tsymbol: namespace\n\t\t\t});\n\t\t}\n\t\tfor (const symbol of Object.values(namespace.blocks)) {\n\t\t\tdeclarations.set(symbol.node.syntax, symbol);\n\t\t\tconst declaredName = symbol.node.name()?.syntax;\n\t\t\tif (declaredName !== void 0) references.set(declaredName, {\n\t\t\t\tkind: \"block\",\n\t\t\t\tsymbol,\n\t\t\t\tnamespace\n\t\t\t});\n\t\t}\n\t}\n\twalkEntities(symbolTable, stack, binder, (entity, namespace) => {\n\t\tdeclarations.set(entity.node.syntax, entity);\n\t\tconst declaredName = entity.node.name()?.syntax;\n\t\tif (declaredName !== void 0) references.set(declaredName, declarationResolution(entity, namespace));\n\t\tfor (const field of Object.values(entity.fields)) {\n\t\t\tdeclarations.set(field.node.syntax, field);\n\t\t\tconst fieldName = field.node.name()?.syntax;\n\t\t\tif (fieldName !== void 0) references.set(fieldName, {\n\t\t\t\tkind: \"field\",\n\t\t\t\tsymbol: field\n\t\t\t});\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tif (node === void 0) continue;\n\t\t\tconst name = field.node.typeAnnotation()?.name();\n\t\t\tconst outcome = resolveTypeReference(name, stack.current(), references, (written) => describeUnresolvedType?.({\n\t\t\t\tfield,\n\t\t\t\towner: entity,\n\t\t\t\twritten\n\t\t\t}));\n\t\t\tif (outcome === void 0) continue;\n\t\t\treferences.set(node, outcome.resolution);\n\t\t\tif (outcome.message !== void 0) diagnostics.push({\n\t\t\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\t\t\tmessage: outcome.message,\n\t\t\t\tdata: {\n\t\t\t\t\treference: \"type\",\n\t\t\t\t\tname: outcome.name,\n\t\t\t\t\tconstructorCall: field.typeConstructor !== void 0\n\t\t\t\t},\n\t\t\t\t...diagnosticSource(sources, node).at()\n\t\t\t});\n\t\t}\n\t});\n\twalkEntities(symbolTable, stack, binder, (entity) => {\n\t\tconst context = {\n\t\t\towner: entity,\n\t\t\tscope: stack.current(),\n\t\t\treferences,\n\t\t\tdiagnostics,\n\t\t\tsymbolTable,\n\t\t\tsources,\n\t\t\tdescribeUnsupportedAttribute\n\t\t};\n\t\tconst specContext = entity.kind === \"model\" ? {\n\t\t\tsymbols: symbolTable,\n\t\t\tmodel: entity,\n\t\t\tcontrolMutationDefaults,\n\t\t\tdataTypes\n\t\t} : void 0;\n\t\tbindAttributes(entity, entity.attributes, attributeSpecs.model, (factory) => specContext === void 0 ? void 0 : factory(specContext), {\n\t\t\t...context,\n\t\t\tfield: void 0\n\t\t});\n\t\tfor (const field of Object.values(entity.fields)) bindAttributes(field, field.attributes, attributeSpecs.field, (factory) => {\n\t\t\tif (specContext === void 0) return void 0;\n\t\t\tconst node = typeReferenceNode(field);\n\t\t\tconst typeResolution = node === void 0 ? void 0 : references.get(node);\n\t\t\treturn factory({\n\t\t\t\t...specContext,\n\t\t\t\tfield,\n\t\t\t\ttypeResolution\n\t\t\t});\n\t\t}, {\n\t\t\t...context,\n\t\t\tfield\n\t\t});\n\t});\n\tconst blockContext = {\n\t\tpslBlockDescriptors,\n\t\tsymbolTable,\n\t\tsources,\n\t\treferences,\n\t\tdiagnostics\n\t};\n\tconst bindBlocks = (blocks) => {\n\t\tconst context = {\n\t\t\t...blockContext,\n\t\t\tscope: stack.current()\n\t\t};\n\t\tfor (const block of Object.values(blocks)) bindBlock(block, context);\n\t};\n\tbindBlocks(symbolTable.topLevel.blocks);\n\tfor (const namespace of Object.values(symbolTable.topLevel.namespaces)) {\n\t\tstack.push(binder.scopeAt(namespace.declarations[0].node.syntax));\n\t\tbindBlocks(namespace.blocks);\n\t\tstack.pop();\n\t}\n\treturn {\n\t\tbinder,\n\t\tdiagnostics\n\t};\n}\nfunction bindBlock(block, ctx) {\n\tconst descriptor = findBlockDescriptor(ctx.pslBlockDescriptors, block.keyword);\n\tif (descriptor === void 0) return;\n\tconst spec = blockSpecFactoryOf(descriptor)({ symbols: ctx.symbolTable });\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst parameter = spec.mode === \"struct\" && Object.hasOwn(spec.parameters, key) ? spec.parameters[key] : void 0;\n\t\tconst rule = spec.mode === \"struct\" ? parameter?.type : spec.value.type;\n\t\tif (parameter !== void 0) {\n\t\t\tconst keyNode = entry.key()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: key,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tconst value = entry.value();\n\t\tif (rule === void 0 || value === void 0) continue;\n\t\tbindExpression(rule, value, ctx);\n\t}\n\tconst attributeSpecs = descriptor.attributes ?? {};\n\tif (Object.keys(attributeSpecs).length === 0) return;\n\tfor (const attribute of readResolvedAttributes(block.node.attributes(), ctx.sources)) {\n\t\tconst factory = attributeSpecs[attribute.name];\n\t\tif (factory === void 0) continue;\n\t\tconst attributeSpec = blindCast(factory)({ symbols: ctx.symbolTable });\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel: \"block\",\n\t\t\tspec: attributeSpec\n\t\t};\n\t\tconst nameNode = attribute.node.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, attributeSpec, ctx);\n\t}\n}\nfunction bindExpression(rule, expression, ctx, modelContext) {\n\tconst trial = tryBindExpression(rule, expression, ctx, modelContext);\n\tfor (const [node, resolution] of trial.references) ctx.references.set(node, resolution);\n\tctx.diagnostics.push(...trial.diagnostics.values());\n}\nfunction tryBindExpression(rule, expression, ctx, modelContext) {\n\tconst references = /* @__PURE__ */ new Map();\n\tconst diagnostics = /* @__PURE__ */ new Map();\n\tswitch (rule.kind) {\n\t\tcase \"oneOf\":\n\t\t\tfor (const alternative of rule.alternatives) {\n\t\t\t\tconst trial = tryBindExpression(alternative, expression, ctx, modelContext);\n\t\t\t\tif (trial.matched) return trial;\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t\tfor (const [node, resolution] of trial.references) if (resolution.kind === \"unresolved\") references.set(node, resolution);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\tcase \"list\":\n\t\tcase \"record\": {\n\t\t\tconst children = rule.kind === \"list\" ? ArrayLiteralAst.cast(expression.syntax)?.elements() : recordValues(expression);\n\t\t\tif (children === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tlet matched = true;\n\t\t\tfor (const child of children) {\n\t\t\t\tconst trial = tryBindExpression(rule.of, child, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"funcCall\": {\n\t\t\tconst call = FunctionCallAst.cast(expression.syntax);\n\t\t\tconst name = call?.name();\n\t\t\tif (call === void 0 || name === void 0 || name.dot() !== void 0 || name.colon() !== void 0 || name.identifier()?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst functionSymbol = {\n\t\t\t\tkind: \"function\",\n\t\t\t\tname: rule.name,\n\t\t\t\tsignature: rule.signature\n\t\t\t};\n\t\t\treferences.set(name.syntax, {\n\t\t\t\tkind: \"function\",\n\t\t\t\tsymbol: functionSymbol\n\t\t\t});\n\t\t\tlet matched = true;\n\t\t\tlet positional = 0;\n\t\t\tfor (const arg of call.args()) {\n\t\t\t\tconst key = arg.name()?.name();\n\t\t\t\tconst parameter = argumentParameter(rule.signature, key, key === void 0 ? positional++ : positional);\n\t\t\t\tif (parameter === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (key !== void 0) {\n\t\t\t\t\tconst keyNode = arg.name()?.syntax;\n\t\t\t\t\tif (keyNode !== void 0) references.set(keyNode, {\n\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\tsymbol: {\n\t\t\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\t\t\tname: key,\n\t\t\t\t\t\t\tparam: parameter\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst value = arg.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\tmatched = false;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst trial = tryBindExpression(parameter.type, value, ctx, modelContext);\n\t\t\t\tmatched = trial.matched && matched;\n\t\t\t\tfor (const [node, resolution] of trial.references) references.set(node, resolution);\n\t\t\t\tfor (const [node, diagnostic] of trial.diagnostics) diagnostics.set(node, diagnostic);\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tmatched,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"identifier\": {\n\t\t\tif (rule.name === void 0) return {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst node = expression.syntax;\n\t\t\tif (IdentifierAst.cast(node)?.name() !== rule.name) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\treferences.set(node, {\n\t\t\t\tkind: \"constant\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"constant\",\n\t\t\t\t\tname: rule.name,\n\t\t\t\t\tdocumentation: rule.documentation\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tmatched: true,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"entityRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst written = writtenEntityReference(node);\n\t\t\tif (written === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveEntity(written, node, {\n\t\t\t\t...ctx,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"fieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveOwnerField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"referencedFieldRef\": {\n\t\t\tconst node = expression.syntax;\n\t\t\tconst name = IdentifierAst.cast(node)?.name();\n\t\t\tif (name === void 0 || modelContext === void 0) return {\n\t\t\t\tmatched: false,\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t\tconst failures = [];\n\t\t\tconst resolution = resolveReferencedField(name, node, {\n\t\t\t\t...modelContext,\n\t\t\t\tdiagnostics: failures\n\t\t\t});\n\t\t\treferences.set(node, resolution);\n\t\t\tfor (const diagnostic of failures) diagnostics.set(node, diagnostic);\n\t\t\treturn {\n\t\t\t\tmatched: resolution.kind !== \"unresolved\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"str\":\n\t\tcase \"json\": return {\n\t\t\tmatched: StringLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"num\":\n\t\tcase \"int\": return {\n\t\t\tmatched: NumberLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"bool\": return {\n\t\t\tmatched: BooleanLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"null\": return {\n\t\t\tmatched: IdentifierAst.cast(expression.syntax)?.name() === \"null\",\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"taggedLiteral\": return {\n\t\t\tmatched: TaggedLiteralExprAst.cast(expression.syntax) !== void 0,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t\tcase \"dataTypeValue\": {\n\t\t\tconst literal = readWrittenScalar(expression);\n\t\t\treturn {\n\t\t\t\tmatched: literal.ok || literal.reason !== \"not-a-literal\",\n\t\t\t\treferences,\n\t\t\t\tdiagnostics\n\t\t\t};\n\t\t}\n\t\tcase \"rejecting\": return {\n\t\t\tmatched: false,\n\t\t\treferences,\n\t\t\tdiagnostics\n\t\t};\n\t}\n}\nfunction recordValues(expression) {\n\tconst record = ObjectLiteralExprAst.cast(expression.syntax);\n\tif (record === void 0) return void 0;\n\treturn (function* () {\n\t\tfor (const field of record.fields()) {\n\t\t\tconst value = field.value();\n\t\t\tif (value !== void 0) yield value;\n\t\t}\n\t})();\n}\nfunction bindAttributes(holder, attributes, specs, instantiate, ctx) {\n\tconst declared = holder.node.attributes();\n\tconst nodes = Array.from(declared);\n\tconst level = holder.kind === \"field\" ? \"field\" : \"model\";\n\tattributes.forEach((attribute, index) => {\n\t\tconst factory = own(specs, attribute.name);\n\t\tif (factory === void 0) {\n\t\t\tconst diagnostic = ctx.describeUnsupportedAttribute?.({\n\t\t\t\tattribute,\n\t\t\t\tlevel,\n\t\t\t\towner: ctx.owner,\n\t\t\t\tfield: level === \"field\" ? ctx.field : void 0\n\t\t\t});\n\t\t\tif (diagnostic !== void 0) ctx.diagnostics.push(diagnostic);\n\t\t\treturn;\n\t\t}\n\t\tconst spec = instantiate(factory);\n\t\tif (spec === void 0) return;\n\t\tconst attributeSymbol = {\n\t\t\tkind: \"attribute\",\n\t\t\tname: attribute.name,\n\t\t\tlevel,\n\t\t\tspec\n\t\t};\n\t\tconst nameNode = nodes[index]?.name()?.syntax;\n\t\tif (nameNode !== void 0) ctx.references.set(nameNode, {\n\t\t\tkind: \"attribute\",\n\t\t\tsymbol: attributeSymbol\n\t\t});\n\t\tbindArguments(attribute, spec, ctx, ctx);\n\t});\n}\nfunction bindArguments(attribute, spec, ctx, modelContext) {\n\tconst rawArgs = Array.from(attribute.node.argList()?.args() ?? []);\n\tlet positional = 0;\n\tattribute.args.forEach((arg, index) => {\n\t\tconst parameter = argumentParameter(spec, arg.name, arg.name === void 0 ? positional++ : positional);\n\t\tif (parameter === void 0) return;\n\t\tif (arg.name !== void 0) {\n\t\t\tconst keyNode = rawArgs[index]?.name()?.syntax;\n\t\t\tif (keyNode !== void 0) ctx.references.set(keyNode, {\n\t\t\t\tkind: \"parameter\",\n\t\t\t\tsymbol: {\n\t\t\t\t\tkind: \"parameter\",\n\t\t\t\t\tname: arg.name,\n\t\t\t\t\tparam: parameter\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tif (arg.expression === void 0) return;\n\t\tbindExpression(parameter.type, arg.expression, ctx, modelContext);\n\t});\n}\nfunction argumentParameter(spec, name, position) {\n\tif (name === void 0) return spec.positional?.[position];\n\treturn spec.named === void 0 ? void 0 : own(spec.named, name);\n}\nfunction resolveOwnerField(name, node, ctx) {\n\tconst field = ctx.owner.fields[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on \"${ctx.owner.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction resolveReferencedField(name, node, ctx) {\n\tconst declaring = ctx.field;\n\tif (declaring === void 0) return {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n\tif (declaring.typeContractSpaceId !== void 0) return { kind: \"crossSpace\" };\n\tconst typeNode = typeReferenceNode(declaring);\n\tconst field = targetFields(typeNode === void 0 ? void 0 : ctx.references.get(typeNode))?.[name];\n\tif (field !== void 0) return {\n\t\tkind: \"field\",\n\t\tsymbol: field\n\t};\n\treport(`Cannot find field \"${name}\" on the type of \"${ctx.owner.name}.${declaring.name}\"`, node, ctx, \"field\");\n\treturn {\n\t\tkind: \"unresolved\",\n\t\tname\n\t};\n}\nfunction targetFields(target) {\n\tif (target === void 0) return void 0;\n\tif (target.kind === \"model\" || target.kind === \"compositeType\") return target.symbol.fields;\n}\nfunction resolveEntity(written, node, ctx) {\n\tconst found = written.namespace === void 0 ? ctx.scope.lookup(written.name) : qualifiedMember(written.namespace, written.name, bindQualifier(entityQualifier(node), ctx.scope, ctx.references));\n\tif (found === void 0) {\n\t\tconst name = describeWrittenEntityReference(written);\n\t\tif (written.name !== \"\") report(`Cannot find entity \"${name}\"`, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) {\n\t\treport(found.badQualifier, node, ctx, \"entity\");\n\t\treturn {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t};\n\t}\n\treturn found;\n}\nfunction report(message, node, ctx, reference) {\n\tctx.diagnostics.push({\n\t\tcode: PSL_UNRESOLVED_REFERENCE,\n\t\tmessage,\n\t\tdata: { reference },\n\t\t...diagnosticSource(ctx.sources, node).at()\n\t});\n}\nfunction entityQualifier(node) {\n\tconst path = PathExprAst.cast(node);\n\tif (path === void 0) return void 0;\n\tconst [qualifier] = path.segments();\n\treturn qualifier;\n}\nfunction bindQualifier(qualifier, scope, references) {\n\tconst id = qualifier?.name();\n\tif (qualifier === void 0 || id === void 0) return void 0;\n\tconst resolution = scope.lookup(id);\n\tif (resolution !== void 0 && isNamespaceLike(resolution)) references.set(qualifier.syntax, resolution);\n\treturn resolution;\n}\nfunction resolveTypeReference(reference, scope, references, describeUnresolved) {\n\tif (reference === void 0 || reference.isOverQualified()) return void 0;\n\tif (reference.space() !== void 0) return { resolution: { kind: \"crossSpace\" } };\n\tconst name = reference.identifier()?.name();\n\tif (name === void 0 || name === \"\") return void 0;\n\tconst qualifier = reference.namespace();\n\tconst namespaceId = qualifier?.name();\n\tconst found = namespaceId === void 0 ? scope.lookup(name) : qualifiedMember(namespaceId, name, bindQualifier(qualifier, scope, references));\n\tif (found === void 0) {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\tconst message = describeUnresolved?.(written) ?? `Cannot find type \"${written}\"`;\n\t\treturn {\n\t\t\tresolution: {\n\t\t\t\tkind: \"unresolved\",\n\t\t\t\tname: written\n\t\t\t},\n\t\t\tmessage,\n\t\t\tname: written\n\t\t};\n\t}\n\tif (\"badQualifier\" in found) return {\n\t\tresolution: {\n\t\t\tkind: \"unresolved\",\n\t\t\tname: found.qualifier\n\t\t},\n\t\tmessage: found.badQualifier,\n\t\tname: found.qualifier\n\t};\n\tif (found.kind === \"namespace\" || found.kind === \"contributedNamespace\") {\n\t\tconst written = namespaceId === void 0 ? name : `${namespaceId}.${name}`;\n\t\treturn {\n\t\t\tresolution: found,\n\t\t\tmessage: `\"${written}\" is a namespace; a type reference must name a model, composite type, enum, or named type`,\n\t\t\tname: written\n\t\t};\n\t}\n\treturn { resolution: found };\n}\nfunction qualifiedMember(namespaceId, name, qualifier) {\n\tif (qualifier === void 0) return void 0;\n\tif (!isNamespaceLike(qualifier)) return {\n\t\tbadQualifier: `\"${namespaceId}\" is ${describeQualifier(qualifier)}, not a namespace`,\n\t\tqualifier: namespaceId\n\t};\n\treturn lookupMember(qualifier, name);\n}\nfunction describeQualifier(resolution) {\n\tswitch (resolution.kind) {\n\t\tcase \"model\": return \"a model\";\n\t\tcase \"compositeType\": return \"a composite type\";\n\t\tcase \"namedType\": return \"a named type\";\n\t\tcase \"block\": return `${resolution.symbol.keyword === \"enum\" ? \"an\" : \"a\"} ${resolution.symbol.keyword}`;\n\t\tdefault: return \"a scalar type\";\n\t}\n}\nfunction own(record, name) {\n\treturn Object.hasOwn(record, name) ? record[name] : void 0;\n}\n//#endregion\n//#region src/symbol-table.ts\n/**\n* Owns duplicate-declaration detection for all PSL scopes; downstream consumers\n* should consume first-wins symbols rather than re-emitting duplicate diagnostics.\n*/\nfunction buildSymbolTable(options) {\n\tconst { documents, sources } = options;\n\tconst diagnostics = [];\n\tconst namespaces = Object.create(null);\n\tconst namedTypes = Object.create(null);\n\tconst blocks = Object.create(null);\n\tconst models = Object.create(null);\n\tconst compositeTypes = Object.create(null);\n\tconst topLevelNames = /* @__PURE__ */ new Set();\n\tfor (const document of documents) {\n\t\tconst sourceFile = sources.sourceFileFor(document.syntax);\n\t\tconst claim = (taken, name) => {\n\t\t\tconst text = name?.name();\n\t\t\tif (text === void 0) return void 0;\n\t\t\tif (taken.has(text)) {\n\t\t\t\tconst range = nameRange(name, sources);\n\t\t\t\tif (range) diagnostics.push({\n\t\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\t\tmessage: `Duplicate declaration of \"${text}\"`,\n\t\t\t\t\tfilename: sourceFile.filename,\n\t\t\t\t\trange\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttaken.add(text);\n\t\t\treturn text;\n\t\t};\n\t\tfor (const declaration of document.declarations()) if (declaration instanceof ModelDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) models[name] = buildModel(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof CompositeTypeDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) compositeTypes[name] = buildCompositeType(name, declaration, sources, diagnostics);\n\t\t} else if (declaration instanceof GenericBlockDeclarationAst) {\n\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\tif (name !== void 0) blocks[name] = buildBlock(name, declaration, sources);\n\t\t} else if (declaration instanceof NamespaceDeclarationAst) {\n\t\t\tconst declaredName = declaration.name()?.name();\n\t\t\tif (declaredName === void 0) continue;\n\t\t\tlet namespace = namespaces[declaredName];\n\t\t\tif (namespace === void 0) {\n\t\t\t\tconst name = claim(topLevelNames, declaration.name());\n\t\t\t\tif (name === void 0) continue;\n\t\t\t\tnamespace = {\n\t\t\t\t\tkind: \"namespace\",\n\t\t\t\t\tname,\n\t\t\t\t\tdeclarations: [{\n\t\t\t\t\t\tnode: declaration,\n\t\t\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t\t\t}],\n\t\t\t\t\tmodels: Object.create(null),\n\t\t\t\t\tcompositeTypes: Object.create(null),\n\t\t\t\t\tblocks: Object.create(null)\n\t\t\t\t};\n\t\t\t\tnamespaces[name] = namespace;\n\t\t\t} else namespace.declarations.push({\n\t\t\t\tnode: declaration,\n\t\t\t\tspan: nodePslSpan(declaration.syntax, sources)\n\t\t\t});\n\t\t\textendNamespace(namespace, declaration, diagnostics, sources);\n\t\t} else if (declaration instanceof TypesBlockAst) for (const binding of declaration.declarations()) {\n\t\t\tconst name = claim(topLevelNames, binding.name());\n\t\t\tif (name === void 0) continue;\n\t\t\tconst resolved = resolveNamedTypeBinding(binding, sources);\n\t\t\tnamedTypes[name] = {\n\t\t\t\tkind: \"namedType\",\n\t\t\t\tname,\n\t\t\t\tnode: binding,\n\t\t\t\tspan: nodePslSpan(binding.syntax, sources),\n\t\t\t\t...resolved\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tsymbolTable: { topLevel: {\n\t\t\tnamespaces,\n\t\t\tnamedTypes,\n\t\t\tblocks,\n\t\t\tmodels,\n\t\t\tcompositeTypes\n\t\t} },\n\t\tdiagnostics\n\t};\n}\nfunction buildModel(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"model\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildCompositeType(name, node, sources, diagnostics) {\n\treturn {\n\t\tkind: \"compositeType\",\n\t\tname,\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources),\n\t\tfields: buildFields(name, node.fields(), sources, diagnostics),\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction buildBlock(name, node, sources) {\n\treturn {\n\t\tkind: \"block\",\n\t\tname,\n\t\tkeyword: node.keyword()?.text ?? \"\",\n\t\tnode,\n\t\tspan: nodePslSpan(node.syntax, sources)\n\t};\n}\nfunction extendNamespace(namespace, node, diagnostics, sources) {\n\tconst { models, compositeTypes, blocks } = namespace;\n\tfor (const member of node.declarations()) {\n\t\tconst memberName = member.name()?.name();\n\t\tif (memberName === void 0) continue;\n\t\tif (Object.hasOwn(models, memberName) || Object.hasOwn(compositeTypes, memberName) || Object.hasOwn(blocks, memberName)) {\n\t\t\tconst range = nameRange(member.name(), sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${memberName}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(member.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (member instanceof ModelDeclarationAst) models[memberName] = buildModel(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof CompositeTypeDeclarationAst) compositeTypes[memberName] = buildCompositeType(memberName, member, sources, diagnostics);\n\t\telse if (member instanceof GenericBlockDeclarationAst) blocks[memberName] = buildBlock(memberName, member, sources);\n\t}\n}\nfunction buildFields(ownerName, fields, sources, diagnostics) {\n\tconst result = Object.create(null);\n\tfor (const field of fields) {\n\t\tconst nameNode = field.name();\n\t\tconst name = nameNode?.name();\n\t\tif (name === void 0) continue;\n\t\tif (Object.hasOwn(result, name)) {\n\t\t\tconst range = nameRange(nameNode, sources);\n\t\t\tif (range) diagnostics.push({\n\t\t\t\tcode: \"PSL_DUPLICATE_DECLARATION\",\n\t\t\t\tmessage: `Duplicate declaration of \"${name}\"`,\n\t\t\t\tfilename: sources.sourceFileFor(field.syntax).filename,\n\t\t\t\trange\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tresult[name] = buildField(ownerName, name, field, sources, diagnostics);\n\t}\n\treturn result;\n}\nfunction buildField(ownerName, name, node, sources, diagnostics) {\n\tconst attributes = readResolvedAttributes(node.attributes(), sources);\n\tconst span = nodePslSpan(node.syntax, sources);\n\tconst annotation = node.typeAnnotation();\n\tconst typeName = annotation?.name();\n\tif (typeName?.isOverQualified()) {\n\t\tconst path = typeName.path();\n\t\tdiagnostics.push({\n\t\t\tcode: \"PSL_INVALID_QUALIFIED_TYPE\",\n\t\t\tmessage: `Field \"${ownerName}.${name}\" has an invalid qualified type \"${path.join(\".\")}\"; use at most one namespace qualifier (e.g. \"ns.TypeName\")`,\n\t\t\tfilename: sources.sourceFileFor(typeName.syntax).filename,\n\t\t\trange: nodeRange(typeName.syntax, sources)\n\t\t});\n\t\treturn {\n\t\t\tkind: \"field\",\n\t\t\tname,\n\t\t\tnode,\n\t\t\tspan,\n\t\t\ttypeName: path[path.length - 1] ?? \"\",\n\t\t\toptional: false,\n\t\t\tlist: false,\n\t\t\telementOptional: false,\n\t\t\tmalformedType: true,\n\t\t\tattributes\n\t\t};\n\t}\n\tconst typeConstructor = annotation?.isConstructor() ? readResolvedConstructorCall(annotation, sources) : void 0;\n\tconst typeNamespaceId = typeName?.namespace()?.name();\n\tconst typeContractSpaceId = typeName?.space()?.name();\n\treturn {\n\t\tkind: \"field\",\n\t\tname,\n\t\tnode,\n\t\tspan,\n\t\ttypeName: typeName?.identifier()?.name() ?? \"\",\n\t\t...typeNamespaceId !== void 0 ? { typeNamespaceId } : {},\n\t\t...typeContractSpaceId !== void 0 ? { typeContractSpaceId } : {},\n\t\toptional: annotation?.isOptional() ?? false,\n\t\tlist: annotation?.isList() ?? false,\n\t\telementOptional: annotation?.isElementOptional() ?? false,\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes\n\t};\n}\nfunction resolveNamedTypeBinding(node, sources) {\n\tconst annotation = node.typeAnnotation();\n\tconst isConstructor = annotation?.isConstructor() ?? false;\n\tconst baseType = annotation?.name()?.identifier()?.name();\n\tconst typeConstructor = readResolvedConstructorCall(annotation, sources);\n\treturn {\n\t\tisConstructor,\n\t\t...!isConstructor && baseType !== void 0 ? { baseType } : {},\n\t\t...typeConstructor !== void 0 ? { typeConstructor } : {},\n\t\tattributes: readResolvedAttributes(node.attributes(), sources)\n\t};\n}\nfunction nameRange(name, sources) {\n\tif (name === void 0) return void 0;\n\tconst sourceFile = sources.sourceFileFor(name.syntax);\n\tfor (const token of name.syntax.tokens()) if (token.kind === \"Ident\") return {\n\t\tstart: sourceFile.positionAt(token.offset),\n\t\tend: sourceFile.positionAt(token.offset + token.text.length)\n\t};\n}\nfunction nodeRange(node, sources) {\n\tconst sourceFile = sources.sourceFileFor(node);\n\tconst start = node.offset;\n\tconst end = start + node.green.textLength;\n\treturn {\n\t\tstart: sourceFile.positionAt(start),\n\t\tend: sourceFile.positionAt(end)\n\t};\n}\n//#endregion\nexport { typeReferenceNode as a, findBlockDescriptor as c, describeWrittenEntityReference as d, entityReference as f, assembleAttributeSpecs as g, readWrittenScalar as h, createBinder as i, blockSpecFactoryOf as l, writtenEntityReference as m, PSL_UNRESOLVED_REFERENCE as n, isNamespaceLike as o, matchesSelector as p, contributedTypeOf as r, memberEntries as s, buildSymbolTable as t, describeResolution as u };\n\n//# sourceMappingURL=symbol-table-BtWXPbMr.mjs.map","import { a as typeReferenceNode, c as findBlockDescriptor, d as describeWrittenEntityReference, f as entityReference, g as assembleAttributeSpecs, h as readWrittenScalar, i as createBinder, l as blockSpecFactoryOf, m as writtenEntityReference, n as PSL_UNRESOLVED_REFERENCE, o as isNamespaceLike, p as matchesSelector, r as contributedTypeOf, s as memberEntries, t as buildSymbolTable, u as describeResolution } from \"./symbol-table-BtWXPbMr.mjs\";\nimport { n as isPslIdentifier } from \"./tokenizer-BMz7z2KR.mjs\";\nimport { C as TaggedLiteralExprAst, D as IdentifierAst, S as StringLiteralExprAst, _ as FunctionCallAst, b as ObjectLiteralExprAst, g as BooleanLiteralExprAst, m as ArrayLiteralAst, v as NumberLiteralExprAst } from \"./declarations-5xLxC310.mjs\";\nimport { a as readResolvedConstructorCall, c as diagnosticSource, i as readResolvedAttributes, l as mapPslDiagnostics, n as nodePslSpan, o as createPslDiagnosticCollector, r as readResolvedAttribute, s as diagnosticFromSpan, t as keywordPslSpan } from \"./resolve-C8PUf8zv.mjs\";\nimport { flatPslModels, namespacePslExtensionBlocks } from \"@internal/framework-components/psl-ast\";\nimport { admittedForms, admittedTags, castTypedValue, describeAdmittedForms, describeExpected, describeRefusal, exactRewrite, readWrittenValue, tagForm } from \"@internal/framework-components/authoring\";\nimport { blindCast } from \"@internal/utils/casts\";\nimport { InternalError } from \"@internal/utils/internal-error\";\nimport { and, notOk, ok, okVoid, or } from \"@internal/utils/result\";\nimport { describeTaggedLiteralFailure } from \"@internal/framework-components/control\";\nimport { createDataTypeLookup } from \"@internal/framework-components/codec\";\n//#region src/attribute-helpers.ts\nfunction getPositionalArgument(attribute, index = 0) {\n\treturn attribute.args.filter((arg) => arg.kind === \"positional\")[index]?.value;\n}\nfunction parseQuotedStringLiteral(value) {\n\tconst match = value.trim().match(/^(['\"])(.*)\\1$/);\n\tif (!match) return void 0;\n\treturn match[2] ?? \"\";\n}\n//#endregion\n//#region src/attribute-spec/block-attribute.ts\nfunction blockAttribute(name, config) {\n\treturn {\n\t\tlevel: \"block\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: config.named ?? {},\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/diagnostic.ts\nconst ATTRIBUTE_DIAGNOSTIC_CODE = \"PSL_INVALID_ATTRIBUTE_SYNTAX\";\nfunction leafDiagnostic(ctx, node, message, code = ATTRIBUTE_DIAGNOSTIC_CODE) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(nodePslSpan(node.syntax, ctx.sources))\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/bool.ts\nfunction bool() {\n\treturn {\n\t\tkind: \"bool\",\n\t\tlabel: \"boolean\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = BooleanLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a boolean literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/data-type-value.ts\nconst TAGGED_LITERAL_FAILURE_CODES = {\n\tnul: \"PSL_TAGGED_LITERAL_NUL\",\n\t\"too-large\": \"PSL_TAGGED_LITERAL_TOO_LARGE\"\n};\n/** An argument typed by a data type: any literal, admitted by the ADR 254 cast rule. Used as a parameter of an attribute or a `funcCall`. ADR 231, ADR 254. */\nfunction dataTypeValue(dataType, support) {\n\tconst tags = admittedTags(support, dataType);\n\tconst [firstTag] = tags;\n\tconst forms = admittedForms(support, [dataType]);\n\treturn {\n\t\tkind: \"dataTypeValue\",\n\t\tlabel: firstTag === void 0 ? describeAdmittedForms(support, dataType) : tagForm(firstTag).phrase,\n\t\tdataType,\n\t\ttags,\n\t\tdocumentation: support.entries[dataType]?.documentation ?? \"\",\n\t\tparse: (arg, ctx) => parseDataTypeValue(arg, ctx, dataType, support, forms)\n\t};\n}\nfunction parseDataTypeValue(arg, ctx, dataType, support, forms) {\n\tif (!support.lookup.has(dataType)) throw new InternalError(`An argument receives data type \"${dataType}\", which this stack does not register.`);\n\tif (forms.length === 0) throw new InternalError(`An argument receives data type \"${dataType}\", which nothing in this stack writes.`);\n\tconst refuse = ({ code, message }) => notOk([leafDiagnostic(ctx, arg, message, code)]);\n\tconst literal = readWrittenScalar(arg);\n\tif (!literal.ok) return literal.reason === \"not-a-literal\" ? refuse({\n\t\tcode: \"PSL_INVALID_ATTRIBUTE_SYNTAX\",\n\t\tmessage: `${describeExpected(forms)}; got ${literal.found}`\n\t}) : refuse({\n\t\tcode: TAGGED_LITERAL_FAILURE_CODES[literal.reason],\n\t\tmessage: describeTaggedLiteralFailure(literal.reason)\n\t});\n\tconst read = readWrittenValue(support, literal.written);\n\tif (!read.ok) return refuse(describeRefusal(read.failure, support, {\n\t\tforms,\n\t\trewrite: void 0\n\t}));\n\tconst cast = castTypedValue(support, dataType, read.value);\n\tif (!cast.ok) {\n\t\tconst rewrite = exactRewrite(support, dataType, literal.written);\n\t\treturn refuse(describeRefusal(cast.failure, support, {\n\t\t\tforms,\n\t\t\trewrite\n\t\t}));\n\t}\n\treturn ok({\n\t\ttype: dataType,\n\t\tvalue: cast.value.value,\n\t\tspan: nodePslSpan(arg.syntax, ctx.sources)\n\t});\n}\n//#endregion\n//#region src/attribute-spec/combinators/entity-ref.ts\nfunction entityRef(expected) {\n\tconst label = `${expected.kind === \"block\" ? expected.keyword : expected.kind} reference`;\n\treturn {\n\t\tkind: \"entityRef\",\n\t\tlabel,\n\t\texpected,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst written = writtenEntityReference(arg.syntax);\n\t\t\tif (written === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t\tconst name = describeWrittenEntityReference(written);\n\t\t\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\t\t\tif (resolution === void 0 || resolution.kind === \"unresolved\") return notOk([]);\n\t\t\tconst reference = entityReference(resolution);\n\t\t\tif (reference === void 0 || !matchesSelector(reference, expected)) return notOk([leafDiagnostic(ctx, arg, `Expected ${label} \"${name}\", found ${describeResolution(resolution)}`)]);\n\t\t\treturn ok(reference);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/field-ref.ts\nfunction parseFieldName(arg, ctx) {\n\tconst identifier = IdentifierAst.cast(arg.syntax);\n\tif (identifier === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst name = identifier.name();\n\tif (name === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a field name\")]);\n\tconst resolution = ctx.binder.symbolForNode(arg.syntax);\n\tif (resolution === void 0) return notOk([]);\n\tif (resolution.kind === \"field\") return ok(resolution.symbol.name);\n\tif (resolution.kind === \"crossSpace\") return ok(name);\n\treturn notOk([]);\n}\nfunction fieldRef() {\n\treturn {\n\t\tkind: \"fieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\nfunction referencedFieldRef() {\n\treturn {\n\t\tkind: \"referencedFieldRef\",\n\t\tlabel: \"field name\",\n\t\tparse: parseFieldName\n\t};\n}\n//#endregion\n//#region src/attribute-spec/interpret.ts\nfunction interpretArgs(args, spec, ctx, span, sourceNode) {\n\tlet outcome = okVoid();\n\tconst output = {};\n\tconst seen = /* @__PURE__ */ new Set();\n\tlet positionalSlot = 0;\n\tlet reportedExcess = false;\n\tfor (const arg of args) {\n\t\tconst name = arg.name()?.name();\n\t\tlet key;\n\t\tlet param;\n\t\tif (name === void 0) {\n\t\t\tconst posParam = spec.positional[positionalSlot];\n\t\t\tif (posParam === void 0) {\n\t\t\t\tif (!reportedExcess) {\n\t\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received too many positional arguments`, ctx, span, sourceNode)]));\n\t\t\t\t\treportedExcess = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpositionalSlot += 1;\n\t\t\tkey = posParam.key;\n\t\t\tparam = posParam.type;\n\t\t} else {\n\t\t\tconst namedParam = Object.hasOwn(spec.named, name) ? spec.named[name] : void 0;\n\t\t\tif (namedParam === void 0) {\n\t\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received unknown argument \"${name}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tkey = name;\n\t\t\tparam = namedParam.type;\n\t\t}\n\t\tif (seen.has(key)) {\n\t\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" received duplicate argument \"${key}\"`, ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst result = parseArgValue(arg, param, ctx);\n\t\tif (result.ok) output[key] = result.value;\n\t\toutcome = and(outcome, result);\n\t}\n\tconst finalized = /* @__PURE__ */ new Set();\n\tconst finalizeAbsentKey = (key, positionalParam, namedParam) => {\n\t\tif (finalized.has(key) || seen.has(key)) return;\n\t\tfinalized.add(key);\n\t\tconst effective = namedParam ?? positionalParam;\n\t\tif (effective === void 0) return;\n\t\tif (isOptionalArgType(effective)) {\n\t\t\tif (effective.hasDefault) output[key] = effective.defaultValue;\n\t\t\treturn;\n\t\t}\n\t\toutcome = and(outcome, notOk([diagnostic(`Attribute \"${spec.name}\" is missing required argument \"${key}\"`, ctx, span, sourceNode)]));\n\t};\n\tfor (const param of spec.positional) {\n\t\tconst namedParam = Object.hasOwn(spec.named, param.key) ? spec.named[param.key] : void 0;\n\t\tfinalizeAbsentKey(param.key, param.type, namedParam?.type);\n\t}\n\tfor (const key of Object.keys(spec.named)) finalizeAbsentKey(key, void 0, spec.named[key]?.type);\n\tif (!outcome.ok) return notOk(outcome.failure);\n\treturn ok(output);\n}\nfunction interpretAttribute(attrNode, spec, ctx) {\n\tconst attributeSpan = nodePslSpan(attrNode.syntax, ctx.sources);\n\tconst bound = interpretArgs(attrNode.argList()?.args() ?? [], spec, ctx, attributeSpan, attrNode.syntax);\n\tif (!bound.ok) return notOk(bound.failure);\n\tconst value = blindCast(bound.value);\n\tif (spec.refine !== void 0) {\n\t\tconst refineDiagnostics = spec.refine(value, ctx, attrNode);\n\t\tif (refineDiagnostics.length > 0) return notOk(refineDiagnostics);\n\t}\n\treturn ok(value);\n}\nfunction parseArgValue(arg, argType, ctx) {\n\tconst value = arg.value();\n\tif (value === void 0) return notOk([diagnostic(\"Attribute argument is missing a value\", ctx, nodePslSpan(arg.syntax, ctx.sources), arg.syntax)]);\n\treturn argType.parse(value, ctx);\n}\nfunction isOptionalArgType(param) {\n\treturn \"optional\" in param && param.optional === true;\n}\nfunction diagnostic(message, ctx, span, sourceNode) {\n\treturn {\n\t\tcode: ATTRIBUTE_DIAGNOSTIC_CODE,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, sourceNode).at(span)\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/func-call.ts\nfunction funcCall(name, sig) {\n\treturn {\n\t\tkind: \"funcCall\",\n\t\tlabel: `${name}()`,\n\t\tname,\n\t\tsignature: sig,\n\t\tclaims: (arg) => plainCallee(arg)?.name === name,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst guard = matchCallee(arg, name, ctx);\n\t\t\tif (!guard.ok) return guard;\n\t\t\tconst span = nodePslSpan(guard.value.syntax, ctx.sources);\n\t\t\tconst bound = interpretArgs(guard.value.args(), {\n\t\t\t\tname,\n\t\t\t\tpositional: sig.positional ?? [],\n\t\t\t\tnamed: sig.named ?? {}\n\t\t\t}, ctx, span, guard.value.syntax);\n\t\t\tif (!bound.ok) return notOk(bound.failure);\n\t\t\treturn ok({\n\t\t\t\tfn: name,\n\t\t\t\tspan,\n\t\t\t\targs: bound.value\n\t\t\t});\n\t\t}\n\t};\n}\nfunction plainCallee(arg) {\n\tconst call = FunctionCallAst.cast(arg.syntax);\n\tconst qname = call?.name();\n\tif (call === void 0 || qname === void 0) return void 0;\n\tif (qname.dot() !== void 0 || qname.colon() !== void 0) return void 0;\n\tconst name = qname.identifier()?.token()?.text;\n\treturn name === void 0 ? void 0 : {\n\t\tcall,\n\t\tname\n\t};\n}\nfunction matchCallee(arg, name, ctx) {\n\tconst callee = plainCallee(arg);\n\tif (callee === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a function call\")]);\n\tif (callee.name !== name) return notOk([leafDiagnostic(ctx, arg, `Expected ${name}()`)]);\n\treturn ok(callee.call);\n}\n//#endregion\n//#region src/attribute-spec/combinators/identifier.ts\nfunction identifier(name, options) {\n\tconst label = name ?? \"identifier\";\n\treturn {\n\t\tkind: \"identifier\",\n\t\tlabel,\n\t\tname,\n\t\tdocumentation: options?.documentation ?? \"\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = IdentifierAst.cast(arg.syntax)?.name();\n\t\t\tif (value !== void 0 && (name === void 0 || value === name)) return ok(value);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/int.ts\nfunction int(opts) {\n\tconst min = opts?.min;\n\tconst max = opts?.max;\n\treturn {\n\t\tkind: \"int\",\n\t\tlabel: \"integer\",\n\t\t...min === void 0 ? {} : { min },\n\t\t...max === void 0 ? {} : { max },\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst value = literal.value();\n\t\t\t\tif (value !== void 0 && Number.isInteger(value)) {\n\t\t\t\t\tif ((min === void 0 || value >= min) && (max === void 0 || value <= max)) return ok(value);\n\t\t\t\t\treturn notOk([leafDiagnostic(ctx, arg, rangeMessage(min, max))]);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected an integer literal\")]);\n\t\t}\n\t};\n}\nfunction rangeMessage(min, max) {\n\tif (min !== void 0 && max !== void 0) return `Expected an integer between ${min} and ${max}`;\n\tif (min !== void 0) return `Expected an integer greater than or equal to ${min}`;\n\treturn `Expected an integer less than or equal to ${max}`;\n}\n//#endregion\n//#region src/attribute-spec/combinators/json.ts\n/**\n* Reads an opaque JSON object from a quoted JSON string — the ADR's one text-encoded surface\n* exception (e.g. an index `filter` / `weights` argument). The string is decoded by the parser,\n* then JSON-parsed; a non-object (array/scalar) or invalid JSON is a diagnostic.\n*/\nfunction json() {\n\treturn {\n\t\tkind: \"json\",\n\t\tlabel: \"JSON object\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a JSON object string\")]);\n\t\t\tconst raw = literal.value();\n\t\t\tif (raw !== void 0) try {\n\t\t\t\tconst parsed = JSON.parse(raw);\n\t\t\t\tif (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) return ok(blindCast(parsed));\n\t\t\t} catch {}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a valid JSON object\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/list.ts\nfunction list(of, opts) {\n\tconst allowEmpty = opts?.allowEmpty ?? true;\n\tconst unique = opts?.unique ?? false;\n\treturn {\n\t\tkind: \"list\",\n\t\tlabel: opts?.label ?? (of.label.includes(\" | \") ? `(${of.label})[]` : `${of.label}[]`),\n\t\tof,\n\t\tallowEmpty,\n\t\tunique,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ArrayLiteralAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, `Expected a list of ${of.label}`)]);\n\t\t\tconst parsed = [];\n\t\t\tlet outcome = okVoid();\n\t\t\tlet count = 0;\n\t\t\tfor (const element of literal.elements()) {\n\t\t\t\tcount += 1;\n\t\t\t\tconst result = of.parse(element, ctx);\n\t\t\t\tif (result.ok) parsed.push({\n\t\t\t\t\tnode: element,\n\t\t\t\t\tvalue: result.value\n\t\t\t\t});\n\t\t\t\toutcome = and(outcome, result);\n\t\t\t}\n\t\t\tif (!allowEmpty && count === 0) outcome = and(outcome, notOk([leafDiagnostic(ctx, arg, \"Expected a non-empty list\")]));\n\t\t\tif (unique) {\n\t\t\t\tconst seen = /* @__PURE__ */ new Set();\n\t\t\t\tfor (const { node, value } of parsed) if (seen.has(value)) outcome = and(outcome, notOk([leafDiagnostic(ctx, node, \"Duplicate list entry\")]));\n\t\t\t\telse seen.add(value);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(parsed.map((entry) => entry.value));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/one-of.ts\n/**\n* The first alternative that accepts the argument. When exactly one alternative claims the argument's shape, its result, success or failure, so its diagnostics about the argument are kept.\n*/\nfunction oneOf(...alts) {\n\tconst label = alts.map((alt) => alt.label).join(\" | \");\n\treturn {\n\t\tkind: \"oneOf\",\n\t\tlabel,\n\t\talternatives: alts,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst [head, ...tail] = blindCast(alts);\n\t\t\tconst claiming = [head, ...tail].filter((alt) => alt.claims?.(arg) === true);\n\t\t\tconst [only] = claiming;\n\t\t\tif (only !== void 0 && claiming.length === 1) return only.parse(arg, ctx);\n\t\t\tlet rejection = head.parse(arg, ctx);\n\t\t\tif (rejection.ok) return rejection;\n\t\t\tfor (const alt of tail) {\n\t\t\t\tconst result = alt.parse(arg, ctx);\n\t\t\t\tif (result.ok) return result;\n\t\t\t\trejection = or(rejection, result);\n\t\t\t}\n\t\t\tif (!rejection.ok && rejection.failure.length === 0) return notOk([]);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected one of: ${label}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/record.ts\nfunction record(of) {\n\treturn {\n\t\tkind: \"record\",\n\t\tlabel: `{ [key]: ${of.label} }`,\n\t\tof,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = ObjectLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected an object literal\")]);\n\t\t\tconst entries = [];\n\t\t\tconst keys = /* @__PURE__ */ new Set();\n\t\t\tlet outcome = okVoid();\n\t\t\tfor (const field of Array.from(literal.fields())) {\n\t\t\t\tconst key = field.keyName();\n\t\t\t\tif (key === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, \"Expected a key\")]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = field.value();\n\t\t\t\tif (value === void 0) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Expected a value for key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst parsed = of.parse(value, ctx);\n\t\t\t\tif (!parsed.ok) {\n\t\t\t\t\toutcome = and(outcome, parsed);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (keys.has(key)) {\n\t\t\t\t\toutcome = and(outcome, notOk([leafDiagnostic(ctx, field, `Duplicate key \"${key}\"`)]));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tkeys.add(key);\n\t\t\t\tentries.push([key, parsed.value]);\n\t\t\t}\n\t\t\tif (!outcome.ok) return notOk(outcome.failure);\n\t\t\treturn ok(Object.fromEntries(entries));\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/str.ts\nfunction str(value) {\n\tif (value === void 0) return {\n\t\tkind: \"str\",\n\t\tlabel: \"string\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a string literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"str\",\n\t\tlabel: JSON.stringify(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = StringLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${JSON.stringify(value)}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/json-value.ts\nfunction jsonValue() {\n\tconst self = {\n\t\tkind: \"oneOf\",\n\t\tlabel: \"JSON value\",\n\t\tget alternatives() {\n\t\t\treturn composed.alternatives;\n\t\t},\n\t\tparse: (arg, ctx) => composed.parse(arg, ctx)\n\t};\n\tconst composed = oneOf(str(), finiteNumber(), bool(), jsonNull(), list(self), record(self));\n\treturn self;\n}\nfunction finiteNumber() {\n\treturn {\n\t\tkind: \"num\",\n\t\tvalue: void 0,\n\t\tlabel: \"number\",\n\t\tparse: (arg, ctx) => {\n\t\t\tconst value = NumberLiteralExprAst.cast(arg.syntax)?.value();\n\t\t\tif (value === void 0 || Number.isNaN(value) || !Number.isFinite(value)) return notOk([leafDiagnostic(ctx, arg, \"Expected a finite number literal\")]);\n\t\t\treturn ok(value);\n\t\t}\n\t};\n}\nfunction jsonNull() {\n\treturn {\n\t\tkind: \"null\",\n\t\tlabel: \"null\",\n\t\tparse: (arg, ctx) => {\n\t\t\tif (IdentifierAst.cast(arg.syntax)?.name() === \"null\") return ok(null);\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected null\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num.ts\nfunction num(value) {\n\tif (value === void 0) return {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tconst parsed = literal.value();\n\t\t\t\tif (parsed !== void 0) return ok(parsed);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: String(value),\n\t\tvalue,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = NumberLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal !== void 0) {\n\t\t\t\tif (literal.value() === value) return ok(value);\n\t\t\t}\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, `Expected ${value}`)]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/num-literal.ts\n/** A number literal kept as its source text, for consumers that must not round it through a JS number. */\nfunction numLiteral() {\n\treturn {\n\t\tkind: \"num\",\n\t\tlabel: \"number\",\n\t\tvalue: void 0,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst text = NumberLiteralExprAst.cast(arg.syntax)?.token()?.text;\n\t\t\tif (text !== void 0) return ok({ text });\n\t\t\treturn notOk([leafDiagnostic(ctx, arg, \"Expected a number literal\")]);\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/combinators/tagged-literal.ts\n/**\n* A `` tag`...` ``, `tag\"...\"`, or `tag'...'` argument. `tags` and `documentation` describe the\n* registered tags for tooling; parsing accepts any tag.\n*/\nfunction taggedLiteral(tags, options) {\n\treturn {\n\t\tkind: \"taggedLiteral\",\n\t\tlabel: `${tags[0] ?? \"tag\"}\\`...\\``,\n\t\ttags,\n\t\tdocumentation: options.documentation,\n\t\tparse: (arg, ctx) => {\n\t\t\tconst literal = TaggedLiteralExprAst.cast(arg.syntax);\n\t\t\tif (literal === void 0) return notOk([leafDiagnostic(ctx, arg, \"Expected a tagged literal\")]);\n\t\t\treturn ok({\n\t\t\t\ttag: literal.tagName(),\n\t\t\t\tcanonicalization: literal.canonicalization(),\n\t\t\t\tspan: nodePslSpan(literal.syntax, ctx.sources)\n\t\t\t});\n\t\t}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/field-attribute.ts\nfunction fieldAttribute(name, config) {\n\treturn {\n\t\tlevel: \"field\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/model-attribute.ts\nfunction modelAttribute(name, config) {\n\treturn {\n\t\tlevel: \"model\",\n\t\tname,\n\t\tdocumentation: config.documentation,\n\t\tpositional: config.positional ?? [],\n\t\tnamed: Object.assign(Object.create(null), config.named),\n\t\t...config.refine !== void 0 ? { refine: config.refine } : {}\n\t};\n}\n//#endregion\n//#region src/attribute-spec/optional.ts\nfunction optional(type, ...rest) {\n\tif (rest.length === 0) return {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: false\n\t};\n\treturn {\n\t\t...type,\n\t\toptional: true,\n\t\thasDefault: true,\n\t\tdefaultValue: rest[0]\n\t};\n}\n//#endregion\n//#region src/attribute-spec/spec-context.ts\n/** The data types of a stack that registers none. */\nconst EMPTY_DATA_TYPES = {\n\tentries: {},\n\tlookup: createDataTypeLookup([])\n};\n//#endregion\n//#region src/block-spec/constructors.ts\nfunction structBlock(config) {\n\treturn {\n\t\tmode: \"struct\",\n\t\tparameters: config.parameters\n\t};\n}\nfunction mapBlock(config) {\n\treturn {\n\t\tmode: \"map\",\n\t\tvalue: config.value,\n\t\tallowBare: config.allowBare ?? false\n\t};\n}\n//#endregion\n//#region src/block-spec/interpret.ts\nfunction interpretExtensionBlock(input) {\n\tconst { block, descriptor, spec, symbols, sources, binder } = input;\n\tconst ctx = {\n\t\tsources,\n\t\tsymbols,\n\t\tbinder,\n\t\tselfBlock: block\n\t};\n\tconst entries = spec.mode === \"struct\" ? interpretStructBlock(block, spec, ctx) : interpretMapBlock(block, spec, ctx);\n\tconst diagnostics = [...entries.diagnostics];\n\tconst interpretedAttributes = interpretExtensionBlockAttributes({\n\t\tblock,\n\t\tdescriptor,\n\t\tsymbols,\n\t\tsources,\n\t\tbinder\n\t});\n\tdiagnostics.push(...interpretedAttributes.diagnostics);\n\tif (entries.failed || diagnostics.length > 0) return notOk(diagnostics);\n\treturn ok({\n\t\tkind: descriptor.discriminator,\n\t\tkeyword: block.keyword,\n\t\tname: block.name,\n\t\tvalues: blindCast(entries.values),\n\t\tparameterSpans: entries.parameterSpans,\n\t\tnumberTexts: entries.numberTexts,\n\t\tattributes: interpretedAttributes.attributes,\n\t\tspan: block.span\n\t});\n}\nfunction interpretStructBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst numberTexts = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tconst rule = Object.hasOwn(spec.parameters, key) ? spec.parameters[key]?.type : void 0;\n\t\tif (rule === void 0) {\n\t\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_UNKNOWN_PARAMETER\", `Unknown parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\". The block does not declare this parameter.`, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = rule.parse(value, ctx);\n\t\tif (parsed.ok) {\n\t\t\tvalues[key] = parsed.value;\n\t\t\trecordNumberText(numberTexts, key, value);\n\t\t} else {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\tfor (const [key, param] of Object.entries(spec.parameters)) {\n\t\tif (seen.has(key)) continue;\n\t\tif (isOptionalArgType(param.type)) {\n\t\t\tif (param.type.hasDefault) values[key] = param.type.defaultValue;\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push(entryDiagnostic(\"PSL_EXTENSION_MISSING_REQUIRED_PARAMETER\", `Required parameter \"${key}\" is missing from \"${block.keyword}\" block \"${block.name}\".`, ctx, block.node, block.span));\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tnumberTexts,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction interpretMapBlock(block, spec, ctx) {\n\tconst diagnostics = [];\n\tlet failed = false;\n\tconst values = Object.create(null);\n\tconst parameterSpans = Object.create(null);\n\tconst numberTexts = Object.create(null);\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const entry of block.node.entries()) {\n\t\tconst key = entry.key()?.name();\n\t\tif (key === void 0) continue;\n\t\tconst span = nodePslSpan(entry.syntax, ctx.sources);\n\t\tif (seen.has(key)) {\n\t\t\tdiagnostics.push(duplicateParameterDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(key);\n\t\tparameterSpans[key] = span;\n\t\tconst value = entry.value();\n\t\tif (value === void 0) {\n\t\t\tif (spec.allowBare) {\n\t\t\t\tvalues[key] = void 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdiagnostics.push(bareEntryDiagnostic(block, key, ctx, entry, span));\n\t\t\tcontinue;\n\t\t}\n\t\tconst parsed = spec.value.type.parse(value, ctx);\n\t\tif (parsed.ok) {\n\t\t\tvalues[key] = parsed.value;\n\t\t\trecordNumberText(numberTexts, key, value);\n\t\t} else {\n\t\t\tfailed = true;\n\t\t\tdiagnostics.push(...parsed.failure);\n\t\t}\n\t}\n\treturn {\n\t\tvalues,\n\t\tparameterSpans,\n\t\tnumberTexts,\n\t\tdiagnostics,\n\t\tfailed\n\t};\n}\nfunction recordNumberText(numberTexts, key, value) {\n\tconst text = NumberLiteralExprAst.cast(value.syntax)?.token()?.text;\n\tif (text !== void 0) numberTexts[key] = text;\n}\nfunction duplicateParameterDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_EXTENSION_DUPLICATE_PARAMETER\", `Duplicate parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`, ctx, node, span);\n}\nfunction bareEntryDiagnostic(block, key, ctx, node, span) {\n\treturn entryDiagnostic(\"PSL_INVALID_EXTENSION_BLOCK_MEMBER\", `Parameter \"${key}\" in \"${block.keyword}\" block \"${block.name}\" must be written as \"${key} = <value>\".`, ctx, node, span);\n}\nfunction interpretExtensionBlockAttributes(input) {\n\tconst { block, descriptor, symbols, sources, binder } = input;\n\tconst declared = descriptor.attributes ?? {};\n\tconst attributes = Object.create(null);\n\tconst diagnostics = [];\n\tconst seenNames = /* @__PURE__ */ new Set();\n\tfor (const attribute of block.node.attributes()) {\n\t\tconst name = attribute.name()?.path().join(\".\") ?? \"\";\n\t\tconst span = nodePslSpan(attribute.syntax, sources);\n\t\tif (!Object.hasOwn(declared, name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_EXTENSION_UNKNOWN_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Unknown attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seenNames.has(name)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"PSL_INVALID_EXTENSION_BLOCK_ATTRIBUTE\",\n\t\t\t\tmessage: `Duplicate attribute \"@@${name}\" in \"${block.keyword}\" block \"${block.name}\"; first occurrence wins`,\n\t\t\t\t...diagnosticSource(sources, attribute.syntax).at(span)\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tseenNames.add(name);\n\t\tconst spec = blindCast(declared[name])({ symbols });\n\t\tconst result = interpretAttribute(attribute, spec, {\n\t\t\tsources,\n\t\t\tsymbols,\n\t\t\tbinder,\n\t\t\tselfBlock: block\n\t\t});\n\t\tif (result.ok) {\n\t\t\tconst argSpans = Object.create(null);\n\t\t\tlet positionalSlot = 0;\n\t\t\tfor (const arg of readResolvedAttribute(attribute, sources).args) {\n\t\t\t\tconst key = arg.name ?? spec.positional[positionalSlot++]?.key;\n\t\t\t\tif (key !== void 0) argSpans[key] = arg.span;\n\t\t\t}\n\t\t\tattributes[name] = {\n\t\t\t\targs: result.value,\n\t\t\t\targSpans,\n\t\t\t\tspan\n\t\t\t};\n\t\t} else diagnostics.push(...result.failure);\n\t}\n\treturn {\n\t\tattributes,\n\t\tdiagnostics\n\t};\n}\nfunction entryDiagnostic(code, message, ctx, node, span) {\n\treturn {\n\t\tcode,\n\t\tmessage,\n\t\t...diagnosticSource(ctx.sources, node.syntax).at(span)\n\t};\n}\nfunction interpretExtensionBlocks(input) {\n\tconst { symbolTable, sources, pslBlockDescriptors, binder } = input;\n\tconst parsedBlocks = /* @__PURE__ */ new Map();\n\tconst diagnostics = [];\n\tconst scopes = [symbolTable.topLevel, ...Object.values(symbolTable.topLevel.namespaces)];\n\tfor (const scope of scopes) for (const block of Object.values(scope.blocks)) {\n\t\tconst descriptor = findBlockDescriptor(pslBlockDescriptors, block.keyword);\n\t\tif (descriptor === void 0) continue;\n\t\tconst parsed = interpretExtensionBlock({\n\t\t\tblock,\n\t\t\tdescriptor,\n\t\t\tspec: blockSpecFactoryOf(descriptor)({ symbols: symbolTable }),\n\t\t\tsymbols: symbolTable,\n\t\t\tsources,\n\t\t\tbinder\n\t\t});\n\t\tif (parsed.ok) parsedBlocks.set(block, parsed.value);\n\t\telse diagnostics.push(...parsed.failure);\n\t}\n\treturn {\n\t\tparsedBlocks,\n\t\tdiagnostics\n\t};\n}\n//#endregion\n//#region src/name-the-psl-source-loses.ts\n/**\n* A name that is lost when a PSL file is read. The parser keeps block members, and the PSL contract sources keep other names, as keys of plain objects, where assigning this key sets the object's prototype instead of adding a key. Code that writes PSL must not write this name anywhere a PSL source reads a name, including inside `@map` and `@@map`.\n*/\nconst NAME_THE_PSL_SOURCE_LOSES = \"__proto__\";\n//#endregion\n//#region src/schema-directive.ts\nconst DIRECTIVE = /^(\\s*\\/\\/ *use +)(prisma-8|prisma-next)( *)(?!\\S)/;\nconst LEGACY_NAME = \"prisma-next\";\nfunction isPrismaNextSchema(text) {\n\treturn DIRECTIVE.test(text);\n}\n/** The document with the directive earlier releases wrote replaced by the current one. */\nfunction renameLegacyDirective(text) {\n\treturn text.replace(DIRECTIVE, (whole, lead, name, trail) => name === LEGACY_NAME ? `${lead}prisma-8${trail}` : whole);\n}\n//#endregion\nexport { EMPTY_DATA_TYPES, NAME_THE_PSL_SOURCE_LOSES, PSL_UNRESOLVED_REFERENCE, assembleAttributeSpecs, blockAttribute, blockSpecFactoryOf, bool, buildSymbolTable, contributedTypeOf, createBinder, createPslDiagnosticCollector, dataTypeValue, diagnosticFromSpan, diagnosticSource, entityRef, entityReference, fieldAttribute, fieldRef, findBlockDescriptor, flatPslModels, funcCall, getPositionalArgument, identifier, int, interpretArgs, interpretAttribute, interpretExtensionBlock, interpretExtensionBlockAttributes, interpretExtensionBlocks, isNamespaceLike, isPrismaNextSchema, isPslIdentifier, json, jsonValue, keywordPslSpan, leafDiagnostic, list, mapBlock, mapPslDiagnostics, matchesSelector, memberEntries, modelAttribute, namespacePslExtensionBlocks, nodePslSpan, num, numLiteral, oneOf, optional, parseQuotedStringLiteral, readResolvedAttribute, readResolvedAttributes, readResolvedConstructorCall, readWrittenScalar, record, referencedFieldRef, renameLegacyDirective, str, structBlock, taggedLiteral, typeReferenceNode };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;;;;;AAMA,UAAU,0BAA0B,WAAW;CAC9C,KAAK,MAAM,SAAS,OAAO,OAAO,SAAS,GAAG;EAC7C,IAAI,oCAAoC,KAAK,GAAG;GAC/C,MAAM;GACN;EACD;EACA,OAAO,0BAA0B,KAAK;CACvC;AACD;AACA,SAAS,uBAAuB,eAAe;CAC9C,MAAM,UAAU,OAAO,QAAQ,cAAc,eAAe,KAAK;CACjE,MAAM,UAAU,IAAI,IAAI,QAAQ,KAAK,CAAC,eAAe,SAAS,CAAC;CAC/D,KAAK,MAAM,cAAc,0BAA0B,cAAc,eAAe,GAAG;EAClF,IAAI,QAAQ,IAAI,WAAW,SAAS,GAAG,MAAM,IAAI,cAAc,8CAA8C,WAAW,UAAU,6GAA6G;EAC/O,QAAQ,IAAI,WAAW,SAAS;EAChC,QAAQ,KAAK,CAAC,WAAW,WAAW,WAAW,IAAI,CAAC;CACrD;CACA,OAAO,OAAO,OAAO,UAAU;EAC9B,OAAO,OAAO,OAAO,OAAO,YAAY,OAAO,CAAC;EAChD,OAAO,OAAO,OAAO,EAAE,GAAG,cAAc,eAAe,MAAM,CAAC;CAC/D,CAAC,CAAC;AACH;AACA,SAAS,oCAAoC,gBAAgB;CAC5D,IAAI,gBAAgB,iCAAiC,KAAK,GAAG;CAC7D,OAAO,UAAU,eAAe,4BAA4B;AAC7D;AACA,SAAS,8BAA8B,gBAAgB;CACtD,IAAI,gBAAgB,2BAA2B,KAAK,GAAG;CACvD,OAAO,UAAU,eAAe,sBAAsB;AACvD;AAGA,MAAM,gBAAgB;CACrB,IAAI;CACJ,QAAQ;CACR,OAAO;AACR;AACA,SAAS,QAAQ,OAAO;CACvB,OAAO;EACN,IAAI;EACJ,SAAS;CACV;AACD;;AAEA,SAAS,kBAAkB,YAAY;CACtC,MAAM,SAAS,WAAW;CAC1B,MAAM,SAAS,qBAAqB,KAAK,MAAM,CAAC,EAAE,MAAM;CACxD,IAAI,WAAW,KAAK,GAAG,OAAO,QAAQ;EACrC,MAAM;EACN,MAAM;CACP,CAAC;CACD,MAAM,SAAS,qBAAqB,KAAK,MAAM;CAC/C,IAAI,WAAW,KAAK,GAAG;EACtB,MAAM,OAAO,OAAO,MAAM,CAAC,EAAE;EAC7B,OAAO,SAAS,KAAK,IAAI,gBAAgB,QAAQ;GAChD,MAAM;GACN;EACD,CAAC;CACF;CACA,MAAM,UAAU,sBAAsB,KAAK,MAAM,CAAC,EAAE,MAAM;CAC1D,IAAI,YAAY,KAAK,GAAG,OAAO,QAAQ;EACtC,MAAM;EACN,OAAO;CACR,CAAC;CACD,MAAM,SAAS,qBAAqB,KAAK,MAAM;CAC/C,IAAI,WAAW,KAAK,GAAG;EACtB,MAAM,mBAAmB,OAAO,iBAAiB;EACjD,OAAO,iBAAiB,KAAK,QAAQ;GACpC,MAAM;GACN,KAAK,OAAO,QAAQ;GACpB,MAAM,iBAAiB;EACxB,CAAC,IAAI;GACJ,IAAI;GACJ,QAAQ,iBAAiB;EAC1B;CACD;CACA,IAAI,cAAc,KAAK,MAAM,MAAM,KAAK,GAAG,OAAO;EACjD,IAAI;EACJ,QAAQ;EACR,OAAO;CACR;CACA,IAAI,gBAAgB,KAAK,MAAM,MAAM,KAAK,GAAG,OAAO;EACnD,IAAI;EACJ,QAAQ;EACR,OAAO;CACR;CACA,IAAI,gBAAgB,KAAK,MAAM,MAAM,KAAK,GAAG,OAAO;EACnD,IAAI;EACJ,QAAQ;EACR,OAAO;CACR;CACA,IAAI,qBAAqB,KAAK,MAAM,MAAM,KAAK,GAAG,OAAO;EACxD,IAAI;EACJ,QAAQ;EACR,OAAO;CACR;CACA,OAAO;AACR;AAGA,SAAS,uBAAuB,MAAM;CACrC,MAAM,OAAO,cAAc,KAAK,IAAI,CAAC,EAAE,KAAK;CAC5C,IAAI,SAAS,KAAK,GAAG,OAAO;EAC3B,WAAW,KAAK;EAChB;CACD;CACA,MAAM,OAAO,YAAY,KAAK,IAAI,CAAC,EAAE,KAAK;CAC1C,IAAI,SAAS,KAAK,KAAK,KAAK,WAAW,GAAG,OAAO,KAAK;CACtD,MAAM,CAAC,WAAW,UAAU;CAC5B,OAAO,cAAc,KAAK,KAAK,WAAW,KAAK,IAAI,KAAK,IAAI;EAC3D;EACA,MAAM;CACP;AACD;AACA,SAAS,+BAA+B,WAAW;CAClD,OAAO,UAAU,cAAc,KAAK,IAAI,UAAU,OAAO,GAAG,UAAU,UAAU,GAAG,UAAU;AAC9F;AACA,MAAM,6BAA6B,IAAI,QAAQ;AAC/C,SAAS,gBAAgB,YAAY;CACpC,QAAQ,WAAW,MAAnB;EACC,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK,SAAS,OAAO,SAAS,WAAW,QAAQ,WAAW,SAAS;EACrE,SAAS;CACV;AACD;AACA,SAAS,SAAS,aAAa,WAAW;CACzC,MAAM,WAAW,WAAW,IAAI,WAAW;CAC3C,IAAI,aAAa,KAAK,GAAG,OAAO;CAChC,MAAM,YAAY;EACjB;EACA;CACD;CACA,WAAW,IAAI,aAAa,SAAS;CACrC,OAAO;AACR;AACA,SAAS,gBAAgB,WAAW,UAAU;CAC7C,MAAM,cAAc,UAAU;CAC9B,IAAI,YAAY,SAAS,SAAS,MAAM,OAAO;CAC/C,OAAO,SAAS,SAAS,WAAW,YAAY,SAAS,WAAW,YAAY,YAAY,SAAS;AACtG;AACA,SAAS,mBAAmB,YAAY;CACvC,QAAQ,WAAW,MAAnB;EACC,KAAK,SAAS,OAAO,WAAW,OAAO;EACvC,KAAK,mBAAmB,OAAO;EAC/B,KAAK,cAAc,OAAO;EAC1B,KAAK,cAAc,OAAO;EAC1B,SAAS,OAAO,WAAW;CAC5B;AACD;AAGA,SAAS,mBAAmB,YAAY;CACvC,OAAO,UAAU,WAAW,IAAI;AACjC;AAGA,SAAS,4BAA4B,OAAO;CAC3C,OAAO,UAAU,UAAU,MAAM,SAAS,qBAAqB,MAAM,SAAS;AAC/E;AACA,SAAS,sBAAsB,GAAG,YAAY;CAC7C,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,aAAa,YAAY,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,GAAG;EAC1F,MAAM,WAAW,OAAO,OAAO,QAAQ,IAAI,IAAI,OAAO,QAAQ,KAAK;EACnE,OAAO,QAAQ,aAAa,KAAK,KAAK,CAAC,4BAA4B,QAAQ,KAAK,CAAC,4BAA4B,KAAK,IAAI,sBAAsB,UAAU,KAAK,IAAI;CAChK;CACA,OAAO;AACR;AACA,SAAS,qBAAqB,kBAAkB;CAC/C,MAAM,UAAU,QAAQ,kBAAkB,CAAC,CAAC;CAC5C,OAAO;EACN,OAAO,MAAM;GACZ,OAAO,QAAQ,IAAI,IAAI;EACxB;EACA,UAAU;GACT,OAAO,QAAQ,QAAQ;EACxB;CACD;AACD;AACA,SAAS,QAAQ,WAAW,QAAQ;CACnC,MAAM,0BAA0B,IAAI,IAAI;CACxC,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,GAAG;EACtD,MAAM,OAAO,CAAC,GAAG,QAAQ,IAAI;EAC7B,QAAQ,IAAI,MAAM,4BAA4B,KAAK,IAAI;GACtD,MAAM;GACN;GACA;GACA,YAAY;EACb,IAAI;GACH,MAAM;GACN;GACA;GACA,SAAS,QAAQ,OAAO,IAAI;EAC7B,CAAC;CACF;CACA,OAAO;AACR;AAGA,SAAS,oBAAoB,aAAa,SAAS;CAClD,IAAI,gBAAgB,KAAK,GAAG,OAAO,KAAK;CACxC,KAAK,MAAM,SAAS,OAAO,OAAO,WAAW,GAAG;EAC/C,IAAI,UAAU,KAAK,GAAG;EACtB,IAAI,8BAA8B,KAAK,GAAG;GACzC,IAAI,MAAM,YAAY,SAAS,OAAO;GACtC;EACD;EACA,MAAM,SAAS,oBAAoB,OAAO,OAAO;EACjD,IAAI,WAAW,KAAK,GAAG,OAAO;CAC/B;AACD;AAGA,UAAU,YAAY,GAAG,SAAS;CACjC,KAAK,MAAM,UAAU,SAAS,OAAO,OAAO,KAAK,MAAM;AACxD;AACA,IAAI,QAAQ,MAAM;CACjB;CACA,YAAY,QAAQ;EACnB,KAAK,SAAS;CACf;CACA,CAAC,UAAU;EACV,MAAM,uBAAuB,IAAI,IAAI;EACrC,KAAK,MAAM,QAAQ,KAAK,SAAS,GAAG;GACnC,IAAI,KAAK,IAAI,IAAI,GAAG;GACpB,KAAK,IAAI,IAAI;GACb,MAAM,aAAa,KAAK,OAAO,IAAI;GACnC,IAAI,eAAe,KAAK,GAAG,MAAM,CAAC,MAAM,UAAU;EACnD;EACA,KAAK,MAAM,SAAS,KAAK,QAAQ,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,GAAG,MAAM;CAClF;AACD;AACA,SAAS,sBAAsB,QAAQ;CACtC,OAAO,OAAO,SAAS,oBAAoB;EAC1C,MAAM;EACN,QAAQ;CACT,IAAI;EACH,MAAM;EACN,QAAQ;CACT;AACD;AACA,SAAS,gBAAgB,WAAW,MAAM;CACzC,MAAM,QAAQ,UAAU,OAAO;CAC/B,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,QAAQ;EACR;CACD;CACA,MAAM,gBAAgB,UAAU,eAAe;CAC/C,IAAI,kBAAkB,KAAK,GAAG,OAAO;EACpC,MAAM;EACN,QAAQ;EACR;CACD;CACA,MAAM,QAAQ,UAAU,OAAO;CAC/B,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,QAAQ;EACR;CACD;AACD;AACA,IAAI,mBAAmB,cAAc,MAAM;CAC1C;CACA,YAAY,UAAU;EACrB,MAAM,KAAK,CAAC;EACZ,KAAKA,YAAY;CAClB;CACA,OAAO,MAAM;EACZ,MAAM,SAAS,KAAKA,UAAU,OAAO,IAAI;EACzC,OAAO,WAAW,KAAK,IAAI,KAAK,IAAI,sBAAsB,MAAM;CACjE;CACA,CAAC,WAAW;EACX,KAAK,MAAM,CAAC,SAAS,KAAKA,UAAU,QAAQ,GAAG,MAAM;CACtD;AACD;AACA,IAAI,gBAAgB,cAAc,MAAM;CACvC;CACA,YAAY,SAAS,QAAQ;EAC5B,MAAM,MAAM;EACZ,KAAKC,WAAW;CACjB;CACA,OAAO,MAAM;EACZ,MAAM,UAAU,KAAKA;EACrB,MAAM,QAAQ,QAAQ,OAAO;EAC7B,IAAI,UAAU,KAAK,GAAG,OAAO;GAC5B,MAAM;GACN,QAAQ;EACT;EACA,MAAM,gBAAgB,QAAQ,eAAe;EAC7C,IAAI,kBAAkB,KAAK,GAAG,OAAO;GACpC,MAAM;GACN,QAAQ;EACT;EACA,MAAM,YAAY,QAAQ,WAAW;EACrC,IAAI,cAAc,KAAK,GAAG,OAAO;GAChC,MAAM;GACN,QAAQ;EACT;EACA,MAAM,QAAQ,QAAQ,OAAO;EAC7B,IAAI,UAAU,KAAK,GAAG,OAAO;GAC5B,MAAM;GACN,QAAQ;EACT;EACA,MAAM,YAAY,QAAQ,WAAW;EACrC,IAAI,cAAc,KAAK,GAAG,OAAO;GAChC,MAAM;GACN,QAAQ;EACT;EACA,OAAO,KAAK,QAAQ,OAAO,IAAI;CAChC;CACA,WAAW;EACV,MAAM,UAAU,KAAKA;EACrB,OAAO,YAAY,QAAQ,QAAQ,QAAQ,gBAAgB,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,UAAU;CAClH;AACD;AACA,IAAI,iBAAiB,cAAc,MAAM;CACxC;CACA,YAAY,WAAW,QAAQ;EAC9B,MAAM,MAAM;EACZ,KAAKC,aAAa;CACnB;CACA,OAAO,MAAM;EACZ,OAAO,gBAAgB,KAAKA,YAAY,IAAI,KAAK,KAAK,QAAQ,OAAO,IAAI;CAC1E;CACA,WAAW;EACV,MAAM,YAAY,KAAKA;EACvB,OAAO,YAAY,UAAU,QAAQ,UAAU,gBAAgB,UAAU,MAAM;CAChF;AACD;AACA,SAAS,iBAAiB,UAAU;CACnC,OAAO,IAAI,iBAAiB,QAAQ;AACrC;AACA,SAAS,cAAc,SAAS,QAAQ;CACvC,OAAO,IAAI,cAAc,SAAS,MAAM;AACzC;AACA,SAAS,mBAAmB,SAAS,QAAQ;CAC5C,OAAO,IAAI,cAAc;EACxB,GAAG;EACH,YAAY,CAAC;CACd,GAAG,MAAM;AACV;AACA,SAAS,eAAe,WAAW,QAAQ;CAC1C,OAAO,IAAI,eAAe,WAAW,MAAM;AAC5C;AACA,SAAS,gBAAgB,YAAY;CACpC,OAAO,WAAW,SAAS,eAAe,WAAW,SAAS;AAC/D;AACA,UAAU,cAAc,WAAW;CAClC,IAAI,UAAU,SAAS,wBAAwB;EAC9C,KAAK,MAAM,CAAC,MAAM,WAAW,UAAU,OAAO,SAAS,MAAM,CAAC,MAAM,sBAAsB,MAAM,CAAC;EACjG;CACD;CACA,OAAO,IAAI,eAAe,UAAU,QAAQ,KAAK,CAAC,CAAC,CAAC,QAAQ;AAC7D;AACA,SAAS,aAAa,WAAW,MAAM;CACtC,IAAI,UAAU,SAAS,wBAAwB;EAC9C,MAAM,SAAS,UAAU,OAAO,QAAQ,IAAI,IAAI;EAChD,OAAO,WAAW,KAAK,IAAI,KAAK,IAAI,sBAAsB,MAAM;CACjE;CACA,OAAO,gBAAgB,UAAU,QAAQ,IAAI;AAC9C;AAGA,MAAM,2BAA2B;AACjC,SAAS,kBAAkB,QAAQ;CAClC,OAAO,OAAO,KAAK,eAAe,CAAC,EAAE,KAAK,CAAC,EAAE;AAC9C;AACA,SAAS,kBAAkB,YAAY,QAAQ;CAC9C,MAAM,OAAO,YAAY,SAAS,cAAc,kBAAkB,WAAW,MAAM,IAAI,KAAK;CAC5F,MAAM,SAAS,SAAS,KAAK,IAAI,aAAa,OAAO,cAAc,IAAI;CACvE,OAAO,QAAQ,SAAS,oBAAoB,OAAO,SAAS,KAAK;AAClE;AACA,IAAI,YAAY,MAAM;CACrB;CACA;CACA;CACA;CACA,YAAY,cAAc,YAAY,eAAe,QAAQ;EAC5D,KAAKC,gBAAgB;EACrB,KAAKC,cAAc;EACnB,KAAKC,iBAAiB;EACtB,KAAKC,UAAU;CAChB;CACA,eAAe,MAAM;EACpB,OAAO,KAAKH,cAAc,IAAI,IAAI;CACnC;CACA,cAAc,MAAM;EACnB,OAAO,KAAKC,YAAY,IAAI,IAAI;CACjC;CACA,QAAQ,MAAM;EACb,OAAO,KAAK,cAAc,aAAa,KAAKE,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAKD;CAC5E;AACD;AACA,IAAI,aAAa,MAAM;CACtB;CACA;CACA,YAAY,MAAM;EACjB,KAAKE,QAAQ;EACb,KAAKD,UAAU,CAAC,IAAI;CACrB;CACA,UAAU;EACT,OAAO,KAAKA,QAAQ,KAAKA,QAAQ,SAAS,MAAM,KAAKC;CACtD;CACA,KAAK,OAAO;EACX,KAAKD,QAAQ,KAAK,KAAK;CACxB;CACA,MAAM;EACL,KAAKA,QAAQ,IAAI;CAClB;AACD;AACA,SAAS,aAAa,aAAa,OAAO,QAAQ,OAAO;CACxD,MAAM,EAAE,aAAa;CACrB,KAAK,MAAM,UAAU,OAAO,OAAO,SAAS,MAAM,GAAG,MAAM,MAAM;CACjE,KAAK,MAAM,UAAU,OAAO,OAAO,SAAS,cAAc,GAAG,MAAM,MAAM;CACzE,KAAK,MAAM,aAAa,OAAO,OAAO,SAAS,UAAU,GAAG;EAC3D,MAAM,KAAK,OAAO,QAAQ,UAAU,aAAa,EAAE,CAAC,KAAK,MAAM,CAAC;EAChE,KAAK,MAAM,UAAU,OAAO,OAAO,UAAU,MAAM,GAAG,MAAM,QAAQ,SAAS;EAC7E,KAAK,MAAM,UAAU,OAAO,OAAO,UAAU,cAAc,GAAG,MAAM,QAAQ,SAAS;EACrF,MAAM,IAAI;CACX;AACD;AACA,SAAS,sBAAsB,QAAQ,WAAW;CACjD,OAAO,OAAO,SAAS,UAAU;EAChC,MAAM;EACN,QAAQ;EACR,GAAG,cAAc,KAAK,IAAI,CAAC,IAAI,EAAE,UAAU;CAC5C,IAAI;EACH,MAAM;EACN,QAAQ;EACR,GAAG,cAAc,KAAK,IAAI,CAAC,IAAI,EAAE,UAAU;CAC5C;AACD;AACA,SAAS,aAAa,OAAO;CAC5B,MAAM,EAAE,aAAa,SAAS,YAAY;CAC1C,MAAM,gBAAgB,QAAQ;CAC9B,MAAM,sCAAsC,oCAAoC,QAAQ,cAAc;CACtG,MAAM,gCAAgC,8BAA8B,QAAQ,cAAc;CAC1F,OAAO,KAAK;EACX;EACA;EACA,kBAAkB,sBAAsB,cAAc,OAAO,cAAc,IAAI;EAC/E,gBAAgB,uBAAuB,aAAa;EACpD,qBAAqB,cAAc;EACnC,yBAAyB,EAAE,yBAAyB,QAAQ,wBAAwB,wBAAwB;EAC5G,WAAW,QAAQ;EACnB,GAAG,wCAAwC,KAAK,IAAI,EAAE,8BAA8B,oCAAoC,OAAO,EAAE,IAAI,CAAC;EACtI,GAAG,kCAAkC,KAAK,IAAI,EAAE,wBAAwB,8BAA8B,aAAa,EAAE,IAAI,CAAC;CAC3H,CAAC;AACF;AACA,SAAS,KAAK,SAAS;CACtB,MAAM,EAAE,SAAS,aAAa,kBAAkB,gBAAgB,yBAAyB,WAAW,8BAA8B,2BAA2B;CAC7J,MAAM,sBAAsB,QAAQ,uBAAuB,CAAC;CAC5D,MAAM,cAAc,iBAAiB,qBAAqB,gBAAgB,CAAC;CAC3E,MAAM,WAAW,cAAc,YAAY,UAAU,WAAW;CAChE,MAAM,QAAQ,IAAI,WAAW,QAAQ;CACrC,MAAM,yBAAyB,IAAI,QAAQ;CAC3C,MAAM,+BAA+B,IAAI,QAAQ;CACjD,MAAM,6BAA6B,IAAI,QAAQ;CAC/C,MAAM,cAAc,CAAC;CACrB,MAAM,SAAS,IAAI,UAAU,cAAc,YAAY,UAAU,MAAM;CACvE,MAAM,YAAY,mBAAmB,YAAY,UAAU,WAAW;CACtE,KAAK,MAAM,UAAU,OAAO,OAAO,YAAY,SAAS,UAAU,GAAG;EACpE,aAAa,IAAI,OAAO,KAAK,QAAQ,MAAM;EAC3C,MAAM,eAAe,OAAO,KAAK,KAAK,CAAC,EAAE;EACzC,IAAI,iBAAiB,KAAK,GAAG,WAAW,IAAI,cAAc;GACzD,MAAM;GACN;EACD,CAAC;EACD,MAAM,OAAO,OAAO,KAAK,eAAe,CAAC,EAAE,KAAK;EAChD,MAAM,UAAU,qBAAqB,MAAM,WAAW,UAAU;EAChE,IAAI,SAAS,KAAK,KAAK,YAAY,KAAK,GAAG;EAC3C,WAAW,IAAI,KAAK,QAAQ,QAAQ,UAAU;CAC/C;CACA,KAAK,MAAM,UAAU,OAAO,OAAO,YAAY,SAAS,MAAM,GAAG;EAChE,aAAa,IAAI,OAAO,KAAK,QAAQ,MAAM;EAC3C,MAAM,eAAe,OAAO,KAAK,KAAK,CAAC,EAAE;EACzC,IAAI,iBAAiB,KAAK,GAAG,WAAW,IAAI,cAAc;GACzD,MAAM;GACN;EACD,CAAC;CACF;CACA,KAAK,MAAM,aAAa,OAAO,OAAO,YAAY,SAAS,UAAU,GAAG;EACvE,MAAM,QAAQ,eAAe,WAAW,QAAQ;EAChD,KAAK,MAAM,eAAe,UAAU,cAAc;GACjD,aAAa,IAAI,YAAY,KAAK,QAAQ,SAAS;GACnD,OAAO,IAAI,YAAY,KAAK,QAAQ,KAAK;GACzC,MAAM,eAAe,YAAY,KAAK,KAAK,CAAC,EAAE;GAC9C,IAAI,iBAAiB,KAAK,GAAG,WAAW,IAAI,cAAc;IACzD,MAAM;IACN,QAAQ;GACT,CAAC;EACF;EACA,KAAK,MAAM,UAAU,OAAO,OAAO,UAAU,MAAM,GAAG;GACrD,aAAa,IAAI,OAAO,KAAK,QAAQ,MAAM;GAC3C,MAAM,eAAe,OAAO,KAAK,KAAK,CAAC,EAAE;GACzC,IAAI,iBAAiB,KAAK,GAAG,WAAW,IAAI,cAAc;IACzD,MAAM;IACN;IACA;GACD,CAAC;EACF;CACD;CACA,aAAa,aAAa,OAAO,SAAS,QAAQ,cAAc;EAC/D,aAAa,IAAI,OAAO,KAAK,QAAQ,MAAM;EAC3C,MAAM,eAAe,OAAO,KAAK,KAAK,CAAC,EAAE;EACzC,IAAI,iBAAiB,KAAK,GAAG,WAAW,IAAI,cAAc,sBAAsB,QAAQ,SAAS,CAAC;EAClG,KAAK,MAAM,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG;GACjD,aAAa,IAAI,MAAM,KAAK,QAAQ,KAAK;GACzC,MAAM,YAAY,MAAM,KAAK,KAAK,CAAC,EAAE;GACrC,IAAI,cAAc,KAAK,GAAG,WAAW,IAAI,WAAW;IACnD,MAAM;IACN,QAAQ;GACT,CAAC;GACD,MAAM,OAAO,kBAAkB,KAAK;GACpC,IAAI,SAAS,KAAK,GAAG;GACrB,MAAM,OAAO,MAAM,KAAK,eAAe,CAAC,EAAE,KAAK;GAC/C,MAAM,UAAU,qBAAqB,MAAM,MAAM,QAAQ,GAAG,aAAa,YAAY,yBAAyB;IAC7G;IACA,OAAO;IACP;GACD,CAAC,CAAC;GACF,IAAI,YAAY,KAAK,GAAG;GACxB,WAAW,IAAI,MAAM,QAAQ,UAAU;GACvC,IAAI,QAAQ,YAAY,KAAK,GAAG,YAAY,KAAK;IAChD,MAAM;IACN,SAAS,QAAQ;IACjB,MAAM;KACL,WAAW;KACX,MAAM,QAAQ;KACd,iBAAiB,MAAM,oBAAoB,KAAK;IACjD;IACA,GAAG,iBAAiB,SAAS,IAAI,CAAC,CAAC,GAAG;GACvC,CAAC;EACF;CACD,CAAC;CACD,aAAa,aAAa,OAAO,SAAS,WAAW;EACpD,MAAM,UAAU;GACf,OAAO;GACP,OAAO,MAAM,QAAQ;GACrB;GACA;GACA;GACA;GACA;EACD;EACA,MAAM,cAAc,OAAO,SAAS,UAAU;GAC7C,SAAS;GACT,OAAO;GACP;GACA;EACD,IAAI,KAAK;EACT,eAAe,QAAQ,OAAO,YAAY,eAAe,QAAQ,YAAY,gBAAgB,KAAK,IAAI,KAAK,IAAI,QAAQ,WAAW,GAAG;GACpI,GAAG;GACH,OAAO,KAAK;EACb,CAAC;EACD,KAAK,MAAM,SAAS,OAAO,OAAO,OAAO,MAAM,GAAG,eAAe,OAAO,MAAM,YAAY,eAAe,QAAQ,YAAY;GAC5H,IAAI,gBAAgB,KAAK,GAAG,OAAO,KAAK;GACxC,MAAM,OAAO,kBAAkB,KAAK;GACpC,MAAM,iBAAiB,SAAS,KAAK,IAAI,KAAK,IAAI,WAAW,IAAI,IAAI;GACrE,OAAO,QAAQ;IACd,GAAG;IACH;IACA;GACD,CAAC;EACF,GAAG;GACF,GAAG;GACH;EACD,CAAC;CACF,CAAC;CACD,MAAM,eAAe;EACpB;EACA;EACA;EACA;EACA;CACD;CACA,MAAM,cAAc,WAAW;EAC9B,MAAM,UAAU;GACf,GAAG;GACH,OAAO,MAAM,QAAQ;EACtB;EACA,KAAK,MAAM,SAAS,OAAO,OAAO,MAAM,GAAG,UAAU,OAAO,OAAO;CACpE;CACA,WAAW,YAAY,SAAS,MAAM;CACtC,KAAK,MAAM,aAAa,OAAO,OAAO,YAAY,SAAS,UAAU,GAAG;EACvE,MAAM,KAAK,OAAO,QAAQ,UAAU,aAAa,EAAE,CAAC,KAAK,MAAM,CAAC;EAChE,WAAW,UAAU,MAAM;EAC3B,MAAM,IAAI;CACX;CACA,OAAO;EACN;EACA;CACD;AACD;AACA,SAAS,UAAU,OAAO,KAAK;CAC9B,MAAM,aAAa,oBAAoB,IAAI,qBAAqB,MAAM,OAAO;CAC7E,IAAI,eAAe,KAAK,GAAG;CAC3B,MAAM,OAAO,mBAAmB,UAAU,CAAC,CAAC,EAAE,SAAS,IAAI,YAAY,CAAC;CACxE,KAAK,MAAM,SAAS,MAAM,KAAK,QAAQ,GAAG;EACzC,MAAM,MAAM,MAAM,IAAI,CAAC,EAAE,KAAK;EAC9B,IAAI,QAAQ,KAAK,GAAG;EACpB,MAAM,YAAY,KAAK,SAAS,YAAY,OAAO,OAAO,KAAK,YAAY,GAAG,IAAI,KAAK,WAAW,OAAO,KAAK;EAC9G,MAAM,OAAO,KAAK,SAAS,WAAW,WAAW,OAAO,KAAK,MAAM;EACnE,IAAI,cAAc,KAAK,GAAG;GACzB,MAAM,UAAU,MAAM,IAAI,CAAC,EAAE;GAC7B,IAAI,YAAY,KAAK,GAAG,IAAI,WAAW,IAAI,SAAS;IACnD,MAAM;IACN,QAAQ;KACP,MAAM;KACN,MAAM;KACN,OAAO;IACR;GACD,CAAC;EACF;EACA,MAAM,QAAQ,MAAM,MAAM;EAC1B,IAAI,SAAS,KAAK,KAAK,UAAU,KAAK,GAAG;EACzC,eAAe,MAAM,OAAO,GAAG;CAChC;CACA,MAAM,iBAAiB,WAAW,cAAc,CAAC;CACjD,IAAI,OAAO,KAAK,cAAc,CAAC,CAAC,WAAW,GAAG;CAC9C,KAAK,MAAM,aAAa,uBAAuB,MAAM,KAAK,WAAW,GAAG,IAAI,OAAO,GAAG;EACrF,MAAM,UAAU,eAAe,UAAU;EACzC,IAAI,YAAY,KAAK,GAAG;EACxB,MAAM,gBAAgB,UAAU,OAAO,CAAC,CAAC,EAAE,SAAS,IAAI,YAAY,CAAC;EACrE,MAAM,kBAAkB;GACvB,MAAM;GACN,MAAM,UAAU;GAChB,OAAO;GACP,MAAM;EACP;EACA,MAAM,WAAW,UAAU,KAAK,KAAK,CAAC,EAAE;EACxC,IAAI,aAAa,KAAK,GAAG,IAAI,WAAW,IAAI,UAAU;GACrD,MAAM;GACN,QAAQ;EACT,CAAC;EACD,cAAc,WAAW,eAAe,GAAG;CAC5C;AACD;AACA,SAAS,eAAe,MAAM,YAAY,KAAK,cAAc;CAC5D,MAAM,QAAQ,kBAAkB,MAAM,YAAY,KAAK,YAAY;CACnE,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,YAAY,IAAI,WAAW,IAAI,MAAM,UAAU;CACtF,IAAI,YAAY,KAAK,GAAG,MAAM,YAAY,OAAO,CAAC;AACnD;AACA,SAAS,kBAAkB,MAAM,YAAY,KAAK,cAAc;CAC/D,MAAM,6BAA6B,IAAI,IAAI;CAC3C,MAAM,8BAA8B,IAAI,IAAI;CAC5C,QAAQ,KAAK,MAAb;EACC,KAAK;GACJ,KAAK,MAAM,eAAe,KAAK,cAAc;IAC5C,MAAM,QAAQ,kBAAkB,aAAa,YAAY,KAAK,YAAY;IAC1E,IAAI,MAAM,SAAS,OAAO;IAC1B,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,aAAa,YAAY,IAAI,MAAM,UAAU;IACpF,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,YAAY,IAAI,WAAW,SAAS,cAAc,WAAW,IAAI,MAAM,UAAU;GACzH;GACA,OAAO;IACN,SAAS;IACT;IACA;GACD;EACD,KAAK;EACL,KAAK,UAAU;GACd,MAAM,WAAW,KAAK,SAAS,SAAS,gBAAgB,KAAK,WAAW,MAAM,CAAC,EAAE,SAAS,IAAI,aAAa,UAAU;GACrH,IAAI,aAAa,KAAK,GAAG,OAAO;IAC/B,SAAS;IACT;IACA;GACD;GACA,IAAI,UAAU;GACd,KAAK,MAAM,SAAS,UAAU;IAC7B,MAAM,QAAQ,kBAAkB,KAAK,IAAI,OAAO,KAAK,YAAY;IACjE,UAAU,MAAM,WAAW;IAC3B,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,YAAY,WAAW,IAAI,MAAM,UAAU;IAClF,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,aAAa,YAAY,IAAI,MAAM,UAAU;GACrF;GACA,OAAO;IACN;IACA;IACA;GACD;EACD;EACA,KAAK,YAAY;GAChB,MAAM,OAAO,gBAAgB,KAAK,WAAW,MAAM;GACnD,MAAM,OAAO,MAAM,KAAK;GACxB,IAAI,SAAS,KAAK,KAAK,SAAS,KAAK,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK,KAAK,WAAW,CAAC,EAAE,KAAK,MAAM,KAAK,MAAM,OAAO;IAC7I,SAAS;IACT;IACA;GACD;GACA,MAAM,iBAAiB;IACtB,MAAM;IACN,MAAM,KAAK;IACX,WAAW,KAAK;GACjB;GACA,WAAW,IAAI,KAAK,QAAQ;IAC3B,MAAM;IACN,QAAQ;GACT,CAAC;GACD,IAAI,UAAU;GACd,IAAI,aAAa;GACjB,KAAK,MAAM,OAAO,KAAK,KAAK,GAAG;IAC9B,MAAM,MAAM,IAAI,KAAK,CAAC,EAAE,KAAK;IAC7B,MAAM,YAAY,kBAAkB,KAAK,WAAW,KAAK,QAAQ,KAAK,IAAI,eAAe,UAAU;IACnG,IAAI,cAAc,KAAK,GAAG;KACzB,UAAU;KACV;IACD;IACA,IAAI,QAAQ,KAAK,GAAG;KACnB,MAAM,UAAU,IAAI,KAAK,CAAC,EAAE;KAC5B,IAAI,YAAY,KAAK,GAAG,WAAW,IAAI,SAAS;MAC/C,MAAM;MACN,QAAQ;OACP,MAAM;OACN,MAAM;OACN,OAAO;MACR;KACD,CAAC;IACF;IACA,MAAM,QAAQ,IAAI,MAAM;IACxB,IAAI,UAAU,KAAK,GAAG;KACrB,UAAU;KACV;IACD;IACA,MAAM,QAAQ,kBAAkB,UAAU,MAAM,OAAO,KAAK,YAAY;IACxE,UAAU,MAAM,WAAW;IAC3B,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,YAAY,WAAW,IAAI,MAAM,UAAU;IAClF,KAAK,MAAM,CAAC,MAAM,eAAe,MAAM,aAAa,YAAY,IAAI,MAAM,UAAU;GACrF;GACA,OAAO;IACN;IACA;IACA;GACD;EACD;EACA,KAAK,cAAc;GAClB,IAAI,KAAK,SAAS,KAAK,GAAG,OAAO;IAChC,SAAS;IACT;IACA;GACD;GACA,MAAM,OAAO,WAAW;GACxB,IAAI,cAAc,KAAK,IAAI,CAAC,EAAE,KAAK,MAAM,KAAK,MAAM,OAAO;IAC1D,SAAS;IACT;IACA;GACD;GACA,WAAW,IAAI,MAAM;IACpB,MAAM;IACN,QAAQ;KACP,MAAM;KACN,MAAM,KAAK;KACX,eAAe,KAAK;IACrB;GACD,CAAC;GACD,OAAO;IACN,SAAS;IACT;IACA;GACD;EACD;EACA,KAAK,aAAa;GACjB,MAAM,OAAO,WAAW;GACxB,MAAM,UAAU,uBAAuB,IAAI;GAC3C,IAAI,YAAY,KAAK,GAAG,OAAO;IAC9B,SAAS;IACT;IACA;GACD;GACA,MAAM,WAAW,CAAC;GAClB,MAAM,aAAa,cAAc,SAAS,MAAM;IAC/C,GAAG;IACH,aAAa;GACd,CAAC;GACD,WAAW,IAAI,MAAM,UAAU;GAC/B,KAAK,MAAM,cAAc,UAAU,YAAY,IAAI,MAAM,UAAU;GACnE,OAAO;IACN,SAAS,WAAW,SAAS;IAC7B;IACA;GACD;EACD;EACA,KAAK,YAAY;GAChB,MAAM,OAAO,WAAW;GACxB,MAAM,OAAO,cAAc,KAAK,IAAI,CAAC,EAAE,KAAK;GAC5C,IAAI,SAAS,KAAK,KAAK,iBAAiB,KAAK,GAAG,OAAO;IACtD,SAAS;IACT;IACA;GACD;GACA,MAAM,WAAW,CAAC;GAClB,MAAM,aAAa,kBAAkB,MAAM,MAAM;IAChD,GAAG;IACH,aAAa;GACd,CAAC;GACD,WAAW,IAAI,MAAM,UAAU;GAC/B,KAAK,MAAM,cAAc,UAAU,YAAY,IAAI,MAAM,UAAU;GACnE,OAAO;IACN,SAAS,WAAW,SAAS;IAC7B;IACA;GACD;EACD;EACA,KAAK,sBAAsB;GAC1B,MAAM,OAAO,WAAW;GACxB,MAAM,OAAO,cAAc,KAAK,IAAI,CAAC,EAAE,KAAK;GAC5C,IAAI,SAAS,KAAK,KAAK,iBAAiB,KAAK,GAAG,OAAO;IACtD,SAAS;IACT;IACA;GACD;GACA,MAAM,WAAW,CAAC;GAClB,MAAM,aAAa,uBAAuB,MAAM,MAAM;IACrD,GAAG;IACH,aAAa;GACd,CAAC;GACD,WAAW,IAAI,MAAM,UAAU;GAC/B,KAAK,MAAM,cAAc,UAAU,YAAY,IAAI,MAAM,UAAU;GACnE,OAAO;IACN,SAAS,WAAW,SAAS;IAC7B;IACA;GACD;EACD;EACA,KAAK;EACL,KAAK,QAAQ,OAAO;GACnB,SAAS,qBAAqB,KAAK,WAAW,MAAM,MAAM,KAAK;GAC/D;GACA;EACD;EACA,KAAK;EACL,KAAK,OAAO,OAAO;GAClB,SAAS,qBAAqB,KAAK,WAAW,MAAM,MAAM,KAAK;GAC/D;GACA;EACD;EACA,KAAK,QAAQ,OAAO;GACnB,SAAS,sBAAsB,KAAK,WAAW,MAAM,MAAM,KAAK;GAChE;GACA;EACD;EACA,KAAK,QAAQ,OAAO;GACnB,SAAS,cAAc,KAAK,WAAW,MAAM,CAAC,EAAE,KAAK,MAAM;GAC3D;GACA;EACD;EACA,KAAK,iBAAiB,OAAO;GAC5B,SAAS,qBAAqB,KAAK,WAAW,MAAM,MAAM,KAAK;GAC/D;GACA;EACD;EACA,KAAK,iBAAiB;GACrB,MAAM,UAAU,kBAAkB,UAAU;GAC5C,OAAO;IACN,SAAS,QAAQ,MAAM,QAAQ,WAAW;IAC1C;IACA;GACD;EACD;EACA,KAAK,aAAa,OAAO;GACxB,SAAS;GACT;GACA;EACD;CACD;AACD;AACA,SAAS,aAAa,YAAY;CACjC,MAAM,SAAS,qBAAqB,KAAK,WAAW,MAAM;CAC1D,IAAI,WAAW,KAAK,GAAG,OAAO,KAAK;CACnC,QAAQ,aAAa;EACpB,KAAK,MAAM,SAAS,OAAO,OAAO,GAAG;GACpC,MAAM,QAAQ,MAAM,MAAM;GAC1B,IAAI,UAAU,KAAK,GAAG,MAAM;EAC7B;CACD,EAAA,CAAG;AACJ;AACA,SAAS,eAAe,QAAQ,YAAY,OAAO,aAAa,KAAK;CACpE,MAAM,WAAW,OAAO,KAAK,WAAW;CACxC,MAAM,QAAQ,MAAM,KAAK,QAAQ;CACjC,MAAM,QAAQ,OAAO,SAAS,UAAU,UAAU;CAClD,WAAW,SAAS,WAAW,UAAU;EACxC,MAAM,UAAU,IAAI,OAAO,UAAU,IAAI;EACzC,IAAI,YAAY,KAAK,GAAG;GACvB,MAAM,aAAa,IAAI,+BAA+B;IACrD;IACA;IACA,OAAO,IAAI;IACX,OAAO,UAAU,UAAU,IAAI,QAAQ,KAAK;GAC7C,CAAC;GACD,IAAI,eAAe,KAAK,GAAG,IAAI,YAAY,KAAK,UAAU;GAC1D;EACD;EACA,MAAM,OAAO,YAAY,OAAO;EAChC,IAAI,SAAS,KAAK,GAAG;EACrB,MAAM,kBAAkB;GACvB,MAAM;GACN,MAAM,UAAU;GAChB;GACA;EACD;EACA,MAAM,WAAW,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE;EACvC,IAAI,aAAa,KAAK,GAAG,IAAI,WAAW,IAAI,UAAU;GACrD,MAAM;GACN,QAAQ;EACT,CAAC;EACD,cAAc,WAAW,MAAM,KAAK,GAAG;CACxC,CAAC;AACF;AACA,SAAS,cAAc,WAAW,MAAM,KAAK,cAAc;CAC1D,MAAM,UAAU,MAAM,KAAK,UAAU,KAAK,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;CACjE,IAAI,aAAa;CACjB,UAAU,KAAK,SAAS,KAAK,UAAU;EACtC,MAAM,YAAY,kBAAkB,MAAM,IAAI,MAAM,IAAI,SAAS,KAAK,IAAI,eAAe,UAAU;EACnG,IAAI,cAAc,KAAK,GAAG;EAC1B,IAAI,IAAI,SAAS,KAAK,GAAG;GACxB,MAAM,UAAU,QAAQ,MAAM,EAAE,KAAK,CAAC,EAAE;GACxC,IAAI,YAAY,KAAK,GAAG,IAAI,WAAW,IAAI,SAAS;IACnD,MAAM;IACN,QAAQ;KACP,MAAM;KACN,MAAM,IAAI;KACV,OAAO;IACR;GACD,CAAC;EACF;EACA,IAAI,IAAI,eAAe,KAAK,GAAG;EAC/B,eAAe,UAAU,MAAM,IAAI,YAAY,KAAK,YAAY;CACjE,CAAC;AACF;AACA,SAAS,kBAAkB,MAAM,MAAM,UAAU;CAChD,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK,aAAa;CAC9C,OAAO,KAAK,UAAU,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,OAAO,IAAI;AAC7D;AACA,SAAS,kBAAkB,MAAM,MAAM,KAAK;CAC3C,MAAM,QAAQ,IAAI,MAAM,OAAO;CAC/B,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,QAAQ;CACT;CACA,OAAO,sBAAsB,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,OAAO;CAC/E,OAAO;EACN,MAAM;EACN;CACD;AACD;AACA,SAAS,uBAAuB,MAAM,MAAM,KAAK;CAChD,MAAM,YAAY,IAAI;CACtB,IAAI,cAAc,KAAK,GAAG,OAAO;EAChC,MAAM;EACN;CACD;CACA,IAAI,UAAU,wBAAwB,KAAK,GAAG,OAAO,EAAE,MAAM,aAAa;CAC1E,MAAM,WAAW,kBAAkB,SAAS;CAC5C,MAAM,QAAQ,aAAa,aAAa,KAAK,IAAI,KAAK,IAAI,IAAI,WAAW,IAAI,QAAQ,CAAC,CAAC,GAAG;CAC1F,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,QAAQ;CACT;CACA,OAAO,sBAAsB,KAAK,oBAAoB,IAAI,MAAM,KAAK,GAAG,UAAU,KAAK,IAAI,MAAM,KAAK,OAAO;CAC7G,OAAO;EACN,MAAM;EACN;CACD;AACD;AACA,SAAS,aAAa,QAAQ;CAC7B,IAAI,WAAW,KAAK,GAAG,OAAO,KAAK;CACnC,IAAI,OAAO,SAAS,WAAW,OAAO,SAAS,iBAAiB,OAAO,OAAO,OAAO;AACtF;AACA,SAAS,cAAc,SAAS,MAAM,KAAK;CAC1C,MAAM,QAAQ,QAAQ,cAAc,KAAK,IAAI,IAAI,MAAM,OAAO,QAAQ,IAAI,IAAI,gBAAgB,QAAQ,WAAW,QAAQ,MAAM,cAAc,gBAAgB,IAAI,GAAG,IAAI,OAAO,IAAI,UAAU,CAAC;CAC9L,IAAI,UAAU,KAAK,GAAG;EACrB,MAAM,OAAO,+BAA+B,OAAO;EACnD,IAAI,QAAQ,SAAS,IAAI,OAAO,uBAAuB,KAAK,IAAI,MAAM,KAAK,QAAQ;EACnF,OAAO;GACN,MAAM;GACN;EACD;CACD;CACA,IAAI,kBAAkB,OAAO;EAC5B,OAAO,MAAM,cAAc,MAAM,KAAK,QAAQ;EAC9C,OAAO;GACN,MAAM;GACN,MAAM,MAAM;EACb;CACD;CACA,OAAO;AACR;AACA,SAAS,OAAO,SAAS,MAAM,KAAK,WAAW;CAC9C,IAAI,YAAY,KAAK;EACpB,MAAM;EACN;EACA,MAAM,EAAE,UAAU;EAClB,GAAG,iBAAiB,IAAI,SAAS,IAAI,CAAC,CAAC,GAAG;CAC3C,CAAC;AACF;AACA,SAAS,gBAAgB,MAAM;CAC9B,MAAM,OAAO,YAAY,KAAK,IAAI;CAClC,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK;CACjC,MAAM,CAAC,aAAa,KAAK,SAAS;CAClC,OAAO;AACR;AACA,SAAS,cAAc,WAAW,OAAO,YAAY;CACpD,MAAM,KAAK,WAAW,KAAK;CAC3B,IAAI,cAAc,KAAK,KAAK,OAAO,KAAK,GAAG,OAAO,KAAK;CACvD,MAAM,aAAa,MAAM,OAAO,EAAE;CAClC,IAAI,eAAe,KAAK,KAAK,gBAAgB,UAAU,GAAG,WAAW,IAAI,UAAU,QAAQ,UAAU;CACrG,OAAO;AACR;AACA,SAAS,qBAAqB,WAAW,OAAO,YAAY,oBAAoB;CAC/E,IAAI,cAAc,KAAK,KAAK,UAAU,gBAAgB,GAAG,OAAO,KAAK;CACrE,IAAI,UAAU,MAAM,MAAM,KAAK,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,EAAE;CAC9E,MAAM,OAAO,UAAU,WAAW,CAAC,EAAE,KAAK;CAC1C,IAAI,SAAS,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK;CAChD,MAAM,YAAY,UAAU,UAAU;CACtC,MAAM,cAAc,WAAW,KAAK;CACpC,MAAM,QAAQ,gBAAgB,KAAK,IAAI,MAAM,OAAO,IAAI,IAAI,gBAAgB,aAAa,MAAM,cAAc,WAAW,OAAO,UAAU,CAAC;CAC1I,IAAI,UAAU,KAAK,GAAG;EACrB,MAAM,UAAU,gBAAgB,KAAK,IAAI,OAAO,GAAG,YAAY,GAAG;EAClE,MAAM,UAAU,qBAAqB,OAAO,KAAK,qBAAqB,QAAQ;EAC9E,OAAO;GACN,YAAY;IACX,MAAM;IACN,MAAM;GACP;GACA;GACA,MAAM;EACP;CACD;CACA,IAAI,kBAAkB,OAAO,OAAO;EACnC,YAAY;GACX,MAAM;GACN,MAAM,MAAM;EACb;EACA,SAAS,MAAM;EACf,MAAM,MAAM;CACb;CACA,IAAI,MAAM,SAAS,eAAe,MAAM,SAAS,wBAAwB;EACxE,MAAM,UAAU,gBAAgB,KAAK,IAAI,OAAO,GAAG,YAAY,GAAG;EAClE,OAAO;GACN,YAAY;GACZ,SAAS,IAAI,QAAQ;GACrB,MAAM;EACP;CACD;CACA,OAAO,EAAE,YAAY,MAAM;AAC5B;AACA,SAAS,gBAAgB,aAAa,MAAM,WAAW;CACtD,IAAI,cAAc,KAAK,GAAG,OAAO,KAAK;CACtC,IAAI,CAAC,gBAAgB,SAAS,GAAG,OAAO;EACvC,cAAc,IAAI,YAAY,OAAO,kBAAkB,SAAS,EAAE;EAClE,WAAW;CACZ;CACA,OAAO,aAAa,WAAW,IAAI;AACpC;AACA,SAAS,kBAAkB,YAAY;CACtC,QAAQ,WAAW,MAAnB;EACC,KAAK,SAAS,OAAO;EACrB,KAAK,iBAAiB,OAAO;EAC7B,KAAK,aAAa,OAAO;EACzB,KAAK,SAAS,OAAO,GAAG,WAAW,OAAO,YAAY,SAAS,OAAO,IAAI,GAAG,WAAW,OAAO;EAC/F,SAAS,OAAO;CACjB;AACD;AACA,SAAS,IAAI,QAAQ,MAAM;CAC1B,OAAO,OAAO,OAAO,QAAQ,IAAI,IAAI,OAAO,QAAQ,KAAK;AAC1D;;;;;AAOA,SAAS,iBAAiB,SAAS;CAClC,MAAM,EAAE,WAAW,YAAY;CAC/B,MAAM,cAAc,CAAC;CACrB,MAAM,aAAa,OAAO,OAAO,IAAI;CACrC,MAAM,aAAa,OAAO,OAAO,IAAI;CACrC,MAAM,SAAS,OAAO,OAAO,IAAI;CACjC,MAAM,SAAS,OAAO,OAAO,IAAI;CACjC,MAAM,iBAAiB,OAAO,OAAO,IAAI;CACzC,MAAM,gCAAgC,IAAI,IAAI;CAC9C,KAAK,MAAM,YAAY,WAAW;EACjC,MAAM,aAAa,QAAQ,cAAc,SAAS,MAAM;EACxD,MAAM,SAAS,OAAO,SAAS;GAC9B,MAAM,OAAO,MAAM,KAAK;GACxB,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK;GACjC,IAAI,MAAM,IAAI,IAAI,GAAG;IACpB,MAAM,QAAQ,UAAU,MAAM,OAAO;IACrC,IAAI,OAAO,YAAY,KAAK;KAC3B,MAAM;KACN,SAAS,6BAA6B,KAAK;KAC3C,UAAU,WAAW;KACrB;IACD,CAAC;IACD;GACD;GACA,MAAM,IAAI,IAAI;GACd,OAAO;EACR;EACA,KAAK,MAAM,eAAe,SAAS,aAAa,GAAG,IAAI,uBAAuB,qBAAqB;GAClG,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;GACpD,IAAI,SAAS,KAAK,GAAG,OAAO,QAAQ,WAAW,MAAM,aAAa,SAAS,WAAW;EACvF,OAAO,IAAI,uBAAuB,6BAA6B;GAC9D,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;GACpD,IAAI,SAAS,KAAK,GAAG,eAAe,QAAQ,mBAAmB,MAAM,aAAa,SAAS,WAAW;EACvG,OAAO,IAAI,uBAAuB,4BAA4B;GAC7D,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;GACpD,IAAI,SAAS,KAAK,GAAG,OAAO,QAAQ,WAAW,MAAM,aAAa,OAAO;EAC1E,OAAO,IAAI,uBAAuB,yBAAyB;GAC1D,MAAM,eAAe,YAAY,KAAK,CAAC,EAAE,KAAK;GAC9C,IAAI,iBAAiB,KAAK,GAAG;GAC7B,IAAI,YAAY,WAAW;GAC3B,IAAI,cAAc,KAAK,GAAG;IACzB,MAAM,OAAO,MAAM,eAAe,YAAY,KAAK,CAAC;IACpD,IAAI,SAAS,KAAK,GAAG;IACrB,YAAY;KACX,MAAM;KACN;KACA,cAAc,CAAC;MACd,MAAM;MACN,MAAM,YAAY,YAAY,QAAQ,OAAO;KAC9C,CAAC;KACD,QAAQ,OAAO,OAAO,IAAI;KAC1B,gBAAgB,OAAO,OAAO,IAAI;KAClC,QAAQ,OAAO,OAAO,IAAI;IAC3B;IACA,WAAW,QAAQ;GACpB,OAAO,UAAU,aAAa,KAAK;IAClC,MAAM;IACN,MAAM,YAAY,YAAY,QAAQ,OAAO;GAC9C,CAAC;GACD,gBAAgB,WAAW,aAAa,aAAa,OAAO;EAC7D,OAAO,IAAI,uBAAuB,eAAe,KAAK,MAAM,WAAW,YAAY,aAAa,GAAG;GAClG,MAAM,OAAO,MAAM,eAAe,QAAQ,KAAK,CAAC;GAChD,IAAI,SAAS,KAAK,GAAG;GACrB,MAAM,WAAW,wBAAwB,SAAS,OAAO;GACzD,WAAW,QAAQ;IAClB,MAAM;IACN;IACA,MAAM;IACN,MAAM,YAAY,QAAQ,QAAQ,OAAO;IACzC,GAAG;GACJ;EACD;CACD;CACA,OAAO;EACN,aAAa,EAAE,UAAU;GACxB;GACA;GACA;GACA;GACA;EACD,EAAE;EACF;CACD;AACD;AACA,SAAS,WAAW,MAAM,MAAM,SAAS,aAAa;CACrD,OAAO;EACN,MAAM;EACN;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,OAAO;EACtC,QAAQ,YAAY,MAAM,KAAK,OAAO,GAAG,SAAS,WAAW;EAC7D,YAAY,uBAAuB,KAAK,WAAW,GAAG,OAAO;CAC9D;AACD;AACA,SAAS,mBAAmB,MAAM,MAAM,SAAS,aAAa;CAC7D,OAAO;EACN,MAAM;EACN;EACA;EACA,MAAM,YAAY,KAAK,QAAQ,OAAO;EACtC,QAAQ,YAAY,MAAM,KAAK,OAAO,GAAG,SAAS,WAAW;EAC7D,YAAY,uBAAuB,KAAK,WAAW,GAAG,OAAO;CAC9D;AACD;AACA,SAAS,WAAW,MAAM,MAAM,SAAS;CACxC,OAAO;EACN,MAAM;EACN;EACA,SAAS,KAAK,QAAQ,CAAC,EAAE,QAAQ;EACjC;EACA,MAAM,YAAY,KAAK,QAAQ,OAAO;CACvC;AACD;AACA,SAAS,gBAAgB,WAAW,MAAM,aAAa,SAAS;CAC/D,MAAM,EAAE,QAAQ,gBAAgB,WAAW;CAC3C,KAAK,MAAM,UAAU,KAAK,aAAa,GAAG;EACzC,MAAM,aAAa,OAAO,KAAK,CAAC,EAAE,KAAK;EACvC,IAAI,eAAe,KAAK,GAAG;EAC3B,IAAI,OAAO,OAAO,QAAQ,UAAU,KAAK,OAAO,OAAO,gBAAgB,UAAU,KAAK,OAAO,OAAO,QAAQ,UAAU,GAAG;GACxH,MAAM,QAAQ,UAAU,OAAO,KAAK,GAAG,OAAO;GAC9C,IAAI,OAAO,YAAY,KAAK;IAC3B,MAAM;IACN,SAAS,6BAA6B,WAAW;IACjD,UAAU,QAAQ,cAAc,OAAO,MAAM,CAAC,CAAC;IAC/C;GACD,CAAC;GACD;EACD;EACA,IAAI,kBAAkB,qBAAqB,OAAO,cAAc,WAAW,YAAY,QAAQ,SAAS,WAAW;OAC9G,IAAI,kBAAkB,6BAA6B,eAAe,cAAc,mBAAmB,YAAY,QAAQ,SAAS,WAAW;OAC3I,IAAI,kBAAkB,4BAA4B,OAAO,cAAc,WAAW,YAAY,QAAQ,OAAO;CACnH;AACD;AACA,SAAS,YAAY,WAAW,QAAQ,SAAS,aAAa;CAC7D,MAAM,SAAS,OAAO,OAAO,IAAI;CACjC,KAAK,MAAM,SAAS,QAAQ;EAC3B,MAAM,WAAW,MAAM,KAAK;EAC5B,MAAM,OAAO,UAAU,KAAK;EAC5B,IAAI,SAAS,KAAK,GAAG;EACrB,IAAI,OAAO,OAAO,QAAQ,IAAI,GAAG;GAChC,MAAM,QAAQ,UAAU,UAAU,OAAO;GACzC,IAAI,OAAO,YAAY,KAAK;IAC3B,MAAM;IACN,SAAS,6BAA6B,KAAK;IAC3C,UAAU,QAAQ,cAAc,MAAM,MAAM,CAAC,CAAC;IAC9C;GACD,CAAC;GACD;EACD;EACA,OAAO,QAAQ,WAAW,WAAW,MAAM,OAAO,SAAS,WAAW;CACvE;CACA,OAAO;AACR;AACA,SAAS,WAAW,WAAW,MAAM,MAAM,SAAS,aAAa;CAChE,MAAM,aAAa,uBAAuB,KAAK,WAAW,GAAG,OAAO;CACpE,MAAM,OAAO,YAAY,KAAK,QAAQ,OAAO;CAC7C,MAAM,aAAa,KAAK,eAAe;CACvC,MAAM,WAAW,YAAY,KAAK;CAClC,IAAI,UAAU,gBAAgB,GAAG;EAChC,MAAM,OAAO,SAAS,KAAK;EAC3B,YAAY,KAAK;GAChB,MAAM;GACN,SAAS,UAAU,UAAU,GAAG,KAAK,mCAAmC,KAAK,KAAK,GAAG,EAAE;GACvF,UAAU,QAAQ,cAAc,SAAS,MAAM,CAAC,CAAC;GACjD,OAAO,UAAU,SAAS,QAAQ,OAAO;EAC1C,CAAC;EACD,OAAO;GACN,MAAM;GACN;GACA;GACA;GACA,UAAU,KAAK,KAAK,SAAS,MAAM;GACnC,UAAU;GACV,MAAM;GACN,iBAAiB;GACjB,eAAe;GACf;EACD;CACD;CACA,MAAM,kBAAkB,YAAY,cAAc,IAAI,4BAA4B,YAAY,OAAO,IAAI,KAAK;CAC9G,MAAM,kBAAkB,UAAU,UAAU,CAAC,EAAE,KAAK;CACpD,MAAM,sBAAsB,UAAU,MAAM,CAAC,EAAE,KAAK;CACpD,OAAO;EACN,MAAM;EACN;EACA;EACA;EACA,UAAU,UAAU,WAAW,CAAC,EAAE,KAAK,KAAK;EAC5C,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD,GAAG,wBAAwB,KAAK,IAAI,EAAE,oBAAoB,IAAI,CAAC;EAC/D,UAAU,YAAY,WAAW,KAAK;EACtC,MAAM,YAAY,OAAO,KAAK;EAC9B,iBAAiB,YAAY,kBAAkB,KAAK;EACpD,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD;CACD;AACD;AACA,SAAS,wBAAwB,MAAM,SAAS;CAC/C,MAAM,aAAa,KAAK,eAAe;CACvC,MAAM,gBAAgB,YAAY,cAAc,KAAK;CACrD,MAAM,WAAW,YAAY,KAAK,CAAC,EAAE,WAAW,CAAC,EAAE,KAAK;CACxD,MAAM,kBAAkB,4BAA4B,YAAY,OAAO;CACvE,OAAO;EACN;EACA,GAAG,CAAC,iBAAiB,aAAa,KAAK,IAAI,EAAE,SAAS,IAAI,CAAC;EAC3D,GAAG,oBAAoB,KAAK,IAAI,EAAE,gBAAgB,IAAI,CAAC;EACvD,YAAY,uBAAuB,KAAK,WAAW,GAAG,OAAO;CAC9D;AACD;AACA,SAAS,UAAU,MAAM,SAAS;CACjC,IAAI,SAAS,KAAK,GAAG,OAAO,KAAK;CACjC,MAAM,aAAa,QAAQ,cAAc,KAAK,MAAM;CACpD,KAAK,MAAM,SAAS,KAAK,OAAO,OAAO,GAAG,IAAI,MAAM,SAAS,SAAS,OAAO;EAC5E,OAAO,WAAW,WAAW,MAAM,MAAM;EACzC,KAAK,WAAW,WAAW,MAAM,SAAS,MAAM,KAAK,MAAM;CAC5D;AACD;AACA,SAAS,UAAU,MAAM,SAAS;CACjC,MAAM,aAAa,QAAQ,cAAc,IAAI;CAC7C,MAAM,QAAQ,KAAK;CACnB,MAAM,MAAM,QAAQ,KAAK,MAAM;CAC/B,OAAO;EACN,OAAO,WAAW,WAAW,KAAK;EAClC,KAAK,WAAW,WAAW,GAAG;CAC/B;AACD;;;AC1wCA,SAAS,sBAAsB,WAAW,QAAQ,GAAG;CACpD,OAAO,UAAU,KAAK,QAAQ,QAAQ,IAAI,SAAS,YAAY,CAAC,CAAC,MAAM,EAAE;AAC1E;AACA,SAAS,yBAAyB,OAAO;CACxC,MAAM,QAAQ,MAAM,KAAK,CAAC,CAAC,MAAM,gBAAgB;CACjD,IAAI,CAAC,OAAO,OAAO,KAAK;CACxB,OAAO,MAAM,MAAM;AACpB;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,SAAS,CAAC;EACxB,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,MAAM,4BAA4B;AAClC,SAAS,eAAe,KAAK,MAAM,SAAS,OAAO,2BAA2B;CAC7E,OAAO;EACN;EACA;EACA,GAAG,iBAAiB,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC;CACvF;AACD;AAGA,SAAS,OAAO;CACf,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,sBAAsB,KAAK,IAAI,MAAM;GACrD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,QAAQ,QAAQ,MAAM;IAC5B,IAAI,UAAU,KAAK,GAAG,OAAO,GAAG,KAAK;GACtC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,4BAA4B,CAAC,CAAC;EACtE;CACD;AACD;AAGA,MAAM,+BAA+B;CACpC,KAAK;CACL,aAAa;AACd;;AAEA,SAAS,cAAc,UAAU,SAAS;CACzC,MAAM,OAAO,aAAa,SAAS,QAAQ;CAC3C,MAAM,CAAC,YAAY;CACnB,MAAM,QAAQ,cAAc,SAAS,CAAC,QAAQ,CAAC;CAC/C,OAAO;EACN,MAAM;EACN,OAAO,aAAa,KAAK,IAAI,sBAAsB,SAAS,QAAQ,IAAI,QAAQ,QAAQ,CAAC,CAAC;EAC1F;EACA;EACA,eAAe,QAAQ,QAAQ,SAAS,EAAE,iBAAiB;EAC3D,QAAQ,KAAK,QAAQ,mBAAmB,KAAK,KAAK,UAAU,SAAS,KAAK;CAC3E;AACD;AACA,SAAS,mBAAmB,KAAK,KAAK,UAAU,SAAS,OAAO;CAC/D,IAAI,CAAC,QAAQ,OAAO,IAAI,QAAQ,GAAG,MAAM,IAAI,cAAc,mCAAmC,SAAS,uCAAuC;CAC9I,IAAI,MAAM,WAAW,GAAG,MAAM,IAAI,cAAc,mCAAmC,SAAS,uCAAuC;CACnI,MAAM,UAAU,EAAE,MAAM,cAAc,MAAM,CAAC,eAAe,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC;CACrF,MAAM,UAAU,kBAAkB,GAAG;CACrC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,WAAW,kBAAkB,OAAO;EACnE,MAAM;EACN,SAAS,GAAG,iBAAiB,KAAK,EAAE,QAAQ,QAAQ;CACrD,CAAC,IAAI,OAAO;EACX,MAAM,6BAA6B,QAAQ;EAC3C,SAAS,6BAA6B,QAAQ,MAAM;CACrD,CAAC;CACD,MAAM,OAAO,iBAAiB,SAAS,QAAQ,OAAO;CACtD,IAAI,CAAC,KAAK,IAAI,OAAO,OAAO,gBAAgB,KAAK,SAAS,SAAS;EAClE;EACA,SAAS,KAAK;CACf,CAAC,CAAC;CACF,MAAM,OAAO,eAAe,SAAS,UAAU,KAAK,KAAK;CACzD,IAAI,CAAC,KAAK,IAAI;EACb,MAAM,UAAU,aAAa,SAAS,UAAU,QAAQ,OAAO;EAC/D,OAAO,OAAO,gBAAgB,KAAK,SAAS,SAAS;GACpD;GACA;EACD,CAAC,CAAC;CACH;CACA,OAAO,GAAG;EACT,MAAM;EACN,OAAO,KAAK,MAAM;EAClB,MAAM,YAAY,IAAI,QAAQ,IAAI,OAAO;CAC1C,CAAC;AACF;AAGA,SAAS,UAAU,UAAU;CAC5B,MAAM,QAAQ,GAAG,SAAS,SAAS,UAAU,SAAS,UAAU,SAAS,KAAK;CAC9E,OAAO;EACN,MAAM;EACN;EACA;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,uBAAuB,IAAI,MAAM;GACjD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,OAAO,CAAC,CAAC;GACpF,MAAM,OAAO,+BAA+B,OAAO;GACnD,MAAM,aAAa,IAAI,OAAO,cAAc,IAAI,MAAM;GACtD,IAAI,eAAe,KAAK,KAAK,WAAW,SAAS,cAAc,OAAO,MAAM,CAAC,CAAC;GAC9E,MAAM,YAAY,gBAAgB,UAAU;GAC5C,IAAI,cAAc,KAAK,KAAK,CAAC,gBAAgB,WAAW,QAAQ,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,MAAM,IAAI,KAAK,WAAW,mBAAmB,UAAU,GAAG,CAAC,CAAC;GAClL,OAAO,GAAG,SAAS;EACpB;CACD;AACD;AAGA,SAAS,eAAe,KAAK,KAAK;CACjC,MAAM,aAAa,cAAc,KAAK,IAAI,MAAM;CAChD,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;CAC3F,MAAM,OAAO,WAAW,KAAK;CAC7B,IAAI,SAAS,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,uBAAuB,CAAC,CAAC;CACrF,MAAM,aAAa,IAAI,OAAO,cAAc,IAAI,MAAM;CACtD,IAAI,eAAe,KAAK,GAAG,OAAO,MAAM,CAAC,CAAC;CAC1C,IAAI,WAAW,SAAS,SAAS,OAAO,GAAG,WAAW,OAAO,IAAI;CACjE,IAAI,WAAW,SAAS,cAAc,OAAO,GAAG,IAAI;CACpD,OAAO,MAAM,CAAC,CAAC;AAChB;AACA,SAAS,WAAW;CACnB,OAAO;EACN,MAAM;EACN,OAAO;EACP,OAAO;CACR;AACD;AACA,SAAS,qBAAqB;CAC7B,OAAO;EACN,MAAM;EACN,OAAO;EACP,OAAO;CACR;AACD;AAGA,SAAS,cAAc,MAAM,MAAM,KAAK,MAAM,YAAY;CACzD,IAAI,UAAU,OAAO;CACrB,MAAM,SAAS,CAAC;CAChB,MAAM,uBAAuB,IAAI,IAAI;CACrC,IAAI,iBAAiB;CACrB,IAAI,iBAAiB;CACrB,KAAK,MAAM,OAAO,MAAM;EACvB,MAAM,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK;EAC9B,IAAI;EACJ,IAAI;EACJ,IAAI,SAAS,KAAK,GAAG;GACpB,MAAM,WAAW,KAAK,WAAW;GACjC,IAAI,aAAa,KAAK,GAAG;IACxB,IAAI,CAAC,gBAAgB;KACpB,UAAU,IAAI,SAAS,MAAM,CAAC,WAAW,cAAc,KAAK,KAAK,2CAA2C,KAAK,MAAM,UAAU,CAAC,CAAC,CAAC;KACpI,iBAAiB;IAClB;IACA;GACD;GACA,kBAAkB;GAClB,MAAM,SAAS;GACf,QAAQ,SAAS;EAClB,OAAO;GACN,MAAM,aAAa,OAAO,OAAO,KAAK,OAAO,IAAI,IAAI,KAAK,MAAM,QAAQ,KAAK;GAC7E,IAAI,eAAe,KAAK,GAAG;IAC1B,UAAU,IAAI,SAAS,MAAM,CAAC,WAAW,cAAc,KAAK,KAAK,+BAA+B,KAAK,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;IACjK;GACD;GACA,MAAM;GACN,QAAQ,WAAW;EACpB;EACA,IAAI,KAAK,IAAI,GAAG,GAAG;GAClB,UAAU,IAAI,SAAS,MAAM,CAAC,WAAW,cAAc,KAAK,KAAK,iCAAiC,IAAI,IAAI,KAAK,YAAY,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC;GAClK;EACD;EACA,KAAK,IAAI,GAAG;EACZ,MAAM,SAAS,cAAc,KAAK,OAAO,GAAG;EAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,OAAO;EACpC,UAAU,IAAI,SAAS,MAAM;CAC9B;CACA,MAAM,4BAA4B,IAAI,IAAI;CAC1C,MAAM,qBAAqB,KAAK,iBAAiB,eAAe;EAC/D,IAAI,UAAU,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;EACzC,UAAU,IAAI,GAAG;EACjB,MAAM,YAAY,cAAc;EAChC,IAAI,cAAc,KAAK,GAAG;EAC1B,IAAI,kBAAkB,SAAS,GAAG;GACjC,IAAI,UAAU,YAAY,OAAO,OAAO,UAAU;GAClD;EACD;EACA,UAAU,IAAI,SAAS,MAAM,CAAC,WAAW,cAAc,KAAK,KAAK,kCAAkC,IAAI,IAAI,KAAK,MAAM,UAAU,CAAC,CAAC,CAAC;CACpI;CACA,KAAK,MAAM,SAAS,KAAK,YAAY;EACpC,MAAM,aAAa,OAAO,OAAO,KAAK,OAAO,MAAM,GAAG,IAAI,KAAK,MAAM,MAAM,OAAO,KAAK;EACvF,kBAAkB,MAAM,KAAK,MAAM,MAAM,YAAY,IAAI;CAC1D;CACA,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,KAAK,GAAG,kBAAkB,KAAK,KAAK,GAAG,KAAK,MAAM,IAAI,EAAE,IAAI;CAC/F,IAAI,CAAC,QAAQ,IAAI,OAAO,MAAM,QAAQ,OAAO;CAC7C,OAAO,GAAG,MAAM;AACjB;AACA,SAAS,mBAAmB,UAAU,MAAM,KAAK;CAChD,MAAM,gBAAgB,YAAY,SAAS,QAAQ,IAAI,OAAO;CAC9D,MAAM,QAAQ,cAAc,SAAS,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,MAAM,KAAK,eAAe,SAAS,MAAM;CACvG,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,MAAM,OAAO;CACzC,MAAM,QAAQ,UAAU,MAAM,KAAK;CACnC,IAAI,KAAK,WAAW,KAAK,GAAG;EAC3B,MAAM,oBAAoB,KAAK,OAAO,OAAO,KAAK,QAAQ;EAC1D,IAAI,kBAAkB,SAAS,GAAG,OAAO,MAAM,iBAAiB;CACjE;CACA,OAAO,GAAG,KAAK;AAChB;AACA,SAAS,cAAc,KAAK,SAAS,KAAK;CACzC,MAAM,QAAQ,IAAI,MAAM;CACxB,IAAI,UAAU,KAAK,GAAG,OAAO,MAAM,CAAC,WAAW,yCAAyC,KAAK,YAAY,IAAI,QAAQ,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,CAAC;CAC/I,OAAO,QAAQ,MAAM,OAAO,GAAG;AAChC;AACA,SAAS,kBAAkB,OAAO;CACjC,OAAO,cAAc,SAAS,MAAM,aAAa;AAClD;AACA,SAAS,WAAW,SAAS,KAAK,MAAM,YAAY;CACnD,OAAO;EACN,MAAM;EACN;EACA,GAAG,iBAAiB,IAAI,SAAS,UAAU,CAAC,CAAC,GAAG,IAAI;CACrD;AACD;AAGA,SAAS,SAAS,MAAM,KAAK;CAC5B,OAAO;EACN,MAAM;EACN,OAAO,GAAG,KAAK;EACf;EACA,WAAW;EACX,SAAS,QAAQ,YAAY,GAAG,CAAC,EAAE,SAAS;EAC5C,QAAQ,KAAK,QAAQ;GACpB,MAAM,QAAQ,YAAY,KAAK,MAAM,GAAG;GACxC,IAAI,CAAC,MAAM,IAAI,OAAO;GACtB,MAAM,OAAO,YAAY,MAAM,MAAM,QAAQ,IAAI,OAAO;GACxD,MAAM,QAAQ,cAAc,MAAM,MAAM,KAAK,GAAG;IAC/C;IACA,YAAY,IAAI,cAAc,CAAC;IAC/B,OAAO,IAAI,SAAS,CAAC;GACtB,GAAG,KAAK,MAAM,MAAM,MAAM,MAAM;GAChC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,MAAM,OAAO;GACzC,OAAO,GAAG;IACT,IAAI;IACJ;IACA,MAAM,MAAM;GACb,CAAC;EACF;CACD;AACD;AACA,SAAS,YAAY,KAAK;CACzB,MAAM,OAAO,gBAAgB,KAAK,IAAI,MAAM;CAC5C,MAAM,QAAQ,MAAM,KAAK;CACzB,IAAI,SAAS,KAAK,KAAK,UAAU,KAAK,GAAG,OAAO,KAAK;CACrD,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK,MAAM,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK;CACpE,MAAM,OAAO,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;CAC1C,OAAO,SAAS,KAAK,IAAI,KAAK,IAAI;EACjC;EACA;CACD;AACD;AACA,SAAS,YAAY,KAAK,MAAM,KAAK;CACpC,MAAM,SAAS,YAAY,GAAG;CAC9B,IAAI,WAAW,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,0BAA0B,CAAC,CAAC;CAC1F,IAAI,OAAO,SAAS,MAAM,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,KAAK,GAAG,CAAC,CAAC;CACvF,OAAO,GAAG,OAAO,IAAI;AACtB;AAGA,SAAS,WAAW,MAAM,SAAS;CAClC,MAAM,QAAQ,QAAQ;CACtB,OAAO;EACN,MAAM;EACN;EACA;EACA,eAAe,SAAS,iBAAiB;EACzC,QAAQ,KAAK,QAAQ;GACpB,MAAM,QAAQ,cAAc,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK;GACnD,IAAI,UAAU,KAAK,MAAM,SAAS,KAAK,KAAK,UAAU,OAAO,OAAO,GAAG,KAAK;GAC5E,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,OAAO,CAAC,CAAC;EAC7D;CACD;AACD;AAGA,SAAS,IAAI,MAAM;CAClB,MAAM,MAAM,MAAM;CAClB,MAAM,MAAM,MAAM;CAClB,OAAO;EACN,MAAM;EACN,OAAO;EACP,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI;EAC/B,GAAG,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI;EAC/B,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,QAAQ,QAAQ,MAAM;IAC5B,IAAI,UAAU,KAAK,KAAK,OAAO,UAAU,KAAK,GAAG;KAChD,KAAK,QAAQ,KAAK,KAAK,SAAS,SAAS,QAAQ,KAAK,KAAK,SAAS,MAAM,OAAO,GAAG,KAAK;KACzF,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,aAAa,KAAK,GAAG,CAAC,CAAC,CAAC;IAChE;GACD;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,6BAA6B,CAAC,CAAC;EACvE;CACD;AACD;AACA,SAAS,aAAa,KAAK,KAAK;CAC/B,IAAI,QAAQ,KAAK,KAAK,QAAQ,KAAK,GAAG,OAAO,+BAA+B,IAAI,OAAO;CACvF,IAAI,QAAQ,KAAK,GAAG,OAAO,gDAAgD;CAC3E,OAAO,6CAA6C;AACrD;;;;;;AAQA,SAAS,OAAO;CACf,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,+BAA+B,CAAC,CAAC;GAChG,MAAM,MAAM,QAAQ,MAAM;GAC1B,IAAI,QAAQ,KAAK,GAAG,IAAI;IACvB,MAAM,SAAS,KAAK,MAAM,GAAG;IAC7B,IAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,CAAC,MAAM,QAAQ,MAAM,GAAG,OAAO,GAAG,UAAU,MAAM,CAAC;GACzG,QAAQ,CAAC;GACT,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,8BAA8B,CAAC,CAAC;EACxE;CACD;AACD;AAGA,SAAS,KAAK,IAAI,MAAM;CACvB,MAAM,aAAa,MAAM,cAAc;CACvC,MAAM,SAAS,MAAM,UAAU;CAC/B,OAAO;EACN,MAAM;EACN,OAAO,MAAM,UAAU,GAAG,MAAM,SAAS,KAAK,IAAI,IAAI,GAAG,MAAM,OAAO,GAAG,GAAG,MAAM;EAClF;EACA;EACA;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,gBAAgB,KAAK,IAAI,MAAM;GAC/C,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,sBAAsB,GAAG,OAAO,CAAC,CAAC;GACjG,MAAM,SAAS,CAAC;GAChB,IAAI,UAAU,OAAO;GACrB,IAAI,QAAQ;GACZ,KAAK,MAAM,WAAW,QAAQ,SAAS,GAAG;IACzC,SAAS;IACT,MAAM,SAAS,GAAG,MAAM,SAAS,GAAG;IACpC,IAAI,OAAO,IAAI,OAAO,KAAK;KAC1B,MAAM;KACN,OAAO,OAAO;IACf,CAAC;IACD,UAAU,IAAI,SAAS,MAAM;GAC9B;GACA,IAAI,CAAC,cAAc,UAAU,GAAG,UAAU,IAAI,SAAS,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC,CAAC;GACrH,IAAI,QAAQ;IACX,MAAM,uBAAuB,IAAI,IAAI;IACrC,KAAK,MAAM,EAAE,MAAM,WAAW,QAAQ,IAAI,KAAK,IAAI,KAAK,GAAG,UAAU,IAAI,SAAS,MAAM,CAAC,eAAe,KAAK,MAAM,sBAAsB,CAAC,CAAC,CAAC;SACvI,KAAK,IAAI,KAAK;GACpB;GACA,IAAI,CAAC,QAAQ,IAAI,OAAO,MAAM,QAAQ,OAAO;GAC7C,OAAO,GAAG,OAAO,KAAK,UAAU,MAAM,KAAK,CAAC;EAC7C;CACD;AACD;;;;AAMA,SAAS,MAAM,GAAG,MAAM;CACvB,MAAM,QAAQ,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,KAAK,KAAK;CACrD,OAAO;EACN,MAAM;EACN;EACA,cAAc;EACd,QAAQ,KAAK,QAAQ;GACpB,MAAM,CAAC,MAAM,GAAG,QAAQ,UAAU,IAAI;GACtC,MAAM,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,QAAQ,IAAI,SAAS,GAAG,MAAM,IAAI;GAC3E,MAAM,CAAC,QAAQ;GACf,IAAI,SAAS,KAAK,KAAK,SAAS,WAAW,GAAG,OAAO,KAAK,MAAM,KAAK,GAAG;GACxE,IAAI,YAAY,KAAK,MAAM,KAAK,GAAG;GACnC,IAAI,UAAU,IAAI,OAAO;GACzB,KAAK,MAAM,OAAO,MAAM;IACvB,MAAM,SAAS,IAAI,MAAM,KAAK,GAAG;IACjC,IAAI,OAAO,IAAI,OAAO;IACtB,YAAY,GAAG,WAAW,MAAM;GACjC;GACA,IAAI,CAAC,UAAU,MAAM,UAAU,QAAQ,WAAW,GAAG,OAAO,MAAM,CAAC,CAAC;GACpE,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,oBAAoB,OAAO,CAAC,CAAC;EACrE;CACD;AACD;AAGA,SAAS,OAAO,IAAI;CACnB,OAAO;EACN,MAAM;EACN,OAAO,YAAY,GAAG,MAAM;EAC5B;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,4BAA4B,CAAC,CAAC;GAC7F,MAAM,UAAU,CAAC;GACjB,MAAM,uBAAuB,IAAI,IAAI;GACrC,IAAI,UAAU,OAAO;GACrB,KAAK,MAAM,SAAS,MAAM,KAAK,QAAQ,OAAO,CAAC,GAAG;IACjD,MAAM,MAAM,MAAM,QAAQ;IAC1B,IAAI,QAAQ,KAAK,GAAG;KACnB,UAAU,IAAI,SAAS,MAAM,CAAC,eAAe,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC;KAC5E;IACD;IACA,MAAM,QAAQ,MAAM,MAAM;IAC1B,IAAI,UAAU,KAAK,GAAG;KACrB,UAAU,IAAI,SAAS,MAAM,CAAC,eAAe,KAAK,OAAO,6BAA6B,IAAI,EAAE,CAAC,CAAC,CAAC;KAC/F;IACD;IACA,MAAM,SAAS,GAAG,MAAM,OAAO,GAAG;IAClC,IAAI,CAAC,OAAO,IAAI;KACf,UAAU,IAAI,SAAS,MAAM;KAC7B;IACD;IACA,IAAI,KAAK,IAAI,GAAG,GAAG;KAClB,UAAU,IAAI,SAAS,MAAM,CAAC,eAAe,KAAK,OAAO,kBAAkB,IAAI,EAAE,CAAC,CAAC,CAAC;KACpF;IACD;IACA,KAAK,IAAI,GAAG;IACZ,QAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC;GACjC;GACA,IAAI,CAAC,QAAQ,IAAI,OAAO,MAAM,QAAQ,OAAO;GAC7C,OAAO,GAAG,OAAO,YAAY,OAAO,CAAC;EACtC;CACD;AACD;AAGA,SAAS,IAAI,OAAO;CACnB,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,SAAS,QAAQ,MAAM;IAC7B,IAAI,WAAW,KAAK,GAAG,OAAO,GAAG,MAAM;GACxC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;CACA,OAAO;EACN,MAAM;EACN,OAAO,KAAK,UAAU,KAAK;EAC3B;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAChB;QAAA,QAAQ,MAAM,MAAM,OAAO,OAAO,GAAG,KAAK;GAAA;GAE/C,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,GAAG,CAAC,CAAC;EAC7E;CACD;AACD;AAGA,SAAS,YAAY;CACpB,MAAM,OAAO;EACZ,MAAM;EACN,OAAO;EACP,IAAI,eAAe;GAClB,OAAO,SAAS;EACjB;EACA,QAAQ,KAAK,QAAQ,SAAS,MAAM,KAAK,GAAG;CAC7C;CACA,MAAM,WAAW,MAAM,IAAI,GAAG,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,IAAI,GAAG,OAAO,IAAI,CAAC;CAC1F,OAAO;AACR;AACA,SAAS,eAAe;CACvB,OAAO;EACN,MAAM;EACN,OAAO,KAAK;EACZ,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,MAAM,QAAQ,qBAAqB,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM;GAC3D,IAAI,UAAU,KAAK,KAAK,OAAO,MAAM,KAAK,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,kCAAkC,CAAC,CAAC;GACnJ,OAAO,GAAG,KAAK;EAChB;CACD;AACD;AACA,SAAS,WAAW;CACnB,OAAO;EACN,MAAM;EACN,OAAO;EACP,QAAQ,KAAK,QAAQ;GACpB,IAAI,cAAc,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,QAAQ,OAAO,GAAG,IAAI;GACrE,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,eAAe,CAAC,CAAC;EACzD;CACD;AACD;AAGA,SAAS,IAAI,OAAO;CACnB,IAAI,UAAU,KAAK,GAAG,OAAO;EAC5B,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG;IACvB,MAAM,SAAS,QAAQ,MAAM;IAC7B,IAAI,WAAW,KAAK,GAAG,OAAO,GAAG,MAAM;GACxC;GACA,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;CACA,OAAO;EACN,MAAM;EACN,OAAO,OAAO,KAAK;EACnB;EACA,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAChB;QAAA,QAAQ,MAAM,MAAM,OAAO,OAAO,GAAG,KAAK;GAAA;GAE/C,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,YAAY,OAAO,CAAC,CAAC;EAC7D;CACD;AACD;;AAIA,SAAS,aAAa;CACrB,OAAO;EACN,MAAM;EACN,OAAO;EACP,OAAO,KAAK;EACZ,QAAQ,KAAK,QAAQ;GACpB,MAAM,OAAO,qBAAqB,KAAK,IAAI,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;GAC7D,IAAI,SAAS,KAAK,GAAG,OAAO,GAAG,EAAE,KAAK,CAAC;GACvC,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;EACrE;CACD;AACD;;;;;AAOA,SAAS,cAAc,MAAM,SAAS;CACrC,OAAO;EACN,MAAM;EACN,OAAO,GAAG,KAAK,MAAM,MAAM;EAC3B;EACA,eAAe,QAAQ;EACvB,QAAQ,KAAK,QAAQ;GACpB,MAAM,UAAU,qBAAqB,KAAK,IAAI,MAAM;GACpD,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,KAAK,2BAA2B,CAAC,CAAC;GAC5F,OAAO,GAAG;IACT,KAAK,QAAQ,QAAQ;IACrB,kBAAkB,QAAQ,iBAAiB;IAC3C,MAAM,YAAY,QAAQ,QAAQ,IAAI,OAAO;GAC9C,CAAC;EACF;CACD;AACD;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,OAAO,OAAO,OAAO,IAAI,GAAG,OAAO,KAAK;EACtD,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,SAAS,eAAe,MAAM,QAAQ;CACrC,OAAO;EACN,OAAO;EACP;EACA,eAAe,OAAO;EACtB,YAAY,OAAO,cAAc,CAAC;EAClC,OAAO,OAAO,OAAO,OAAO,OAAO,IAAI,GAAG,OAAO,KAAK;EACtD,GAAG,OAAO,WAAW,KAAK,IAAI,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;CAC5D;AACD;AAGA,SAAS,SAAS,MAAM,GAAG,MAAM;CAChC,IAAI,KAAK,WAAW,GAAG,OAAO;EAC7B,GAAG;EACH,UAAU;EACV,YAAY;CACb;CACA,OAAO;EACN,GAAG;EACH,UAAU;EACV,YAAY;EACZ,cAAc,KAAK;CACpB;AACD;;AAIA,MAAM,mBAAmB;CACxB,SAAS,CAAC;CACV,QAAQ,qBAAqB,CAAC,CAAC;AAChC;AAGA,SAAS,YAAY,QAAQ;CAC5B,OAAO;EACN,MAAM;EACN,YAAY,OAAO;CACpB;AACD;AACA,SAAS,SAAS,QAAQ;CACzB,OAAO;EACN,MAAM;EACN,OAAO,OAAO;EACd,WAAW,OAAO,aAAa;CAChC;AACD;AAGA,SAAS,wBAAwB,OAAO;CACvC,MAAM,EAAE,OAAO,YAAY,MAAM,SAAS,SAAS,WAAW;CAC9D,MAAM,MAAM;EACX;EACA;EACA;EACA,WAAW;CACZ;CACA,MAAM,UAAU,KAAK,SAAS,WAAW,qBAAqB,OAAO,MAAM,GAAG,IAAI,kBAAkB,OAAO,MAAM,GAAG;CACpH,MAAM,cAAc,CAAC,GAAG,QAAQ,WAAW;CAC3C,MAAM,wBAAwB,kCAAkC;EAC/D;EACA;EACA;EACA;EACA;CACD,CAAC;CACD,YAAY,KAAK,GAAG,sBAAsB,WAAW;CACrD,IAAI,QAAQ,UAAU,YAAY,SAAS,GAAG,OAAO,MAAM,WAAW;CACtE,OAAO,GAAG;EACT,MAAM,WAAW;EACjB,SAAS,MAAM;EACf,MAAM,MAAM;EACZ,QAAQ,UAAU,QAAQ,MAAM;EAChC,gBAAgB,QAAQ;EACxB,aAAa,QAAQ;EACrB,YAAY,sBAAsB;EAClC,MAAM,MAAM;CACb,CAAC;AACF;AACA,SAAS,qBAAqB,OAAO,MAAM,KAAK;CAC/C,MAAM,cAAc,CAAC;CACrB,IAAI,SAAS;CACb,MAAM,SAAS,OAAO,OAAO,IAAI;CACjC,MAAM,iBAAiB,OAAO,OAAO,IAAI;CACzC,MAAM,cAAc,OAAO,OAAO,IAAI;CACtC,MAAM,uBAAuB,IAAI,IAAI;CACrC,KAAK,MAAM,SAAS,MAAM,KAAK,QAAQ,GAAG;EACzC,MAAM,MAAM,MAAM,IAAI,CAAC,EAAE,KAAK;EAC9B,IAAI,QAAQ,KAAK,GAAG;EACpB,MAAM,OAAO,YAAY,MAAM,QAAQ,IAAI,OAAO;EAClD,IAAI,KAAK,IAAI,GAAG,GAAG;GAClB,YAAY,KAAK,6BAA6B,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC;GAC3E;EACD;EACA,KAAK,IAAI,GAAG;EACZ,MAAM,OAAO,OAAO,OAAO,KAAK,YAAY,GAAG,IAAI,KAAK,WAAW,IAAI,EAAE,OAAO,KAAK;EACrF,IAAI,SAAS,KAAK,GAAG;GACpB,YAAY,KAAK,gBAAgB,mCAAmC,sBAAsB,IAAI,QAAQ,MAAM,QAAQ,WAAW,MAAM,KAAK,gDAAgD,KAAK,OAAO,IAAI,CAAC;GAC3M;EACD;EACA,eAAe,OAAO;EACtB,MAAM,QAAQ,MAAM,MAAM;EAC1B,IAAI,UAAU,KAAK,GAAG;GACrB,YAAY,KAAK,oBAAoB,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC;GAClE;EACD;EACA,MAAM,SAAS,KAAK,MAAM,OAAO,GAAG;EACpC,IAAI,OAAO,IAAI;GACd,OAAO,OAAO,OAAO;GACrB,iBAAiB,aAAa,KAAK,KAAK;EACzC,OAAO;GACN,SAAS;GACT,YAAY,KAAK,GAAG,OAAO,OAAO;EACnC;CACD;CACA,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,UAAU,GAAG;EAC3D,IAAI,KAAK,IAAI,GAAG,GAAG;EACnB,IAAI,kBAAkB,MAAM,IAAI,GAAG;GAClC,IAAI,MAAM,KAAK,YAAY,OAAO,OAAO,MAAM,KAAK;GACpD;EACD;EACA,YAAY,KAAK,gBAAgB,4CAA4C,uBAAuB,IAAI,qBAAqB,MAAM,QAAQ,WAAW,MAAM,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;CACnM;CACA,OAAO;EACN;EACA;EACA;EACA;EACA;CACD;AACD;AACA,SAAS,kBAAkB,OAAO,MAAM,KAAK;CAC5C,MAAM,cAAc,CAAC;CACrB,IAAI,SAAS;CACb,MAAM,SAAS,OAAO,OAAO,IAAI;CACjC,MAAM,iBAAiB,OAAO,OAAO,IAAI;CACzC,MAAM,cAAc,OAAO,OAAO,IAAI;CACtC,MAAM,uBAAuB,IAAI,IAAI;CACrC,KAAK,MAAM,SAAS,MAAM,KAAK,QAAQ,GAAG;EACzC,MAAM,MAAM,MAAM,IAAI,CAAC,EAAE,KAAK;EAC9B,IAAI,QAAQ,KAAK,GAAG;EACpB,MAAM,OAAO,YAAY,MAAM,QAAQ,IAAI,OAAO;EAClD,IAAI,KAAK,IAAI,GAAG,GAAG;GAClB,YAAY,KAAK,6BAA6B,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC;GAC3E;EACD;EACA,KAAK,IAAI,GAAG;EACZ,eAAe,OAAO;EACtB,MAAM,QAAQ,MAAM,MAAM;EAC1B,IAAI,UAAU,KAAK,GAAG;GACrB,IAAI,KAAK,WAAW;IACnB,OAAO,OAAO,KAAK;IACnB;GACD;GACA,YAAY,KAAK,oBAAoB,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC;GAClE;EACD;EACA,MAAM,SAAS,KAAK,MAAM,KAAK,MAAM,OAAO,GAAG;EAC/C,IAAI,OAAO,IAAI;GACd,OAAO,OAAO,OAAO;GACrB,iBAAiB,aAAa,KAAK,KAAK;EACzC,OAAO;GACN,SAAS;GACT,YAAY,KAAK,GAAG,OAAO,OAAO;EACnC;CACD;CACA,OAAO;EACN;EACA;EACA;EACA;EACA;CACD;AACD;AACA,SAAS,iBAAiB,aAAa,KAAK,OAAO;CAClD,MAAM,OAAO,qBAAqB,KAAK,MAAM,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE;CAC/D,IAAI,SAAS,KAAK,GAAG,YAAY,OAAO;AACzC;AACA,SAAS,6BAA6B,OAAO,KAAK,KAAK,MAAM,MAAM;CAClE,OAAO,gBAAgB,qCAAqC,wBAAwB,IAAI,QAAQ,MAAM,QAAQ,WAAW,MAAM,KAAK,2BAA2B,KAAK,MAAM,IAAI;AAC/K;AACA,SAAS,oBAAoB,OAAO,KAAK,KAAK,MAAM,MAAM;CACzD,OAAO,gBAAgB,sCAAsC,cAAc,IAAI,QAAQ,MAAM,QAAQ,WAAW,MAAM,KAAK,wBAAwB,IAAI,eAAe,KAAK,MAAM,IAAI;AACtL;AACA,SAAS,kCAAkC,OAAO;CACjD,MAAM,EAAE,OAAO,YAAY,SAAS,SAAS,WAAW;CACxD,MAAM,WAAW,WAAW,cAAc,CAAC;CAC3C,MAAM,aAAa,OAAO,OAAO,IAAI;CACrC,MAAM,cAAc,CAAC;CACrB,MAAM,4BAA4B,IAAI,IAAI;CAC1C,KAAK,MAAM,aAAa,MAAM,KAAK,WAAW,GAAG;EAChD,MAAM,OAAO,UAAU,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK;EACnD,MAAM,OAAO,YAAY,UAAU,QAAQ,OAAO;EAClD,IAAI,CAAC,OAAO,OAAO,UAAU,IAAI,GAAG;GACnC,YAAY,KAAK;IAChB,MAAM;IACN,SAAS,wBAAwB,KAAK,QAAQ,MAAM,QAAQ,WAAW,MAAM,KAAK;IAClF,GAAG,iBAAiB,SAAS,UAAU,MAAM,CAAC,CAAC,GAAG,IAAI;GACvD,CAAC;GACD;EACD;EACA,IAAI,UAAU,IAAI,IAAI,GAAG;GACxB,YAAY,KAAK;IAChB,MAAM;IACN,SAAS,0BAA0B,KAAK,QAAQ,MAAM,QAAQ,WAAW,MAAM,KAAK;IACpF,GAAG,iBAAiB,SAAS,UAAU,MAAM,CAAC,CAAC,GAAG,IAAI;GACvD,CAAC;GACD;EACD;EACA,UAAU,IAAI,IAAI;EAClB,MAAM,OAAO,UAAU,SAAS,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;EAClD,MAAM,SAAS,mBAAmB,WAAW,MAAM;GAClD;GACA;GACA;GACA,WAAW;EACZ,CAAC;EACD,IAAI,OAAO,IAAI;GACd,MAAM,WAAW,OAAO,OAAO,IAAI;GACnC,IAAI,iBAAiB;GACrB,KAAK,MAAM,OAAO,sBAAsB,WAAW,OAAO,CAAC,CAAC,MAAM;IACjE,MAAM,MAAM,IAAI,QAAQ,KAAK,WAAW,iBAAiB,EAAE;IAC3D,IAAI,QAAQ,KAAK,GAAG,SAAS,OAAO,IAAI;GACzC;GACA,WAAW,QAAQ;IAClB,MAAM,OAAO;IACb;IACA;GACD;EACD,OAAO,YAAY,KAAK,GAAG,OAAO,OAAO;CAC1C;CACA,OAAO;EACN;EACA;CACD;AACD;AACA,SAAS,gBAAgB,MAAM,SAAS,KAAK,MAAM,MAAM;CACxD,OAAO;EACN;EACA;EACA,GAAG,iBAAiB,IAAI,SAAS,KAAK,MAAM,CAAC,CAAC,GAAG,IAAI;CACtD;AACD;AACA,SAAS,yBAAyB,OAAO;CACxC,MAAM,EAAE,aAAa,SAAS,qBAAqB,WAAW;CAC9D,MAAM,+BAA+B,IAAI,IAAI;CAC7C,MAAM,cAAc,CAAC;CACrB,MAAM,SAAS,CAAC,YAAY,UAAU,GAAG,OAAO,OAAO,YAAY,SAAS,UAAU,CAAC;CACvF,KAAK,MAAM,SAAS,QAAQ,KAAK,MAAM,SAAS,OAAO,OAAO,MAAM,MAAM,GAAG;EAC5E,MAAM,aAAa,oBAAoB,qBAAqB,MAAM,OAAO;EACzE,IAAI,eAAe,KAAK,GAAG;EAC3B,MAAM,SAAS,wBAAwB;GACtC;GACA;GACA,MAAM,mBAAmB,UAAU,CAAC,CAAC,EAAE,SAAS,YAAY,CAAC;GAC7D,SAAS;GACT;GACA;EACD,CAAC;EACD,IAAI,OAAO,IAAI,aAAa,IAAI,OAAO,OAAO,KAAK;OAC9C,YAAY,KAAK,GAAG,OAAO,OAAO;CACxC;CACA,OAAO;EACN;EACA;CACD;AACD;;;;AAMA,MAAM,4BAA4B;AAGlC,MAAM,YAAY;AAClB,MAAM,cAAc;AACpB,SAAS,mBAAmB,MAAM;CACjC,OAAO,UAAU,KAAK,IAAI;AAC3B;;AAEA,SAAS,sBAAsB,MAAM;CACpC,OAAO,KAAK,QAAQ,YAAY,OAAO,MAAM,MAAM,UAAU,SAAS,cAAc,GAAG,KAAK,UAAU,UAAU,KAAK;AACtH"}