{"version":3,"sources":["../../../node_modules/.pnpm/validate-color@2.2.4/node_modules/validate-color/lib/index.js","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/errors.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/types/child-ref-helpers.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/types/helpers.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/types/common-types.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/common/semver.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/common/uax31.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/catalog/schema_loader.ts","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Options.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/Refs.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/errorMessages.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/any.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/array.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/date.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/default.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/record.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/map.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/never.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/null.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/union.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/number.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/object.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/set.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/selectParser.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parseDef.js","../../../node_modules/.pnpm/zod-to-json-schema@3.25.2_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_8/standard_defs.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/standard_defs.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v1_0/standard_defs.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/catalog/schema_generator.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/catalog/reference-map.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/catalog/types.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/common/events.ts","../../../node_modules/.pnpm/@preact+signals-core@1.14.4/node_modules/@preact/signals-core/src/index.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/reactivity/signals.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/state/data-model.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/validation/integrity-checker.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/state/surface-components-model.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/state/surface-model.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/state/surface-group-model.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/state/component-model.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/format-zod-issue.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/adapters/base.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_8/schema/common-types.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_8/schema/server-to-client.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/adapters/v0_8.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/schema/server-to-client.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/adapters/v0_9.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/operations.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v1_0/schema/helpers.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v1_0/schema/common-types.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v1_0/schema/agent-to-renderer.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/adapters/v1_0.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/adapters/factory.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/data-context.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v1_0/functions/system_functions.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/validation/payload-validator.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/rpc/rpc-handler.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/processing/message-processor.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/component-context.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/generic-binder.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/resolved-binding.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/component-node.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/ref-fields.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/resolution/node-resolver.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/schema/client-to-server.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/schema/common-types.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/basic_catalog/components/basic_components.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/basic_catalog/styles/default.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/basic_catalog/theme.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/basic_catalog/functions/basic_functions_api.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/expressions/expression_parser.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/common/basic_functions.ts","../../../node_modules/.pnpm/@a2ui+web_core@0.12.0/node_modules/@a2ui/src/v0_9/basic_catalog/functions/basic_functions.ts","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/node-view.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/A2uiSurface.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/adapter.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/utils.ts","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/context/MarkdownContext.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/hooks/useMarkdown.ts","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Text.module.css","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Text.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Image.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Icon.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Video.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/AudioPlayer.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/ChildList.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Row.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Column.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/List.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Card.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Tabs.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Divider.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Modal.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Button.module.css","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Button.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/TextField.module.css","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/TextField.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/CheckBox.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/ChoicePicker.module.css","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/ChoicePicker.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/Slider.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/components/DateTimeInput.tsx","../../../node_modules/.pnpm/@a2ui+react@0.12.0_react-dom@19.2.8_react@19.2.8__react@19.2.8_zod@3.25.76/node_modules/@a2ui/src/v0_9/catalog/basic/index.ts","../src/official/catalog.ts","../src/policy/action-policy.ts","../src/official/v1-compat.ts","../src/official/runtime.ts","../src/policy/entity-graph-policy.ts","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/common/utils.mjs","../../../node_modules/.pnpm/mdurl@2.1.0/node_modules/mdurl/index.mjs","../../../node_modules/.pnpm/mdurl@2.1.0/node_modules/mdurl/lib/decode.mjs","../../../node_modules/.pnpm/mdurl@2.1.0/node_modules/mdurl/lib/encode.mjs","../../../node_modules/.pnpm/mdurl@2.1.0/node_modules/mdurl/lib/format.mjs","../../../node_modules/.pnpm/mdurl@2.1.0/node_modules/mdurl/lib/parse.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/index.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/properties/Any/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Cc/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Cf/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/P/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/S/regex.mjs","../../../node_modules/.pnpm/uc.micro@2.1.0/node_modules/uc.micro/categories/Z/regex.mjs","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/decode-data-xml.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode_codepoint.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/decode.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/generated/encode-html.ts","https://raw.githubusercontent.com/fb55/entities/61afd4701eaa736978b13c7351cd3de9a96b04bc/src/index.ts","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/helpers/index.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/helpers/parse_link_label.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/helpers/parse_link_title.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/renderer.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/ruler.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/token.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/state_core.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/normalize.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/block.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/inline.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/linkify.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/replacements.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/smartquotes.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_core/text_join.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/parser_core.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/state_block.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/table.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/code.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/fence.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/blockquote.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/hr.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/list.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/reference.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/common/html_blocks.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/common/html_re.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/html_block.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/heading.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/lheading.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_block/paragraph.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/parser_block.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/state_inline.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/text.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/linkify.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/newline.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/escape.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/backticks.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/emphasis.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/link.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/image.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/autolink.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/html_inline.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/entity.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/parser_inline.mjs","../../../node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/lib/re.mjs","../../../node_modules/.pnpm/linkify-it@5.0.2/node_modules/linkify-it/index.mjs","../../../node_modules/.pnpm/punycode.js@2.3.1/node_modules/punycode.js/punycode.es6.js","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/presets/default.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/presets/zero.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/presets/commonmark.mjs","../../../node_modules/.pnpm/markdown-it@14.3.0/node_modules/markdown-it/lib/index.mjs","../../../node_modules/.pnpm/@a2ui+markdown-it@0.2.0_@a2ui+web_core@0.12.0/node_modules/@a2ui/src/raw-markdown.ts","../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/src/utils.ts","../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/src/tags.ts","../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/src/attrs.ts","../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/src/regexp.ts","../../../node_modules/.pnpm/dompurify@3.4.11/node_modules/dompurify/src/purify.ts","../../../node_modules/.pnpm/@a2ui+markdown-it@0.2.0_@a2ui+web_core@0.12.0/node_modules/@a2ui/src/sanitizer.ts","../../../node_modules/.pnpm/@a2ui+markdown-it@0.2.0_@a2ui+web_core@0.12.0/node_modules/@a2ui/src/markdown.ts","../src/react/a2ui-provider.tsx"],"names":["exports","e","r","t","n","a","l","i","u","g","y","S","m","o","d","s","c","f","h","code","RpcErrorCode","z","text","match","v","b","entries","_","p","x","ZodFirstPartyTypeKind","types","base","name","schema","list","refTarget","BRAND_SYMBOL","Symbol","for","endBatch","batchDepth","error","hasError","snapshots","batchSnapshots","source","_source","_value","node","_targets","_nextTarget","_version","_next","reconcileBatchSnapshots","batchedEffect","effect","batchIteration","next","_nextBatchedEffect","_flags","needsToRecompute","_callback","err","batch","fn","currentBatchSnapshotVersion","batchSnapshotVersion","evalContext","capturedEffects","untracked","prevContext","prevCapturedEffects","globalVersion","addDependency","signal","_node","_target","_prevSource","_sources","_nextSource","_prevTarget","_rollbackNode","_subscribe","Signal","value","options","this","_batchSnapshotVersion","_watched","watched","_unwatched","unwatched","prototype","brand","_refresh","targets","_this$_watched","call","_unsubscribe","prev","_this$_unwatched","subscribe","valueOf","toString","toJSON","peek","Object","defineProperty","get","set","Error","_notify","target","prepareSources","rollbackNode","cleanupSources","head","Computed","_fn","_globalVersion","OUTDATED","computed","cleanupEffect","cleanup","_cleanup","disposeEffect","endEffect","Effect","push","finish","_start","bind","_dispose","dispose","errors","ActionSchema","DeleteSurfaceMessageSchema","A2uiMessageSchema","ComponentIdSchema","AnyComponentSchema","ComponentCommonSchema","CallIdSchema","DataBindingSchema","FunctionCommonSchema","FunctionCallSchema","DynamicStringSchema","DynamicBooleanSchema","AccessibilityAttributesSchema","ExtensionsSchema","DynamicValueSchema","DynamicNumberSchema","CheckRuleSchema","FunctionResponseSchema","CreateSurfaceMessageSchema","UpdateComponentsMessageSchema","UpdateDataModelMessageSchema","abortController","config","surfaces","EMPTY_REF_FIELDS","record","isPlainObject","ChildListSchema","DynamicStringListSchema","validateColor","createFormatNumberImplementation","createFormatCurrencyImplementation","createFormatDateImplementation","createPluralizeImplementation","map","useCallback","isComponentNode","jsx","jsxs","useMemo","getValue","peekValue","useSyncExternalStore","memo","useEffect","NodeView","j","createContext","useContext","html","className","React","useState","Fragment","create","defaultGraphStore","fromCodePoint","regex_default","_a","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityLevel","EncodingMode","entity","nextLine","pos","max","_rules","linkify","link","escape","postProcess","isLinkOpen","isLinkClose","_rules2","assign","_class","isString","escapeRE","defaultOptions","tlds","normalize","decode","w","encode","setPrototypeOf","isFrozen","getPrototypeOf","getOwnPropertyDescriptor","freeze","seal","_ref","Reflect","apply","construct","func","thisArg","_len","arguments","length","args","Array","_key","Func","_len2","_key2","arrayForEach","unapply","forEach","arrayLastIndexOf","lastIndexOf","arrayPop","pop","arrayPush","arraySplice","splice","arrayIsArray","isArray","stringToLowerCase","String","toLowerCase","stringToString","stringMatch","stringReplace","replace","stringIndexOf","indexOf","stringTrim","trim","numberToString","Number","booleanToString","Boolean","bigintToString","BigInt","symbolToString","objectHasOwnProperty","hasOwnProperty","objectToString","regExpTest","RegExp","test","typeErrorCreate","unconstruct","TypeError","lastIndex","_len3","_key3","_len4","_key4","addToSet","array","transformCaseFunc","element","lcElement","cleanArray","index","isPropertyExist","clone","object","newObject","_ref2","_ref3","_slicedToArray","property","constructor","stringifyValue","valueAsRecord","valueToString","lookupGetter","stringified","prop","desc","fallbackValue","isRegex","_unused","svg","svgFilters","svgDisallowed","mathMl","mathMlDisallowed","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","ELEMENT_MARKUP_PROBE","COMMENT_MARKUP_PROBE","FALLBACK_TAG_CLOSE","SELF_CLOSING_TAG","NODE_TYPE","attribute","cdataSection","entityReference","entityNode","processingInstruction","comment","document","documentType","documentFragment","notation","getGlobal","window","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createHTML","createScriptURL","scriptUrl","console","warn","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","_resolveSetOption","cfg","key","fallback","transform","createDOMPurify","undefined","DOMPurify","root","version","VERSION","removed","nodeType","Element","isSupported","originalDocument","currentScript","DocumentFragment","HTMLTemplateElement","Node","NodeFilter","_window$NamedNodeMap","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","cloneNode","remove","getNextSibling","getChildNodes","getParentNode","getShadowRoot","getAttributes","getNodeType","getNodeName","template","createElement","content","ownerDocument","trustedTypesPolicy","emptyHTML","defaultTrustedTypesPolicy","defaultTrustedTypesPolicyResolved","IN_TRUSTED_TYPES_POLICY","_assertNotInTrustedTypesPolicy","_createTrustedHTML","_createTrustedScriptURL","_getDefaultTrustedTypesPolicy","_document","implementation","createNodeIterator","createDocumentFragment","getElementsByTagName","importNode","hooks","createHTMLDocument","EXPRESSIONS","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","ATTRS","CUSTOM_ELEMENT_HANDLING","tagNameCheck","writable","configurable","enumerable","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","EXTRA_ELEMENT_HANDLING","tagCheck","attributeCheck","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","SET_CONFIG_ALLOWED_TAGS","SET_CONFIG_ALLOWED_ATTR","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","DEFAULT_MATHML_TEXT_INTEGRATION_POINTS","MATHML_TEXT_INTEGRATION_POINTS","DEFAULT_HTML_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","CONFIG","formElement","isRegexOrFunction","testValue","Function","_parseConfig","ALLOWED_URI_REGEXP","customElementHandling","ADD_TAGS","ADD_ATTR","ADD_URI_SAFE_ATTR","ADD_FORBID_CONTENTS","table","tbody","TRUSTED_TYPES_POLICY","previousTrustedTypesPolicy","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkSvgNamespace","tagName","parent","parentTagName","namespaceURI","_checkMathMlNamespace","_checkHtmlNamespace","_checkValidNamespace","_forceRemove","removeChild","_neutralizeRoot","childNodes","snapshot","child","attributes","removeAttribute","_removeAttribute","getAttributeNode","from","setAttribute","_stripDisallowedAttributes","_neutralizeSubtree","stack","_initDocument","dirty","doc","leadingWhitespace","matches","dirtyPayload","parseFromString","documentElement","createDocument","innerHTML","body","insertBefore","createTextNode","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_stripTemplateExpressions","_scrubTemplateExpressions","_node$querySelectorAl","walker","currentNode","nextNode","data","templates","querySelectorAll","tmpl","_isDocumentFragment","_isClobbered","realTagName","nodeName","textContent","hasChildNodes","_isNode","_executeHooks","hook","_isUnsafeNode","firstElementChild","_sanitizeDisallowedNode","_isBasicCustomElement","parentNode","childCount","hoisted","_sanitizeElements","allowedTags","nt","_isValidAttribute","lcTag","lcName","nameIsPermitted","RESERVED_CUSTOM_ELEMENT_NAMES","_applyTrustedTypesToAttribute","getAttributeType","_setAttributeValue","setAttributeNS","_sanitizeAttributes","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","forceKeepAttr","attr","initValue","_sanitizeShadowDOM","fragment","shadowNode","shadowIterator","shadowNodeType","innerSr","_sanitizeAttachedShadowRoots","shadow","item","isElement","rootName","sr","sanitize","importedNode","returnNode","inPlace","nn","appendChild","firstChild","nodeIterator","entry","shadowroot","shadowrootmode","serializedHTML","outerHTML","doctype","setConfig","clearConfig","isValidAttribute","tag","addHook","entryPoint","hookFunction","removeHook","removeHooks","removeAllHooks","purify"],"mappings":"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AA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,SAAS,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,SAAS,CAAA,EAAE,CAAC,GAAE,SAAS,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EA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E,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,GAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,UAAU,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAA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AC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,EAAA,EAAG,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,OAAO,CAAA,EAAE,CAAC,CAAA,EAAE,OAAO,GAAE,CAAC,CAAA,EAAE,OAAO,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CAAA,EAAE,QAAQ,CAAA,EAAE,CAAC,GAAE,QAAQ,CAAA,EAAE,CAAC,CAAA,EAAE,QAAQ,GAAE,CAAC,CA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AA,EACA,QAAA,EACA,QAAA,EACA,OAAA,EACA,KAAA,EACA,SAAA,EACA,KAAA,EACA,OAAA,EACA,OAAA,EACA,IAAA,EACA,UAAA,EACA,UAAA,EACA,OAAA,EACA,IAAA,EACA,OAAA,EACA,MAAA,EACA,IAAA,EACA,OAAA,EACA,IAAA,EACA,GAAA,EACA,IAAA,EACA,KAAA,EACA,OAAA,EACA,KAAK,CACG,CAAA;AAEH,IAAMuF,KAAAA,GAAMvF,OAAO,CACxB,KAAA,EACA,KACA,UAAA,EACA,aAAA,EACA,cAAA,EACA,cAAA,EACA,eAAA,EACA,kBAAA,EACA,UACA,UAAA,EACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,cAAA,EACA,aAAA,EACA,UACA,MAAA,EACA,GAAA,EACA,OAAA,EACA,UAAA,EACA,OAAA,EACA,OAAA,EACA,aACA,MAAA,EACA,gBAAA,EACA,UACA,MAAA,EACA,UAAA,EACA,SACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,SAAA,EACA,UAAA,EACA,gBAAA,EACA,QACA,MAAA,EACA,OAAA,EACA,QAAA,EACA,QAAA,EACA,MAAA,EACA,UAAA,EACA,SACA,MAAA,EACA,OAAA,EACA,MAAA,EACA,OAAO,CACC,CAAA;AAEH,IAAMwF,UAAAA,GAAaxF,MAAAA,CAAO,CAC/B,SAAA,EACA,eAAA,EACA,qBAAA,EACA,aAAA,EACA,kBAAA,EACA,mBAAA,EACA,mBAAA,EACA,gBAAA,EACA,cAAA,EACA,SAAA,EACA,SAAA,EACA,SAAA,EACA,SAAA,EACA,SAAA,EACA,gBAAA,EACA,SAAA,EACA,SAAA,EACA,aAAA,EACA,cAAA,EACA,UAAA,EACA,cAAA,EACA,oBAAA,EACA,aAAA,EACA,QAAA,EACA,cAAc,CACN,CAAA;AAMH,IAAMyF,aAAAA,GAAgBzF,MAAAA,CAAO,CAClC,SAAA,EACA,eAAA,EACA,UACA,SAAA,EACA,WAAA,EACA,kBAAA,EACA,gBAAA,EACA,eAAA,EACA,eAAA,EACA,iBACA,OAAA,EACA,WAAA,EACA,MAAA,EACA,cAAA,EACA,WAAA,EACA,SAAA,EACA,eAAA,EACA,QAAA,EACA,KAAA,EACA,YAAA,EACA,SAAA,EACA,KAAK,CACG,CAAA;AAEH,IAAM0F,QAAAA,GAAS1F,MAAAA,CAAO,CAC3B,MAAA,EACA,YACA,QAAA,EACA,SAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACA,YAAA,EACA,eAAA,EACA,IAAA,EACA,MACA,OAAA,EACA,SAAA,EACA,UAAA,EACA,OAAA,EACA,MAAA,EACA,IAAA,EACA,QAAA,EACA,OAAA,EACA,UACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,QAAA,EACA,OACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,YAAA,EACA,aAAa,CACL,CAAA;AAIH,IAAM2F,mBAAmB3F,MAAAA,CAAO,CACrC,WACA,aAAA,EACA,YAAA,EACA,YACA,WAAA,EACA,SAAA,EACA,SAAA,EACA,QAAA,EACA,UACA,OAAA,EACA,WAAA,EACA,cACA,gBAAA,EACA,aAAA,EACA,MAAM,CACE,CAAA;AAEH,IAAM7M,KAAAA,GAAO6M,MAAAA,CAAO,CAAC,OAAO,CAAU,CAAA;AC1RtC,IAAM1C,IAAAA,GAAO0C,MAAAA,CAAO,CACzB,QAAA,EACA,QAAA,EACA,OAAA,EACA,KAAA,EACA,gBAAA,EACA,cAAA,EACA,sBAAA,EACA,UAAA,EACA,YAAA,EACA,SAAA,EACA,QAAA,EACA,SAAA,EACA,aAAA,EACA,aAAA,EACA,SAAA,EACA,MAAA,EACA,OAAA,EACA,OAAA,EACA,OAAA,EACA,MAAA,EACA,SAAA,EACA,SAAA,EACA,YAAA,EACA,UAAA,EACA,cAAA,EACA,QAAA,EACA,eACA,UAAA,EACA,UAAA,EACA,SAAA,EACA,KAAA,EACA,UAAA,EACA,yBAAA,EACA,uBAAA,EACA,UAAA,EACA,WAAA,EACA,SAAA,EACA,cAAA,EACA,aAAA,EACA,MAAA,EACA,KAAA,EACA,SAAA,EACA,QAAA,EACA,QAAA,EACA,MAAA,EACA,MAAA,EACA,UAAA,EACA,IAAA,EACA,OAAA,EACA,WAAA,EACA,WAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,QACA,KAAA,EACA,KAAA,EACA,WAAA,EACA,OAAA,EACA,QAAA,EACA,KAAA,EACA,WAAA,EACA,UAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EACA,MAAA,EACA,SAAA,EACA,MAAA,EACA,SAAA,EACA,aAAA,EACA,aAAA,EACA,SAAA,EACA,eAAA,EACA,qBAAA,EACA,QAAA,EACA,SAAA,EACA,SAAA,EACA,YAAA,EACA,UAAA,EACA,KAAA,EACA,UAAA,EACA,KAAA,EACA,UAAA,EACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,YAAA,EACA,OAAA,EACA,UAAA,EACA,OAAA,EACA,MAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,EACA,SAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,EACA,MAAA,EACA,OAAA,EACA,SAAA,EACA,UAAA,EACA,OAAA,EACA,WAAA,EACA,MAAA,EACA,QAAA,EACA,QAAA,EACA,OAAA,EACA,OAAA,EACA,MAAA,EACA,OAAO,CACC,CAAA;AAEH,IAAMuF,GAAAA,GAAMvF,OAAO,CACxB,eAAA,EACA,cACA,UAAA,EACA,oBAAA,EACA,aACA,QAAA,EACA,eAAA,EACA,iBACA,SAAA,EACA,eAAA,EACA,kBACA,OAAA,EACA,MAAA,EACA,MACA,OAAA,EACA,MAAA,EACA,iBACA,WAAA,EACA,WAAA,EACA,SACA,qBAAA,EACA,6BAAA,EACA,iBACA,iBAAA,EACA,IAAA,EACA,MACA,GAAA,EACA,IAAA,EACA,MACA,iBAAA,EACA,WAAA,EACA,WACA,SAAA,EACA,KAAA,EACA,YACA,WAAA,EACA,KAAA,EACA,YACA,MAAA,EACA,cAAA,EACA,aACA,QAAA,EACA,aAAA,EACA,eACA,eAAA,EACA,aAAA,EACA,aACA,kBAAA,EACA,cAAA,EACA,cACA,cAAA,EACA,aAAA,EACA,MACA,IAAA,EACA,IAAA,EACA,MACA,YAAA,EACA,UAAA,EACA,iBACA,mBAAA,EACA,QAAA,EACA,QACA,IAAA,EACA,iBAAA,EACA,MACA,KAAA,EACA,WAAA,EACA,KACA,IAAA,EACA,IAAA,EACA,MACA,IAAA,EACA,SAAA,EACA,aACA,YAAA,EACA,UAAA,EACA,QACA,cAAA,EACA,gBAAA,EACA,gBACA,kBAAA,EACA,gBAAA,EACA,SACA,YAAA,EACA,YAAA,EACA,gBACA,cAAA,EACA,aAAA,EACA,aAAA,EACA,kBAAA,EACA,WAAA,EACA,KAAA,EACA,QACA,WAAA,EACA,OAAA,EACA,UACA,MAAA,EACA,KAAA,EACA,QACA,YAAA,EACA,QAAA,EACA,YACA,SAAA,EACA,OAAA,EACA,UACA,aAAA,EACA,QAAA,EACA,YACA,aAAA,EACA,MAAA,EACA,cACA,qBAAA,EACA,kBAAA,EACA,gBACA,QAAA,EACA,eAAA,EACA,uBACA,gBAAA,EACA,GAAA,EACA,MACA,IAAA,EACA,QAAA,EACA,QACA,MAAA,EACA,aAAA,EACA,aACA,SAAA,EACA,QAAA,EACA,UACA,OAAA,EACA,MAAA,EACA,mBACA,OAAA,EACA,kBAAA,EACA,oBACA,cAAA,EACA,aAAA,EACA,cAAA,EACA,aAAA,EACA,YAAA,EACA,cAAA,EACA,oBACA,mBAAA,EACA,gBAAA,EACA,mBACA,mBAAA,EACA,gBAAA,EACA,UACA,cAAA,EACA,OAAA,EACA,gBACA,gBAAA,EACA,UAAA,EACA,eACA,SAAA,EACA,SAAA,EACA,aACA,kBAAA,EACA,aAAA,EACA,mBACA,gBAAA,EACA,YAAA,EACA,QACA,IAAA,EACA,IAAA,EACA,WACA,QAAA,EACA,SAAA,EACA,cACA,SAAA,EACA,YAAA,EACA,iBACA,eAAA,EACA,OAAA,EACA,gBACA,MAAA,EACA,cAAA,EACA,oBACA,kBAAA,EACA,GAAA,EACA,MACA,IAAA,EACA,OAAA,EACA,KACA,IAAA,EACA,IAAA,EACA,GAAA,EACA,YAAY,CACJ,CAAA;AAEH,IAAM0F,MAAAA,GAAS1F,MAAAA,CAAO,CAC3B,QAAA,EACA,aAAA,EACA,OAAA,EA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","file":"index.mjs","sourcesContent":["module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var a=r[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,t),a.l=!0,a.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&r&&\"string\"!=typeof e)for(var a in e)t.d(n,a,function(r){return e[r]}.bind(null,a));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,\"a\",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p=\"\",t(t.s=0)}([function(e,r,t){\"use strict\";t.r(r),t.d(r,\"validateHTMLColorName\",(function(){return l})),t.d(r,\"validateHTMLColorSpecialName\",(function(){return i})),t.d(r,\"validateHTMLColorHex\",(function(){return u})),t.d(r,\"validateHTMLColorRgb\",(function(){return g})),t.d(r,\"validateHTMLColorHsl\",(function(){return y})),t.d(r,\"validateHTMLColorHwb\",(function(){return L})),t.d(r,\"validateHTMLColorLab\",(function(){return S})),t.d(r,\"validateHTMLColorLch\",(function(){return m})),t.d(r,\"validateHTMLColor\",(function(){return G}));const n=e=>e&&\"string\"==typeof e,a=[\"AliceBlue\",\"AntiqueWhite\",\"Aqua\",\"Aquamarine\",\"Azure\",\"Beige\",\"Bisque\",\"Black\",\"BlanchedAlmond\",\"Blue\",\"BlueViolet\",\"Brown\",\"BurlyWood\",\"CadetBlue\",\"Chartreuse\",\"Chocolate\",\"Coral\",\"CornflowerBlue\",\"Cornsilk\",\"Crimson\",\"Cyan\",\"DarkBlue\",\"DarkCyan\",\"DarkGoldenrod\",\"DarkGray\",\"DarkGrey\",\"DarkGreen\",\"DarkKhaki\",\"DarkMagenta\",\"DarkOliveGreen\",\"DarkOrange\",\"DarkOrchid\",\"DarkRed\",\"DarkSalmon\",\"DarkSeaGreen\",\"DarkSlateBlue\",\"DarkSlateGray\",\"DarkSlateGrey\",\"DarkTurquoise\",\"DarkViolet\",\"DeepPink\",\"DeepSkyBlue\",\"DimGray\",\"DimGrey\",\"DodgerBlue\",\"FireBrick\",\"FloralWhite\",\"ForestGreen\",\"Fuchsia\",\"Gainsboro\",\"GhostWhite\",\"Gold\",\"Goldenrod\",\"Gray\",\"Grey\",\"Green\",\"GreenYellow\",\"HoneyDew\",\"HotPink\",\"IndianRed\",\"Indigo\",\"Ivory\",\"Khaki\",\"Lavender\",\"LavenderBlush\",\"LawnGreen\",\"LemonChiffon\",\"LightBlue\",\"LightCoral\",\"LightCyan\",\"LightGoldenrodYellow\",\"LightGray\",\"LightGrey\",\"LightGreen\",\"LightPink\",\"LightSalmon\",\"LightSalmon\",\"LightSeaGreen\",\"LightSkyBlue\",\"LightSlateGray\",\"LightSlateGrey\",\"LightSteelBlue\",\"LightYellow\",\"Lime\",\"LimeGreen\",\"Linen\",\"Magenta\",\"Maroon\",\"MediumAquamarine\",\"MediumBlue\",\"MediumOrchid\",\"MediumPurple\",\"MediumSeaGreen\",\"MediumSlateBlue\",\"MediumSlateBlue\",\"MediumSpringGreen\",\"MediumTurquoise\",\"MediumVioletRed\",\"MidnightBlue\",\"MintCream\",\"MistyRose\",\"Moccasin\",\"NavajoWhite\",\"Navy\",\"OldLace\",\"Olive\",\"OliveDrab\",\"Orange\",\"OrangeRed\",\"Orchid\",\"PaleGoldenrod\",\"PaleGreen\",\"PaleTurquoise\",\"PaleVioletRed\",\"PapayaWhip\",\"PeachPuff\",\"Peru\",\"Pink\",\"Plum\",\"PowderBlue\",\"Purple\",\"RebeccaPurple\",\"Red\",\"RosyBrown\",\"RoyalBlue\",\"SaddleBrown\",\"Salmon\",\"SandyBrown\",\"SeaGreen\",\"SeaShell\",\"Sienna\",\"Silver\",\"SkyBlue\",\"SlateBlue\",\"SlateGray\",\"SlateGrey\",\"Snow\",\"SpringGreen\",\"SteelBlue\",\"Tan\",\"Teal\",\"Thistle\",\"Tomato\",\"Turquoise\",\"Violet\",\"Wheat\",\"White\",\"WhiteSmoke\",\"Yellow\",\"YellowGreen\"],o=[\"currentColor\",\"inherit\",\"transparent\"],l=e=>{let r=!1;return n(e)&&a.map(t=>(e.toLowerCase()===t.toLowerCase()&&(r=!0),null)),r},i=e=>{let r=!1;return n(e)&&o.map(t=>(e.toLowerCase()===t.toLowerCase()&&(r=!0),null)),r},u=e=>{if(n(e)){const r=/^#([\\da-f]{3}){1,2}$|^#([\\da-f]{4}){1,2}$/i;return e&&r.test(e)}return!1},d=\"(([\\\\d]{0,5})((\\\\.([\\\\d]{1,5}))?))\",s=`(${d}%)`,c=\"(([0-9]|[1-9][0-9]|100)%)\",f=`(${c}|(0?((\\\\.([\\\\d]{1,5}))?))|1)`,h=`([\\\\s]{0,5})\\\\)?)(([\\\\s]{0,5})(\\\\/?)([\\\\s]{1,5})${`(((${c}))|(0?((\\\\.([\\\\d]{1,5}))?))|1))?`}([\\\\s]{0,5})\\\\)`,$=\"(-?(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\\\.([\\\\d]{1,5}))?)|360)(deg)?)\",g=e=>{if(n(e)){const r=\"([\\\\s]{0,5})([\\\\d]{1,5})%?([\\\\s]{0,5}),?\",t=\"((([\\\\s]{0,5}),?([\\\\s]{0,5}))|(([\\\\s]{1,5})))\",n=new RegExp(`^(rgb)a?\\\\(${`${r}${t}`}${`${r}${t}`}${`${r}${t}`}(${\"(\\\\/?([\\\\s]{0,5})(0?\\\\.?([\\\\d]{1,5})%?([\\\\s]{0,5}))?|1|0)\"})?\\\\)$`);return e&&n.test(e)}return!1},y=e=>{if(n(e)){const r=new RegExp(`^(hsl)a?\\\\((([\\\\s]{0,5})(${$}|${\"(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-9][0-9]|400)grad)\"}|${\"((([0-5])?\\\\.([\\\\d]{1,5})|6\\\\.([0-9]|1[0-9]|2[0-8])|[0-6])rad)\"}|${\"((0?((\\\\.([\\\\d]{1,5}))?)|1)turn)\"})((([\\\\s]{0,5}),([\\\\s]{0,5}))|(([\\\\s]{1,5}))))(([\\\\s]{0,5})(0|${c})((([\\\\s]{0,5}),([\\\\s]{0,5}))|(([\\\\s]{1,5}))))(([\\\\s]{0,5})(0|${c})([\\\\s]{0,5})\\\\)?)(([\\\\s]{0,5})(\\\\/?|,?)([\\\\s]{0,5})(((${c}))|(0?((\\\\.([\\\\d]{1,5}))?))|1))?\\\\)$`);return e&&r.test(e)}return!1},L=e=>{if(n(e)){const r=new RegExp(`^(hwb\\\\(([\\\\s]{0,5})${$}([\\\\s]{1,5}))((0|${c})([\\\\s]{1,5}))((0|${c})${h}$`);return e&&r.test(e)}return!1},S=e=>{if(n(e)){const r=\"(-?(([0-9]|[1-9][0-9]|1[0-5][0-9])((\\\\.([\\\\d]{1,5}))?)?|160))\",t=new RegExp(`^(lab\\\\(([\\\\s]{0,5})${s}([\\\\s]{1,5})${r}([\\\\s]{1,5})${r}${h}$`);return e&&t.test(e)}return!1},m=e=>{if(n(e)){const r=\"((([0-9]|[1-9][0-9])?((\\\\.([\\\\d]{1,5}))?)|100)(%)?)\",t=\"\"+d,n=`((${$})|(0|${f})|(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-9][0-9]|3[0-5][0-9])((\\\\.([\\\\d]{1,5}))?)|360))`,a=`(\\\\/([\\\\s]{0,5})${f})`,o=new RegExp(`^lch\\\\(${`(([\\\\s]{0,5})${r}([\\\\s]{1,5})${t}([\\\\s]{1,5})${n}([\\\\s]{0,5})(${a})?)`}\\\\)$`);return e&&o.test(e)}return!1},G=e=>!!(e&&u(e)||g(e)||y(e)||L(e)||S(e)||m(e));r.default=e=>!!(e&&u(e)||l(e)||i(e)||g(e)||y(e)||L(e)||S(e)||m(e))}]);","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Internal extension of `ErrorConstructor` adding V8 `captureStackTrace` support. */\ninterface V8ErrorConstructor extends ErrorConstructor {\n  /** Captures a V8 stack trace onto the target object. */\n  captureStackTrace(targetObject: object, constructorOpt?: Function): void;\n}\n\n/**\n * Base class for all A2UI specific errors.\n *\n * Includes a machine-readable `code` for categorical handling and ensures\n * proper stack trace capturing.\n *\n * @example\n * ```ts\n * throw new A2uiError('Failed to process payload', 'PROCESSING_ERROR');\n * ```\n */\nexport class A2uiError extends Error {\n  /** Machine-readable string identifying the error category. */\n  public readonly code: string;\n\n  /**\n   * Initializes a new `A2uiError` instance.\n   *\n   * @param message Human-readable error description.\n   * @param code Machine-readable error category code.\n   */\n  constructor(message: string, code: string = 'UNKNOWN_ERROR') {\n    super(message);\n    this.name = this.constructor.name;\n    this.code = code;\n\n    // Maintains proper stack trace for where our error was thrown (only available on V8)\n    if ((Error as V8ErrorConstructor).captureStackTrace) {\n      (Error as V8ErrorConstructor).captureStackTrace(this, this.constructor);\n    }\n  }\n}\n\n/**\n * Error thrown when JSON validation fails or schema validation mismatches occur.\n */\nexport class A2uiValidationError extends A2uiError {\n  /**\n   * Initializes a new `A2uiValidationError` instance.\n   *\n   * @param message Error description detailing the validation failure.\n   * @param details Additional error context or Zod validation issues.\n   * @param code Optional error category code.\n   */\n  constructor(\n    message: string,\n    public readonly details?: any,\n    code: string = 'VALIDATION_ERROR',\n  ) {\n    super(message, code);\n  }\n}\n\n/**\n * Error thrown during DataModel mutations (invalid paths, type mismatches).\n */\nexport class A2uiDataError extends A2uiError {\n  /**\n   * Initializes a new `A2uiDataError` instance.\n   *\n   * @param message Error description.\n   * @param path Target data model path where the mutation failed.\n   */\n  constructor(\n    message: string,\n    public readonly path?: string,\n  ) {\n    super(message, 'DATA_ERROR');\n  }\n}\n\n/**\n * Error thrown during string interpolation and function evaluation.\n */\nexport class A2uiExpressionError extends A2uiError {\n  /**\n   * Initializes a new `A2uiExpressionError` instance.\n   *\n   * @param message Error description.\n   * @param expression Evaluated expression string.\n   * @param details Additional error details.\n   */\n  constructor(\n    message: string,\n    public readonly expression?: string,\n    public readonly details?: any,\n  ) {\n    super(message, 'EXPRESSION_ERROR');\n  }\n}\n\n/**\n * Error thrown for structural issues in the UI tree (missing surfaces, duplicate components).\n */\nexport class A2uiStateError extends A2uiError {\n  /**\n   * Initializes a new `A2uiStateError` instance.\n   *\n   * @param message Error description.\n   */\n  constructor(message: string) {\n    super(message, 'STATE_ERROR');\n  }\n}\n\n/**\n * Error thrown during catalog management, loading, or resolution.\n *\n * Raised when a catalog declares no protocol version, fails schema validation,\n * or when a function call or component references an unresolvable catalog ID.\n */\nexport class A2uiCatalogError extends A2uiError {\n  /**\n   * Initializes a new `A2uiCatalogError` instance.\n   *\n   * @param message Human-readable error description.\n   * @param code Machine-readable error category code. Defaults to `'CATALOG_ERROR'`.\n   */\n  constructor(message: string, code: string = 'CATALOG_ERROR') {\n    super(message, code);\n  }\n}\n\n/**\n * Error thrown when component tree integrity checks fail (duplicate IDs, dangling references, missing root).\n */\nexport class A2uiIntegrityError extends A2uiValidationError {\n  /**\n   * Initializes a new `A2uiIntegrityError` instance.\n   *\n   * @param message Error description.\n   * @param details Additional error details.\n   * @param code Error category code. Defaults to 'INTEGRITY_ERROR'.\n   */\n  constructor(message: string, details?: any, code: string = 'INTEGRITY_ERROR') {\n    super(message, details, code);\n    this.name = 'A2uiIntegrityError';\n  }\n}\n\n/**\n * Error thrown when global or function call recursion depth limits are exceeded.\n */\nexport class A2uiRecursionError extends A2uiValidationError {\n  /**\n   * Initializes a new `A2uiRecursionError` instance.\n   *\n   * @param message Error description.\n   * @param details Additional error details.\n   * @param code Error category code. Defaults to 'RECURSION_ERROR'.\n   */\n  constructor(message: string, details?: any, code: string = 'RECURSION_ERROR') {\n    super(message, details, code);\n    this.name = 'A2uiRecursionError';\n  }\n}\n\n/**\n * Standard error codes for A2UI RPC failures.\n */\nexport enum RpcErrorCode {\n  /** Malformed, missing, or unsupported function call payload or name. */\n  INVALID_FUNCTION_CALL = 'INVALID_FUNCTION_CALL',\n\n  /** Runtime failure or unhandled exception during function execution. */\n  EXECUTION_ERROR = 'EXECUTION_ERROR',\n\n  /** Requested function that is not registered in any available catalog. */\n  UNKNOWN_FUNCTION = 'UNKNOWN_FUNCTION',\n\n  /** Unspecified or unrecognized error condition. */\n  UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n\n  /** Remote function call that timed out before receiving a response. */\n  TIMEOUT = 'TIMEOUT',\n\n  /** Function call that was cancelled or aborted before completing. */\n  CANCELLED = 'CANCELLED',\n\n  /** RPC handler disposal while a function call was pending or initiated. */\n  DISPOSED = 'DISPOSED',\n\n  /** Duplicate function call identifier that is already pending. */\n  DUPLICATE = 'DUPLICATE',\n\n  /** Missing outbound message listener required to transmit agent function calls. */\n  NO_LISTENER = 'NO_LISTENER',\n}\n\n/**\n * Error thrown when an A2UI RPC operation fails, times out, or is cancelled.\n */\nexport class A2uiRpcError extends A2uiError {\n  /**\n   * Initializes a new `A2uiRpcError` instance.\n   *\n   * @param message Human-readable error description.\n   * @param code Category code or string identifying the RPC error.\n   * @param functionCallId Optional identifier of the failed function call.\n   * @param details Optional structured error details.\n   */\n  constructor(\n    message: string,\n    code: RpcErrorCode | string = RpcErrorCode.UNKNOWN_ERROR,\n    /** Identifier of the failed function call, if available. */\n    public readonly functionCallId?: string,\n    /** Structured error details or original error cause, if available. */\n    public readonly details?: unknown,\n  ) {\n    const resolvedCode = code || RpcErrorCode.UNKNOWN_ERROR;\n    super(`[${resolvedCode}] ${message}`, resolvedCode);\n    this.name = 'A2uiRpcError';\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\n\n/**\n * Classification kind for a schema marked as a child reference.\n */\nexport type ChildRefKind = 'component-id' | 'child-list';\n\n/**\n * Stamps the child-reference kind into the schema's zod metadata. Methods\n * like `.describe()` and `.optional()` rebuild schemas from `_def`, so the\n * flag survives them; the `REF:` description remains the wire-facing pointer\n * the capabilities generator resolves into a `$ref`.\n */\nexport function markChildRef<T extends z.ZodTypeAny>(schema: T, ref: ChildRefKind): T {\n  (schema._def as {a2uiChildRef?: ChildRefKind}).a2uiChildRef = ref;\n  return schema;\n}\n\n/**\n * Extracts the child reference kind associated with a Zod schema, if present.\n *\n * @param schema Zod schema to inspect.\n * @returns The child reference kind or undefined if not marked.\n */\nexport function childRefKindOf(schema: z.ZodTypeAny): ChildRefKind | undefined {\n  return (schema?._def as {a2uiChildRef?: ChildRefKind} | undefined)?.a2uiChildRef;\n}\n\n/**\n * Options for generating child reference schemas with custom descriptions.\n */\nexport interface RefSchemaOptions {\n  /** Prose appended after the `REF:` pointer; shown in generated capabilities. */\n  readonly description?: string;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {\n  type ChildRefKind,\n  type RefSchemaOptions,\n  markChildRef,\n  childRefKindOf,\n} from './child-ref-helpers.js';\nimport {ChildListSchema, ComponentIdSchema} from './common-types.js';\n\nexport {type ChildRefKind, type RefSchemaOptions, markChildRef, childRefKindOf};\n\n/**\n * The maximum number of arguments accepted in a single function call.\n *\n * Caps the work a single call can schedule, so an oversized `args` payload\n * cannot exhaust memory by creating one reactive listener per key (CWE-400).\n * Enforced by `DataContext.validateFunctionArgs` before any argument is\n * resolved.\n */\nexport const MAX_FUNCTION_CALL_ARGS = 1_000;\n\n/**\n * Creates or customizes a ComponentId schema without losing its reference pointer metadata.\n *\n * @param options Configuration options including custom description.\n * @returns The configured ComponentId schema.\n */\nexport function componentId(options: RefSchemaOptions = {}): typeof ComponentIdSchema {\n  if (options.description === undefined) {\n    return ComponentIdSchema;\n  }\n  return ComponentIdSchema.describe(\n    `REF:common_types.json#/$defs/ComponentId|\\${options.description}`,\n  );\n}\n\n/**\n * Creates or customizes a ChildList schema without losing its reference pointer metadata.\n *\n * @param options Configuration options including custom description.\n * @returns The configured ChildList schema.\n */\nexport function childList(options: RefSchemaOptions = {}): typeof ChildListSchema {\n  if (options.description === undefined) {\n    return ChildListSchema;\n  }\n  return ChildListSchema.describe(`REF:common_types.json#/$defs/ChildList|\\${options.description}`);\n}\n\n/**\n * Generic component definition payload schema.\n */\nexport const AnyComponentSchema = z\n  .object({\n    'component': z.string().describe('The type name of the component.'),\n    'id': z.lazy(() => ComponentIdSchema).optional(),\n    'weight': z.number().optional(),\n  })\n  .passthrough()\n  .describe('A generic A2UI component definition.');\n\n/** Generic component definition payload. */\nexport type AnyComponent = z.infer<typeof AnyComponentSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/*/json/common_types.json via scripts/generate-superset-common-types.mjs\n\n/**\n * @fileoverview Shared runtime types and helper schemas for A2UI rendering\n * engines.\n *\n * Defines unversioned, internal types, schemas, and helper utilities consumed\n * by shared runtime modules (such as GenericBinder, DataContext,\n * ExpressionParser, and SchemaLoader).\n *\n * This module represents the runtime superset of the modern protocol lineage\n * (v0.9 and above), aligned with the most recent dynamic value evaluation\n * model. Version-isolated wire validation and catalog schemas are maintained\n * separately in src/v<version>/ directories, e.g. src/v1_0/.\n */\nimport {z} from 'zod';\nimport {markChildRef} from './child-ref-helpers.js';\n\nexport const ComponentIdSchema = markChildRef(\n  z\n    .string()\n    .describe(\n      'REF:common_types.json#/$defs/ComponentId|The unique identifier for a component, used for both definitions and references within the same surface.',\n    ),\n  'component-id',\n);\n/** REF:common_types.json#/$defs/ComponentId|The unique identifier for a component, used for both definitions and references within the same surface. */\nexport type ComponentId = z.infer<typeof ComponentIdSchema>;\n\nexport const DataBindingSchema = z\n  .object({\n    'path': z.string().describe('A JSON Pointer path to a value in the data model.'),\n  })\n  .describe('REF:common_types.json#/$defs/DataBinding');\n/** REF:common_types.json#/$defs/DataBinding */\nexport type DataBinding = z.infer<typeof DataBindingSchema>;\n\nexport type DataBindingType = DataBinding;\n\nexport const FunctionCallSchema = z\n  .object({\n    'call': z.string().describe('The name of the function to call.'),\n    'args': z\n      .record(z.string(), z.unknown())\n      .describe('Arguments passed to the function.')\n      .optional(),\n    'returnType': z\n      .enum(['string', 'number', 'boolean', 'array', 'object', 'any', 'void'])\n      .describe('The expected return type of the function call.')\n      .optional(),\n    'catalogId': z\n      .string()\n      .describe('The catalog ID for this function, overriding any surface-level default catalogId.')\n      .optional(),\n  })\n  .describe(\n    'REF:common_types.json#/$defs/FunctionCall|Invokes a named function, combining common function properties with the catalog function definition.',\n  );\n/** REF:common_types.json#/$defs/FunctionCall|Invokes a named function, combining common function properties with the catalog function definition. */\nexport type FunctionCall = z.infer<typeof FunctionCallSchema>;\n\nexport type FunctionCallType = FunctionCall;\n\nexport const DynamicStringSchema = z\n  .union([z.string(), DataBindingSchema, FunctionCallSchema])\n  .describe('REF:common_types.json#/$defs/DynamicString|Represents a string');\n/** REF:common_types.json#/$defs/DynamicString|Represents a string */\nexport type DynamicString = z.infer<typeof DynamicStringSchema>;\n\nexport const DynamicBooleanSchema = z\n  .union([z.boolean(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:common_types.json#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean.',\n  );\n/** REF:common_types.json#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean. */\nexport type DynamicBoolean = z.infer<typeof DynamicBooleanSchema>;\n\nexport const AccessibilityAttributesSchema = z\n  .object({\n    'label': DynamicStringSchema.optional(),\n    'description': DynamicStringSchema.optional(),\n    'live': z\n      .enum(['off', 'polite', 'assertive'])\n      .default('off')\n      .describe(\n        \"Controls screen reader announcements for dynamic updates (WAI-ARIA aria-live). 'polite' waits for user pause; 'assertive' interrupts immediately for alerts.\",\n      )\n      .optional(),\n    'hidden': DynamicBooleanSchema.optional(),\n  })\n  .describe(\n    'REF:common_types.json#/$defs/AccessibilityAttributes|Attributes to enhance accessibility when using assistive technologies like screen readers or model understanding.',\n  );\n/** REF:common_types.json#/$defs/AccessibilityAttributes|Attributes to enhance accessibility when using assistive technologies like screen readers or model understanding. */\nexport type AccessibilityAttributes = z.infer<typeof AccessibilityAttributesSchema>;\n\nexport const ExtensionsSchema = z\n  .record(z.string(), z.unknown())\n  .superRefine((value, ctx) => {\n    for (const key in value) {\n      if (!key.match(/^[\\p{XID_Start}_][\\p{XID_Continue}]*$/u)) {\n        ctx.addIssue({\n          path: [key],\n          code: z.ZodIssueCode.custom,\n          message: `Invalid extension key \"${key}\": Keys MUST be Unicode identifiers (UAX #31).`,\n        });\n      }\n    }\n  })\n  .describe(\n    \"REF:#/$defs/Extensions|Optional extension metadata. Keys MUST be Unicode identifiers (UAX #31). Keys starting with 'a2ui_' are reserved for official extensions.\",\n  );\n/** REF:common_types.json#/$defs/Extensions|Optional extension metadata. Keys MUST be Unicode identifiers (UAX #31). Keys starting with \\'a2ui_\\' are reserved for official extensions. */\nexport type Extensions = z.infer<typeof ExtensionsSchema>;\n\nexport const ComponentCommonSchema = z\n  .object({\n    'id': ComponentIdSchema,\n    'accessibility': AccessibilityAttributesSchema.optional(),\n    'catalogId': z\n      .string()\n      .describe(\n        'The catalog ID for this component, overriding any surface-level default catalogId.',\n      )\n      .optional(),\n    'metadata': z\n      .object({\n        'extensions': ExtensionsSchema.optional(),\n      })\n      .strict()\n      .describe('Optional component-level metadata for vendor extensions.')\n      .optional(),\n  })\n  .describe('REF:common_types.json#/$defs/ComponentCommon');\n/** REF:common_types.json#/$defs/ComponentCommon */\nexport type ComponentCommon = z.infer<typeof ComponentCommonSchema>;\n\nexport const ChildListSchema = markChildRef(\n  z\n    .union([\n      z.array(ComponentIdSchema).describe('A static list of child component IDs.'),\n      z\n        .object({\n          'componentId': ComponentIdSchema,\n          'path': z\n            .string()\n            .describe('The path to the list of component property objects in the data model.'),\n        })\n        .describe('A template for generating a dynamic list of children.'),\n    ])\n    .describe('REF:common_types.json#/$defs/ChildList'),\n  'child-list',\n);\n/** REF:common_types.json#/$defs/ChildList */\nexport type ChildList = z.infer<typeof ChildListSchema>;\n\nexport const DynamicValueSchema = z\n  .union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.array(z.unknown()),\n    DataBindingSchema,\n    FunctionCallSchema,\n    z.record(z.string(), z.unknown()).refine(obj => !obj || (!('path' in obj) && !('call' in obj))),\n  ])\n  .describe(\n    'REF:common_types.json#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type.',\n  );\n/** REF:common_types.json#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type. */\nexport type DynamicValue = z.infer<typeof DynamicValueSchema>;\n\nexport const DynamicNumberSchema = z\n  .union([z.number(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:common_types.json#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.',\n  );\n/** REF:common_types.json#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number. */\nexport type DynamicNumber = z.infer<typeof DynamicNumberSchema>;\n\nexport const DynamicStringListSchema = z\n  .union([z.array(z.string()), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:common_types.json#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.',\n  );\n/** REF:common_types.json#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array. */\nexport type DynamicStringList = z.infer<typeof DynamicStringListSchema>;\n\nexport const CheckRuleSchema = z\n  .object({\n    'condition': z\n      .union([DynamicBooleanSchema, DataBindingSchema, FunctionCallSchema])\n      .describe('Path or function call evaluating to a structured validation result object.'),\n    'message': z.string().describe('Optional fallback error message.').optional(),\n  })\n  .describe(\n    'REF:common_types.json#/$defs/CheckRule|A single validation check rule applied to an input component. The condition function or path evaluates to a structured validation result object.',\n  );\n/** REF:common_types.json#/$defs/CheckRule|A single validation check rule applied to an input component. The condition function or path evaluates to a structured validation result object. */\nexport type CheckRule = z.infer<typeof CheckRuleSchema>;\n\nexport const CheckableSchema = z\n  .object({\n    'checks': z\n      .array(CheckRuleSchema)\n      .describe(\n        'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n      )\n      .optional(),\n  })\n  .describe(\n    'REF:common_types.json#/$defs/Checkable|Properties for components that support renderer-side checks.',\n  );\n/** REF:common_types.json#/$defs/Checkable|Properties for components that support renderer-side checks. */\nexport type Checkable = z.infer<typeof CheckableSchema>;\n\nexport const ActionSchema = z\n  .union([\n    z\n      .object({\n        'event': z\n          .object({\n            'name': z.string().describe('The name of the action to be dispatched to the server.'),\n            'context': z\n              .record(z.string(), z.unknown())\n              .describe(\n                'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n              )\n              .optional(),\n          })\n          .strict()\n          .describe('The event to dispatch to the server.'),\n      })\n      .strict()\n      .describe('Triggers a server-side event.'),\n    z\n      .object({\n        'functionCall': FunctionCallSchema,\n      })\n      .strict()\n      .describe('Executes a local client-side function.'),\n    z\n      .object({\n        'event': z\n          .object({\n            'name': z.string().describe('The name of the action to be dispatched to the agent.'),\n            'userMessage': DynamicStringSchema.optional(),\n            'context': z\n              .record(z.string(), z.unknown())\n              .describe(\n                'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n              )\n              .optional(),\n          })\n          .strict()\n          .describe('The event to dispatch to the agent.'),\n      })\n      .strict()\n      .describe('Triggers an agent-side event.'),\n    z\n      .object({\n        'functionCall': FunctionCallSchema,\n      })\n      .strict()\n      .describe('Executes a renderer or agent-side function.'),\n  ])\n  .describe(\n    'REF:common_types.json#/$defs/Action|Defines an interaction handler that can either trigger an agent-side event or execute a local renderer-side function.',\n  );\n/** REF:common_types.json#/$defs/Action|Defines an interaction handler that can either trigger an agent-side event or execute a local renderer-side function. */\nexport type Action = z.infer<typeof ActionSchema>;\n\nexport const CallIdSchema = z\n  .string()\n  .describe('REF:common_types.json#/$defs/CallId|The unique identifier for a function call.');\n/** REF:common_types.json#/$defs/CallId|The unique identifier for a function call. */\nexport type CallId = z.infer<typeof CallIdSchema>;\n\nexport const ChildSchema = ComponentIdSchema;\n/** REF:common_types.json#/$defs/Child|A reference to a single child component ID. */\nexport type Child = z.infer<typeof ChildSchema>;\n\nexport const FunctionCommonSchema = z\n  .object({\n    'call': z.string().describe('The name of the function to call.'),\n    'catalogId': z\n      .string()\n      .describe('The catalog ID for this function, overriding any surface-level default catalogId.')\n      .optional(),\n  })\n  .describe(\n    \"REF:common_types.json#/$defs/FunctionCommon|Baseline envelope properties common to all function calls. Function-specific argument schemas (\\\\'args\\\\') are defined individually by each function in the active catalog.\",\n  );\n/** REF:common_types.json#/$defs/FunctionCommon|Baseline envelope properties common to all function calls. Function-specific argument schemas (\\'args\\') are defined individually by each function in the active catalog. */\nexport type FunctionCommon = z.infer<typeof FunctionCommonSchema>;\n\nexport const IndexSystemFunctionSchema = z\n  .object({\n    'call': z.literal('@index'),\n    'args': z\n      .object({\n        'offset': DynamicNumberSchema.optional(),\n      })\n      .strict()\n      .optional(),\n  })\n  .strict()\n  .describe(\n    'REF:common_types.json#/$defs/IndexSystemFunction|Returns the 0-based index of the current item when rendering a dynamic list from a template. This function MUST ONLY be available when evaluating template items within a list context.',\n  );\n/** REF:common_types.json#/$defs/IndexSystemFunction|Returns the 0-based index of the current item when rendering a dynamic list from a template. This function MUST ONLY be available when evaluating template items within a list context. */\nexport type IndexSystemFunction = z.infer<typeof IndexSystemFunctionSchema>;\n\nexport const SurfaceSchema = z\n  .object({\n    'component': z.literal('Surface').optional(),\n    'child': z.literal('root').optional(),\n  })\n  .strict()\n  .describe(\n    \"REF:common_types.json#/$defs/Surface|The reserved canonical container component representing an A2UI surface. The Surface component is immutable and always has \\\\'child\\\\': \\\\'root\\\\'.\",\n  );\n/** REF:common_types.json#/$defs/Surface|The reserved canonical container component representing an A2UI surface. The Surface component is immutable and always has \\'child\\': \\'root\\'. */\nexport type Surface = z.infer<typeof SurfaceSchema>;\n\nexport const FunctionResponseSchema = z\n  .object({\n    'functionCallId': CallIdSchema,\n    'value': z.unknown().describe('The return value of the function.').optional(),\n    'error': z\n      .object({\n        'code': z.string(),\n        'message': z.string(),\n      })\n      .strict()\n      .describe('An error object indicating failure of the function execution.')\n      .optional(),\n  })\n  .strict()\n  .describe(\n    'REF:common_types.json#/$defs/FunctionResponse|The return response matching a callAgentFunction or callRendererFunction invocation.',\n  );\n/** REF:common_types.json#/$defs/FunctionResponse|The return response matching a callAgentFunction or callRendererFunction invocation. */\nexport type FunctionResponse = z.infer<typeof FunctionResponseSchema>;\n\n/**\n * Registry of reusable common schema definitions across A2UI catalogs and protocols.\n */\nexport const CommonSchemas = {\n  ComponentId: ComponentIdSchema,\n  DataBinding: DataBindingSchema,\n  FunctionCall: FunctionCallSchema,\n  DynamicString: DynamicStringSchema,\n  DynamicBoolean: DynamicBooleanSchema,\n  AccessibilityAttributes: AccessibilityAttributesSchema,\n  Extensions: ExtensionsSchema,\n  ComponentCommon: ComponentCommonSchema,\n  ChildList: ChildListSchema,\n  DynamicValue: DynamicValueSchema,\n  DynamicNumber: DynamicNumberSchema,\n  DynamicStringList: DynamicStringListSchema,\n  CheckRule: CheckRuleSchema,\n  Checkable: CheckableSchema,\n  Action: ActionSchema,\n  CallId: CallIdSchema,\n  Child: ChildSchema,\n  FunctionCommon: FunctionCommonSchema,\n  IndexSystemFunction: IndexSystemFunctionSchema,\n  Surface: SurfaceSchema,\n  FunctionResponse: FunctionResponseSchema,\n};\n\nexport * from './helpers.js';\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Structured representation of a semantic version according to Semantic Versioning 2.0.0 (https://semver.org/).\n */\nexport interface SemVer {\n  /** Major version number indicating breaking API changes. */\n  readonly major: number;\n  /** Minor version number indicating backwards-compatible features. */\n  readonly minor: number;\n  /** Patch version number indicating backwards-compatible bug fixes. */\n  readonly patch: number;\n  /** Dot-separated pre-release identifiers. */\n  readonly prerelease: readonly string[];\n  /** Dot-separated build metadata identifiers. */\n  readonly build: readonly string[];\n}\n\n/**\n * Official SemVer 2.0.0 regular expression from https://semver.org/,\n * extended with optional leading 'v'/'V' and optional patch component for protocol compatibility.\n *\n * Capturing groups:\n * 1: major (0|[1-9]\\d*)\n * 2: minor (0|[1-9]\\d*)\n * 3: patch (optional 0|[1-9]\\d*)\n * 4: prerelease (optional dot-separated identifiers)\n * 5: buildmetadata (optional dot-separated identifiers)\n */\nconst SEMVER_REGEX =\n  /^[vV]?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*))?(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Normalizes a version string by stripping any leading 'v'/'V' and replacing underscores with dots in the core release segment.\n *\n * Preserves pre-release ('-') and build metadata ('+') suffixes intact.\n *\n * Examples:\n *   'v1_0' -> '1.0'\n *   'V1_0' -> '1.0'\n *   'v0_9_1' -> '0.9.1'\n *   '1_0_0-dev_release' -> '1.0.0-dev_release'\n *\n * @param version The raw version string to normalize.\n * @return The normalized version string, or empty string if input is falsy.\n */\nexport function normalizeVersionString(version: string | undefined | null): string {\n  if (!version || typeof version !== 'string') {\n    return '';\n  }\n  const text = version.trim().replace(/^[vV]/, '');\n  const dashIdx = text.indexOf('-');\n  const plusIdx = text.indexOf('+');\n  let splitIdx = text.length;\n  if (dashIdx !== -1 && plusIdx !== -1) {\n    splitIdx = Math.min(dashIdx, plusIdx);\n  } else if (dashIdx !== -1) {\n    splitIdx = dashIdx;\n  } else if (plusIdx !== -1) {\n    splitIdx = plusIdx;\n  }\n  const core = text.slice(0, splitIdx).replace(/_/g, '.');\n  return `${core}${text.slice(splitIdx)}`;\n}\n\n/**\n * Parses a semantic version string according to SemVer 2.0.0.\n *\n * @param versionStr The version string to parse.\n * @return A SemVer object if valid, or null if the string cannot be parsed.\n */\nexport function parseSemVer(versionStr: string | undefined | null): SemVer | null {\n  if (!versionStr || typeof versionStr !== 'string') {\n    return null;\n  }\n  const match = versionStr.trim().match(SEMVER_REGEX);\n  if (!match) {\n    return null;\n  }\n  return {\n    major: parseInt(match[1], 10),\n    minor: parseInt(match[2], 10),\n    patch: match[3] !== undefined ? parseInt(match[3], 10) : 0,\n    prerelease: match[4] ? match[4].split('.') : [],\n    build: match[5] ? match[5].split('.') : [],\n  };\n}\n\n/**\n * Converts a string or partial SemVer object into a normalized SemVer representation.\n *\n * @param v The version string or object to convert.\n * @return A SemVer object if valid, or null otherwise.\n */\nexport function toSemVer(v: string | SemVer | undefined | null): SemVer | null {\n  if (!v) {\n    return null;\n  }\n  if (typeof v === 'object') {\n    const obj = v as Partial<SemVer>;\n    if (\n      typeof obj.major !== 'number' ||\n      !Number.isInteger(obj.major) ||\n      obj.major < 0 ||\n      (typeof obj.minor === 'number' && (!Number.isInteger(obj.minor) || obj.minor < 0)) ||\n      (typeof obj.patch === 'number' && (!Number.isInteger(obj.patch) || obj.patch < 0))\n    ) {\n      return null;\n    }\n    return {\n      major: obj.major,\n      minor: typeof obj.minor === 'number' ? obj.minor : 0,\n      patch: typeof obj.patch === 'number' ? obj.patch : 0,\n      prerelease: Array.isArray(obj.prerelease) ? obj.prerelease : [],\n      build: Array.isArray(obj.build) ? obj.build : [],\n    };\n  }\n  return parseSemVer(normalizeVersionString(v));\n}\n\n/**\n * Formats a semantic version into a canonical string representation.\n *\n * For standard versions with zero patch and no pre-release or build metadata,\n * returns `${major}.${minor}` (e.g. '0.8', '0.9', '1.0').\n * For versions with non-zero patch, pre-release identifiers, or build metadata,\n * returns the full SemVer string (e.g. '0.9.1', '1.0.0-beta.1').\n *\n * @param version The version string or SemVer object to canonicalize.\n * @return The canonical version string, or null if the input cannot be parsed.\n */\nexport function toCanonicalVersion(version: string | SemVer | undefined | null): string | null {\n  if (!version) {\n    return null;\n  }\n  const parsed = toSemVer(version);\n  if (!parsed) {\n    return null;\n  }\n  if (parsed.patch === 0 && parsed.prerelease.length === 0 && parsed.build.length === 0) {\n    return `${parsed.major}.${parsed.minor}`;\n  }\n  const pre = parsed.prerelease.length > 0 ? `-${parsed.prerelease.join('.')}` : '';\n  const bld = parsed.build.length > 0 ? `+${parsed.build.join('.')}` : '';\n  return `${parsed.major}.${parsed.minor}.${parsed.patch}${pre}${bld}`;\n}\n\n/**\n * Compares two dot-separated pre-release identifiers per SemVer 2.0.0 Rule 11.4.\n *\n * @param idA First pre-release identifier.\n * @param idB Second pre-release identifier.\n * @return Negative number if idA < idB, 0 if equal, positive number if idA > idB.\n */\nfunction comparePrereleaseId(idA: string, idB: string): number {\n  const isNumA = /^\\d+$/.test(idA);\n  const isNumB = /^\\d+$/.test(idB);\n  if (isNumA && isNumB) {\n    if (idA.length !== idB.length) {\n      return idA.length - idB.length;\n    }\n    if (idA < idB) {\n      return -1;\n    }\n    if (idA > idB) {\n      return 1;\n    }\n    return 0;\n  }\n  if (isNumA) {\n    return -1; // Numeric identifiers have lower precedence than non-numeric\n  }\n  if (isNumB) {\n    return 1;\n  }\n  if (idA < idB) {\n    return -1;\n  }\n  if (idA > idB) {\n    return 1;\n  }\n  return 0;\n}\n\n/**\n * Compares pre-release identifier lists per SemVer 2.0.0 Rules 11.3 and 11.4.\n *\n * @param preA First list of pre-release identifiers.\n * @param preB Second list of pre-release identifiers.\n * @return Negative number if preA < preB, 0 if equal, positive number if preA > preB.\n */\nfunction comparePrereleaseLists(preA: readonly string[], preB: readonly string[]): number {\n  if (preA.length === 0 && preB.length === 0) {\n    return 0;\n  }\n  if (preA.length === 0) {\n    return 1; // Normal version has higher precedence than pre-release version\n  }\n  if (preB.length === 0) {\n    return -1;\n  }\n\n  const minLen = Math.min(preA.length, preB.length);\n  for (let i = 0; i < minLen; i++) {\n    const diff = comparePrereleaseId(preA[i], preB[i]);\n    if (diff !== 0) {\n      return diff;\n    }\n  }\n\n  return preA.length - preB.length;\n}\n\n/**\n * Compares two semantic version strings or SemVer objects according to SemVer 2.0.0 precedence rules (Section 11).\n *\n * 1. Precedence is determined by comparing major, minor, and patch numerically.\n * 2. When major, minor, and patch are equal, a pre-release version has lower precedence than a normal version (e.g. 1.0.0-alpha < 1.0.0).\n * 3. Precedence for two pre-release versions is determined by comparing dot-separated identifiers from left to right.\n * 4. Build metadata does NOT figure into precedence.\n *\n * @param a First version string or SemVer object.\n * @param b Second version string or SemVer object.\n * @return Negative number if a < b, 0 if a == b, positive number if a > b.\n */\nexport function compareSemVer(\n  a: string | SemVer | undefined | null,\n  b: string | SemVer | undefined | null,\n): number {\n  const versionA = toSemVer(a);\n  const versionB = toSemVer(b);\n  if (!versionA && !versionB) {\n    return 0;\n  }\n  if (!versionA) {\n    return -1;\n  }\n  if (!versionB) {\n    return 1;\n  }\n\n  if (versionA.major !== versionB.major) {\n    return versionA.major - versionB.major;\n  }\n  if (versionA.minor !== versionB.minor) {\n    return versionA.minor - versionB.minor;\n  }\n  if (versionA.patch !== versionB.patch) {\n    return versionA.patch - versionB.patch;\n  }\n\n  return comparePrereleaseLists(versionA.prerelease, versionB.prerelease);\n}\n\n/**\n * Checks if a given version string is at least the target minimum version.\n *\n * @param version The version string to check (e.g. 'v1.0', 'v1.1', 'v2.0').\n * @param minVersion The minimum version requirement (e.g. 'v1.0', '1.0.0').\n * @return Whether version is at least minVersion.\n */\nexport function isAtLeastVersion(\n  version: string | SemVer | undefined | null,\n  minVersion: string | SemVer,\n): boolean {\n  if (!version) {\n    return false;\n  }\n  const parsed = toSemVer(version);\n  const minParsed = toSemVer(minVersion);\n  if (!parsed || !minParsed) {\n    return false;\n  }\n  return compareSemVer(parsed, minParsed) >= 0;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {A2uiCatalogError} from '../errors.js';\n\n/**\n * Identifiers permitted by the v1.0 specification, per UAX #31.\n *\n * The pattern matches `specification/v1_0/json/common_types.json`, which uses\n * `XID_Start` and `XID_Continue` rather than the unprefixed `ID_Start` and\n * `ID_Continue`. The two differ on a handful of code points that are not\n * closed under NFKC, so the distinction is observable; `XID` is normative.\n *\n * Python reaches the same set through `str.isidentifier()`, whose definition is\n * `XID_Start` plus `_` for the first code point and `XID_Continue` thereafter.\n * Note that neither side rejects language keywords: `class` is a valid A2UI\n * identifier in both SDKs.\n */\nconst UAX31_IDENTIFIER = /^[\\p{XID_Start}_][\\p{XID_Continue}]*$/u;\n\n/**\n * Checks whether a name is a valid A2UI identifier.\n *\n * A single leading `@` is permitted and ignored, accommodating the reserved\n * system-function prefix such as `@index`. Only one is allowed, so `@@index` is\n * rejected, as is a bare `@`.\n *\n * Mirrors `is_valid_uax31_identifier` in\n * `python/a2ui_core/src/a2ui/core/catalog/catalog.py`.\n *\n * @param name Identifier to test.\n * @returns Whether `name` satisfies UAX #31 after stripping one optional\n *   leading `@`.\n */\nexport function isValidUax31Identifier(name: string): boolean {\n  if (!name) return false;\n  const testName = name.startsWith('@') ? name.slice(1) : name;\n  return UAX31_IDENTIFIER.test(testName);\n}\n\n/**\n * Asserts that an identifier satisfies UAX #31.\n *\n * Throws an {@link A2uiCatalogError} when the identifier is invalid.\n *\n * @param name Identifier to check.\n * @param context Description of what the identifier names, used in the error message.\n * @throws {A2uiCatalogError} If `name` is not a valid UAX #31 identifier.\n */\nexport function assertUax31Identifier(name: string, context: string): void {\n  if (!isValidUax31Identifier(name)) {\n    throw new A2uiCatalogError(`Invalid UAX #31 ${context}`);\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {\n  DynamicStringSchema,\n  DynamicNumberSchema,\n  DynamicBooleanSchema,\n  DynamicStringListSchema,\n  DynamicValueSchema,\n  ComponentIdSchema,\n  ChildListSchema,\n  ActionSchema,\n  CheckRuleSchema,\n  CheckableSchema,\n  AccessibilityAttributesSchema,\n  DataBindingSchema,\n  FunctionCallSchema,\n} from '../types/common-types.js';\nimport {Catalog, type ComponentApi, type FunctionApi} from './types.js';\nimport {isAtLeastVersion} from '../common/semver.js';\n/**\n * Protocol version assumed for a catalog schema that does not declare one.\n *\n * Catalog schemas only began carrying `protocolVersion` at v1.0, so a schema\n * that omits it predates that field.\n */\nexport const DEFAULT_PROTOCOL_VERSION = '0.9';\n\nimport {assertUax31Identifier} from '../common/uax31.js';\n\nconst COMMON_TYPE_SCHEMAS: Record<string, z.ZodTypeAny> = {\n  DynamicString: DynamicStringSchema,\n  DynamicNumber: DynamicNumberSchema,\n  DynamicBoolean: DynamicBooleanSchema,\n  DynamicStringList: DynamicStringListSchema,\n  DynamicValue: DynamicValueSchema,\n  ComponentId: ComponentIdSchema,\n  ChildList: ChildListSchema,\n  Action: ActionSchema,\n  CheckRule: CheckRuleSchema,\n  Checkable: CheckableSchema,\n  AccessibilityAttributes: AccessibilityAttributesSchema,\n  DataBinding: DataBindingSchema,\n  FunctionCall: FunctionCallSchema,\n};\n\n/**\n * Resolves a JSON Pointer within a root JSON document.\n *\n * Follows RFC 6901 pointer unescaping (~1 -> /, ~0 -> ~).\n *\n * @param rootDoc Root JSON document to resolve within.\n * @param pointer RFC 6901 JSON pointer string.\n * @returns The resolved document subtree, or undefined if not found.\n */\nfunction resolveJsonPointer(\n  rootDoc: Record<string, unknown>,\n  pointer: string,\n): Record<string, unknown> | undefined {\n  if (!pointer.startsWith('#/')) return undefined;\n  const segments = pointer\n    .slice(2)\n    .split('/')\n    .map(s => s.replace(/~1/g, '/').replace(/~0/g, '~'));\n\n  let curr: unknown = rootDoc;\n  for (const seg of segments) {\n    if (curr && typeof curr === 'object' && seg in curr) {\n      curr = (curr as Record<string, unknown>)[seg];\n    } else {\n      return undefined;\n    }\n  }\n  return typeof curr === 'object' && curr !== null ? (curr as Record<string, unknown>) : undefined;\n}\n\n/**\n * Resolves a standard protocol `$ref` to its corresponding common type schema.\n *\n * @param ref JSON Schema reference string.\n * @returns The matching Zod schema, or undefined if not a known protocol definition.\n */\nfunction resolveProtocolRef(ref: string): z.ZodTypeAny | undefined {\n  const defName = ref.split(/#\\/(?:\\$defs|definitions)\\//)[1];\n  return defName ? COMMON_TYPE_SCHEMAS[defName] : undefined;\n}\n\n/**\n * Converts an array of JSON Schema enum values to a Zod schema.\n *\n * @param values Allowed enum values.\n * @returns Zod enum, literal, or union schema representing the allowed values.\n */\nfunction convertEnumToZod(values: unknown[]): z.ZodTypeAny {\n  if (values.length === 0) {\n    return z.unknown();\n  }\n  if (values.every(v => typeof v === 'string')) {\n    return z.enum(values as [string, ...string[]]);\n  }\n  if (values.length === 1) {\n    return z.literal(values[0] as string | number | boolean);\n  }\n  return z.union(\n    values.map(v => z.literal(v as string | number | boolean)) as unknown as [\n      z.ZodTypeAny,\n      z.ZodTypeAny,\n      ...z.ZodTypeAny[],\n    ],\n  );\n}\n\n/**\n * Serializes a value to canonical JSON with deterministically sorted object keys.\n *\n * Produces identical strings for semantically equivalent values regardless of\n * object property insertion order.\n *\n * @param val Value to serialize.\n * @returns Deterministic JSON string representation.\n */\nfunction canonicalJsonStringify(val: unknown): string {\n  if (val === null || typeof val !== 'object') {\n    return JSON.stringify(val);\n  }\n  if (Array.isArray(val)) {\n    return `[${val.map(canonicalJsonStringify).join(',')}]`;\n  }\n  const keys = Object.keys(val as Record<string, unknown>).sort();\n  const entries = keys.map(\n    k => `${JSON.stringify(k)}:${canonicalJsonStringify((val as Record<string, unknown>)[k])}`,\n  );\n  return `{${entries.join(',')}}`;\n}\n\n/**\n * Applies `not`, `default`, and `description` modifiers to a converted Zod schema.\n *\n * @param baseZod Base Zod schema before modifiers.\n * @param propSchema Raw property schema definition.\n * @param rootDoc Optional root schema document for resolving nested references.\n * @param visitedPointers Set of JSON pointer references currently being resolved.\n * @param defCache Cache of previously converted definition schemas.\n * @returns The modified Zod schema.\n */\nfunction finalizePropertyZod(\n  baseZod: z.ZodTypeAny,\n  propSchema: Record<string, unknown>,\n  rootDoc?: Record<string, unknown>,\n  visitedPointers?: Set<string>,\n  defCache?: Map<string, z.ZodTypeAny>,\n): z.ZodTypeAny {\n  let result = baseZod;\n  if (propSchema.not && typeof propSchema.not === 'object') {\n    const notSchema = convertPropertyToZod(\n      propSchema.not as Record<string, unknown>,\n      rootDoc,\n      new Set(visitedPointers),\n      defCache,\n    );\n    result = result.refine(val => !notSchema.safeParse(val).success, {\n      message: 'Value matched prohibited \"not\" schema',\n    });\n  }\n  if (propSchema.default !== undefined) {\n    result = result.default(propSchema.default);\n  }\n  if (typeof propSchema.description === 'string') {\n    result = result.describe(propSchema.description);\n  }\n  return result;\n}\n\n/**\n * Converts a JSON Schema `$ref` pointer into a Zod schema.\n *\n * Resolves standard protocol definitions from common types, as well as local\n * `#/$defs/...` pointers within the root document. Handles recursive references\n * using `z.lazy` and caches resolved schemas to break cycles.\n *\n * @param ref JSON Schema reference string.\n * @param propSchema Property schema containing the reference.\n * @param rootDoc Root schema document containing definition targets.\n * @param visitedPointers Set of reference pointers currently on the resolution stack.\n * @param defCache Cache mapping reference strings to resolved Zod schemas.\n * @returns Converted Zod schema, or undefined if the reference cannot be resolved.\n */\nfunction convertRefToZod(\n  ref: string,\n  propSchema: Record<string, unknown>,\n  rootDoc: Record<string, unknown> | undefined,\n  visitedPointers: Set<string>,\n  defCache: Map<string, z.ZodTypeAny>,\n): z.ZodTypeAny | undefined {\n  const resolvedProtocol = resolveProtocolRef(ref);\n  if (resolvedProtocol) {\n    const defName = ref.split(/#\\/(?:\\$defs|definitions)\\//)[1];\n    const desc =\n      typeof propSchema.description === 'string'\n        ? `REF:common_types.json#/$defs/${defName}|${propSchema.description}`\n        : resolvedProtocol.description;\n    return desc ? resolvedProtocol.describe(desc) : resolvedProtocol;\n  }\n\n  if (rootDoc && ref.startsWith('#/')) {\n    const localTarget = resolveJsonPointer(rootDoc, ref);\n    if (!localTarget) {\n      return z.unknown().superRefine((_val, ctx) => {\n        ctx.addIssue({\n          code: z.ZodIssueCode.custom,\n          message: `Unresolvable schema reference: '${ref}'`,\n        });\n      });\n    }\n    if (visitedPointers.has(ref)) {\n      let cached = defCache.get(ref);\n      return z.lazy(() => {\n        if (!cached) {\n          cached =\n            defCache.get(ref) ??\n            convertPropertyToZod(localTarget, rootDoc, new Set([ref]), defCache);\n          defCache.set(ref, cached);\n        }\n        return cached;\n      });\n    }\n    let zodType = defCache.get(ref);\n    if (!zodType) {\n      const nextVisited = new Set(visitedPointers);\n      nextVisited.add(ref);\n      zodType = convertPropertyToZod(localTarget, rootDoc, nextVisited, defCache);\n      defCache.set(ref, zodType);\n    }\n    if (typeof propSchema.description === 'string') {\n      zodType = zodType.describe(propSchema.description);\n    }\n    return zodType;\n  }\n  return undefined;\n}\n\n/**\n * Converts `oneOf` or `anyOf` JSON Schema unions into a Zod schema.\n *\n * Enforces mutual exclusivity for `oneOf` unions by verifying that valid values\n * match exactly one branch. Preserves metadata such as `default`, `description`,\n * and dynamic string annotations for enum/DataBinding unions.\n *\n * @param propSchema Schema containing `oneOf` or `anyOf` branches.\n * @param rootDoc Root schema document for resolving nested references.\n * @param visitedPointers Set of reference pointers currently on the resolution stack.\n * @param defCache Cache mapping reference strings to resolved Zod schemas.\n * @returns Converted Zod union schema, or undefined if no valid branches exist.\n */\nfunction convertUnionToZod(\n  propSchema: Record<string, unknown>,\n  rootDoc: Record<string, unknown> | undefined,\n  visitedPointers: Set<string>,\n  defCache: Map<string, z.ZodTypeAny>,\n): z.ZodTypeAny | undefined {\n  const isOneOf = Array.isArray(propSchema.oneOf);\n  const rawBranches = (propSchema.oneOf || propSchema.anyOf) as unknown[];\n  const branches = rawBranches.filter(\n    (b): b is Record<string, unknown> => typeof b === 'object' && b !== null,\n  );\n  if (branches.length === 0) return undefined;\n\n  const enumBranch = branches.find(b => Array.isArray(b.enum));\n  const hasBinding = branches.some(\n    b => typeof b.$ref === 'string' && b.$ref.includes('DataBinding'),\n  );\n  const zodBranches = branches.map(b =>\n    convertPropertyToZod(b, rootDoc, new Set(visitedPointers), defCache),\n  );\n\n  let unionZod: z.ZodTypeAny;\n  if (zodBranches.length === 1) {\n    unionZod = zodBranches[0];\n  } else {\n    const baseUnion = z.union([zodBranches[0], zodBranches[1], ...zodBranches.slice(2)]);\n    unionZod = isOneOf\n      ? z\n          .any()\n          .superRefine((val, ctx) => {\n            let matches = 0;\n            for (const b of zodBranches) {\n              if (b.safeParse(val).success && ++matches > 1) {\n                ctx.addIssue({\n                  code: z.ZodIssueCode.custom,\n                  message: 'Value matched more than one schema in oneOf',\n                });\n                return;\n              }\n            }\n          })\n          .pipe(baseUnion)\n      : baseUnion;\n  }\n\n  if (propSchema.default !== undefined) {\n    unionZod = unionZod.default(propSchema.default);\n  }\n  const desc =\n    (typeof propSchema.description === 'string' ? propSchema.description : undefined) ||\n    (enumBranch && hasBinding ? 'REF:common_types.json#/$defs/DynamicString' : undefined);\n  return desc ? unionZod.describe(desc) : unionZod;\n}\n\n/**\n * Converts a JSON Schema property definition into a runtime Zod schema.\n *\n * Handles `$ref` pointers, unions (`oneOf`, `anyOf`), enums, const values,\n * arrays with boundary constraints and uniqueness, strings with length and pattern\n * validations, numbers with minimum/maximum/multipleOf bounds, booleans, and nested\n * objects with property maps and additionalProperties constraints.\n *\n * @param propSchema Raw JSON Schema property definition.\n * @param rootDoc Optional root schema document for resolving references.\n * @param visitedPointers Set of reference pointers currently being resolved.\n * @param defCache Cache of resolved definition schemas to handle recursion and avoid duplicate work.\n * @returns Runtime Zod schema enforcing the declared JSON Schema constraints.\n */\nfunction convertPropertyToZod(\n  propSchema: Record<string, unknown>,\n  rootDoc?: Record<string, unknown>,\n  visitedPointers = new Set<string>(),\n  defCache = new Map<string, z.ZodTypeAny>(),\n): z.ZodTypeAny {\n  if (!propSchema || typeof propSchema !== 'object') {\n    return z.unknown();\n  }\n\n  if (propSchema.$ref && typeof propSchema.$ref === 'string') {\n    const resolvedRef = convertRefToZod(\n      propSchema.$ref,\n      propSchema,\n      rootDoc,\n      visitedPointers,\n      defCache,\n    );\n    if (resolvedRef) return resolvedRef;\n  }\n\n  // oneOf / anyOf inspection\n  if (Array.isArray(propSchema.oneOf) || Array.isArray(propSchema.anyOf)) {\n    const resolvedUnion = convertUnionToZod(propSchema, rootDoc, visitedPointers, defCache);\n    if (resolvedUnion) return resolvedUnion;\n  }\n\n  // Const literal\n  if (propSchema.const !== undefined) {\n    const constZod = z.literal(propSchema.const as string | number | boolean);\n    return finalizePropertyZod(constZod, propSchema, rootDoc, visitedPointers, defCache);\n  }\n\n  // Enums\n  if (Array.isArray(propSchema.enum) && propSchema.enum.length > 0) {\n    const enumZod = convertEnumToZod(propSchema.enum);\n    return finalizePropertyZod(enumZod, propSchema, rootDoc, visitedPointers, defCache);\n  }\n\n  // Arrays\n  if (propSchema.type === 'array') {\n    const itemSchema =\n      propSchema.items && typeof propSchema.items === 'object'\n        ? convertPropertyToZod(\n            propSchema.items as Record<string, unknown>,\n            rootDoc,\n            new Set(visitedPointers),\n            defCache,\n          )\n        : z.unknown();\n    let arr: z.ZodTypeAny = z.array(itemSchema);\n    if (typeof propSchema.minItems === 'number') {\n      arr = (arr as z.ZodArray<any>).min(propSchema.minItems);\n    }\n    if (typeof propSchema.maxItems === 'number') {\n      arr = (arr as z.ZodArray<any>).max(propSchema.maxItems);\n    }\n    if (propSchema.uniqueItems === true) {\n      arr = arr.refine(\n        (items: unknown[]) => new Set(items.map(canonicalJsonStringify)).size === items.length,\n        {message: 'Array items must be unique'},\n      );\n    }\n    return finalizePropertyZod(arr, propSchema, rootDoc, visitedPointers, defCache);\n  }\n\n  // Primitives\n  switch (propSchema.type) {\n    case 'string': {\n      let s = z.string();\n      if (typeof propSchema.minLength === 'number') {\n        s = s.min(propSchema.minLength);\n      }\n      if (typeof propSchema.maxLength === 'number') {\n        s = s.max(propSchema.maxLength);\n      }\n      if (typeof propSchema.pattern === 'string') {\n        try {\n          s = s.regex(new RegExp(propSchema.pattern, 'u'));\n        } catch {\n          // ignore regex compilation failure\n        }\n      }\n      return finalizePropertyZod(s, propSchema, rootDoc, visitedPointers, defCache);\n    }\n    case 'integer':\n    case 'number': {\n      let n = propSchema.type === 'integer' ? z.number().int() : z.number();\n      if (typeof propSchema.minimum === 'number') {\n        n = n.min(propSchema.minimum);\n      }\n      if (typeof propSchema.maximum === 'number') {\n        n = n.max(propSchema.maximum);\n      }\n      if (typeof propSchema.exclusiveMinimum === 'number') {\n        n = n.gt(propSchema.exclusiveMinimum);\n      }\n      if (typeof propSchema.exclusiveMaximum === 'number') {\n        n = n.lt(propSchema.exclusiveMaximum);\n      }\n      if (typeof propSchema.multipleOf === 'number') {\n        n = n.multipleOf(propSchema.multipleOf);\n      }\n      return finalizePropertyZod(n, propSchema, rootDoc, visitedPointers, defCache);\n    }\n    case 'boolean': {\n      return finalizePropertyZod(z.boolean(), propSchema, rootDoc, visitedPointers, defCache);\n    }\n    case 'object': {\n      // An inline object that declares its properties is converted structurally\n      // rather than collapsed to an opaque record. Without this, a child\n      // reference nested inside an array item is invisible to the reference map,\n      // so the component graph would look as if it had no children there.\n      const props = propSchema.properties;\n      let obj: z.ZodTypeAny;\n      if (typeof props === 'object' && props !== null) {\n        const required = Array.isArray(propSchema.required)\n          ? new Set(propSchema.required.filter((r): r is string => typeof r === 'string'))\n          : new Set<string>();\n        const baseObj = z.object(\n          convertPropertiesToShape(\n            props as Record<string, unknown>,\n            required,\n            false,\n            rootDoc,\n            visitedPointers,\n            defCache,\n          ),\n        );\n        const forbidExtra =\n          propSchema.additionalProperties === false || propSchema.unevaluatedProperties === false;\n        obj = forbidExtra ? baseObj.strict() : baseObj.passthrough();\n      } else {\n        obj = z.record(z.unknown());\n      }\n      return finalizePropertyZod(obj, propSchema, rootDoc, visitedPointers, defCache);\n    }\n    default: {\n      return finalizePropertyZod(z.unknown(), propSchema, rootDoc, visitedPointers, defCache);\n    }\n  }\n}\n\n/**\n * Converts a dictionary of property definitions into a Zod raw shape map.\n *\n * Marks fields as optional unless present in `requiredSet`.\n *\n * @param properties Property name to property schema mapping.\n * @param requiredSet Set of required property names.\n * @param omitEnvelopeFields Whether to omit component envelope fields (`id`, `component`).\n * @param rootDoc Optional root schema document for reference resolution.\n * @param visitedPointers Set of reference pointers currently on the resolution stack.\n * @param defCache Cache mapping reference strings to resolved Zod schemas.\n * @returns Map of property names to Zod schemas representing the shape.\n */\nfunction convertPropertiesToShape(\n  properties: Record<string, unknown>,\n  requiredSet: Set<string>,\n  omitEnvelopeFields = false,\n  rootDoc?: Record<string, unknown>,\n  visitedPointers?: Set<string>,\n  defCache = new Map<string, z.ZodTypeAny>(),\n): Record<string, z.ZodTypeAny> {\n  const shape: Record<string, z.ZodTypeAny> = {};\n  for (const [propName, propSchema] of Object.entries(properties)) {\n    if (omitEnvelopeFields && (propName === 'component' || propName === 'id')) {\n      continue;\n    }\n    const zodField = convertPropertyToZod(\n      typeof propSchema === 'object' && propSchema !== null\n        ? (propSchema as Record<string, unknown>)\n        : {},\n      rootDoc,\n      visitedPointers ? new Set(visitedPointers) : new Set<string>(),\n      defCache,\n    );\n    shape[propName] = requiredSet.has(propName) ? zodField : zodField.optional();\n  }\n  return shape;\n}\n\n/**\n * Collects all property definitions and constraints from a component schema.\n *\n * Resolves local document `$defs` and canonical protocol `ComponentCommon` references.\n *\n * @param schema Component schema definition.\n * @param rootDoc Root schema document containing definition targets.\n * @param visitedPointers Set of reference pointers currently being resolved to prevent cycles.\n * @returns Array of property schema definitions extracted from the schema and its `allOf` hierarchy.\n */\nfunction collectComponentSubSchemas(\n  schema: Record<string, unknown>,\n  rootDoc: Record<string, unknown>,\n  visitedPointers = new Set<string>(),\n): Record<string, unknown>[] {\n  const result: Record<string, unknown>[] = [];\n  if (!schema || typeof schema !== 'object') return result;\n\n  if (Array.isArray(schema.allOf)) {\n    for (const sub of schema.allOf) {\n      if (!sub || typeof sub !== 'object') continue;\n\n      if (typeof sub.$ref === 'string') {\n        const ref = sub.$ref;\n        if (ref.includes('common_types.json') && ref.includes('ComponentCommon')) {\n          // Protocol common properties: accessibility attributes\n          result.push({\n            properties: {\n              accessibility: AccessibilityAttributesSchema.optional(),\n            },\n          });\n        } else if (ref.startsWith('#/')) {\n          if (!visitedPointers.has(ref)) {\n            visitedPointers.add(ref);\n            const target = resolveJsonPointer(rootDoc, ref);\n            if (target) {\n              result.push(...collectComponentSubSchemas(target, rootDoc, visitedPointers));\n            }\n          }\n        }\n      } else {\n        result.push(...collectComponentSubSchemas(sub, rootDoc, visitedPointers));\n      }\n    }\n  }\n\n  if (schema.properties) {\n    result.push(schema);\n  }\n\n  return result;\n}\n\n/**\n * Converts a raw component JSON schema definition into a Zod object schema.\n *\n * Merges sub-schemas from `allOf` compositions, applies required fields, and\n * respects `additionalProperties` and `unevaluatedProperties` constraints.\n *\n * @param rawSchema Raw component schema definition.\n * @param rootDoc Root schema document for resolving references.\n * @param omitEnvelopeFields Whether to omit envelope fields (`id`, `component`). Defaults to true.\n * @param defCache Cache mapping reference strings to resolved Zod schemas.\n * @returns Zod object schema validating component properties.\n */\nfunction convertComponentJsonSchemaToZod(\n  rawSchema: Record<string, unknown>,\n  rootDoc: Record<string, unknown>,\n  omitEnvelopeFields = true,\n  defCache = new Map<string, z.ZodTypeAny>(),\n): z.ZodObject<z.ZodRawShape> {\n  const shape: Record<string, z.ZodTypeAny> = {};\n  const schemasToMerge = collectComponentSubSchemas(rawSchema, rootDoc);\n\n  const requiredSet = new Set<string>();\n  for (const s of schemasToMerge) {\n    if (Array.isArray(s.required)) {\n      s.required.forEach((r: unknown) => {\n        if (typeof r === 'string') requiredSet.add(r);\n      });\n    }\n  }\n\n  for (const s of schemasToMerge) {\n    const propShape = convertPropertiesToShape(\n      (s.properties as Record<string, unknown>) || {},\n      requiredSet,\n      omitEnvelopeFields,\n      rootDoc,\n      undefined,\n      defCache,\n    );\n    Object.assign(shape, propShape);\n  }\n\n  const obj = z.object(shape);\n  const allowExtra =\n    rawSchema.unevaluatedProperties === true ||\n    (typeof rawSchema.unevaluatedProperties === 'object' &&\n      rawSchema.unevaluatedProperties !== null) ||\n    rawSchema.additionalProperties === true ||\n    (typeof rawSchema.additionalProperties === 'object' && rawSchema.additionalProperties !== null);\n  return allowExtra ? obj.passthrough() : obj.strict();\n}\n\n/**\n * Converts a function argument JSON schema definition into a Zod object schema.\n *\n * Maps function argument schemas to object properties, requiring fields listed in\n * `required` and applying strictness or passthrough based on `additionalProperties`.\n *\n * @param rawSchema Raw function arguments schema.\n * @param rootDoc Optional root schema document for reference resolution.\n * @param defCache Cache mapping reference strings to resolved Zod schemas.\n * @returns Zod object schema validating function arguments.\n */\nfunction convertFunctionArgsJsonSchemaToZod(\n  rawSchema: Record<string, unknown>,\n  rootDoc?: Record<string, unknown>,\n  defCache = new Map<string, z.ZodTypeAny>(),\n): z.ZodObject<z.ZodRawShape> {\n  const requiredSet = new Set<string>(\n    Array.isArray(rawSchema.required)\n      ? rawSchema.required.filter((r): r is string => typeof r === 'string')\n      : [],\n  );\n  const shape = convertPropertiesToShape(\n    (rawSchema.properties as Record<string, unknown>) || {},\n    requiredSet,\n    false,\n    rootDoc,\n    undefined,\n    defCache,\n  );\n  const obj = z.object(shape);\n  const allowExtra =\n    rawSchema.unevaluatedProperties === true ||\n    (typeof rawSchema.unevaluatedProperties === 'object' &&\n      rawSchema.unevaluatedProperties !== null) ||\n    rawSchema.additionalProperties === true ||\n    (typeof rawSchema.additionalProperties === 'object' && rawSchema.additionalProperties !== null);\n  return allowExtra ? obj.passthrough() : obj.strict();\n}\n\n/**\n * Parses raw catalog function definitions into typed FunctionApi objects.\n *\n * Validates UAX #31 identifier requirements when targeting protocol v1.0 or higher,\n * filters against permitted function names, and converts parameter schemas to Zod validators.\n *\n * @param rawFunctions Raw function definitions from the catalog schema (array or dictionary).\n * @param rootDoc Optional root schema document for reference resolution.\n * @param permittedNames Optional set of allowed function names from `anyFunction.oneOf`.\n * @param isAtLeastV10 Whether the catalog targets protocol v1.0 or higher.\n * @returns Array of parsed FunctionApi objects.\n * @throws {A2uiCatalogError} If a function or argument identifier fails UAX #31 validation in v1.0+.\n */\nfunction parseFunctionDefinitions(\n  rawFunctions: unknown,\n  rootDoc?: Record<string, unknown>,\n  permittedNames?: Set<string>,\n  isAtLeastV10 = false,\n): FunctionApi[] {\n  const result: FunctionApi[] = [];\n  if (!rawFunctions) return result;\n  const defCache = new Map<string, z.ZodTypeAny>();\n\n  /** Validates a function's own name and its declared argument names. */\n  const assertFunctionIdentifiers = (name: string, args: unknown): void => {\n    if (!isAtLeastV10) return;\n    assertUax31Identifier(name, `function identifier: '${name}'`);\n    if (args && typeof args === 'object') {\n      for (const argName of Object.keys(args as Record<string, unknown>)) {\n        assertUax31Identifier(argName, `argument identifier: '${argName}' in function '${name}'`);\n      }\n    }\n  };\n\n  if (Array.isArray(rawFunctions)) {\n    for (const fn of rawFunctions) {\n      if (fn && typeof fn === 'object' && typeof fn.name === 'string') {\n        assertFunctionIdentifiers(fn.name, fn.parameters);\n        if (permittedNames && !permittedNames.has(fn.name)) {\n          continue;\n        }\n        const paramSchema =\n          fn.parameters && typeof fn.parameters === 'object'\n            ? convertFunctionArgsJsonSchemaToZod(\n                fn.parameters as Record<string, unknown>,\n                rootDoc,\n                defCache,\n              )\n            : z.record(z.unknown());\n        result.push({\n          name: fn.name,\n          description: typeof fn.description === 'string' ? fn.description : undefined,\n          returnType: (typeof fn.returnType === 'string' ? fn.returnType : 'any') as any,\n          allowedCallers: fn.allowedCallers,\n          requiresUserActivation: fn.requiresUserActivation,\n          schema: paramSchema,\n        });\n      }\n    }\n    return result;\n  }\n\n  if (typeof rawFunctions === 'object' && rawFunctions !== null) {\n    for (const [name, defn] of Object.entries(rawFunctions)) {\n      const rawDefn = defn && typeof defn === 'object' ? (defn as Record<string, unknown>) : {};\n      assertFunctionIdentifiers(\n        name,\n        rawDefn.properties && typeof rawDefn.properties === 'object'\n          ? rawDefn.properties\n          : rawDefn.parameters,\n      );\n      if (permittedNames && !permittedNames.has(name)) {\n        continue;\n      }\n      if (!defn || typeof defn !== 'object') continue;\n      const d = defn as Record<string, unknown>;\n      const props = d.properties as Record<string, unknown> | undefined;\n      let argsSchema = props?.args ?? d.args ?? d.parameters;\n      if (!argsSchema && props && !('call' in props) && !('function' in props)) {\n        argsSchema = d;\n      } else if (\n        argsSchema &&\n        typeof argsSchema === 'object' &&\n        !('properties' in argsSchema) &&\n        !('type' in argsSchema)\n      ) {\n        argsSchema = {\n          type: 'object',\n          properties: argsSchema,\n          required: d.required,\n          additionalProperties: d.additionalProperties,\n        };\n      }\n      const paramSchema =\n        argsSchema && typeof argsSchema === 'object'\n          ? convertFunctionArgsJsonSchemaToZod(\n              argsSchema as Record<string, unknown>,\n              rootDoc,\n              defCache,\n            )\n          : z.record(z.unknown());\n      const returnType =\n        (typeof d.returnType === 'string' ? d.returnType : undefined) ??\n        (typeof (props?.returnType as Record<string, unknown> | undefined)?.const === 'string'\n          ? (props?.returnType as Record<string, unknown>).const\n          : 'any');\n      const allowedCallers =\n        d.allowedCallers ?? (props?.allowedCallers as Record<string, unknown> | undefined)?.const;\n      const requiresUserActivation =\n        d.requiresUserActivation ??\n        (props?.requiresUserActivation as Record<string, unknown> | undefined)?.const;\n\n      result.push({\n        name,\n        description: typeof d.description === 'string' ? d.description : undefined,\n        returnType: returnType as any,\n        allowedCallers: allowedCallers as any,\n        requiresUserActivation: requiresUserActivation as boolean | undefined,\n        schema: paramSchema,\n      });\n    }\n  }\n\n  return result;\n}\n\n/**\n * Extracts permitted definition names matching a reference prefix from a `oneOf` array.\n *\n * @param oneOf Array of reference schema objects from `anyComponent` or `anyFunction`.\n * @param prefix Prefix to match and strip, such as `#/components/` or `#/functions/`.\n * @returns Set of unescaped allowed names, or undefined if `oneOf` is not an array.\n */\nfunction extractPermittedNames(oneOf: unknown, prefix: string): Set<string> | undefined {\n  if (!Array.isArray(oneOf)) return undefined;\n  const permitted = new Set<string>();\n  for (const item of oneOf) {\n    if (typeof item?.$ref === 'string' && item.$ref.startsWith(prefix)) {\n      const rawName = item.$ref.slice(prefix.length);\n      const unescapedName = rawName.replace(/~([01])/g, (_: string, p1: string) =>\n        p1 === '1' ? '/' : '~',\n      );\n      permitted.add(unescapedName);\n    }\n  }\n  return permitted;\n}\n\n/**\n * Parses raw catalog component schemas into typed ComponentApi definitions.\n *\n * Validates UAX #31 identifier requirements for v1.0+ specifications, filters\n * components if permitted names are specified, and transforms JSON schemas into\n * runtime Zod schemas.\n *\n * @param componentsMap Mapping of component name to raw component schema definition.\n * @param catalogSchema Enclosing raw catalog schema for resolving local references.\n * @param isAtLeastV10 Whether the catalog targets protocol v1.0 or higher.\n * @param permittedNames Optional set of allowed component names from anyComponent.oneOf.\n * @returns Array of parsed ComponentApi objects with validation schemas and hierarchy constraints.\n * @throws {A2uiCatalogError} If a component or property identifier fails UAX #31 validation in v1.0+.\n */\nfunction parseCatalogComponents(\n  componentsMap: Record<string, unknown>,\n  catalogSchema: Record<string, unknown>,\n  isAtLeastV10: boolean,\n  permittedNames?: Set<string>,\n): ComponentApi[] {\n  const components: ComponentApi[] = [];\n  const defCache = new Map<string, z.ZodTypeAny>();\n\n  for (const [name, rawCompSchema] of Object.entries(componentsMap)) {\n    const rawComp = (rawCompSchema as Record<string, unknown>) || {};\n    if (isAtLeastV10) {\n      assertUax31Identifier(name, `component identifier: '${name}'`);\n      const props = rawComp.properties;\n      if (props && typeof props === 'object') {\n        for (const propName of Object.keys(props as Record<string, unknown>)) {\n          assertUax31Identifier(\n            propName,\n            `property identifier: '${propName}' in component '${name}'`,\n          );\n        }\n      }\n    }\n    if (permittedNames && !permittedNames.has(name)) {\n      continue;\n    }\n    const zodSchema = convertComponentJsonSchemaToZod(rawComp, catalogSchema, true, defCache);\n    components.push({\n      name,\n      schema: zodSchema,\n      allowedParents: Array.isArray(rawComp.allowedParents)\n        ? rawComp.allowedParents.filter((p: unknown): p is string => typeof p === 'string')\n        : undefined,\n      allowedChildren: Array.isArray(rawComp.allowedChildren)\n        ? rawComp.allowedChildren.filter((c: unknown): c is string => typeof c === 'string')\n        : undefined,\n    });\n  }\n  return components;\n}\n\n/**\n * Extracts and compiles the theme schema from a catalog definition if present.\n *\n * Checks top-level theme, themeSchema, styles, and $defs.theme definitions.\n *\n * @param catalogSchema Raw catalog schema or capabilities definition object.\n * @param defs Optional $defs mapping from the root schema.\n * @returns Compiled Zod object schema for theme tokens, or undefined if not declared.\n */\nfunction parseThemeSchema(\n  catalogSchema: Record<string, unknown>,\n  defs?: Record<string, unknown>,\n): z.ZodObject<z.ZodRawShape> | undefined {\n  const rawTheme =\n    catalogSchema.theme ??\n    catalogSchema.themeSchema ??\n    catalogSchema.styles ??\n    (defs?.theme as Record<string, unknown> | undefined);\n  if (rawTheme && typeof rawTheme === 'object') {\n    return convertComponentJsonSchemaToZod(\n      rawTheme as Record<string, unknown>,\n      catalogSchema,\n      false,\n    );\n  }\n  return undefined;\n}\n\n/**\n * Loads a raw A2UI catalog schema into a typed Catalog instance.\n *\n * Parses component and function definitions, extracts hierarchy constraints (`allowedParents`,\n * `allowedChildren`), unescapes RFC 6901 JSON pointers, and builds runtime Zod validators.\n *\n * @param catalogSchema Raw catalog schema or capabilities definition object.\n * @param protocolVersion Protocol version to use when the schema does not declare\n *   one. Catalog schemas published before v1.0 omit `protocolVersion`; when\n *   neither the caller nor the schema supplies it, `DEFAULT_PROTOCOL_VERSION`\n *   applies.\n * @returns Fully-typed Catalog instance configured with components, functions, and metadata.\n * @throws {Error} If the catalog ID is missing or not a string.\n */\nexport function loadCatalogFromSchema(\n  catalogSchema: Record<string, unknown>,\n  protocolVersion?: string,\n): Catalog<ComponentApi, FunctionApi> {\n  const catalogId = catalogSchema.catalogId ?? catalogSchema.$id ?? catalogSchema.id;\n  if (!catalogId || typeof catalogId !== 'string') {\n    throw new Error(\"Catalog ID must be specified via catalog metadata ('catalogId' or '$id').\");\n  }\n\n  // Filter permitted components via anyComponent.oneOf if declared\n  const defs = catalogSchema.$defs as Record<string, unknown> | undefined;\n  const anyComp = defs?.anyComponent as Record<string, unknown> | undefined;\n  const permittedNames = extractPermittedNames(anyComp?.oneOf, '#/components/');\n\n  const resolvedVersion =\n    protocolVersion ??\n    (catalogSchema.protocolVersion as string | undefined) ??\n    DEFAULT_PROTOCOL_VERSION;\n  const isAtLeastV10 = isAtLeastVersion(resolvedVersion, '1.0');\n\n  const componentsMap = (catalogSchema.components as Record<string, unknown>) ?? {};\n  const components = parseCatalogComponents(\n    componentsMap,\n    catalogSchema,\n    isAtLeastV10,\n    permittedNames,\n  );\n\n  // Filter permitted functions via anyFunction.oneOf if declared\n  const anyFunc = defs?.anyFunction as Record<string, unknown> | undefined;\n  const permittedFunctionNames = extractPermittedNames(anyFunc?.oneOf, '#/functions/');\n\n  const functions = parseFunctionDefinitions(\n    catalogSchema.functions,\n    catalogSchema,\n    permittedFunctionNames,\n    isAtLeastV10,\n  );\n\n  const themeSchema = parseThemeSchema(catalogSchema, defs);\n  const instructions =\n    typeof catalogSchema.instructions === 'string' ? catalogSchema.instructions : undefined;\n\n  return new Catalog(catalogId, resolvedVersion, components, functions, themeSchema, instructions);\n}\n","export const ignoreOverride = Symbol(\"Let zodToJsonSchema decide on which parser to use\");\nexport const jsonDescription = (jsonSchema, def) => {\n    if (def.description) {\n        try {\n            return {\n                ...jsonSchema,\n                ...JSON.parse(def.description),\n            };\n        }\n        catch { }\n    }\n    return jsonSchema;\n};\nexport const defaultOptions = {\n    name: undefined,\n    $refStrategy: \"root\",\n    basePath: [\"#\"],\n    effectStrategy: \"input\",\n    pipeStrategy: \"all\",\n    dateStrategy: \"format:date-time\",\n    mapStrategy: \"entries\",\n    removeAdditionalStrategy: \"passthrough\",\n    allowedAdditionalProperties: true,\n    rejectedAdditionalProperties: false,\n    definitionPath: \"definitions\",\n    target: \"jsonSchema7\",\n    strictUnions: false,\n    definitions: {},\n    errorMessages: false,\n    markdownDescription: false,\n    patternStrategy: \"escape\",\n    applyRegexFlags: false,\n    emailStrategy: \"format:email\",\n    base64Strategy: \"contentEncoding:base64\",\n    nameStrategy: \"ref\",\n    openAiAnyTypeName: \"OpenAiAnyType\"\n};\nexport const getDefaultOptions = (options) => (typeof options === \"string\"\n    ? {\n        ...defaultOptions,\n        name: options,\n    }\n    : {\n        ...defaultOptions,\n        ...options,\n    });\n","import { getDefaultOptions } from \"./Options.js\";\nexport const getRefs = (options) => {\n    const _options = getDefaultOptions(options);\n    const currentPath = _options.name !== undefined\n        ? [..._options.basePath, _options.definitionPath, _options.name]\n        : _options.basePath;\n    return {\n        ..._options,\n        flags: { hasReferencedOpenAiAnyType: false },\n        currentPath: currentPath,\n        propertyPath: undefined,\n        seen: new Map(Object.entries(_options.definitions).map(([name, def]) => [\n            def._def,\n            {\n                def: def._def,\n                path: [..._options.basePath, _options.definitionPath, name],\n                // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n                jsonSchema: undefined,\n            },\n        ])),\n    };\n};\n","export function addErrorMessage(res, key, errorMessage, refs) {\n    if (!refs?.errorMessages)\n        return;\n    if (errorMessage) {\n        res.errorMessage = {\n            ...res.errorMessage,\n            [key]: errorMessage,\n        };\n    }\n}\nexport function setResponseValueAndErrors(res, key, value, errorMessage, refs) {\n    res[key] = value;\n    addErrorMessage(res, key, errorMessage, refs);\n}\n","export const getRelativePath = (pathA, pathB) => {\n    let i = 0;\n    for (; i < pathA.length && i < pathB.length; i++) {\n        if (pathA[i] !== pathB[i])\n            break;\n    }\n    return [(pathA.length - i).toString(), ...pathB.slice(i)].join(\"/\");\n};\n","import { getRelativePath } from \"../getRelativePath.js\";\nexport function parseAnyDef(refs) {\n    if (refs.target !== \"openAi\") {\n        return {};\n    }\n    const anyDefinitionPath = [\n        ...refs.basePath,\n        refs.definitionPath,\n        refs.openAiAnyTypeName,\n    ];\n    refs.flags.hasReferencedOpenAiAnyType = true;\n    return {\n        $ref: refs.$refStrategy === \"relative\"\n            ? getRelativePath(anyDefinitionPath, refs.currentPath)\n            : anyDefinitionPath.join(\"/\"),\n    };\n}\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseArrayDef(def, refs) {\n    const res = {\n        type: \"array\",\n    };\n    if (def.type?._def &&\n        def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny) {\n        res.items = parseDef(def.type._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"items\"],\n        });\n    }\n    if (def.minLength) {\n        setResponseValueAndErrors(res, \"minItems\", def.minLength.value, def.minLength.message, refs);\n    }\n    if (def.maxLength) {\n        setResponseValueAndErrors(res, \"maxItems\", def.maxLength.value, def.maxLength.message, refs);\n    }\n    if (def.exactLength) {\n        setResponseValueAndErrors(res, \"minItems\", def.exactLength.value, def.exactLength.message, refs);\n        setResponseValueAndErrors(res, \"maxItems\", def.exactLength.value, def.exactLength.message, refs);\n    }\n    return res;\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseBigintDef(def, refs) {\n    const res = {\n        type: \"integer\",\n        format: \"int64\",\n    };\n    if (!def.checks)\n        return res;\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"min\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMinimum = true;\n                    }\n                    setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                }\n                break;\n            case \"max\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMaximum = true;\n                    }\n                    setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                }\n                break;\n            case \"multipleOf\":\n                setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n                break;\n        }\n    }\n    return res;\n}\n","export function parseBooleanDef() {\n    return {\n        type: \"boolean\",\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseBrandedDef(_def, refs) {\n    return parseDef(_def.type._def, refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseCatchDef = (def, refs) => {\n    return parseDef(def.innerType._def, refs);\n};\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nexport function parseDateDef(def, refs, overrideDateStrategy) {\n    const strategy = overrideDateStrategy ?? refs.dateStrategy;\n    if (Array.isArray(strategy)) {\n        return {\n            anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n        };\n    }\n    switch (strategy) {\n        case \"string\":\n        case \"format:date-time\":\n            return {\n                type: \"string\",\n                format: \"date-time\",\n            };\n        case \"format:date\":\n            return {\n                type: \"string\",\n                format: \"date\",\n            };\n        case \"integer\":\n            return integerDateParser(def, refs);\n    }\n}\nconst integerDateParser = (def, refs) => {\n    const res = {\n        type: \"integer\",\n        format: \"unix-time\",\n    };\n    if (refs.target === \"openApi3\") {\n        return res;\n    }\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"min\":\n                setResponseValueAndErrors(res, \"minimum\", check.value, // This is in milliseconds\n                check.message, refs);\n                break;\n            case \"max\":\n                setResponseValueAndErrors(res, \"maximum\", check.value, // This is in milliseconds\n                check.message, refs);\n                break;\n        }\n    }\n    return res;\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parseDefaultDef(_def, refs) {\n    return {\n        ...parseDef(_def.innerType._def, refs),\n        default: _def.defaultValue(),\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseEffectsDef(_def, refs) {\n    return refs.effectStrategy === \"input\"\n        ? parseDef(_def.schema._def, refs)\n        : parseAnyDef(refs);\n}\n","export function parseEnumDef(def) {\n    return {\n        type: \"string\",\n        enum: Array.from(def.values),\n    };\n}\n","import { parseDef } from \"../parseDef.js\";\nconst isJsonSchema7AllOfType = (type) => {\n    if (\"type\" in type && type.type === \"string\")\n        return false;\n    return \"allOf\" in type;\n};\nexport function parseIntersectionDef(def, refs) {\n    const allOf = [\n        parseDef(def.left._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n        }),\n        parseDef(def.right._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"allOf\", \"1\"],\n        }),\n    ].filter((x) => !!x);\n    let unevaluatedProperties = refs.target === \"jsonSchema2019-09\"\n        ? { unevaluatedProperties: false }\n        : undefined;\n    const mergedAllOf = [];\n    // If either of the schemas is an allOf, merge them into a single allOf\n    allOf.forEach((schema) => {\n        if (isJsonSchema7AllOfType(schema)) {\n            mergedAllOf.push(...schema.allOf);\n            if (schema.unevaluatedProperties === undefined) {\n                // If one of the schemas has no unevaluatedProperties set,\n                // the merged schema should also have no unevaluatedProperties set\n                unevaluatedProperties = undefined;\n            }\n        }\n        else {\n            let nestedSchema = schema;\n            if (\"additionalProperties\" in schema &&\n                schema.additionalProperties === false) {\n                const { additionalProperties, ...rest } = schema;\n                nestedSchema = rest;\n            }\n            else {\n                // As soon as one of the schemas has additionalProperties set not to false, we allow unevaluatedProperties\n                unevaluatedProperties = undefined;\n            }\n            mergedAllOf.push(nestedSchema);\n        }\n    });\n    return mergedAllOf.length\n        ? {\n            allOf: mergedAllOf,\n            ...unevaluatedProperties,\n        }\n        : undefined;\n}\n","export function parseLiteralDef(def, refs) {\n    const parsedType = typeof def.value;\n    if (parsedType !== \"bigint\" &&\n        parsedType !== \"number\" &&\n        parsedType !== \"boolean\" &&\n        parsedType !== \"string\") {\n        return {\n            type: Array.isArray(def.value) ? \"array\" : \"object\",\n        };\n    }\n    if (refs.target === \"openApi3\") {\n        return {\n            type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n            enum: [def.value],\n        };\n    }\n    return {\n        type: parsedType === \"bigint\" ? \"integer\" : parsedType,\n        const: def.value,\n    };\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n    /**\n     * `c` was changed to `[cC]` to replicate /i flag\n     */\n    cuid: /^[cC][^\\s-]{8,}$/,\n    cuid2: /^[0-9a-z]+$/,\n    ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n    /**\n     * `a-z` was added to replicate /i flag\n     */\n    email: /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n    /**\n     * Constructed a valid Unicode RegExp\n     *\n     * Lazily instantiate since this type of regex isn't supported\n     * in all envs (e.g. React Native).\n     *\n     * See:\n     * https://github.com/colinhacks/zod/issues/2433\n     * Fix in Zod:\n     * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n     */\n    emoji: () => {\n        if (emojiRegex === undefined) {\n            emojiRegex = RegExp(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\n        }\n        return emojiRegex;\n    },\n    /**\n     * Unused\n     */\n    uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n    /**\n     * Unused\n     */\n    ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n    ipv4Cidr: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n    /**\n     * Unused\n     */\n    ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n    ipv6Cidr: /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n    base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n    base64url: /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n    nanoid: /^[a-zA-Z0-9_-]{21}$/,\n    jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n};\nexport function parseStringDef(def, refs) {\n    const res = {\n        type: \"string\",\n    };\n    if (def.checks) {\n        for (const check of def.checks) {\n            switch (check.kind) {\n                case \"min\":\n                    setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n                        ? Math.max(res.minLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"max\":\n                    setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n                        ? Math.min(res.maxLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"email\":\n                    switch (refs.emailStrategy) {\n                        case \"format:email\":\n                            addFormat(res, \"email\", check.message, refs);\n                            break;\n                        case \"format:idn-email\":\n                            addFormat(res, \"idn-email\", check.message, refs);\n                            break;\n                        case \"pattern:zod\":\n                            addPattern(res, zodPatterns.email, check.message, refs);\n                            break;\n                    }\n                    break;\n                case \"url\":\n                    addFormat(res, \"uri\", check.message, refs);\n                    break;\n                case \"uuid\":\n                    addFormat(res, \"uuid\", check.message, refs);\n                    break;\n                case \"regex\":\n                    addPattern(res, check.regex, check.message, refs);\n                    break;\n                case \"cuid\":\n                    addPattern(res, zodPatterns.cuid, check.message, refs);\n                    break;\n                case \"cuid2\":\n                    addPattern(res, zodPatterns.cuid2, check.message, refs);\n                    break;\n                case \"startsWith\":\n                    addPattern(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n                    break;\n                case \"endsWith\":\n                    addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\n                    break;\n                case \"datetime\":\n                    addFormat(res, \"date-time\", check.message, refs);\n                    break;\n                case \"date\":\n                    addFormat(res, \"date\", check.message, refs);\n                    break;\n                case \"time\":\n                    addFormat(res, \"time\", check.message, refs);\n                    break;\n                case \"duration\":\n                    addFormat(res, \"duration\", check.message, refs);\n                    break;\n                case \"length\":\n                    setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n                        ? Math.max(res.minLength, check.value)\n                        : check.value, check.message, refs);\n                    setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n                        ? Math.min(res.maxLength, check.value)\n                        : check.value, check.message, refs);\n                    break;\n                case \"includes\": {\n                    addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\n                    break;\n                }\n                case \"ip\": {\n                    if (check.version !== \"v6\") {\n                        addFormat(res, \"ipv4\", check.message, refs);\n                    }\n                    if (check.version !== \"v4\") {\n                        addFormat(res, \"ipv6\", check.message, refs);\n                    }\n                    break;\n                }\n                case \"base64url\":\n                    addPattern(res, zodPatterns.base64url, check.message, refs);\n                    break;\n                case \"jwt\":\n                    addPattern(res, zodPatterns.jwt, check.message, refs);\n                    break;\n                case \"cidr\": {\n                    if (check.version !== \"v6\") {\n                        addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n                    }\n                    if (check.version !== \"v4\") {\n                        addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n                    }\n                    break;\n                }\n                case \"emoji\":\n                    addPattern(res, zodPatterns.emoji(), check.message, refs);\n                    break;\n                case \"ulid\": {\n                    addPattern(res, zodPatterns.ulid, check.message, refs);\n                    break;\n                }\n                case \"base64\": {\n                    switch (refs.base64Strategy) {\n                        case \"format:binary\": {\n                            addFormat(res, \"binary\", check.message, refs);\n                            break;\n                        }\n                        case \"contentEncoding:base64\": {\n                            setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n                            break;\n                        }\n                        case \"pattern:zod\": {\n                            addPattern(res, zodPatterns.base64, check.message, refs);\n                            break;\n                        }\n                    }\n                    break;\n                }\n                case \"nanoid\": {\n                    addPattern(res, zodPatterns.nanoid, check.message, refs);\n                }\n                case \"toLowerCase\":\n                case \"toUpperCase\":\n                case \"trim\":\n                    break;\n                default:\n                    ((_) => { })(check);\n            }\n        }\n    }\n    return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n    return refs.patternStrategy === \"escape\"\n        ? escapeNonAlphaNumeric(literal)\n        : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n    let result = \"\";\n    for (let i = 0; i < source.length; i++) {\n        if (!ALPHA_NUMERIC.has(source[i])) {\n            result += \"\\\\\";\n        }\n        result += source[i];\n    }\n    return result;\n}\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(schema, value, message, refs) {\n    if (schema.format || schema.anyOf?.some((x) => x.format)) {\n        if (!schema.anyOf) {\n            schema.anyOf = [];\n        }\n        if (schema.format) {\n            schema.anyOf.push({\n                format: schema.format,\n                ...(schema.errorMessage &&\n                    refs.errorMessages && {\n                    errorMessage: { format: schema.errorMessage.format },\n                }),\n            });\n            delete schema.format;\n            if (schema.errorMessage) {\n                delete schema.errorMessage.format;\n                if (Object.keys(schema.errorMessage).length === 0) {\n                    delete schema.errorMessage;\n                }\n            }\n        }\n        schema.anyOf.push({\n            format: value,\n            ...(message &&\n                refs.errorMessages && { errorMessage: { format: message } }),\n        });\n    }\n    else {\n        setResponseValueAndErrors(schema, \"format\", value, message, refs);\n    }\n}\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(schema, regex, message, refs) {\n    if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n        if (!schema.allOf) {\n            schema.allOf = [];\n        }\n        if (schema.pattern) {\n            schema.allOf.push({\n                pattern: schema.pattern,\n                ...(schema.errorMessage &&\n                    refs.errorMessages && {\n                    errorMessage: { pattern: schema.errorMessage.pattern },\n                }),\n            });\n            delete schema.pattern;\n            if (schema.errorMessage) {\n                delete schema.errorMessage.pattern;\n                if (Object.keys(schema.errorMessage).length === 0) {\n                    delete schema.errorMessage;\n                }\n            }\n        }\n        schema.allOf.push({\n            pattern: stringifyRegExpWithFlags(regex, refs),\n            ...(message &&\n                refs.errorMessages && { errorMessage: { pattern: message } }),\n        });\n    }\n    else {\n        setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n    }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n    if (!refs.applyRegexFlags || !regex.flags) {\n        return regex.source;\n    }\n    // Currently handled flags\n    const flags = {\n        i: regex.flags.includes(\"i\"),\n        m: regex.flags.includes(\"m\"),\n        s: regex.flags.includes(\"s\"), // `.` matches newlines\n    };\n    // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n    const source = flags.i ? regex.source.toLowerCase() : regex.source;\n    let pattern = \"\";\n    let isEscaped = false;\n    let inCharGroup = false;\n    let inCharRange = false;\n    for (let i = 0; i < source.length; i++) {\n        if (isEscaped) {\n            pattern += source[i];\n            isEscaped = false;\n            continue;\n        }\n        if (flags.i) {\n            if (inCharGroup) {\n                if (source[i].match(/[a-z]/)) {\n                    if (inCharRange) {\n                        pattern += source[i];\n                        pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n                        inCharRange = false;\n                    }\n                    else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n                        pattern += source[i];\n                        inCharRange = true;\n                    }\n                    else {\n                        pattern += `${source[i]}${source[i].toUpperCase()}`;\n                    }\n                    continue;\n                }\n            }\n            else if (source[i].match(/[a-z]/)) {\n                pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n                continue;\n            }\n        }\n        if (flags.m) {\n            if (source[i] === \"^\") {\n                pattern += `(^|(?<=[\\r\\n]))`;\n                continue;\n            }\n            else if (source[i] === \"$\") {\n                pattern += `($|(?=[\\r\\n]))`;\n                continue;\n            }\n        }\n        if (flags.s && source[i] === \".\") {\n            pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n            continue;\n        }\n        pattern += source[i];\n        if (source[i] === \"\\\\\") {\n            isEscaped = true;\n        }\n        else if (inCharGroup && source[i] === \"]\") {\n            inCharGroup = false;\n        }\n        else if (!inCharGroup && source[i] === \"[\") {\n            inCharGroup = true;\n        }\n    }\n    try {\n        new RegExp(pattern);\n    }\n    catch {\n        console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n        return regex.source;\n    }\n    return pattern;\n}\n","import { ZodFirstPartyTypeKind, } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseRecordDef(def, refs) {\n    if (refs.target === \"openAi\") {\n        console.warn(\"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\");\n    }\n    if (refs.target === \"openApi3\" &&\n        def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n        return {\n            type: \"object\",\n            required: def.keyType._def.values,\n            properties: def.keyType._def.values.reduce((acc, key) => ({\n                ...acc,\n                [key]: parseDef(def.valueType._def, {\n                    ...refs,\n                    currentPath: [...refs.currentPath, \"properties\", key],\n                }) ?? parseAnyDef(refs),\n            }), {}),\n            additionalProperties: refs.rejectedAdditionalProperties,\n        };\n    }\n    const schema = {\n        type: \"object\",\n        additionalProperties: parseDef(def.valueType._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"additionalProperties\"],\n        }) ?? refs.allowedAdditionalProperties,\n    };\n    if (refs.target === \"openApi3\") {\n        return schema;\n    }\n    if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n        def.keyType._def.checks?.length) {\n        const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n        return {\n            ...schema,\n            propertyNames: keyType,\n        };\n    }\n    else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n        return {\n            ...schema,\n            propertyNames: {\n                enum: def.keyType._def.values,\n            },\n        };\n    }\n    else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n        def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n        def.keyType._def.type._def.checks?.length) {\n        const { type, ...keyType } = parseBrandedDef(def.keyType._def, refs);\n        return {\n            ...schema,\n            propertyNames: keyType,\n        };\n    }\n    return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseRecordDef } from \"./record.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport function parseMapDef(def, refs) {\n    if (refs.mapStrategy === \"record\") {\n        return parseRecordDef(def, refs);\n    }\n    const keys = parseDef(def.keyType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\", \"items\", \"0\"],\n    }) || parseAnyDef(refs);\n    const values = parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\", \"items\", \"1\"],\n    }) || parseAnyDef(refs);\n    return {\n        type: \"array\",\n        maxItems: 125,\n        items: {\n            type: \"array\",\n            items: [keys, values],\n            minItems: 2,\n            maxItems: 2,\n        },\n    };\n}\n","export function parseNativeEnumDef(def) {\n    const object = def.values;\n    const actualKeys = Object.keys(def.values).filter((key) => {\n        return typeof object[object[key]] !== \"number\";\n    });\n    const actualValues = actualKeys.map((key) => object[key]);\n    const parsedTypes = Array.from(new Set(actualValues.map((values) => typeof values)));\n    return {\n        type: parsedTypes.length === 1\n            ? parsedTypes[0] === \"string\"\n                ? \"string\"\n                : \"number\"\n            : [\"string\", \"number\"],\n        enum: actualValues,\n    };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseNeverDef(refs) {\n    return refs.target === \"openAi\"\n        ? undefined\n        : {\n            not: parseAnyDef({\n                ...refs,\n                currentPath: [...refs.currentPath, \"not\"],\n            }),\n        };\n}\n","export function parseNullDef(refs) {\n    return refs.target === \"openApi3\"\n        ? {\n            enum: [\"null\"],\n            nullable: true,\n        }\n        : {\n            type: \"null\",\n        };\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const primitiveMappings = {\n    ZodString: \"string\",\n    ZodNumber: \"number\",\n    ZodBigInt: \"integer\",\n    ZodBoolean: \"boolean\",\n    ZodNull: \"null\",\n};\nexport function parseUnionDef(def, refs) {\n    if (refs.target === \"openApi3\")\n        return asAnyOf(def, refs);\n    const options = def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n    // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n    if (options.every((x) => x._def.typeName in primitiveMappings &&\n        (!x._def.checks || !x._def.checks.length))) {\n        // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n        const types = options.reduce((types, x) => {\n            const type = primitiveMappings[x._def.typeName]; //Can be safely casted due to row 43\n            return type && !types.includes(type) ? [...types, type] : types;\n        }, []);\n        return {\n            type: types.length > 1 ? types : types[0],\n        };\n    }\n    else if (options.every((x) => x._def.typeName === \"ZodLiteral\" && !x.description)) {\n        // all options literals\n        const types = options.reduce((acc, x) => {\n            const type = typeof x._def.value;\n            switch (type) {\n                case \"string\":\n                case \"number\":\n                case \"boolean\":\n                    return [...acc, type];\n                case \"bigint\":\n                    return [...acc, \"integer\"];\n                case \"object\":\n                    if (x._def.value === null)\n                        return [...acc, \"null\"];\n                case \"symbol\":\n                case \"undefined\":\n                case \"function\":\n                default:\n                    return acc;\n            }\n        }, []);\n        if (types.length === options.length) {\n            // all the literals are primitive, as far as null can be considered primitive\n            const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n            return {\n                type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n                enum: options.reduce((acc, x) => {\n                    return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n                }, []),\n            };\n        }\n    }\n    else if (options.every((x) => x._def.typeName === \"ZodEnum\")) {\n        return {\n            type: \"string\",\n            enum: options.reduce((acc, x) => [\n                ...acc,\n                ...x._def.values.filter((x) => !acc.includes(x)),\n            ], []),\n        };\n    }\n    return asAnyOf(def, refs);\n}\nconst asAnyOf = (def, refs) => {\n    const anyOf = (def.options instanceof Map\n        ? Array.from(def.options.values())\n        : def.options)\n        .map((x, i) => parseDef(x._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", `${i}`],\n    }))\n        .filter((x) => !!x &&\n        (!refs.strictUnions ||\n            (typeof x === \"object\" && Object.keys(x).length > 0)));\n    return anyOf.length ? { anyOf } : undefined;\n};\n","import { parseDef } from \"../parseDef.js\";\nimport { primitiveMappings } from \"./union.js\";\nexport function parseNullableDef(def, refs) {\n    if ([\"ZodString\", \"ZodNumber\", \"ZodBigInt\", \"ZodBoolean\", \"ZodNull\"].includes(def.innerType._def.typeName) &&\n        (!def.innerType._def.checks || !def.innerType._def.checks.length)) {\n        if (refs.target === \"openApi3\") {\n            return {\n                type: primitiveMappings[def.innerType._def.typeName],\n                nullable: true,\n            };\n        }\n        return {\n            type: [\n                primitiveMappings[def.innerType._def.typeName],\n                \"null\",\n            ],\n        };\n    }\n    if (refs.target === \"openApi3\") {\n        const base = parseDef(def.innerType._def, {\n            ...refs,\n            currentPath: [...refs.currentPath],\n        });\n        if (base && \"$ref\" in base)\n            return { allOf: [base], nullable: true };\n        return base && { ...base, nullable: true };\n    }\n    const base = parseDef(def.innerType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", \"0\"],\n    });\n    return base && { anyOf: [base, { type: \"null\" }] };\n}\n","import { addErrorMessage, setResponseValueAndErrors, } from \"../errorMessages.js\";\nexport function parseNumberDef(def, refs) {\n    const res = {\n        type: \"number\",\n    };\n    if (!def.checks)\n        return res;\n    for (const check of def.checks) {\n        switch (check.kind) {\n            case \"int\":\n                res.type = \"integer\";\n                addErrorMessage(res, \"type\", check.message, refs);\n                break;\n            case \"min\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMinimum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMinimum = true;\n                    }\n                    setResponseValueAndErrors(res, \"minimum\", check.value, check.message, refs);\n                }\n                break;\n            case \"max\":\n                if (refs.target === \"jsonSchema7\") {\n                    if (check.inclusive) {\n                        setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                    }\n                    else {\n                        setResponseValueAndErrors(res, \"exclusiveMaximum\", check.value, check.message, refs);\n                    }\n                }\n                else {\n                    if (!check.inclusive) {\n                        res.exclusiveMaximum = true;\n                    }\n                    setResponseValueAndErrors(res, \"maximum\", check.value, check.message, refs);\n                }\n                break;\n            case \"multipleOf\":\n                setResponseValueAndErrors(res, \"multipleOf\", check.value, check.message, refs);\n                break;\n        }\n    }\n    return res;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseObjectDef(def, refs) {\n    const forceOptionalIntoNullable = refs.target === \"openAi\";\n    const result = {\n        type: \"object\",\n        properties: {},\n    };\n    const required = [];\n    const shape = def.shape();\n    for (const propName in shape) {\n        let propDef = shape[propName];\n        if (propDef === undefined || propDef._def === undefined) {\n            continue;\n        }\n        let propOptional = safeIsOptional(propDef);\n        if (propOptional && forceOptionalIntoNullable) {\n            if (propDef._def.typeName === \"ZodOptional\") {\n                propDef = propDef._def.innerType;\n            }\n            if (!propDef.isNullable()) {\n                propDef = propDef.nullable();\n            }\n            propOptional = false;\n        }\n        const parsedDef = parseDef(propDef._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"properties\", propName],\n            propertyPath: [...refs.currentPath, \"properties\", propName],\n        });\n        if (parsedDef === undefined) {\n            continue;\n        }\n        result.properties[propName] = parsedDef;\n        if (!propOptional) {\n            required.push(propName);\n        }\n    }\n    if (required.length) {\n        result.required = required;\n    }\n    const additionalProperties = decideAdditionalProperties(def, refs);\n    if (additionalProperties !== undefined) {\n        result.additionalProperties = additionalProperties;\n    }\n    return result;\n}\nfunction decideAdditionalProperties(def, refs) {\n    if (def.catchall._def.typeName !== \"ZodNever\") {\n        return parseDef(def.catchall._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, \"additionalProperties\"],\n        });\n    }\n    switch (def.unknownKeys) {\n        case \"passthrough\":\n            return refs.allowedAdditionalProperties;\n        case \"strict\":\n            return refs.rejectedAdditionalProperties;\n        case \"strip\":\n            return refs.removeAdditionalStrategy === \"strict\"\n                ? refs.allowedAdditionalProperties\n                : refs.rejectedAdditionalProperties;\n    }\n}\nfunction safeIsOptional(schema) {\n    try {\n        return schema.isOptional();\n    }\n    catch {\n        return true;\n    }\n}\n","import { parseDef } from \"../parseDef.js\";\nimport { parseAnyDef } from \"./any.js\";\nexport const parseOptionalDef = (def, refs) => {\n    if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n        return parseDef(def.innerType._def, refs);\n    }\n    const innerSchema = parseDef(def.innerType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"anyOf\", \"1\"],\n    });\n    return innerSchema\n        ? {\n            anyOf: [\n                {\n                    not: parseAnyDef(refs),\n                },\n                innerSchema,\n            ],\n        }\n        : parseAnyDef(refs);\n};\n","import { parseDef } from \"../parseDef.js\";\nexport const parsePipelineDef = (def, refs) => {\n    if (refs.pipeStrategy === \"input\") {\n        return parseDef(def.in._def, refs);\n    }\n    else if (refs.pipeStrategy === \"output\") {\n        return parseDef(def.out._def, refs);\n    }\n    const a = parseDef(def.in._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"allOf\", \"0\"],\n    });\n    const b = parseDef(def.out._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"allOf\", a ? \"1\" : \"0\"],\n    });\n    return {\n        allOf: [a, b].filter((x) => x !== undefined),\n    };\n};\n","import { parseDef } from \"../parseDef.js\";\nexport function parsePromiseDef(def, refs) {\n    return parseDef(def.type._def, refs);\n}\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nimport { parseDef } from \"../parseDef.js\";\nexport function parseSetDef(def, refs) {\n    const items = parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"items\"],\n    });\n    const schema = {\n        type: \"array\",\n        uniqueItems: true,\n        items,\n    };\n    if (def.minSize) {\n        setResponseValueAndErrors(schema, \"minItems\", def.minSize.value, def.minSize.message, refs);\n    }\n    if (def.maxSize) {\n        setResponseValueAndErrors(schema, \"maxItems\", def.maxSize.value, def.maxSize.message, refs);\n    }\n    return schema;\n}\n","import { parseDef } from \"../parseDef.js\";\nexport function parseTupleDef(def, refs) {\n    if (def.rest) {\n        return {\n            type: \"array\",\n            minItems: def.items.length,\n            items: def.items\n                .map((x, i) => parseDef(x._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"items\", `${i}`],\n            }))\n                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n            additionalItems: parseDef(def.rest._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"additionalItems\"],\n            }),\n        };\n    }\n    else {\n        return {\n            type: \"array\",\n            minItems: def.items.length,\n            maxItems: def.items.length,\n            items: def.items\n                .map((x, i) => parseDef(x._def, {\n                ...refs,\n                currentPath: [...refs.currentPath, \"items\", `${i}`],\n            }))\n                .reduce((acc, x) => (x === undefined ? acc : [...acc, x]), []),\n        };\n    }\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUndefinedDef(refs) {\n    return {\n        not: parseAnyDef(refs),\n    };\n}\n","import { parseAnyDef } from \"./any.js\";\nexport function parseUnknownDef(refs) {\n    return parseAnyDef(refs);\n}\n","import { parseDef } from \"../parseDef.js\";\nexport const parseReadonlyDef = (def, refs) => {\n    return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from \"zod/v3\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nimport { parseArrayDef } from \"./parsers/array.js\";\nimport { parseBigintDef } from \"./parsers/bigint.js\";\nimport { parseBooleanDef } from \"./parsers/boolean.js\";\nimport { parseBrandedDef } from \"./parsers/branded.js\";\nimport { parseCatchDef } from \"./parsers/catch.js\";\nimport { parseDateDef } from \"./parsers/date.js\";\nimport { parseDefaultDef } from \"./parsers/default.js\";\nimport { parseEffectsDef } from \"./parsers/effects.js\";\nimport { parseEnumDef } from \"./parsers/enum.js\";\nimport { parseIntersectionDef } from \"./parsers/intersection.js\";\nimport { parseLiteralDef } from \"./parsers/literal.js\";\nimport { parseMapDef } from \"./parsers/map.js\";\nimport { parseNativeEnumDef } from \"./parsers/nativeEnum.js\";\nimport { parseNeverDef } from \"./parsers/never.js\";\nimport { parseNullDef } from \"./parsers/null.js\";\nimport { parseNullableDef } from \"./parsers/nullable.js\";\nimport { parseNumberDef } from \"./parsers/number.js\";\nimport { parseObjectDef } from \"./parsers/object.js\";\nimport { parseOptionalDef } from \"./parsers/optional.js\";\nimport { parsePipelineDef } from \"./parsers/pipeline.js\";\nimport { parsePromiseDef } from \"./parsers/promise.js\";\nimport { parseRecordDef } from \"./parsers/record.js\";\nimport { parseSetDef } from \"./parsers/set.js\";\nimport { parseStringDef } from \"./parsers/string.js\";\nimport { parseTupleDef } from \"./parsers/tuple.js\";\nimport { parseUndefinedDef } from \"./parsers/undefined.js\";\nimport { parseUnionDef } from \"./parsers/union.js\";\nimport { parseUnknownDef } from \"./parsers/unknown.js\";\nimport { parseReadonlyDef } from \"./parsers/readonly.js\";\nexport const selectParser = (def, typeName, refs) => {\n    switch (typeName) {\n        case ZodFirstPartyTypeKind.ZodString:\n            return parseStringDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodNumber:\n            return parseNumberDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodObject:\n            return parseObjectDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBigInt:\n            return parseBigintDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBoolean:\n            return parseBooleanDef();\n        case ZodFirstPartyTypeKind.ZodDate:\n            return parseDateDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodUndefined:\n            return parseUndefinedDef(refs);\n        case ZodFirstPartyTypeKind.ZodNull:\n            return parseNullDef(refs);\n        case ZodFirstPartyTypeKind.ZodArray:\n            return parseArrayDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodUnion:\n        case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n            return parseUnionDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodIntersection:\n            return parseIntersectionDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodTuple:\n            return parseTupleDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodRecord:\n            return parseRecordDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodLiteral:\n            return parseLiteralDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodEnum:\n            return parseEnumDef(def);\n        case ZodFirstPartyTypeKind.ZodNativeEnum:\n            return parseNativeEnumDef(def);\n        case ZodFirstPartyTypeKind.ZodNullable:\n            return parseNullableDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodOptional:\n            return parseOptionalDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodMap:\n            return parseMapDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodSet:\n            return parseSetDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodLazy:\n            return () => def.getter()._def;\n        case ZodFirstPartyTypeKind.ZodPromise:\n            return parsePromiseDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodNaN:\n        case ZodFirstPartyTypeKind.ZodNever:\n            return parseNeverDef(refs);\n        case ZodFirstPartyTypeKind.ZodEffects:\n            return parseEffectsDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodAny:\n            return parseAnyDef(refs);\n        case ZodFirstPartyTypeKind.ZodUnknown:\n            return parseUnknownDef(refs);\n        case ZodFirstPartyTypeKind.ZodDefault:\n            return parseDefaultDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodBranded:\n            return parseBrandedDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodReadonly:\n            return parseReadonlyDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodCatch:\n            return parseCatchDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodPipeline:\n            return parsePipelineDef(def, refs);\n        case ZodFirstPartyTypeKind.ZodFunction:\n        case ZodFirstPartyTypeKind.ZodVoid:\n        case ZodFirstPartyTypeKind.ZodSymbol:\n            return undefined;\n        default:\n            return ((_) => undefined)(typeName);\n    }\n};\n","import { ignoreOverride } from \"./Options.js\";\nimport { selectParser } from \"./selectParser.js\";\nimport { getRelativePath } from \"./getRelativePath.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nexport function parseDef(def, refs, forceResolution = false) {\n    const seenItem = refs.seen.get(def);\n    if (refs.override) {\n        const overrideResult = refs.override?.(def, refs, seenItem, forceResolution);\n        if (overrideResult !== ignoreOverride) {\n            return overrideResult;\n        }\n    }\n    if (seenItem && !forceResolution) {\n        const seenSchema = get$ref(seenItem, refs);\n        if (seenSchema !== undefined) {\n            return seenSchema;\n        }\n    }\n    const newItem = { def, path: refs.currentPath, jsonSchema: undefined };\n    refs.seen.set(def, newItem);\n    const jsonSchemaOrGetter = selectParser(def, def.typeName, refs);\n    // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n    const jsonSchema = typeof jsonSchemaOrGetter === \"function\"\n        ? parseDef(jsonSchemaOrGetter(), refs)\n        : jsonSchemaOrGetter;\n    if (jsonSchema) {\n        addMeta(def, refs, jsonSchema);\n    }\n    if (refs.postProcess) {\n        const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n        newItem.jsonSchema = jsonSchema;\n        return postProcessResult;\n    }\n    newItem.jsonSchema = jsonSchema;\n    return jsonSchema;\n}\nconst get$ref = (item, refs) => {\n    switch (refs.$refStrategy) {\n        case \"root\":\n            return { $ref: item.path.join(\"/\") };\n        case \"relative\":\n            return { $ref: getRelativePath(refs.currentPath, item.path) };\n        case \"none\":\n        case \"seen\": {\n            if (item.path.length < refs.currentPath.length &&\n                item.path.every((value, index) => refs.currentPath[index] === value)) {\n                console.warn(`Recursive reference detected at ${refs.currentPath.join(\"/\")}! Defaulting to any`);\n                return parseAnyDef(refs);\n            }\n            return refs.$refStrategy === \"seen\" ? parseAnyDef(refs) : undefined;\n        }\n    }\n};\nconst addMeta = (def, refs, jsonSchema) => {\n    if (def.description) {\n        jsonSchema.description = def.description;\n        if (refs.markdownDescription) {\n            jsonSchema.markdownDescription = def.description;\n        }\n    }\n    return jsonSchema;\n};\n","import { parseDef } from \"./parseDef.js\";\nimport { getRefs } from \"./Refs.js\";\nimport { parseAnyDef } from \"./parsers/any.js\";\nconst zodToJsonSchema = (schema, options) => {\n    const refs = getRefs(options);\n    let definitions = typeof options === \"object\" && options.definitions\n        ? Object.entries(options.definitions).reduce((acc, [name, schema]) => ({\n            ...acc,\n            [name]: parseDef(schema._def, {\n                ...refs,\n                currentPath: [...refs.basePath, refs.definitionPath, name],\n            }, true) ?? parseAnyDef(refs),\n        }), {})\n        : undefined;\n    const name = typeof options === \"string\"\n        ? options\n        : options?.nameStrategy === \"title\"\n            ? undefined\n            : options?.name;\n    const main = parseDef(schema._def, name === undefined\n        ? refs\n        : {\n            ...refs,\n            currentPath: [...refs.basePath, refs.definitionPath, name],\n        }, false) ?? parseAnyDef(refs);\n    const title = typeof options === \"object\" &&\n        options.name !== undefined &&\n        options.nameStrategy === \"title\"\n        ? options.name\n        : undefined;\n    if (title !== undefined) {\n        main.title = title;\n    }\n    if (refs.flags.hasReferencedOpenAiAnyType) {\n        if (!definitions) {\n            definitions = {};\n        }\n        if (!definitions[refs.openAiAnyTypeName]) {\n            definitions[refs.openAiAnyTypeName] = {\n                // Skipping \"object\" as no properties can be defined and additionalProperties must be \"false\"\n                type: [\"string\", \"number\", \"integer\", \"boolean\", \"array\", \"null\"],\n                items: {\n                    $ref: refs.$refStrategy === \"relative\"\n                        ? \"1\"\n                        : [\n                            ...refs.basePath,\n                            refs.definitionPath,\n                            refs.openAiAnyTypeName,\n                        ].join(\"/\"),\n                },\n            };\n        }\n    }\n    const combined = name === undefined\n        ? definitions\n            ? {\n                ...main,\n                [refs.definitionPath]: definitions,\n            }\n            : main\n        : {\n            $ref: [\n                ...(refs.$refStrategy === \"relative\" ? [] : refs.basePath),\n                refs.definitionPath,\n                name,\n            ].join(\"/\"),\n            [refs.definitionPath]: {\n                ...definitions,\n                [name]: main,\n            },\n        };\n    if (refs.target === \"jsonSchema7\") {\n        combined.$schema = \"http://json-schema.org/draft-07/schema#\";\n    }\n    else if (refs.target === \"jsonSchema2019-09\" || refs.target === \"openAi\") {\n        combined.$schema = \"https://json-schema.org/draft/2019-09/schema#\";\n    }\n    if (refs.target === \"openAi\" &&\n        (\"anyOf\" in combined ||\n            \"oneOf\" in combined ||\n            \"allOf\" in combined ||\n            (\"type\" in combined && Array.isArray(combined.type)))) {\n        console.warn(\"Warning: OpenAI may not support schemas with unions as roots! Try wrapping it in an object property.\");\n    }\n    return combined;\n};\nexport { zodToJsonSchema };\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/ via scripts/generate-standard-defs.mjs\n\nimport type {ChildRefAnalysisOptions} from '../catalog/reference-map.js';\n\n/**\n * Child reference analysis configuration for A2UI v0.8 schemas.\n */\nexport const V08_CHILD_REF_OPTIONS: ChildRefAnalysisOptions = {\n  childRefNames: new Set(['ComponentId', 'Child', 'ChildComponentId']),\n  childListRefNames: new Set(['ChildList', 'TemplateChildList']),\n};\n\n/**\n * Standard $defs dictionary for A2UI v0.8 catalog JSON schemas.\n */\nexport const V08_STANDARD_DEFS: Record<string, unknown> = {\n  'ComponentId': {\n    'description':\n      'The unique identifier for a component, used for both definitions and references within the same surface.',\n    'type': 'string',\n  },\n  'TextItem': {\n    'additionalProperties': false,\n    'description':\n      \"The value of the text field. This can be a literal string or a reference to a value in the data model ('path', e.g. '/user/name').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'UrlItem': {\n    'additionalProperties': false,\n    'description':\n      \"The URL of the audio to be played. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/song/url').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'AltTextItem': {\n    'additionalProperties': false,\n    'description':\n      \"The alt text for the image. This can be a literal string ('literal') or a reference to a value in the data model ('path', e.g. '/thumbnail/altText').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'NameItem': {\n    'additionalProperties': false,\n    'description':\n      \"The name of the icon to display. This can be a literal string or a reference to a value in the data model ('path', e.g. '/form/submit').\",\n    'properties': {\n      'literalString': {\n        'enum': [\n          'accountCircle',\n          'add',\n          'arrowBack',\n          'arrowForward',\n          'attachFile',\n          'calendarToday',\n          'call',\n          'camera',\n          'check',\n          'close',\n          'delete',\n          'download',\n          'edit',\n          'event',\n          'error',\n          'favorite',\n          'favoriteOff',\n          'folder',\n          'help',\n          'home',\n          'info',\n          'locationOn',\n          'lock',\n          'lockOpen',\n          'mail',\n          'menu',\n          'moreVert',\n          'moreHoriz',\n          'notificationsOff',\n          'notifications',\n          'payment',\n          'person',\n          'phone',\n          'photo',\n          'print',\n          'refresh',\n          'search',\n          'send',\n          'settings',\n          'share',\n          'shoppingCart',\n          'star',\n          'starHalf',\n          'starOff',\n          'upload',\n          'visibility',\n          'visibilityOff',\n          'warning',\n        ],\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'DescriptionItem': {\n    'additionalProperties': false,\n    'description':\n      \"A description of the audio, such as a title or summary. This can be a literal string or a reference to a value in the data model ('path', e.g. '/song/title').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'ChildrenItem': {\n    'additionalProperties': false,\n    'description':\n      \"Defines the children. Use 'explicitList' for a fixed set of children, or 'template' to generate children from a data list.\",\n    'properties': {\n      'explicitList': {\n        'items': {\n          'type': 'string',\n        },\n        'type': 'array',\n      },\n      'template': {\n        '$ref': '#/$defs/TemplateItem',\n        'description':\n          'A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.',\n      },\n    },\n    'type': 'object',\n  },\n  'TemplateItem': {\n    'additionalProperties': false,\n    'description':\n      'A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.',\n    'properties': {\n      'componentId': {\n        'type': 'string',\n      },\n      'dataBinding': {\n        'type': 'string',\n      },\n    },\n    'required': ['componentId', 'dataBinding'],\n    'type': 'object',\n  },\n  'TabItemItem': {\n    'additionalProperties': false,\n    'properties': {\n      'child': {\n        'type': 'string',\n      },\n      'title': {\n        '$ref': '#/$defs/TitleItem',\n      },\n    },\n    'required': ['title', 'child'],\n    'type': 'object',\n  },\n  'TitleItem': {\n    'additionalProperties': false,\n    'description':\n      \"The tab title. Defines the value as either a literal value or a path to data model value (e.g. '/options/title').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'ActionItem': {\n    'additionalProperties': false,\n    'description':\n      \"The client-side action to be dispatched when the button is clicked. It includes the action's name and an optional context payload.\",\n    'properties': {\n      'context': {\n        'items': {\n          '$ref': '#/$defs/ContextItem',\n        },\n        'type': 'array',\n      },\n      'name': {\n        'type': 'string',\n      },\n    },\n    'required': ['name'],\n    'type': 'object',\n  },\n  'ContextItem': {\n    'additionalProperties': false,\n    'properties': {\n      'key': {\n        'type': 'string',\n      },\n      'value': {\n        '$ref': '#/$defs/ValueItem',\n        'description':\n          \"Defines the value to be included in the context as either a literal value or a path to a data model value (e.g. '/user/name').\",\n      },\n    },\n    'required': ['key', 'value'],\n    'type': 'object',\n  },\n  'ValueItem': {\n    'additionalProperties': false,\n    'description':\n      \"The current value of the slider. This can be a literal number ('literalNumber') or a reference to a value in the data model ('path', e.g. '/restaurant/cost').\",\n    'properties': {\n      'literalNumber': {\n        'type': 'number',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'LabelItem': {\n    'additionalProperties': false,\n    'description':\n      \"The label for the slider. This can be a literal string or a reference to a value in the data model ('path').\",\n    'properties': {\n      'literalString': {\n        'type': 'string',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n  'OptionItem': {\n    'additionalProperties': false,\n    'properties': {\n      'label': {\n        '$ref': '#/$defs/LabelItem',\n        'description':\n          \"The text to display for this option. This can be a literal string or a reference to a value in the data model (e.g. '/option/label').\",\n      },\n      'value': {\n        'description': 'The value to be associated with this option when selected.',\n        'type': 'string',\n      },\n    },\n    'required': ['label', 'value'],\n    'type': 'object',\n  },\n  'SelectionItem': {\n    'additionalProperties': false,\n    'description':\n      \"The currently selected values for the component. This can be a literal array of strings or a path to an array in the data model('path', e.g. '/hotel/options').\",\n    'properties': {\n      'literalArray': {\n        'items': {\n          'type': 'string',\n        },\n        'type': 'array',\n      },\n      'path': {\n        'type': 'string',\n      },\n    },\n    'type': 'object',\n  },\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/ via scripts/generate-standard-defs.mjs\n\nimport type {ChildRefAnalysisOptions} from '../catalog/reference-map.js';\n\n/**\n * Child reference analysis configuration for A2UI v0.9 and v0.9.1 schemas.\n */\nexport const V09_CHILD_REF_OPTIONS: ChildRefAnalysisOptions = {\n  childRefNames: new Set(['ComponentId', 'Child', 'ChildComponentId']),\n  childListRefNames: new Set(['ChildList', 'TemplateChildList', 'ChildrenItem', 'TemplateItem']),\n};\n\n/**\n * Standard $defs dictionary for A2UI v0.9 and v0.9.1 catalog JSON schemas.\n */\nexport const V09_STANDARD_DEFS: Record<string, unknown> = {\n  'ComponentId': {\n    'type': 'string',\n    'description':\n      'The unique identifier for a component, used for both definitions and references within the same surface.',\n  },\n  'AccessibilityAttributes': {\n    'type': 'object',\n    'description':\n      'Attributes to enhance accessibility when using assistive technologies like screen readers.',\n    'properties': {\n      'label': {\n        '$ref': '#/$defs/DynamicString',\n        'description':\n          \"A short string, typically 1 to 3 words, used by assistive technologies to convey the purpose or intent of an element. For example, an input field might have an accessible label of 'User ID' or a button might be labeled 'Submit'.\",\n      },\n      'description': {\n        '$ref': '#/$defs/DynamicString',\n        'description':\n          \"Additional information provided by assistive technologies about an element such as instructions, format requirements, or result of an action. For example, a mute button might have a label of 'Mute' and a description of 'Silences notifications about this conversation'.\",\n      },\n    },\n  },\n  'ComponentCommon': {\n    'type': 'object',\n    'properties': {\n      'id': {\n        '$ref': '#/$defs/ComponentId',\n      },\n      'accessibility': {\n        '$ref': '#/$defs/AccessibilityAttributes',\n      },\n    },\n    'required': ['id'],\n  },\n  'ChildList': {\n    'oneOf': [\n      {\n        'type': 'array',\n        'items': {\n          '$ref': '#/$defs/ComponentId',\n        },\n        'description': 'A static list of child component IDs.',\n      },\n      {\n        'type': 'object',\n        'description':\n          'A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.',\n        'properties': {\n          'componentId': {\n            '$ref': '#/$defs/ComponentId',\n          },\n          'path': {\n            'type': 'string',\n            'description': 'The path to the list of component property objects in the data model.',\n          },\n        },\n        'required': ['componentId', 'path'],\n        'additionalProperties': false,\n      },\n    ],\n  },\n  'DataBinding': {\n    'type': 'object',\n    'properties': {\n      'path': {\n        'type': 'string',\n        'description': 'A JSON Pointer path to a value in the data model.',\n      },\n    },\n    'required': ['path'],\n    'additionalProperties': false,\n  },\n  'DynamicValue': {\n    'description': 'A value that can be a literal, a path, or a function call returning any type.',\n    'oneOf': [\n      {\n        'type': 'string',\n      },\n      {\n        'type': 'number',\n      },\n      {\n        'type': 'boolean',\n      },\n      {\n        'type': 'array',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'DynamicString': {\n    'description': 'Represents a string',\n    'oneOf': [\n      {\n        'type': 'string',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        'allOf': [\n          {\n            '$ref': '#/$defs/FunctionCall',\n          },\n          {\n            'properties': {\n              'returnType': {\n                'const': 'string',\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n  'DynamicNumber': {\n    'description':\n      'Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.',\n    'oneOf': [\n      {\n        'type': 'number',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        'allOf': [\n          {\n            '$ref': '#/$defs/FunctionCall',\n          },\n          {\n            'properties': {\n              'returnType': {\n                'const': 'number',\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n  'DynamicBoolean': {\n    'description':\n      'A boolean value that can be a literal, a path, or a function call returning a boolean.',\n    'oneOf': [\n      {\n        'type': 'boolean',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        'allOf': [\n          {\n            '$ref': '#/$defs/FunctionCall',\n          },\n          {\n            'properties': {\n              'returnType': {\n                'const': 'boolean',\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n  'DynamicStringList': {\n    'description':\n      'Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.',\n    'oneOf': [\n      {\n        'type': 'array',\n        'items': {\n          'type': 'string',\n        },\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        'allOf': [\n          {\n            '$ref': '#/$defs/FunctionCall',\n          },\n          {\n            'properties': {\n              'returnType': {\n                'const': 'array',\n              },\n            },\n          },\n        ],\n      },\n    ],\n  },\n  'FunctionCall': {\n    'type': 'object',\n    'description': 'Invokes a named function on the client.',\n    'properties': {\n      'call': {\n        'type': 'string',\n        'description': 'The name of the function to call.',\n      },\n      'args': {\n        'type': 'object',\n        'description': 'Arguments passed to the function.',\n        'additionalProperties': {\n          'anyOf': [\n            {\n              '$ref': '#/$defs/DynamicValue',\n            },\n            {\n              'type': 'object',\n              'description': 'A literal object argument (e.g. configuration).',\n            },\n          ],\n        },\n      },\n      'returnType': {\n        'type': 'string',\n        'description': 'The expected return type of the function call.',\n        'enum': ['string', 'number', 'boolean', 'array', 'object', 'any', 'void'],\n        'default': 'boolean',\n      },\n    },\n    'required': ['call'],\n    'oneOf': [\n      {\n        '$ref': 'catalog.json#/$defs/anyFunction',\n      },\n    ],\n  },\n  'CheckRule': {\n    'type': 'object',\n    'description': 'A single validation rule applied to an input component.',\n    'properties': {\n      'condition': {\n        '$ref': '#/$defs/DynamicBoolean',\n      },\n      'message': {\n        'type': 'string',\n        'description': 'The error message to display if the check fails.',\n      },\n    },\n    'required': ['condition', 'message'],\n    'additionalProperties': false,\n  },\n  'Checkable': {\n    'description': 'Properties for components that support client-side checks.',\n    'type': 'object',\n    'properties': {\n      'checks': {\n        'type': 'array',\n        'description':\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        'items': {\n          '$ref': '#/$defs/CheckRule',\n        },\n      },\n    },\n  },\n  'Action': {\n    'description':\n      'Defines an interaction handler that can either trigger a server-side event or execute a local client-side function.',\n    'oneOf': [\n      {\n        'type': 'object',\n        'description': 'Triggers a server-side event.',\n        'properties': {\n          'event': {\n            'type': 'object',\n            'description': 'The event to dispatch to the server.',\n            'properties': {\n              'name': {\n                'type': 'string',\n                'description': 'The name of the action to be dispatched to the server.',\n              },\n              'context': {\n                'type': 'object',\n                'description':\n                  'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n                'additionalProperties': {\n                  '$ref': '#/$defs/DynamicValue',\n                },\n              },\n            },\n            'required': ['name'],\n            'additionalProperties': false,\n          },\n        },\n        'required': ['event'],\n        'additionalProperties': false,\n      },\n      {\n        'type': 'object',\n        'description': 'Executes a local client-side function.',\n        'properties': {\n          'functionCall': {\n            '$ref': '#/$defs/FunctionCall',\n          },\n        },\n        'required': ['functionCall'],\n        'additionalProperties': false,\n      },\n    ],\n  },\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/ via scripts/generate-standard-defs.mjs\n\nimport type {ChildRefAnalysisOptions} from '../catalog/reference-map.js';\n\n/**\n * Child reference analysis configuration for A2UI v1.0 schemas.\n */\nexport const V10_CHILD_REF_OPTIONS: ChildRefAnalysisOptions = {\n  childRefNames: new Set(['ComponentId', 'Child', 'ChildComponentId']),\n  childListRefNames: new Set(['ChildList', 'TemplateChildList', 'ChildrenItem', 'TemplateItem']),\n};\n\n/**\n * Standard $defs dictionary for A2UI v1.0 catalog JSON schemas.\n */\nexport const V10_STANDARD_DEFS: Record<string, unknown> = {\n  'ComponentId': {\n    'type': 'string',\n    'description':\n      'The unique identifier for a component, used for both definitions and references within the same surface.',\n  },\n  'CallId': {\n    'type': 'string',\n    'description': 'The unique identifier for a function call.',\n  },\n  'AccessibilityAttributes': {\n    'type': 'object',\n    'description':\n      'Attributes to enhance accessibility when using assistive technologies like screen readers or model understanding.',\n    'properties': {\n      'label': {\n        '$ref': '#/$defs/DynamicString',\n        'description':\n          \"A short string, typically 1 to 3 words, used by assistive technologies to convey the purpose or intent of an element. For example, an input field might have an accessible label of 'User ID' or a button might be labeled 'Submit'.\",\n      },\n      'description': {\n        '$ref': '#/$defs/DynamicString',\n        'description':\n          \"Additional information provided by assistive technologies about an element such as instructions, format requirements, or result of an action. For example, a mute button might have a label of 'Mute' and a description of 'Silences notifications about this conversation'.\",\n      },\n      'live': {\n        'type': 'string',\n        'enum': ['off', 'polite', 'assertive'],\n        'default': 'off',\n        'description':\n          \"Controls screen reader announcements for dynamic updates (WAI-ARIA aria-live). 'polite' waits for user pause; 'assertive' interrupts immediately for alerts.\",\n      },\n      'hidden': {\n        '$ref': '#/$defs/DynamicBoolean',\n        'description':\n          'Hides the element and its children from assistive technologies when true. Default is false.',\n      },\n    },\n    'additionalProperties': false,\n  },\n  'Extensions': {\n    'type': 'object',\n    'description':\n      \"Optional extension metadata. Keys MUST be Unicode identifiers (UAX #31). Keys starting with 'a2ui_' are reserved for official extensions.\",\n    'patternProperties': {\n      '^[\\\\p{XID_Start}_][\\\\p{XID_Continue}]*$': {},\n    },\n    'additionalProperties': false,\n  },\n  'ComponentCommon': {\n    'type': 'object',\n    'properties': {\n      'id': {\n        '$ref': '#/$defs/ComponentId',\n      },\n      'catalogId': {\n        'type': 'string',\n        'description':\n          'The catalog ID for this component, overriding any surface-level default catalogId.',\n      },\n      'accessibility': {\n        '$ref': '#/$defs/AccessibilityAttributes',\n      },\n      'metadata': {\n        'type': 'object',\n        'description': 'Optional component-level metadata for vendor extensions.',\n        'properties': {\n          'extensions': {\n            '$ref': '#/$defs/Extensions',\n          },\n        },\n        'additionalProperties': false,\n      },\n    },\n    'required': ['id'],\n  },\n  'Child': {\n    '$ref': '#/$defs/ComponentId',\n    'description': 'A reference to a single child component ID.',\n  },\n  'ChildList': {\n    'oneOf': [\n      {\n        'type': 'array',\n        'items': {\n          '$ref': '#/$defs/ComponentId',\n        },\n        'description': 'A static list of child component IDs.',\n      },\n      {\n        'type': 'object',\n        'description':\n          'A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.',\n        'properties': {\n          'componentId': {\n            '$ref': '#/$defs/ComponentId',\n          },\n          'path': {\n            'type': 'string',\n            'description': 'The path to the list of component property objects in the data model.',\n          },\n        },\n        'required': ['componentId', 'path'],\n        'additionalProperties': false,\n      },\n    ],\n  },\n  'DataBinding': {\n    'type': 'object',\n    'properties': {\n      'path': {\n        'type': 'string',\n        'description': 'A JSON Pointer path to a value in the data model.',\n      },\n    },\n    'required': ['path'],\n    'additionalProperties': false,\n  },\n  'DynamicValue': {\n    'description': 'A value that can be a literal, a path, or a function call returning any type.',\n    'oneOf': [\n      {\n        'type': 'string',\n      },\n      {\n        'type': 'number',\n      },\n      {\n        'type': 'boolean',\n      },\n      {\n        'type': 'array',\n      },\n      {\n        'type': 'object',\n        'not': {\n          'anyOf': [\n            {\n              'required': ['path'],\n            },\n            {\n              'required': ['call'],\n            },\n          ],\n        },\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'DynamicString': {\n    'description': 'Represents a string',\n    'oneOf': [\n      {\n        'type': 'string',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'DynamicNumber': {\n    'description':\n      'Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.',\n    'oneOf': [\n      {\n        'type': 'number',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'DynamicBoolean': {\n    'description':\n      'A boolean value that can be a literal, a path, or a function call returning a boolean.',\n    'oneOf': [\n      {\n        'type': 'boolean',\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'DynamicStringList': {\n    'description':\n      'Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.',\n    'oneOf': [\n      {\n        'type': 'array',\n        'items': {\n          'type': 'string',\n        },\n      },\n      {\n        '$ref': '#/$defs/DataBinding',\n      },\n      {\n        '$ref': '#/$defs/FunctionCall',\n      },\n    ],\n  },\n  'FunctionCommon': {\n    'type': 'object',\n    'description':\n      \"Baseline envelope properties common to all function calls. Function-specific argument schemas ('args') are defined individually by each function in the active catalog.\",\n    'properties': {\n      'call': {\n        'type': 'string',\n        'description': 'The name of the function to call.',\n      },\n      'catalogId': {\n        'type': 'string',\n        'description':\n          'The catalog ID for this function, overriding any surface-level default catalogId.',\n      },\n    },\n    'required': ['call'],\n  },\n  'IndexSystemFunction': {\n    'type': 'object',\n    'description':\n      'Returns the 0-based index of the current item when rendering a dynamic list from a template. This function MUST ONLY be available when evaluating template items within a list context.',\n    'returnType': 'number',\n    'properties': {\n      'call': {\n        'const': '@index',\n      },\n      'args': {\n        'type': 'object',\n        'properties': {\n          'offset': {\n            '$ref': '#/$defs/DynamicNumber',\n            'description':\n              'Optional. An offset to add to the 0-based index (e.g., 1 for 1-based indexing). Defaults to 0.',\n            'default': 0,\n          },\n        },\n        'unevaluatedProperties': false,\n      },\n    },\n    'required': ['call'],\n    'unevaluatedProperties': false,\n  },\n  'FunctionCall': {\n    'type': 'object',\n    'description':\n      'Invokes a named function, combining common function properties with the catalog function definition.',\n    'allOf': [\n      {\n        '$ref': '#/$defs/FunctionCommon',\n      },\n      {\n        'oneOf': [\n          {\n            '$ref': 'catalog.json#/$defs/anyFunction',\n          },\n          {\n            '$ref': '#/$defs/IndexSystemFunction',\n          },\n        ],\n      },\n    ],\n    'unevaluatedProperties': false,\n  },\n  'CheckRule': {\n    'type': 'object',\n    'description':\n      'A single validation check rule applied to an input component. The condition function or path evaluates to a structured validation result object.',\n    'properties': {\n      'condition': {\n        'oneOf': [\n          {\n            '$ref': '#/$defs/DataBinding',\n          },\n          {\n            '$ref': '#/$defs/FunctionCall',\n          },\n        ],\n        'description': 'Path or function call evaluating to a structured validation result object.',\n      },\n      'message': {\n        'type': 'string',\n        'description': 'Optional fallback error message.',\n      },\n    },\n    'required': ['condition'],\n    'additionalProperties': false,\n  },\n  'Checkable': {\n    'description': 'Properties for components that support renderer-side checks.',\n    'type': 'object',\n    'properties': {\n      'checks': {\n        'type': 'array',\n        'description':\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        'items': {\n          '$ref': '#/$defs/CheckRule',\n        },\n      },\n    },\n  },\n  'Action': {\n    'description':\n      'Defines an interaction handler that can either trigger an agent-side event or execute a local renderer-side function.',\n    'oneOf': [\n      {\n        'type': 'object',\n        'description': 'Triggers an agent-side event.',\n        'properties': {\n          'event': {\n            'type': 'object',\n            'description': 'The event to dispatch to the agent.',\n            'properties': {\n              'name': {\n                'type': 'string',\n                'description': 'The name of the action to be dispatched to the agent.',\n              },\n              'userMessage': {\n                '$ref': '#/$defs/DynamicString',\n                'description':\n                  'An optional human-readable message describing the action performed by the user, to present in conversation history or user feedback.',\n              },\n              'context': {\n                'type': 'object',\n                'description':\n                  'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n                'additionalProperties': {\n                  '$ref': '#/$defs/DynamicValue',\n                },\n              },\n            },\n            'required': ['name'],\n            'additionalProperties': false,\n          },\n        },\n        'required': ['event'],\n        'additionalProperties': false,\n      },\n      {\n        'type': 'object',\n        'description': 'Executes a renderer or agent-side function.',\n        'properties': {\n          'functionCall': {\n            '$ref': '#/$defs/FunctionCall',\n          },\n        },\n        'required': ['functionCall'],\n        'additionalProperties': false,\n      },\n    ],\n  },\n  'Surface': {\n    'title': 'Surface Container Component',\n    'description':\n      \"The reserved canonical container component representing an A2UI surface. The Surface component is immutable and always has 'child': 'root'.\",\n    'type': 'object',\n    'allowedParents': [],\n    'properties': {\n      'component': {\n        'const': 'Surface',\n      },\n      'child': {\n        'const': 'root',\n      },\n    },\n    'additionalProperties': false,\n  },\n  'FunctionResponse': {\n    'type': 'object',\n    'description':\n      'The return response matching a callAgentFunction or callRendererFunction invocation.',\n    'properties': {\n      'functionCallId': {\n        '$ref': '#/$defs/CallId',\n        'description': 'The unique ID matching the initiating function call.',\n      },\n      'value': {\n        'description': 'The return value of the function.',\n      },\n      'error': {\n        'type': 'object',\n        'description': 'An error object indicating failure of the function execution.',\n        'properties': {\n          'code': {\n            'type': 'string',\n          },\n          'message': {\n            'type': 'string',\n          },\n        },\n        'required': ['code', 'message'],\n        'additionalProperties': false,\n      },\n    },\n    'required': ['functionCallId'],\n    'oneOf': [\n      {\n        'required': ['value'],\n      },\n      {\n        'required': ['error'],\n      },\n    ],\n    'additionalProperties': false,\n  },\n};\n","/*\n * @license\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {zodToJsonSchema} from 'zod-to-json-schema';\nimport {ComponentApi, FunctionApi, CatalogInterface} from './types.js';\nimport {V08_STANDARD_DEFS} from '../v0_8/standard_defs.js';\nimport {V09_STANDARD_DEFS} from '../v0_9/standard_defs.js';\nimport {V10_STANDARD_DEFS} from '../v1_0/standard_defs.js';\nimport {normalizeVersionString, toCanonicalVersion} from '../common/semver.js';\n\nconst STANDARD_DEFS_BY_VERSION: Readonly<Record<string, Record<string, unknown>>> = {\n  '0.8': V08_STANDARD_DEFS,\n  '0.9': V09_STANDARD_DEFS,\n  '0.9.1': V09_STANDARD_DEFS,\n  '1.0': V10_STANDARD_DEFS,\n};\n\n/**\n * Resolves the appropriate standard $defs dictionary based on options or catalog configuration.\n */\nfunction getStandardDefsForCatalog(\n  _catalog: CatalogInterface<ComponentApi, FunctionApi>,\n  options?: GenerateCatalogSchemaOptions,\n): Record<string, unknown> {\n  if (options?.standardDefs) {\n    return options.standardDefs;\n  }\n  if (options?.protocolVersion) {\n    const key =\n      toCanonicalVersion(options.protocolVersion) ??\n      normalizeVersionString(options.protocolVersion);\n    if (key in STANDARD_DEFS_BY_VERSION) {\n      return STANDARD_DEFS_BY_VERSION[key];\n    }\n  }\n  return V09_STANDARD_DEFS;\n}\n\n/**\n * Transforms a schema node with a REF description into a `$ref` definition node.\n */\nfunction transformRefDescriptionNode(obj: Record<string, unknown>): boolean {\n  if (typeof obj.description !== 'string' || !obj.description.startsWith('REF:')) {\n    return false;\n  }\n  const content = obj.description.substring(4);\n  const pipeIndex = content.indexOf('|');\n  const ref = pipeIndex === -1 ? content : content.substring(0, pipeIndex);\n  const desc = pipeIndex === -1 ? '' : content.substring(pipeIndex + 1);\n\n  const savedDefault = obj.default;\n  for (const key of Object.keys(obj)) {\n    delete obj[key];\n  }\n  obj['$ref'] = ref.startsWith('#') ? ref : `#/$defs/${ref.split('/').pop()}`;\n  if (savedDefault !== undefined) {\n    obj['default'] = savedDefault;\n  }\n  if (desc) {\n    obj['description'] = desc;\n  }\n  return true;\n}\n\n/**\n * Normalizes property schema structures like anyOf and additionalProperties.\n */\nfunction cleanSchemaProperties(obj: Record<string, unknown>): void {\n  if (Array.isArray(obj.anyOf)) {\n    obj.oneOf = obj.anyOf;\n    delete obj.anyOf;\n  }\n\n  if (\n    obj.additionalProperties &&\n    typeof obj.additionalProperties === 'object' &&\n    Object.keys(obj.additionalProperties).length === 0\n  ) {\n    obj.additionalProperties = true;\n  }\n\n  if (\n    obj.unevaluatedProperties &&\n    typeof obj.unevaluatedProperties === 'object' &&\n    Object.keys(obj.unevaluatedProperties).length === 0\n  ) {\n    obj.unevaluatedProperties = true;\n  }\n\n  if ('$schema' in obj) {\n    delete obj['$schema'];\n  }\n}\n\n/**\n * Cleans auto-generated Zod schema artifacts and transforms REF markers into explicit `$ref` objects.\n *\n * Removes schema metadata and converts `REF:<url>|<desc>` description markers into `$ref` references.\n *\n * @param node The schema object or array node to sanitize in place.\n * @param visited Set of visited objects to prevent infinite recursion on cyclic structures.\n */\nexport function cleanSchemaNode(node: unknown, visited = new Set<unknown>()): void {\n  if (typeof node !== 'object' || node === null) return;\n  if (visited.has(node)) return;\n  visited.add(node);\n\n  if (Array.isArray(node)) {\n    for (const item of node) {\n      cleanSchemaNode(item, visited);\n    }\n    return;\n  }\n\n  const obj = node as Record<string, unknown>;\n  if (transformRefDescriptionNode(obj)) {\n    return;\n  }\n\n  cleanSchemaProperties(obj);\n\n  for (const key of Object.keys(obj)) {\n    cleanSchemaNode(obj[key], visited);\n  }\n}\n\n/**\n * Configuration options for catalog JSON schema generation.\n */\nexport interface GenerateCatalogSchemaOptions {\n  /** Reference URI to a base component schema envelope (e.g. `common_types.json#/$defs/ComponentCommon`). */\n  componentEnvelopeRef?: string;\n  /** Explicit standard $defs dictionary to use when serializing catalog components and functions. */\n  standardDefs?: Record<string, unknown>;\n  /** Explicit protocol version for standard $defs resolution ('v0.8' | 'v0.9' | 'v0.9.1' | 'v1.0'). */\n  protocolVersion?: 'v0.8' | 'v0.9' | 'v0.9.1' | 'v1.0' | string;\n}\n\nfunction processTheme(\n  catalog: CatalogInterface<ComponentApi, FunctionApi>,\n  defs: Record<string, unknown>,\n): void {\n  if (!catalog.themeSchema) return;\n\n  const themeRaw = zodToJsonSchema(catalog.themeSchema, {\n    target: 'jsonSchema2019-09',\n    $refStrategy: 'none',\n  }) as Record<string, unknown>;\n  cleanSchemaNode(themeRaw);\n\n  if (themeRaw.definitions && typeof themeRaw.definitions === 'object') {\n    Object.assign(defs, themeRaw.definitions);\n    delete themeRaw.definitions;\n  } else if (themeRaw.$defs && typeof themeRaw.$defs === 'object') {\n    Object.assign(defs, themeRaw.$defs);\n    delete themeRaw.$defs;\n  }\n\n  const isV08 = catalog.id.includes('v0_8') || catalog.id.includes('v0.8');\n\n  const themeObj: Record<string, unknown> = {\n    type: 'object',\n    properties: (themeRaw.properties as Record<string, unknown>) || {},\n    ...(Array.isArray(themeRaw.required) && themeRaw.required.length > 0\n      ? {required: themeRaw.required}\n      : {}),\n    ...(isV08\n      ? {}\n      : {\n          additionalProperties:\n            themeRaw.additionalProperties !== undefined ? themeRaw.additionalProperties : true,\n        }),\n  };\n  defs['theme'] = themeObj;\n}\n\n/**\n * Extracts raw Zod properties, required fields, and definitions from a component API schema.\n */\nfunction extractZodComponentSchema(\n  comp: ComponentApi,\n  defs: Record<string, unknown>,\n): {\n  props: Record<string, unknown>;\n  reqList: string[];\n  additionalProps: boolean | Record<string, unknown> | undefined;\n} {\n  if (!comp.schema || typeof comp.schema !== 'object' || !('safeParse' in comp.schema)) {\n    return {props: {}, reqList: [], additionalProps: undefined};\n  }\n  const rawZod = zodToJsonSchema(comp.schema, {\n    target: 'jsonSchema2019-09',\n    $refStrategy: 'none',\n  }) as Record<string, unknown>;\n  cleanSchemaNode(rawZod);\n\n  if (rawZod.definitions && typeof rawZod.definitions === 'object') {\n    Object.assign(defs, rawZod.definitions);\n  } else if (rawZod.$defs && typeof rawZod.$defs === 'object') {\n    Object.assign(defs, rawZod.$defs);\n  }\n\n  const props = (rawZod.properties as Record<string, unknown>) || {};\n  const reqList = Array.isArray(rawZod.required)\n    ? (rawZod.required as string[]).filter(r => r !== 'component' && r !== 'id')\n    : [];\n  const rawExtra = rawZod.unevaluatedProperties ?? rawZod.additionalProperties;\n  const additionalProps =\n    typeof rawExtra === 'boolean' || (typeof rawExtra === 'object' && rawExtra !== null)\n      ? (rawExtra as boolean | Record<string, unknown>)\n      : undefined;\n\n  return {props, reqList, additionalProps};\n}\n\nfunction processSingleComponent(\n  name: string,\n  comp: ComponentApi,\n  defs: Record<string, unknown>,\n  _catalog: CatalogInterface<ComponentApi, FunctionApi>,\n  options?: GenerateCatalogSchemaOptions,\n): Record<string, unknown> {\n  const {props, reqList, additionalProps} = extractZodComponentSchema(comp, defs);\n\n  const {component: _ignoredComp, id: _ignoredId, ...sanitizedProps} = props;\n  const innerProperties = {\n    id: {$ref: '#/$defs/ComponentId'},\n    ...sanitizedProps,\n    component: {const: name},\n  };\n  const innerRequired = ['id', ...reqList, 'component'];\n\n  let compSchemaObj: Record<string, unknown>;\n  if (options?.componentEnvelopeRef) {\n    compSchemaObj = {\n      allOf: [\n        {$ref: options.componentEnvelopeRef},\n        {\n          type: 'object',\n          properties: innerProperties,\n          required: innerRequired,\n        },\n      ],\n      unevaluatedProperties: additionalProps !== undefined ? additionalProps : false,\n    };\n  } else {\n    compSchemaObj = {\n      type: 'object',\n      properties: innerProperties,\n      required: innerRequired,\n      unevaluatedProperties: additionalProps !== undefined ? additionalProps : false,\n    };\n  }\n\n  if (comp.allowedParents && comp.allowedParents.length > 0) {\n    compSchemaObj['allowedParents'] = comp.allowedParents;\n  }\n  if (comp.allowedChildren && comp.allowedChildren.length > 0) {\n    compSchemaObj['allowedChildren'] = comp.allowedChildren;\n  }\n\n  return compSchemaObj;\n}\n\nfunction processComponents(\n  catalog: CatalogInterface<ComponentApi, FunctionApi>,\n  schema: Record<string, unknown>,\n  defs: Record<string, unknown>,\n  options?: GenerateCatalogSchemaOptions,\n): void {\n  if (catalog.components.size === 0) {\n    schema['components'] = {};\n    return;\n  }\n\n  const componentsMap: Record<string, unknown> = {};\n  for (const [name, comp] of catalog.components.entries()) {\n    componentsMap[name] = processSingleComponent(name, comp, defs, catalog, options);\n  }\n\n  schema['components'] = componentsMap;\n\n  defs['anyComponent'] = {\n    oneOf: Array.from(catalog.components.keys()).map(name => ({\n      $ref: `#/components/${name}`,\n    })),\n    discriminator: {\n      propertyName: 'component',\n    },\n  };\n}\n\nfunction processSingleFunction(\n  _name: string,\n  fn: FunctionApi,\n  defs: Record<string, unknown>,\n): Record<string, unknown> {\n  let paramSchemaObj: Record<string, unknown>;\n  if (fn.schema && typeof fn.schema === 'object' && 'safeParse' in fn.schema) {\n    const rawZod = zodToJsonSchema(fn.schema, {\n      target: 'jsonSchema2019-09',\n      $refStrategy: 'none',\n    }) as Record<string, unknown>;\n    cleanSchemaNode(rawZod);\n\n    if (rawZod.definitions && typeof rawZod.definitions === 'object') {\n      Object.assign(defs, rawZod.definitions);\n      delete rawZod.definitions;\n    } else if (rawZod.$defs && typeof rawZod.$defs === 'object') {\n      Object.assign(defs, rawZod.$defs);\n      delete rawZod.$defs;\n    }\n\n    paramSchemaObj = rawZod;\n  } else {\n    paramSchemaObj = {type: 'object', properties: {}};\n  }\n\n  if (fn.description && paramSchemaObj.description === undefined) {\n    paramSchemaObj.description = fn.description;\n  }\n\n  if (paramSchemaObj.type === 'object') {\n    const rawExtra = paramSchemaObj.unevaluatedProperties ?? paramSchemaObj.additionalProperties;\n    const additionalProps =\n      typeof rawExtra === 'boolean' || (typeof rawExtra === 'object' && rawExtra !== null)\n        ? (rawExtra as boolean | Record<string, unknown>)\n        : undefined;\n\n    if (paramSchemaObj.additionalProperties !== undefined) {\n      delete paramSchemaObj.additionalProperties;\n    }\n    paramSchemaObj.unevaluatedProperties = additionalProps !== undefined ? additionalProps : false;\n  }\n\n  return paramSchemaObj;\n}\n\nfunction processFunctions(\n  catalog: CatalogInterface<ComponentApi, FunctionApi>,\n  schema: Record<string, unknown>,\n  defs: Record<string, unknown>,\n): void {\n  if (catalog.functions.size === 0) return;\n\n  const functionsMap: Record<string, unknown> = {};\n  for (const [name, fn] of catalog.functions.entries()) {\n    functionsMap[name] = processSingleFunction(name, fn, defs);\n  }\n\n  schema['functions'] = functionsMap;\n\n  defs['anyFunction'] = {\n    oneOf: Array.from(catalog.functions.keys()).map(name => ({\n      $ref: `#/functions/${name}`,\n    })),\n  };\n}\n\nfunction collectReferencedDefs(\n  node: unknown,\n  referenced: Set<string>,\n  visited = new Set<unknown>(),\n): void {\n  if (typeof node !== 'object' || node === null) return;\n  if (visited.has(node)) return;\n  visited.add(node);\n\n  if (typeof (node as Record<string, unknown>)['$ref'] === 'string') {\n    const ref = (node as Record<string, unknown>)['$ref'] as string;\n    if (ref.startsWith('#/$defs/')) {\n      referenced.add(ref.substring('#/$defs/'.length));\n    }\n  }\n\n  if (Array.isArray(node)) {\n    for (const item of node) {\n      collectReferencedDefs(item, referenced, visited);\n    }\n  } else {\n    for (const val of Object.values(node as Record<string, unknown>)) {\n      collectReferencedDefs(val, referenced, visited);\n    }\n  }\n}\n\n/**\n * Reconstructs a specification-compliant A2UI catalog JSON Schema document from a Catalog instance.\n *\n * Converts component and function Zod schemas into standardized JSON Schema definitions,\n * merging sub-definitions, resolving common type references, and building union schemas.\n *\n * @param catalog The catalog instance to serialize.\n * @param options Optional configuration options such as component envelope wrapping.\n * @returns Specification-compliant A2UI Catalog JSON Schema object.\n */\nexport function generateCatalogSchema<\n  T extends ComponentApi = ComponentApi,\n  F extends FunctionApi = FunctionApi,\n>(\n  catalog: CatalogInterface<T, F>,\n  options?: GenerateCatalogSchemaOptions,\n): Record<string, unknown> {\n  const schema: Record<string, unknown> = {\n    $schema: 'https://json-schema.org/draft/2020-12/schema',\n    catalogId: catalog.id,\n  };\n\n  if (catalog.instructions) {\n    schema['instructions'] = catalog.instructions;\n  }\n\n  const defs: Record<string, unknown> = {};\n\n  processTheme(catalog, defs);\n  processComponents(catalog, schema, defs, options);\n  processFunctions(catalog, schema, defs);\n\n  const standardDefs = getStandardDefsForCatalog(catalog, options);\n\n  // Fixed-point iteration to discover all transitive $defs references\n  let defsCountBefore: number;\n  do {\n    defsCountBefore = Object.keys(defs).length;\n    const referenced = new Set<string>();\n    collectReferencedDefs(schema, referenced);\n    collectReferencedDefs(defs, referenced);\n\n    if (\n      referenced.has('DynamicString') ||\n      referenced.has('DynamicNumber') ||\n      referenced.has('DynamicBoolean') ||\n      referenced.has('DynamicValue')\n    ) {\n      referenced.add('DataBinding');\n      referenced.add('FunctionCall');\n    }\n\n    for (const refName of referenced) {\n      if (refName in standardDefs && !(refName in defs)) {\n        defs[refName] = standardDefs[refName];\n      }\n    }\n  } while (Object.keys(defs).length > defsCountBefore);\n\n  if (Object.keys(defs).length > 0) {\n    schema['$defs'] = defs;\n  }\n\n  return schema;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {childRefKindOf} from '../types/child-ref-helpers.js';\nimport type {Catalog, ComponentApi} from './types.js';\n\n/**\n * Child reference properties for a single component type.\n */\nexport interface ComponentChildRefs {\n  /** Property names holding single child component references. */\n  readonly singleRefs: ReadonlySet<string>;\n  /** Property names holding child list references or dynamic templates. */\n  readonly listRefs: ReadonlySet<string>;\n  /**\n   * Mapping of list property names to item sub-keys that hold child references.\n   *\n   * Used for list properties whose items are structured objects rather than\n   * plain string component IDs. Keys are property names that also appear in\n   * {@link listRefs}. A property is absent when its items are plain references\n   * rather than objects, or when the schema declared no child-bearing sub-key.\n   * Consumers treat an absent entry as \"inspect every sub-key\", preserving\n   * fallback behavior.\n   */\n  readonly nestedRefs?: Readonly<Record<string, ReadonlySet<string>>>;\n}\n\n/** Map of component type names to child reference properties. */\nexport type ComponentRefMap = Record<string, ComponentChildRefs>;\n\n/**\n * Result of checking whether a schema represents a component child reference or child list.\n */\nexport interface ChildRefAnalysis {\n  /** Whether the schema represents a single child ComponentId reference. */\n  isChild: boolean;\n  /** Whether the schema represents a list of child references or a dynamic child template (ChildList). */\n  isChildList: boolean;\n}\n\n/**\n * Options for configuring child reference analysis.\n */\nexport interface ChildRefAnalysisOptions {\n  /** Set of definition names recognized as single child references. */\n  childRefNames: ReadonlySet<string>;\n  /** Set of definition names recognized as child list references. */\n  childListRefNames: ReadonlySet<string>;\n}\n\n/**\n * Extracts the target definition name from a JSON Schema `$ref` pointer or URI.\n *\n * Examples:\n * - `https://a2ui.org/specification/v1_0/common_types.json#/$defs/ChildList` -> `ChildList`\n * - `common_types.json#/definitions/ComponentId` -> `ComponentId`\n * - `#/definitions/Child` -> `Child`\n *\n * @param ref The JSON Schema reference string or URI.\n * @returns Target definition name.\n */\nexport function extractRefDefName(ref: string): string {\n  if (!ref) return '';\n  const hashIdx = ref.lastIndexOf('#');\n  const target = hashIdx !== -1 ? ref.slice(hashIdx + 1) : ref;\n  const segments = target.split('/').filter(Boolean);\n  return segments.pop() ?? '';\n}\n\nfunction unwrapNextZodLayer(current: any, visited?: Set<any>): any {\n  if (!current?._def) return null;\n  if (visited) {\n    if (visited.has(current)) return null;\n    visited.add(current);\n  }\n  const typeName = current._def.typeName;\n  switch (typeName) {\n    case 'ZodOptional':\n    case 'ZodNullable':\n    case 'ZodDefault':\n    case 'ZodReadonly':\n      return current._def.innerType;\n    case 'ZodBranded':\n      return current._def.type;\n    case 'ZodEffects':\n      return current._def.schema;\n    case 'ZodLazy':\n      return current._def.getter();\n    default:\n      return null;\n  }\n}\n\nfunction getDescriptions(type: any): string[] {\n  const descriptions: string[] = [];\n  const visited = new Set<any>();\n  let current = type;\n  while (current) {\n    if (current.description) descriptions.push(current.description);\n    if (current._def?.description) descriptions.push(current._def.description);\n    const next = unwrapNextZodLayer(current, visited);\n    if (!next) break;\n    current = next;\n  }\n  return descriptions;\n}\n\nfunction unwrapZodType(type: any): any {\n  const visited = new Set<any>();\n  let current = type;\n  while (current) {\n    const next = unwrapNextZodLayer(current, visited);\n    if (!next) break;\n    current = next;\n  }\n  return current;\n}\n\nfunction checkDirectJsonRef(\n  ref: string,\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis | null {\n  if (!ref) return null;\n  const defName = extractRefDefName(ref);\n  const childListNames = options.childListRefNames;\n  const childNames = options.childRefNames;\n\n  if (childListNames.has(defName)) {\n    return {isChild: false, isChildList: true};\n  }\n  if (childNames.has(defName)) {\n    return {isChild: true, isChildList: false};\n  }\n  return null;\n}\n\nfunction checkCombinerList(\n  list: unknown[],\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis | null {\n  let hasChild = false;\n  for (const sub of list) {\n    if (typeof sub !== 'object' || sub === null) continue;\n    const subRes = checkJsonSchemaRef(sub as Record<string, any>, options);\n    if (subRes.isChildList) return {isChild: false, isChildList: true};\n    if (subRes.isChild) hasChild = true;\n  }\n  return hasChild ? {isChild: true, isChildList: false} : null;\n}\n\nfunction checkCombinerRefs(\n  schema: Record<string, any>,\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis | null {\n  let hasChild = false;\n  for (const combiner of ['oneOf', 'anyOf', 'allOf'] as const) {\n    const list = schema[combiner];\n    if (!Array.isArray(list)) continue;\n    const res = checkCombinerList(list, options);\n    if (res?.isChildList) return res;\n    if (res?.isChild) hasChild = true;\n  }\n  return hasChild ? {isChild: true, isChildList: false} : null;\n}\n\nfunction checkJsonSchemaRef(\n  schema: Record<string, any>,\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis {\n  const ref = typeof schema.$ref === 'string' ? schema.$ref : '';\n  const directMatch = checkDirectJsonRef(ref, options);\n  if (directMatch) return directMatch;\n\n  if (schema.type === 'array' && schema.items) {\n    const itemsRes = checkJsonSchemaRef(schema.items, options);\n    if (itemsRes.isChild || itemsRes.isChildList) {\n      return {isChild: false, isChildList: true};\n    }\n  }\n\n  const combinerMatch = checkCombinerRefs(schema, options);\n  if (combinerMatch) return combinerMatch;\n\n  if (\n    schema.type === 'object' &&\n    schema.properties &&\n    (('componentId' in schema.properties &&\n      ('path' in schema.properties || 'dataBinding' in schema.properties)) ||\n      'explicitList' in schema.properties ||\n      'template' in schema.properties)\n  ) {\n    return {isChild: false, isChildList: true};\n  }\n\n  return {isChild: false, isChildList: false};\n}\n\nfunction isTemplateShape(unwrappedOpt: any): boolean {\n  if (\n    unwrappedOpt?._def?.typeName === 'ZodObject' &&\n    typeof unwrappedOpt._def.shape === 'function'\n  ) {\n    const shape = unwrappedOpt._def.shape();\n    return Boolean(\n      (shape.componentId && (shape.path || shape.dataBinding)) ||\n      shape.explicitList ||\n      shape.template,\n    );\n  }\n  return false;\n}\n\nfunction isArrayOfChild(unwrappedOpt: any, options: ChildRefAnalysisOptions): boolean {\n  if (unwrappedOpt?._def?.typeName === 'ZodArray') {\n    const elem = unwrapZodType(unwrappedOpt._def.type);\n    return analyzeChildRefSchema(elem, options).isChild;\n  }\n  return false;\n}\n\nfunction analyzeUnionOptions(\n  options: any[],\n  analysisOptions: ChildRefAnalysisOptions,\n): ChildRefAnalysis {\n  let hasTemplate = false;\n  let hasArrayOfChild = false;\n  let hasChildRef = false;\n\n  for (const opt of options) {\n    const unwrappedOpt = unwrapZodType(opt);\n    if (isTemplateShape(unwrappedOpt)) {\n      hasTemplate = true;\n    }\n    if (isArrayOfChild(unwrappedOpt, analysisOptions)) {\n      hasArrayOfChild = true;\n    }\n\n    const optRes = analyzeChildRefSchema(unwrappedOpt, analysisOptions);\n    if (optRes.isChildList) {\n      return {isChild: false, isChildList: true};\n    }\n    if (optRes.isChild) {\n      hasChildRef = true;\n    }\n  }\n\n  if (hasTemplate || hasArrayOfChild) {\n    return {isChild: false, isChildList: true};\n  }\n  if (hasChildRef) {\n    return {isChild: true, isChildList: false};\n  }\n  return {isChild: false, isChildList: false};\n}\n\nfunction isChildListDescription(desc: string, childListNames: ReadonlySet<string>): boolean {\n  if (!desc) return false;\n  if (desc.startsWith('REF:')) {\n    const refTarget = extractRefDefName(desc.substring(4).split('|')[0]);\n    if (childListNames.has(refTarget)) return true;\n  }\n  const refTarget = extractRefDefName(desc.split('|')[0]);\n  if (refTarget && childListNames.has(refTarget)) {\n    return true;\n  }\n  const trimmed = desc.trim();\n  if (childListNames.has(trimmed)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isChildDescription(desc: string, childNames: ReadonlySet<string>): boolean {\n  if (!desc) return false;\n  if (desc.startsWith('REF:')) {\n    const refTarget = extractRefDefName(desc.substring(4).split('|')[0]);\n    if (childNames.has(refTarget)) return true;\n  }\n  const refTarget = extractRefDefName(desc.split('|')[0]);\n  if (refTarget && childNames.has(refTarget)) {\n    return true;\n  }\n  const trimmed = desc.trim();\n  if (childNames.has(trimmed)) {\n    return true;\n  }\n  return false;\n}\n\nfunction checkDescriptionChildRef(\n  descriptions: string[],\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis | null {\n  const childListNames = options.childListRefNames;\n  const childNames = options.childRefNames;\n\n  for (const desc of descriptions) {\n    if (isChildListDescription(desc, childListNames)) {\n      return {isChild: false, isChildList: true};\n    }\n    if (isChildDescription(desc, childNames)) {\n      return {isChild: true, isChildList: false};\n    }\n  }\n  return null;\n}\n\nfunction analyzeZodArray(elem: any, options: ChildRefAnalysisOptions): ChildRefAnalysis {\n  const elemRes = analyzeChildRefSchema(elem, options);\n  if (elemRes.isChild || elemRes.isChildList) {\n    return {isChild: false, isChildList: true};\n  }\n  return {isChild: false, isChildList: false};\n}\n\n/**\n * Analyzes a property schema (Zod schema or JSON Schema definition) to determine\n * if it represents a single component child reference (ComponentId) or child list (ChildList).\n *\n * Inspects explicit metadata stamps (`markChildRef`), $ref pointer targets (e.g.\n * `common_types.json#/$defs/ChildList`, `common_types.json#/$defs/ComponentId`,\n * `common_types.json#/$defs/Child`), schema descriptions with REF: prefixes,\n * structural unions (`{ componentId, path }` templates), and arrays of component IDs.\n *\n * @param schema Zod schema, JSON Schema object, or property schema definition.\n * @param options Required configuration specifying recognized child definition names.\n * @returns ChildRefAnalysis containing `isChild` and `isChildList` booleans.\n */\nexport function analyzeChildRefSchema(\n  schema: unknown,\n  options: ChildRefAnalysisOptions,\n): ChildRefAnalysis {\n  if (!schema || typeof schema !== 'object') {\n    return {isChild: false, isChildList: false};\n  }\n\n  const directKind = childRefKindOf(schema as any);\n  if (directKind === 'component-id') {\n    return {isChild: true, isChildList: false};\n  }\n  if (directKind === 'child-list') {\n    return {isChild: false, isChildList: true};\n  }\n\n  const descMatch = checkDescriptionChildRef(getDescriptions(schema), options);\n  if (descMatch) return descMatch;\n\n  const current = unwrapZodType(schema);\n  if (!current?._def) {\n    return checkJsonSchemaRef(schema as Record<string, any>, options);\n  }\n\n  const unwrappedKind = childRefKindOf(current);\n  if (unwrappedKind === 'component-id') {\n    return {isChild: true, isChildList: false};\n  }\n  if (unwrappedKind === 'child-list') {\n    return {isChild: false, isChildList: true};\n  }\n\n  const typeName = current._def.typeName;\n\n  if (typeName === 'ZodArray') {\n    const elem = unwrapZodType(current._def.type);\n    return analyzeZodArray(elem, options);\n  }\n\n  if (typeName === 'ZodUnion') {\n    const unionOptions = (current._def.options as any[]) ?? [];\n    return analyzeUnionOptions(unionOptions, options);\n  }\n\n  if (typeName === 'ZodObject' && typeof current._def.shape === 'function') {\n    const shape = current._def.shape();\n    if (\n      (shape.componentId && (shape.path || shape.dataBinding)) ||\n      shape.explicitList ||\n      shape.template\n    ) {\n      return {isChild: false, isChildList: true};\n    }\n  }\n\n  return {isChild: false, isChildList: false};\n}\n\n/**\n * Returns whether the schema represents a single child ComponentId reference.\n *\n * @param schema The schema to evaluate.\n * @param options The child reference analysis options.\n * @returns Whether the schema is a single child reference.\n */\nexport function isChildSchema(schema: unknown, options: ChildRefAnalysisOptions): boolean {\n  return analyzeChildRefSchema(schema, options).isChild;\n}\n\n/**\n * Returns whether the schema represents a child list or dynamic child template (ChildList).\n *\n * @param schema The schema to evaluate.\n * @param options The child reference analysis options.\n * @returns Whether the schema is a child list reference.\n */\nexport function isChildListSchema(schema: unknown, options: ChildRefAnalysisOptions): boolean {\n  return analyzeChildRefSchema(schema, options).isChildList;\n}\n\n/**\n * Returns whether the schema represents either a single child or a child list.\n *\n * @param schema The schema to evaluate.\n * @param options The child reference analysis options.\n * @returns Whether the schema is any child or child list reference.\n */\nexport function isChildOrChildListSchema(\n  schema: unknown,\n  options: ChildRefAnalysisOptions,\n): boolean {\n  const res = analyzeChildRefSchema(schema, options);\n  return res.isChild || res.isChildList;\n}\n\n/** Mutable collector threaded through schema inspection. */\ninterface ChildRefAccumulator {\n  readonly singleRefs: Set<string>;\n  readonly listRefs: Set<string>;\n  readonly nestedRefs: Record<string, Set<string>>;\n}\n\nfunction addNestedRef(acc: ChildRefAccumulator, key: string, subKey: string): void {\n  const existing = acc.nestedRefs[key];\n  if (existing) {\n    existing.add(subKey);\n    return;\n  }\n  acc.nestedRefs[key] = new Set([subKey]);\n}\n\nfunction inspectShapeField(\n  key: string,\n  fieldSchema: unknown,\n  acc: ChildRefAccumulator,\n  options: ChildRefAnalysisOptions,\n): void {\n  const res = analyzeChildRefSchema(fieldSchema, options);\n  if (res.isChildList) {\n    acc.listRefs.add(key);\n    return;\n  }\n  if (res.isChild) {\n    acc.singleRefs.add(key);\n    return;\n  }\n\n  const inner = unwrapZodType(fieldSchema);\n  if (inner?._def?.typeName !== 'ZodArray') return;\n\n  const elem = unwrapZodType(inner._def.type);\n  if (elem?._def?.typeName !== 'ZodObject' || typeof elem._def.shape !== 'function') return;\n\n  // An array of structured objects. Record which sub-keys hold a child so that\n  // sibling properties are not mistaken for references during traversal.\n  const elemShape = elem._def.shape();\n  for (const [subKey, subSchema] of Object.entries(elemShape)) {\n    const subRes = analyzeChildRefSchema(subSchema, options);\n    if (subRes.isChild || subRes.isChildList) {\n      acc.listRefs.add(key);\n      addNestedRef(acc, key, subKey);\n    }\n  }\n}\n\n/**\n * Returns the `properties` of an array property's item schema, or null when the\n * schema is not an array of inline structured objects.\n */\nfunction rawArrayItemProperties(propSchema: unknown): Record<string, unknown> | null {\n  if (typeof propSchema !== 'object' || propSchema === null) return null;\n\n  const schema = propSchema as Record<string, unknown>;\n  if (schema['type'] !== 'array' && !('items' in schema)) return null;\n\n  const items = schema['items'];\n  if (typeof items !== 'object' || items === null) return null;\n\n  const itemProps = (items as Record<string, unknown>)['properties'];\n  if (typeof itemProps !== 'object' || itemProps === null) return null;\n\n  return itemProps as Record<string, unknown>;\n}\n\nfunction inspectRawProperties(\n  properties: Record<string, unknown>,\n  acc: ChildRefAccumulator,\n  options: ChildRefAnalysisOptions,\n): void {\n  for (const [key, propSchema] of Object.entries(properties)) {\n    const res = analyzeChildRefSchema(propSchema, options);\n    if (res.isChildList) {\n      acc.listRefs.add(key);\n      continue;\n    }\n    if (res.isChild) {\n      acc.singleRefs.add(key);\n      continue;\n    }\n\n    const itemProps = rawArrayItemProperties(propSchema);\n    if (!itemProps) continue;\n\n    for (const [subKey, subSchema] of Object.entries(itemProps)) {\n      const subRes = analyzeChildRefSchema(subSchema, options);\n      if (subRes.isChild || subRes.isChildList) {\n        acc.listRefs.add(key);\n        addNestedRef(acc, key, subKey);\n      }\n    }\n  }\n}\n\nfunction inspectComponentSchema(\n  schema: unknown,\n  acc: ChildRefAccumulator,\n  options: ChildRefAnalysisOptions,\n): void {\n  if (!schema) return;\n\n  const current = unwrapZodType(schema);\n  if (current?._def?.typeName === 'ZodObject' && typeof current._def.shape === 'function') {\n    const shape = current._def.shape();\n    for (const [key, fieldSchema] of Object.entries(shape)) {\n      inspectShapeField(key, fieldSchema, acc, options);\n    }\n    return;\n  }\n\n  if (typeof schema === 'object' && schema !== null && 'properties' in schema) {\n    const rawProps = (schema as {properties?: Record<string, unknown>}).properties;\n    if (typeof rawProps === 'object' && rawProps !== null) {\n      inspectRawProperties(rawProps, acc, options);\n    }\n  }\n}\n\n/**\n * Builds a ComponentRefMap dynamically by inspecting component Zod schemas.\n *\n * @param catalogOrComponents Catalog instance, array of ComponentApi objects, or Map of ComponentApis.\n * @param options Required configuration specifying recognized child definition names.\n * @returns ComponentRefMap containing single, list, and nested reference properties.\n */\nexport function buildComponentRefMap(\n  catalogOrComponents: Catalog<any, any> | ComponentApi[] | Map<string, ComponentApi>,\n  options: ChildRefAnalysisOptions,\n): ComponentRefMap {\n  const refMap: ComponentRefMap = {};\n  const componentApis: ComponentApi[] =\n    typeof (catalogOrComponents as any)?.components?.values === 'function'\n      ? Array.from((catalogOrComponents as any).components.values())\n      : Array.isArray(catalogOrComponents)\n        ? catalogOrComponents\n        : Array.from((catalogOrComponents as Map<string, ComponentApi>).values());\n\n  for (const compApi of componentApis) {\n    const acc: ChildRefAccumulator = {\n      singleRefs: new Set<string>(),\n      listRefs: new Set<string>(),\n      nestedRefs: {},\n    };\n\n    inspectComponentSchema(compApi.schema, acc, options);\n\n    refMap[compApi.name] = {\n      singleRefs: acc.singleRefs,\n      listRefs: acc.listRefs,\n      nestedRefs: acc.nestedRefs,\n    };\n  }\n\n  return refMap;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport type {ProtocolVersion} from '../processing/adapters/base.js';\nimport {DataContext} from '../resolution/data-context.js';\nimport {Signal} from '../reactivity/signals.js';\nimport {A2uiCatalogError, A2uiExpressionError} from '../errors.js';\nimport {loadCatalogFromSchema} from './schema_loader.js';\nimport {generateCatalogSchema} from './schema_generator.js';\nimport {\n  buildComponentRefMap,\n  type ComponentChildRefs,\n  type ComponentRefMap,\n} from './reference-map.js';\nimport {V09_CHILD_REF_OPTIONS} from '../v0_9/standard_defs.js';\n\nexport type {ComponentChildRefs};\n\n/**\n * Registry mapping A2UI function return type identifiers to their TypeScript runtime types.\n *\n * Core defines version-agnostic primitives. Specific protocol versions (such as v1.0)\n * or custom catalogs can augment this interface using TypeScript module declaration merging.\n */\nexport interface A2uiReturnTypeMap {\n  string: string;\n  number: number;\n  boolean: boolean;\n  array: unknown[];\n  object: Record<string, unknown>;\n  any: unknown;\n  void: void;\n}\n\n/**\n * Union of valid A2UI function return type identifiers.\n */\nexport type A2uiReturnType = keyof A2uiReturnTypeMap | (string & {});\n\n/**\n * Infers the TypeScript runtime return type for a given A2UI return type identifier.\n */\nexport type InferA2uiReturnType<T extends string> = T extends keyof A2uiReturnTypeMap\n  ? A2uiReturnTypeMap[T]\n  : unknown;\n\n/**\n * Specification and schema for an A2UI function API.\n */\nexport interface FunctionApi {\n  /** Name of the function as it appears in A2UI JSON payloads. */\n  readonly name: string;\n  /** Return type identifier for the function. */\n  readonly returnType: A2uiReturnType;\n  /** Zod schema validating the function's input arguments. */\n  readonly schema: z.ZodTypeAny;\n  /** Allowed caller contexts for the function. */\n  readonly allowedCallers?: 'rendererOnly' | 'agentOnly' | 'rendererOrAgent';\n  /** Whether the function requires explicit user interaction before execution. */\n  readonly requiresUserActivation?: boolean;\n  /** Human-readable description of the function's purpose. */\n  readonly description?: string;\n}\n\n/**\n * A function implementation that can be registered with a catalog or evaluator.\n */\nexport interface FunctionImplementation extends FunctionApi {\n  /**\n   * Executes the function logic with the provided arguments and context.\n   *\n   * @param args Validated input arguments for the function.\n   * @param context Data context for expression and state resolution.\n   * @param abortSignal Optional abort signal to cancel async execution.\n   * @returns The resolved function output value or reactive Signal.\n   */\n  execute(\n    args: Record<string, unknown>,\n    context: DataContext,\n    abortSignal?: AbortSignal,\n  ): unknown | Signal<unknown>;\n}\n\n/**\n * Recursively unwraps dynamic wire AST nodes into their evaluated runtime values.\n */\nexport type ResolvedDynamic<T> = T extends {path: string} | {call: string}\n  ? never\n  : T extends (infer U)[]\n    ? ResolvedDynamic<U>[]\n    : T extends object\n      ? {[K in keyof T]: ResolvedDynamic<T[K]>}\n      : T;\n\n/**\n * Extracts and resolves execution-time argument types from a function's Zod validation schema.\n */\nexport type ResolvedFunctionArgs<Schema extends z.ZodTypeAny> = ResolvedDynamic<z.infer<Schema>>;\n\n/**\n * Creates a typed FunctionImplementation from an API definition and an execution callback.\n *\n * @param api The function API definition containing name, schema, and metadata.\n * @param execute The execution handler callback.\n * @returns A complete FunctionImplementation object.\n */\nexport function createFunctionImplementation<\n  Schema extends z.ZodTypeAny = z.ZodTypeAny,\n  TReturn extends A2uiReturnType = A2uiReturnType,\n>(\n  api: {\n    name: string;\n    returnType: TReturn;\n    schema: Schema;\n    allowedCallers?: 'rendererOnly' | 'agentOnly' | 'rendererOrAgent';\n    requiresUserActivation?: boolean;\n    description?: string;\n  },\n  execute: (\n    args: ResolvedFunctionArgs<Schema>,\n    context: DataContext,\n    abortSignal?: AbortSignal,\n  ) => InferA2uiReturnType<TReturn> | Signal<InferA2uiReturnType<TReturn>>,\n): FunctionImplementation {\n  return {\n    name: api.name,\n    returnType: api.returnType,\n    schema: api.schema,\n    allowedCallers: api.allowedCallers,\n    requiresUserActivation: api.requiresUserActivation,\n    description: api.description,\n    execute: execute as (\n      args: Record<string, unknown>,\n      ctx: DataContext,\n      ab?: AbortSignal,\n    ) => unknown,\n  };\n}\n\nimport {FunctionInvoker} from './function_invoker.js';\n\n/**\n * Contract for a component's capabilities and properties, independent of rendering implementation.\n *\n * @template Schema The Zod schema type for the component's properties.\n */\nexport interface ComponentApi<Schema extends z.ZodTypeAny = z.ZodTypeAny> {\n  /** Name of the component as it appears in A2UI JSON (e.g., 'Button'). */\n  name: string;\n\n  /**\n   * Zod schema describing the properties of this component.\n   *\n   * Must include catalog-specific common properties (e.g. 'weight', 'accessibility')\n   * and must omit envelope fields like 'component' or 'id'.\n   */\n  readonly schema: Schema;\n\n  /** Optional allowed parent component types (e.g. ['Column', 'Surface']). */\n  readonly allowedParents?: string[];\n\n  /** Optional allowed child component types (e.g. ['Text', 'Button']). */\n  readonly allowedChildren?: string[];\n}\n\n/**\n * Infers the schema type from a ComponentApi.\n *\n * Uses `z.infer` on the `schema` property of a `ComponentApi` object to access\n * component properties with type safety.\n */\nexport type InferredComponentApiSchemaType<Api extends ComponentApi> = z.infer<Api['schema']>;\n\n/**\n * Public structural interface for `Catalog`.\n *\n * Declares all publicly accessed properties of `Catalog` to prevent property\n * renaming during compilation.\n */\nexport declare interface CatalogInterface<\n  T extends ComponentApi = ComponentApi,\n  F extends FunctionApi = FunctionImplementation,\n> {\n  /** Unique identifier for the catalog (usually a URI). */\n  readonly id: string;\n  /** Protocol specification version supported by this catalog. */\n  readonly protocolVersion: ProtocolVersion | string;\n  /** Map of registered component definitions. */\n  readonly components: ReadonlyMap<string, T>;\n  /** Map of registered function definitions. */\n  readonly functions: ReadonlyMap<string, F>;\n  /** Schema for theme parameters used by this catalog. */\n  readonly themeSchema?: z.ZodTypeAny;\n  /** System instructions or usage guidelines for this catalog. */\n  readonly instructions?: string;\n  /** Invoker callback that delegates to this catalog's registered functions. */\n  readonly invoker: FunctionInvoker;\n  /** Dynamically reconstructed standard A2UI catalog JSON Schema document. */\n  readonly catalogSchema: Record<string, unknown>;\n  /** Component reference map for child reference extraction and topology validation. */\n  readonly componentRefMap: ComponentRefMap;\n}\n\n/**\n * Collection of available components and functions.\n *\n * The `F` parameter distinguishes catalogs that carry executable function\n * implementations (`FunctionImplementation`, the default and the only kind a\n * renderer should hold) from schema-only catalogs (`FunctionApi`), whose\n * functions are signatures loaded from catalog JSON with no code attached.\n * Consumers that need to execute functions, such as `NodeResolver`, constrain\n * `F` to `FunctionImplementation` so a schema-only catalog is rejected at\n * compile time rather than resolving values to `undefined` at runtime.\n */\nexport class Catalog<\n  T extends ComponentApi,\n  F extends FunctionApi = FunctionImplementation,\n> implements CatalogInterface<T, F> {\n  /** Unique identifier for the catalog. */\n  readonly id: string;\n\n  /**\n   * Protocol specification version supported by this catalog.\n   */\n  readonly protocolVersion: ProtocolVersion | string;\n\n  /**\n   * Map of available components keyed by component name.\n   *\n   * Readonly to encourage immutable extension patterns.\n   */\n  readonly components: ReadonlyMap<string, T>;\n\n  /**\n   * Map of functions provided by this catalog.\n   */\n  readonly functions: ReadonlyMap<string, F>;\n\n  /**\n   * Schema for theme parameters used by this catalog.\n   */\n  readonly themeSchema?: z.ZodTypeAny;\n\n  /**\n   * Optional system instructions or usage guidelines for this catalog.\n   */\n  readonly instructions?: string;\n\n  /**\n   * Function invoker callback that delegates to this catalog's registered functions.\n   */\n  readonly invoker: FunctionInvoker;\n\n  private cachedCatalogSchema?: Record<string, unknown>;\n\n  /**\n   * Dynamically reconstructs and memoizes the unified standard A2UI catalog JSON Schema document.\n   */\n  get catalogSchema(): Record<string, unknown> {\n    if (!this.cachedCatalogSchema) {\n      this.cachedCatalogSchema = generateCatalogSchema(this);\n    }\n    return this.cachedCatalogSchema;\n  }\n\n  private _componentRefMap?: ComponentRefMap;\n\n  /**\n   * Lazily computed component reference map for child reference extraction and topology validation.\n   */\n  get componentRefMap(): ComponentRefMap {\n    if (!this._componentRefMap) {\n      this._componentRefMap = buildComponentRefMap(this, V09_CHILD_REF_OPTIONS);\n    }\n    return this._componentRefMap;\n  }\n\n  /**\n   * Initializes a new `Catalog`.\n   *\n   * @param id Unique identifier for the catalog, usually a URI.\n   * @param protocolVersion Protocol specification version this catalog targets.\n   * @param components Component definitions to register.\n   * @param functions Function definitions to register.\n   * @param themeSchema Optional schema for this catalog's theme parameters.\n   * @param instructions Optional system instructions or usage guidelines.\n   * @throws {A2uiCatalogError} If `protocolVersion` is empty or not provided.\n   */\n  constructor(\n    id: string,\n    protocolVersion: ProtocolVersion | string,\n    components: T[] = [],\n    functions: F[] = [],\n    themeSchema?: z.ZodTypeAny,\n    instructions?: string,\n  ) {\n    if (!protocolVersion) {\n      throw new A2uiCatalogError('protocolVersion must be provided.');\n    }\n\n    this.id = id;\n    this.protocolVersion = protocolVersion;\n\n    const compMap = new Map<string, T>();\n    for (const comp of components) {\n      compMap.set(comp.name, comp);\n    }\n    this.components = compMap;\n\n    const funcMap = new Map<string, F>();\n    for (const fn of functions) {\n      funcMap.set(fn.name, fn);\n    }\n    this.functions = funcMap;\n\n    this.themeSchema = themeSchema;\n    this.instructions = instructions;\n\n    this.invoker = (name, rawArgs, ctx, abortSignal) => {\n      const fn = this.functions.get(name);\n      if (!fn) {\n        throw new A2uiExpressionError(`Function not found in catalog '${this.id}': ${name}`, name);\n      }\n      const execute = (fn as Partial<FunctionImplementation>).execute;\n      if (typeof execute !== 'function') {\n        throw new A2uiExpressionError(\n          `Function '${name}' in catalog '${this.id}' is schema-only and has no implementation.`,\n          name,\n        );\n      }\n\n      // Provides runtime safety: Coerces and strips invalid arguments before execute()\n      try {\n        const safeArgs = fn.schema.parse(rawArgs);\n        return execute.call(fn, safeArgs, ctx, abortSignal);\n      } catch (e: any) {\n        if (e?.name === 'ZodError' || e instanceof z.ZodError) {\n          throw new A2uiExpressionError(\n            `Validation failed for function '${name}': ${e.message}`,\n            name,\n            e.errors ?? e.issues,\n          );\n        }\n        throw e;\n      }\n    };\n  }\n\n  /**\n   * Constructs a schema-only Catalog directly from a raw A2UI catalog schema.\n   *\n   * @param catalogSchema Raw catalog schema or client capabilities payload object.\n   * @param protocolVersion Protocol version to use when the schema does not\n   *   declare one. Catalog schemas published before v1.0 omit the field, in\n   *   which case `DEFAULT_PROTOCOL_VERSION` applies.\n   * @returns A new Catalog populated with component and function schemas.\n   * @throws {Error} If the catalog ID is missing or not a string.\n   */\n  static fromSchema(\n    catalogSchema: Record<string, any>,\n    protocolVersion?: string,\n  ): Catalog<ComponentApi, FunctionApi> {\n    return loadCatalogFromSchema(catalogSchema, protocolVersion);\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Standard cleanup interface returned by all subscriptions. */\nexport interface Subscription {\n  /** Unsubscribes from the event source. */\n  unsubscribe(): void;\n}\n\n/** Handler callback for emitted events. */\nexport type EventListener<T> = (data: T) => void | Promise<void>;\n\n/**\n * Readonly event subscription interface exposed by models.\n *\n * Provides a subscription mechanism for event listeners without allowing event emission.\n */\nexport interface EventSource<T> {\n  /**\n   * Subscribes to the event.\n   *\n   * @param listener The listener function to call when the event is emitted.\n   * @returns A subscription object that can be used to unsubscribe.\n   */\n  subscribe(listener: EventListener<T>): Subscription;\n}\n\n/**\n * Event emitter implementation supporting subscriptions and asynchronous broadcasting.\n */\nexport class EventEmitter<T> implements EventSource<T> {\n  private listeners = new Set<EventListener<T>>();\n\n  /**\n   * Subscribes to the event.\n   *\n   * @param listener The listener function to call when the event is emitted.\n   * @returns A subscription object that can be used to unsubscribe.\n   */\n  subscribe(listener: EventListener<T>): Subscription {\n    this.listeners.add(listener);\n    return {\n      unsubscribe: () => this.listeners.delete(listener),\n    };\n  }\n\n  /**\n   * Emits an event to all subscribers.\n   *\n   * @param data The data to pass to subscribers.\n   */\n  async emit(data: T): Promise<void> {\n    for (const listener of this.listeners) {\n      try {\n        await listener(data);\n      } catch (e) {\n        console.error('EventEmitter error:', e);\n      }\n    }\n  }\n\n  /**\n   * Removes all registered listeners and disposes the emitter.\n   */\n  dispose(): void {\n    this.listeners.clear();\n  }\n}\n","// An named symbol/brand for detecting Signal instances even when they weren't\n// created using the same signals library version.\nconst BRAND_SYMBOL = Symbol.for(\"preact-signals\");\n\n// Flags for Computed and Effect.\nconst RUNNING = 1 << 0;\nconst NOTIFIED = 1 << 1;\nconst OUTDATED = 1 << 2;\nconst DISPOSED = 1 << 3;\nconst HAS_ERROR = 1 << 4;\nconst TRACKING = 1 << 5;\n\n// A linked list node used to track dependencies (sources) and dependents (targets).\n// Also used to remember the source's last version number that the target saw.\ntype Node = {\n\t// A source whose value the target depends on.\n\t_source: Signal;\n\t_prevSource?: Node;\n\t_nextSource?: Node;\n\n\t// A target that depends on the source and should be notified when the source changes.\n\t_target: Computed | Effect;\n\t_prevTarget?: Node;\n\t_nextTarget?: Node;\n\n\t// The version number of the source that target has last seen. We use version numbers\n\t// instead of storing the source value, because source values can take arbitrary amount\n\t// of memory, and computeds could hang on to them forever because they're lazily evaluated.\n\t// Use the special value -1 to mark potentially unused but recyclable nodes.\n\t_version: number;\n\n\t// Used to remember & roll back the source's previous `._node` value when entering &\n\t// exiting a new evaluation context.\n\t_rollbackNode?: Node;\n};\n\nfunction startBatch() {\n\tbatchDepth++;\n}\n\nfunction endBatch() {\n\tif (batchDepth > 1) {\n\t\tbatchDepth--;\n\t\treturn;\n\t}\n\n\tlet error: unknown;\n\tlet hasError = false;\n\treconcileBatchSnapshots();\n\n\twhile (batchedEffect !== undefined) {\n\t\tlet effect: Effect | undefined = batchedEffect;\n\t\tbatchedEffect = undefined;\n\n\t\tbatchIteration++;\n\n\t\twhile (effect !== undefined) {\n\t\t\tconst next: Effect | undefined = effect._nextBatchedEffect;\n\t\t\teffect._nextBatchedEffect = undefined;\n\t\t\teffect._flags &= ~NOTIFIED;\n\n\t\t\tif (!(effect._flags & DISPOSED) && needsToRecompute(effect)) {\n\t\t\t\ttry {\n\t\t\t\t\teffect._callback();\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (!hasError) {\n\t\t\t\t\t\terror = err;\n\t\t\t\t\t\thasError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\teffect = next;\n\t\t}\n\t}\n\tbatchIteration = 0;\n\tbatchDepth--;\n\n\tif (hasError) {\n\t\tthrow error;\n\t}\n}\n\n/**\n * Combine multiple value updates into one \"commit\" at the end of the provided callback.\n *\n * Batches can be nested and changes are only flushed once the outermost batch callback\n * completes.\n *\n * Accessing a signal that has been modified within a batch will reflect its updated\n * value.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction batch<T>(fn: () => T): T {\n\tif (batchDepth > 0) {\n\t\treturn fn();\n\t}\n\tcurrentBatchSnapshotVersion = ++batchSnapshotVersion;\n\t/*@__INLINE__**/ startBatch();\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tendBatch();\n\t}\n}\n\n// Currently evaluated computed or effect.\nlet evalContext: Computed | Effect | undefined = undefined;\n\n// Effects captured while constructing a model instance.\nlet capturedEffects: Effect[] | undefined;\n\n/**\n * Run a callback function that can access signal values without\n * subscribing to the signal updates.\n *\n * When called inside a `createModel` factory, this also suppresses\n * model-owned effect capture. Effects created inside the callback will not\n * be owned by the surrounding model and must be disposed manually. Nested\n * `createModel` calls inside the callback still capture their own effects.\n *\n * @param fn The callback function.\n * @returns The value returned by the callback.\n */\nfunction untracked<T>(fn: () => T): T {\n\tconst prevContext = evalContext;\n\tconst prevCapturedEffects = capturedEffects;\n\n\tevalContext = undefined;\n\t// Model effect capture is another kind of ambient tracking. Suppress it in\n\t// untracked callbacks while still allowing nested createModel() calls to\n\t// establish their own capture scope.\n\tcapturedEffects = undefined;\n\ttry {\n\t\treturn fn();\n\t} finally {\n\t\tevalContext = prevContext;\n\t\tcapturedEffects = prevCapturedEffects;\n\t}\n}\n\n// Effects collected into a batch.\nlet batchedEffect: Effect | undefined = undefined;\nlet batchDepth = 0;\nlet batchIteration = 0;\n\ntype BatchSnapshot = {\n\t_source: Signal;\n\t_value: unknown;\n\t_version: number;\n\t_next?: BatchSnapshot;\n};\n\nlet batchSnapshotVersion = 0;\nlet currentBatchSnapshotVersion = 0;\nlet batchSnapshots: BatchSnapshot | undefined = undefined;\n\n// A global version number for signals, used for fast-pathing repeated\n// computed.peek()/computed.value calls when nothing has changed globally.\nlet globalVersion = 0;\n\nfunction recordBatchSnapshot(source: Signal) {\n\t// Only capture writes during the user-visible batch callback, not during effect flush.\n\tif (batchDepth === 0 || batchIteration !== 0) {\n\t\treturn;\n\t}\n\n\tif (source._batchSnapshotVersion !== currentBatchSnapshotVersion) {\n\t\tsource._batchSnapshotVersion = currentBatchSnapshotVersion;\n\t\tbatchSnapshots = {\n\t\t\t_source: source,\n\t\t\t_value: source._value,\n\t\t\t_version: source._version,\n\t\t\t_next: batchSnapshots,\n\t\t};\n\t}\n}\n\nfunction reconcileBatchSnapshots() {\n\tlet snapshots = batchSnapshots;\n\tbatchSnapshots = undefined;\n\n\twhile (snapshots !== undefined) {\n\t\tconst source = snapshots._source;\n\t\tif (source._value === snapshots._value) {\n\t\t\t// The value was reverted to its pre-batch state. Version numbers must\n\t\t\t// stay monotonic: a lazy computed may have observed an intermediate\n\t\t\t// version during the batch, and rolling the version back would let a\n\t\t\t// future write re-mint that observed number for a different value,\n\t\t\t// making the computed treat it as unchanged forever. Instead,\n\t\t\t// fast-forward subscribers that last saw the pre-batch version so\n\t\t\t// they skip recomputing for the no-op change.\n\t\t\tfor (\n\t\t\t\tlet node = source._targets;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextTarget\n\t\t\t) {\n\t\t\t\tif (node._version === snapshots._version) {\n\t\t\t\t\tnode._version = source._version;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tsnapshots = snapshots._next;\n\t}\n}\n\nfunction addDependency(signal: Signal): Node | undefined {\n\tif (evalContext === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet node = signal._node;\n\tif (node === undefined || node._target !== evalContext) {\n\t\t/**\n\t\t * `signal` is a new dependency. Create a new dependency node, and set it\n\t\t * as the tail of the current context's dependency list. e.g:\n\t\t *\n\t\t * { A <-> B       }\n\t\t *         ↑     ↑\n\t\t *        tail  node (new)\n\t\t *               ↓\n\t\t * { A <-> B <-> C }\n\t\t *               ↑\n\t\t *              tail (evalContext._sources)\n\t\t */\n\t\tnode = {\n\t\t\t_version: 0,\n\t\t\t_source: signal,\n\t\t\t_prevSource: evalContext._sources,\n\t\t\t_nextSource: undefined,\n\t\t\t_target: evalContext,\n\t\t\t_prevTarget: undefined,\n\t\t\t_nextTarget: undefined,\n\t\t\t_rollbackNode: node,\n\t\t};\n\n\t\tif (evalContext._sources !== undefined) {\n\t\t\tevalContext._sources._nextSource = node;\n\t\t}\n\t\tevalContext._sources = node;\n\t\tsignal._node = node;\n\n\t\t// Subscribe to change notifications from this dependency if we're in an effect\n\t\t// OR evaluating a computed signal that in turn has subscribers.\n\t\tif (evalContext._flags & TRACKING) {\n\t\t\tsignal._subscribe(node);\n\t\t}\n\t\treturn node;\n\t} else if (node._version === -1) {\n\t\t// `signal` is an existing dependency from a previous evaluation. Reuse it.\n\t\tnode._version = 0;\n\n\t\t/**\n\t\t * If `node` is not already the current tail of the dependency list (i.e.\n\t\t * there is a next node in the list), then make the `node` the new tail. e.g:\n\t\t *\n\t\t * { A <-> B <-> C <-> D }\n\t\t *         ↑           ↑\n\t\t *        node   ┌─── tail (evalContext._sources)\n\t\t *         └─────│─────┐\n\t\t *               ↓     ↓\n\t\t * { A <-> C <-> D <-> B }\n\t\t *                     ↑\n\t\t *                    tail (evalContext._sources)\n\t\t */\n\t\tif (node._nextSource !== undefined) {\n\t\t\tnode._nextSource._prevSource = node._prevSource;\n\n\t\t\tif (node._prevSource !== undefined) {\n\t\t\t\tnode._prevSource._nextSource = node._nextSource;\n\t\t\t}\n\n\t\t\tnode._prevSource = evalContext._sources;\n\t\t\tnode._nextSource = undefined;\n\n\t\t\tevalContext._sources!._nextSource = node;\n\t\t\tevalContext._sources = node;\n\t\t}\n\n\t\t// We can assume that the currently evaluated effect / computed signal is already\n\t\t// subscribed to change notifications from `signal` if needed.\n\t\treturn node;\n\t}\n\treturn undefined;\n}\n\n//#region Signal\n\n/**\n * The base class for plain and computed signals.\n */\n//\n// A function with the same name is defined later, so we need to ignore TypeScript's\n// warning about a redeclared variable.\n//\n// The class is declared here, but later implemented with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\ndeclare class Signal<T = any> {\n\t/** @internal */\n\t_value: unknown;\n\n\t/**\n\t * @internal\n\t * Version numbers should always be >= 0, because the special value -1 is used\n\t * by Nodes to signify potentially unused but recyclable nodes.\n\t */\n\t_version: number;\n\n\t/** @internal */\n\t_node?: Node;\n\n\t/** @internal */\n\t_targets?: Node;\n\n\t/** @internal */\n\t_batchSnapshotVersion: number;\n\n\tconstructor(value?: T, options?: SignalOptions<T>);\n\n\t/** @internal */\n\t_refresh(): boolean;\n\n\t/** @internal */\n\t_subscribe(node: Node): void;\n\n\t/** @internal */\n\t_unsubscribe(node: Node): void;\n\n\t/** @internal */\n\t_watched?(this: Signal<T>): void;\n\n\t/** @internal */\n\t_unwatched?(this: Signal<T>): void;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\n\tname?: string;\n\n\tvalueOf(): T;\n\n\ttoString(): string;\n\n\ttoJSON(): T;\n\n\tpeek(): T;\n\n\tbrand: typeof BRAND_SYMBOL;\n\n\tget value(): T;\n\tset value(value: T);\n}\n\nexport interface SignalOptions<T = any> {\n\twatched?: (this: Signal<T>) => void;\n\tunwatched?: (this: Signal<T>) => void;\n\tname?: string;\n}\n\n/** @internal */\n// A class with the same name has already been declared, so we need to ignore\n// TypeScript's warning about a redeclared variable.\n//\n// The previously declared class is implemented here with ES5-style prototypes.\n// This enables better control of the transpiled output size.\n// @ts-ignore: \"Cannot redeclare exported variable 'Signal'.\"\nfunction Signal(this: Signal, value?: unknown, options?: SignalOptions) {\n\tthis._value = value;\n\tthis._version = 0;\n\tthis._node = undefined;\n\tthis._targets = undefined;\n\tthis._batchSnapshotVersion = 0;\n\tthis._watched = options?.watched;\n\tthis._unwatched = options?.unwatched;\n\tthis.name = options?.name;\n}\n\nSignal.prototype.brand = BRAND_SYMBOL;\n\nSignal.prototype._refresh = function () {\n\treturn true;\n};\n\nSignal.prototype._subscribe = function (node) {\n\tconst targets = this._targets;\n\tif (targets !== node && node._prevTarget === undefined) {\n\t\tnode._nextTarget = targets;\n\t\tthis._targets = node;\n\n\t\tif (targets !== undefined) {\n\t\t\ttargets._prevTarget = node;\n\t\t} else {\n\t\t\tuntracked(() => {\n\t\t\t\tthis._watched?.call(this);\n\t\t\t});\n\t\t}\n\t}\n};\n\nSignal.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the signal has any subscribers to begin with.\n\tif (this._targets !== undefined) {\n\t\tconst prev = node._prevTarget;\n\t\tconst next = node._nextTarget;\n\t\tif (prev !== undefined) {\n\t\t\tprev._nextTarget = next;\n\t\t\tnode._prevTarget = undefined;\n\t\t}\n\n\t\tif (next !== undefined) {\n\t\t\tnext._prevTarget = prev;\n\t\t\tnode._nextTarget = undefined;\n\t\t}\n\n\t\tif (node === this._targets) {\n\t\t\tthis._targets = next;\n\t\t\tif (next === undefined) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tthis._unwatched?.call(this);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n};\n\nSignal.prototype.subscribe = function (fn) {\n\treturn effect(\n\t\t() => {\n\t\t\tconst value = this.value;\n\t\t\tuntracked(() => fn(value));\n\t\t},\n\t\t{ name: \"sub\" }\n\t);\n};\n\nSignal.prototype.valueOf = function () {\n\treturn this.value;\n};\n\nSignal.prototype.toString = function () {\n\treturn this.value + \"\";\n};\n\nSignal.prototype.toJSON = function () {\n\treturn this.value;\n};\n\nSignal.prototype.peek = function () {\n\treturn untracked(() => this.value);\n};\n\nObject.defineProperty(Signal.prototype, \"value\", {\n\tget(this: Signal) {\n\t\tconst node = addDependency(this);\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\treturn this._value;\n\t},\n\tset(this: Signal, value) {\n\t\tif (value !== this._value) {\n\t\t\tif (batchIteration > 100) {\n\t\t\t\tthrow new Error(\"Cycle detected\");\n\t\t\t}\n\n\t\t\trecordBatchSnapshot(this);\n\t\t\tthis._value = value;\n\t\t\tthis._version++;\n\t\t\tglobalVersion++;\n\n\t\t\t/**@__INLINE__*/ startBatch();\n\t\t\ttry {\n\t\t\t\tfor (\n\t\t\t\t\tlet node = this._targets;\n\t\t\t\t\tnode !== undefined;\n\t\t\t\t\tnode = node._nextTarget\n\t\t\t\t) {\n\t\t\t\t\tnode._target._notify();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tendBatch();\n\t\t\t}\n\t\t}\n\t},\n});\n\n/**\n * Create a new plain signal.\n *\n * @param value The initial value for the signal.\n * @returns A new signal.\n */\nexport function signal<T>(value: T, options?: SignalOptions<T>): Signal<T>;\nexport function signal<T = undefined>(): Signal<T | undefined>;\nexport function signal<T>(value?: T, options?: SignalOptions<T>): Signal<T> {\n\treturn new Signal(value, options);\n}\n\n//#endregion Signal\n\n//#region Computed\n\nfunction needsToRecompute(target: Computed | Effect): boolean {\n\t// Check the dependencies for changed values. The dependency list is already\n\t// in order of use. Therefore if multiple dependencies have changed values, only\n\t// the first used dependency is re-evaluated at this point.\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tif (\n\t\t\t// If the dependency has definitely been updated since its version number\n\t\t\t// was observed, then we need to recompute. This first check is not strictly\n\t\t\t// necessary for correctness, but allows us to skip the refresh call if the\n\t\t\t// dependency has already been updated.\n\t\t\tnode._source._version !== node._version ||\n\t\t\t// Refresh the dependency. If there's something blocking the refresh (e.g. a\n\t\t\t// dependency cycle), then we need to recompute.\n\t\t\t!node._source._refresh() ||\n\t\t\t// If the dependency got a new version after the refresh, then we need to recompute.\n\t\t\tnode._source._version !== node._version\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\t// If none of the dependencies have changed values since last recompute then\n\t// there's no need to recompute.\n\treturn false;\n}\n\nfunction prepareSources(target: Computed | Effect) {\n\t/**\n\t * 1. Mark all current sources as re-usable nodes (version: -1)\n\t * 2. Set a rollback node if the current node is being used in a different context\n\t * 3. Point 'target._sources' to the tail of the doubly-linked list, e.g:\n\t *\n\t *    { undefined <- A <-> B <-> C -> undefined }\n\t *                   ↑           ↑\n\t *                   │           └──────┐\n\t * target._sources = A; (node is head)  │\n\t *                   ↓                  │\n\t * target._sources = C; (node is tail) ─┘\n\t */\n\tfor (\n\t\tlet node = target._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tconst rollbackNode = node._source._node;\n\t\tif (rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = rollbackNode;\n\t\t}\n\t\tnode._source._node = node;\n\t\tnode._version = -1;\n\n\t\tif (node._nextSource === undefined) {\n\t\t\ttarget._sources = node;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction cleanupSources(target: Computed | Effect) {\n\tlet node = target._sources;\n\tlet head: Node | undefined = undefined;\n\n\t/**\n\t * At this point 'target._sources' points to the tail of the doubly-linked list.\n\t * It contains all existing sources + new sources in order of use.\n\t * Iterate backwards until we find the head node while dropping old dependencies.\n\t */\n\twhile (node !== undefined) {\n\t\tconst prev = node._prevSource;\n\n\t\t/**\n\t\t * The node was not re-used, unsubscribe from its change notifications and remove itself\n\t\t * from the doubly-linked list. e.g:\n\t\t *\n\t\t * { A <-> B <-> C }\n\t\t *         ↓\n\t\t *    { A <-> C }\n\t\t */\n\t\tif (node._version === -1) {\n\t\t\tnode._source._unsubscribe(node);\n\n\t\t\tif (prev !== undefined) {\n\t\t\t\tprev._nextSource = node._nextSource;\n\t\t\t}\n\t\t\tif (node._nextSource !== undefined) {\n\t\t\t\tnode._nextSource._prevSource = prev;\n\t\t\t}\n\t\t} else {\n\t\t\t/**\n\t\t\t * The new head is the last node seen which wasn't removed/unsubscribed\n\t\t\t * from the doubly-linked list. e.g:\n\t\t\t *\n\t\t\t * { A <-> B <-> C }\n\t\t\t *   ↑     ↑     ↑\n\t\t\t *   │     │     └ head = node\n\t\t\t *   │     └ head = node\n\t\t\t *   └ head = node\n\t\t\t */\n\t\t\thead = node;\n\t\t}\n\n\t\tnode._source._node = node._rollbackNode;\n\t\tif (node._rollbackNode !== undefined) {\n\t\t\tnode._rollbackNode = undefined;\n\t\t}\n\n\t\tnode = prev;\n\t}\n\n\ttarget._sources = head;\n}\n\n/**\n * The base class for computed signals.\n */\ndeclare class Computed<T = any> extends Signal<T> {\n\t_fn: () => T;\n\t_sources?: Node;\n\t_globalVersion: number;\n\t_flags: number;\n\n\tconstructor(fn: () => T, options?: SignalOptions<T>);\n\n\t_notify(): void;\n\tget value(): T;\n}\n\n/** @internal */\nfunction Computed(this: Computed, fn: () => unknown, options?: SignalOptions) {\n\tSignal.call(this, undefined, options);\n\n\tthis._fn = fn;\n\tthis._sources = undefined;\n\tthis._globalVersion = globalVersion - 1;\n\tthis._flags = OUTDATED;\n}\n\nComputed.prototype = new Signal() as Computed;\n\nComputed.prototype._refresh = function () {\n\tthis._flags &= ~NOTIFIED;\n\n\tif (this._flags & RUNNING) {\n\t\treturn false;\n\t}\n\n\t// If this computed signal has subscribed to updates from its dependencies\n\t// (TRACKING flag set) and none of them have notified about changes (OUTDATED\n\t// flag not set), then the computed value can't have changed.\n\tif ((this._flags & (OUTDATED | TRACKING)) === TRACKING) {\n\t\treturn true;\n\t}\n\tthis._flags &= ~OUTDATED;\n\n\tif (this._globalVersion === globalVersion) {\n\t\treturn true;\n\t}\n\tthis._globalVersion = globalVersion;\n\n\t// Mark this computed signal running before checking the dependencies for value\n\t// changes, so that the RUNNING flag can be used to notice cyclical dependencies.\n\tthis._flags |= RUNNING;\n\tif (this._version > 0 && !needsToRecompute(this)) {\n\t\tthis._flags &= ~RUNNING;\n\t\treturn true;\n\t}\n\n\tconst prevContext = evalContext;\n\ttry {\n\t\tprepareSources(this);\n\t\tevalContext = this;\n\t\tconst value = this._fn();\n\t\tif (\n\t\t\tthis._flags & HAS_ERROR ||\n\t\t\tthis._value !== value ||\n\t\t\tthis._version === 0\n\t\t) {\n\t\t\tthis._value = value;\n\t\t\tthis._flags &= ~HAS_ERROR;\n\t\t\tthis._version++;\n\t\t}\n\t} catch (err) {\n\t\tthis._value = err;\n\t\tthis._flags |= HAS_ERROR;\n\t\tthis._version++;\n\t}\n\tevalContext = prevContext;\n\tcleanupSources(this);\n\tthis._flags &= ~RUNNING;\n\treturn true;\n};\n\nComputed.prototype._subscribe = function (node) {\n\tif (this._targets === undefined) {\n\t\tthis._flags |= OUTDATED | TRACKING;\n\n\t\t// A computed signal subscribes lazily to its dependencies when it\n\t\t// gets its first subscriber.\n\t\tfor (\n\t\t\tlet node = this._sources;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextSource\n\t\t) {\n\t\t\tnode._source._subscribe(node);\n\t\t}\n\t}\n\tSignal.prototype._subscribe.call(this, node);\n};\n\nComputed.prototype._unsubscribe = function (node) {\n\t// Only run the unsubscribe step if the computed signal has any subscribers.\n\tif (this._targets !== undefined) {\n\t\tSignal.prototype._unsubscribe.call(this, node);\n\n\t\t// Computed signal unsubscribes from its dependencies when it loses its last subscriber.\n\t\t// This makes it possible for unreferences subgraphs of computed signals to get garbage collected.\n\t\tif (this._targets === undefined) {\n\t\t\tthis._flags &= ~TRACKING;\n\n\t\t\tfor (\n\t\t\t\tlet node = this._sources;\n\t\t\t\tnode !== undefined;\n\t\t\t\tnode = node._nextSource\n\t\t\t) {\n\t\t\t\tnode._source._unsubscribe(node);\n\t\t\t}\n\t\t}\n\t}\n};\n\nComputed.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= OUTDATED | NOTIFIED;\n\n\t\tfor (\n\t\t\tlet node = this._targets;\n\t\t\tnode !== undefined;\n\t\t\tnode = node._nextTarget\n\t\t) {\n\t\t\tnode._target._notify();\n\t\t}\n\t}\n};\n\nObject.defineProperty(Computed.prototype, \"value\", {\n\tget(this: Computed) {\n\t\tif (this._flags & RUNNING) {\n\t\t\tthrow new Error(\"Cycle detected\");\n\t\t}\n\t\tconst node = addDependency(this);\n\t\tthis._refresh();\n\t\tif (node !== undefined) {\n\t\t\tnode._version = this._version;\n\t\t}\n\t\tif (this._flags & HAS_ERROR) {\n\t\t\tthrow this._value;\n\t\t}\n\t\treturn this._value;\n\t},\n});\n\n/**\n * An interface for read-only signals.\n */\ninterface ReadonlySignal<T = any> {\n\treadonly value: T;\n\tpeek(): T;\n\n\tsubscribe(fn: (value: T) => void): () => void;\n\tvalueOf(): T;\n\ttoString(): string;\n\ttoJSON(): T;\n\tbrand: typeof BRAND_SYMBOL;\n}\n\n/**\n * Create a new signal that is computed based on the values of other signals.\n *\n * The returned computed signal is read-only, and its value is automatically\n * updated when any signals accessed from within the callback function change.\n *\n * @param fn The effect callback.\n * @returns A new read-only signal.\n */\nfunction computed<T>(\n\tfn: () => T,\n\toptions?: SignalOptions<T>\n): ReadonlySignal<T> {\n\treturn new Computed(fn, options);\n}\n\n//#endregion Computed\n\n//#region Effect\n\nfunction cleanupEffect(effect: Effect) {\n\tconst cleanup = effect._cleanup;\n\teffect._cleanup = undefined;\n\n\tif (typeof cleanup === \"function\") {\n\t\t/*@__INLINE__**/ startBatch();\n\n\t\t// Run cleanup functions always outside of any context.\n\t\tconst prevContext = evalContext;\n\t\tevalContext = undefined;\n\t\ttry {\n\t\t\tcleanup();\n\t\t} catch (err) {\n\t\t\teffect._flags &= ~RUNNING;\n\t\t\teffect._flags |= DISPOSED;\n\t\t\tdisposeEffect(effect);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tevalContext = prevContext;\n\t\t\tendBatch();\n\t\t}\n\t}\n}\n\nfunction disposeEffect(effect: Effect) {\n\tfor (\n\t\tlet node = effect._sources;\n\t\tnode !== undefined;\n\t\tnode = node._nextSource\n\t) {\n\t\tnode._source._unsubscribe(node);\n\t}\n\teffect._fn = undefined;\n\teffect._sources = undefined;\n\n\tcleanupEffect(effect);\n}\n\nfunction endEffect(this: Effect, prevContext?: Computed | Effect) {\n\tif (evalContext !== this) {\n\t\tthrow new Error(\"Out-of-order effect\");\n\t}\n\tcleanupSources(this);\n\tevalContext = prevContext;\n\n\tthis._flags &= ~RUNNING;\n\tif (this._flags & DISPOSED) {\n\t\tdisposeEffect(this);\n\t}\n\tendBatch();\n}\n\ntype EffectFn =\n\t| ((this: { dispose: () => void }) => void | (() => void))\n\t| (() => void | (() => void));\n\n// Avoid hard-requiring the ESNext.Disposable lib in consuming tsconfigs.\n// When `Symbol.dispose` is available, this becomes a symbol-keyed disposer type.\ntype DisposeSymbol = typeof Symbol extends { readonly dispose: infer TDispose }\n\t? TDispose\n\t: never;\ntype DisposableLike = {\n\t[K in DisposeSymbol & PropertyKey]: () => void;\n};\ntype DisposeFn = (() => void) & DisposableLike;\n\n/**\n * The base class for reactive effects.\n */\ndeclare class Effect {\n\t_fn?: EffectFn;\n\t_cleanup?: () => void;\n\t_sources?: Node;\n\t_nextBatchedEffect?: Effect;\n\t_flags: number;\n\t_debugCallback?: () => void;\n\tname?: string;\n\n\tconstructor(fn: EffectFn, options?: EffectOptions);\n\n\t_callback(): void;\n\t_start(): () => void;\n\t_notify(): void;\n\t_dispose(): void;\n\tdispose(): void;\n}\n\nexport interface EffectOptions {\n\tname?: string;\n}\n\n/** @internal */\nfunction Effect(this: Effect, fn: EffectFn, options?: EffectOptions) {\n\tthis._fn = fn;\n\tthis._cleanup = undefined;\n\tthis._sources = undefined;\n\tthis._nextBatchedEffect = undefined;\n\tthis._flags = TRACKING;\n\tthis.name = options?.name;\n\n\tif (capturedEffects) {\n\t\tcapturedEffects.push(this);\n\t}\n}\n\nEffect.prototype._callback = function () {\n\tconst finish = this._start();\n\ttry {\n\t\tif (this._flags & DISPOSED) return;\n\t\tif (this._fn === undefined) return;\n\n\t\tconst cleanup = this._fn();\n\t\tif (typeof cleanup === \"function\") {\n\t\t\tthis._cleanup = cleanup;\n\t\t}\n\t} finally {\n\t\tfinish();\n\t}\n};\n\nEffect.prototype._start = function () {\n\tif (this._flags & RUNNING) {\n\t\tthrow new Error(\"Cycle detected\");\n\t}\n\tthis._flags |= RUNNING;\n\tthis._flags &= ~DISPOSED;\n\tcleanupEffect(this);\n\tprepareSources(this);\n\n\t/*@__INLINE__**/ startBatch();\n\tconst prevContext = evalContext;\n\tevalContext = this;\n\treturn endEffect.bind(this, prevContext);\n};\n\nEffect.prototype._notify = function () {\n\tif (!(this._flags & NOTIFIED)) {\n\t\tthis._flags |= NOTIFIED;\n\t\tthis._nextBatchedEffect = batchedEffect;\n\t\tbatchedEffect = this;\n\t}\n};\n\nEffect.prototype._dispose = function () {\n\tthis._flags |= DISPOSED;\n\n\tif (!(this._flags & RUNNING)) {\n\t\tdisposeEffect(this);\n\t}\n};\n\nEffect.prototype.dispose = function () {\n\tthis._dispose();\n};\n/**\n * Create an effect to run arbitrary code in response to signal changes.\n *\n * An effect tracks which signals are accessed within the given callback\n * function `fn`, and re-runs the callback when those signals change.\n *\n * The callback may return a cleanup function. The cleanup function gets\n * run once, either when the callback is next called or when the effect\n * gets disposed, whichever happens first.\n *\n * @param fn The effect callback.\n * @returns A function for disposing the effect.\n */\nfunction effect(fn: EffectFn, options?: EffectOptions): DisposeFn {\n\tconst effect = new Effect(fn, options);\n\ttry {\n\t\teffect._callback();\n\t} catch (err) {\n\t\teffect._dispose();\n\t\tthrow err;\n\t}\n\t// Return a bound function instead of a wrapper like `() => effect._dispose()`,\n\t// because bound functions seem to be just as fast and take up a lot less memory.\n\tconst dispose = effect._dispose.bind(effect);\n\t(dispose as any)[Symbol.dispose] = dispose;\n\treturn dispose as DisposeFn;\n}\n\n//#endregion Effect\n\n//#region Action\n\nfunction action<TArgs extends unknown[], TReturn>(\n\tfn: (...args: TArgs) => TReturn\n): (...args: TArgs) => TReturn {\n\treturn function actionWrapper(this: unknown, ...args: TArgs) {\n\t\treturn batch(() => untracked(() => fn.apply(this, args)));\n\t};\n}\n\n//#endregion Action\n\n//#region createModel\n\n/** Models should only contain signals, actions, and nested objects containing only signals and actions. */\ntype ValidateModel<TModel> = {\n\t[Key in keyof TModel]: TModel[Key] extends ReadonlySignal<unknown>\n\t\t? TModel[Key]\n\t\t: TModel[Key] extends (...args: any[]) => any\n\t\t\t? TModel[Key]\n\t\t\t: TModel[Key] extends object\n\t\t\t\t? ValidateModel<TModel[Key]>\n\t\t\t\t: `Property ${Key extends string ? `'${Key}' ` : \"\"}is not a Signal, Action, or an object that contains only Signals and Actions.`;\n};\n\nexport type Model<TModel> = ValidateModel<TModel> & DisposableLike;\n\nexport type ModelFactory<TModel, TFactoryArgs extends any[] = []> = (\n\t...args: TFactoryArgs\n) => ValidateModel<TModel>;\nexport type ModelConstructor<TModel, TFactoryArgs extends any[] = []> = new (\n\t...args: TFactoryArgs\n) => Model<TModel>;\n\n/**\n * The public types for ModelConstructor require using `new` to help\n * disambiguate the function passed into `createModel` and the returned\n * constructor function. It is easier to say that `createModel` accepts\n * a factory and returns a class, then to say it accepts a factory and\n * returns a factory. In other words, this example:\n *\n * ```ts\n * const PersonModel = createModel((name: string) => ({ ... }));\n * const person = new PersonModel(\"John\");\n * ```\n *\n * is easier to understand than this example:\n *\n * ```ts\n * const createPerson = createModel((name: string) => ({ ... }));\n * const person = createPerson(\"John\");\n * ```\n *\n * However, internally we implement `createModel` to return a function\n * that can be called without `new` for simplicity. To bridge the gap\n * between the public types and the internal implementation, we define\n * this internal interface that extends the public interface but also\n * allows calling without `new`.\n *\n * This pattern is used by the Preact & React adapters to make instantiating\n * a model or a function that returns a model easier.\n *\n * @internal\n */\ninterface InternalModelConstructor<\n\tTModel,\n\tTFactoryArgs extends any[],\n> extends ModelConstructor<TModel, TFactoryArgs> {\n\t(...args: TFactoryArgs): Model<TModel>;\n}\n\nfunction startCapturingEffects(): () => Effect[] | undefined {\n\tlet prevCapturedEffects = capturedEffects;\n\t// Always establish a fresh capture scope, even when `untracked()` has\n\t// temporarily cleared the parent scope. This lets nested models own their\n\t// effects without promoting them to a suppressed outer scope.\n\tcapturedEffects = [];\n\n\treturn function stopCapturingEffects() {\n\t\tlet modelEffects = capturedEffects;\n\t\tif (capturedEffects && prevCapturedEffects) {\n\t\t\tprevCapturedEffects = prevCapturedEffects.concat(capturedEffects);\n\t\t}\n\n\t\tcapturedEffects = prevCapturedEffects;\n\n\t\treturn modelEffects;\n\t};\n}\n\nconst wrapInAction = (value: Record<string, unknown>) => {\n\tfor (const key in value) {\n\t\tconst val = value[key];\n\t\tif (typeof val === \"function\") {\n\t\t\tvalue[key] = action(val as (...args: unknown[]) => unknown);\n\t\t} else if (typeof val === \"object\" && val !== null && !(\"brand\" in val)) {\n\t\t\t// Recursively wrap nested object properties in actions. This allows users to write\n\t\t\t// nested models without worrying about wrapping their functions in `action`.\n\t\t\twrapInAction(val as Record<string, unknown>);\n\t\t}\n\t}\n};\n\nfunction createModel<TModel, TFactoryArgs extends any[] = []>(\n\tmodelFactory: ModelFactory<TModel, TFactoryArgs>\n): ModelConstructor<TModel, TFactoryArgs> {\n\treturn function SignalModel(...args: TFactoryArgs): Model<TModel> {\n\t\tlet modelEffects: Effect[] | undefined;\n\t\tlet model: Model<TModel>;\n\n\t\tconst stopCapturingEffects = startCapturingEffects();\n\t\ttry {\n\t\t\tmodel = modelFactory(...args) as Model<TModel>;\n\t\t} catch (err) {\n\t\t\t// Drop any captured effects on error. Errors from nested models will bubble\n\t\t\t// up here and recursively reset `capturedEffects` to `undefined` preventing\n\t\t\t// any captured effects from leaking\n\t\t\tcapturedEffects = undefined;\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tmodelEffects = stopCapturingEffects();\n\t\t}\n\n\t\twrapInAction(model);\n\n\t\tmodel[Symbol.dispose] = action(function disposeModel() {\n\t\t\tif (modelEffects) {\n\t\t\t\tfor (let i = 0; i < modelEffects.length; i++) {\n\t\t\t\t\tmodelEffects[i].dispose();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmodelEffects = undefined;\n\t\t});\n\n\t\treturn model;\n\t} as InternalModelConstructor<TModel, TFactoryArgs>;\n}\n\n//#endregion createModel\n\nexport {\n\tcomputed,\n\teffect,\n\tbatch,\n\tuntracked,\n\taction,\n\tcreateModel,\n\tSignal,\n\tReadonlySignal,\n\tEffect,\n\tComputed,\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  signal as preactSignal,\n  computed as preactComputed,\n  effect as preactEffect,\n  batch as preactBatch,\n  Signal as PreactSignal,\n  Computed as PreactComputed,\n} from '@preact/signals-core';\n\n/**\n * Generic reactive signal holding a value of type `T`.\n *\n * @template T Type of value managed by the signal.\n */\nexport interface Signal<T = unknown> {\n  // Marker that prevents any value from being assigned as a signal.\n  // Without this any object can be assigned to a signal.\n  __signalBrand?: T;\n  unsubscribe?: () => void;\n}\n\n/**\n * Pluggable backend adapter providing primitive reactive signal operations.\n */\nexport interface SignalImplementations {\n  signal: <T>(initialValue: T) => Signal<T>;\n  computed: <T>(computeFn: () => T) => Signal<T>;\n  effect: (effectFn: () => void | (() => void)) => () => void;\n  batchWrite: (batchFn: () => void) => void;\n  isSignal: (val: unknown) => val is Signal<unknown>;\n  getValue: <T>(signal: Signal<T>) => T;\n  setValue: <T>(signal: Signal<T>, value: T) => void;\n  peekValue: <T>(signal: Signal<T>) => T;\n}\n\nlet signalImpl: SignalImplementations['signal'];\nlet computedImpl: SignalImplementations['computed'];\nlet effectImpl: SignalImplementations['effect'];\nlet batchWriteImpl: SignalImplementations['batchWrite'];\nlet isSignalImpl: SignalImplementations['isSignal'];\nlet getValueImpl: SignalImplementations['getValue'];\nlet setValueImpl: SignalImplementations['setValue'];\nlet peekValueImpl: SignalImplementations['peekValue'];\n\n/** Default signal implementations. Exported only for testing purposes. */\nexport const _PRIVATE_DEFAULT_SIGNAL_IMPLEMENTATION: SignalImplementations = {\n  signal: preactSignal as SignalImplementations['signal'],\n  computed: preactComputed as SignalImplementations['computed'],\n  effect: preactEffect as SignalImplementations['effect'],\n  batchWrite: preactBatch as SignalImplementations['batchWrite'],\n  isSignal: (val: unknown): val is Signal<unknown> =>\n    !!val && typeof val === 'object' && 'value' in val && 'peek' in val,\n  getValue: <T>(signal: Signal<T>): T => (signal as PreactSignal<T>).value,\n  setValue: <T>(signal: Signal<T>, value: T): void => {\n    if (!(signal instanceof PreactComputed)) {\n      (signal as PreactSignal<T>).value = value;\n    }\n  },\n  peekValue: <T>(signal: Signal<T>): T => (signal as PreactSignal<T>).peek(),\n};\n\nsetSignalImplementation(_PRIVATE_DEFAULT_SIGNAL_IMPLEMENTATION);\n\n/**\n * Configures the active reactive signals implementation backend.\n *\n * Enables swapping the underlying reactivity library at runtime.\n *\n * @param impl Pluggable signal implementation operations.\n */\nexport function setSignalImplementation(impl: SignalImplementations): void {\n  // Intentionally only store the functions so we ignore any mutations of the implementation.\n  signalImpl = impl.signal;\n  computedImpl = impl.computed;\n  effectImpl = impl.effect;\n  batchWriteImpl = impl.batchWrite;\n  isSignalImpl = impl.isSignal;\n  getValueImpl = impl.getValue;\n  setValueImpl = impl.setValue;\n  peekValueImpl = impl.peekValue;\n}\n\n/**\n * Creates a reactive state signal initialized to the specified value.\n *\n * @param initialValue Initial value of the signal.\n * @returns A reactive state signal.\n */\nexport function signal<T>(initialValue: T): Signal<T> {\n  return signalImpl(initialValue);\n}\n\n/**\n * Creates a derived reactive signal that recomputes when dependencies change.\n *\n * @param computeFn Calculation callback producing the derived value.\n * @returns A reactive read-only computed signal.\n */\nexport function computed<T>(computeFn: () => T): Signal<T> {\n  return computedImpl(computeFn);\n}\n\n/**\n * Runs a side-effect callback reactively when accessed signals change.\n *\n * @param effectFn Callback to execute, optionally returning a cleanup function.\n * @returns A disposal function that cancels the effect subscription.\n */\nexport function effect(effectFn: () => void | (() => void)): () => void {\n  return effectImpl(effectFn);\n}\n\n/**\n * Batches multiple signal updates to defer subscriber notifications until complete.\n *\n * @param batchFn Callback enclosing signal mutations.\n */\nexport function batchWrite(batchFn: () => void): void {\n  return batchWriteImpl(batchFn);\n}\n\n/**\n * Checks whether a given value is a reactive Signal.\n *\n * @param val Value to test.\n * @returns Whether the value is a Signal.\n */\nexport function isSignal(val: unknown): val is Signal<unknown> {\n  return isSignalImpl(val);\n}\n\n/**\n * Reads the current value of a signal, subscribing the active reactive context.\n *\n * @param signal Target signal to read.\n * @returns The current value of the signal.\n */\nexport function getValue<T>(signal: Signal<T>): T {\n  return getValueImpl(signal);\n}\n\n/**\n * Updates the current value of a writable signal, notifying subscribers.\n *\n * @param signal Target signal to update.\n * @param value New value to assign.\n */\nexport function setValue<T>(signal: Signal<T>, value: T): void {\n  setValueImpl(signal, value);\n}\n\n/**\n * Reads the current value of a signal without creating a reactive subscription.\n *\n * @param signal Target signal to read.\n * @returns The current value of the signal.\n */\nexport function peekValue<T>(signal: Signal<T>): T {\n  return peekValueImpl(signal);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Subscription as BaseSubscription} from '../common/events.js';\nimport {A2uiDataError} from '../errors.js';\nimport {\n  batchWrite,\n  effect,\n  getValue,\n  peekValue,\n  setValue,\n  signal,\n  Signal,\n} from '../reactivity/signals.js';\n\n/**\n * Reactive subscription to a specific path in the data model.\n */\nexport interface DataSubscription<T> extends BaseSubscription {\n  /** Current value at the subscribed path. */\n  readonly value: T | undefined;\n}\n\nfunction isNumeric(value: string): boolean {\n  return /^(0|[1-9]\\d*)$/.test(value);\n}\n\n/**\n * The maximum array index that auto-vivification and array mutations will expand to.\n * Prevents OOM and thread hangs from excessively large indices.\n */\nexport const MAX_ARRAY_INDEX = 10000;\n\n/**\n * Keys forbidden in path resolution to prevent prototype pollution\n * vulnerabilities. Accessing or mutating these keys via object paths can allow\n * attackers to modify Object.prototype or Function.prototype.\n */\nconst FORBIDDEN_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\n/**\n * Observable data store representing the renderer-side state.\n *\n * Handles JSON Pointer path resolution, mutation, and reactive subscriptions.\n */\nexport class DataModel {\n  private data: Record<string, unknown> = {};\n  private readonly signals: Map<string, Signal<any>> = new Map();\n  private readonly subscriptions: Set<() => void> = new Set(); // To track direct subscriptions for dispose\n\n  /**\n   * Initializes a new `DataModel` instance.\n   *\n   * @param initialData Initial data for the model. Defaults to an empty object.\n   */\n  constructor(initialData: Record<string, unknown> = {}) {\n    this.data = initialData;\n  }\n\n  /**\n   * Retrieves a Preact Signal for a specific data path.\n   *\n   * This provides a reactive way to access a value. If the value at the path\n   * changes via `set()`, the signal will automatically be updated.\n   *\n   * @param path The JSON pointer path to create or retrieve a signal for.\n   * @returns A Preact Signal representing the value at the specified path.\n   * @throws {A2uiDataError} If path is null, undefined, or contains forbidden\n   *     segments (`__proto__`, `constructor`, `prototype`).\n   */\n  getSignal<T>(path: string): Signal<T | undefined> {\n    const normalizedPath = this.normalizePath(path);\n    if (!this.signals.has(normalizedPath)) {\n      this.signals.set(normalizedPath, signal(this.get(normalizedPath)));\n    }\n    return this.signals.get(normalizedPath) as Signal<T | undefined>;\n  }\n\n  /**\n   * Updates the model at the specific path and notifies all relevant signals.\n   * If path is '/' or empty, replaces the entire root.\n   *\n   * Note on `undefined` values:\n   * - For objects: Setting a property to `undefined` removes the key from the\n   * object.\n   * - For arrays: Setting an index to `undefined` sets that index to\n   * `undefined` but preserves the array length (sparse array).\n   *\n   * @param path The JSON pointer path to set value for.\n   * @param value The value to set at the specified path.\n   * @returns This `DataModel` instance for chaining.\n   * @throws {A2uiDataError} If path is null, undefined, invalid for\n   *     arrays/primitives, exceeds max array bounds, or contains forbidden\n   *     segments (`__proto__`, `constructor`, `prototype`).\n   */\n  set(path: string, value: any): this {\n    if (path === null || path === undefined) {\n      throw new A2uiDataError('Path cannot be null or undefined.');\n    }\n\n    if (path === '/' || path === '') {\n      this.data = value === null || value === undefined ? {} : value;\n      this.notifyAllSignals();\n      return this;\n    }\n\n    const segments = this.parsePath(path);\n    const lastSegment = segments.pop()!;\n\n    if ((value === undefined || value === null) && this.get(path) === undefined) {\n      return this;\n    }\n\n    // Only an absent root is replaced with a container. A primitive root is a\n    // value the caller put there, and writing a path through it is the same\n    // error as writing through a primitive at any other depth.\n    if (this.data === undefined || this.data === null) {\n      this.data = {};\n    } else if (typeof this.data !== 'object') {\n      throw new A2uiDataError(\n        `Cannot set path '${path}': the data model root is a primitive value.`,\n        path,\n      );\n    }\n    let current: any = this.data;\n    for (let i = 0; i < segments.length; i++) {\n      const segment = segments[i];\n\n      if (Array.isArray(current)) {\n        if (!isNumeric(segment)) {\n          throw new A2uiDataError(\n            `Cannot use non-numeric segment '${segment}' on an array in path '${path}'.`,\n            path,\n          );\n        }\n\n        const index = parseInt(segment, 10);\n        if (index > MAX_ARRAY_INDEX) {\n          throw new A2uiDataError(\n            `Cannot set path '${path}': array index '${segment}' exceeds maximum supported index (${MAX_ARRAY_INDEX}).`,\n            path,\n          );\n        }\n\n        // If we encounter a primitive where a container is expected, we cannot\n        // proceed. We allow undefined/null to be overwritten by a new\n        // container.\n        const val = current[index];\n        if (val !== undefined && val !== null && typeof val !== 'object') {\n          throw new A2uiDataError(\n            `Cannot set path '${path}': segment '${segment}' is a primitive value.`,\n            path,\n          );\n        }\n\n        if (val === undefined || val === null) {\n          const nextSegment = i < segments.length - 1 ? segments[i + 1] : lastSegment;\n          if (isNumeric(nextSegment)) {\n            const nextIdx = parseInt(nextSegment, 10);\n            if (nextIdx > MAX_ARRAY_INDEX) {\n              throw new A2uiDataError(\n                `Cannot set path '${path}': array index '${nextSegment}' exceeds maximum supported index (${MAX_ARRAY_INDEX}).`,\n                path,\n              );\n            }\n            current[index] = [];\n          } else {\n            current[index] = {};\n          }\n        }\n      } else {\n        // Ensure we only inspect own properties to prevent inherited\n        // Object.prototype properties (e.g., toString) from being treated as\n        // existing state.\n        const hasOwnProp = Object.prototype.hasOwnProperty.call(current, segment);\n        if (hasOwnProp) {\n          const propVal = current[segment];\n          // If we encounter a primitive where a container is expected, we\n          // cannot proceed. We allow undefined/null to be overwritten by a new\n          // container.\n          if (propVal !== undefined && propVal !== null && typeof propVal !== 'object') {\n            throw new A2uiDataError(\n              `Cannot set path '${path}': segment '${segment}' is a primitive value.`,\n              path,\n            );\n          }\n        }\n\n        if (!hasOwnProp || current[segment] === undefined || current[segment] === null) {\n          const nextSegment = i < segments.length - 1 ? segments[i + 1] : lastSegment;\n          if (isNumeric(nextSegment)) {\n            const nextIdx = parseInt(nextSegment, 10);\n            if (nextIdx > MAX_ARRAY_INDEX) {\n              throw new A2uiDataError(\n                `Cannot set path '${path}': array index '${nextSegment}' exceeds maximum supported index (${MAX_ARRAY_INDEX}).`,\n                path,\n              );\n            }\n            current[segment] = [];\n          } else {\n            current[segment] = {};\n          }\n        }\n      }\n\n      current = current[segment];\n    }\n\n    if (Array.isArray(current)) {\n      if (!isNumeric(lastSegment)) {\n        throw new A2uiDataError(\n          `Cannot use non-numeric segment '${lastSegment}' on an array in path '${path}'.`,\n          path,\n        );\n      }\n      const lastIndex = parseInt(lastSegment, 10);\n      if (lastIndex > MAX_ARRAY_INDEX) {\n        throw new A2uiDataError(\n          `Cannot set path '${path}': array index '${lastSegment}' exceeds maximum supported index (${MAX_ARRAY_INDEX}).`,\n          path,\n        );\n      }\n    }\n\n    if (value === undefined || value === null) {\n      if (Array.isArray(current)) {\n        const idx = parseInt(lastSegment, 10);\n        // Deleting an index past the end of the array is a no-op. Assigning\n        // here would extend `length` and materialise entries never set.\n        if (idx < current.length) {\n          current[idx] = undefined;\n        }\n      } else {\n        delete current[lastSegment];\n      }\n    } else {\n      current[lastSegment] = value;\n    }\n\n    this.notifySignals(path);\n    return this;\n  }\n\n  /**\n   * Deletes the value at the specified JSON pointer path.\n   *\n   * If `path` is `'/'` or empty, resets the root data model to an empty object.\n   *\n   * @param path The JSON pointer path to remove.\n   * @returns This `DataModel` instance for chaining.\n   */\n  delete(path: string): this {\n    return this.set(path, undefined);\n  }\n\n  /**\n   * Resolves a relative path against a base context path.\n   *\n   * @param path The path to resolve.\n   * @param contextPath The base path (optional).\n   * @returns The resolved absolute path.\n   */\n  static resolvePath(path: string, contextPath?: string): string {\n    if (path.startsWith('/')) {\n      return path;\n    }\n    if (contextPath) {\n      const base = contextPath.endsWith('/') ? contextPath : `${contextPath}/`;\n      return `${base}${path}`;\n    }\n    return `/${path}`;\n  }\n\n  /**\n   * Retrieves data at a specific JSON pointer path.\n   *\n   * @template T The expected type of the returned value. Defaults to `any`.\n   * @param path The JSON pointer path to read from.\n   * @returns The value at the specified path, or undefined if not found.\n   * @throws {A2uiDataError} If path is null, undefined, or contains forbidden\n   *     segments (`__proto__`, `constructor`, `prototype`).\n   */\n  get<T = any>(path: string): T {\n    if (path === null || path === undefined) {\n      throw new A2uiDataError('Path cannot be null or undefined.');\n    }\n    if (path === '/' || path === '') {\n      return this.data as T;\n    }\n\n    const segments = this.parsePath(path);\n    let current: any = this.data;\n    for (const segment of segments) {\n      if (current === undefined || current === null || typeof current !== 'object') {\n        return undefined as T;\n      }\n\n      if (Array.isArray(current)) {\n        if (!isNumeric(segment)) {\n          return undefined as T;\n        }\n        const index = parseInt(segment, 10);\n        if (index < 0 || index >= current.length) {\n          return undefined as T;\n        }\n        current = current[index];\n      } else {\n        if (!Object.prototype.hasOwnProperty.call(current, segment)) {\n          return undefined as T;\n        }\n        current = current[segment];\n      }\n    }\n    return current as T;\n  }\n\n  /**\n   * Checks whether a JSON pointer path physically exists in the data model.\n   *\n   * Differentiates between a path holding an explicit `null` value (`true`) and\n   * a path that is absent from the object or array hierarchy (`false`).\n   *\n   * @param path Absolute JSON pointer path to check.\n   * @returns Whether every segment along `path` exists in the hierarchy.\n   */\n  hasPath(path: string): boolean {\n    if (path === null || path === undefined) {\n      return false;\n    }\n    return this.get(path) !== undefined;\n  }\n\n  /**\n   * Subscribes to changes at the specified data path.\n   *\n   * This is a backwards-compatible layer using Preact Signals internally. It\n   * allows listeners to be notified whenever the value at the specified path\n   * (or any of its ancestors/descendants) changes.\n   *\n   * @param path The JSON pointer path to observe.\n   * @param onChange A callback fired whenever the value changes.\n   * @returns A `DataSubscription` containing the initial value and an\n   *     `unsubscribe` method.\n   * @throws {A2uiDataError} If path is null, undefined, or contains forbidden\n   *     segments (`__proto__`, `constructor`, `prototype`).\n   */\n  subscribe<T>(path: string, onChange: (value: T | undefined) => void): DataSubscription<T> {\n    const sig = this.getSignal<T>(path);\n    let isSync = true;\n    let currentValue = peekValue(sig);\n\n    const dispose = effect(() => {\n      const val = getValue(sig);\n      currentValue = val;\n      if (!isSync) {\n        onChange(val);\n      }\n    });\n    isSync = false;\n\n    this.subscriptions.add(dispose);\n\n    return {\n      get value() {\n        return currentValue;\n      },\n      unsubscribe: () => {\n        dispose();\n        this.subscriptions.delete(dispose);\n      },\n    };\n  }\n\n  /**\n   * Clears all internal subscriptions and active signals.\n   */\n  dispose(): void {\n    for (const dispose of this.subscriptions) {\n      dispose();\n    }\n    this.subscriptions.clear();\n    this.signals.clear();\n  }\n\n  private normalizePath(path: string): string {\n    if (path.length > 1 && path.endsWith('/')) {\n      return path.slice(0, -1);\n    }\n    return path || '/';\n  }\n\n  private parsePath(path: string): string[] {\n    return path\n      .split('/')\n      .filter(p => p.length > 0)\n      .map(rawSegment => {\n        const segment = rawSegment.replace(/~([01])/g, (_, g) => (g === '1' ? '/' : '~'));\n        if (FORBIDDEN_KEYS.has(segment)) {\n          throw new A2uiDataError(`Forbidden path segment '${segment}' in path '${path}'.`, path);\n        }\n        return segment;\n      });\n  }\n\n  private notifySignals(path: string): void {\n    const normalizedPath = this.normalizePath(path);\n\n    batchWrite(() => {\n      this.updateSignal(normalizedPath);\n\n      // Notify Ancestors\n      let parentPath = normalizedPath;\n      while (parentPath !== '/' && parentPath !== '') {\n        parentPath = parentPath.substring(0, parentPath.lastIndexOf('/')) || '/';\n        this.updateSignal(parentPath);\n      }\n\n      // Notify Descendants\n      for (const subPath of this.signals.keys()) {\n        if (this.isDescendant(subPath, normalizedPath)) {\n          this.updateSignal(subPath);\n        }\n      }\n    });\n  }\n\n  private updateSignal(path: string): void {\n    const sig = this.signals.get(path);\n    if (sig) {\n      const val = this.get(path);\n      if (Array.isArray(val)) {\n        setValue(sig, val.slice());\n      } else if (typeof val === 'object' && val !== null) {\n        setValue(sig, {...val});\n      } else {\n        setValue(sig, val);\n      }\n    }\n  }\n\n  private notifyAllSignals(): void {\n    batchWrite(() => {\n      for (const path of this.signals.keys()) {\n        this.updateSignal(path);\n      }\n    });\n  }\n\n  private isDescendant(childPath: string, parentPath: string): boolean {\n    if (parentPath === '/' || parentPath === '') {\n      return childPath !== '/';\n    }\n    return childPath.startsWith(parentPath + '/');\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {A2uiRecursionError, A2uiValidationError} from '../errors.js';\nimport {Catalog, type ComponentApi} from '../catalog/types.js';\nimport {ProtocolVersion} from '../processing/adapters/base.js';\n\n/** Maximum permitted nesting depth for JSON objects and array structures. */\nexport const MAX_GLOBAL_DEPTH = 50;\n\n/** Maximum permitted recursion depth for nested function calls. */\nexport const MAX_FUNC_CALL_DEPTH = 5;\n\n/** Regex pattern matching valid JSON Pointer syntax (RFC 6901 compliant with optional relative path). */\nexport const RELAXED_PATH_PATTERN =\n  /^(?:(?:\\/(?:[^~/]|~[01])*)*|(?:[^~/]|~[01])+(?:\\/(?:[^~/]|~[01])*)*)$/;\n\nimport {\n  analyzeChildRefSchema,\n  buildComponentRefMap,\n  ChildRefAnalysis,\n  ChildRefAnalysisOptions,\n  ComponentChildRefs,\n  ComponentRefMap,\n  isChildListSchema,\n  isChildOrChildListSchema,\n  isChildSchema,\n} from '../catalog/reference-map.js';\nimport {V08_CHILD_REF_OPTIONS} from '../v0_8/standard_defs.js';\nimport {V09_CHILD_REF_OPTIONS} from '../v0_9/standard_defs.js';\nimport {V10_CHILD_REF_OPTIONS} from '../v1_0/standard_defs.js';\n\nimport {isValidUax31Identifier, assertUax31Identifier} from '../common/uax31.js';\n\nexport type {ChildRefAnalysis, ChildRefAnalysisOptions, ComponentChildRefs, ComponentRefMap};\nexport {\n  analyzeChildRefSchema,\n  assertUax31Identifier,\n  buildComponentRefMap,\n  isChildListSchema,\n  isChildOrChildListSchema,\n  isChildSchema,\n  isValidUax31Identifier,\n  V08_CHILD_REF_OPTIONS,\n  V09_CHILD_REF_OPTIONS,\n  V10_CHILD_REF_OPTIONS,\n};\n\n/**\n * Yields `[referencedId, path]` pairs for every child reference reachable from a\n * property value.\n *\n * @param val The property value to walk.\n * @param currentPath The property path accumulated so far.\n * @param nestedKeys Item sub-keys the catalog declared as child references, for\n *   a list property whose items are structured objects. When omitted, every\n *   sub-key of such an item is walked.\n */\nfunction* extractPointers(\n  val: unknown,\n  currentPath: string,\n  nestedKeys?: ReadonlySet<string>,\n): Generator<[string, string]> {\n  if (typeof val === 'string') {\n    yield [val, currentPath];\n  } else if (Array.isArray(val)) {\n    for (let idx = 0; idx < val.length; idx++) {\n      const item = val[idx];\n      const subPath = `${currentPath}[${idx}]`;\n      yield* extractPointers(item, subPath, nestedKeys);\n    }\n  } else if (typeof val === 'object' && val !== null) {\n    const obj = val as Record<string, unknown>;\n    if (\n      'componentId' in obj &&\n      typeof obj.componentId === 'string' &&\n      ('path' in obj || 'dataBinding' in obj)\n    ) {\n      yield [obj.componentId, `${currentPath}.componentId`];\n    } else if (nestedKeys?.size) {\n      // The catalog declared exactly which sub-keys carry a child, so sibling\n      // properties such as a tab title are not references.\n      for (const subKey of nestedKeys) {\n        if (subKey in obj) {\n          yield* extractPointers(obj[subKey], `${currentPath}.${subKey}`);\n        }\n      }\n    } else {\n      for (const [subKey, subVal] of Object.entries(obj)) {\n        yield* extractPointers(subVal, `${currentPath}.${subKey}`);\n      }\n    }\n  }\n}\n\nfunction getOrCreateRefMap(catalog: Catalog<ComponentApi>): ComponentRefMap {\n  return catalog.componentRefMap;\n}\n\n/**\n * Extracts child component IDs referenced by a component property definition.\n *\n * @param component Component definition object containing properties and metadata.\n * @param catalogOrRefMap Mapping defining single and list reference fields per component type or Catalog instance.\n * @yields Tuple of `[referencedId, propertyPath]` for each child reference found.\n *\n * @example\n * ```ts\n * const refs = Array.from(getComponentReferences(boxComponent, catalog));\n * ```\n */\nexport function* getComponentReferences(\n  component: Record<string, unknown>,\n  catalogOrRefMap: Catalog<ComponentApi> | ComponentRefMap,\n): Generator<[string, string]> {\n  if (!component || typeof component !== 'object') {\n    return;\n  }\n  const refFieldsMap: ComponentRefMap =\n    catalogOrRefMap instanceof Catalog ? getOrCreateRefMap(catalogOrRefMap) : catalogOrRefMap;\n\n  const compVal = component.component;\n  let compType = '';\n  let props: Record<string, unknown> = component;\n\n  if (typeof compVal === 'string') {\n    compType = compVal;\n  } else if (typeof compVal === 'object' && compVal !== null) {\n    const compObj = compVal as Record<string, unknown>;\n    compType = Object.keys(compObj)[0] ?? '';\n    props = (compObj[compType] as Record<string, unknown>) ?? {};\n  }\n\n  if (!compType || typeof props !== 'object' || props === null) {\n    return;\n  }\n\n  const childRefs = refFieldsMap[compType];\n  const singleRefs = childRefs ? childRefs.singleRefs : new Set<string>();\n  const listRefs = childRefs ? childRefs.listRefs : new Set<string>();\n  const nestedRefs = childRefs?.nestedRefs;\n\n  for (const [key, value] of Object.entries(props)) {\n    if (singleRefs.has(key) || listRefs.has(key)) {\n      yield* extractPointers(value, key, nestedRefs?.[key]);\n    }\n  }\n}\n\n/** Configuration options for component topology and hierarchy analysis. */\nexport interface TopologyOptions {\n  /** Expected root component identifier. Defaults to 'root'. */\n  rootId?: string;\n  /** Whether to permit references to non-existent component identifiers. */\n  allowDanglingReferences?: boolean;\n  /** Whether to allow components that are not reachable from the root node. */\n  allowOrphanComponents?: boolean;\n  /** Whether to allow a component tree that does not contain a root component. */\n  allowMissingRoot?: boolean;\n  /** Maximum permitted global graph traversal depth. Defaults to 50. */\n  maxDepth?: number;\n}\n\n/** Combined configuration specifying topology, version, and catalog validation rules. */\nexport interface ValidationConfig extends TopologyOptions {\n  /** Target protocol version expected for incoming messages (e.g. 'v0.8', 'v0.9', 'v1.0'). */\n  targetVersion?: ProtocolVersion | string;\n  /** Whether to allow component types that do not exist in the surface catalog. Defaults to false. */\n  allowUnknownElements?: boolean;\n  /** Allowed top-level message operation types (e.g. ['createSurface', 'updateComponents']). */\n  allowedMessages?: string[];\n}\n\n/** Strict validation configuration requiring root node presence, no orphans, valid references, and catalog compliance. */\nexport const STRICT_VALIDATION: ValidationConfig = Object.freeze({\n  allowOrphanComponents: false,\n  allowDanglingReferences: false,\n  allowMissingRoot: false,\n  allowUnknownElements: false,\n});\n\n/** Relaxed validation configuration permitting orphan components, missing root, dangling references, and unknown elements. */\nexport const RELAXED_VALIDATION: ValidationConfig = Object.freeze({\n  allowOrphanComponents: true,\n  allowDanglingReferences: true,\n  allowMissingRoot: true,\n  allowUnknownElements: true,\n});\n\nfunction traverseRecursionAndPaths(item: unknown, globalDepth: number, funcDepth: number): void {\n  if (globalDepth > MAX_GLOBAL_DEPTH) {\n    throw new A2uiRecursionError(`Global recursion limit exceeded: Depth > ${MAX_GLOBAL_DEPTH}`);\n  }\n\n  if (Array.isArray(item)) {\n    for (const x of item) {\n      traverseRecursionAndPaths(x, globalDepth + 1, funcDepth);\n    }\n    return;\n  }\n\n  if (typeof item === 'object' && item !== null) {\n    const obj = item as Record<string, unknown>;\n    if ('path' in obj && typeof obj.path === 'string') {\n      const path = obj.path;\n      if (!RELAXED_PATH_PATTERN.test(path)) {\n        throw new A2uiValidationError(`Invalid path syntax: '${path}'`);\n      }\n    }\n\n    const isFunctionCallWrapper =\n      'functionCall' in obj && typeof obj.functionCall === 'object' && obj.functionCall !== null;\n    const isBareFunctionCall = 'call' in obj && 'args' in obj;\n\n    if (isFunctionCallWrapper) {\n      if (funcDepth >= MAX_FUNC_CALL_DEPTH) {\n        throw new A2uiRecursionError(\n          `Recursion limit exceeded: functionCall depth > ${MAX_FUNC_CALL_DEPTH}`,\n        );\n      }\n      for (const [k, v] of Object.entries(obj)) {\n        if (k === 'functionCall') {\n          traverseRecursionAndPaths(v, globalDepth + 1, funcDepth + 1);\n        } else {\n          traverseRecursionAndPaths(v, globalDepth + 1, funcDepth);\n        }\n      }\n    } else if (isBareFunctionCall) {\n      if (funcDepth >= MAX_FUNC_CALL_DEPTH) {\n        throw new A2uiRecursionError(\n          `Recursion limit exceeded: functionCall depth > ${MAX_FUNC_CALL_DEPTH}`,\n        );\n      }\n      for (const [k, v] of Object.entries(obj)) {\n        if (k === 'args') {\n          traverseRecursionAndPaths(v, globalDepth + 1, funcDepth + 1);\n        } else {\n          traverseRecursionAndPaths(v, globalDepth + 1, funcDepth);\n        }\n      }\n    } else {\n      for (const v of Object.values(obj)) {\n        traverseRecursionAndPaths(v, globalDepth + 1, funcDepth);\n      }\n    }\n  }\n}\n\n/**\n * Traverses a JSON data payload to validate path syntax and recursion limits.\n *\n * @param data Data payload or component hierarchy to evaluate.\n * @throws {A2uiRecursionError} If global structure depth or function call depth exceeds limits.\n * @throws {A2uiValidationError} If an invalid JSON Pointer path format is encountered.\n */\nexport function validateRecursionAndPaths(data: unknown): void {\n  traverseRecursionAndPaths(data, 0, 0);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {ComponentModel} from './component-model.js';\nimport {EventEmitter, EventSource} from '../common/events.js';\nimport {\n  A2uiIntegrityError,\n  A2uiRecursionError,\n  A2uiStateError,\n  A2uiValidationError,\n} from '../errors.js';\nimport {Catalog} from '../catalog/types.js';\nimport {\n  ComponentRefMap,\n  getComponentReferences,\n  MAX_GLOBAL_DEPTH,\n  ValidationConfig,\n} from '../validation/integrity-checker.js';\n\n/**\n * Collection model of components on a surface supporting topology validation and cycle detection.\n */\nexport class SurfaceComponentsModel {\n  private components: Map<string, ComponentModel> = new Map();\n  private refMap?: ComponentRefMap;\n\n  private readonly _onCreated = new EventEmitter<ComponentModel>();\n  private readonly _onDeleted = new EventEmitter<string>();\n\n  /** Event source firing when a new component is added to the model. */\n  readonly onCreated: EventSource<ComponentModel> = this._onCreated;\n  /** Event source firing when a component is removed from the model. */\n  readonly onDeleted: EventSource<string> = this._onDeleted;\n\n  /**\n   * Initializes a new `SurfaceComponentsModel` instance.\n   *\n   * @param catalogOrRefMap Optional Catalog or precomputed ComponentRefMap used for schema-driven child reference extraction.\n   */\n  constructor(catalogOrRefMap?: Catalog<any, any> | ComponentRefMap) {\n    if (catalogOrRefMap) {\n      this.setCatalog(catalogOrRefMap);\n    }\n  }\n\n  /**\n   * Associates a catalog or reference map with this model for schema-driven child detection.\n   *\n   * @param catalogOrRefMap Catalog instance or ComponentRefMap.\n   */\n  setCatalog(catalogOrRefMap: Catalog<any, any> | ComponentRefMap): void {\n    this.refMap =\n      catalogOrRefMap instanceof Catalog ? catalogOrRefMap.componentRefMap : catalogOrRefMap;\n  }\n\n  /**\n   * Retrieves a component by its ID.\n   *\n   * @param id The ID of the component to retrieve.\n   * @returns The component model, or undefined if not found.\n   */\n  get(id: string): ComponentModel | undefined {\n    return this.components.get(id);\n  }\n\n  /**\n   * Returns a copy of the internal component map.\n   *\n   * @returns Map of component models keyed by component ID.\n   */\n  getAll(): Map<string, ComponentModel> {\n    return new Map(this.components);\n  }\n\n  /**\n   * Checks whether a component with the specified ID exists in the model.\n   *\n   * @param id Component identifier to check.\n   * @returns Whether the component exists in the model.\n   */\n  has(id: string): boolean {\n    return this.components.has(id);\n  }\n\n  /**\n   * Returns an iterator over the component ID and model entries.\n   */\n  get entries(): IterableIterator<[string, ComponentModel]> {\n    return this.components.entries();\n  }\n\n  /**\n   * Returns an iterator over all component IDs in the model.\n   */\n  get keys(): IterableIterator<string> {\n    return this.components.keys();\n  }\n\n  /**\n   * Returns an iterator over all component models in the model.\n   */\n  get values(): IterableIterator<ComponentModel> {\n    return this.components.values();\n  }\n\n  /**\n   * Total number of components in the model.\n   */\n  get size(): number {\n    return this.components.size;\n  }\n\n  /**\n   * Returns a readonly map of all active components in the model.\n   */\n  get componentsMap(): ReadonlyMap<string, ComponentModel> {\n    return this.components;\n  }\n\n  /**\n   * Adds a component to the model.\n   * Throws an error if a component with the same ID already exists.\n   *\n   * @param component The component to add.\n   */\n  addComponent(component: ComponentModel): void {\n    if (this.components.has(component.id)) {\n      throw new A2uiStateError(`Component with id '${component.id}' already exists.`);\n    }\n\n    this.components.set(component.id, component);\n    this._onCreated.emit(component);\n  }\n\n  /**\n   * Removes a component from the model by its ID.\n   * Disposes of the component upon removal.\n   *\n   * @param id The ID of the component to remove.\n   */\n  removeComponent(id: string): void {\n    const component = this.components.get(id);\n    if (component) {\n      this.components.delete(id);\n      component.dispose();\n      this._onDeleted.emit(id);\n    }\n  }\n\n  /**\n   * Extracts child component references for a given component identifier.\n   *\n   * @param componentId The ID of the component whose children should be resolved.\n   * @returns Array of tuples containing `[referencedId, propertyPath]`.\n   */\n  getChildReferences(componentId: string): Array<[referencedId: string, propertyPath: string]> {\n    const comp = this.components.get(componentId);\n    if (!comp) return [];\n\n    const refMap: ComponentRefMap = comp.catalog?.components.size\n      ? comp.catalog.componentRefMap\n      : (this.refMap ?? comp.catalog?.componentRefMap ?? {});\n    return Array.from(\n      getComponentReferences({id: comp.id, component: comp.type, ...comp.properties}, refMap),\n    );\n  }\n\n  /**\n   * Returns array of referenced child component IDs for a given component identifier.\n   *\n   * @param componentId The ID of the component whose child IDs should be retrieved.\n   * @returns Array of unique child component IDs.\n   */\n  getChildIds(componentId: string): string[] {\n    return this.getChildReferences(componentId).map(([refId]) => refId);\n  }\n\n  /**\n   * Detects self-references, circular dependencies, and exceeds depth limits via DFS.\n   *\n   * @param options Configuration specifying root node, max depth, or allowing missing root.\n   * @returns Set of visited component identifiers.\n   * @throws {A2uiRecursionError} When self-reference, cycle, or max depth limit is exceeded.\n   */\n  detectCycles(\n    options: {rootId?: string; maxDepth?: number; allowMissingRoot?: boolean} = {},\n  ): Set<string> {\n    const rootId = options.rootId ?? 'root';\n    const maxDepth = options.maxDepth ?? MAX_GLOBAL_DEPTH;\n    const allowMissingRoot = options.allowMissingRoot ?? false;\n\n    // 1. Check for immediate self-references across all components\n    for (const comp of this.components.values()) {\n      for (const [childId, fieldName] of this.getChildReferences(comp.id)) {\n        if (childId === comp.id) {\n          throw new A2uiRecursionError(\n            `Circular reference detected: Component '${comp.id}' references itself in field '${fieldName}' (Self-reference detected)`,\n          );\n        }\n      }\n    }\n\n    const visited = new Set<string>();\n    const recursionStack = new Set<string>();\n\n    const dfs = (nodeId: string, depth: number) => {\n      if (depth > maxDepth) {\n        throw new A2uiRecursionError(\n          `Global recursion limit exceeded: logical depth > ${maxDepth}`,\n        );\n      }\n\n      visited.add(nodeId);\n      recursionStack.add(nodeId);\n\n      const childIds = this.getChildIds(nodeId);\n      for (const childId of childIds) {\n        if (!this.components.has(childId)) {\n          continue;\n        }\n        if (!visited.has(childId)) {\n          dfs(childId, depth + 1);\n        } else if (recursionStack.has(childId)) {\n          throw new A2uiRecursionError(\n            `Circular reference detected involving component '${childId}'`,\n          );\n        }\n      }\n\n      recursionStack.delete(nodeId);\n    };\n\n    if (allowMissingRoot) {\n      const sortedIds = Array.from(this.components.keys()).sort();\n      for (const nodeId of sortedIds) {\n        if (!visited.has(nodeId)) {\n          dfs(nodeId, 0);\n        }\n      }\n    } else {\n      if (this.components.has(rootId)) {\n        dfs(rootId, 0);\n      }\n    }\n\n    return visited;\n  }\n\n  /**\n   * Validates topology, completeness, and references across the component hierarchy.\n   *\n   * @param options Validation settings (allowMissingRoot, allowDanglingReferences, allowOrphanComponents).\n   * @throws {A2uiIntegrityError} If missing root, dangling references, or orphan components exist.\n   * @throws {A2uiRecursionError} If self-reference, cycle, or depth limit is detected.\n   */\n  validateTopology(options: ValidationConfig = {}): void {\n    if (this.components.size === 0) return;\n\n    const rootId = options.rootId ?? 'root';\n    const allowMissingRoot = options.allowMissingRoot ?? false;\n    const allowDanglingReferences = options.allowDanglingReferences ?? false;\n    const allowOrphanComponents = options.allowOrphanComponents ?? false;\n\n    // 1. Missing Root Check\n    if (!allowMissingRoot && !this.components.has(rootId)) {\n      throw new A2uiIntegrityError(`Missing root component: No component has id='${rootId}'`);\n    }\n\n    // 2. Dangling References Check\n    if (!allowDanglingReferences) {\n      for (const comp of this.components.values()) {\n        for (const [childId, fieldName] of this.getChildReferences(comp.id)) {\n          if (!this.components.has(childId)) {\n            throw new A2uiIntegrityError(\n              `Component '${comp.id}' references non-existent component '${childId}' in field '${fieldName}' (Dangling reference '${childId}' in component '${comp.id}')`,\n            );\n          }\n        }\n      }\n    }\n\n    // 3. Cycle & Depth Detection\n    const visited = this.detectCycles({rootId, allowMissingRoot, maxDepth: options.maxDepth});\n\n    // 4. Orphan Components Check\n    if (!allowOrphanComponents && !allowMissingRoot) {\n      if (visited.size < this.components.size) {\n        const orphans = Array.from(this.components.keys())\n          .filter(id => !visited.has(id))\n          .sort();\n        if (orphans.length > 0) {\n          throw new A2uiIntegrityError(\n            `Component '${orphans[0]}' is not reachable from '${rootId}' (Orphaned component '${orphans[0]}' is not reachable from root)`,\n          );\n        }\n      }\n    }\n  }\n\n  /**\n   * Performs non-throwing validation of references and topology across the component graph.\n   * Returns an array containing the first validation error encountered, or an empty array if valid.\n   *\n   * @param options Validation options.\n   * @returns Array of validation error objects.\n   */\n  validateReferences(options: ValidationConfig = {}): A2uiValidationError[] {\n    const errors: A2uiValidationError[] = [];\n    try {\n      this.validateTopology(options);\n    } catch (err) {\n      if (err instanceof A2uiValidationError) {\n        errors.push(err);\n      } else if (err instanceof Error) {\n        errors.push(new A2uiValidationError(err.message));\n      }\n    }\n    return errors;\n  }\n\n  /**\n   * Disposes the model, clearing all components and update event emitters.\n   */\n  dispose(): void {\n    for (const component of this.components.values()) {\n      component.dispose();\n    }\n    this.components.clear();\n    this._onCreated.dispose();\n    this._onDeleted.dispose();\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DataModel} from './data-model.js';\nimport {Catalog, ComponentApi, FunctionApi, FunctionImplementation} from '../catalog/types.js';\nimport {SurfaceComponentsModel} from './surface-components-model.js';\nimport {EventEmitter, EventSource} from '../common/events.js';\n\n/** Action payload emitted by a renderer component. */\nexport interface ActionPayload {\n  /** Name of the action or function being invoked. */\n  name: string;\n  /** Identifier of the surface where the action originated. */\n  surfaceId: string;\n  /** Identifier of the component that triggered the action. */\n  sourceComponentId: string;\n  /** ISO 8601 timestamp recorded when the action was dispatched. */\n  timestamp: string;\n  /** Context parameters or arguments passed with the action. */\n  context: Record<string, unknown>;\n  /**\n   * Identifier of the catalog that declares the invoked function, when the\n   * payload named one explicitly. Absent when the surface's default catalog\n   * resolved the call.\n   */\n  catalogId?: string;\n  /** Optional user-facing message explaining the action. */\n  userMessage?: string;\n  [key: string]: unknown;\n}\n\n/** Error payload emitted by a surface. */\nexport interface A2uiErrorPayload {\n  /** Machine-readable error code identifying the error category. */\n  code: string;\n  /** Human-readable error message describing the failure. */\n  message: string;\n  /** Identifier of the surface where the error occurred, if applicable. */\n  surfaceId?: string;\n  /** Expression string or function name that caused the error, if applicable. */\n  expression?: string;\n  /** Additional diagnostic details or validation issues. */\n  details?: Record<string, unknown>;\n  [key: string]: unknown;\n}\n\n/**\n * Payload emitted on `SurfaceModel.onWarning` when a non-fatal condition\n * occurs during surface evaluation (such as a bound JSON Pointer that does not\n * physically exist in the active DataModel).\n */\nexport interface A2uiWarningPayload {\n  /** Machine-readable warning code (e.g. `'MISSING_DATA_BINDING'`). */\n  code: 'MISSING_DATA_BINDING' | (string & {});\n  /** Absolute JSON pointer path associated with the warning, if applicable. */\n  path?: string;\n  /** Human-readable explanation of the warning condition. */\n  message: string;\n  /** Identifier of the surface where the warning occurred, if bound. */\n  surfaceId?: string;\n  [key: string]: unknown;\n}\n\n/** Handler callback for actions emitted from a surface. */\nexport type ActionListener = (action: ActionPayload) => void | Promise<void>;\n\n/**\n * State model for a single UI surface.\n *\n * Coordinates data binding, component state, and action dispatching.\n *\n * @template T Concrete type of the ComponentApi from the catalog.\n * @template F The catalog's function kind. Every state and messaging\n *   capability of the surface works with a schema-only catalog\n *   (`SurfaceModel<T, FunctionApi>`); only node-tree resolution needs\n *   implementations.\n */\nexport class SurfaceModel<\n  T extends ComponentApi = ComponentApi,\n  F extends FunctionApi = FunctionImplementation,\n> {\n  /** Data model for this surface. */\n  readonly dataModel: DataModel;\n  /** Collection of component models for this surface. */\n  readonly componentsModel: SurfaceComponentsModel;\n\n  private readonly _onAction = new EventEmitter<ActionPayload>();\n  private readonly _onError = new EventEmitter<A2uiErrorPayload>();\n  private readonly _onWarning = new EventEmitter<A2uiWarningPayload>();\n\n  /** Event source firing whenever an action is dispatched from this surface. */\n  readonly onAction: EventSource<ActionPayload> = this._onAction;\n\n  /** Event source firing whenever an error occurs on this surface. */\n  readonly onError: EventSource<A2uiErrorPayload> = this._onError;\n\n  /** Event source firing whenever a non-fatal warning occurs on this surface. */\n  readonly onWarning: EventSource<A2uiWarningPayload> = this._onWarning;\n\n  /**\n   * Catalogs available to this surface, keyed by catalog ID.\n   *\n   * Payloads on this surface may select any of these catalogs by `catalogId`.\n   * Includes the surface's {@link defaultCatalog} under its identifier.\n   */\n  readonly availableCatalogs: ReadonlyMap<string, Catalog<T, F>>;\n\n  /**\n   * Initializes a new `SurfaceModel` instance.\n   *\n   * @param id Unique identifier for this surface.\n   * @param defaultCatalog Catalog that resolves components and functions that\n   *   do not name a catalog explicitly.\n   * @param availableCatalogs Every catalog a payload on this surface may select\n   *   by `catalogId`, keyed by that identifier. The message processor populates\n   *   it with the catalogs whose protocol version is compatible with the\n   *   surface's own.\n   * @param theme Theme to apply to this surface.\n   * @param sendDataModel Whether the renderer sends the full data model with actions.\n   * @param dataModel Optional custom DataModel instance. If provided, the SurfaceModel assumes\n   *   full ownership of its lifecycle and will dispose it when dispose() is called.\n   * @param rootId Identifier of the root component on this surface (defaults to `'root'`).\n   */\n  constructor(\n    readonly id: string,\n    /**\n     * Catalog that resolves components and functions that do not name a\n     * catalog explicitly.\n     */\n    readonly defaultCatalog: Catalog<T, F>,\n    availableCatalogs: ReadonlyMap<string, Catalog<T, F>> | null | undefined = new Map(),\n    readonly theme: any = {},\n    readonly sendDataModel: boolean = false,\n    dataModel?: DataModel,\n    /** Identifier of the root component on this surface (defaults to `'root'`). */\n    readonly rootId: string = 'root',\n  ) {\n    if (\n      availableCatalogs !== undefined &&\n      availableCatalogs !== null &&\n      !(availableCatalogs instanceof Map)\n    ) {\n      throw new TypeError(\n        'availableCatalogs must be a Map, or undefined/null. Note that availableCatalogs is now the 3rd argument to SurfaceModel and theme is the 4th argument.',\n      );\n    }\n    const catalogs = new Map(availableCatalogs ?? []);\n    if (defaultCatalog?.id && !catalogs.has(defaultCatalog.id)) {\n      catalogs.set(defaultCatalog.id, defaultCatalog);\n    }\n    this.availableCatalogs = catalogs;\n    this.dataModel = dataModel ?? new DataModel({});\n    this.componentsModel = new SurfaceComponentsModel(defaultCatalog);\n  }\n\n  /**\n   * The surface's default catalog.\n   *\n   * @deprecated Use {@link defaultCatalog}. Renamed for symmetry with the other\n   *   SDKs now that a surface can carry more than one catalog. This alias will\n   *   be removed in a future release.\n   */\n  get catalog(): Catalog<T, F> {\n    return this.defaultCatalog;\n  }\n\n  /**\n   * Dispatches an action from this surface to registered listeners.\n   *\n   * Resolves event action payload details, propagates any explicit `catalogId`,\n   * and emits an `ActionPayload` via `onAction`. Local function actions (`functionCall`)\n   * are executed locally and are not emitted as agent actions.\n   *\n   * @param payload Action payload (name and context) to dispatch.\n   * @param sourceComponentId Identifier of the component that triggered the action.\n   * @returns A promise that resolves once all registered listeners have processed the action.\n   */\n  async dispatchAction(payload: any, sourceComponentId: string): Promise<void> {\n    if (!payload || typeof payload !== 'object') {\n      return;\n    }\n\n    const eventPayload = extractActionTarget(payload);\n    if (!eventPayload) {\n      return;\n    }\n\n    const name = eventPayload.name;\n    if (!name || typeof name !== 'string') {\n      return;\n    }\n\n    const rawContext = eventPayload.context;\n    const context =\n      rawContext && typeof rawContext === 'object' && !Array.isArray(rawContext)\n        ? (rawContext as Record<string, unknown>)\n        : {};\n\n    const actionToDispatch: ActionPayload = {\n      name,\n      surfaceId: this.id,\n      sourceComponentId,\n      timestamp: new Date().toISOString(),\n      context,\n    };\n\n    // Only set the key when the payload named a catalog, so listeners can\n    // distinguish an explicit override from default-catalog resolution.\n    const catalogId = eventPayload.catalogId ?? payload.catalogId;\n    if (typeof catalogId === 'string' && catalogId) {\n      actionToDispatch.catalogId = catalogId;\n    }\n\n    if (typeof eventPayload.userMessage === 'string' && eventPayload.userMessage.length > 0) {\n      actionToDispatch.userMessage = eventPayload.userMessage;\n    }\n\n    await this._onAction.emit(actionToDispatch);\n  }\n\n  /**\n   * Dispatches an error from this surface to registered listeners.\n   *\n   * @param error Error payload to dispatch, conforming to the renderer-to-agent schema.\n   * @returns A promise that resolves once all registered listeners have processed the error.\n   */\n  async dispatchError(error: A2uiErrorPayload): Promise<void> {\n    await this._onError.emit({\n      ...error,\n      surfaceId: this.id,\n    });\n  }\n\n  /**\n   * Dispatches a non-fatal warning from this surface to registered listeners.\n   *\n   * @param warning The warning payload to dispatch.\n   * @returns Promise that resolves once listeners have handled the warning.\n   */\n  async dispatchWarning(warning: A2uiWarningPayload): Promise<void> {\n    await this._onWarning.emit({\n      ...warning,\n      surfaceId: this.id,\n    });\n  }\n\n  /**\n   * Disposes the surface, data model, components, and event emitters.\n   */\n  dispose(): void {\n    this.dataModel.dispose();\n    this.componentsModel.dispose();\n    this._onAction.dispose();\n    this._onError.dispose();\n    this._onWarning.dispose();\n  }\n}\n\n/**\n * Extracts the inner action target payload (`event` or direct action payload).\n *\n * @param payload Raw action payload object.\n * @returns The unwrapped action object, or `null` if none is present.\n */\nfunction extractActionTarget(payload: Record<string, any>): Record<string, any> | null {\n  if ('event' in payload && payload.event && typeof payload.event === 'object') {\n    return payload.event;\n  }\n  if ('name' in payload && typeof payload.name === 'string') {\n    return payload;\n  }\n  return null;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {SurfaceModel, ActionPayload} from './surface-model.js';\nimport {ComponentApi} from '../catalog/types.js';\nimport {EventEmitter, EventSource, Subscription} from '../common/events.js';\n\n/**\n * Root state model managing a collection of active surfaces.\n *\n * @template T Component API type definition.\n */\nexport class SurfaceGroupModel<T extends ComponentApi> {\n  private surfaces: Map<string, SurfaceModel<T>> = new Map();\n  private surfaceUnsubscribers: Map<string, Subscription> = new Map();\n\n  private readonly _onSurfaceCreated = new EventEmitter<SurfaceModel<T>>();\n  private readonly _onSurfaceDeleted = new EventEmitter<string>();\n  private readonly _onAction = new EventEmitter<ActionPayload>();\n\n  /** Event source firing when a new surface is added. */\n  readonly onSurfaceCreated: EventSource<SurfaceModel<T>> = this._onSurfaceCreated;\n  /** Event source firing when a surface is removed. */\n  readonly onSurfaceDeleted: EventSource<string> = this._onSurfaceDeleted;\n  /** Event source firing when an action is dispatched from any surface in the group. */\n  readonly onAction: EventSource<ActionPayload> = this._onAction;\n\n  /**\n   * Adds a surface to the group.\n   *\n   * Ignores if a surface with the same ID already exists.\n   *\n   * @param surface The surface model to add.\n   */\n  addSurface(surface: SurfaceModel<T>): void {\n    if (this.surfaces.has(surface.id)) {\n      console.warn(`Surface ${surface.id} already exists. Ignoring.`);\n      return;\n    }\n\n    this.surfaces.set(surface.id, surface);\n\n    // Subscribe to surface actions and propagate\n    const sub = surface.onAction.subscribe(action => this._onAction.emit(action));\n    this.surfaceUnsubscribers.set(surface.id, sub);\n\n    this._onSurfaceCreated.emit(surface);\n  }\n\n  /**\n   * Removes a surface from the group by its ID.\n   *\n   * Disposes of the surface upon removal.\n   *\n   * @param id The ID of the surface to remove.\n   */\n  deleteSurface(id: string): void {\n    const surface = this.surfaces.get(id);\n    if (surface) {\n      const sub = this.surfaceUnsubscribers.get(id);\n      if (sub) {\n        sub.unsubscribe();\n        this.surfaceUnsubscribers.delete(id);\n      }\n\n      this.surfaces.delete(id);\n      surface.dispose();\n      this._onSurfaceDeleted.emit(id);\n    }\n  }\n\n  /**\n   * Retrieves a surface by its ID.\n   *\n   * @param id The ID of the surface to retrieve.\n   * @returns The surface model, or undefined if not found.\n   */\n  getSurface(id: string): SurfaceModel<T> | undefined {\n    return this.surfaces.get(id);\n  }\n\n  /**\n   * Readonly map of all active surfaces keyed by surface ID.\n   */\n  get surfacesMap(): ReadonlyMap<string, SurfaceModel<T>> {\n    return this.surfaces;\n  }\n\n  /**\n   * Disposes the group and all contained surfaces.\n   */\n  dispose(): void {\n    for (const id of Array.from(this.surfaces.keys())) {\n      this.deleteSurface(id);\n    }\n    this._onSurfaceCreated.dispose();\n    this._onSurfaceDeleted.dispose();\n    this._onAction.dispose();\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {EventEmitter, EventSource} from '../common/events.js';\nimport {Catalog} from '../catalog/types.js';\n\n/**\n * State model for an individual UI component.\n */\nexport class ComponentModel {\n  private _properties: Record<string, any>;\n  private readonly _onUpdated = new EventEmitter<ComponentModel>();\n\n  /**\n   * Event source firing whenever component properties are updated.\n   */\n  readonly onUpdated: EventSource<ComponentModel> = this._onUpdated;\n\n  /**\n   * Initializes a new `ComponentModel` instance.\n   *\n   * @param id The unique identifier for this component.\n   * @param type The component type name.\n   * @param initialProperties The initial properties for the component.\n   * @param catalog Optional catalog associated with this component.\n   */\n  constructor(\n    readonly id: string,\n    readonly type: string,\n    initialProperties: Record<string, any>,\n    readonly catalog?: Catalog<any, any>,\n  ) {\n    this._properties = initialProperties;\n  }\n\n  /**\n   * Current properties of the component.\n   */\n  get properties(): Record<string, any> {\n    return this._properties;\n  }\n\n  set properties(newProperties: Record<string, any>) {\n    this._properties = newProperties;\n    this._onUpdated.emit(this);\n  }\n\n  /**\n   * Disposes the component model and its update event emitters.\n   */\n  dispose(): void {\n    this._onUpdated.dispose();\n  }\n\n  /**\n   * Serialized JSON representation of the component definition.\n   */\n  get componentTree(): any {\n    return {\n      id: this.id,\n      type: this.type,\n      ...this._properties,\n    };\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\n\n/**\n * Formats a single Zod issue into a human-readable diagnostic message.\n *\n * Direct attribute extraction is used so that issue details (such as unrecognized\n * property keys or invalid enum options) are preserved even when running in\n * optimized/minified production builds where Zod's internal error map messages\n * may be obfuscated or stripped.\n *\n * @param err Zod validation issue to format.\n * @return Human-readable formatted error message.\n */\nexport function formatZodIssue(err: z.ZodIssue): string {\n  const path = err.path.join('.') || 'root';\n\n  switch (err.code) {\n    case z.ZodIssueCode.invalid_union: {\n      const unionIssues = (err as z.ZodInvalidUnionIssue).unionErrors?.flatMap(uErr => uErr.issues);\n      if (unionIssues && unionIssues.length > 0) {\n        return unionIssues.map(formatZodIssue).join('; ');\n      }\n      return `${path}: Invalid union`;\n    }\n\n    case z.ZodIssueCode.unrecognized_keys: {\n      const keysStr = (err as z.ZodUnrecognizedKeysIssue).keys.map(k => `'${k}'`).join(', ');\n      return `${path}: Unrecognized key(s) in object: ${keysStr}`;\n    }\n\n    case z.ZodIssueCode.invalid_enum_value: {\n      const issue = err as z.ZodInvalidEnumValueIssue;\n      const optionsStr = issue.options.map(o => String(o)).join(' | ');\n      return `${path}: Invalid enum value. Expected ${optionsStr}, received '${String(issue.received)}'`;\n    }\n\n    case z.ZodIssueCode.invalid_type: {\n      const issue = err as z.ZodInvalidTypeIssue;\n      return `${path}: Expected ${issue.expected}, received ${issue.received}`;\n    }\n\n    case z.ZodIssueCode.custom:\n      return `${path}: ${err.message}`;\n\n    default:\n      return err.message ? `${path}: ${err.message}` : `${path}: Validation error (${err.code})`;\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {InternalOperation} from '../operations.js';\nimport {A2uiValidationError} from '../../errors.js';\nimport {formatZodIssue} from '../format-zod-issue.js';\nimport {SemVer, normalizeVersionString, toSemVer, toCanonicalVersion} from '../../common/semver.js';\n\n/**\n * Union of supported A2UI protocol version strings.\n */\nexport type ProtocolVersion = 'v0.8' | 'v0.9' | 'v0.9.1' | 'v1.0' | (string & {});\n\n/**\n * Canonical protocol versions supported by the A2UI runtime.\n */\nexport const SUPPORTED_PROTOCOL_VERSIONS: ReadonlySet<string> = new Set([\n  '0.8',\n  '0.9',\n  '0.9.1',\n  '1.0',\n]);\n\n/**\n * Default explicit catalog-to-message protocol compatibility mapping.\n *\n * Maps an incoming message or surface protocol version to the set of catalog\n * protocol specification versions that it can accommodate.\n */\nexport const DEFAULT_CATALOG_COMPATIBILITY: Readonly<Record<string, ReadonlySet<string>>> = {\n  '0.8': new Set(['0.8']),\n  '0.9': new Set(['0.9', '0.9.1']),\n  '0.9.1': new Set(['0.9.1', '0.9']),\n  '1.0': new Set(['1.0']),\n};\n\n/**\n * Evaluates whether a catalog protocol version is compatible with an incoming message or surface version.\n *\n * Compatibility is verified against explicit supported version sets.\n * Minor formatting differences ('v1.0', '1.0', '1.0.0', 'v1_0') normalize to the same canonical version.\n *\n * @param catalogVersion The catalog's declared protocol version.\n * @param messageVersion The incoming message or surface declared protocol version.\n * @param compatibilityMap Optional explicit compatibility mapping. Defaults to DEFAULT_CATALOG_COMPATIBILITY.\n * @return Whether the catalog version is compatible with the message version.\n */\nexport function isCatalogVersionCompatible(\n  catalogVersion: string | SemVer | undefined | null,\n  messageVersion: string | SemVer | undefined | null,\n  compatibilityMap: Readonly<Record<string, ReadonlySet<string>>> = DEFAULT_CATALOG_COMPATIBILITY,\n): boolean {\n  if (!catalogVersion || !messageVersion) {\n    return false;\n  }\n  const catalogCanonical = toCanonicalVersion(catalogVersion);\n  const messageCanonical = toCanonicalVersion(messageVersion);\n  if (catalogCanonical && messageCanonical) {\n    if (catalogCanonical === messageCanonical) {\n      return true;\n    }\n    const compatible = compatibilityMap[messageCanonical];\n    if (compatible && compatible.has(catalogCanonical)) {\n      return true;\n    }\n    // For SemVer >= 1.0.0, releases within the same major version are compatible,\n    // ignoring pre-release identifiers.\n    const catalogSemver = toSemVer(catalogVersion);\n    const messageSemver = toSemVer(messageVersion);\n    if (\n      catalogSemver &&\n      messageSemver &&\n      catalogSemver.major >= 1 &&\n      catalogSemver.major === messageSemver.major\n    ) {\n      return true;\n    }\n    return false;\n  }\n  // Fallback for non-semver custom identifiers (e.g. 'custom' vs 'Vcustom')\n  if (typeof catalogVersion !== 'string' || typeof messageVersion !== 'string') {\n    return false;\n  }\n  const normalizedCatalog = normalizeVersionString(catalogVersion);\n  const normalizedMessage = normalizeVersionString(messageVersion);\n  return normalizedCatalog.length > 0 && normalizedCatalog === normalizedMessage;\n}\n\n/**\n * Resolves a version adapter for a given protocol version or raw payload.\n */\nexport interface VersionAdapterResolver {\n  /** Resolves an adapter by protocol version string. */\n  getAdapter(version: ProtocolVersion | string): VersionAdapter;\n  /** Resolves an adapter from a raw message payload. */\n  resolveFromPayload(payload: unknown): VersionAdapter;\n}\n\n/**\n * Isolates protocol syntax differences across specification versions.\n */\nexport interface VersionAdapter {\n  /** Protocol version string supported by this adapter (e.g. 'v1.0'). */\n  readonly version: ProtocolVersion;\n\n  /** Set of canonical catalog protocol versions compatible with this adapter. */\n  readonly compatibleCatalogVersions?: ReadonlySet<string>;\n\n  /** Set of action keys supported by this version adapter. */\n  readonly validActions?: ReadonlySet<string>;\n\n  /**\n   * Checks if a catalog protocol version is compatible with this adapter.\n   *\n   * @param catalogVersion The catalog's declared protocol version.\n   * @return Whether the catalog version is compatible.\n   */\n  isCatalogCompatible?(catalogVersion: string | SemVer | undefined | null): boolean;\n\n  /**\n   * Converts a raw message payload or payload list into canonical internal operations.\n   *\n   * @param payload The raw JSON message payload or message array.\n   * @returns Array of canonical internal operations.\n   */\n  extractOperations(payload: unknown): InternalOperation[];\n}\n\n/** Provider callback returning the set of all known action keys across registered adapters. */\nexport type KnownActionsProvider = () => ReadonlySet<string>;\n\nlet globalKnownActionsProvider: KnownActionsProvider | undefined;\n\n/**\n * Registers a provider callback to dynamically supply known action keys across adapters.\n *\n * @param provider Callback returning a ReadonlySet of all known action keys.\n */\nexport function registerKnownActionsProvider(provider: KnownActionsProvider): void {\n  globalKnownActionsProvider = provider;\n}\n\nfunction validateActionSurfaceIds(\n  msgObj: Record<string, unknown>,\n  actionKeys: readonly string[],\n): void {\n  for (const key of actionKeys) {\n    const actionVal = msgObj[key];\n    if (actionVal && typeof actionVal === 'object') {\n      const actionObj = actionVal as Record<string, unknown>;\n      if (\n        'surfaceId' in actionObj &&\n        actionObj.surfaceId !== undefined &&\n        typeof actionObj.surfaceId !== 'string'\n      ) {\n        throw new A2uiValidationError('surfaceId must be a string');\n      }\n    }\n  }\n}\n\n/**\n * Base abstract class providing common payload unwrapping, schema validation,\n * and error formatting for protocol version adapters.\n */\nexport abstract class BaseVersionAdapter implements VersionAdapter {\n  abstract readonly version: ProtocolVersion;\n  protected abstract readonly schema: z.ZodTypeAny;\n\n  /** Canonical catalog protocol versions compatible with this adapter. */\n  get compatibleCatalogVersions(): ReadonlySet<string> {\n    const canonical = toCanonicalVersion(this.version);\n    return canonical ? new Set([canonical]) : new Set();\n  }\n\n  /** Set of valid message action keys supported by this protocol version. */\n  get validActions(): ReadonlySet<string> {\n    return new Set(this.getNativeActionKeys());\n  }\n\n  /** Checks if a catalog protocol version is compatible with this adapter. */\n  isCatalogCompatible(catalogVersion: string | SemVer | undefined | null): boolean {\n    if (!catalogVersion) {\n      return false;\n    }\n    return isCatalogVersionCompatible(catalogVersion, this.version);\n  }\n\n  protected abstract getNativeActionKeys(): string[];\n\n  extractOperations(payload: unknown): InternalOperation[] {\n    if (!payload || typeof payload !== 'object') return [];\n    if (Array.isArray(payload)) {\n      return payload.flatMap(item => this.extractOperations(item));\n    }\n    const msgObj = payload as Record<string, unknown>;\n    if (Array.isArray(msgObj.messages)) {\n      return this.extractOperations(msgObj.messages);\n    }\n\n    const nativeActionKeys = this.getNativeActionKeys();\n    validateActionSurfaceIds(msgObj, nativeActionKeys);\n\n    const presentNativeKeys = nativeActionKeys.filter(k => k in msgObj).sort();\n\n    if (presentNativeKeys.length > 1) {\n      throw new A2uiValidationError(\n        `Message contains multiple conflicting update actions: ${presentNativeKeys.join(', ')}.`,\n      );\n    }\n\n    if (presentNativeKeys.length === 0) {\n      const allKnown = globalKnownActionsProvider\n        ? globalKnownActionsProvider()\n        : new Set(nativeActionKeys);\n      const otherAction = Object.keys(msgObj).find(\n        k => allKnown.has(k) && !nativeActionKeys.includes(k),\n      );\n      const sortedAllowed = nativeActionKeys.slice().sort().join(', ');\n      if (otherAction) {\n        throw new A2uiValidationError(\n          `Invalid ${this.version} message: action '${otherAction}' is not supported in protocol version ${this.version}. Allowed actions: ${sortedAllowed}.`,\n        );\n      }\n      throw new A2uiValidationError(\n        `Invalid ${this.version} message: message must contain exactly one update action: ${sortedAllowed}.`,\n      );\n    }\n\n    const preparedPayload = this.preparePayloadForValidation(msgObj);\n    const parseResult = this.schema.safeParse(preparedPayload);\n    if (!parseResult.success) {\n      const formattedErrors = parseResult.error.errors.map(formatZodIssue).join('; ');\n      throw new A2uiValidationError(\n        `Invalid ${this.version} message: ${formattedErrors}`,\n        parseResult.error,\n      );\n    }\n\n    return this.extractOperationsFromObject(msgObj);\n  }\n\n  /**\n   * Normalizes the message object before running schema validation.\n   *\n   * Defaults to attaching `version` if not present.\n   *\n   * @param msgObj Raw message object.\n   * @returns Normalized message payload for schema validation.\n   */\n  protected preparePayloadForValidation(msgObj: Record<string, unknown>): Record<string, unknown> {\n    return 'version' in msgObj ? msgObj : {version: this.version, ...msgObj};\n  }\n\n  /**\n   * Converts a validated message object into canonical internal operations.\n   *\n   * @param msgObj Validated message payload.\n   * @returns Array of canonical internal operations.\n   */\n  protected abstract extractOperationsFromObject(\n    msgObj: Record<string, unknown>,\n  ): InternalOperation[];\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\n\n/**\n * Base primitives\n */\n\nconst exactlyOneKey = (val: any, ctx: z.RefinementCtx) => {\n  const keys = Object.keys(val).filter(k => val[k] !== undefined);\n  if (keys.length !== 1) {\n    ctx.addIssue({\n      code: z.ZodIssueCode.custom,\n      message: `Must define exactly one property, found ${keys.length} (${keys.join(', ')}).`,\n    });\n  }\n};\n\nexport const StringValueSchema = z\n  .object({\n    path: z.string().optional(),\n    literalString: z.string().optional(),\n    literal: z.string().optional(),\n  })\n  .strict()\n  .superRefine(exactlyOneKey);\nexport type StringValue = z.infer<typeof StringValueSchema>;\n\nconst DataValueMapItemSchema: z.ZodType<any> = z.lazy(() =>\n  z\n    .object({\n      key: z.string(),\n      valueString: z.string().optional(),\n      valueNumber: z.number().optional(),\n      valueBoolean: z.boolean().optional(),\n      valueMap: z.array(DataValueMapItemSchema).optional(),\n    })\n    .strict()\n    .superRefine((val: any, ctx: z.RefinementCtx) => {\n      let count = 0;\n      if (val.valueString !== undefined) count++;\n      if (val.valueNumber !== undefined) count++;\n      if (val.valueBoolean !== undefined) count++;\n      if (val.valueMap !== undefined) count++;\n      if (count !== 1) {\n        ctx.addIssue({\n          code: z.ZodIssueCode.custom,\n          message: `Value map item must have exactly one value property (valueString, valueNumber, valueBoolean, valueMap), found ${count}.`,\n        });\n      }\n    }),\n);\n\nexport function createDataValueSchema(options: {maxDepth?: number} = {}) {\n  const maxDepth = options.maxDepth ?? 5;\n  return DataValueMapItemSchema.superRefine((val: any, ctx: z.RefinementCtx) => {\n    const checkDepth = (v: any, currentDepth: number) => {\n      if (currentDepth > maxDepth) {\n        ctx.addIssue({\n          code: z.ZodIssueCode.custom,\n          message: `valueMap recursion exceeded maximum depth of ${maxDepth}.`,\n        });\n        return;\n      }\n      if (v.valueMap && Array.isArray(v.valueMap)) {\n        for (const item of v.valueMap) {\n          checkDepth(item, currentDepth + 1);\n        }\n      }\n    };\n    checkDepth(val, 1);\n  });\n}\n\nexport const DataValueSchema = createDataValueSchema();\n\nexport const NumberValueSchema = z\n  .object({\n    path: z.string().optional(),\n    literalNumber: z.number().optional(),\n    literal: z.number().optional(),\n  })\n  .strict()\n  .superRefine(exactlyOneKey);\nexport type NumberValue = z.infer<typeof NumberValueSchema>;\n\nexport const BooleanValueSchema = z\n  .object({\n    path: z.string().optional(),\n    literalBoolean: z.boolean().optional(),\n    literal: z.boolean().optional(),\n  })\n  .strict()\n  .superRefine(exactlyOneKey);\nexport type BooleanValue = z.infer<typeof BooleanValueSchema>;\n\n/**\n * Action Schema for components that trigger user actions\n */\nexport const ActionSchema = z.object({\n  name: z.string().describe(\"A unique name identifying the action (e.g., 'submitForm').\"),\n  context: z\n    .array(\n      z.object({\n        key: z.string(),\n        value: z\n          .object({\n            path: z\n              .string()\n              .describe(\n                \"A data binding reference to a location in the data model (e.g., '/user/name').\",\n              )\n              .optional(),\n            literalString: z.string().describe('A fixed, hardcoded string value.').optional(),\n            literalNumber: z.number().optional(),\n            literalBoolean: z.boolean().optional(),\n          })\n          .describe('The dynamic value. Define EXACTLY ONE of the nested properties.')\n          .strict()\n          .superRefine(exactlyOneKey),\n      }),\n    )\n    .describe('A key-value map of data bindings to be resolved when the action is triggered.')\n    .optional(),\n});\n\n/**\n * Component Properties Schemas\n */\n\nexport const TextSchema = z.object({\n  text: StringValueSchema,\n  usageHint: z.enum(['h1', 'h2', 'h3', 'h4', 'h5', 'caption', 'body']).optional(),\n});\n\nexport const ImageSchema = z.object({\n  url: StringValueSchema,\n  usageHint: z\n    .enum(['icon', 'avatar', 'smallFeature', 'mediumFeature', 'largeFeature', 'header'])\n    .optional(),\n  fit: z.enum(['contain', 'cover', 'fill', 'none', 'scale-down']).optional(),\n  altText: StringValueSchema.optional(),\n});\n\nexport const IconSchema = z.object({\n  name: StringValueSchema,\n});\n\nexport const VideoSchema = z.object({\n  url: StringValueSchema,\n});\n\nexport const AudioPlayerSchema = z.object({\n  url: StringValueSchema,\n  description: StringValueSchema.optional().describe('A label, title, or placeholder text.'),\n});\n\nexport const TabsSchema = z.object({\n  tabItems: z\n    .array(\n      z\n        .object({\n          title: z.object({\n            path: z\n              .string()\n              .describe(\n                \"A data binding reference to a location in the data model (e.g., '/user/name').\",\n              )\n              .optional(),\n            literalString: z.string().describe('A fixed, hardcoded string value.').optional(),\n          }),\n          child: z.string().describe('A reference to a component instance by its unique ID.'),\n        })\n        .strict()\n        .superRefine((val: any, ctx: z.RefinementCtx) => {\n          if (!val.title) {\n            ctx.addIssue({\n              code: z.ZodIssueCode.custom,\n              message: \"Tab item is missing 'title'.\",\n            });\n          }\n          if (!val.child) {\n            ctx.addIssue({\n              code: z.ZodIssueCode.custom,\n              message: \"Tab item is missing 'child'.\",\n            });\n          }\n          if (val.title) {\n            exactlyOneKey(val.title, ctx);\n          }\n        }),\n    )\n    .describe('A list of tabs, each with a title and a child component ID.'),\n});\n\nexport const DividerSchema = z.object({\n  axis: z.enum(['horizontal', 'vertical']).optional().describe('The orientation.'),\n  color: z\n    .string()\n    .optional()\n    .describe('The color of the divider (e.g., hex code or semantic name).'),\n  thickness: z.number().optional().describe('The thickness of the divider.'),\n});\n\nexport const ModalSchema = z.object({\n  entryPointChild: z\n    .string()\n    .describe('The ID of the component (e.g., a button) that triggers the modal.'),\n  contentChild: z.string().describe(\"The ID of the component to display as the modal's content.\"),\n});\n\nexport const ButtonSchema = z.object({\n  child: z.string().describe(\"The ID of the component to display as the button's content.\"),\n  action: ActionSchema.describe('Represents a user-initiated action.'),\n  primary: z\n    .boolean()\n    .optional()\n    .describe('Indicates if this button should be styled as the primary action.'),\n});\n\nexport const CheckboxSchema = z.object({\n  label: StringValueSchema,\n  value: z\n    .object({\n      path: z\n        .string()\n        .describe(\"A data binding reference to a location in the data model (e.g., '/user/name').\")\n        .optional(),\n      literalBoolean: z.boolean().optional(),\n    })\n    .strict()\n    .superRefine(exactlyOneKey),\n});\n\nexport const TextFieldSchema = z.object({\n  text: StringValueSchema.optional(),\n  label: StringValueSchema.describe('A label, title, or placeholder text.'),\n  textFieldType: z.enum(['shortText', 'number', 'date', 'longText', 'obscured']).optional(),\n  validationRegexp: z.string().optional().describe('A regex string to validate the input.'),\n});\n\nexport const DateTimeInputSchema = z.object({\n  value: StringValueSchema,\n  enableDate: z.boolean().optional(),\n  enableTime: z.boolean().optional(),\n  outputFormat: z\n    .string()\n    .optional()\n    .describe(\"The string format for the output (e.g., 'YYYY-MM-DD').\"),\n});\n\nexport const MultipleChoiceSchema = z.object({\n  selections: z\n    .object({\n      path: z\n        .string()\n        .describe(\"A data binding reference to a location in the data model (e.g., '/user/name').\")\n        .optional(),\n      literalArray: z.array(z.string()).optional(),\n    })\n    .strict()\n    .superRefine(exactlyOneKey),\n  options: z\n    .array(\n      z.object({\n        label: z\n          .object({\n            path: z\n              .string()\n              .describe(\n                \"A data binding reference to a location in the data model (e.g., '/user/name').\",\n              )\n              .optional(),\n            literalString: z.string().describe('A fixed, hardcoded string value.').optional(),\n          })\n          .strict()\n          .superRefine(exactlyOneKey),\n        value: z.string(),\n      }),\n    )\n    .optional(),\n  maxAllowedSelections: z.number().optional(),\n  type: z.enum(['checkbox', 'chips']).optional(),\n  filterable: z.boolean().optional(),\n});\n\nexport const SliderSchema = z.object({\n  value: z\n    .object({\n      path: z\n        .string()\n        .describe(\"A data binding reference to a location in the data model (e.g., '/user/name').\")\n        .optional(),\n      literalNumber: z.number().optional(),\n    })\n    .strict()\n    .superRefine(exactlyOneKey),\n  minValue: z.number().optional(),\n  maxValue: z.number().optional(),\n  label: StringValueSchema.optional(),\n});\n\nexport const ComponentArrayTemplateSchema = z.object({\n  componentId: z.string(),\n  dataBinding: z.string(),\n});\n\nexport const ComponentArrayReferenceSchema = z\n  .object({\n    explicitList: z.array(z.string()).optional(),\n    template: ComponentArrayTemplateSchema.describe(\n      'A template for generating a dynamic list of children from a data model list. `componentId` is the component to use as a template, and `dataBinding` is the path to the map of components in the data model. Values in the map will define the list of children.',\n    ).optional(),\n  })\n  .strict()\n  .superRefine(exactlyOneKey);\n\nexport const RowSchema = z.object({\n  children: ComponentArrayReferenceSchema,\n  distribution: z\n    .enum(['start', 'center', 'end', 'spaceBetween', 'spaceAround', 'spaceEvenly'])\n    .optional(),\n  alignment: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n});\n\nexport const ColumnSchema = z.object({\n  children: ComponentArrayReferenceSchema,\n  distribution: z\n    .enum(['start', 'center', 'end', 'spaceBetween', 'spaceAround', 'spaceEvenly'])\n    .optional(),\n  alignment: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n});\n\nexport const ListSchema = z.object({\n  children: ComponentArrayReferenceSchema,\n  direction: z.enum(['vertical', 'horizontal']).optional(),\n  alignment: z.enum(['start', 'center', 'end', 'stretch']).optional(),\n});\n\nexport const CardSchema = z.object({\n  child: z.string().describe('The ID of the component to be rendered inside the card.'),\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {DataValueSchema} from './common-types.js';\n\nconst _validateValueProperty = (val: any, ctx: z.RefinementCtx) => {\n  let count = 0;\n  if (val.valueString !== undefined) count++;\n  if (val.valueNumber !== undefined) count++;\n  if (val.valueBoolean !== undefined) count++;\n  if (val.valueMap !== undefined) count++;\n  if (count !== 1) {\n    ctx.addIssue({\n      code: z.ZodIssueCode.custom,\n      message: `Must have exactly one value property (valueString, valueNumber, valueBoolean, valueMap), found ${count}.`,\n    });\n  }\n};\n\nexport const ValueMapSchema = DataValueSchema.describe(\n  \"A single data entry. Exactly one 'value*' property should be provided alongside the key.\",\n);\n\nexport const ComponentPropertiesSchema = z\n  .record(z.any())\n  .refine(\n    val => Object.keys(val).length === 1,\n    \"A wrapper object that MUST contain exactly one key, which is the name of the component type (e.g., 'Heading').\",\n  );\nexport const AnyComponentSchema = ComponentPropertiesSchema;\n\nexport const ComponentInstanceSchema = z\n  .object({\n    id: z.string().describe('The unique identifier for this component.'),\n    weight: z\n      .number()\n      .optional()\n      .describe(\n        \"The relative weight of this component within a Row or Column. This corresponds to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n      ),\n    component: ComponentPropertiesSchema.describe(\n      \"A wrapper object that MUST contain exactly one key, which is the name of the component type (e.g., 'Heading'). The value is an object containing the properties for that specific component.\",\n    ),\n  })\n  .strict()\n  .describe(\n    'Represents a *single* component in a UI widget tree. This component could be one of many supported types.',\n  );\n\nexport const BeginRenderingMessageSchema = z\n  .object({\n    surfaceId: z.string().describe('The unique identifier for the UI surface to be rendered.'),\n    catalogId: z\n      .string()\n      .optional()\n      .describe(\n        'The identifier of the component catalog to use for this surface. If omitted, the client MUST default to the standard catalog for this A2UI version (https://a2ui.org/specification/v0_8/standard_catalog_definition.json).',\n      ),\n    root: z.string().describe('The ID of the root component to render.'),\n    styles: z\n      .object({\n        font: z.string().optional().describe('The primary font for the UI.'),\n        primaryColor: z\n          .string()\n          .regex(/^#[0-9a-fA-F]{6}$/)\n          .optional()\n          .describe(\"The primary UI color as a hexadecimal code (e.g., '#00BFFF').\"),\n      })\n      .strict()\n      .optional()\n      .describe('Styling information for the UI.'),\n  })\n  .strict()\n  .describe(\n    'Signals the client to begin rendering a surface with a root component and specific styles.',\n  );\n\nexport const SurfaceUpdateMessageSchema = z\n  .object({\n    surfaceId: z\n      .string()\n      .describe(\n        'The unique identifier for the UI surface to be updated. If you are adding a new surface this *must* be a new, unique identified that has never been used for any existing surfaces shown.',\n      ),\n    components: z\n      .array(ComponentInstanceSchema)\n      .min(1)\n      .describe('A list containing all UI components for the surface.'),\n  })\n  .strict()\n  .superRefine((data, ctx) => {\n    const componentIds = new Set<string>();\n    for (const c of data.components) {\n      if (c.id) {\n        if (componentIds.has(c.id)) {\n          ctx.addIssue({\n            code: z.ZodIssueCode.custom,\n            message: `Duplicate component ID found: ${c.id}`,\n            path: ['components'],\n          });\n        }\n        componentIds.add(c.id);\n      }\n    }\n\n    const checkRefs = (ids: (string | undefined)[], componentId: string) => {\n      for (const id of ids) {\n        if (id && !componentIds.has(id)) {\n          ctx.addIssue({\n            code: z.ZodIssueCode.custom,\n            message: `Component '${componentId}' references non-existent component ID '${id}'.`,\n            path: ['components'],\n          });\n        }\n      }\n    };\n\n    for (const component of data.components) {\n      if (!component.id || !component.component) continue;\n      const componentTypes = Object.keys(component.component);\n      if (componentTypes.length !== 1) continue;\n\n      const componentType = componentTypes[0];\n      const properties: any = (component.component as any)[componentType];\n\n      switch (componentType) {\n        case 'Row':\n        case 'Column':\n        case 'List':\n          if (properties.children && !Array.isArray(properties.children)) {\n            const hasExplicit = !!properties.children.explicitList;\n            const hasTemplate = !!properties.children.template;\n            if ((hasExplicit && hasTemplate) || (!hasExplicit && !hasTemplate)) {\n              ctx.addIssue({\n                code: z.ZodIssueCode.custom,\n                message: `Component '${component.id}' must have either 'explicitList' or 'template' in children, but not both or neither.`,\n              });\n            }\n            if (hasExplicit) checkRefs(properties.children.explicitList, component.id);\n            if (hasTemplate) checkRefs([properties.children.template?.componentId], component.id);\n          }\n          break;\n        case 'Card':\n          if (properties.child) checkRefs([properties.child], component.id);\n          break;\n        case 'Tabs':\n          if (properties.tabItems && Array.isArray(properties.tabItems)) {\n            properties.tabItems.forEach((tab: any) => {\n              if (tab.child) checkRefs([tab.child], component.id);\n            });\n          }\n          break;\n        case 'Modal':\n          checkRefs([properties.entryPointChild, properties.contentChild], component.id);\n          break;\n        case 'Button':\n          if (properties.child) checkRefs([properties.child], component.id);\n          break;\n      }\n    }\n  })\n  .describe('Updates a surface with a new set of components.');\n\nexport const DataModelUpdateMessageSchema = z\n  .object({\n    surfaceId: z\n      .string()\n      .describe('The unique identifier for the UI surface this data model update applies to.'),\n    path: z\n      .string()\n      .optional()\n      .describe(\n        \"An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', the entire data model will be replaced.\",\n      ),\n    contents: z\n      .array(ValueMapSchema)\n      .describe(\n        \"An array of data entries. Each entry must contain a 'key' and exactly one corresponding typed 'value*' property.\",\n      ),\n  })\n  .strict()\n  .describe('Updates the data model for a surface.');\n\nexport const DeleteSurfaceMessageSchema = z\n  .object({\n    surfaceId: z.string().describe('The unique identifier for the UI surface to be deleted.'),\n  })\n  .strict()\n  .describe(\"Signals the client to delete the surface identified by 'surfaceId'.\");\n\nexport const A2uiMessageSchema = z\n  .object({\n    beginRendering: BeginRenderingMessageSchema.optional(),\n    surfaceUpdate: SurfaceUpdateMessageSchema.optional(),\n    dataModelUpdate: DataModelUpdateMessageSchema.optional(),\n    deleteSurface: DeleteSurfaceMessageSchema.optional(),\n  })\n  .strict()\n  .superRefine((data, ctx) => {\n    const keys = Object.keys(data).filter(k =>\n      ['beginRendering', 'surfaceUpdate', 'dataModelUpdate', 'deleteSurface'].includes(k),\n    );\n    if (keys.length !== 1) {\n      ctx.addIssue({\n        code: z.ZodIssueCode.custom,\n        message:\n          'A2UI Protocol message must have exactly one of: surfaceUpdate, dataModelUpdate, beginRendering, deleteSurface.',\n      });\n    }\n  })\n  .describe(\n    \"Describes a JSON payload for an A2UI (Agent to UI) message, which is used to dynamically construct and update user interfaces. A message MUST contain exactly ONE of the action properties: 'beginRendering', 'surfaceUpdate', 'dataModelUpdate', or 'deleteSurface'.\",\n  );\n\nexport type A2uiMessage = z.infer<typeof A2uiMessageSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BaseVersionAdapter, ProtocolVersion} from './base.js';\nimport {InternalComponentPayload, InternalOperation} from '../operations.js';\nimport {A2uiMessageSchema} from '../../v0_8/schema/server-to-client.js';\n\nfunction normalizeV08Component(comp: unknown): InternalComponentPayload {\n  if (!comp || typeof comp !== 'object') {\n    return {id: '', component: ''};\n  }\n  const c = comp as Record<string, unknown>;\n  let componentName = typeof c.component === 'string' ? c.component : '';\n  const props: Record<string, unknown> = {};\n\n  for (const [k, v] of Object.entries(c)) {\n    if (k !== 'component' && k !== 'id') {\n      props[k] = v;\n    }\n  }\n\n  if (c.component && typeof c.component === 'object') {\n    const obj = c.component as Record<string, unknown>;\n    const keys = Object.keys(obj);\n    if (keys.length > 0) {\n      componentName = keys[0];\n      const compProps = obj[keys[0]];\n      if (\n        compProps &&\n        typeof compProps === 'object' &&\n        compProps !== null &&\n        !Array.isArray(compProps)\n      ) {\n        Object.assign(props, compProps);\n      }\n    }\n  }\n\n  return {\n    ...props,\n    id: String(c.id ?? ''),\n    component: componentName,\n  };\n}\n\n/**\n * Protocol version adapter for specification v0.8.\n */\nexport class V0Point8Adapter extends BaseVersionAdapter {\n  readonly version: ProtocolVersion = 'v0.8';\n  protected readonly schema = A2uiMessageSchema;\n\n  protected getNativeActionKeys(): string[] {\n    return ['beginRendering', 'surfaceUpdate', 'dataModelUpdate', 'deleteSurface'];\n  }\n\n  protected override preparePayloadForValidation(\n    msgObj: Record<string, unknown>,\n  ): Record<string, unknown> {\n    const msgWithoutVersion = {...msgObj};\n    delete msgWithoutVersion.version;\n    return msgWithoutVersion;\n  }\n\n  protected extractOperationsFromObject(msgObj: Record<string, unknown>): InternalOperation[] {\n    const ops: InternalOperation[] = [];\n    if ('beginRendering' in msgObj) {\n      const cs = msgObj.beginRendering as Record<string, unknown>;\n      ops.push({\n        type: 'createSurface',\n        surfaceId: String(cs?.surfaceId ?? ''),\n        catalogId: typeof cs?.catalogId === 'string' ? cs.catalogId : undefined,\n        theme: cs?.theme ?? cs?.styles,\n        sendDataModel: Boolean(cs?.sendDataModel),\n        components: Array.isArray(cs?.components)\n          ? cs.components.map(normalizeV08Component)\n          : undefined,\n        dataModel:\n          cs?.dataModel && typeof cs.dataModel === 'object' && !Array.isArray(cs.dataModel)\n            ? (cs.dataModel as Record<string, unknown>)\n            : undefined,\n        version: typeof msgObj.version === 'string' ? msgObj.version : this.version,\n        rootId: typeof cs?.root === 'string' && cs.root ? cs.root : undefined,\n      });\n    }\n    if ('surfaceUpdate' in msgObj) {\n      const uc = msgObj.surfaceUpdate as Record<string, unknown>;\n      ops.push({\n        type: 'updateComponents',\n        surfaceId: String(uc?.surfaceId ?? ''),\n        components: Array.isArray(uc?.components) ? uc.components.map(normalizeV08Component) : [],\n      });\n    }\n    if ('dataModelUpdate' in msgObj) {\n      const ud = msgObj.dataModelUpdate as Record<string, unknown>;\n      const surfaceId = String(ud?.surfaceId ?? '');\n\n      if (Array.isArray(ud?.contents)) {\n        for (const item of ud.contents as Record<string, unknown>[]) {\n          if (item && typeof item === 'object' && typeof item.key === 'string') {\n            const val =\n              'valueNumber' in item\n                ? item.valueNumber\n                : 'valueString' in item\n                  ? item.valueString\n                  : 'valueBoolean' in item\n                    ? item.valueBoolean\n                    : 'valueObject' in item\n                      ? item.valueObject\n                      : 'valueArray' in item\n                        ? item.valueArray\n                        : item.value;\n            ops.push({\n              type: 'updateDataModel',\n              surfaceId,\n              path: item.key,\n              value: val,\n            });\n          }\n        }\n      } else {\n        ops.push({\n          type: 'updateDataModel',\n          surfaceId,\n          path: typeof ud?.path === 'string' ? ud.path : undefined,\n          value: ud?.value,\n        });\n      }\n    }\n    if ('deleteSurface' in msgObj) {\n      const ds = msgObj.deleteSurface as Record<string, unknown>;\n      ops.push({\n        type: 'deleteSurface',\n        surfaceId: String(ds?.surfaceId ?? ''),\n      });\n    }\n    return ops;\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/v0.9/json/ via src/v0_9/scripts/generate-schemas.mjs\nimport {z} from 'zod';\n\nexport const CreateSurfaceMessageSchema = z\n  .object({\n    'version': z.enum(['v0.9', 'v0.9.1']),\n    'createSurface': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe('The unique identifier for the UI surface to be rendered.'),\n        'catalogId': z\n          .string()\n          .describe(\n            \"A string that uniquely identifies this catalog. It is recommended to prefix this with an internet domain that you own, to avoid conflicts e.g. mycompany.com:somecatalog'.\",\n          ),\n        'theme': z.any().optional(),\n        'sendDataModel': z\n          .boolean()\n          .describe(\n            'If true, the client will send the full data model of this surface in the metadata of every A2A message sent to the server that created the surface. Defaults to false.',\n          )\n          .optional(),\n      })\n      .strict()\n      .describe(\n        \"Signals the client to create a new surface and begin rendering it. It is an error to send 'createSurface' for a surfaceId that already exists without first deleting it. When this message is sent, the client will expect 'updateComponents' and/or 'updateDataModel' messages for the same surfaceId that define the component tree.\",\n      ),\n  })\n  .strict();\nexport type CreateSurfaceMessage = z.infer<typeof CreateSurfaceMessageSchema>;\n\nexport const UpdateComponentsMessageSchema = z\n  .object({\n    'version': z.enum(['v0.9', 'v0.9.1']),\n    'updateComponents': z\n      .object({\n        'surfaceId': z.string().describe('The unique identifier for the UI surface to be updated.'),\n        'components': z\n          .array(z.record(z.string(), z.any()))\n          .min(1)\n          .describe('A list containing all UI components for the surface.'),\n      })\n      .strict()\n      .describe(\n        \"Updates a surface with a new set of components. This message can be sent multiple times to update the component tree of an existing surface. One of the components in one of the components lists MUST have an 'id' of 'root' to serve as the root of the component tree. A createSurface message MUST have been previously sent for the 'surfaceId' in this message; the surface's catalog is the one specified by that createSurface.\",\n      ),\n  })\n  .strict();\nexport type UpdateComponentsMessage = z.infer<typeof UpdateComponentsMessageSchema>;\n\nexport const UpdateDataModelMessageSchema = z\n  .object({\n    'version': z.enum(['v0.9', 'v0.9.1']),\n    'updateDataModel': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe('The unique identifier for the UI surface this data model update applies to.'),\n        'path': z\n          .string()\n          .describe(\n            \"An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', refers to the entire data model.\",\n          )\n          .optional(),\n        'value': z\n          .any()\n          .describe(\n            \"The data to be updated in the data model. If present, the value at 'path' is replaced (or created). If omitted, the key at 'path' is removed.\",\n          )\n          .optional(),\n      })\n      .strict()\n      .describe(\n        \"Updates the data model for an existing surface. This message can be sent multiple times to update the data model. A createSurface message MUST have been previously sent for the 'surfaceId' in this message; the surface's catalog is the one specified by that createSurface.\",\n      ),\n  })\n  .strict();\nexport type UpdateDataModelMessage = z.infer<typeof UpdateDataModelMessageSchema>;\n\nexport const DeleteSurfaceMessageSchema = z\n  .object({\n    'version': z.enum(['v0.9', 'v0.9.1']),\n    'deleteSurface': z\n      .object({\n        'surfaceId': z.string().describe('The unique identifier for the UI surface to be deleted.'),\n      })\n      .strict()\n      .describe(\n        \"Signals the client to delete the surface identified by 'surfaceId'. A createSurface message MUST have been previously sent for the 'surfaceId' in this message; the surface's catalog is the one specified by that createSurface.\",\n      ),\n  })\n  .strict();\nexport type DeleteSurfaceMessage = z.infer<typeof DeleteSurfaceMessageSchema>;\n\nexport const A2uiMessageSchema = z.union([\n  CreateSurfaceMessageSchema,\n  UpdateComponentsMessageSchema,\n  UpdateDataModelMessageSchema,\n  DeleteSurfaceMessageSchema,\n]);\nexport type A2uiMessage = z.infer<typeof A2uiMessageSchema>;\n\nexport const A2uiMessageListSchema = z.array(A2uiMessageSchema).describe('A list of messages.');\nexport type A2uiMessageList = z.infer<typeof A2uiMessageListSchema>;\n\nexport const A2uiMessageListWrapperSchema = z\n  .object({\n    messages: A2uiMessageListSchema,\n  })\n  .strict()\n  .describe('An object wrapping a list of messages.');\nexport type A2uiMessageListWrapper = z.infer<typeof A2uiMessageListWrapperSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BaseVersionAdapter, ProtocolVersion} from './base.js';\nimport {InternalComponentPayload, InternalOperation} from '../operations.js';\nimport {A2uiMessageSchema} from '../../v0_9/schema/server-to-client.js';\n\n/**\n * Protocol version adapter for specification v0.9 and v0.9.1.\n */\nexport class V0Point9Adapter extends BaseVersionAdapter {\n  readonly version: ProtocolVersion = 'v0.9';\n  protected readonly schema = A2uiMessageSchema;\n\n  override get compatibleCatalogVersions(): ReadonlySet<string> {\n    return new Set(['0.9', '0.9.1']);\n  }\n\n  protected getNativeActionKeys(): string[] {\n    return ['createSurface', 'updateComponents', 'updateDataModel', 'deleteSurface'];\n  }\n\n  protected extractOperationsFromObject(msgObj: Record<string, unknown>): InternalOperation[] {\n    const ops: InternalOperation[] = [];\n    if ('createSurface' in msgObj) {\n      const cs = msgObj.createSurface as Record<string, unknown>;\n      ops.push({\n        type: 'createSurface',\n        surfaceId: String(cs?.surfaceId || ''),\n        catalogId: typeof cs?.catalogId === 'string' ? cs.catalogId : undefined,\n        theme: cs?.theme,\n        sendDataModel: Boolean(cs?.sendDataModel),\n        components: Array.isArray(cs?.components)\n          ? (cs.components as InternalComponentPayload[])\n          : undefined,\n        dataModel:\n          cs?.dataModel && typeof cs.dataModel === 'object' && !Array.isArray(cs.dataModel)\n            ? (cs.dataModel as Record<string, unknown>)\n            : undefined,\n        version: typeof msgObj.version === 'string' ? msgObj.version : this.version,\n      });\n    }\n    if ('updateComponents' in msgObj) {\n      const uc = msgObj.updateComponents as Record<string, unknown>;\n      ops.push({\n        type: 'updateComponents',\n        surfaceId: String(uc?.surfaceId || ''),\n        components: Array.isArray(uc?.components) ? uc.components : [],\n      });\n    }\n    if ('updateDataModel' in msgObj) {\n      const ud = msgObj.updateDataModel as Record<string, unknown>;\n      ops.push({\n        type: 'updateDataModel',\n        surfaceId: String(ud?.surfaceId || ''),\n        path: typeof ud?.path === 'string' ? ud.path : undefined,\n        value: ud?.value,\n      });\n    }\n    if ('deleteSurface' in msgObj) {\n      const ds = msgObj.deleteSurface as Record<string, unknown>;\n      ops.push({\n        type: 'deleteSurface',\n        surfaceId: String(ds?.surfaceId || ''),\n      });\n    }\n    return ops;\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {ProtocolVersion} from './adapters/base.js';\n\n/**\n * Generic component representation within internal processing operations.\n */\nexport interface InternalComponentPayload {\n  /** Identifier for the component instance within a surface. */\n  id: string;\n  /** Component type name as defined in the catalog (e.g. `'Button'`, `'Column'`). */\n  component?: string;\n  /** Additional component properties, children references, or data bindings. */\n  [key: string]: unknown;\n}\n\n/**\n * Operation to create a surface and initialize its state and component tree.\n */\nexport interface InternalCreateSurfaceOp {\n  /** Discriminator indicating surface creation. */\n  readonly type: 'createSurface';\n  /** Identifier of the surface to create. */\n  readonly surfaceId: string;\n  /** Identifier of the component catalog to bind to this surface. If omitted, uses the default catalog. */\n  readonly catalogId?: string;\n  /** Styling tokens or theme configuration to apply to the surface. */\n  readonly theme?: unknown;\n  /** Whether the client should send data model mutations back to the agent. */\n  readonly sendDataModel?: boolean;\n  /** Initial component tree definitions to instantiate on the surface. */\n  readonly components?: InternalComponentPayload[];\n  /** Initial key-value state tree for the surface data model. */\n  readonly dataModel?: Record<string, unknown>;\n  /** Protocol version of the originating message envelope or adapter. */\n  readonly version?: string;\n  /** Root component ID for the surface (defaults to `'root'`). */\n  readonly rootId?: string;\n}\n\n/**\n * Operation to add, update, or replace component definitions within an existing surface.\n */\nexport interface InternalUpdateComponentsOp {\n  /** Discriminator indicating component updates. */\n  readonly type: 'updateComponents';\n  /** Identifier of the surface containing the components to update. */\n  readonly surfaceId: string;\n  /** Component definitions to insert or update within the surface. */\n  readonly components: InternalComponentPayload[];\n}\n\n/**\n * Operation to update data model values at a JSON Pointer path within a surface.\n */\nexport interface InternalUpdateDataModelOp {\n  /** Discriminator indicating a data model update. */\n  readonly type: 'updateDataModel';\n  /** Identifier of the surface whose data model is being updated. */\n  readonly surfaceId: string;\n  /** JSON Pointer path (RFC 6901) where the value will be set. If omitted, replaces the root model. */\n  readonly path?: string;\n  /** Data value to write at the target path. */\n  readonly value: unknown;\n}\n\n/**\n * Operation to delete a surface and tear down its associated component models and state.\n */\nexport interface InternalDeleteSurfaceOp {\n  /** Discriminator indicating surface deletion. */\n  readonly type: 'deleteSurface';\n  /** Identifier of the surface to delete and dispose. */\n  readonly surfaceId: string;\n}\n\n/**\n * Operation representing an agent request to execute a client-side function registered on the renderer.\n */\nexport interface InternalCallRendererFunctionOp {\n  /** Discriminator indicating a renderer function call. */\n  readonly type: 'callRendererFunction';\n  /** Correlation identifier used to match this call with a subsequent response or error. */\n  readonly functionCallId: string;\n  /** Name of the registered catalog function to execute on the renderer. */\n  readonly call: string;\n  /** Protocol specification version governing this function call. */\n  readonly version: ProtocolVersion;\n  /** Identifier of the catalog providing the function implementation. If omitted, defaults to the surface catalog. */\n  readonly catalogId?: string;\n  /** Named argument map passed to the function implementation. */\n  readonly args?: Record<string, unknown>;\n  /** Whether the call was initiated by a direct user gesture. */\n  readonly isUserActivated?: boolean;\n}\n\n/**\n * Operation containing the agent's response or error for a function previously invoked by the renderer.\n */\nexport interface InternalAgentFunctionResponseOp {\n  /** Discriminator indicating an agent function response. */\n  readonly type: 'agentFunctionResponse';\n  /** Correlation identifier matching the original client-initiated function call. */\n  readonly functionCallId: string;\n  /** Protocol specification version associated with the response, if present. */\n  readonly version?: ProtocolVersion;\n  /** Return value produced by the agent function upon successful execution. */\n  readonly value?: unknown;\n  /** Error details if the agent function failed. */\n  readonly error?: {\n    /** Error code describing the failure type (e.g. `'EXECUTION_ERROR'`). */\n    code: string;\n    /** Human-readable explanation of why the function failed. */\n    message: string;\n  };\n}\n\n/**\n * Union of all normalized internal operations processed by the message pipeline.\n */\nexport type InternalOperation =\n  | InternalCreateSurfaceOp\n  | InternalUpdateComponentsOp\n  | InternalUpdateDataModelOp\n  | InternalDeleteSurfaceOp\n  | InternalCallRendererFunctionOp\n  | InternalAgentFunctionResponseOp;\n\n/**\n * All supported internal operation type discriminator strings.\n */\nexport const INTERNAL_OPERATION_TYPES = [\n  'createSurface',\n  'updateComponents',\n  'updateDataModel',\n  'deleteSurface',\n  'callRendererFunction',\n  'agentFunctionResponse',\n] as const;\n\n/**\n * Type representing any valid internal operation type discriminator.\n */\nexport type InternalOperationType = (typeof INTERNAL_OPERATION_TYPES)[number];\n\n/**\n * Determines whether a given value is a valid {@link InternalOperation}.\n *\n * @param payload The candidate value to inspect.\n * @returns `true` if the payload conforms to an internal operation structure; otherwise `false`.\n */\nexport function isInternalOperation(payload: unknown): payload is InternalOperation {\n  return (\n    typeof payload === 'object' &&\n    payload !== null &&\n    'type' in payload &&\n    typeof (payload as Record<string, unknown>).type === 'string' &&\n    (INTERNAL_OPERATION_TYPES as readonly string[]).includes(\n      (payload as Record<string, unknown>).type as string,\n    )\n  );\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {\n  type ChildRefKind,\n  type RefSchemaOptions,\n  markChildRef,\n  childRefKindOf,\n} from '../../types/child-ref-helpers.js';\nimport {\n  ChildListSchema,\n  ComponentCommonSchema,\n  ComponentIdSchema,\n  DynamicBooleanSchema,\n  DynamicNumberSchema,\n  DynamicStringListSchema,\n  DynamicStringSchema,\n  DynamicValueSchema,\n} from './common-types.js';\n\nexport {type ChildRefKind, type RefSchemaOptions, markChildRef, childRefKindOf};\n\nexport const TemplateChildListSchema = z\n  .object({\n    'componentId': z.lazy(() => ComponentIdSchema),\n    'path': z\n      .string()\n      .describe('The path to the list of component property objects in the data model.'),\n  })\n  .strict()\n  .describe(\n    'REF:#/$defs/TemplateChildList|A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.',\n  );\nexport type TemplateChildList = z.infer<typeof TemplateChildListSchema>;\n\nexport function componentId(options: RefSchemaOptions = {}): typeof ComponentIdSchema {\n  if (options.description === undefined) {\n    return ComponentIdSchema;\n  }\n  return ComponentIdSchema.describe(`REF:#/$defs/ComponentId|\\${options.description}`);\n}\n\nexport function dynamicString(description?: string) {\n  return description\n    ? DynamicStringSchema.describe(`REF:#/$defs/DynamicString|\\${description}`)\n    : DynamicStringSchema;\n}\n\nexport function dynamicNumber(description?: string) {\n  return description\n    ? DynamicNumberSchema.describe(`REF:#/$defs/DynamicNumber|\\${description}`)\n    : DynamicNumberSchema;\n}\n\nexport function dynamicBoolean(description?: string) {\n  return description\n    ? DynamicBooleanSchema.describe(`REF:#/$defs/DynamicBoolean|\\${description}`)\n    : DynamicBooleanSchema;\n}\n\nexport function dynamicValue(description?: string) {\n  return description\n    ? DynamicValueSchema.describe(`REF:#/$defs/DynamicValue|\\${description}`)\n    : DynamicValueSchema;\n}\n\nexport function dynamicStringList(description?: string) {\n  return description\n    ? DynamicStringListSchema.describe(`REF:#/$defs/DynamicStringList|\\${description}`)\n    : DynamicStringListSchema;\n}\n\nexport function childList(options: RefSchemaOptions = {}): typeof ChildListSchema {\n  if (options.description === undefined) {\n    return ChildListSchema;\n  }\n  return ChildListSchema.describe(`REF:#/$defs/ChildList|\\${options.description}`);\n}\n\n/** Zod schema validating any component payload in a v1.0 message (excluding Surface). */\nexport const AnyComponentSchema: z.ZodType<any> = z.lazy(() =>\n  ComponentCommonSchema.extend({\n    component: z.string(),\n  })\n    .passthrough()\n    .refine(comp => comp.component !== 'Surface', {\n      message:\n        'Component type cannot be \"Surface\". \"Surface\" is a top-level protocol container defined in createSurface, not a child component.',\n    }),\n);\nexport type AnyComponent = z.infer<typeof AnyComponentSchema>;\n\n/** Zod schema validating a non-empty array of UI component payloads. */\nexport const ComponentsListSchema = z.array(AnyComponentSchema).min(1);\nexport type ComponentsList = z.infer<typeof ComponentsListSchema>;\n\n/** Zod schema validating multi-version renderer capabilities maps across protocol versions. */\nexport const RendererCapabilitiesSchema = z.record(z.string(), z.any());\nexport type RendererCapabilities = z.infer<typeof RendererCapabilitiesSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/v1.0/json/ via src/v1_0/scripts/generate-schemas.mjs\nimport {z} from 'zod';\nimport {markChildRef} from '../../types/child-ref-helpers.js';\n\nexport const ComponentIdSchema = markChildRef(\n  z\n    .string()\n    .describe(\n      'REF:#/$defs/ComponentId|The unique identifier for a component, used for both definitions and references within the same surface.',\n    ),\n  'component-id',\n);\nexport type ComponentId = z.infer<typeof ComponentIdSchema>;\n\nexport const CallIdSchema = z\n  .string()\n  .describe('REF:#/$defs/CallId|The unique identifier for a function call.');\nexport type CallId = z.infer<typeof CallIdSchema>;\n\nexport const DataBindingSchema = z\n  .object({'path': z.string().describe('A JSON Pointer path to a value in the data model.')})\n  .strict()\n  .describe('REF:#/$defs/DataBinding');\nexport type DataBinding = z.infer<typeof DataBindingSchema>;\n\nexport const FunctionCommonSchema = z\n  .object({\n    'call': z.string().describe('The name of the function to call.'),\n    'catalogId': z\n      .string()\n      .describe('The catalog ID for this function, overriding any surface-level default catalogId.')\n      .optional(),\n  })\n  .describe(\n    \"REF:#/$defs/FunctionCommon|Baseline envelope properties common to all function calls. Function-specific argument schemas ('args') are defined individually by each function in the active catalog.\",\n  );\nexport type FunctionCommon = z.infer<typeof FunctionCommonSchema>;\n\nexport const FunctionCallSchema = z\n  .record(z.string(), z.any())\n  .and(z.intersection(FunctionCommonSchema, z.any()))\n  .describe(\n    'REF:#/$defs/FunctionCall|Invokes a named function, combining common function properties with the catalog function definition.',\n  );\nexport type FunctionCall = z.infer<typeof FunctionCallSchema>;\n\nexport const DynamicStringSchema = z\n  .union([z.string(), DataBindingSchema, FunctionCallSchema])\n  .describe('REF:#/$defs/DynamicString|Represents a string');\nexport type DynamicString = z.infer<typeof DynamicStringSchema>;\n\nexport const DynamicBooleanSchema = z\n  .union([z.boolean(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean.',\n  );\nexport type DynamicBoolean = z.infer<typeof DynamicBooleanSchema>;\n\nexport const AccessibilityAttributesSchema = z\n  .object({\n    'label': DynamicStringSchema.optional(),\n    'description': DynamicStringSchema.optional(),\n    'live': z\n      .enum(['off', 'polite', 'assertive'])\n      .describe(\n        \"Controls screen reader announcements for dynamic updates (WAI-ARIA aria-live). 'polite' waits for user pause; 'assertive' interrupts immediately for alerts.\",\n      )\n      .default('off'),\n    'hidden': DynamicBooleanSchema.optional(),\n  })\n  .strict()\n  .describe(\n    'REF:#/$defs/AccessibilityAttributes|Attributes to enhance accessibility when using assistive technologies like screen readers or model understanding.',\n  );\nexport type AccessibilityAttributes = z.infer<typeof AccessibilityAttributesSchema>;\n\nexport const ExtensionsSchema = z\n  .record(z.string(), z.unknown())\n  .superRefine((value, ctx) => {\n    for (const key in value) {\n      if (!key.match(/^[\\p{XID_Start}_][\\p{XID_Continue}:-]*$/u)) {\n        ctx.addIssue({\n          path: [key],\n          code: z.ZodIssueCode.custom,\n          message: `Invalid extension key \"${key}\": Keys MUST be Unicode identifiers (UAX #31).`,\n        });\n      }\n    }\n  })\n  .describe(\n    \"REF:#/$defs/Extensions|Optional extension metadata. Keys MUST be Unicode identifiers (UAX #31). Keys starting with 'a2ui_' are reserved for official extensions.\",\n  );\nexport type Extensions = z.infer<typeof ExtensionsSchema>;\n\nexport const ComponentCommonSchema = z\n  .object({\n    'id': ComponentIdSchema,\n    'catalogId': z\n      .string()\n      .describe(\n        'The catalog ID for this component, overriding any surface-level default catalogId.',\n      )\n      .optional(),\n    'accessibility': AccessibilityAttributesSchema.optional(),\n    'metadata': z\n      .object({'extensions': ExtensionsSchema.optional()})\n      .strict()\n      .describe('Optional component-level metadata for vendor extensions.')\n      .optional(),\n  })\n  .describe('REF:#/$defs/ComponentCommon');\nexport type ComponentCommon = z.infer<typeof ComponentCommonSchema>;\n\nexport const ChildSchema = ComponentIdSchema;\nexport type Child = z.infer<typeof ChildSchema>;\n\nexport const ChildListSchema = markChildRef(\n  z\n    .union([\n      z.array(ComponentIdSchema).describe('A static list of child component IDs.'),\n      z\n        .object({\n          'componentId': ComponentIdSchema,\n          'path': z\n            .string()\n            .describe('The path to the list of component property objects in the data model.'),\n        })\n        .strict()\n        .describe(\n          'A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.',\n        ),\n    ])\n    .describe('REF:#/$defs/ChildList'),\n  'child-list',\n);\nexport type ChildList = z.infer<typeof ChildListSchema>;\n\nexport const DynamicValueSchema = z\n  .union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.array(z.any()),\n    z.record(z.string(), z.unknown()).refine(obj => !obj || (!('path' in obj) && !('call' in obj))),\n    DataBindingSchema,\n    FunctionCallSchema,\n  ])\n  .describe(\n    'REF:#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type.',\n  );\nexport type DynamicValue = z.infer<typeof DynamicValueSchema>;\n\nexport const DynamicNumberSchema = z\n  .union([z.number(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.',\n  );\nexport type DynamicNumber = z.infer<typeof DynamicNumberSchema>;\n\nexport const DynamicStringListSchema = z\n  .union([z.array(z.string()), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.',\n  );\nexport type DynamicStringList = z.infer<typeof DynamicStringListSchema>;\n\nexport const IndexSystemFunctionSchema = z\n  .object({\n    'call': z.literal('@index'),\n    'args': z.object({'offset': DynamicNumberSchema.optional()}).optional(),\n  })\n  .describe(\n    'REF:#/$defs/IndexSystemFunction|Returns the 0-based index of the current item when rendering a dynamic list from a template. This function MUST ONLY be available when evaluating template items within a list context.',\n  );\nexport type IndexSystemFunction = z.infer<typeof IndexSystemFunctionSchema>;\n\nexport const CheckRuleSchema = z\n  .object({\n    'condition': z\n      .union([DataBindingSchema, FunctionCallSchema])\n      .describe('Path or function call evaluating to a structured validation result object.'),\n    'message': z.string().describe('Optional fallback error message.').optional(),\n  })\n  .strict()\n  .describe(\n    'REF:#/$defs/CheckRule|A single validation check rule applied to an input component. The condition function or path evaluates to a structured validation result object.',\n  );\nexport type CheckRule = z.infer<typeof CheckRuleSchema>;\n\nexport const CheckableSchema = z\n  .object({\n    'checks': z\n      .array(CheckRuleSchema)\n      .describe(\n        'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n      )\n      .optional(),\n  })\n  .describe('REF:#/$defs/Checkable|Properties for components that support renderer-side checks.');\nexport type Checkable = z.infer<typeof CheckableSchema>;\n\nexport const ActionSchema = z\n  .union([\n    z\n      .object({\n        'event': z\n          .object({\n            'name': z.string().describe('The name of the action to be dispatched to the agent.'),\n            'userMessage': DynamicStringSchema.optional(),\n            'context': z\n              .record(z.string(), DynamicValueSchema)\n              .describe(\n                'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n              )\n              .optional(),\n          })\n          .strict()\n          .describe('The event to dispatch to the agent.'),\n      })\n      .strict()\n      .describe('Triggers an agent-side event.'),\n    z\n      .object({'functionCall': FunctionCallSchema})\n      .strict()\n      .describe('Executes a renderer or agent-side function.'),\n  ])\n  .describe(\n    'REF:#/$defs/Action|Defines an interaction handler that can either trigger an agent-side event or execute a local renderer-side function.',\n  );\nexport type Action = z.infer<typeof ActionSchema>;\n\nexport const SurfaceSchema = z\n  .object({'component': z.literal('Surface').optional(), 'child': z.literal('root').optional()})\n  .strict()\n  .describe(\n    \"REF:#/$defs/Surface|The reserved canonical container component representing an A2UI surface. The Surface component is immutable and always has 'child': 'root'.\",\n  );\nexport type Surface = z.infer<typeof SurfaceSchema>;\n\nexport const FunctionResponseSchema = z\n  .object({\n    'functionCallId': CallIdSchema,\n    'value': z.any().describe('The return value of the function.').optional(),\n    'error': z\n      .object({'code': z.string(), 'message': z.string()})\n      .strict()\n      .describe('An error object indicating failure of the function execution.')\n      .optional(),\n  })\n  .strict()\n  .superRefine((val, ctx) => {\n    const hasValue = 'value' in val;\n    const hasError = 'error' in val;\n    if ((hasValue && hasError) || (!hasValue && !hasError)) {\n      ctx.addIssue({\n        code: z.ZodIssueCode.custom,\n        message: 'FunctionResponse must have either \"value\" or \"error\", but not both or neither.',\n      });\n    }\n  })\n  .describe(\n    'REF:#/$defs/FunctionResponse|The return response matching a callAgentFunction or callRendererFunction invocation.',\n  );\nexport type FunctionResponse = z.infer<typeof FunctionResponseSchema>;\n\nexport const CommonSchemas = {\n  ComponentId: ComponentIdSchema,\n  CallId: CallIdSchema,\n  DataBinding: DataBindingSchema,\n  FunctionCommon: FunctionCommonSchema,\n  FunctionCall: FunctionCallSchema,\n  DynamicString: DynamicStringSchema,\n  DynamicBoolean: DynamicBooleanSchema,\n  AccessibilityAttributes: AccessibilityAttributesSchema,\n  Extensions: ExtensionsSchema,\n  ComponentCommon: ComponentCommonSchema,\n  Child: ChildSchema,\n  ChildList: ChildListSchema,\n  DynamicValue: DynamicValueSchema,\n  DynamicNumber: DynamicNumberSchema,\n  DynamicStringList: DynamicStringListSchema,\n  IndexSystemFunction: IndexSystemFunctionSchema,\n  CheckRule: CheckRuleSchema,\n  Checkable: CheckableSchema,\n  Action: ActionSchema,\n  Surface: SurfaceSchema,\n  FunctionResponse: FunctionResponseSchema,\n};\n\nexport * from './helpers.js';\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/v1.0/json/ via src/v1_0/scripts/generate-schemas.mjs\nimport {z} from 'zod';\nimport {\n  CallIdSchema,\n  ComponentsListSchema,\n  ExtensionsSchema,\n  FunctionCallSchema,\n  FunctionResponseSchema,\n} from './common-types.js';\n\nexport const CreateSurfaceMessageSchema = z\n  .object({\n    'version': z.literal('v1.0'),\n    'createSurface': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe(\n            \"The unique identifier for the UI surface to be rendered. It must be globally unique for the renderer's lifetime.\",\n          ),\n        'catalogId': z\n          .string()\n          .describe(\n            \"A string that uniquely identifies the default catalog for this surface. It is recommended to prefix this with an internet domain that you own, to avoid conflicts e.g. 'mycompany.com:somecatalog'. Components and function calls that do not explicitly specify a catalogId will use this surface-level default catalogId.\",\n          )\n          .optional(),\n        'sendDataModel': z\n          .boolean()\n          .describe(\n            'If true, the renderer will send the full data model of this surface in the metadata of every A2A message sent to the agent that created the surface. Defaults to false.',\n          )\n          .optional(),\n        'components': ComponentsListSchema.optional(),\n        'dataModel': z\n          .record(z.string(), z.any())\n          .describe('The initial root data model object for the surface.')\n          .optional(),\n        'metadata': z\n          .object({'extensions': ExtensionsSchema.optional()})\n          .strict()\n          .describe('Optional surface-level metadata.')\n          .optional(),\n      })\n      .strict()\n      .describe(\n        \"Signals the renderer to create a new surface and begin rendering it. Creating a surface implicitly instantiates the canonical 'Surface' container component ('common_types.json#/$defs/Surface') with 'child': 'root'. It is an error to try to create a surface with an existing ID without first deleting it; surfaceId MUST be globally unique for the renderer's lifetime. When this message is sent, the renderer expects 'updateComponents' and/or 'updateDataModel' messages for the same surfaceId to define the component tree.\",\n      ),\n  })\n  .strict();\nexport type CreateSurfaceMessage = z.infer<typeof CreateSurfaceMessageSchema>;\n\nexport const UpdateComponentsMessageSchema = z\n  .object({\n    'version': z.literal('v1.0'),\n    'updateComponents': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe(\n            \"The unique identifier for the UI surface to be updated. It must be globally unique for the renderer's lifetime.\",\n          ),\n        'components': ComponentsListSchema,\n      })\n      .strict()\n      .describe(\n        \"Updates a surface with a new set of components. This message can be sent multiple times to update the component tree of an existing surface. One of the components in one of the components lists MUST have an 'id' of 'root' to serve as the root of the component tree. The createSurface message MUST have been previously sent for this surfaceId.\",\n      ),\n  })\n  .strict();\nexport type UpdateComponentsMessage = z.infer<typeof UpdateComponentsMessageSchema>;\n\nexport const UpdateDataModelMessageSchema = z\n  .object({\n    'version': z.literal('v1.0'),\n    'updateDataModel': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe(\n            \"The unique identifier for the UI surface this data model update applies to. It must be globally unique for the renderer's lifetime.\",\n          ),\n        'path': z\n          .string()\n          .describe(\n            \"An optional path to a location within the data model (e.g., '/user/name'). If omitted, or set to '/', refers to the entire data model.\",\n          )\n          .optional(),\n        'value': z\n          .any()\n          .describe(\n            \"The data to be updated in the data model. To delete the key/value at 'path', set 'value' explicitly to null.\",\n          ),\n      })\n      .strict()\n      .describe(\n        'Updates the data model for an existing surface. This message can be sent multiple times to update the data model. The createSurface message MUST have been previously sent for this surfaceId.',\n      ),\n  })\n  .strict();\nexport type UpdateDataModelMessage = z.infer<typeof UpdateDataModelMessageSchema>;\n\nexport const DeleteSurfaceMessageSchema = z\n  .object({\n    'version': z.literal('v1.0'),\n    'deleteSurface': z\n      .object({\n        'surfaceId': z\n          .string()\n          .describe(\n            \"The unique identifier for the UI surface to be deleted. It must be globally unique for the renderer's lifetime.\",\n          ),\n      })\n      .strict()\n      .describe(\n        \"Signals the renderer to delete the surface identified by 'surfaceId'. The createSurface message MUST have been previously sent for this surfaceId.\",\n      ),\n  })\n  .strict();\nexport type DeleteSurfaceMessage = z.infer<typeof DeleteSurfaceMessageSchema>;\n\nexport const CallRendererFunctionMessageSchema = z\n  .object({\n    'version': z.literal('v1.0'),\n    'callRendererFunction': z\n      .object({\n        'functionCallId': CallIdSchema,\n        'callFunction': z.intersection(FunctionCallSchema, z.any()),\n      })\n      .strict()\n      .describe('Signals the renderer to execute a function locally on behalf of the agent.'),\n  })\n  .strict();\nexport type CallRendererFunctionMessage = z.infer<typeof CallRendererFunctionMessageSchema>;\n\nexport const AgentFunctionResponseMessageSchema = z\n  .object({'version': z.literal('v1.0'), 'agentFunctionResponse': FunctionResponseSchema})\n  .strict();\nexport type AgentFunctionResponseMessage = z.infer<typeof AgentFunctionResponseMessageSchema>;\n\nexport const AgentToRendererMessageSchema = z.union([\n  CreateSurfaceMessageSchema,\n  UpdateComponentsMessageSchema,\n  UpdateDataModelMessageSchema,\n  DeleteSurfaceMessageSchema,\n  CallRendererFunctionMessageSchema,\n  AgentFunctionResponseMessageSchema,\n]);\nexport type AgentToRendererMessage = z.infer<typeof AgentToRendererMessageSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {BaseVersionAdapter, ProtocolVersion} from './base.js';\nimport {\n  InternalComponentPayload,\n  InternalOperation,\n  INTERNAL_OPERATION_TYPES,\n} from '../operations.js';\nimport {AgentToRendererMessageSchema} from '../../v1_0/schema/agent-to-renderer.js';\n\n/**\n * Protocol version adapter for specification v1.0.\n */\nexport class V1Point0Adapter extends BaseVersionAdapter {\n  readonly version: ProtocolVersion = 'v1.0';\n  protected readonly schema = AgentToRendererMessageSchema;\n\n  protected getNativeActionKeys(): string[] {\n    return [...INTERNAL_OPERATION_TYPES];\n  }\n\n  protected extractOperationsFromObject(msgObj: Record<string, unknown>): InternalOperation[] {\n    const ops: InternalOperation[] = [];\n    if ('createSurface' in msgObj) {\n      const cs = msgObj.createSurface as Record<string, unknown>;\n      ops.push({\n        type: 'createSurface',\n        surfaceId: String(cs?.surfaceId || ''),\n        catalogId: typeof cs?.catalogId === 'string' ? cs.catalogId : undefined,\n        sendDataModel: Boolean(cs?.sendDataModel),\n        components: Array.isArray(cs?.components)\n          ? (cs.components as InternalComponentPayload[])\n          : undefined,\n        dataModel:\n          cs?.dataModel && typeof cs.dataModel === 'object' && !Array.isArray(cs.dataModel)\n            ? (cs.dataModel as Record<string, unknown>)\n            : undefined,\n        version: typeof msgObj.version === 'string' ? msgObj.version : this.version,\n      });\n    }\n    if ('updateComponents' in msgObj) {\n      const uc = msgObj.updateComponents as Record<string, unknown>;\n      ops.push({\n        type: 'updateComponents',\n        surfaceId: String(uc?.surfaceId || ''),\n        components: Array.isArray(uc?.components)\n          ? (uc.components as InternalComponentPayload[])\n          : [],\n      });\n    }\n    if ('updateDataModel' in msgObj) {\n      const ud = msgObj.updateDataModel as Record<string, unknown>;\n      ops.push({\n        type: 'updateDataModel',\n        surfaceId: String(ud?.surfaceId || ''),\n        path: typeof ud?.path === 'string' ? ud.path : undefined,\n        value: ud?.value,\n      });\n    }\n    if ('deleteSurface' in msgObj) {\n      const ds = msgObj.deleteSurface as Record<string, unknown>;\n      ops.push({\n        type: 'deleteSurface',\n        surfaceId: String(ds?.surfaceId || ''),\n      });\n    }\n    if ('callRendererFunction' in msgObj) {\n      const crf = msgObj.callRendererFunction as Record<string, unknown>;\n      const cf = (crf?.callFunction || {}) as Record<string, unknown>;\n      ops.push({\n        type: 'callRendererFunction',\n        functionCallId: String(crf?.functionCallId || ''),\n        call: String(cf?.call || ''),\n        version: this.version,\n        catalogId: typeof cf?.catalogId === 'string' ? cf.catalogId : undefined,\n        args:\n          cf?.args && typeof cf.args === 'object' && !Array.isArray(cf.args)\n            ? (cf.args as Record<string, unknown>)\n            : {},\n      });\n    }\n    if ('agentFunctionResponse' in msgObj) {\n      const afr = msgObj.agentFunctionResponse as Record<string, unknown>;\n      ops.push({\n        type: 'agentFunctionResponse',\n        functionCallId: String(afr?.functionCallId || ''),\n        version: this.version,\n        value: afr?.value,\n        error:\n          afr?.error && typeof afr.error === 'object'\n            ? (afr.error as {code: string; message: string})\n            : undefined,\n      });\n    }\n    return ops;\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {A2uiValidationError} from '../../errors.js';\nimport {normalizeVersionString, toCanonicalVersion} from '../../common/semver.js';\nimport {\n  ProtocolVersion,\n  VersionAdapter,\n  VersionAdapterResolver,\n  registerKnownActionsProvider,\n} from './base.js';\nimport {V0Point8Adapter} from './v0_8.js';\nimport {V0Point9Adapter} from './v0_9.js';\nimport {V1Point0Adapter} from './v1_0.js';\n\n/**\n * Resolves version adapters for protocol specification versions.\n */\nexport class VersionAdapterFactory implements VersionAdapterResolver {\n  private readonly adapters = new Map<string, VersionAdapter>([\n    ['0.8', new V0Point8Adapter()],\n    ['0.9', new V0Point9Adapter()],\n    ['0.9.1', new V0Point9Adapter()],\n    ['1.0', new V1Point0Adapter()],\n  ]);\n\n  /**\n   * Returns the aggregated set of all action keys supported by all registered adapters.\n   *\n   * @return A set of all supported action key strings.\n   */\n  getAllKnownActions(): ReadonlySet<string> {\n    const actions = new Set<string>();\n    for (const adapter of this.adapters.values()) {\n      if (adapter.validActions) {\n        for (const action of adapter.validActions) {\n          actions.add(action);\n        }\n      }\n    }\n    return actions;\n  }\n\n  /**\n   * Dynamically registers a version adapter on this factory instance.\n   *\n   * @param adapter The version adapter instance to register.\n   */\n  registerAdapter(adapter: VersionAdapter): void {\n    const key = toCanonicalVersion(adapter.version) ?? normalizeVersionString(adapter.version);\n    this.adapters.set(key, adapter);\n  }\n\n  /**\n   * Resolves the version adapter for the specified version string from this factory instance.\n   *\n   * @param version The protocol version string (e.g. 'v1.0').\n   * @return The matching version adapter.\n   * @throws A2uiValidationError if the version string is unsupported.\n   */\n  getAdapter(version: ProtocolVersion | string): VersionAdapter {\n    const key = toCanonicalVersion(version) ?? normalizeVersionString(version);\n    const adapter = this.adapters.get(key);\n    if (!adapter) {\n      const supported = Array.from(\n        new Set(Array.from(this.adapters.keys()).map(k => (k.startsWith('v') ? k : `v${k}`))),\n      )\n        .sort()\n        .join(', ');\n      throw new A2uiValidationError(\n        `[VersionAdapterFactory] Unsupported protocol version '${version}'. Supported versions: ${supported}.`,\n      );\n    }\n    return adapter;\n  }\n\n  /**\n   * Resolves the version adapter directly from an incoming message payload using this factory instance.\n   *\n   * @param payload The raw JSON message payload.\n   * @returns The resolved version adapter.\n   * @throws A2uiValidationError if the payload is missing a valid 'version' string.\n   */\n  resolveFromPayload(payload: unknown): VersionAdapter {\n    const item = Array.isArray(payload) ? payload[0] : payload;\n    if (typeof item === 'object' && item !== null) {\n      if ('messages' in item && Array.isArray((item as any).messages)) {\n        return this.resolveFromPayload((item as any).messages);\n      }\n      if ('version' in item) {\n        const ver = (item as {version: unknown}).version;\n        if (typeof ver !== 'string') {\n          throw new A2uiValidationError(\n            `[VersionAdapterFactory] Message payload is missing a valid 'version' string: 'version' property must be a string, got ${typeof ver}.`,\n          );\n        }\n        return this.getAdapter(ver);\n      }\n      if (\n        'beginRendering' in item ||\n        'surfaceUpdate' in item ||\n        'dataModelUpdate' in item ||\n        'deleteSurface' in item\n      ) {\n        return this.getAdapter('v0.8');\n      }\n    }\n    throw new A2uiValidationError(\n      \"[VersionAdapterFactory] Message payload is missing a valid 'version' string.\",\n    );\n  }\n\n  /**\n   * Registers a version adapter on the default singleton factory instance.\n   *\n   * @param adapter Version adapter instance to register.\n   */\n  static registerAdapter(adapter: VersionAdapter): void {\n    defaultVersionAdapterFactory.registerAdapter(adapter);\n  }\n\n  /**\n   * Resolves a version adapter for the specified version from the default singleton factory instance.\n   *\n   * @param version Protocol version string.\n   * @return Matching version adapter.\n   */\n  static getAdapter(version: ProtocolVersion | string): VersionAdapter {\n    return defaultVersionAdapterFactory.getAdapter(version);\n  }\n\n  /**\n   * Resolves a version adapter directly from a payload using the default singleton factory instance.\n   *\n   * @param payload Raw JSON message payload.\n   * @returns Resolved version adapter.\n   */\n  static resolveFromPayload(payload: unknown): VersionAdapter {\n    return defaultVersionAdapterFactory.resolveFromPayload(payload);\n  }\n\n  /**\n   * Returns the aggregated set of all action keys supported by all registered adapters\n   * from the default singleton factory instance.\n   *\n   * @return A set of all supported action key strings.\n   */\n  static getAllKnownActions(): ReadonlySet<string> {\n    return defaultVersionAdapterFactory.getAllKnownActions();\n  }\n}\n\n/** Default singleton version adapter factory instance. */\nexport const defaultVersionAdapterFactory = new VersionAdapterFactory();\nregisterKnownActionsProvider(() => defaultVersionAdapterFactory.getAllKnownActions());\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  signal,\n  computed,\n  Signal,\n  effect,\n  isSignal,\n  getValue,\n  setValue,\n  peekValue,\n} from '../reactivity/signals.js';\nimport {z} from 'zod';\nimport {DataModel, DataSubscription} from '../state/data-model.js';\nimport {\n  type DataBinding,\n  type FunctionCall,\n  type Action,\n  MAX_FUNCTION_CALL_ARGS,\n} from '../types/common-types.js';\nimport {A2uiCatalogError, A2uiExpressionError} from '../errors.js';\n\nimport {FunctionInvoker} from '../catalog/function_invoker.js';\nimport {SurfaceModel} from '../state/surface-model.js';\n\nimport {Catalog, CatalogInterface} from '../catalog/types.js';\n\nconst schemaKeysCache = new WeakMap<z.ZodTypeAny, Set<string> | null>();\n\n/**\n * Extracts declared property keys from a Zod schema representing an object with fixed keys.\n *\n * Traverses Zod wrappers (`ZodEffects`, `ZodOptional`, `ZodNullable`, `ZodDefault`,\n * `ZodCatch`, `ZodIntersection`, `ZodUnion`) and returns the set of allowed key names.\n *\n * @param schema Zod schema to inspect.\n * @returns Set of allowed property names, or `null` if arbitrary keys are permitted or undetermined.\n */\nexport function getKnownSchemaKeys(schema: z.ZodTypeAny): Set<string> | null {\n  if (schemaKeysCache.has(schema)) {\n    return schemaKeysCache.get(schema) as Set<string> | null;\n  }\n\n  const result = ((): Set<string> | null => {\n    let current: any = schema;\n    while (current) {\n      if (current instanceof z.ZodObject || current._def?.typeName === 'ZodObject') {\n        // If passthrough is enabled, arbitrary keys are allowed.\n        if (current._def?.unknownKeys === 'passthrough') {\n          return null;\n        }\n        const shape = typeof current.shape === 'function' ? current.shape() : current.shape;\n        if (shape && typeof shape === 'object') {\n          return new Set(Object.keys(shape));\n        }\n        return null;\n      }\n      if (current instanceof z.ZodEffects || current._def?.typeName === 'ZodEffects') {\n        current = current._def.schema;\n        continue;\n      }\n      if (\n        current instanceof z.ZodOptional ||\n        current instanceof z.ZodNullable ||\n        current._def?.typeName === 'ZodOptional' ||\n        current._def?.typeName === 'ZodNullable'\n      ) {\n        current = current._def.innerType;\n        continue;\n      }\n      if (current instanceof z.ZodDefault || current._def?.typeName === 'ZodDefault') {\n        current = current._def.innerType;\n        continue;\n      }\n      if (current instanceof z.ZodCatch || current._def?.typeName === 'ZodCatch') {\n        current = current._def.innerType;\n        continue;\n      }\n      if (current instanceof z.ZodIntersection || current._def?.typeName === 'ZodIntersection') {\n        const leftKeys = getKnownSchemaKeys(current._def.left);\n        const rightKeys = getKnownSchemaKeys(current._def.right);\n        if (!leftKeys || !rightKeys) {\n          return null;\n        }\n        return new Set([...leftKeys, ...rightKeys]);\n      }\n      if (current instanceof z.ZodUnion || current._def?.typeName === 'ZodUnion') {\n        const options: z.ZodTypeAny[] = current._def.options;\n        const allKeys = new Set<string>();\n        for (const opt of options) {\n          const k = getKnownSchemaKeys(opt);\n          if (!k) return null; // If any union branch allows arbitrary keys, do not filter.\n          for (const key of k) {\n            allKeys.add(key);\n          }\n        }\n        return allKeys;\n      }\n      return null;\n    }\n    return null;\n  })();\n\n  schemaKeysCache.set(schema, result);\n  return result;\n}\n\n/**\n * Validates a function call's arguments against the catalog function schema and global limits.\n *\n * Functions have a strict contract: supplying unknown or excessive arguments breaks that contract\n * and causes an A2uiExpressionError rather than silently stripping them. Validating arguments before\n * creating reactive nodes also prevents uncontrolled resource consumption.\n *\n * @param functionName Name of the function being validated.\n * @param rawArgs Raw argument map to validate against the function schema.\n * @param catalog Optional catalog providing the function's schema.\n * @throws {A2uiExpressionError} If argument count exceeds `MAX_FUNCTION_CALL_ARGS`, unknown arguments are supplied, or arguments exceed expected count.\n */\nexport function validateFunctionArgs(\n  functionName: string,\n  rawArgs: Record<string, any> | undefined | null,\n  catalog?: CatalogInterface<any, any> | any,\n): void {\n  if (!rawArgs || typeof rawArgs !== 'object' || Array.isArray(rawArgs)) {\n    return;\n  }\n\n  const suppliedKeys = Object.keys(rawArgs);\n  if (suppliedKeys.length > MAX_FUNCTION_CALL_ARGS) {\n    throw new A2uiExpressionError(\n      `Function call '${functionName}' exceeds maximum allowed arguments count (${MAX_FUNCTION_CALL_ARGS})`,\n      functionName,\n    );\n  }\n\n  const fn = catalog?.functions?.get?.(functionName);\n  if (!fn?.schema) {\n    return;\n  }\n\n  const knownKeys = getKnownSchemaKeys(fn.schema);\n  if (!knownKeys) {\n    // Schema allows arbitrary keys (e.g. passthrough)\n    return;\n  }\n\n  for (const key of suppliedKeys) {\n    if (!knownKeys.has(key)) {\n      throw new A2uiExpressionError(\n        `Unknown argument '${key}' passed to function '${functionName}'`,\n        functionName,\n      );\n    }\n  }\n\n  if (suppliedKeys.length > knownKeys.size) {\n    throw new A2uiExpressionError(\n      `Too many arguments for function '${functionName}': expected at most ${knownKeys.size}, received ${suppliedKeys.length}`,\n      functionName,\n    );\n  }\n}\n\n/**\n * Resolves the 0-based iteration index from a context or its ancestor chain.\n *\n * Checks for an explicit index first, then checks whether the trailing\n * segment of the data path is numeric, walking the parent context chain until a\n * match is found.\n *\n * @param startCtx Initial context or context-like object to inspect.\n * @returns The resolved 0-based iteration index, or `undefined` if outside an iteration scope.\n */\nexport function resolveContextIndex(startCtx: unknown): number | undefined {\n  let ctx = startCtx as\n    | {\n        explicitIndex?: number;\n        getIndex?: () => number | undefined;\n        index?: number;\n        path?: string;\n        parent?: unknown;\n      }\n    | undefined;\n  while (ctx) {\n    if (ctx.explicitIndex !== undefined && Number.isFinite(ctx.explicitIndex)) {\n      return ctx.explicitIndex;\n    }\n    if (!(ctx instanceof DataContext) && typeof ctx.getIndex === 'function') {\n      const idx = ctx.getIndex();\n      if (idx !== undefined && Number.isFinite(idx)) {\n        return idx;\n      }\n    }\n    if (\n      !(ctx instanceof DataContext) &&\n      typeof ctx.index === 'number' &&\n      Number.isFinite(ctx.index)\n    ) {\n      return ctx.index;\n    }\n    if (typeof ctx.path === 'string') {\n      const parts = ctx.path.split('/').filter(Boolean);\n      if (parts.length > 0 && /^\\d+$/.test(parts[parts.length - 1])) {\n        return parseInt(parts[parts.length - 1], 10);\n      }\n    }\n    ctx = ctx.parent as typeof ctx;\n  }\n  return undefined;\n}\n\n/**\n * The maximum allowed recursion depth for evaluating nested dynamic values or function calls.\n * Prevents call stack exhaustion on deeply nested expression payloads.\n */\nexport const MAX_DYNAMIC_VALUE_DEPTH = 1_000;\n\n/**\n * Scoped view of the main DataModel for resolving DynamicValues within a component hierarchy.\n *\n * Automatically resolves relative paths against the component's current scope\n * and provides tools for evaluating complex, reactive expressions.\n */\nexport class DataContext {\n  /** Shared DataModel instance for the UI surface. */\n  readonly dataModel: DataModel;\n  /** Callback for executing function calls defined in the A2UI component tree. */\n  readonly functionInvoker: FunctionInvoker;\n  /** Parent DataContext in the hierarchy, if this context was created via `.nested()`. */\n  readonly parent?: DataContext;\n  /** Explicit collection iteration index supplied to this context, if any. */\n  readonly explicitIndex?: number;\n  private readonly warnedPaths: Set<string>;\n\n  /**\n   * Initializes a new DataContext instance.\n   *\n   * @param surface The surface model this context belongs to.\n   * @param path The absolute path in the DataModel that this context is scoped to.\n   * @param index Optional explicit collection iteration index.\n   * @param parent Optional parent DataContext in the scope chain.\n   */\n  constructor(\n    readonly surface: SurfaceModel<any>,\n    readonly path: string,\n    index?: number,\n    parent?: DataContext,\n  ) {\n    this.dataModel = surface.dataModel;\n    this.functionInvoker = surface.defaultCatalog.invoker;\n    this.explicitIndex = index;\n    this.parent = parent;\n    this.warnedPaths = parent ? parent.warnedPaths : new Set<string>();\n  }\n\n  /**\n   * Returns the 0-based iteration index if this context (or an ancestor context)\n   * is scoped to a collection template item, or `undefined` when outside any\n   * collection template scope.\n   *\n   * Mirrors `DataContext.index` in Python: checks an explicit `explicitIndex` first,\n   * then checks strictly the trailing segment of `ctx.path`, walking `ctx.parent`.\n   *\n   * @returns The 0-based iteration index, or `undefined` if outside an iteration scope.\n   */\n  getIndex(): number | undefined {\n    return resolveContextIndex(this);\n  }\n\n  /** Active iteration index if inside a collection template scope, or `undefined`. */\n  get index(): number | undefined {\n    return this.getIndex();\n  }\n\n  /**\n   * Mutates the underlying DataModel at the specified path.\n   *\n   * @param path JSON pointer path, resolved relative to this context's `path` if not absolute.\n   * @param value New value to store in the DataModel.\n   */\n  set(path: string, value: unknown): void {\n    const absolutePath = this.resolvePath(path);\n    this.dataModel.set(absolutePath, value);\n  }\n\n  /**\n   * Checks whether an object represents a data binding.\n   *\n   * @param val Candidate object to inspect.\n   * @returns Whether the object has a string `path` and is not a component reference.\n   */\n  private static isDataBindingObject(val: Record<string, unknown>): boolean {\n    return 'path' in val && typeof val.path === 'string' && !('componentId' in val);\n  }\n\n  /**\n   * Checks whether an object represents a function call.\n   *\n   * @param val Candidate object to inspect.\n   * @returns Whether the object has a string `call` property.\n   */\n  private static isFunctionCallObject(val: Record<string, unknown>): boolean {\n    return 'call' in val && typeof val.call === 'string';\n  }\n\n  /**\n   * Checks whether a value contains any dynamic parts (path bindings or\n   * function calls) at any nesting depth that require resolution.\n   *\n   * @param value The value or data structure to inspect.\n   * @returns Whether the value contains any dynamic path bindings or function calls.\n   */\n  private static containsDynamicValue(value: unknown): boolean {\n    if (value === null || typeof value !== 'object') {\n      return false;\n    }\n    if (Array.isArray(value)) {\n      return value.some(item => DataContext.containsDynamicValue(item));\n    }\n    const rec = value as Record<string, unknown>;\n    if (DataContext.isDataBindingObject(rec) || DataContext.isFunctionCallObject(rec)) {\n      return true;\n    }\n    return Object.values(rec).some(v => DataContext.containsDynamicValue(v));\n  }\n\n  /**\n   * Emits a warning if a data binding path does not exist in the data model.\n   *\n   * @param absolutePath Absolute JSON pointer path to check.\n   */\n  private emitMissingDataBindingWarning(absolutePath: string): void {\n    if (\n      typeof this.dataModel?.hasPath === 'function' &&\n      !this.dataModel.hasPath(absolutePath) &&\n      !this.warnedPaths.has(absolutePath)\n    ) {\n      this.warnedPaths.add(absolutePath);\n      void this.surface?.dispatchWarning?.({\n        code: 'MISSING_DATA_BINDING',\n        path: absolutePath,\n        message: `Preflight DataBinding Warning: The bound JSON Pointer '${absolutePath}' does not physically exist in the active DataModel. Evaluating to None.`,\n      });\n    }\n  }\n\n  /**\n   * Synchronously evaluates a DynamicValue into its concrete runtime value.\n   *\n   * Evaluates the value once at the current moment without creating reactive subscriptions.\n   * Use `subscribeDynamicValue` for reactive updates.\n   * @param value The DynamicValue object or raw value from the A2UI JSON payload.\n   * @param depth The current recursion depth when evaluating nested arguments or expressions.\n   * @returns The synchronously resolved value.\n   */\n  resolveDynamicValue<V>(value: unknown, depth = 0): V {\n    if (depth > MAX_DYNAMIC_VALUE_DEPTH) {\n      const err = new A2uiExpressionError(\n        `Maximum dynamic value nesting depth exceeded (${MAX_DYNAMIC_VALUE_DEPTH})`,\n      );\n      this.dispatchExpressionError(err, 'DynamicValue');\n      return undefined as any;\n    }\n\n    if (value === null || typeof value !== 'object') {\n      return value as V;\n    }\n\n    if (Array.isArray(value)) {\n      if (!DataContext.containsDynamicValue(value)) {\n        return value as V;\n      }\n      return value.map(item => this.resolveDynamicValue(item, depth + 1)) as V;\n    }\n\n    const rec = value as Record<string, unknown>;\n\n    if (DataContext.isDataBindingObject(rec)) {\n      const absolutePath = this.resolvePath((value as DataBinding).path);\n      const val = this.dataModel.get(absolutePath);\n      if (val === undefined) {\n        this.emitMissingDataBindingWarning(absolutePath);\n      }\n      return val as V;\n    }\n\n    if (DataContext.isFunctionCallObject(rec)) {\n      return this.resolveFunctionCallValue<V>(value as FunctionCall, depth);\n    }\n\n    return this.resolvePlainObjectValue<V>(rec, depth);\n  }\n\n  /**\n   * Resolves a function call by validating arguments and invoking the function.\n   *\n   * @param call Function call definition to execute.\n   * @param depth Current recursion depth for nested expression tracking.\n   * @returns The resolved function return value.\n   */\n  private resolveFunctionCallValue<V>(call: FunctionCall, depth = 0): V {\n    let targetCatalog: Catalog<any>;\n    try {\n      // Resolve before validating: the arguments must be checked against the\n      // catalog that will actually run the call, not the surface default.\n      targetCatalog = this.resolveFunctionCatalog(call.catalogId);\n      validateFunctionArgs(call.call, call.args, targetCatalog);\n    } catch (e: unknown) {\n      this.dispatchExpressionError(e, call.call);\n      return undefined as V;\n    }\n    const args: Record<string, unknown> = {};\n    for (const [key, argVal] of Object.entries(call.args ?? {})) {\n      args[key] = this.resolveDynamicValue(argVal, depth + 1);\n    }\n\n    const abortController = new AbortController();\n    const result = this.evaluateFunctionReactive<V>(\n      call.call,\n      args,\n      abortController.signal,\n      call.catalogId,\n      targetCatalog.invoker,\n    );\n\n    if (result === undefined) {\n      return undefined as unknown as V;\n    }\n\n    return (isSignal(result) ? peekValue(result) : result) as V;\n  }\n\n  /**\n   * Recursively resolves dynamic values nested inside a plain object.\n   *\n   * @param rec Plain object dictionary to resolve.\n   * @param depth Current recursion depth for nested expression tracking.\n   * @returns A copy of the object with all nested dynamic values resolved.\n   */\n  private resolvePlainObjectValue<V>(rec: Record<string, unknown>, depth = 0): V {\n    if (!DataContext.containsDynamicValue(rec)) {\n      return rec as unknown as V;\n    }\n    const resolved: Record<string, unknown> = {};\n    for (const [k, v] of Object.entries(rec)) {\n      resolved[k] = this.resolveDynamicValue(v, depth + 1);\n    }\n    return resolved as unknown as V;\n  }\n\n  /**\n   * Reactively listens to changes in a DynamicValue.\n   *\n   * Whenever the underlying data or function dependencies change, the `onChange`\n   * callback fires with the freshly evaluated result.\n   *\n   * @template V Expected type of the resolved value.\n   * @param value The DynamicValue or raw value to evaluate and observe.\n   * @param onChange Callback fired whenever the evaluated result changes.\n   * @returns A subscription containing the current value and an `unsubscribe` method.\n   */\n  subscribeDynamicValue<V>(\n    value: unknown,\n    onChange: (value: V | undefined) => void,\n  ): DataSubscription<V> {\n    const sig = this.resolveSignal<V>(value);\n\n    let isSync = true;\n    let currentValue = peekValue(sig);\n\n    const dispose = effect(() => {\n      const val = getValue(sig);\n      currentValue = val;\n      if (!isSync) {\n        onChange(val);\n      }\n    });\n    isSync = false;\n\n    return {\n      get value() {\n        return currentValue;\n      },\n      unsubscribe: () => {\n        dispose();\n        sig.unsubscribe?.();\n      },\n    };\n  }\n\n  /**\n   * Resolves a DynamicValue into a reactive Signal.\n   *\n   * Recursively resolves any nested path bindings or function calls into a\n   * single reactive `Signal`. Changes to underlying data or function dependencies\n   * cause the signal's value to update.\n   *\n   * @template V Expected type of the signal value.\n   * @param value The DynamicValue or raw value to evaluate and observe.\n   * @param depth The current recursion depth when evaluating nested arguments or expressions.\n   * @returns A reactive Signal containing the result of the evaluation.\n   */\n  resolveSignal<V>(value: unknown, depth = 0): Signal<V> {\n    if (depth > MAX_DYNAMIC_VALUE_DEPTH) {\n      const err = new A2uiExpressionError(\n        `Maximum dynamic value nesting depth exceeded (${MAX_DYNAMIC_VALUE_DEPTH})`,\n      );\n      this.dispatchExpressionError(\n        err,\n        typeof value === 'object' && value && 'call' in value\n          ? (value as FunctionCall).call\n          : 'DynamicValue',\n      );\n      return signal(undefined as unknown as V);\n    }\n\n    // 1. Primitive literals\n    if (typeof value !== 'object' || value === null) {\n      return signal(value as V);\n    }\n\n    // 1b. Arrays: each element may itself be a DynamicValue (e.g. `and`/`or` `values`)\n    if (Array.isArray(value)) {\n      // Fast path: fully static arrays need no per-element signals.\n      if (!DataContext.containsDynamicValue(value)) {\n        return signal(value as V);\n      }\n      const itemSignals = value.map(item => this.resolveSignal(item, depth + 1));\n      const resultSig = computed(() => itemSignals.map(s => getValue(s))) as Signal<V>;\n      resultSig.unsubscribe = () => {\n        for (const s of itemSignals) {\n          s.unsubscribe?.();\n        }\n      };\n      return resultSig;\n    }\n\n    const rec = value as Record<string, unknown>;\n\n    // 2. Path Check\n    if (DataContext.isDataBindingObject(rec)) {\n      const absolutePath = this.resolvePath((value as DataBinding).path);\n      this.emitMissingDataBindingWarning(absolutePath);\n      return this.dataModel.getSignal<V>(absolutePath) as Signal<V>;\n    }\n\n    // 3. Function Call\n    if (DataContext.isFunctionCallObject(rec)) {\n      const call = value as FunctionCall;\n      let targetCatalog: Catalog<any>;\n      try {\n        // Resolve before validating: the arguments must be checked against the\n        // catalog that will actually run the call, not the surface default.\n        targetCatalog = this.resolveFunctionCatalog(call.catalogId);\n        validateFunctionArgs(call.call, call.args, targetCatalog);\n      } catch (e: unknown) {\n        this.dispatchExpressionError(e, call.call);\n        return signal(undefined as unknown as V);\n      }\n      const argSignals: Record<string, Signal<unknown>> = {};\n\n      for (const [key, argVal] of Object.entries(call.args ?? {})) {\n        argSignals[key] = this.resolveSignal(argVal, depth + 1);\n      }\n\n      if (Object.keys(argSignals).length === 0) {\n        const abortController = new AbortController();\n        const result = this.evaluateFunctionReactive<V>(\n          call.call,\n          {},\n          abortController.signal,\n          call.catalogId,\n          targetCatalog.invoker,\n        );\n        const sig = isSignal(result) ? result : signal(result as V);\n        sig.unsubscribe = () => abortController.abort();\n        return sig;\n      }\n\n      const keys = Object.keys(argSignals);\n      const resultSig = signal<V | undefined>(undefined);\n      let abortController: AbortController | undefined;\n      let innerUnsubscribe: (() => void) | undefined;\n\n      const argsSig = computed(() => {\n        const argsRecord: Record<string, unknown> = {};\n        for (let i = 0; i < keys.length; i++) {\n          argsRecord[keys[i]] = getValue(argSignals[keys[i]]);\n        }\n        return argsRecord;\n      });\n\n      const stopper = effect(() => {\n        try {\n          const args = getValue(argsSig);\n\n          if (abortController) abortController.abort();\n          if (innerUnsubscribe) {\n            innerUnsubscribe();\n            innerUnsubscribe = undefined;\n          }\n          abortController = new AbortController();\n\n          const res = this.evaluateFunctionReactive<V>(\n            call.call,\n            args,\n            abortController.signal,\n            call.catalogId,\n            targetCatalog.invoker,\n          );\n\n          if (isSignal(res)) {\n            innerUnsubscribe = effect(() => {\n              setValue(resultSig, getValue(res));\n            });\n          } else {\n            setValue(resultSig, res);\n          }\n        } catch (e: unknown) {\n          this.dispatchExpressionError(e, call.call);\n          // In reactive mode, we should not throw. Instead, reset the signal value.\n          setValue(resultSig, undefined);\n        }\n      });\n\n      resultSig.unsubscribe = () => {\n        stopper();\n        if (innerUnsubscribe) innerUnsubscribe();\n        if (abortController) abortController.abort();\n        for (let i = 0; i < keys.length; i++) {\n          argSignals[keys[i]].unsubscribe?.();\n        }\n      };\n\n      return resultSig as unknown as Signal<V>;\n    }\n\n    if (!DataContext.containsDynamicValue(rec)) {\n      return signal(value as unknown as V);\n    }\n\n    const entrySignals = Object.entries(rec).map(([k, v]) => [k, this.resolveSignal(v)] as const);\n    const objSig = computed(() => {\n      const resolved: Record<string, unknown> = {};\n      for (const [k, s] of entrySignals) {\n        resolved[k] = getValue(s);\n      }\n      return resolved as unknown as V;\n    }) as Signal<V>;\n    const prevUnsubscribe = objSig.unsubscribe?.bind(objSig);\n    objSig.unsubscribe = () => {\n      prevUnsubscribe?.();\n      for (const [, s] of entrySignals) {\n        s.unsubscribe?.();\n      }\n    };\n    return objSig;\n  }\n\n  /**\n   * Resolves an action by evaluating its top-level dynamic values.\n   *\n   * For event actions, resolves each value in the context map.\n   * For function call actions, evaluates the function call.\n   *\n   * @param action The Action object to resolve.\n   * @returns The resolved action payload or function execution result.\n   */\n  resolveAction(action: Action): Action | unknown {\n    if ('event' in action) {\n      const resolvedContext: Record<string, unknown> = {};\n      if (action.event.context) {\n        for (const [key, value] of Object.entries(action.event.context)) {\n          resolvedContext[key] = this.resolveDynamicValue(value);\n        }\n      }\n      return {\n        event: {\n          ...action.event,\n          context: resolvedContext,\n        },\n      };\n    }\n    if ('functionCall' in action) {\n      return this.resolveDynamicValue(action.functionCall);\n    }\n    return action;\n  }\n\n  /**\n   * Resolves the catalog against which a function call executes.\n   *\n   * @param catalogId Identifier of the catalog named by the call, if specified.\n   * @returns The resolved Catalog instance, or the surface default catalog if omitted.\n   * @throws {A2uiCatalogError} If the call names a catalog ID that cannot be\n   *   resolved on this surface. This is reported as a catalog fault rather than\n   *   a missing function, since the function may exist in a catalog that is not\n   *   available here.\n   */\n  private resolveFunctionCatalog(catalogId?: string): Catalog<any> {\n    if (catalogId === undefined) {\n      return this.surface.defaultCatalog;\n    }\n    const target = this.surface.availableCatalogs?.get(catalogId);\n    if (!target) {\n      throw new A2uiCatalogError(`Catalog not found: ${catalogId}`);\n    }\n    return target;\n  }\n\n  /**\n   * Evaluates a catalog function and returns its reactive Signal or static value.\n   *\n   * Resolves the appropriate function invoker from the specified catalog or\n   * surface default, invokes the function with this context, and dispatches an\n   * expression error if execution throws.\n   *\n   * @template V Expected return type of the function evaluation.\n   * @param name Name of the function to evaluate.\n   * @param args Resolved arguments to pass to the function.\n   * @param abortSignal Optional abort signal to cancel asynchronous execution.\n   * @param catalogId Optional catalog ID override declaring the function.\n   * @param resolvedInvoker Optional pre-resolved function invoker to avoid redundant catalog lookup.\n   * @returns The evaluated result as a reactive `Signal` or static value, or `undefined` on failure.\n   */\n  private evaluateFunctionReactive<V>(\n    name: string,\n    args: Record<string, unknown>,\n    abortSignal?: AbortSignal,\n    catalogId?: string,\n    resolvedInvoker?: FunctionInvoker,\n  ): Signal<V> | V {\n    const invoker =\n      resolvedInvoker ??\n      (catalogId === undefined\n        ? this.functionInvoker\n        : this.resolveFunctionCatalog(catalogId).invoker);\n    try {\n      return invoker(name, args, this, abortSignal) as Signal<V> | V;\n    } catch (e: unknown) {\n      this.dispatchExpressionError(e, name);\n      return undefined as unknown as V;\n    }\n  }\n\n  private dispatchExpressionError(e: unknown, name: string): void {\n    if (\n      e instanceof z.ZodError ||\n      (typeof e === 'object' && e !== null && (e as {name?: string}).name === 'ZodError')\n    ) {\n      const zodErr = e as z.ZodError;\n      const err = new A2uiExpressionError(\n        `Validation failed for function '${name}': ${zodErr.message}`,\n        name,\n        zodErr.errors ?? (zodErr as unknown as {issues?: unknown}).issues,\n      );\n      this.surface.dispatchError({\n        code: 'EXPRESSION_ERROR',\n        message: err.message,\n        expression: name,\n        details: err.details,\n      });\n    } else if (e instanceof A2uiExpressionError) {\n      this.surface.dispatchError({\n        code: 'EXPRESSION_ERROR',\n        message: e.message,\n        expression: e.expression,\n        details: e.details,\n      });\n    } else {\n      const errObj = typeof e === 'object' && e !== null ? (e as {message?: string}) : {};\n      this.surface.dispatchError({\n        code: 'EXPRESSION_ERROR',\n        message: errObj.message ?? `An unexpected error occurred in function ${name}.`,\n        expression: name,\n      });\n    }\n  }\n\n  /**\n   * Creates a child DataContext scoped to a deeper relative path.\n   *\n   * @param relativePath The path relative to the current context's path.\n   * @param index Optional explicit iteration index for this nested scope.\n   * @returns A new DataContext instance pointing to the resolved absolute path.\n   */\n  nested(relativePath: string, index?: number): DataContext {\n    const newPath = this.resolvePath(relativePath);\n    return new DataContext(this.surface, newPath, index, this);\n  }\n\n  private resolvePath(path: string): string {\n    if (path.startsWith('/')) {\n      return path;\n    }\n    if (path === '' || path === '.') {\n      return this.path;\n    }\n\n    let base = this.path;\n    if (base.endsWith('/') && base.length > 1) {\n      base = base.slice(0, -1);\n    }\n    if (base === '/') base = '';\n\n    return `${base}/${path}`;\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\n\nimport {createFunctionImplementation, FunctionImplementation} from '../../catalog/types.js';\nimport {A2uiValidationError} from '../../errors.js';\nimport {resolveContextIndex} from '../../resolution/data-context.js';\n\n/**\n * System function definition for computing iteration indices in array contexts.\n *\n * Evaluates the 0-based iteration index with an optional numerical offset.\n */\nexport const IndexApi = {\n  /** Name of the system function. */\n  name: '@index' as const,\n  /** Declared return type for catalog type checking. */\n  returnType: 'number' as const,\n  /** Scope of callers permitted to invoke this function. */\n  allowedCallers: 'rendererOnly' as const,\n  /** Zod schema validating function arguments. */\n  schema: z.object({\n    'offset': z.coerce.number().optional(),\n  }),\n};\n\n/**\n * Implementation of the `@index` system function.\n *\n * Returns the 0-based iteration index of the enclosing collection template,\n * plus an optional offset.\n *\n * @throws {A2uiValidationError} If called outside a collection template iteration scope.\n */\nexport const IndexImplementation = createFunctionImplementation(IndexApi, (args, context) => {\n  const offset = typeof args.offset === 'number' && Number.isFinite(args.offset) ? args.offset : 0;\n  const index = resolveContextIndex(context);\n\n  if (index === undefined || !Number.isFinite(index)) {\n    throw new A2uiValidationError(\n      '@index function can only be evaluated inside a collection template iteration scope.',\n    );\n  }\n  return index + offset;\n});\n\n/**\n * Standard v1.0 system function implementations.\n */\nexport const SYSTEM_FUNCTIONS: FunctionImplementation[] = [IndexImplementation];\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {CatalogInterface} from '../catalog/types.js';\nimport {isAtLeastVersion} from '../common/semver.js';\nimport {isValidUax31Identifier} from '../common/uax31.js';\nimport {A2uiValidationError} from '../errors.js';\nimport {formatZodIssue} from '../processing/format-zod-issue.js';\nimport {MAX_FUNCTION_CALL_ARGS} from '../types/helpers.js';\nimport {IndexApi} from '../v1_0/functions/system_functions.js';\nimport type {ValidationConfig} from './integrity-checker.js';\n\n/**\n * Envelope keys that are addressed by the processor rather than described by a\n * component's property schema, and so must be removed before the payload is\n * checked against that schema.\n */\nconst COMPONENT_ENVELOPE_KEYS = ['id', 'component', 'catalogId', 'catalogID'] as const;\n\n/**\n * Validates A2UI payloads against the schemas of a single catalog.\n *\n * The validator is deliberately scoped to one catalog. Multi-catalog payloads\n * are resolved to a target catalog by the caller, which then constructs a\n * validator for it; that keeps catalog resolution and schema checking in\n * separate places and mirrors Python's `PayloadValidator`.\n *\n * Every method throws on failure rather than returning a list of problems.\n * Python's `validate_component` returns its errors instead, but TypeScript\n * callers, in particular `MessageProcessor`, depend on an exception to trigger\n * atomic rollback of a partially applied update.\n *\n * Identifier checks apply only to catalogs declaring protocol version 1.0 or\n * later, matching the version gate Python applies.\n */\nexport class PayloadValidator {\n  /** Whether this catalog's protocol version mandates UAX #31 identifiers. */\n  private readonly enforceIdentifiers: boolean;\n\n  /**\n   * Initializes a new `PayloadValidator`.\n   *\n   * @param catalog Catalog whose schemas define what a valid payload is.\n   * @param config Validation strictness. When omitted, unknown components and\n   *   functions are tolerated.\n   */\n  constructor(\n    private readonly catalog: CatalogInterface<any, any>,\n    private readonly config?: ValidationConfig,\n  ) {\n    this.enforceIdentifiers = isAtLeastVersion(catalog.protocolVersion, '1.0');\n  }\n\n  /**\n   * Whether unrecognized components and functions are tolerated.\n   *\n   * An absent config means the caller is not validating at all, so unknown\n   * elements pass. This preserves the gate `MessageProcessor` applied before\n   * this class existed, and matches Python, whose `validate_components_update`\n   * returns early when `config is None`.\n   */\n  private get allowUnknown(): boolean {\n    return this.config ? (this.config.allowUnknownElements ?? false) : true;\n  }\n\n  /**\n   * Validates a single component payload against its catalog definition,\n   * including any nested function calls within its properties.\n   *\n   * @param comp Raw component payload, including its `id` and `component`\n   *   envelope keys.\n   * @param knownType Component type to assume when the payload omits\n   *   `component`, as happens on a partial update to an existing component.\n   * @throws {A2uiValidationError} If the identifier, the component type, any\n   *   property, or any nested function call fails validation.\n   */\n  validateComponent(comp: Record<string, unknown>, knownType?: string): void {\n    const id = comp['id'];\n    if (typeof id !== 'string' || !id) {\n      throw new A2uiValidationError(\n        `Component '${comp['component']}' is missing an 'id'; entries require a valid string 'id'.`,\n      );\n    }\n\n    this.assertIdentifier(id, `Component id '${id}' must be a valid UAX #31 identifier`);\n\n    const declaredType = comp['component'];\n    const componentType = typeof declaredType === 'string' ? declaredType : knownType;\n    if (!componentType) {\n      throw new A2uiValidationError(`Cannot create component ${id} without a type.`);\n    }\n\n    const componentApi = this.catalog.components.get(componentType);\n    if (!componentApi) {\n      if (!this.allowUnknown) {\n        throw new A2uiValidationError(\n          `Unknown component type '${componentType}' not found in catalog '${this.catalog.id}'.`,\n        );\n      }\n      return;\n    }\n\n    const properties = stripEnvelopeKeys(comp);\n    const result = componentApi.schema.safeParse(properties);\n    if (!result.success) {\n      const formattedErrors = result.error.errors.map(formatZodIssue).join(', ');\n      throw new A2uiValidationError(\n        `Validation failed for component '${componentType}' (${id}): ${formattedErrors}`,\n        result.error.issues,\n      );\n    }\n\n    this.validateNestedFunctions(properties);\n  }\n\n  /**\n   * Asserts that a function name and all its argument keys satisfy UAX #31 identifier syntax.\n   *\n   * @param name Function name to check.\n   * @param args Function arguments object whose keys are checked.\n   * @throws {A2uiValidationError} If the function name or any argument key is not a valid UAX #31 identifier.\n   */\n  private assertFunctionIdentifiers(name: string, args: unknown): void {\n    this.assertIdentifier(name, `Function name '${name}' must be a valid UAX #31 identifier`);\n    if (args && typeof args === 'object' && !Array.isArray(args)) {\n      const keys = Object.keys(args);\n      if (keys.length > MAX_FUNCTION_CALL_ARGS) {\n        throw new A2uiValidationError(\n          `Function call '${name}' exceeds maximum allowed arguments count (${MAX_FUNCTION_CALL_ARGS})`,\n        );\n      }\n      for (const argName of keys) {\n        this.assertIdentifier(\n          argName,\n          `Function argument '${argName}' in function '${name}' must be a valid UAX #31 identifier`,\n        );\n      }\n    }\n  }\n\n  /**\n   * Recursively walks a component's property values and validates any nested\n   * function call objects against their target catalog.\n   *\n   * @param val Property value or subtree to inspect.\n   * @throws {A2uiValidationError} If any nested function call fails schema or identifier validation.\n   */\n  private validateNestedFunctions(val: unknown): void {\n    if (Array.isArray(val)) {\n      for (const item of val) {\n        this.validateNestedFunctions(item);\n      }\n      return;\n    }\n\n    if (typeof val !== 'object' || val === null) {\n      return;\n    }\n\n    const record = val as Record<string, unknown>;\n    const rawName = record['call'] ?? record['function'];\n    if (typeof rawName === 'string' && rawName.length > 0) {\n      const rawArgs = record['args'];\n      const argsDict = (rawArgs !== undefined ? rawArgs : {}) as Record<string, unknown>;\n      const callCatalogId =\n        typeof record['catalogId'] === 'string' && record['catalogId'].length > 0\n          ? record['catalogId']\n          : undefined;\n\n      if (callCatalogId && callCatalogId !== this.catalog.id) {\n        // Single-catalog validator: enforce UAX #31 syntax on the function name\n        // and argument keys, but leave schema validation to runtime resolution in\n        // DataContext against the target catalog.\n        this.assertFunctionIdentifiers(rawName, argsDict);\n      } else {\n        this.validateFunction(rawName, argsDict);\n      }\n    }\n\n    for (const [k, v] of Object.entries(record)) {\n      if (k !== 'id' && k !== 'component') {\n        this.validateNestedFunctions(v);\n      }\n    }\n  }\n\n  /**\n   * Validates the arguments of a function call against the catalog definition.\n   *\n   * @param name Name of the function being called.\n   * @param args Arguments supplied by the payload.\n   * @returns The parsed arguments object (including any schema defaults).\n   * @throws {A2uiValidationError} If the function name, an argument name, or an\n   *   argument value fails validation.\n   */\n  validateFunction(name: string, args?: Record<string, unknown>): Record<string, unknown> {\n    this.assertFunctionIdentifiers(name, args);\n\n    const fn =\n      this.catalog.functions.get(name) ??\n      (this.enforceIdentifiers && name === '@index' ? IndexApi : undefined);\n    if (!fn) {\n      if (!this.allowUnknown) {\n        throw new A2uiValidationError(`Unrecognized function '${name}'`);\n      }\n      return (args ?? {}) as Record<string, unknown>;\n    }\n\n    if (!fn.schema) {\n      if (\n        args !== undefined &&\n        (typeof args !== 'object' || args === null || Array.isArray(args))\n      ) {\n        throw new A2uiValidationError(\n          `Validation failed for function '${name}': Expected object, received ${Array.isArray(args) ? 'array' : typeof args}`,\n        );\n      }\n      return (args ?? {}) as Record<string, unknown>;\n    }\n\n    const result = fn.schema.safeParse(args ?? {});\n    if (!result.success) {\n      const formattedErrors = result.error.errors.map(formatZodIssue).join(', ');\n      throw new A2uiValidationError(\n        `Validation failed for function '${name}': ${formattedErrors}`,\n        result.error.issues,\n      );\n    }\n    return result.data as Record<string, unknown>;\n  }\n\n  /**\n   * Validates a surface theme against the catalog's theme schema.\n   *\n   * A catalog that declares no theme schema accepts any theme.\n   *\n   * @param theme Theme payload supplied on `createSurface`.\n   * @returns The parsed theme, which a schema may have defaulted or coerced.\n   * @throws {A2uiValidationError} If the theme does not satisfy the schema.\n   */\n  validateTheme(theme: unknown): unknown {\n    const themeSchema = this.catalog.themeSchema;\n    if (!themeSchema) return theme;\n\n    const result = themeSchema.safeParse(theme);\n    if (!result.success) {\n      const formattedErrors = result.error.errors.map(formatZodIssue).join(', ');\n      throw new A2uiValidationError(\n        `Validation failed for theme: ${formattedErrors}`,\n        result.error.issues,\n      );\n    }\n    return result.data;\n  }\n\n  /**\n   * Asserts that an identifier is valid if identifier enforcement is enabled.\n   *\n   * @param name Identifier to check.\n   * @param message Error message to use when validation fails.\n   * @throws {A2uiValidationError} If identifier enforcement is active and `name` is invalid.\n   */\n  private assertIdentifier(name: string, message: string): void {\n    if (!this.enforceIdentifiers) return;\n    if (!isValidUax31Identifier(name)) {\n      throw new A2uiValidationError(message);\n    }\n  }\n}\n\n/**\n * Strips processor envelope keys from a component payload, returning only component properties.\n *\n * @param comp Raw component payload.\n * @returns New object holding only schema-described properties.\n */\nfunction stripEnvelopeKeys(comp: Record<string, unknown>): Record<string, unknown> {\n  const properties: Record<string, unknown> = {};\n  for (const [key, value] of Object.entries(comp)) {\n    if ((COMPONENT_ENVELOPE_KEYS as readonly string[]).includes(key)) continue;\n    properties[key] = value;\n  }\n  return properties;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Catalog, FunctionImplementation} from '../catalog/types.js';\nimport {DataContext} from '../resolution/data-context.js';\nimport {isSignal, getValue} from '../reactivity/signals.js';\nimport {FunctionCall} from '../v1_0/schema/common-types.js';\nimport {\n  CallRendererFunctionMessage,\n  AgentFunctionResponseMessage,\n} from '../v1_0/schema/agent-to-renderer.js';\nimport {\n  RendererFunctionResponseMessage,\n  CallAgentFunctionMessage,\n} from '../v1_0/schema/renderer-to-agent.js';\nimport {isCatalogVersionCompatible} from '../processing/adapters/base.js';\nimport {PayloadValidator} from '../validation/payload-validator.js';\nimport {A2uiRpcError, RpcErrorCode} from '../errors.js';\n\nexport {A2uiRpcError, RpcErrorCode};\n\n/**\n * Callback function type receiving outbound renderer messages intended for the agent.\n */\nexport type OutboundMessageListener = (\n  message: RendererFunctionResponseMessage | CallAgentFunctionMessage,\n) => void | Promise<void>;\n\n/**\n * Options for configuring an RpcHandler instance.\n */\nexport interface RpcHandlerOptions {\n  /** Catalogs available for function resolution. */\n  readonly catalogs: Catalog<any>[];\n  /** Listener receiving outbound renderer messages. Required for callAgentFunction. */\n  outboundListener?: OutboundMessageListener;\n  /** Default timeout in milliseconds for callAgentFunction requests (default: 30000ms). */\n  defaultTimeoutMs?: number;\n}\n\n/**\n * Options for configuring an outbound callAgentFunction request.\n */\nexport interface CallOptions {\n  /** Explicit identifier for the function call. */\n  functionCallId?: string;\n  /** Timeout in milliseconds before rejecting with TIMEOUT. */\n  timeoutMs?: number;\n  /** Protocol version for the outbound message. */\n  version?: string;\n}\n\n/**\n * Pending agent function callback record.\n */\ninterface PendingAgentCall {\n  resolve: (value: unknown) => void;\n  reject: (error: Error) => void;\n}\n\n/**\n * Normalized arguments for outbound agent function invocation.\n */\ninterface NormalizedAgentCall {\n  functionCallId: string;\n  call: FunctionCall;\n  effectiveTimeoutMs: number;\n  version?: string;\n}\n\n/**\n * Manages bidirectional RPC function execution between renderer and server agent.\n */\nexport class RpcHandler {\n  private readonly catalogs: Catalog<any>[];\n  private readonly outboundListener?: OutboundMessageListener;\n  private readonly defaultTimeoutMs: number;\n  private readonly pendingAgentCalls = new Map<string, PendingAgentCall>();\n  private isDisposed = false;\n\n  /**\n   * Initializes a new `RpcHandler` instance with configuration options.\n   *\n   * @param options Configuration options including catalogs, outbound listener, and timeout.\n   */\n  constructor(options: RpcHandlerOptions);\n  /**\n   * Initializes a new `RpcHandler` instance with catalogs and an optional outbound listener.\n   *\n   * @param catalogs Catalogs available for function resolution.\n   * @param outboundListener Optional callback receiving outbound renderer messages.\n   */\n  constructor(catalogs: Catalog<any>[], outboundListener?: OutboundMessageListener);\n  constructor(\n    optionsOrCatalogs: RpcHandlerOptions | Catalog<any>[],\n    outboundListener?: OutboundMessageListener,\n  ) {\n    if (Array.isArray(optionsOrCatalogs)) {\n      this.catalogs = optionsOrCatalogs;\n      this.outboundListener = outboundListener;\n      this.defaultTimeoutMs = 30000;\n    } else {\n      const options = optionsOrCatalogs ?? {};\n      this.catalogs = options.catalogs ?? [];\n      this.outboundListener = options.outboundListener;\n      this.defaultTimeoutMs = options.defaultTimeoutMs ?? 30000;\n    }\n  }\n\n  /**\n   * Whether this RPC handler has been disposed.\n   */\n  get disposed(): boolean {\n    return this.isDisposed;\n  }\n\n  /**\n   * Executes a remote renderer function requested by the server agent.\n   *\n   * @param message Inbound callRendererFunction message.\n   * @param context DataContext for function execution.\n   * @param isUserActivated Whether execution occurs in an active user gesture context.\n   * @returns A promise resolving to the renderer function response message.\n   */\n  async handleCallRendererFunction(\n    message: CallRendererFunctionMessage,\n    context: DataContext,\n    isUserActivated: boolean = false,\n  ): Promise<RendererFunctionResponseMessage> {\n    const validationError = this.validateInboundMessage(message);\n    if (validationError) {\n      await this.emitOutboundResponse(validationError);\n      return validationError;\n    }\n\n    const {version, callRendererFunction} = message;\n    const {functionCallId, callFunction} = callRendererFunction;\n    const {call, catalogId, args} = callFunction;\n\n    const resolved = this.resolveFunctionImplementation(catalogId, call, context, version);\n    if ('error' in resolved) {\n      const errorResponse = this.createResponseError(\n        functionCallId,\n        RpcErrorCode.INVALID_FUNCTION_CALL,\n        resolved.error,\n        version,\n      );\n      await this.emitOutboundResponse(errorResponse);\n      return errorResponse;\n    }\n\n    const accessError = this.checkExecutionPermissions(resolved.funcImpl, call, isUserActivated);\n    if (accessError) {\n      const errorResponse = this.createResponseError(\n        functionCallId,\n        RpcErrorCode.INVALID_FUNCTION_CALL,\n        accessError,\n        version,\n      );\n      await this.emitOutboundResponse(errorResponse);\n      return errorResponse;\n    }\n\n    const parsedArgsResult = this.parseArguments(resolved.catalog, resolved.funcImpl, args, call);\n    if ('error' in parsedArgsResult) {\n      const errorResponse = this.createResponseError(\n        functionCallId,\n        RpcErrorCode.INVALID_FUNCTION_CALL,\n        parsedArgsResult.error,\n        version,\n      );\n      await this.emitOutboundResponse(errorResponse);\n      return errorResponse;\n    }\n\n    const response = await this.executeFunctionSafely(\n      resolved.funcImpl,\n      parsedArgsResult.args,\n      context,\n      functionCallId,\n      version,\n    );\n    await this.emitOutboundResponse(response);\n    return response;\n  }\n\n  /**\n   * Processes an inbound agent function response to resolve or reject the matching pending outbound call.\n   *\n   * @param message Inbound agent function response message.\n   */\n  handleAgentFunctionResponse(message: AgentFunctionResponseMessage): void {\n    if (!message || !message.agentFunctionResponse) return;\n    const {functionCallId, value, error} = message.agentFunctionResponse;\n    const pending = this.pendingAgentCalls.get(functionCallId);\n    if (!pending) return;\n\n    this.pendingAgentCalls.delete(functionCallId);\n    if (error) {\n      const errCode = error.code ?? RpcErrorCode.UNKNOWN_ERROR;\n      const errMsg = error.message ?? 'Agent function execution failed';\n      pending.reject(new A2uiRpcError(errMsg, errCode, functionCallId, error));\n    } else {\n      pending.resolve(value);\n    }\n  }\n\n  /**\n   * Invokes a remote function on the server agent using an options bag.\n   *\n   * @template T Expected return value type of the agent function.\n   * @param surfaceId Identifier of the surface requesting execution.\n   * @param call Function call details.\n   * @param options Optional invocation options (custom functionCallId, timeoutMs).\n   * @returns A promise resolving to the agent function return value.\n   * @throws {A2uiRpcError} If the handler is disposed, no listener is configured, the call is invalid or duplicate, or invocation times out or fails.\n   */\n  callAgentFunction<T = unknown>(\n    surfaceId: string,\n    call: FunctionCall,\n    options?: CallOptions,\n  ): Promise<T> {\n    if (this.isDisposed) {\n      return Promise.reject(\n        new A2uiRpcError('RpcHandler has been disposed.', RpcErrorCode.DISPOSED),\n      );\n    }\n    if (!this.outboundListener) {\n      return Promise.reject(\n        new A2uiRpcError(\n          'Cannot call agent function without outboundListener configured.',\n          RpcErrorCode.NO_LISTENER,\n        ),\n      );\n    }\n\n    if (!call || !call.call) {\n      return Promise.reject(\n        new A2uiRpcError(\n          'Missing or invalid function call name.',\n          RpcErrorCode.INVALID_FUNCTION_CALL,\n        ),\n      );\n    }\n\n    const opts = options ?? {};\n    const functionCallId = opts.functionCallId ?? this.generateFunctionCallId();\n    const effectiveTimeoutMs = opts.timeoutMs ?? this.defaultTimeoutMs;\n\n    if (this.pendingAgentCalls.has(functionCallId)) {\n      return Promise.reject(\n        new A2uiRpcError(\n          `A call with functionCallId '${functionCallId}' is already pending.`,\n          RpcErrorCode.DUPLICATE,\n          functionCallId,\n        ),\n      );\n    }\n\n    const normalized: NormalizedAgentCall = {\n      functionCallId,\n      call,\n      effectiveTimeoutMs,\n      version: opts.version,\n    };\n\n    return this.dispatchAgentCall<T>(surfaceId, normalized);\n  }\n\n  /**\n   * Disposes the RPC handler and cancels all pending agent function calls with a `CANCELLED` error.\n   */\n  dispose(): void {\n    if (this.isDisposed) return;\n    this.isDisposed = true;\n    for (const [id, pending] of this.pendingAgentCalls.entries()) {\n      pending.reject(\n        new A2uiRpcError(\n          `RpcHandler disposed while call '${id}' was pending.`,\n          RpcErrorCode.CANCELLED,\n          id,\n        ),\n      );\n    }\n    this.pendingAgentCalls.clear();\n  }\n\n  /**\n   * Sends an outbound renderer response message to the outbound listener.\n   *\n   * @param response Renderer function response message to transmit.\n   */\n  private async emitOutboundResponse(response: RendererFunctionResponseMessage): Promise<void> {\n    if (this.outboundListener) {\n      try {\n        const res = this.outboundListener(response);\n        if (res && typeof (res as any).catch === 'function') {\n          await res;\n        }\n      } catch {\n        // Outbound listener errors should not mask execution response\n      }\n    }\n  }\n\n  /**\n   * Validates an inbound renderer function call message.\n   *\n   * @param message Inbound message to validate.\n   * @returns An error response if validation fails; otherwise `null`.\n   */\n  private validateInboundMessage(\n    message: CallRendererFunctionMessage,\n  ): RendererFunctionResponseMessage | null {\n    if (!message) {\n      return this.createResponseError(\n        'unknown',\n        RpcErrorCode.INVALID_FUNCTION_CALL,\n        'Inbound message is null or undefined.',\n        'unknown',\n      );\n    }\n    const version = message.version;\n    if (this.isDisposed) {\n      return this.createResponseError(\n        message.callRendererFunction?.functionCallId ?? 'unknown',\n        RpcErrorCode.DISPOSED,\n        'RpcHandler has been disposed.',\n        version,\n      );\n    }\n    if (!message.callRendererFunction?.callFunction) {\n      return this.createResponseError(\n        message.callRendererFunction?.functionCallId ?? 'unknown',\n        RpcErrorCode.INVALID_FUNCTION_CALL,\n        'Malformed message: missing callRendererFunction or callFunction.',\n        version,\n      );\n    }\n    return null;\n  }\n\n  /**\n   * Resolves the catalog and function implementation for the requested call.\n   *\n   * @param catalogId Optional catalog identifier specified in the call.\n   * @param call Function name to resolve.\n   * @param context Optional data context providing a default surface catalog.\n   * @param expectedVersion Optional protocol version to check compatibility against.\n   * @returns The resolved function implementation and catalog, or an error descriptor.\n   */\n  private resolveFunctionImplementation(\n    catalogId: string | undefined,\n    call: string,\n    context?: DataContext,\n    expectedVersion?: string,\n  ): {funcImpl: FunctionImplementation; catalog: Catalog<any>} | {error: string} {\n    let catalog: Catalog<any> | undefined;\n    if (catalogId) {\n      catalog = this.catalogs.find(c => c.id === catalogId);\n      if (!catalog) {\n        return {error: `Catalog not found: ${catalogId}`};\n      }\n    } else if (context?.surface?.defaultCatalog) {\n      catalog = context.surface.defaultCatalog;\n    }\n\n    if (!catalog) {\n      return {error: 'No catalog available for function resolution.'};\n    }\n\n    if (catalog.protocolVersion && expectedVersion) {\n      if (!isCatalogVersionCompatible(catalog.protocolVersion, expectedVersion)) {\n        return {\n          error: `Catalog '${catalog.id}' specification version (${catalog.protocolVersion}) does not match message protocol version (${expectedVersion}).`,\n        };\n      }\n    }\n\n    const funcImpl = catalog.functions?.get(call);\n    if (!funcImpl) {\n      return {error: `Function not found: ${call}`};\n    }\n    return {funcImpl, catalog};\n  }\n\n  /**\n   * Verifies caller boundary permissions and user activation requirements for a function.\n   *\n   * @param funcImpl Function implementation to inspect.\n   * @param call Function name being invoked.\n   * @param isUserActivated Whether execution occurs within an active user gesture context.\n   * @returns An error message if permissions are not satisfied; otherwise `null`.\n   */\n  private checkExecutionPermissions(\n    funcImpl: FunctionImplementation,\n    call: string,\n    isUserActivated: boolean,\n  ): string | null {\n    const boundary = funcImpl.allowedCallers ?? 'rendererOnly';\n    const isAllowedCaller = boundary === 'rendererOrAgent' || boundary === 'agentOnly';\n    if (!isAllowedCaller) {\n      return `Function '${call}' cannot be called by agent (allowedCallers is ${boundary}).`;\n    }\n    if (funcImpl.requiresUserActivation && !isUserActivated) {\n      return `Function '${call}' requires user activation context to execute.`;\n    }\n    return null;\n  }\n\n  /**\n   * Validates and parses function arguments against the catalog function schema.\n   *\n   * @param catalog Catalog declaring the function.\n   * @param _funcImpl Function implementation.\n   * @param args Raw argument dictionary.\n   * @param call Function name being invoked.\n   * @returns Parsed arguments on success, or an error descriptor on validation failure.\n   */\n  private parseArguments(\n    catalog: Catalog<any>,\n    _funcImpl: FunctionImplementation,\n    args: Record<string, unknown> | undefined,\n    call: string,\n  ): {args: Record<string, unknown>} | {error: string} {\n    try {\n      const parsed = new PayloadValidator(catalog, {allowUnknownElements: false}).validateFunction(\n        call,\n        args,\n      );\n      return {args: parsed};\n    } catch (err: unknown) {\n      const errMsg = this.extractErrorMessage(err);\n      return {error: `Invalid function arguments for '${call}': ${errMsg}`};\n    }\n  }\n\n  /**\n   * Executes a catalog function implementation, catching unhandled exceptions and formatting the response.\n   *\n   * Unwraps reactive signals and maps any thrown errors to an `EXECUTION_ERROR` response.\n   *\n   * @param funcImpl Function implementation to execute.\n   * @param args Validated function arguments.\n   * @param context Data context for function evaluation.\n   * @param functionCallId Identifier of the function call.\n   * @param version Protocol version for the response message.\n   * @returns A promise resolving to the renderer function response message.\n   */\n  private async executeFunctionSafely(\n    funcImpl: FunctionImplementation,\n    args: Record<string, unknown>,\n    context: DataContext,\n    functionCallId: string,\n    version: string,\n  ): Promise<RendererFunctionResponseMessage> {\n    const respVersion = (version || 'v1.0') as RendererFunctionResponseMessage['version'];\n    try {\n      const rawResult = await Promise.resolve(funcImpl.execute(args, context));\n      const unwrapped = isSignal(rawResult) ? getValue(rawResult) : rawResult;\n      const value = unwrapped !== undefined ? unwrapped : null;\n      return {\n        version: respVersion,\n        rendererFunctionResponse: {\n          functionCallId,\n          value,\n        },\n      };\n    } catch (err: unknown) {\n      const errMsg = this.extractErrorMessage(err);\n      return {\n        version: respVersion,\n        rendererFunctionResponse: {\n          functionCallId,\n          error: {\n            code: RpcErrorCode.EXECUTION_ERROR,\n            message: errMsg || 'An error occurred during function execution.',\n          },\n        },\n      };\n    }\n  }\n\n  /**\n   * Generates a unique function call identifier.\n   *\n   * @returns A unique call identifier string.\n   */\n  private generateFunctionCallId(): string {\n    if (typeof globalThis.crypto?.randomUUID === 'function') {\n      return globalThis.crypto.randomUUID();\n    }\n    const randSuffix = Math.random().toString(36).substring(2, 15).padEnd(13, '0');\n    return `call-${Date.now()}-${randSuffix}`;\n  }\n\n  /**\n   * Dispatches an outbound agent function call and registers a pending promise with timeout handling.\n   *\n   * @template T Expected return value type.\n   * @param surfaceId Identifier of the surface initiating the call.\n   * @param callInfo Normalized agent call parameters.\n   * @returns A promise resolving to the agent function return value.\n   */\n  private dispatchAgentCall<T = unknown>(\n    surfaceId: string,\n    callInfo: NormalizedAgentCall,\n  ): Promise<T> {\n    const {functionCallId, call, effectiveTimeoutMs, version} = callInfo;\n\n    return new Promise<T>((resolve, reject) => {\n      let timer: ReturnType<typeof setTimeout> | undefined;\n      const cleanup = () => {\n        if (timer) {\n          clearTimeout(timer);\n          timer = undefined;\n        }\n        this.pendingAgentCalls.delete(functionCallId);\n      };\n\n      timer = this.createTimeoutTimer(\n        functionCallId,\n        call.call,\n        effectiveTimeoutMs,\n        cleanup,\n        reject,\n      );\n\n      this.pendingAgentCalls.set(functionCallId, {\n        resolve: val => {\n          cleanup();\n          resolve(val as T);\n        },\n        reject: err => {\n          cleanup();\n          reject(err);\n        },\n      });\n\n      this.sendOutboundMessage(surfaceId, functionCallId, call, version, cleanup, reject);\n    });\n  }\n\n  /**\n   * Creates a timeout timer for a pending agent function call.\n   *\n   * @param functionCallId Identifier of the pending function call.\n   * @param callName Name of the function being called.\n   * @param timeoutMs Duration in milliseconds before timeout expiry.\n   * @param cleanup Teardown callback to invoke when the timer fires.\n   * @param reject Rejection callback to reject the pending promise with a `TIMEOUT` error.\n   * @returns The timer handle, or `undefined` if timeout is disabled.\n   */\n  private createTimeoutTimer(\n    functionCallId: string,\n    callName: string,\n    timeoutMs: number,\n    cleanup: () => void,\n    reject: (err: Error) => void,\n  ): ReturnType<typeof setTimeout> | undefined {\n    if (timeoutMs <= 0) return undefined;\n    return setTimeout(() => {\n      if (this.pendingAgentCalls.delete(functionCallId)) {\n        cleanup();\n        reject(\n          new A2uiRpcError(\n            `Agent function call '${callName}' timed out after ${timeoutMs}ms.`,\n            RpcErrorCode.TIMEOUT,\n            functionCallId,\n          ),\n        );\n      }\n    }, timeoutMs);\n  }\n\n  /**\n   * Transmits an outbound callAgentFunction message to the registered outbound listener.\n   *\n   * @param surfaceId Identifier of the surface initiating the call.\n   * @param functionCallId Identifier of the function call.\n   * @param call Function call specification.\n   * @param version Optional protocol version string.\n   * @param cleanup Teardown callback invoked on failure.\n   * @param reject Rejection callback invoked if transmission throws or rejects.\n   */\n  private sendOutboundMessage(\n    surfaceId: string,\n    functionCallId: string,\n    call: FunctionCall,\n    version: string | undefined,\n    cleanup: () => void,\n    reject: (reason?: any) => void,\n  ): void {\n    const outboundMsg: CallAgentFunctionMessage = {\n      version: (version || 'v1.0') as CallAgentFunctionMessage['version'],\n      callAgentFunction: {\n        surfaceId,\n        functionCallId,\n        callFunction: call,\n      },\n    };\n\n    try {\n      const result = this.outboundListener!(outboundMsg);\n      if (result && typeof (result as any).catch === 'function') {\n        (result as Promise<void>).catch(err => {\n          cleanup();\n          reject(err);\n        });\n      }\n    } catch (err) {\n      cleanup();\n      reject(err);\n    }\n  }\n\n  /**\n   * Extracts a human-readable message string from an unknown error value.\n   *\n   * @param err Unknown error caught in a try/catch block.\n   * @returns Formatted error message string.\n   */\n  private extractErrorMessage(err: unknown): string {\n    return err instanceof Error ? err.message : String(err);\n  }\n\n  /**\n   * Constructs a renderer function error response message.\n   *\n   * @param functionCallId Identifier of the function call that failed.\n   * @param code RPC error code or string category.\n   * @param message Human-readable error description.\n   * @param version Protocol version string.\n   * @returns Formatted renderer function response message containing the error.\n   */\n  private createResponseError(\n    functionCallId: string,\n    code: RpcErrorCode | string,\n    message: string,\n    version: string,\n  ): RendererFunctionResponseMessage {\n    return {\n      version: (version || 'v1.0') as RendererFunctionResponseMessage['version'],\n      rendererFunctionResponse: {\n        functionCallId,\n        error: {code, message},\n      },\n    };\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {SurfaceModel, ActionListener} from '../state/surface-model.js';\nimport {Catalog, ComponentApi} from '../catalog/types.js';\nimport {generateCatalogSchema} from '../catalog/schema_generator.js';\nimport {SurfaceGroupModel} from '../state/surface-group-model.js';\nimport {ComponentModel} from '../state/component-model.js';\nimport {SurfaceComponentsModel} from '../state/surface-components-model.js';\nimport {DataModel} from '../state/data-model.js';\nimport {Subscription} from '../common/events.js';\n\nimport {A2uiStateError, A2uiValidationError} from '../errors.js';\nimport {defaultVersionAdapterFactory} from './adapters/factory.js';\nimport {compareSemVer, toCanonicalVersion} from '../common/semver.js';\nimport {\n  InternalOperation,\n  InternalCreateSurfaceOp,\n  InternalUpdateComponentsOp,\n  InternalUpdateDataModelOp,\n  InternalDeleteSurfaceOp,\n  isInternalOperation,\n} from './operations.js';\n\nimport {\n  isCatalogVersionCompatible,\n  ProtocolVersion,\n  VersionAdapterResolver,\n} from './adapters/base.js';\nimport {RendererCapabilities} from '../v1_0/schema/index.js';\nimport type {ServerToClientMessage as V08ServerToClientMessage} from '../v0_8/types/types.js';\nimport type {\n  A2uiMessage as V09A2uiMessage,\n  A2uiMessageListWrapper as V09A2uiMessageListWrapper,\n} from '../v0_9/schema/server-to-client.js';\nimport type {\n  AgentToRendererMessage as V10AgentToRendererMessage,\n  CallRendererFunctionMessage,\n} from '../v1_0/schema/agent-to-renderer.js';\nimport type {RendererFunctionResponseMessage} from '../v1_0/schema/renderer-to-agent.js';\nimport type {FunctionCall} from '../v1_0/schema/common-types.js';\nimport {\n  RpcHandler,\n  CallOptions,\n  OutboundMessageListener,\n  A2uiRpcError,\n  RpcErrorCode,\n} from '../rpc/index.js';\nimport {DataContext} from '../resolution/data-context.js';\nimport {\n  getComponentReferences,\n  RELAXED_VALIDATION,\n  STRICT_VALIDATION,\n  validateRecursionAndPaths,\n  ValidationConfig,\n} from '../validation/integrity-checker.js';\n\n/**\n * Union of individual message types supported by the MessageProcessor across protocol versions.\n */\nexport type ProcessableMessage =\n  | V08ServerToClientMessage\n  | V09A2uiMessage\n  | V10AgentToRendererMessage\n  | InternalOperation;\n\n/**\n * Valid payload format for `MessageProcessor.processMessages`, which can be a single message,\n * an array of messages, a message list wrapper, or an internal operation.\n */\nexport type ProcessableMessagePayload =\n  | ProcessableMessage\n  | readonly ProcessableMessage[]\n  | V09A2uiMessageListWrapper\n  | {readonly messages: readonly ProcessableMessage[]};\n\nexport type {\n  RendererCapabilities,\n  RendererCapabilities as ClientCapabilities,\n  ValidationConfig,\n  OutboundMessageListener,\n  CallOptions,\n};\nexport {STRICT_VALIDATION, RELAXED_VALIDATION, A2uiRpcError, RpcErrorCode};\n\n/**\n * Contextual execution options for message processing.\n */\nexport interface ExecutionContext {\n  /** Whether execution occurs in an active user gesture context. */\n  isUserActivated?: boolean;\n}\n\n/**\n * Options for generating renderer capabilities.\n */\nexport interface CapabilitiesOptions {\n  /** Protocol versions to generate capabilities for. Required; must contain at least one version. */\n  versions: ProtocolVersion[];\n  /** Whether full definitions of all catalogs will be included inline. */\n  includeInlineCatalogs?: boolean;\n  /** Base schema `$ref` to wrap component definitions in inline catalogs. Defaults to 'common_types.json#/$defs/ComponentCommon'. */\n  componentEnvelopeRef?: string;\n}\n\n/**\n * Options for configuring a MessageProcessor instance.\n */\nexport interface MessageProcessorOptions {\n  /** Default protocol version to use for capability generation and data model reporting. Defaults to 'v0.9'. */\n  version?: ProtocolVersion;\n  /** Custom version adapter resolver or registry. Defaults to VersionAdapterFactory. */\n  adapterRegistry?: VersionAdapterResolver;\n  /** Validation configuration rules. */\n  validationConfig?: ValidationConfig;\n  /** Listener receiving outbound renderer messages intended for the agent. Required for callAgentFunction. */\n  outboundListener?: OutboundMessageListener;\n  /** Default timeout in milliseconds for callAgentFunction requests (default: 30000ms). */\n  defaultTimeoutMs?: number;\n}\n\nimport {formatZodIssue} from './format-zod-issue.js';\nimport {PayloadValidator} from '../validation/payload-validator.js';\nexport {formatZodIssue};\n\n/**\n * Central processor for A2UI protocol messages and surface state management.\n *\n * @template T Concrete type of the ComponentApi.\n */\nexport class MessageProcessor<T extends ComponentApi = ComponentApi> {\n  readonly model: SurfaceGroupModel<T>;\n  readonly rpc: RpcHandler;\n  private readonly adapterRegistry: VersionAdapterResolver;\n  private readonly validationConfig?: ValidationConfig;\n\n  /**\n   * Initializes a new `MessageProcessor` instance.\n   *\n   * @param catalogs List of available component catalogs.\n   * @param actionHandler Global handler for actions dispatched from all surfaces.\n   * @param options Configuration options for the processor.\n   */\n  constructor(\n    private catalogs: Catalog<any>[],\n    private actionHandler?: ActionListener,\n    options?: MessageProcessorOptions,\n  ) {\n    this.model = new SurfaceGroupModel<T>();\n    this.adapterRegistry = options?.adapterRegistry ?? defaultVersionAdapterFactory;\n    this.rpc = new RpcHandler({\n      catalogs: this.catalogs,\n      outboundListener: options?.outboundListener,\n      defaultTimeoutMs: options?.defaultTimeoutMs,\n    });\n    if (options?.validationConfig) {\n      this.validationConfig = {\n        allowOrphanComponents: false,\n        allowDanglingReferences: false,\n        allowMissingRoot: false,\n        allowUnknownElements: false,\n        ...options.validationConfig,\n      };\n    } else {\n      this.validationConfig = undefined;\n    }\n    if (this.actionHandler) {\n      this.model.onAction.subscribe(this.actionHandler);\n    }\n  }\n\n  /**\n   * Invokes a remote function on the server agent using an options bag.\n   *\n   * @param surfaceId The ID of the surface requesting execution.\n   * @param call The function call details.\n   * @param options Optional invocation options (custom functionCallId, timeoutMs).\n   * @returns A promise resolving to the agent function return value.\n   */\n  callAgentFunction<TRes = unknown>(\n    surfaceId: string,\n    call: FunctionCall,\n    options?: CallOptions,\n  ): Promise<TRes> {\n    return this.rpc.callAgentFunction<TRes>(surfaceId, call, options);\n  }\n\n  /**\n   * Disposes the MessageProcessor, tearing down active surfaces and rejecting pending RPC calls.\n   */\n  dispose(): void {\n    this.rpc.dispose();\n  }\n\n  /**\n   * Generates the renderer capabilities object for the current processor.\n   *\n   * @param options Configuration for capability generation.\n   * @returns The capabilities object.\n   */\n  getRendererCapabilities(options: CapabilitiesOptions): RendererCapabilities {\n    if (!options?.versions || options.versions.length === 0) {\n      throw new A2uiValidationError(\n        'At least one protocol version must be provided in CapabilitiesOptions to generate renderer capabilities.',\n      );\n    }\n    const versions = options.versions;\n    const result: Record<string, any> = {};\n\n    for (const ver of versions) {\n      const versionCaps: Record<string, any> = {\n        supportedCatalogIds: this.catalogs.map(c => c.id),\n      };\n\n      const inlineCatalogs = options?.includeInlineCatalogs\n        ? this.catalogs.map(c => {\n            if (compareSemVer(ver, '1.0') >= 0) {\n              return generateCatalogSchema(c, {\n                componentEnvelopeRef: options?.componentEnvelopeRef,\n                protocolVersion: ver,\n              });\n            }\n            return this.generateLegacyInlineCatalog(\n              c,\n              options?.componentEnvelopeRef ?? 'common_types.json#/$defs/ComponentCommon',\n            );\n          })\n        : undefined;\n\n      if (inlineCatalogs) {\n        versionCaps.inlineCatalogs = inlineCatalogs;\n      }\n\n      result[ver] = versionCaps;\n    }\n\n    return result as RendererCapabilities;\n  }\n\n  /**\n   * Generates the client/renderer capabilities object for the current processor.\n   *\n   * @deprecated Use `getRendererCapabilities` instead.\n   * @param options Configuration for capability generation.\n   * @returns The capabilities object.\n   */\n  getClientCapabilities(options: CapabilitiesOptions): RendererCapabilities {\n    return this.getRendererCapabilities(options);\n  }\n\n  /**\n   * Generates a backwards-compatible inline catalog representation for v0.8/v0.9/v0.9.1.\n   *\n   * @param catalog The catalog instance to serialize.\n   * @param componentEnvelopeRef Reference URI for the component base envelope.\n   * @returns Legacy inline catalog object with array-based functions and flat theme properties.\n   */\n  private generateLegacyInlineCatalog(\n    catalog: Catalog<T>,\n    componentEnvelopeRef = 'common_types.json#/$defs/ComponentCommon',\n  ): Record<string, unknown> {\n    const rawSchema = generateCatalogSchema(catalog, {componentEnvelopeRef});\n    const components = (rawSchema.components as Record<string, unknown>) || {};\n\n    const rawFunctions = rawSchema.functions as Record<string, Record<string, unknown>> | undefined;\n    const functions: Array<Record<string, unknown>> = [];\n    for (const fn of catalog.functions.values()) {\n      const fnDef = rawFunctions?.[fn.name] as\n        | {properties?: {args?: Record<string, unknown>}}\n        | undefined;\n      functions.push({\n        name: fn.name,\n        description: fn.description,\n        returnType: fn.returnType,\n        parameters: fnDef?.properties?.args ?? {type: 'object', properties: {}},\n      });\n    }\n\n    const rawDefs = rawSchema.$defs as\n      | Record<string, {properties?: Record<string, unknown>}>\n      | undefined;\n    const theme = rawDefs?.theme?.properties;\n\n    return {\n      catalogId: catalog.id,\n      components,\n      ...(functions.length > 0 ? {functions} : {}),\n      ...(theme ? {theme} : {}),\n    };\n  }\n\n  /**\n   * Serializes active surface data models configured for client-to-agent reporting.\n   *\n   * If version is provided, returns data models only for surfaces compatible with that version.\n   * If version is omitted:\n   *   - Automatically derives the protocol version from the active surface(s) with sendDataModel.\n   *   - If active surfaces have conflicting protocol versions, throws A2uiValidationError.\n   *\n   * @param version Optional target protocol version to filter surfaces.\n   * @returns Serialized data model payload, or undefined if no matching surfaces exist.\n   */\n  getRendererDataModel(version?: ProtocolVersion): Record<string, unknown> | undefined {\n    const enabledSurfaces = Array.from(this.model.surfacesMap.values()).filter(\n      s => s.sendDataModel,\n    );\n    if (enabledSurfaces.length === 0) {\n      return undefined;\n    }\n\n    if (version !== undefined) {\n      const surfaces: Record<string, unknown> = {};\n      for (const surface of enabledSurfaces) {\n        const catVer = surface.defaultCatalog?.protocolVersion;\n        if (!catVer || isCatalogVersionCompatible(catVer, version)) {\n          surfaces[surface.id] = surface.dataModel.get('/');\n        }\n      }\n      if (Object.keys(surfaces).length === 0) {\n        return undefined;\n      }\n      return {\n        version,\n        surfaces,\n      };\n    }\n\n    const versionsSet = new Set<ProtocolVersion>();\n    for (const surface of enabledSurfaces) {\n      if (surface.defaultCatalog?.protocolVersion) {\n        const canonical = toCanonicalVersion(surface.defaultCatalog.protocolVersion);\n        const canonicalVer = (\n          canonical ? `v${canonical}` : surface.defaultCatalog.protocolVersion\n        ) as ProtocolVersion;\n        versionsSet.add(canonicalVer);\n      }\n    }\n\n    if (versionsSet.size > 1) {\n      throw new A2uiValidationError(\n        `Multiple protocol versions detected among active surfaces: ${Array.from(versionsSet).sort().join(', ')}. ` +\n          'Specify a target protocol version in getRendererDataModel(version).',\n      );\n    }\n\n    const verStr =\n      versionsSet.size === 1 ? (versionsSet.values().next().value as ProtocolVersion) : 'v1.0';\n    const surfaces: Record<string, unknown> = {};\n    for (const surface of enabledSurfaces) {\n      surfaces[surface.id] = surface.dataModel.get('/');\n    }\n    return {\n      version: verStr,\n      surfaces,\n    };\n  }\n\n  /**\n   * Aggregates active client/renderer data models.\n   *\n   * @deprecated Use `getRendererDataModel` instead.\n   * @param version Optional target protocol version to format data models for.\n   * @returns Serialized data model payload, or undefined if no matching surfaces exist.\n   */\n  getClientDataModel(version?: ProtocolVersion): Record<string, unknown> | undefined {\n    return this.getRendererDataModel(version);\n  }\n\n  /**\n   * Resolves a relative path against a context path.\n   *\n   * @deprecated Use `DataModel.resolvePath` instead.\n   * @param path The path to resolve.\n   * @param contextPath The base path (optional).\n   * @returns The resolved absolute path.\n   */\n  resolvePath(path: string, contextPath?: string): string {\n    return DataModel.resolvePath(path, contextPath);\n  }\n\n  /**\n   * Gets a read-only map of active surfaces managed by this processor.\n   *\n   * @returns Map of surface models keyed by surface identifier.\n   */\n  getSurfaces(): ReadonlyMap<string, SurfaceModel<T>> {\n    return this.model.surfacesMap;\n  }\n\n  /**\n   * Retrieves an active surface by its ID.\n   *\n   * @param id The surface ID.\n   * @returns The matching surface model, or undefined if not found.\n   */\n  getSurface(id: string): SurfaceModel<T> | undefined {\n    return this.model.getSurface(id);\n  }\n\n  /**\n   * Subscribes to surface creation events.\n   *\n   * @param handler Callback invoked when a surface is created.\n   * @returns A subscription object to unsubscribe.\n   */\n  onSurfaceCreated(handler: (surface: SurfaceModel<T>) => void): Subscription {\n    return this.model.onSurfaceCreated.subscribe(handler);\n  }\n\n  /**\n   * Subscribes to surface deletion events.\n   *\n   * @param handler Callback invoked when a surface is deleted.\n   * @returns A subscription object to unsubscribe.\n   */\n  onSurfaceDeleted(handler: (id: string) => void): Subscription {\n    return this.model.onSurfaceDeleted.subscribe(handler);\n  }\n\n  /**\n   * Processes a list of messages, a message wrapper, or raw operations synchronously.\n   *\n   * @param messages The messages or operations to process.\n   * @param context Contextual execution options.\n   */\n  processMessages(messages: ProcessableMessagePayload, context?: ExecutionContext): void {\n    const operations = this.prepareOperations(messages);\n    for (const op of operations) {\n      this.processOperation(op, context);\n    }\n  }\n\n  /**\n   * Asynchronously processes messages, executing RPC calls and returning all produced responses.\n   *\n   * @param messages The messages or operations to process.\n   * @param context Contextual execution options.\n   * @returns Array of rendererFunctionResponse messages produced during execution.\n   */\n  async processMessagesAsync(\n    messages: ProcessableMessagePayload,\n    context?: ExecutionContext,\n  ): Promise<RendererFunctionResponseMessage[]> {\n    const operations = this.prepareOperations(messages);\n    const responses: RendererFunctionResponseMessage[] = [];\n    for (const op of operations) {\n      const resp = await this.processOperationAsync(op, context);\n      if (resp) {\n        responses.push(resp);\n      }\n    }\n    return responses;\n  }\n\n  private prepareOperations(messages: ProcessableMessagePayload): InternalOperation[] {\n    if (!messages || (Array.isArray(messages) && messages.length === 0)) return [];\n\n    if (this.validationConfig) {\n      validateRecursionAndPaths(messages);\n    }\n\n    if (this.validationConfig?.targetVersion) {\n      this.validateTargetVersion(messages);\n    }\n\n    if (isInternalOperation(messages)) {\n      return [messages];\n    }\n\n    const adapter = this.adapterRegistry.resolveFromPayload(messages);\n    return adapter.extractOperations(messages);\n  }\n\n  private validateTargetVersion(messages: ProcessableMessagePayload): void {\n    const expected = this.validationConfig?.targetVersion;\n    if (!expected) return;\n\n    const checkMsg = (msg: unknown) => {\n      if (typeof msg === 'object' && msg !== null && 'version' in msg) {\n        const msgVer = (msg as {version?: string}).version;\n        if (msgVer) {\n          const normMsg = toCanonicalVersion(msgVer) ?? msgVer;\n          const normExpected = toCanonicalVersion(expected) ?? expected;\n          if (normMsg !== normExpected) {\n            throw new A2uiValidationError(\n              `Message version '${msgVer}' does not match expected target version '${expected}'`,\n            );\n          }\n        }\n      }\n    };\n\n    if (Array.isArray(messages)) {\n      for (const m of messages) {\n        checkMsg(m);\n      }\n    } else {\n      checkMsg(messages);\n    }\n  }\n\n  private applyStateOperation(op: InternalOperation): void {\n    if (\n      this.validationConfig?.allowedMessages &&\n      !this.validationConfig.allowedMessages.includes(op.type)\n    ) {\n      throw new A2uiValidationError(\n        `Operation '${op.type}' is not permitted by ValidationConfig.allowedMessages`,\n      );\n    }\n\n    switch (op.type) {\n      case 'createSurface':\n        this.processCreateSurfaceOp(op);\n        break;\n      case 'deleteSurface':\n        this.processDeleteSurfaceOp(op);\n        break;\n      case 'updateComponents':\n        this.processUpdateComponentsOp(op);\n        break;\n      case 'updateDataModel':\n        this.processUpdateDataModelOp(op);\n        break;\n      case 'agentFunctionResponse':\n        this.rpc.handleAgentFunctionResponse({\n          version: (op.version ?? 'v1.0') as 'v1.0',\n          agentFunctionResponse: {\n            functionCallId: op.functionCallId,\n            value: op.value,\n            error: op.error,\n          },\n        });\n        break;\n      case 'callRendererFunction':\n        break;\n    }\n  }\n\n  /**\n   * Resolves the DataContext for an inbound RPC callRendererFunction operation.\n   *\n   * @param op Operation containing optional catalog and function call identifiers.\n   * @returns A DataContext attached to an existing matching surface or a fallback surface.\n   */\n  private resolveRpcDataContext(op: {catalogId?: string; functionCallId?: string}): DataContext {\n    const targetCatalog =\n      (op.catalogId ? this.catalogs.find(c => c.id === op.catalogId) : undefined) ??\n      this.catalogs[0];\n    const surface =\n      (op.catalogId\n        ? Array.from(this.model.surfacesMap.values()).find(\n            s => s.defaultCatalog?.id === op.catalogId || s.availableCatalogs?.has(op.catalogId!),\n          )\n        : undefined) ?? this.model.surfacesMap.values().next().value;\n    if (surface) {\n      return new DataContext(surface, '/');\n    }\n    const fallbackSurfaceId = `_rpc_fallback_${op.functionCallId || 'default'}`;\n    const availableCatalogs = new Map<string, Catalog<T>>();\n    for (const cat of this.catalogs) {\n      if (\n        targetCatalog?.protocolVersion &&\n        cat.protocolVersion &&\n        isCatalogVersionCompatible(targetCatalog.protocolVersion, cat.protocolVersion)\n      ) {\n        availableCatalogs.set(cat.id, cat);\n      }\n    }\n    if (targetCatalog) {\n      availableCatalogs.set(targetCatalog.id, targetCatalog);\n    }\n    return new DataContext(\n      new SurfaceModel(fallbackSurfaceId, targetCatalog, availableCatalogs),\n      '/',\n    );\n  }\n\n  /**\n   * Processes a single canonical internal operation.\n   *\n   * @param op The internal operation to execute.\n   * @param context Contextual execution options.\n   */\n  processOperation(op: InternalOperation, context?: ExecutionContext): void {\n    if (op.type === 'callRendererFunction') {\n      const dataContext = this.resolveRpcDataContext(op);\n      const isUserActivated = context?.isUserActivated ?? op.isUserActivated ?? false;\n      const callMsg: CallRendererFunctionMessage = {\n        version: (op.version ?? 'v1.0') as 'v1.0',\n        callRendererFunction: {\n          functionCallId: op.functionCallId,\n          callFunction: {\n            call: op.call,\n            catalogId: op.catalogId,\n            args: op.args,\n          },\n        },\n      };\n      void this.rpc.handleCallRendererFunction(callMsg, dataContext, isUserActivated).catch(err => {\n        console.error(`Unhandled error in callRendererFunction (${op.call}):`, err);\n      });\n      return;\n    }\n\n    this.applyStateOperation(op);\n  }\n\n  private async processOperationAsync(\n    op: InternalOperation,\n    context?: ExecutionContext,\n  ): Promise<RendererFunctionResponseMessage | null> {\n    if (op.type === 'callRendererFunction') {\n      const dataContext = this.resolveRpcDataContext(op);\n      const isUserActivated = context?.isUserActivated ?? op.isUserActivated ?? false;\n      const callMsg: CallRendererFunctionMessage = {\n        version: (op.version ?? 'v1.0') as 'v1.0',\n        callRendererFunction: {\n          functionCallId: op.functionCallId,\n          callFunction: {\n            call: op.call,\n            catalogId: op.catalogId,\n            args: op.args,\n          },\n        },\n      };\n      return await this.rpc.handleCallRendererFunction(callMsg, dataContext, isUserActivated);\n    }\n\n    this.applyStateOperation(op);\n    return null;\n  }\n\n  private processCreateSurfaceOp(op: InternalCreateSurfaceOp): void {\n    const {surfaceId, catalogId, theme, sendDataModel, components, dataModel} = op;\n\n    const catalog =\n      catalogId !== undefined ? this.catalogs.find(c => c.id === catalogId) : this.catalogs[0];\n    if (!catalog) {\n      throw new A2uiStateError(`Catalog not found: ${catalogId}`);\n    }\n\n    const msgVersion = op.version;\n    if (\n      catalog.protocolVersion &&\n      msgVersion &&\n      !isCatalogVersionCompatible(catalog.protocolVersion, msgVersion)\n    ) {\n      throw new A2uiValidationError(\n        `Surface '${surfaceId}' catalog '${catalogId ?? catalog.id}' specification version (${catalog.protocolVersion}) does not match message protocol version (${msgVersion}).`,\n      );\n    }\n\n    if (this.model.getSurface(surfaceId)) {\n      throw new A2uiStateError(`Surface ${surfaceId} already exists.`);\n    }\n\n    let validatedTheme = theme;\n    if (theme && catalog.themeSchema) {\n      try {\n        validatedTheme = new PayloadValidator(catalog, this.validationConfig).validateTheme(theme);\n      } catch (err: unknown) {\n        if (err instanceof A2uiValidationError) {\n          throw new A2uiValidationError(\n            err.message.replace(\n              /^Validation failed for theme:/,\n              `Validation failed for theme on surface '${surfaceId}':`,\n            ),\n            err.details,\n          );\n        }\n        throw err;\n      }\n    }\n\n    // A payload may address any registered catalog by `catalogId`, but only\n    // those speaking a compatible protocol version can be resolved against this\n    // surface, so filter once here rather than at every lookup.\n    const availableCatalogs = new Map<string, Catalog<T>>(\n      this.catalogs\n        .filter(c => isCatalogVersionCompatible(c.protocolVersion, catalog.protocolVersion))\n        .map(c => [c.id, c] as const),\n    );\n\n    const surface = new SurfaceModel<T>(\n      surfaceId,\n      catalog,\n      availableCatalogs,\n      validatedTheme,\n      sendDataModel ?? false,\n      undefined,\n      op.rootId ?? 'root',\n    );\n    this.model.addSurface(surface);\n\n    if (dataModel) {\n      // Assign the whole object at the root rather than building a pointer per\n      // key. Key names are literal property names, so a key containing '/' or\n      // '~' would otherwise be misread as a nested path.\n      surface.dataModel.set('/', dataModel);\n    }\n\n    if (components && components.length > 0) {\n      this.processUpdateComponentsOp({\n        type: 'updateComponents',\n        surfaceId,\n        components,\n      });\n    }\n  }\n\n  private processDeleteSurfaceOp(op: InternalDeleteSurfaceOp): void {\n    if (!op.surfaceId) return;\n    this.model.deleteSurface(op.surfaceId);\n  }\n\n  private validateComponentProperties(\n    comp: Record<string, unknown>,\n    surface: SurfaceModel<T>,\n  ): void {\n    const {id, component} = comp;\n    const rawCatalogId = (comp as any).catalogId ?? (comp as any).catalogID;\n\n    if (typeof id !== 'string' || !id) {\n      throw new A2uiValidationError(\n        `Component '${component}' is missing an 'id'; entries require a valid string 'id'.`,\n      );\n    }\n\n    let targetCatalog = surface.defaultCatalog;\n    if (typeof rawCatalogId === 'string' && rawCatalogId) {\n      // `availableCatalogs` is already restricted to catalogs compatible with\n      // the surface, so an entry here needs no further version check.\n      const found = surface.availableCatalogs.get(rawCatalogId);\n      if (!found) {\n        const known = this.catalogs.find(c => c.id === rawCatalogId);\n        if (!known) {\n          throw new A2uiValidationError(\n            `Unknown catalog ID '${rawCatalogId}' for component '${id}'. Available catalogs: ${this.catalogs.map(c => c.id).join(', ')}`,\n          );\n        }\n        throw new A2uiValidationError(\n          `Component '${id}' catalog '${rawCatalogId}' specification version (${known.protocolVersion}) does not match surface default catalog version (${surface.defaultCatalog.protocolVersion}).`,\n        );\n      }\n      targetCatalog = found;\n    }\n\n    // A partial update names no component type; the existing model supplies it.\n    const existing = surface.componentsModel.get(id);\n    new PayloadValidator(targetCatalog, this.validationConfig).validateComponent(\n      comp,\n      existing?.type,\n    );\n  }\n\n  private applyComponentUpdate(comp: Record<string, unknown>, surface: SurfaceModel<T>): void {\n    const {id, component, ...properties} = comp;\n    if (typeof id !== 'string') return;\n    const rawCatalogId = (comp as any).catalogId ?? (comp as any).catalogID;\n    const existing = surface.componentsModel.get(id);\n\n    let targetCatalog = surface.defaultCatalog;\n    if (typeof rawCatalogId === 'string' && rawCatalogId) {\n      const found = surface.availableCatalogs.get(rawCatalogId);\n      if (found) {\n        targetCatalog = found;\n      }\n    }\n\n    if (existing) {\n      const componentType = typeof component === 'string' ? component : existing.type;\n      if (\n        componentType !== existing.type ||\n        (rawCatalogId && existing.catalog?.id !== targetCatalog.id)\n      ) {\n        // Recreate component if type or catalog changes\n        surface.componentsModel.removeComponent(id);\n        const newComponent = new ComponentModel(id, componentType, properties, targetCatalog);\n        surface.componentsModel.addComponent(newComponent);\n      } else {\n        existing.properties = properties;\n      }\n    } else {\n      if (typeof component !== 'string' || !component) {\n        throw new A2uiValidationError(`Cannot create component ${id} without a type.`);\n      }\n      const newComponent = new ComponentModel(id, component, properties, targetCatalog);\n      surface.componentsModel.addComponent(newComponent);\n    }\n  }\n\n  private processUpdateComponentsOp(op: InternalUpdateComponentsOp): void {\n    if (!op.surfaceId) return;\n\n    const surface = this.model.getSurface(op.surfaceId);\n    if (!surface) {\n      throw new A2uiStateError(`Surface not found for message: ${op.surfaceId}`);\n    }\n\n    // 1. Validation pass: validate all components before mutating state\n    for (const comp of op.components) {\n      this.validateComponentProperties(comp, surface);\n    }\n\n    this.validateCompositionConstraints(surface, op.components);\n    this.validateCandidateTopology(surface, op.components);\n\n    // 2. Mutation pass: apply state updates\n    for (const comp of op.components) {\n      this.applyComponentUpdate(comp, surface);\n    }\n  }\n\n  private processUpdateDataModelOp(op: InternalUpdateDataModelOp): void {\n    if (!op.surfaceId) return;\n\n    const surface = this.model.getSurface(op.surfaceId);\n    if (!surface) {\n      throw new A2uiStateError(`Surface not found for message: ${op.surfaceId}`);\n    }\n\n    const path = op.path || '/';\n    const value = op.value;\n    surface.dataModel.set(path, value);\n  }\n\n  private validateParentConstraints(\n    id: string,\n    componentType: string,\n    allowedParents: string[],\n    parents?: Array<{parentId: string; parentType: string}>,\n  ): void {\n    if (!parents || parents.length === 0) {\n      const isRoot = id === 'root';\n      const enforceTopLevel =\n        isRoot || (this.validationConfig && this.validationConfig.allowOrphanComponents === false);\n      if (enforceTopLevel && !allowedParents.includes('Surface')) {\n        throw new A2uiValidationError(\n          `Component '${id}' (${componentType}) cannot be placed under parent 'Surface' (Surface). Allowed parents: ${JSON.stringify(allowedParents)}.`,\n          undefined,\n          'UNALLOWED_PARENT',\n        );\n      }\n      return;\n    }\n\n    for (const parentInfo of parents) {\n      if (!allowedParents.includes(parentInfo.parentType)) {\n        throw new A2uiValidationError(\n          `Component '${id}' (${componentType}) cannot be placed under parent '${parentInfo.parentId}' (${parentInfo.parentType || 'unknown'}). Allowed parents: ${JSON.stringify(allowedParents)}.`,\n          undefined,\n          'UNALLOWED_PARENT',\n        );\n      }\n    }\n  }\n\n  private validateChildConstraints(\n    id: string,\n    componentType: string,\n    allowedChildren: string[],\n    children: string[],\n    typeMap: Map<string, string>,\n  ): void {\n    for (const childId of children) {\n      const childType = typeMap.get(childId);\n      if (childType && !allowedChildren.includes(childType)) {\n        throw new A2uiValidationError(\n          `Container '${id}' (${componentType}) cannot contain child '${childId}' (${childType}). Allowed children: ${JSON.stringify(allowedChildren)}.`,\n          undefined,\n          'UNALLOWED_CHILD',\n        );\n      }\n    }\n  }\n\n  private buildCompositionTopology(\n    surface: SurfaceModel<T>,\n    newComponents: Array<Record<string, unknown>>,\n  ) {\n    const typeMap = new Map<string, string>();\n    const compCatalogMap = new Map<string, Catalog<T>>();\n    const childMap = new Map<string, string[]>();\n\n    for (const [id, model] of surface.componentsModel.entries) {\n      typeMap.set(id, model.type);\n      if (model.catalog) {\n        compCatalogMap.set(id, model.catalog as Catalog<T>);\n      }\n      const children = surface.componentsModel.getChildIds(id);\n      if (children.length > 0) {\n        childMap.set(id, children);\n      }\n    }\n\n    for (const comp of newComponents) {\n      const {id, component, ...props} = comp;\n      if (typeof id !== 'string') continue;\n\n      let compCatalog = surface.defaultCatalog;\n      const rawCatalogId = (comp as any).catalogId ?? (comp as any).catalogID;\n      if (typeof rawCatalogId === 'string' && rawCatalogId) {\n        const found = surface.availableCatalogs.get(rawCatalogId);\n        if (found) {\n          compCatalog = found;\n          compCatalogMap.set(id, found);\n        }\n      }\n      const existing = surface.componentsModel.get(id);\n      const compType = (typeof component === 'string' ? component : existing?.type) ?? '';\n      if (compType) {\n        typeMap.set(id, compType);\n      }\n      const compDef = {id, component: compType, ...props};\n      const children = Array.from(getComponentReferences(compDef, compCatalog as Catalog<any>)).map(\n        ([childId]) => childId,\n      );\n      if (children.length > 0) {\n        childMap.set(id, children);\n      } else {\n        childMap.delete(id);\n      }\n    }\n\n    const parentMap = new Map<string, Array<{parentId: string; parentType: string}>>();\n    for (const [parentId, children] of childMap.entries()) {\n      const parentType = typeMap.get(parentId) || 'Unknown';\n      for (const childId of children) {\n        const parents = parentMap.get(childId) ?? [];\n        parents.push({parentId, parentType});\n        parentMap.set(childId, parents);\n      }\n    }\n\n    return {typeMap, compCatalogMap, childMap, parentMap};\n  }\n\n  private validateCompositionConstraints(\n    surface: SurfaceModel<T>,\n    newComponents: Array<Record<string, unknown>>,\n  ): void {\n    const {typeMap, compCatalogMap, childMap, parentMap} = this.buildCompositionTopology(\n      surface,\n      newComponents,\n    );\n\n    for (const [id, componentType] of typeMap.entries()) {\n      const compCatalog = compCatalogMap.get(id) ?? surface.defaultCatalog;\n      const componentApi = compCatalog.components.get(componentType);\n      if (!componentApi) continue;\n\n      if (componentApi.allowedParents && componentApi.allowedParents.length > 0) {\n        this.validateParentConstraints(\n          id,\n          componentType,\n          componentApi.allowedParents,\n          parentMap.get(id),\n        );\n      }\n\n      if (componentApi.allowedChildren && componentApi.allowedChildren.length > 0) {\n        this.validateChildConstraints(\n          id,\n          componentType,\n          componentApi.allowedChildren,\n          childMap.get(id) || [],\n          typeMap,\n        );\n      }\n    }\n  }\n\n  private validateCandidateTopology(\n    surface: SurfaceModel<T>,\n    newComponents: Array<Record<string, unknown>>,\n  ): void {\n    if (!this.validationConfig) return;\n\n    const candidateModel = new SurfaceComponentsModel(surface.defaultCatalog);\n    for (const [id, comp] of surface.componentsModel.entries) {\n      candidateModel.addComponent(\n        new ComponentModel(id, comp.type, comp.properties, comp.catalog as Catalog<T>),\n      );\n    }\n\n    for (const comp of newComponents) {\n      const {id, component, ...properties} = comp;\n      if (typeof id !== 'string' || !id) continue;\n\n      const rawCatalogId = (comp as any).catalogId ?? (comp as any).catalogID;\n      let targetCatalog = surface.defaultCatalog;\n      if (typeof rawCatalogId === 'string' && rawCatalogId) {\n        const found = surface.availableCatalogs.get(rawCatalogId);\n        if (found) {\n          targetCatalog = found;\n        }\n      }\n\n      const existing = candidateModel.get(id);\n      const componentType = (typeof component === 'string' ? component : existing?.type) || '';\n      if (!componentType) continue;\n\n      if (existing) {\n        if (\n          componentType !== existing.type ||\n          (rawCatalogId && existing.catalog?.id !== targetCatalog.id)\n        ) {\n          candidateModel.removeComponent(id);\n          candidateModel.addComponent(\n            new ComponentModel(id, componentType, properties, targetCatalog),\n          );\n        } else {\n          existing.properties = properties;\n        }\n      } else {\n        candidateModel.addComponent(\n          new ComponentModel(id, componentType, properties, targetCatalog),\n        );\n      }\n    }\n\n    candidateModel.validateTopology({\n      ...this.validationConfig,\n      rootId: this.validationConfig.rootId ?? surface.rootId,\n    });\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DataContext} from './data-context.js';\nimport {ComponentModel} from '../state/component-model.js';\nimport type {SurfaceModel} from '../state/surface-model.js';\nimport type {SurfaceComponentsModel} from '../state/surface-components-model.js';\nimport type {ComponentApi} from '../catalog/types.js';\nimport type {Action} from '../types/common-types.js';\nimport {A2uiStateError} from '../errors.js';\n\n/**\n * Context provided to components during rendering.\n *\n * Provides access to the component's model, the data context, and action dispatching.\n */\nexport class ComponentContext {\n  /** State model for this specific component, providing access to its properties and state. */\n  readonly componentModel: ComponentModel;\n  /**\n   * Data context scoped to this component's position in the visual hierarchy.\n   *\n   * Uses `dataModelBasePath` to resolve relative data paths.\n   */\n  readonly dataContext: DataContext;\n  /** Collection of all component models for the current surface, allowing lookups by ID. */\n  readonly surfaceComponents: SurfaceComponentsModel;\n  /** Theme configuration for the surface this component belongs to. */\n  readonly theme: Record<string, unknown> | undefined;\n\n  /**\n   * Initializes a new `ComponentContext` instance.\n   *\n   * @param surface The surface model the component belongs to.\n   * @param componentId The ID of the component.\n   * @param dataModelBasePath The base path for data model access (default: '/').\n   * @param parentDataContext Optional parent DataContext in the component tree.\n   * @param index Optional explicit collection iteration index.\n   */\n  constructor(\n    surface: SurfaceModel<ComponentApi>,\n    componentId: string,\n    dataModelBasePath: string = '/',\n    parentDataContext?: DataContext,\n    index?: number,\n  ) {\n    const model = surface.componentsModel.get(componentId);\n    if (!model) {\n      throw new A2uiStateError(`Component not found: ${componentId}`);\n    }\n    this.componentModel = model;\n    this.surfaceComponents = surface.componentsModel;\n    this.theme = surface.theme;\n\n    this.dataContext = new DataContext(surface, dataModelBasePath, index, parentDataContext);\n    this._actionDispatcher = action => surface.dispatchAction(action, this.componentModel.id);\n  }\n\n  private _actionDispatcher: (action: Action | Record<string, unknown>) => Promise<void>;\n\n  /**\n   * Dispatches an action from the component.\n   *\n   * @param action The action to dispatch.\n   * @returns A promise that resolves when action dispatching completes.\n   */\n  dispatchAction(action: Action | Record<string, unknown>): Promise<void> {\n    return this._actionDispatcher(action);\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {ComponentContext} from './component-context.js';\nimport {Action, ChildList, DataBinding, childRefKindOf} from '../types/common-types.js';\nimport {extractRefDefName} from '../catalog/reference-map.js';\nimport {MAX_DYNAMIC_VALUE_DEPTH} from './data-context.js';\n\n// --- Schema Scraping ---\n\n/**\n * Represents the intended runtime behavior of a property parsed from its Zod\n * schema.\n *\n * - DYNAMIC: The property can be bound to the DataModel (e.g. DynamicString).\n *   The Binder will automatically subscribe to data changes and emit primitive\n *   values.\n * - ACTION: The property represents a user interaction (e.g. Action). The\n *   Binder will resolve deep payload bindings and output a ready-to-call () =>\n *   void closure.\n * - STRUCTURAL: The property dictates the rendering of child components (e.g.\n *   ChildList). The Binder outputs lists of objects containing { id, basePath }\n *   for structural layout.\n * - CHECKABLE: Special property for handling validation arrays (e.g. checks).\n *   The Binder will reactively evaluate the rules and inject isValid and\n *   validationErrors booleans into the parent object.\n * - STATIC: A primitive value that requires no reactive subscription or\n *   resolution.\n * - OBJECT / ARRAY: Recursive traversal nodes for complex nested schemas.\n */\nexport type BehaviorNode =\n  | {type: 'DYNAMIC'}\n  | {type: 'ACTION'}\n  | {type: 'STRUCTURAL'}\n  | {type: 'CHECKABLE'}\n  | {type: 'STATIC'}\n  | {type: 'OBJECT'; shape: Record<string, BehaviorNode>}\n  | {type: 'ARRAY'; element: BehaviorNode};\n\n/**\n * Traverses a Zod schema tree to build a `BehaviorNode` map.\n *\n * Enables GenericBinder to determine how to handle raw JSON properties\n * without hardcoding logic for specific component types.\n *\n * @param schema Zod schema to inspect.\n * @returns Root BehaviorNode describing schema properties.\n */\nexport function scrapeSchemaBehavior(schema: z.ZodTypeAny): BehaviorNode {\n  return getFieldBehavior(schema);\n}\n\n/**\n * Unwraps Zod wrapper schemas (ZodOptional, ZodNullable, ZodDefault,\n * ZodReadonly, ZodEffects, ZodBranded, ZodLazy) to retrieve the underlying inner schema type.\n *\n * @param type Zod schema to unwrap.\n * @returns The inner Zod schema.\n */\nfunction unwrapZodSchema(type: z.ZodTypeAny): z.ZodTypeAny {\n  let current: any = type;\n  while (current) {\n    const typeName = current._def?.typeName;\n    if (\n      typeName === 'ZodOptional' ||\n      typeName === 'ZodNullable' ||\n      typeName === 'ZodDefault' ||\n      typeName === 'ZodReadonly'\n    ) {\n      current = current._def.innerType;\n    } else if (typeName === 'ZodEffects') {\n      current = current._def.schema;\n    } else if (typeName === 'ZodBranded') {\n      current = current._def.type;\n    } else if (typeName === 'ZodLazy') {\n      current = current._def.getter();\n    } else {\n      break;\n    }\n  }\n  return current;\n}\n\n/**\n * Extracts the definition name from a schema's REF: description, if present.\n * Walks the schema wrapper chain to locate the first non-empty description.\n *\n * @param type Zod schema to inspect.\n * @returns Target definition name, or an empty string.\n */\nfunction getRefDefName(type: z.ZodTypeAny): string {\n  let current: any = type;\n  let desc = '';\n  while (current) {\n    desc = current.description ?? current._def?.description ?? '';\n    if (desc) break;\n    const typeName = current._def?.typeName;\n    if (\n      typeName === 'ZodOptional' ||\n      typeName === 'ZodNullable' ||\n      typeName === 'ZodDefault' ||\n      typeName === 'ZodReadonly'\n    ) {\n      current = current._def.innerType;\n    } else if (typeName === 'ZodEffects') {\n      current = current._def.schema;\n    } else if (typeName === 'ZodBranded') {\n      current = current._def.type;\n    } else if (typeName === 'ZodLazy') {\n      current = current._def.getter();\n    } else {\n      break;\n    }\n  }\n  if (!desc || !desc.startsWith('REF:')) return '';\n  const cleanDesc = desc.slice(4);\n  return extractRefDefName(cleanDesc.split('|')[0]);\n}\n\n/**\n * Checks whether a schema represents a checkable validation rule or list of rules.\n *\n * @param type Zod schema to inspect.\n * @returns Whether the schema represents a checkable field.\n */\nfunction isCheckableField(type: z.ZodTypeAny): boolean {\n  const defName = getRefDefName(type);\n  if (defName === 'Checkable' || defName === 'CheckRule') {\n    return true;\n  }\n\n  const current: any = unwrapZodSchema(type);\n  if (current?._def?.typeName === 'ZodArray') {\n    const elem = current._def.type;\n    const elemDefName = getRefDefName(elem);\n    if (elemDefName === 'CheckRule') {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction isActionOption(option: z.ZodTypeAny): boolean {\n  if (getRefDefName(option) === 'Action') return true;\n  const current = unwrapZodSchema(option);\n  const def = (current as any)._def;\n  return def?.typeName === 'ZodObject' && Boolean(def.shape?.().event);\n}\n\nfunction isDynamicOption(option: z.ZodTypeAny): boolean {\n  const refDef = getRefDefName(option);\n  if (refDef === 'DataBinding' || refDef.startsWith('Dynamic')) return true;\n  const current = unwrapZodSchema(option);\n  const def = (current as any)._def;\n  if (def?.typeName !== 'ZodObject') return false;\n  const shape = def.shape?.() || {};\n  const hasComponentId = Object.values(shape).some(\n    prop => getRefDefName(prop as z.ZodTypeAny) === 'ComponentId',\n  );\n  return Boolean(shape.path) && !hasComponentId;\n}\n\nfunction isChildListOption(option: z.ZodTypeAny): boolean {\n  if (childRefKindOf(option) === 'child-list' || getRefDefName(option) === 'ChildList') {\n    return true;\n  }\n  const current = unwrapZodSchema(option);\n  const def = (current as any)._def;\n  if (def?.typeName !== 'ZodObject') return false;\n  const shape = def.shape?.() || {};\n  return Object.values(shape).some(prop => getRefDefName(prop as z.ZodTypeAny) === 'ComponentId');\n}\n\nfunction isDynamicDef(defName: string, typeName?: string): boolean {\n  return (\n    (defName === 'DataBinding' || defName.startsWith('Dynamic')) &&\n    typeName !== 'ZodObject' &&\n    typeName !== 'ZodArray'\n  );\n}\n\nfunction matchUnionBehavior(options: z.ZodTypeAny[]): BehaviorNode | undefined {\n  if (options.some(isActionOption)) return {type: 'ACTION'};\n  if (options.some(isDynamicOption)) return {type: 'DYNAMIC'};\n  if (options.some(isChildListOption)) return {type: 'STRUCTURAL'};\n  return undefined;\n}\n\nfunction scrapeObjectShape(objShape: Record<string, z.ZodTypeAny>): Record<string, BehaviorNode> {\n  const shape: Record<string, BehaviorNode> = {};\n  for (const [key, value] of Object.entries(objShape)) {\n    shape[key] = getFieldBehavior(value);\n  }\n  return shape;\n}\n\n/**\n * Recursively maps a Zod schema to its corresponding BehaviorNode.\n *\n * @param type Zod schema to inspect.\n * @returns Behavior node representing runtime handling for the schema.\n */\nfunction getFieldBehavior(type: z.ZodTypeAny): BehaviorNode {\n  const defName = getRefDefName(type);\n\n  if (isCheckableField(type)) {\n    return {type: 'CHECKABLE'};\n  }\n\n  if (defName === 'Action') {\n    return {type: 'ACTION'};\n  }\n\n  const current: any = unwrapZodSchema(type);\n\n  if (childRefKindOf(current) === 'child-list' || defName === 'ChildList') {\n    return {type: 'STRUCTURAL'};\n  }\n\n  if (isDynamicDef(defName, current._def?.typeName)) {\n    return {type: 'DYNAMIC'};\n  }\n\n  // Structural matching for A2UI primitives using typeName to avoid dual-module instanceof issues\n  if (current._def.typeName === 'ZodUnion') {\n    const unionBehavior = matchUnionBehavior(current._def.options as z.ZodTypeAny[]);\n    if (unionBehavior) return unionBehavior;\n  }\n\n  // Recursive array scraping\n  if (current._def.typeName === 'ZodArray') {\n    return {\n      type: 'ARRAY',\n      element: getFieldBehavior(current._def.type),\n    };\n  }\n\n  // Recursive object scraping\n  if (current._def.typeName === 'ZodObject') {\n    return {\n      type: 'OBJECT',\n      shape: scrapeObjectShape(current._def.shape()),\n    };\n  }\n\n  // Fallback\n  return {type: 'STATIC'};\n}\n\n/** Types recognized as dynamic data bindings or expression function calls. */\ntype DynamicTypes =\n  | DataBinding\n  | {path: string}\n  | {call: string; catalogId?: string; args?: Record<string, unknown>; returnType?: string};\n\n/** Types recognized as user actions or function call events. */\ntype ActionLike =\n  | Action\n  | {event: {name: string; context?: Record<string, unknown>}}\n  | {functionCall: {call: string; catalogId?: string; args?: Record<string, unknown>}};\n\n/** Evaluates to true if type T can contain a dynamic binding. */\ntype IsDynamic<T> = DataBinding extends NonNullable<T> ? true : false;\n\n/**\n * Resolved reference to a child component with its unique identifier and data context path.\n */\nexport interface ResolvedChildRef {\n  /** Unique identifier of the referenced child component. */\n  id: string;\n  /** Base data model path scoped to this child component instance. */\n  basePath: string;\n}\n\n/**\n * Maps raw Zod inferred types to their resolved runtime equivalents.\n *\n * For example, an `Action` object becomes a callable `() => void` function.\n */\nexport type ResolveA2uiProp<T> = [NonNullable<T>] extends [ActionLike]\n  ? (() => void) | Extract<T, undefined>\n  : [NonNullable<T>] extends [ChildList]\n    ? (string | ResolvedChildRef)[] | Extract<T, undefined>\n    : Exclude<T, DynamicTypes> extends never\n      ? unknown\n      : Exclude<T, DynamicTypes>;\n\n/**\n * Generates two-way binding setters for dynamic properties.\n *\n * For example, a `value: DynamicString` property produces a `setValue(val: string)` setter.\n */\nexport type GenerateSetters<T> = {\n  [K in keyof T as IsDynamic<T[K]> extends true ? `set${Capitalize<string & K>}` : never]-?: (\n    value: Exclude<NonNullable<T[K]>, DynamicTypes>,\n  ) => void;\n};\n\n/**\n * Fully resolved component properties, setters, and validation flags.\n *\n * Used by framework adapters (such as createReactComponent) to provide\n * strongly-typed props to component views.\n */\nexport type ResolveA2uiProps<T> = (T extends object\n  ? {\n      [K in keyof T]: ResolveA2uiProp<T[K]>;\n    }\n  : T) &\n  GenerateSetters<T> & {\n    isValid?: boolean;\n    validationErrors?: string[];\n  };\n\n/**\n * The maximum number of children materialized by dynamic ChildList templates.\n * Prevents unbounded resource consumption (CWE-400) when bound to massive arrays.\n */\nexport const MAX_DYNAMIC_CHILD_LIST_SIZE = 10_000;\n\n/**\n * Safely bounds array length for dynamic child lists to prevent unbounded memory allocation.\n * Returns an array of at most MAX_DYNAMIC_CHILD_LIST_SIZE items.\n */\nexport function getSafeChildList<T = unknown>(value: unknown): T[] {\n  if (!Array.isArray(value)) {\n    return [];\n  }\n  return (\n    value.length > MAX_DYNAMIC_CHILD_LIST_SIZE ? value.slice(0, MAX_DYNAMIC_CHILD_LIST_SIZE) : value\n  ) as T[];\n}\n\n/**\n * Reactive property binder transforming raw A2UI component JSON into strongly-typed resolved props.\n *\n * Connects component properties to the data context, resolves dynamic bindings,\n * actions, structural templates, and validation checks.\n *\n * @template T Component property interface.\n */\nexport class GenericBinder<T> {\n  private dataListeners: (() => void)[] = [];\n  private propsListeners: ((props: T) => void)[] = [];\n  /** Snapshot of currently resolved properties. */\n  private currentProps: Partial<T> = {};\n  private compUnsub?: () => void;\n  private isConnected = false;\n\n  private context: ComponentContext;\n  private behaviorTree: BehaviorNode;\n  // Actions resolve to closures, which downstream value comparison cannot\n  // inspect; reusing the closure while the raw payload is unchanged keeps\n  // unchanged action props reference-identical across rebuilds.\n  private actionClosures = new Map<string, {raw: unknown; closure: () => void}>();\n\n  /**\n   * Creates a new binder for the given component context and schema.\n   *\n   * @param context Component context providing state and event dispatching.\n   * @param schema Zod schema defining the component properties.\n   */\n  constructor(context: ComponentContext, schema: z.ZodTypeAny) {\n    this.context = context;\n    this.behaviorTree = scrapeSchemaBehavior(schema);\n\n    if (this.behaviorTree.type !== 'OBJECT') {\n      this.behaviorTree = {type: 'OBJECT', shape: {}};\n    }\n\n    this.resolveInitialProps();\n  }\n\n  private resolveInitialProps() {\n    const props = this.context.componentModel.properties;\n    const resolved = this.resolveAndBind(props, this.behaviorTree, [], true) as\n      | Record<string, unknown>\n      | undefined;\n    this.currentProps = {...this.currentProps, ...(resolved || {})} as Partial<T>;\n  }\n\n  private connect() {\n    if (this.isConnected) return;\n    this.isConnected = true;\n    const sub = this.context.componentModel.onUpdated.subscribe(() => {\n      this.rebuildAllBindings();\n    });\n    this.compUnsub = () => sub.unsubscribe();\n    this.rebuildAllBindings();\n  }\n\n  private rebuildAllBindings() {\n    this.dataListeners.forEach(l => l());\n    this.dataListeners = [];\n\n    const props = this.context.componentModel.properties;\n\n    const resolved = this.resolveAndBind(props, this.behaviorTree, [], false) as\n      | Record<string, unknown>\n      | undefined;\n    this.currentProps = {...this.currentProps, ...(resolved || {})} as Partial<T>;\n\n    this.notify();\n  }\n\n  private bindDynamicValue(value: unknown, path: string[], isSync: boolean): unknown {\n    const bound = this.context.dataContext.subscribeDynamicValue(value, newVal => {\n      this.updateDeepValue(path, newVal);\n      this.notify();\n    });\n\n    if (!isSync) {\n      this.dataListeners.push(() => bound.unsubscribe());\n    } else {\n      bound.unsubscribe();\n    }\n    return bound.value;\n  }\n\n  /**\n   * Synchronously evaluates dynamic expressions within a nested object tree.\n   *\n   * Traverses objects and arrays, resolving JSON pointer paths and function calls\n   * against the current data context without creating persistent reactive subscriptions.\n   *\n   * @param val Raw value, nested object, or dynamic expression to evaluate.\n   * @param depth Current recursion depth, bounded by MAX_DYNAMIC_VALUE_DEPTH.\n   * @returns Evaluated data structure with dynamic expressions resolved.\n   */\n  private resolveDeepSync(val: unknown, depth = 0): unknown {\n    if (typeof val !== 'object' || val === null) return val;\n    if (depth > MAX_DYNAMIC_VALUE_DEPTH) return undefined;\n\n    if ('path' in val || 'call' in val) {\n      return this.context.dataContext.resolveDynamicValue(val, depth);\n    }\n    if (Array.isArray(val)) return val.map(item => this.resolveDeepSync(item, depth + 1));\n    const res: Record<string, unknown> = {};\n    for (const [k, v] of Object.entries(val)) {\n      res[k] = this.resolveDeepSync(v, depth + 1);\n    }\n    return res;\n  }\n\n  /**\n   * Resolves a server-bound `event` action payload at invocation time, preserving\n   * the `event` wrapper while evaluating nested `context` and `userMessage` fields.\n   */\n  private resolveEventAction(val: unknown): Action | Record<string, unknown> {\n    if (typeof val !== 'object' || val === null) {\n      return val as Record<string, unknown>;\n    }\n    const obj = val as Record<string, unknown>;\n    if ('event' in obj && typeof obj.event === 'object' && obj.event !== null) {\n      const ev = obj.event as Record<string, unknown>;\n      const resolvedEvent: Record<string, unknown> = {\n        ...ev,\n        context: ev.context\n          ? (this.resolveDeepSync(ev.context, 1) as Record<string, unknown>)\n          : undefined,\n      };\n      // `userMessage` is a DynamicString; the agent expects it already\n      // resolved to a plain string.\n      if (ev['userMessage'] !== undefined) {\n        resolvedEvent['userMessage'] = this.resolveDeepSync(ev['userMessage'], 1);\n      }\n      return {...obj, event: resolvedEvent};\n    }\n    if ('name' in obj) {\n      const resolved: Record<string, unknown> = {\n        ...obj,\n        context: obj.context\n          ? (this.resolveDeepSync(obj.context, 1) as Record<string, unknown>)\n          : undefined,\n      };\n      if (obj['userMessage'] !== undefined) {\n        resolved['userMessage'] = this.resolveDeepSync(obj['userMessage'], 1);\n      }\n      return resolved;\n    }\n    return this.resolveDeepSync(val, 0) as Action | Record<string, unknown>;\n  }\n\n  private bindAction(value: unknown, path: string[]): () => void {\n    const cacheKey = path.join('/');\n    const cached = this.actionClosures.get(cacheKey);\n    if (cached && jsonEquals(cached.raw, value)) {\n      return cached.closure;\n    }\n    const closure = () => {\n      if (value && typeof value === 'object') {\n        const valObj = value as Record<string, unknown>;\n        const fc =\n          valObj.functionCall && typeof valObj.functionCall === 'object'\n            ? (valObj.functionCall as Record<string, unknown>)\n            : valObj;\n        if (typeof fc.call === 'string') {\n          this.context.dataContext.resolveDynamicValue(fc);\n          return;\n        }\n      }\n      this.context.dispatchAction(this.resolveEventAction(value));\n    };\n    this.actionClosures.set(cacheKey, {raw: value, closure});\n    return closure;\n  }\n\n  private mapTemplateChildren(\n    rawArray: unknown,\n    templateComponentId: string,\n    templatePath: string,\n  ): ResolvedChildRef[] {\n    const arr = getSafeChildList(rawArray);\n    const listContext = this.context.dataContext.nested(templatePath);\n    return arr.map((_, i) => ({\n      id: templateComponentId,\n      basePath: listContext.nested(String(i)).path,\n    }));\n  }\n\n  private bindStructuralTemplate(\n    value: unknown,\n    path: string[],\n    isSync: boolean,\n  ): ResolvedChildRef[] | unknown {\n    if (!value || typeof value !== 'object' || Array.isArray(value)) {\n      return value;\n    }\n\n    const templateObj = value as Record<string, unknown>;\n    const templatePath = typeof templateObj.path === 'string' ? templateObj.path : undefined;\n    const templateComponentId =\n      typeof templateObj.componentId === 'string' ? templateObj.componentId : undefined;\n\n    if (!templatePath || !templateComponentId) {\n      return value;\n    }\n\n    const bound = this.context.dataContext.subscribeDynamicValue({path: templatePath}, newVal => {\n      const resolvedChildren = this.mapTemplateChildren(newVal, templateComponentId, templatePath);\n      this.updateDeepValue(path, resolvedChildren);\n      this.notify();\n    });\n\n    if (!isSync) {\n      this.dataListeners.push(() => bound.unsubscribe());\n    } else {\n      bound.unsubscribe();\n    }\n\n    return this.mapTemplateChildren(bound.value, templateComponentId, templatePath);\n  }\n\n  private extractValidationResult(\n    val: unknown,\n    fallbackMessage: string,\n  ): {valid: boolean; message: string} {\n    if (typeof val === 'object' && val !== null && 'valid' in val) {\n      const customMessage = (val as {message?: unknown}).message;\n      return {\n        valid: Boolean((val as {valid: unknown}).valid),\n        message:\n          customMessage !== undefined && customMessage !== null\n            ? String(customMessage)\n            : fallbackMessage,\n      };\n    }\n    return {\n      valid: Boolean(val),\n      message: fallbackMessage,\n    };\n  }\n\n  private bindCheckable(value: unknown, path: string[], isSync: boolean): unknown {\n    const rules = Array.isArray(value) ? value : [];\n    const ruleResults: {valid: boolean; message: string}[] = rules.map(() => ({\n      valid: true,\n      message: '',\n    }));\n\n    const parentPath = path.slice(0, -1);\n    const updateValidationState = () => {\n      const errors = ruleResults.filter(r => !r.valid).map(r => r.message);\n      this.updateDeepValue([...parentPath, 'isValid'], errors.length === 0);\n      this.updateDeepValue([...parentPath, 'validationErrors'], errors);\n      this.notify();\n    };\n\n    rules.forEach((rule: unknown, index: number) => {\n      const ruleObj =\n        typeof rule === 'object' && rule !== null ? (rule as Record<string, unknown>) : undefined;\n      const condition = ruleObj && ruleObj.condition !== undefined ? ruleObj.condition : rule;\n      const message = typeof ruleObj?.message === 'string' ? ruleObj.message : 'Validation failed';\n      ruleResults[index].message = message;\n\n      const bound = this.context.dataContext.subscribeDynamicValue(condition, newVal => {\n        ruleResults[index] = this.extractValidationResult(newVal, message);\n        updateValidationState();\n      });\n\n      if (!isSync) {\n        this.dataListeners.push(() => bound.unsubscribe());\n      } else {\n        bound.unsubscribe();\n      }\n\n      ruleResults[index] = this.extractValidationResult(bound.value, message);\n    });\n\n    // Set initial state\n    const initialErrors = ruleResults.filter(r => !r.valid).map(r => r.message);\n    this.updateDeepValue([...parentPath, 'isValid'], initialErrors.length === 0);\n    this.updateDeepValue([...parentPath, 'validationErrors'], initialErrors);\n\n    return value;\n  }\n\n  private bindObject(\n    valObj: Record<string, unknown>,\n    shape: Record<string, BehaviorNode>,\n    path: string[],\n    isSync: boolean,\n  ): Record<string, unknown> {\n    const result: Record<string, unknown> = {};\n\n    // 1. Resolve all provided properties\n    for (const [k, v] of Object.entries(valObj)) {\n      const childBehavior = shape[k] || {type: 'STATIC'};\n      result[k] = this.resolveAndBind(v, childBehavior, [...path, k], isSync);\n    }\n\n    // 2. Ensure all dynamic setters exist, even if the property wasn't provided in the payload\n    for (const [k, childBehavior] of Object.entries(shape)) {\n      if (childBehavior.type === 'DYNAMIC') {\n        const setterName = `set${k.charAt(0).toUpperCase() + k.slice(1)}`;\n        const rawPropValue = valObj[k];\n        result[setterName] = (newValue: unknown) => {\n          if (rawPropValue && typeof rawPropValue === 'object' && 'path' in rawPropValue) {\n            const pathVal = (rawPropValue as {path: unknown}).path;\n            if (typeof pathVal === 'string') {\n              this.context.dataContext.set(pathVal, newValue);\n            }\n          }\n        };\n      }\n    }\n\n    return result;\n  }\n\n  private resolveAndBind(\n    value: unknown,\n    behavior: BehaviorNode,\n    path: string[],\n    isSync: boolean,\n  ): unknown {\n    if (value === undefined || value === null) return value;\n\n    switch (behavior.type) {\n      case 'DYNAMIC':\n        return this.bindDynamicValue(value, path, isSync);\n\n      case 'ACTION':\n        return this.bindAction(value, path);\n\n      case 'STRUCTURAL':\n        return this.bindStructuralTemplate(value, path, isSync);\n\n      case 'CHECKABLE':\n        return this.bindCheckable(value, path, isSync);\n\n      case 'STATIC':\n        return value;\n\n      case 'ARRAY':\n        if (!Array.isArray(value)) return value;\n        return value.map((item, index) =>\n          this.resolveAndBind(item, behavior.element, [...path, index.toString()], isSync),\n        );\n\n      case 'OBJECT':\n        if (typeof value !== 'object') return value;\n        return this.bindObject(value as Record<string, unknown>, behavior.shape, path, isSync);\n    }\n  }\n\n  private updateDeepValue(path: string[], newValue: unknown) {\n    this.currentProps = this.cloneAndUpdate(this.currentProps, path, newValue) as Partial<T>;\n  }\n\n  private cloneAndUpdate(obj: unknown, path: string[], newValue: unknown): unknown {\n    if (path.length === 0) return newValue;\n    const [key, ...rest] = path;\n\n    if (Array.isArray(obj)) {\n      const newArr = [...obj];\n      newArr[Number(key)] = this.cloneAndUpdate(newArr[Number(key)], rest, newValue);\n      return newArr;\n    } else {\n      const record =\n        typeof obj === 'object' && obj !== null ? (obj as Record<string, unknown>) : {};\n      return {\n        ...record,\n        [key]: this.cloneAndUpdate(record[key], rest, newValue),\n      };\n    }\n  }\n\n  /**\n   * Disposes all active data subscriptions and detaches component listeners.\n   */\n  dispose() {\n    if (!this.isConnected) return;\n    this.isConnected = false;\n    this.dataListeners.forEach(l => l());\n    this.dataListeners = [];\n    if (this.compUnsub) {\n      this.compUnsub();\n      this.compUnsub = undefined;\n    }\n  }\n\n  private notify() {\n    this.propsListeners.forEach(l => l(this.currentProps as T));\n  }\n\n  /**\n   * Subscribes to prop change notifications.\n   *\n   * @param listener Callback invoked whenever resolved properties update.\n   * @returns A subscription object to unsubscribe.\n   */\n  subscribe(listener: (props: T) => void) {\n    if (this.propsListeners.length === 0) {\n      this.connect();\n    }\n    this.propsListeners.push(listener);\n\n    return {\n      unsubscribe: () => {\n        this.propsListeners = this.propsListeners.filter(l => l !== listener);\n        if (this.propsListeners.length === 0) {\n          this.dispose();\n        }\n      },\n    };\n  }\n\n  /**\n   * Current snapshot of resolved component properties.\n   */\n  get snapshot() {\n    return this.currentProps as T;\n  }\n}\n\n/**\n * Evaluates structural equality between two JSON-compatible values.\n *\n * @param a First value to compare.\n * @param b Second value to compare.\n * @returns Whether the two values are structurally equal.\n */\nfunction jsonEquals(a: unknown, b: unknown): boolean {\n  if (Object.is(a, b)) return true;\n  if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {\n    return false;\n  }\n  if (Array.isArray(a) || Array.isArray(b)) {\n    if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) {\n      return false;\n    }\n    return a.every((item, index) => jsonEquals(item, b[index]));\n  }\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  if (aKeys.length !== bKeys.length) return false;\n  return aKeys.every(\n    key =>\n      Object.prototype.hasOwnProperty.call(b, key) &&\n      jsonEquals((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key]),\n  );\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Resolved dynamic value snapshot in a node's properties.\n *\n * Captures the current value pinned at the time of emission. A new binding instance\n * is emitted through the node's properties whenever the underlying value changes.\n *\n * Literal and function-call values resolve to a read-only `ResolvedBinding`, preventing\n * accidental writes without explicitly narrowing to {@link WritableBinding}.\n */\nexport class ResolvedBinding<T> {\n  /**\n   * Creates a new `ResolvedBinding` instance.\n   *\n   * @param value The resolved snapshot value.\n   */\n  constructor(readonly value: T) {}\n}\n\n/**\n * Writable resolved dynamic binding backed by a mutable data model path.\n */\nexport class WritableBinding<T> extends ResolvedBinding<T> {\n  /**\n   * Creates a new `WritableBinding` instance.\n   *\n   * @param value Current snapshot value.\n   * @param set Setter callback to update the underlying model.\n   * @param path Authored data path.\n   */\n  constructor(\n    value: T,\n    readonly set: (value: T) => void,\n    /** Authored data path before scope resolution. */\n    readonly path: string,\n  ) {\n    super(value);\n  }\n}\n\n/**\n * Narrows a `ResolvedBinding` to a `WritableBinding`.\n *\n * @param binding The binding to check.\n * @returns Whether the binding is writable.\n */\nexport function isWritable<T>(binding: ResolvedBinding<T>): binding is WritableBinding<T> {\n  return binding instanceof WritableBinding;\n}\n\n/**\n * Compares two bindings for equivalence during change detection.\n *\n * Returns true if both bindings have identical writability, write destination path,\n * and structurally equal snapshot values.\n *\n * @param a First binding.\n * @param b Second binding.\n * @returns Whether the two bindings are equivalent.\n */\nexport function sameBinding(a: ResolvedBinding<unknown>, b: ResolvedBinding<unknown>): boolean {\n  if (isWritable(a) !== isWritable(b)) {\n    return false;\n  }\n  if (isWritable(a) && isWritable(b) && a.path !== b.path) {\n    return false;\n  }\n  return valueEquals(a.value, b.value);\n}\n\nfunction valueEquals(a: unknown, b: unknown): boolean {\n  if (Object.is(a, b)) {\n    return true;\n  }\n  if (Array.isArray(a) && Array.isArray(b)) {\n    return a.length === b.length && a.every((item, i) => valueEquals(item, b[i]));\n  }\n  if (isPlainObject(a) && isPlainObject(b)) {\n    const aKeys = Object.keys(a);\n    const bKeys = Object.keys(b);\n    return (\n      aKeys.length === bKeys.length && aKeys.every(key => key in b && valueEquals(a[key], b[key]))\n    );\n  }\n  return false;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n  if (typeof value !== 'object' || value === null) {\n    return false;\n  }\n  const proto = Object.getPrototypeOf(value);\n  return proto === Object.prototype || proto === null;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {EventEmitter, EventSource} from '../common/events.js';\nimport type {ComponentApi} from '../catalog/types.js';\nimport {Signal, signal, peekValue, setValue} from '../reactivity/signals.js';\nimport {ResolvedBinding} from './resolved-binding.js';\n\n/** The component type name used for pending and cyclic placeholder nodes. */\nexport const PLACEHOLDER_TYPE = 'Placeholder';\n\n/**\n * Resolution state of a component node in the rendered tree.\n *\n * - `resolved`: Real component with a catalog entry; `impl` is set.\n * - `pending`: Component definition has not arrived; upgraded in place when received.\n * - `unknown-type`: Definition arrived but its type has no catalog entry.\n * - `cyclic`: Reference repeats one of the node's own ancestors.\n */\nexport type NodeState = 'resolved' | 'pending' | 'unknown-type' | 'cyclic';\n\n/** Resolved component node properties, keyed by property name. */\nexport type NodeProps = Record<string, unknown>;\n\n/**\n * Represents a single resolved component instance in the rendered tree.\n *\n * Node properties hold fully resolved values: `ResolvedBinding` instances for\n * dynamic values, ready-to-call `() => void` closures for actions, and live\n * `ComponentNode` references (or arrays of them) for child properties.\n *\n * Emits when this node's own resolved properties change, including when a child\n * reference is replaced. Does not emit when a child's internal properties change.\n */\nexport interface ComponentNode<\n  C extends ComponentApi = ComponentApi,\n  TProps extends NodeProps = NodeProps,\n> {\n  /**\n   * Identifier for this node in the rendered tree, distinct among siblings.\n   * The bare component id at the root data scope; for template-spawned items\n   * the scoped data path is appended (e.g. `item-card-[/items/0]`); when one\n   * parent references the same component at the same scope more than once,\n   * each further occurrence gains a `#n` suffix (e.g. `item-card#2`). The\n   * characters that carry meaning in this composition (`~`, `#`, `[`, `]`)\n   * are escaped in the component id and data path, so ids that mimic a\n   * suffixed or scoped form cannot collide with one.\n   *\n   * Until the spec provides data-derived child keys (a2ui#1745), this id\n   * names a list position, not a data item: it is not stable across array\n   * insertions or reorders.\n   */\n  readonly instanceId: string;\n  /** The component id from the payload. */\n  readonly componentId: string;\n  /**\n   * The catalog component type. `'Placeholder'` for pending and cyclic\n   * stand-ins; an unknown-type node keeps its declared type.\n   */\n  readonly type: string;\n  /** The data model scope this node resolves against, e.g. `/items/0`. */\n  readonly dataPath: string;\n  /** The resolved catalog entry for `type`; undefined while a placeholder. */\n  readonly impl: C | undefined;\n  /** Why this node is or is not resolved. */\n  readonly state: NodeState;\n  /** Resolved, reactive properties. Read with `getValue`/`peekValue`. */\n  readonly props: Signal<TProps>;\n  /** Fires exactly once, when this node is disposed. */\n  readonly onDestroyed: EventSource<void>;\n  /** Whether this node has been disposed. */\n  readonly disposed: boolean;\n  /**\n   * Whether this node is an unresolved stand-in (`state` other than `resolved`).\n   *\n   * A placeholder holds the child position with empty properties until the\n   * component becomes resolvable and is replaced in place.\n   */\n  readonly isPlaceholder: boolean;\n  /**\n   * Registers teardown work to run when this node is disposed.\n   *\n   * @param cleanup Teardown callback.\n   */\n  addCleanup(cleanup: () => void): void;\n  /**\n   * Serializes the resolved tree for debugging and headless assertions.\n   *\n   * Child nodes serialize recursively, bindings as their snapshot values,\n   * and action closures as the string `'<Action>'`.\n   *\n   * @returns Serialized JSON-compatible representation.\n   */\n  toJSON(): Record<string, unknown>;\n}\n\n/**\n * Narrows an unknown value to a `ComponentNode`.\n *\n * @param value The value to inspect.\n * @returns Whether the value is a `ComponentNode`.\n */\nexport function isComponentNode(value: unknown): value is ComponentNode {\n  return value instanceof MutableComponentNode;\n}\n\n/**\n * Mutable implementation of `ComponentNode`.\n *\n * Used internally by the node resolver to construct, update, and dispose nodes.\n */\nexport class MutableComponentNode<TProps extends NodeProps = NodeProps> implements ComponentNode<\n  ComponentApi,\n  TProps\n> {\n  readonly instanceId: string;\n  readonly componentId: string;\n  readonly type: string;\n  readonly dataPath: string;\n  readonly impl: ComponentApi | undefined;\n  readonly state: NodeState;\n  readonly props: Signal<TProps>;\n\n  private readonly _onDestroyed = new EventEmitter<void>();\n  readonly onDestroyed: EventSource<void> = this._onDestroyed;\n\n  private cleanups: Array<() => void> = [];\n  private _disposed = false;\n\n  /**\n   * Creates a new `MutableComponentNode` instance.\n   *\n   * @param instanceId Unique instance identifier in the tree.\n   * @param componentId The component ID from the payload.\n   * @param type The component type name.\n   * @param dataPath Data model scope path.\n   * @param initialProps Initial resolved properties.\n   * @param impl Optional catalog component definition.\n   * @param state Initial resolution state.\n   */\n  constructor(\n    instanceId: string,\n    componentId: string,\n    type: string,\n    dataPath: string,\n    initialProps: TProps,\n    impl?: ComponentApi,\n    state: NodeState = 'resolved',\n  ) {\n    this.instanceId = instanceId;\n    this.componentId = componentId;\n    this.type = type;\n    this.dataPath = dataPath;\n    this.props = signal(initialProps);\n    this.impl = impl;\n    this.state = state;\n  }\n\n  /** Whether this node has been disposed. */\n  get disposed(): boolean {\n    return this._disposed;\n  }\n\n  /** Whether this node is an unresolved placeholder. */\n  get isPlaceholder(): boolean {\n    return this.state !== 'resolved';\n  }\n\n  /**\n   * Registers teardown work to run when this node is disposed.\n   *\n   * @param cleanup Teardown callback.\n   */\n  addCleanup(cleanup: () => void): void {\n    this.cleanups.push(cleanup);\n  }\n\n  /**\n   * Serializes the resolved tree for debugging and headless assertions.\n   *\n   * @returns Serialized JSON-compatible representation.\n   */\n  toJSON(): Record<string, unknown> {\n    if (this.isPlaceholder) {\n      return {id: this.componentId, type: this.type, state: this.state};\n    }\n    const serialized: Record<string, unknown> = {\n      id: this.componentId,\n      type: this.type,\n    };\n    const props = peekValue(this.props);\n    for (const [key, value] of Object.entries(props)) {\n      serialized[key] = serializeValue(value);\n    }\n    return serialized;\n  }\n\n  /**\n   * Replaces resolved properties, emitting only when a shallow comparison detects a change.\n   *\n   * @param next Next property dictionary.\n   */\n  setProps(next: TProps): void {\n    if (this._disposed) {\n      return;\n    }\n    const previous = peekValue(this.props);\n    if (!shallowEqual(previous, next)) {\n      setValue(this.props, next);\n    }\n  }\n\n  /**\n   * Tears down this node by running cleanups and firing destruction events.\n   *\n   * This operation is idempotent.\n   */\n  dispose(): void {\n    if (this._disposed) {\n      return;\n    }\n    this._disposed = true;\n    for (const cleanup of this.cleanups) {\n      try {\n        cleanup();\n      } catch (e) {\n        console.error(`ComponentNode cleanup error (${this.instanceId}):`, e);\n      }\n    }\n    this.cleanups = [];\n    this._onDestroyed.emit();\n    this._onDestroyed.dispose();\n  }\n}\n\nfunction serializeValue(value: unknown): unknown {\n  if (isComponentNode(value)) {\n    return value.toJSON();\n  }\n  if (value instanceof ResolvedBinding) {\n    return serializeValue(value.value);\n  }\n  if (typeof value === 'function') {\n    return '<Action>';\n  }\n  if (Array.isArray(value)) {\n    return value.map(serializeValue);\n  }\n  if (value && typeof value === 'object') {\n    const result: Record<string, unknown> = {};\n    for (const [key, inner] of Object.entries(value)) {\n      result[key] = serializeValue(inner);\n    }\n    return result;\n  }\n  return value;\n}\n\nfunction shallowEqual(a: NodeProps, b: NodeProps): boolean {\n  if (Object.is(a, b)) {\n    return true;\n  }\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  if (aKeys.length !== bKeys.length) {\n    return false;\n  }\n  for (const key of aKeys) {\n    if (!Object.is(a[key], b[key])) {\n      return false;\n    }\n  }\n  return true;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport {childRefKindOf, type ChildRefKind} from '../types/common-types.js';\n\n/**\n * Classification reads the child-reference marker `ComponentIdSchema` and\n * `ChildListSchema` carry in their zod metadata, which survives\n * `.describe()` and other schema-rebuilding methods. The `REF:` description\n * pointers below are recognized as well, for schemas that author the\n * pointer by hand rather than deriving from those two.\n */\nconst COMPONENT_ID_REF = 'REF:common_types.json#/$defs/ComponentId';\nconst CHILD_LIST_REF = 'REF:common_types.json#/$defs/ChildList';\n\n/**\n * Describes how a component schema property references child components.\n */\nexport type RefKind =\n  | {\n      /** The property holds a single child component id. */\n      readonly kind: 'single';\n    }\n  | {\n      /** The property holds a `ChildList` (static id array or template). */\n      readonly kind: 'list';\n    }\n  | {\n      /**\n       * The property holds an array of plain objects in which `keys` are\n       * single child references (e.g. a tab strip's `items[].child`).\n       */\n      readonly kind: 'nested';\n      readonly keys: ReadonlySet<string>;\n    };\n\n/** Child-referencing properties of a component schema, keyed by property name. */\nexport type RefFields = ReadonlyMap<string, RefKind>;\n\nconst EMPTY_REF_FIELDS: RefFields = new Map();\n\nconst refFieldsCache = new WeakMap<z.ZodTypeAny, RefFields>();\n\n/**\n * Extracts the child-referencing properties and their kinds from a component Zod schema.\n *\n * @param schema Component Zod schema to inspect.\n * @returns Map of child-referencing property names to their reference kinds.\n */\nexport function extractRefFields(schema: z.ZodTypeAny): RefFields {\n  const cached = refFieldsCache.get(schema);\n  if (cached) {\n    return cached;\n  }\n\n  const unwrapped = unwrap(schema);\n  if (unwrapped.schema._def.typeName !== 'ZodObject') {\n    refFieldsCache.set(schema, EMPTY_REF_FIELDS);\n    return EMPTY_REF_FIELDS;\n  }\n\n  const fields = new Map<string, RefKind>();\n\n  const shape = (unwrapped.schema as z.AnyZodObject).shape as Record<string, z.ZodTypeAny>;\n  for (const [key, value] of Object.entries(shape)) {\n    const field = unwrap(value);\n    if (marksChildList(field) || isChildListUnion(field.schema)) {\n      fields.set(key, {kind: 'list'});\n      continue;\n    }\n    if (marksComponentId(field)) {\n      fields.set(key, {kind: 'single'});\n      continue;\n    }\n    if (field.schema._def.typeName === 'ZodArray') {\n      const element = unwrap(field.schema._def.type as z.ZodTypeAny);\n      // A plain array of component ids: the marker sits on the element\n      // rather than the property (z.array(ComponentIdSchema)).\n      if (marksComponentId(element)) {\n        fields.set(key, {kind: 'list'});\n        continue;\n      }\n      if (element.schema._def.typeName === 'ZodObject') {\n        const subKeys = new Set<string>();\n        const elementShape = (element.schema as z.AnyZodObject).shape as Record<\n          string,\n          z.ZodTypeAny\n        >;\n        for (const [subKey, subValue] of Object.entries(elementShape)) {\n          if (marksComponentId(unwrap(subValue))) {\n            subKeys.add(subKey);\n          }\n        }\n        if (subKeys.size > 0) {\n          fields.set(key, {kind: 'nested', keys: subKeys});\n        }\n      }\n    }\n  }\n\n  const result: RefFields = fields;\n  refFieldsCache.set(schema, result);\n  return result;\n}\n\n/**\n * Unwraps optional/nullable/default/effects wrappers, collecting every\n * description seen along the way (a pointer may sit on the wrapper or on the\n * inner type).\n */\ninterface UnwrappedField {\n  schema: z.ZodTypeAny;\n  descriptions: string[];\n  refs: Set<ChildRefKind>;\n}\n\nfunction unwrap(schema: z.ZodTypeAny): UnwrappedField {\n  const descriptions: string[] = [];\n  const refs = new Set<ChildRefKind>();\n  let current = schema;\n  for (;;) {\n    if (current.description) {\n      descriptions.push(current.description);\n    }\n    const ref = childRefKindOf(current);\n    if (ref) {\n      refs.add(ref);\n    }\n    const typeName = current._def.typeName;\n    if (typeName === 'ZodOptional' || typeName === 'ZodNullable' || typeName === 'ZodDefault') {\n      current = current._def.innerType;\n    } else if (typeName === 'ZodEffects') {\n      current = current._def.schema;\n    } else {\n      return {schema: current, descriptions, refs};\n    }\n  }\n}\n\nfunction marksComponentId(field: UnwrappedField): boolean {\n  return field.refs.has('component-id') || hasPointer(field.descriptions, COMPONENT_ID_REF);\n}\n\nfunction marksChildList(field: UnwrappedField): boolean {\n  return field.refs.has('child-list') || hasPointer(field.descriptions, CHILD_LIST_REF);\n}\n\nfunction hasPointer(descriptions: string[], pointer: string): boolean {\n  return descriptions.some(d => d.startsWith(pointer));\n}\n\n/** Matches the binder's STRUCTURAL detection for `ChildList`-shaped unions. */\nfunction isChildListUnion(schema: z.ZodTypeAny): boolean {\n  if (schema._def.typeName !== 'ZodUnion') {\n    return false;\n  }\n  const options = schema._def.options as z.ZodTypeAny[];\n  return options.some(o => {\n    if (o._def.typeName !== 'ZodObject') {\n      return false;\n    }\n    const shape = (o as z.AnyZodObject).shape;\n    return shape.componentId && shape.path;\n  });\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {SurfaceModel} from '../state/surface-model.js';\nimport {ComponentModel} from '../state/component-model.js';\nimport {Catalog, ComponentApi, FunctionImplementation} from '../catalog/types.js';\nimport {ComponentContext} from './component-context.js';\nimport {DataContext} from './data-context.js';\nimport {\n  BehaviorNode,\n  GenericBinder,\n  getSafeChildList,\n  scrapeSchemaBehavior,\n} from './generic-binder.js';\nimport {\n  ComponentNode,\n  isComponentNode,\n  MutableComponentNode,\n  NodeProps,\n  PLACEHOLDER_TYPE,\n} from './component-node.js';\nimport {extractRefFields, RefFields} from './ref-fields.js';\nimport {ResolvedBinding, WritableBinding, sameBinding} from './resolved-binding.js';\nimport {Signal, signal, setValue, peekValue} from '../reactivity/signals.js';\nimport {Subscription} from '../common/events.js';\nimport {A2uiStateError} from '../errors.js';\n\nconst ROOT_COMPONENT_ID = 'root';\nconst ROOT_DATA_PATH = '/';\n\nconst EMPTY_REF_FIELDS: RefFields = new Map();\n\ninterface NodeRecord {\n  readonly node: MutableComponentNode;\n  readonly edgeKey: string;\n  /** The node's ordinal among same-(componentId, dataPath) siblings, baked\n   *  into its instanceId; reuse requires it to still match. */\n  readonly occurrence: number;\n  /** The node whose props reference this one; undefined for the root. */\n  readonly parent?: MutableComponentNode;\n  readonly refFields: RefFields;\n  /** The scraped behavior tree for the component's schema; positions it\n   *  classifies as DYNAMIC resolve to {@link ResolvedBinding}s in node\n   *  props. Absent on placeholders. */\n  readonly behavior?: BehaviorNode;\n  /** Writes constructed for path-bound values go through this context's\n   *  scoped data context. */\n  readonly context?: ComponentContext;\n  readonly componentModel?: ComponentModel;\n  readonly binder?: GenericBinder<NodeProps>;\n  binderSub?: {unsubscribe(): void};\n  /** The most recent per-component resolution from the binder. */\n  lastBinderProps?: NodeProps;\n  /** Children this node currently references, keyed by edge. This parent owns their disposal. */\n  childEdges: Map<string, MutableComponentNode>;\n}\n\n/**\n * Resolves a surface model's flat component dictionary into a reactive tree of `ComponentNode`s.\n *\n * Child references become `ComponentNode` objects, template `ChildList`s spawn one node per array item,\n * not-yet-arrived components appear as placeholder nodes and are upgraded in place, and every node's\n * binder and data subscriptions are torn down when its parent stops referencing it or the resolver is disposed.\n *\n * Construction requires a catalog whose functions are executable (`F extends FunctionImplementation`).\n */\nexport class NodeResolver<\n  C extends ComponentApi = ComponentApi,\n  F extends FunctionImplementation = FunctionImplementation,\n> {\n  /** The resolved root of the tree, or undefined until the root component arrives. */\n  readonly rootNode: Signal<ComponentNode<C> | undefined>;\n\n  private readonly surface: SurfaceModel<C, F>;\n  private readonly catalog: Catalog<C, F>;\n  private readonly rootId: string;\n  private readonly records = new Map<MutableComponentNode, NodeRecord>();\n  private readonly nodesByEdge = new Map<string, MutableComponentNode>();\n  private readonly nodesByComponentId = new Map<string, Set<MutableComponentNode>>();\n  /** Parents holding a placeholder for a component id, awaiting its arrival. */\n  private readonly pendingParents = new Map<string, Set<MutableComponentNode>>();\n  /** Errors already dispatched, keyed by component id, then data path. */\n  private readonly dispatchedErrors = new Map<string, Map<string, Set<string>>>();\n  private readonly modelSubs: Subscription[] = [];\n  private rootRecord?: NodeRecord;\n  private _disposed = false;\n\n  /**\n   * Creates a new `NodeResolver` instance.\n   *\n   * @param surface Surface model to observe.\n   * @param catalog Catalog containing component schemas and function implementations.\n   * @throws {A2uiStateError} If the catalog instance differs from the surface's catalog.\n   */\n  constructor(surface: SurfaceModel<C, F>, catalog: Catalog<C, F>) {\n    if ((catalog as unknown) !== (surface.defaultCatalog as unknown)) {\n      throw new A2uiStateError(\n        'NodeResolver requires the same catalog instance its surface was constructed with.',\n      );\n    }\n    this.surface = surface;\n    this.catalog = catalog;\n    this.rootId = surface.rootId ?? ROOT_COMPONENT_ID;\n    this.rootNode = signal<ComponentNode<C> | undefined>(undefined);\n\n    this.modelSubs.push(\n      surface.componentsModel.onCreated.subscribe(component => this.onComponentCreated(component)),\n    );\n    this.modelSubs.push(\n      surface.componentsModel.onDeleted.subscribe(id => this.onComponentDeleted(id)),\n    );\n\n    if (surface.componentsModel.get(this.rootId)) {\n      this.buildRoot();\n    }\n  }\n\n  /**\n   * Dispatches once per (code, component, path) for as long as the condition\n   * persists: the record is cleared when the component is deleted, when a\n   * node for the pair resolves, or when a cyclic stand-in's edge goes away,\n   * so a condition that is fixed and later reintroduced reports again.\n   */\n  private dispatchOnce(code: string, componentId: string, dataPath: string, message: string): void {\n    let byPath = this.dispatchedErrors.get(componentId);\n    if (!byPath) {\n      byPath = new Map();\n      this.dispatchedErrors.set(componentId, byPath);\n    }\n    let codes = byPath.get(dataPath);\n    if (!codes) {\n      codes = new Set();\n      byPath.set(dataPath, codes);\n    }\n    if (codes.has(code)) {\n      return;\n    }\n    codes.add(code);\n    this.surface.dispatchError({code, message});\n  }\n\n  private clearDispatched(componentId: string, dataPath: string): void {\n    const byPath = this.dispatchedErrors.get(componentId);\n    if (byPath?.delete(dataPath) && byPath.size === 0) {\n      this.dispatchedErrors.delete(componentId);\n    }\n  }\n\n  /** Total count of live nodes in the tree, including placeholders. */\n  get activeNodeCount(): number {\n    return this.records.size;\n  }\n\n  /** Whether this resolver has been disposed. */\n  get disposed(): boolean {\n    return this._disposed;\n  }\n\n  /**\n   * Tears down the entire node tree and disconnects model event listeners.\n   *\n   * This operation is idempotent.\n   */\n  dispose(): void {\n    if (this._disposed) {\n      return;\n    }\n    this._disposed = true;\n    for (const sub of this.modelSubs) {\n      sub.unsubscribe();\n    }\n    this.modelSubs.length = 0;\n    for (const node of [...this.records.keys()]) {\n      this.disposeNode(node);\n    }\n    this.pendingParents.clear();\n    this.dispatchedErrors.clear();\n    this.rootRecord = undefined;\n    setValue(this.rootNode, undefined);\n  }\n\n  /** No-op while a root record exists; root deletion clears it so a re-sent root rebuilds. */\n  private buildRoot(): void {\n    if (this.rootRecord) {\n      return;\n    }\n    const rootEdgeKey = `>${escapeIdPart(this.rootId)}>${escapeIdPart(this.rootId)}@/`;\n    const node = this.createNode(this.rootId, ROOT_DATA_PATH, rootEdgeKey, undefined);\n    this.rootRecord = this.records.get(node);\n    // Sound: every impl a node carries came from this resolver's Catalog<C>.\n    setValue(this.rootNode, node as ComponentNode<C>);\n  }\n\n  private onComponentCreated(component: ComponentModel): void {\n    if (this._disposed) {\n      return;\n    }\n    if (component.id === this.rootId) {\n      // Events deliver late; reconcile against the model's current root, not\n      // the event payload. A stale creation must not rebuild a tree already\n      // bound to the current model, nor create one the model no longer has.\n      const current = this.surface.componentsModel.get(this.rootId);\n      if (this.rootRecord && this.rootRecord.componentModel !== current) {\n        this.disposeNode(this.rootRecord.node);\n        this.rootRecord = undefined;\n        if (!current) {\n          setValue(this.rootNode, undefined);\n        }\n      }\n      if (current) {\n        this.buildRoot();\n      }\n    }\n    const waiting = this.pendingParents.get(component.id);\n    if (waiting) {\n      this.pendingParents.delete(component.id);\n      for (const parent of waiting) {\n        const record = this.records.get(parent);\n        if (record && !parent.disposed) {\n          this.materialize(record);\n        }\n      }\n    }\n  }\n\n  private onComponentDeleted(id: string): void {\n    if (this._disposed) {\n      return;\n    }\n    // Model events deliver asynchronously, so a removal can arrive after the\n    // component is already back; reconcile against current model state.\n    this.dispatchedErrors.delete(id);\n    const model = this.surface.componentsModel.get(id);\n    const affected = this.nodesByComponentId.get(id);\n    if (!affected) {\n      return;\n    }\n    const parentsToRefresh = new Set<MutableComponentNode>();\n    let rootAffected = false;\n    for (const node of [...affected]) {\n      const record = this.records.get(node);\n      if (!record) {\n        continue;\n      }\n      if (record.parent) {\n        parentsToRefresh.add(record.parent);\n      } else {\n        rootAffected = true;\n      }\n    }\n    if (rootAffected && this.rootRecord) {\n      if (!model) {\n        this.disposeNode(this.rootRecord.node);\n        this.rootRecord = undefined;\n        setValue(this.rootNode, undefined);\n      } else if (this.rootRecord.componentModel !== model) {\n        this.disposeNode(this.rootRecord.node);\n        this.rootRecord = undefined;\n        this.buildRoot();\n      }\n    }\n    for (const parent of parentsToRefresh) {\n      const record = this.records.get(parent);\n      if (record && !parent.disposed) {\n        this.materialize(record);\n      }\n    }\n  }\n\n  /**\n   * Creates a node for one (componentId, dataPath) edge. A missing component\n   * definition yields a placeholder node and registers the parent for a\n   * refresh when the definition arrives.\n   */\n  private createNode(\n    componentId: string,\n    dataPath: string,\n    edgeKey: string,\n    parent: MutableComponentNode | undefined,\n    occurrence = 1,\n  ): MutableComponentNode {\n    const model = this.surface.componentsModel.get(componentId);\n    if (!model) {\n      const record = this.registerNode(\n        new MutableComponentNode(\n          instanceIdFor(componentId, dataPath, occurrence),\n          componentId,\n          PLACEHOLDER_TYPE,\n          dataPath,\n          {},\n          undefined,\n          'pending',\n        ),\n        {edgeKey, parent, occurrence, refFields: EMPTY_REF_FIELDS},\n      );\n      if (parent) {\n        this.registerPendingParent(componentId, parent);\n      }\n      return record.node;\n    }\n\n    const compCatalog =\n      (model.catalog?.components.size ? (model.catalog as Catalog<C, F>) : undefined) ??\n      this.catalog;\n    const api = compCatalog.components.get(model.type);\n    if (!api) {\n      this.dispatchOnce(\n        'UNKNOWN_COMPONENT_TYPE',\n        componentId,\n        dataPath,\n        `Component '${componentId}' has type '${model.type}', which is not in catalog '${compCatalog.id}'.`,\n      );\n      return this.registerNode(\n        new MutableComponentNode(\n          instanceIdFor(componentId, dataPath, occurrence),\n          componentId,\n          model.type,\n          dataPath,\n          {},\n          undefined,\n          'unknown-type',\n        ),\n        {edgeKey, parent, occurrence, refFields: EMPTY_REF_FIELDS, componentModel: model},\n      ).node;\n    }\n\n    this.clearDispatched(componentId, dataPath);\n    const parentDataContext = parent ? this.records.get(parent)?.context?.dataContext : undefined;\n    const context = new ComponentContext(this.surface, componentId, dataPath, parentDataContext);\n    const binder = new GenericBinder<NodeProps>(context, api.schema);\n    const record = this.registerNode(\n      new MutableComponentNode(\n        instanceIdFor(componentId, dataPath, occurrence),\n        componentId,\n        model.type,\n        dataPath,\n        {},\n        api,\n      ),\n      {\n        edgeKey,\n        parent,\n        occurrence,\n        refFields: extractRefFields(api.schema),\n        behavior: scrapeSchemaBehavior(api.schema),\n        context,\n        componentModel: model,\n        binder,\n      },\n    );\n    record.binderSub = binder.subscribe(raw => {\n      record.lastBinderProps = raw;\n      this.materialize(record);\n    });\n    // The binder resolves synchronously while connecting, but notifies only\n    // listeners registered before that resolution, so the first\n    // materialization must be seeded from its snapshot.\n    record.lastBinderProps = binder.snapshot;\n    this.materialize(record);\n    return record.node;\n  }\n\n  private registerNode(\n    node: MutableComponentNode,\n    partial: {\n      edgeKey: string;\n      parent?: MutableComponentNode;\n      occurrence: number;\n      refFields: RefFields;\n      behavior?: BehaviorNode;\n      context?: ComponentContext;\n      componentModel?: ComponentModel;\n      binder?: GenericBinder<NodeProps>;\n    },\n  ): NodeRecord {\n    const record: NodeRecord = {\n      node,\n      edgeKey: partial.edgeKey,\n      parent: partial.parent,\n      occurrence: partial.occurrence,\n      refFields: partial.refFields,\n      behavior: partial.behavior,\n      context: partial.context,\n      componentModel: partial.componentModel,\n      binder: partial.binder,\n      childEdges: new Map(),\n    };\n    this.records.set(node, record);\n    this.nodesByEdge.set(partial.edgeKey, node);\n    let byId = this.nodesByComponentId.get(node.componentId);\n    if (!byId) {\n      byId = new Set();\n      this.nodesByComponentId.set(node.componentId, byId);\n    }\n    byId.add(node);\n    return record;\n  }\n\n  /**\n   * Returns the node for a child edge, reusing the cached node when the edge\n   * is unchanged and replacing it (placeholder upgrade or downgrade, id\n   * change, type change) when it is not.\n   */\n  private childNode(\n    componentId: string,\n    dataPath: string,\n    edgeKey: string,\n    parent: MutableComponentNode,\n    occurrence = 1,\n  ): MutableComponentNode {\n    const existing = this.nodesByEdge.get(edgeKey);\n    if (this.isCyclic(componentId, dataPath, parent)) {\n      // Node identity is parent-scoped, so a cyclic payload would otherwise\n      // recurse forever; render the repeated reference as a placeholder.\n      if (\n        existing &&\n        !existing.disposed &&\n        existing.isPlaceholder &&\n        this.records.get(existing)?.occurrence === occurrence\n      ) {\n        return existing;\n      }\n      if (existing && !existing.disposed) {\n        this.disposeNode(existing);\n      }\n      this.dispatchOnce(\n        'CYCLIC_REFERENCE',\n        componentId,\n        dataPath,\n        `Component '${componentId}' at '${dataPath}' is referenced by one of its own descendants; rendering a placeholder instead.`,\n      );\n      return this.registerNode(\n        new MutableComponentNode(\n          instanceIdFor(componentId, dataPath, occurrence),\n          componentId,\n          PLACEHOLDER_TYPE,\n          dataPath,\n          {},\n          undefined,\n          'cyclic',\n        ),\n        {edgeKey, parent, occurrence, refFields: EMPTY_REF_FIELDS},\n      ).node;\n    }\n    if (existing && !existing.disposed) {\n      const model = this.surface.componentsModel.get(componentId);\n      const compCatalog =\n        (model?.catalog?.components.size ? (model.catalog as Catalog<C, F>) : undefined) ??\n        this.catalog;\n      const api = model ? compCatalog.components.get(model.type) : undefined;\n      // A placeholder stays up to date only while its own state's\n      // preconditions hold, so a pending node whose definition arrives with\n      // an unknown type is replaced (once) by an unknown-type node, and\n      // either kind resolves when the type gains a catalog entry. Resolved\n      // and unknown-type nodes must also still be bound to the current model\n      // instance. A node whose sibling ordinal changed is rebuilt so\n      // instance ids stay distinct after list edits.\n      const existingRecord = this.records.get(existing);\n      const upToDate =\n        existing.componentId === componentId &&\n        existing.dataPath === dataPath &&\n        existingRecord?.occurrence === occurrence &&\n        (existing.isPlaceholder\n          ? (model === undefined && existing.state === 'pending') ||\n            (model !== undefined &&\n              api === undefined &&\n              existing.state === 'unknown-type' &&\n              existingRecord?.componentModel === model)\n          : model !== undefined &&\n            existing.type === model.type &&\n            existingRecord?.componentModel === model);\n      if (upToDate) {\n        if (existing.state === 'pending') {\n          // A deletion delivered between this component's add and remove\n          // clears the waiting registration; reusing the placeholder without\n          // restoring it would leave a later legitimate add unnoticed.\n          this.registerPendingParent(componentId, parent);\n        }\n        return existing;\n      }\n      this.disposeNode(existing);\n    }\n    return this.createNode(componentId, dataPath, edgeKey, parent, occurrence);\n  }\n\n  /** Registers a parent to be refreshed when `componentId` arrives. */\n  private registerPendingParent(componentId: string, parent: MutableComponentNode): void {\n    let waiting = this.pendingParents.get(componentId);\n    if (!waiting) {\n      waiting = new Set();\n      this.pendingParents.set(componentId, waiting);\n    }\n    waiting.add(parent);\n  }\n\n  /** True when (componentId, dataPath) already appears in the parent chain. */\n  private isCyclic(componentId: string, dataPath: string, parent: MutableComponentNode): boolean {\n    for (\n      let node: MutableComponentNode | undefined = parent;\n      node;\n      node = this.records.get(node)?.parent\n    ) {\n      if (node.componentId === componentId && node.dataPath === dataPath) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Rebuilds a node's resolved props from its binder output: child reference\n   * properties become live `ComponentNode`s, children this parent no longer\n   * references are disposed, and unchanged values keep reference identity so\n   * the shallow comparison in `MutableComponentNode.setProps` stays exact.\n   */\n  private materialize(record: NodeRecord): void {\n    if (record.node.disposed) {\n      return;\n    }\n    const raw = record.lastBinderProps ?? record.binder?.snapshot ?? {};\n    const next: NodeProps = {...raw};\n    const newEdges = new Map<string, MutableComponentNode>();\n\n    // The binder merges rebuilt props over previous ones and never drops a\n    // key the component's properties no longer contain. Ref props drive child\n    // lifecycles, so their presence must follow the component model exactly.\n    const modelProps = record.componentModel?.properties;\n    if (modelProps) {\n      for (const key of record.refFields.keys()) {\n        if (key in next && !(key in modelProps)) {\n          delete next[key];\n        }\n      }\n    }\n\n    // Ordinal per (componentId, dataPath) within this rebuild, so repeated\n    // references to one component get distinct instance ids.\n    const occurrences = new Map<string, number>();\n    const resolveChild = (slot: string, componentId: string, dataPath: string): ComponentNode => {\n      const occurrenceKey = `${escapeIdPart(componentId)}@${escapeIdPart(dataPath)}`;\n      const occurrence = (occurrences.get(occurrenceKey) ?? 0) + 1;\n      occurrences.set(occurrenceKey, occurrence);\n      const edgeKey = `${record.edgeKey}>${slot}>${occurrenceKey}`;\n      const child = this.childNode(componentId, dataPath, edgeKey, record.node, occurrence);\n      newEdges.set(edgeKey, child);\n      return child;\n    };\n\n    for (const [key, ref] of record.refFields) {\n      switch (ref.kind) {\n        case 'single': {\n          const value = next[key];\n          if (typeof value === 'string' && value) {\n            next[key] = resolveChild(escapeIdPart(key), value, record.node.dataPath);\n          }\n          break;\n        }\n        case 'list': {\n          const value = next[key];\n          if (!Array.isArray(value)) {\n            break;\n          }\n          const safeValue = getSafeChildList(value);\n          next[key] = safeValue.map((item, index) => {\n            if (typeof item === 'string' && item) {\n              return resolveChild(`${escapeIdPart(key)}[${index}]`, item, record.node.dataPath);\n            }\n            if (item && typeof item === 'object' && !Array.isArray(item)) {\n              const entry = item as Record<string, unknown>;\n              // The binder resolves a {componentId, path} template into\n              // {id, basePath} pairs, one per array element.\n              if (typeof entry.id === 'string' && typeof entry.basePath === 'string') {\n                return resolveChild(`${escapeIdPart(key)}[${index}]`, entry.id, entry.basePath);\n              }\n              if (typeof entry.componentId === 'string' && entry.componentId) {\n                return resolveChild(\n                  `${escapeIdPart(key)}[${index}]`,\n                  entry.componentId,\n                  record.node.dataPath,\n                );\n              }\n            }\n            return item;\n          });\n          break;\n        }\n        case 'nested': {\n          const value = next[key];\n          if (!Array.isArray(value)) {\n            break;\n          }\n          next[key] = value.map((item, index) => {\n            if (!item || typeof item !== 'object' || Array.isArray(item)) {\n              return item;\n            }\n            const entry = {...(item as Record<string, unknown>)};\n            let resolvedAny = false;\n            for (const subKey of ref.keys) {\n              const childId = entry[subKey];\n              if (typeof childId === 'string' && childId) {\n                entry[subKey] = resolveChild(\n                  `${escapeIdPart(key)}[${index}].${escapeIdPart(subKey)}`,\n                  childId,\n                  record.node.dataPath,\n                );\n                resolvedAny = true;\n              }\n            }\n            return resolvedAny ? entry : item;\n          });\n          break;\n        }\n      }\n    }\n\n    for (const [edgeKey, child] of record.childEdges) {\n      if (!newEdges.has(edgeKey)) {\n        this.disposeNode(child);\n        if (child.isPlaceholder) {\n          const stillWaiting = [...newEdges.values()].some(\n            other => other.isPlaceholder && other.componentId === child.componentId,\n          );\n          if (!stillWaiting) {\n            const waiting = this.pendingParents.get(child.componentId);\n            if (waiting) {\n              waiting.delete(record.node);\n              if (waiting.size === 0) {\n                this.pendingParents.delete(child.componentId);\n              }\n            }\n          }\n        }\n      }\n    }\n    record.childEdges = newEdges;\n\n    const wrapped =\n      record.behavior && record.context\n        ? (wrapDynamicValues(\n            next,\n            record.behavior,\n            modelProps ?? {},\n            record.context.dataContext,\n          ) as NodeProps)\n        : next;\n\n    // peekValue avoids creating a reactive dependency inside materialize.\n    const previous = peekValue(record.node.props);\n    for (const key of Object.keys(wrapped)) {\n      wrapped[key] = stabilize(previous[key], wrapped[key]);\n    }\n    record.node.setProps(wrapped);\n  }\n\n  /** Disposes a node and, through parent-scoped ownership, its subtree. */\n  private disposeNode(node: MutableComponentNode): void {\n    if (node.disposed) {\n      return;\n    }\n    const record = this.records.get(node);\n    if (record) {\n      for (const child of record.childEdges.values()) {\n        this.disposeNode(child);\n      }\n      record.childEdges.clear();\n      record.binderSub?.unsubscribe();\n      record.binderSub = undefined;\n      if (this.nodesByEdge.get(record.edgeKey) === node) {\n        this.nodesByEdge.delete(record.edgeKey);\n      }\n      this.records.delete(node);\n    }\n    const byId = this.nodesByComponentId.get(node.componentId);\n    if (byId) {\n      byId.delete(node);\n      if (byId.size === 0) {\n        this.nodesByComponentId.delete(node.componentId);\n      }\n    }\n    for (const [componentId, waiting] of this.pendingParents) {\n      waiting.delete(node);\n      if (waiting.size === 0) {\n        this.pendingParents.delete(componentId);\n      }\n    }\n    if (node.state === 'cyclic') {\n      // The cyclic edge is gone; a payload that reintroduces it should report.\n      this.clearDispatched(node.componentId, node.dataPath);\n    }\n    node.dispose();\n  }\n}\n\n/**\n * Escapes the characters that carry meaning in composed instance ids and\n * edge keys (`~`, `#`, `[`, `]`, `>`, `@`), so a component id, data path, or\n * property name containing them cannot collide with the composed form of a\n * different tuple. Parts without these characters are unchanged.\n */\nconst ID_PART_ESCAPES: Record<string, string> = {\n  '~': '~0',\n  '#': '~1',\n  '[': '~2',\n  ']': '~3',\n  '>': '~4',\n  '@': '~5',\n};\n\n// A single pass, so no replacement can see the output of an earlier one.\nfunction escapeIdPart(part: string): string {\n  return part.replace(/[~#[\\]>@]/g, match => ID_PART_ESCAPES[match]);\n}\n\nfunction instanceIdFor(componentId: string, dataPath: string, occurrence: number): string {\n  const trimmed = dataPath.replace(/\\/+$/, '') || ROOT_DATA_PATH;\n  const base =\n    dataPath === ROOT_DATA_PATH\n      ? escapeIdPart(componentId)\n      : `${escapeIdPart(componentId)}-[${escapeIdPart(trimmed)}]`;\n  return occurrence > 1 ? `${base}#${occurrence}` : base;\n}\n\n/**\n * Converts every position the schema classifies as DYNAMIC into a\n * `ResolvedBinding`: the binder's resolved value as the snapshot, plus a\n * write capability iff the payload gave the value as a `{\"path\": ...}`\n * binding, writing through the component's scoped data context. The binder's\n * synthesized `set<Prop>` siblings are dropped: they silently swallow writes\n * to literal-valued properties, whereas a read-only `ResolvedBinding` has no `set`,\n * making such writes a type error.\n */\nfunction wrapDynamicValues(\n  value: unknown,\n  behavior: BehaviorNode,\n  raw: unknown,\n  dataContext: DataContext,\n): unknown {\n  switch (behavior.type) {\n    case 'DYNAMIC': {\n      const path =\n        raw &&\n        typeof raw === 'object' &&\n        !Array.isArray(raw) &&\n        typeof (raw as {path?: unknown}).path === 'string'\n          ? (raw as {path: string}).path\n          : undefined;\n      if (path === undefined) {\n        return new ResolvedBinding(value);\n      }\n      return new WritableBinding(value, newValue => dataContext.set(path, newValue), path);\n    }\n    case 'ARRAY': {\n      if (!Array.isArray(value)) {\n        return value;\n      }\n      const rawItems = Array.isArray(raw) ? raw : [];\n      return value.map((item, index) =>\n        wrapDynamicValues(item, behavior.element, rawItems[index], dataContext),\n      );\n    }\n    case 'OBJECT': {\n      if (!value || typeof value !== 'object' || Array.isArray(value)) {\n        return value;\n      }\n      const setterNames = new Set<string>();\n      for (const [key, childBehavior] of Object.entries(behavior.shape)) {\n        if (childBehavior.type === 'DYNAMIC') {\n          setterNames.add(`set${key.charAt(0).toUpperCase()}${key.slice(1)}`);\n        }\n      }\n      const rawRecord =\n        raw && typeof raw === 'object' && !Array.isArray(raw)\n          ? (raw as Record<string, unknown>)\n          : {};\n      const out: Record<string, unknown> = {};\n      for (const [key, item] of Object.entries(value)) {\n        if (setterNames.has(key)) {\n          continue;\n        }\n        out[key] = wrapDynamicValues(\n          item,\n          behavior.shape[key] ?? {type: 'STATIC'},\n          rawRecord[key],\n          dataContext,\n        );\n      }\n      // The binder guarantees every dynamic property a setter even when the\n      // payload omits it. Represent an omitted one as a read-only binding of\n      // undefined, at every nesting level, so consumers synthesizing setters\n      // from bindings keep that guarantee.\n      for (const [key, childBehavior] of Object.entries(behavior.shape)) {\n        if (childBehavior.type === 'DYNAMIC' && !(key in out)) {\n          out[key] = new ResolvedBinding(undefined);\n        }\n      }\n      return out;\n    }\n    default:\n      return value;\n  }\n}\n\n/**\n * Returns `prev` whenever `next` is structurally identical to it, so\n * unchanged props keep reference identity across rebuilds. Child\n * `ComponentNode`s and action closures compare by identity, and\n * `ResolvedBinding`s by `sameBinding`.\n */\nfunction stabilize(prev: unknown, next: unknown): unknown {\n  if (Object.is(prev, next)) {\n    return next;\n  }\n  if (prev instanceof ResolvedBinding && next instanceof ResolvedBinding) {\n    return sameBinding(prev, next) ? prev : next;\n  }\n  if (isComponentNode(prev) || isComponentNode(next)) {\n    return next;\n  }\n  if (Array.isArray(prev) && Array.isArray(next) && prev.length === next.length) {\n    let allSame = true;\n    const out = next.map((item, i) => {\n      const stabilized = stabilize(prev[i], item);\n      if (!Object.is(stabilized, prev[i])) {\n        allSame = false;\n      }\n      return stabilized;\n    });\n    return allSame ? prev : out;\n  }\n  if (isPlainObject(prev) && isPlainObject(next)) {\n    const prevKeys = Object.keys(prev);\n    const nextKeys = Object.keys(next);\n    if (prevKeys.length === nextKeys.length) {\n      let allSame = true;\n      const out: Record<string, unknown> = {};\n      for (const key of nextKeys) {\n        const stabilized = stabilize(prev[key], next[key]);\n        out[key] = stabilized;\n        if (!(key in prev) || !Object.is(stabilized, prev[key])) {\n          allSame = false;\n        }\n      }\n      return allSame ? prev : out;\n    }\n  }\n  return next;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n  if (!value || typeof value !== 'object' || Array.isArray(value) || isComponentNode(value)) {\n    return false;\n  }\n  // Maps, Dates, and class instances have no own enumerable keys to compare,\n  // so key-wise stabilization would wrongly report them unchanged; treat any\n  // non-literal object as always-changed instead.\n  const proto = Object.getPrototypeOf(value);\n  return proto === Object.prototype || proto === null;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/v0.9/json/ via src/v0_9/scripts/generate-schemas.mjs\nimport {z} from 'zod';\n\nexport const A2uiClientActionSchema = z\n  .object({\n    'name': z\n      .string()\n      .describe(\"The name of the action, taken from the component's action.event.name property.\"),\n    'surfaceId': z.string().describe('The id of the surface where the event originated.'),\n    'sourceComponentId': z.string().describe('The id of the component that triggered the event.'),\n    'timestamp': z\n      .string()\n      .datetime({offset: true})\n      .describe('An ISO 8601 timestamp of when the event occurred.'),\n    'context': z\n      .record(z.string(), z.any())\n      .describe(\n        \"A JSON object containing the key-value pairs from the component's action.event.context, after resolving all data bindings.\",\n      ),\n  })\n  .describe('Reports a user-initiated action from a component.');\nexport type A2uiClientAction = z.infer<typeof A2uiClientActionSchema>;\n\nexport const A2uiValidationErrorSchema = z\n  .object({\n    'code': z.literal('VALIDATION_FAILED'),\n    'surfaceId': z.string().describe('The id of the surface where the error occurred.'),\n    'path': z\n      .string()\n      .describe(\n        \"The JSON pointer to the field that failed validation (e.g. '/components/0/text').\",\n      ),\n    'message': z\n      .string()\n      .describe('A short one or two sentence description of why validation failed.'),\n  })\n  .strict();\n\nexport const A2uiGenericErrorSchema = z\n  .object({\n    'code': z\n      .any()\n      .refine(\n        value => !z.literal('VALIDATION_FAILED').safeParse(value).success,\n        'Invalid input: Should NOT be valid against schema',\n      ),\n    'message': z\n      .string()\n      .describe('A short one or two sentence description of why the error occurred.'),\n    'surfaceId': z.string().describe('The id of the surface where the error occurred.'),\n  })\n  .catchall(z.any());\n\nexport const A2uiClientErrorSchema = z.union([A2uiValidationErrorSchema, A2uiGenericErrorSchema]);\nexport type A2uiClientError = z.infer<typeof A2uiClientErrorSchema>;\n\nexport const A2uiClientMessageSchema = z\n  .object({\n    version: z.enum(['v0.9', 'v0.9.1']),\n  })\n  .and(\n    z.union([z.object({action: A2uiClientActionSchema}), z.object({error: A2uiClientErrorSchema})]),\n  );\nexport type A2uiClientMessage = z.infer<typeof A2uiClientMessageSchema>;\n\nexport const A2uiClientDataModelSchema = z\n  .object({\n    'version': z.enum(['v0.9', 'v0.9.1']),\n    'surfaces': z\n      .record(\n        z.string(),\n        z\n          .record(z.string(), z.any())\n          .describe('The current data model for the surface, as a standard JSON object.'),\n      )\n      .describe('A map of surface IDs to their current data models.'),\n  })\n  .strict()\n  .describe(\n    'Schema for attaching the client data model to A2A message metadata. This object should be placed in the `a2uiClientDataModel` field of the metadata.',\n  );\nexport type A2uiClientDataModel = z.infer<typeof A2uiClientDataModelSchema>;\n\nexport const A2uiClientMessageListSchema = z\n  .array(A2uiClientMessageSchema)\n  .describe('A list of client messages.');\nexport type A2uiClientMessageList = z.infer<typeof A2uiClientMessageListSchema>;\n\nexport const A2uiClientMessageListWrapperSchema = z\n  .object({\n    messages: A2uiClientMessageListSchema,\n  })\n  .strict()\n  .describe('An object wrapping a list of client messages.');\nexport type A2uiClientMessageListWrapper = z.infer<typeof A2uiClientMessageListWrapperSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/v0.9/json/ via src/v0_9/scripts/generate-schemas.mjs\nimport {z} from 'zod';\nimport {markChildRef} from '../../types/child-ref-helpers.js';\n\nexport const ComponentIdSchema = markChildRef(\n  z\n    .string()\n    .describe(\n      'REF:#/$defs/ComponentId|The unique identifier for a component, used for both definitions and references within the same surface.',\n    ),\n  'component-id',\n);\nexport type ComponentId = z.infer<typeof ComponentIdSchema>;\n\nexport const DataBindingSchema = z\n  .object({'path': z.string().describe('A JSON Pointer path to a value in the data model.')})\n  .strict()\n  .describe('REF:#/$defs/DataBinding');\nexport type DataBinding = z.infer<typeof DataBindingSchema>;\n\nexport type DynamicValue = string | number | boolean | unknown[] | DataBinding | FunctionCall;\nexport const DynamicValueSchema: z.ZodType<DynamicValue> = z\n  .union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.array(z.any()),\n    DataBindingSchema,\n    z.lazy(() => FunctionCallSchema),\n  ])\n  .describe(\n    'REF:#/$defs/DynamicValue|A value that can be a literal, a path, or a function call returning any type.',\n  );\n\nexport interface FunctionCall {\n  call: string;\n  args?: Record<string, unknown>;\n  returnType?: 'string' | 'number' | 'boolean' | 'array' | 'object' | 'any' | 'void';\n}\nexport const FunctionCallSchema: z.ZodType<FunctionCall> = z\n  .object({\n    'call': z.string().describe('The name of the function to call.'),\n    'args': z\n      .record(\n        z.string(),\n        z.union([\n          DynamicValueSchema,\n          z.record(z.string(), z.any()).describe('A literal object argument (e.g. configuration).'),\n        ]),\n      )\n      .describe('Arguments passed to the function.')\n      .optional(),\n    'returnType': z\n      .enum(['string', 'number', 'boolean', 'array', 'object', 'any', 'void'])\n      .describe('The expected return type of the function call.')\n      .default('boolean'),\n  })\n  .describe('REF:#/$defs/FunctionCall|Invokes a named function on the client.');\n\nexport const DynamicStringSchema = z\n  .union([z.string(), DataBindingSchema, FunctionCallSchema])\n  .describe('REF:#/$defs/DynamicString|Represents a string');\nexport type DynamicString = z.infer<typeof DynamicStringSchema>;\n\nexport const AccessibilityAttributesSchema = z\n  .object({'label': DynamicStringSchema.optional(), 'description': DynamicStringSchema.optional()})\n  .describe(\n    'REF:#/$defs/AccessibilityAttributes|Attributes to enhance accessibility when using assistive technologies like screen readers.',\n  );\nexport type AccessibilityAttributes = z.infer<typeof AccessibilityAttributesSchema>;\n\nexport const ComponentCommonSchema = z\n  .object({'id': ComponentIdSchema, 'accessibility': AccessibilityAttributesSchema.optional()})\n  .describe('REF:#/$defs/ComponentCommon');\nexport type ComponentCommon = z.infer<typeof ComponentCommonSchema>;\n\nexport const ChildListSchema = markChildRef(\n  z\n    .union([\n      z.array(ComponentIdSchema).describe('A static list of child component IDs.'),\n      z\n        .object({\n          'componentId': ComponentIdSchema,\n          'path': z\n            .string()\n            .describe('The path to the list of component property objects in the data model.'),\n        })\n        .strict()\n        .describe(\n          'A template for generating a dynamic list of children from a data model list. The `componentId` is the component to use as a template.',\n        ),\n    ])\n    .describe('REF:#/$defs/ChildList'),\n  'child-list',\n);\nexport type ChildList = z.infer<typeof ChildListSchema>;\n\nexport const DynamicNumberSchema = z\n  .union([z.number(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicNumber|Represents a value that can be either a literal number, a path to a number in the data model, or a function call returning a number.',\n  );\nexport type DynamicNumber = z.infer<typeof DynamicNumberSchema>;\n\nexport const DynamicBooleanSchema = z\n  .union([z.boolean(), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicBoolean|A boolean value that can be a literal, a path, or a function call returning a boolean.',\n  );\nexport type DynamicBoolean = z.infer<typeof DynamicBooleanSchema>;\n\nexport const DynamicStringListSchema = z\n  .union([z.array(z.string()), DataBindingSchema, FunctionCallSchema])\n  .describe(\n    'REF:#/$defs/DynamicStringList|Represents a value that can be either a literal array of strings, a path to a string array in the data model, or a function call returning a string array.',\n  );\nexport type DynamicStringList = z.infer<typeof DynamicStringListSchema>;\n\nexport const CheckRuleSchema = z\n  .object({\n    'condition': DynamicBooleanSchema,\n    'message': z.string().describe('The error message to display if the check fails.'),\n  })\n  .strict()\n  .describe('REF:#/$defs/CheckRule|A single validation rule applied to an input component.');\nexport type CheckRule = z.infer<typeof CheckRuleSchema>;\n\nexport const CheckableSchema = z\n  .object({\n    'checks': z\n      .array(CheckRuleSchema)\n      .describe(\n        'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n      )\n      .optional(),\n  })\n  .describe('REF:#/$defs/Checkable|Properties for components that support client-side checks.');\nexport type Checkable = z.infer<typeof CheckableSchema>;\n\nexport const ActionSchema = z\n  .union([\n    z\n      .object({\n        'event': z\n          .object({\n            'name': z.string().describe('The name of the action to be dispatched to the server.'),\n            'context': z\n              .record(z.string(), DynamicValueSchema)\n              .describe(\n                'A JSON object containing the key-value pairs for the action context. Values can be literals or paths. Use literal values unless the value must be dynamically bound to the data model. Do NOT use paths for static IDs.',\n              )\n              .optional(),\n          })\n          .strict()\n          .describe('The event to dispatch to the server.'),\n      })\n      .strict()\n      .describe('Triggers a server-side event.'),\n    z\n      .object({'functionCall': FunctionCallSchema})\n      .strict()\n      .describe('Executes a local client-side function.'),\n  ])\n  .describe(\n    'REF:#/$defs/Action|Defines an interaction handler that can either trigger a server-side event or execute a local client-side function.',\n  );\nexport type Action = z.infer<typeof ActionSchema>;\n\nexport const CommonSchemas = {\n  ComponentId: ComponentIdSchema,\n  DataBinding: DataBindingSchema,\n  DynamicValue: DynamicValueSchema,\n  FunctionCall: FunctionCallSchema,\n  DynamicString: DynamicStringSchema,\n  AccessibilityAttributes: AccessibilityAttributesSchema,\n  ComponentCommon: ComponentCommonSchema,\n  ChildList: ChildListSchema,\n  DynamicNumber: DynamicNumberSchema,\n  DynamicBoolean: DynamicBooleanSchema,\n  DynamicStringList: DynamicStringListSchema,\n  CheckRule: CheckRuleSchema,\n  Checkable: CheckableSchema,\n  Action: ActionSchema,\n};\n\nexport * from './helpers.js';\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/ catalogs via scripts/generate-catalog-schemas.mjs\nimport {z} from 'zod';\nimport {ComponentApi} from '../../../catalog/types.js';\nimport {\n  AccessibilityAttributesSchema,\n  ActionSchema,\n  CheckRuleSchema,\n  ChildListSchema,\n  ComponentIdSchema,\n  DataBindingSchema,\n  DynamicBooleanSchema,\n  DynamicNumberSchema,\n  DynamicStringListSchema,\n  DynamicStringSchema,\n} from '../../schema/common-types.js';\n\nexport const TextApi = {\n  name: 'Text',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'text': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The text content to display. While simple Markdown formatting is supported (i.e. without HTML, images, or links), utilizing dedicated UI components is generally preferred for a richer and more structured presentation.',\n      ),\n      'variant': z\n        .enum(['h1', 'h2', 'h3', 'h4', 'h5', 'caption', 'body'])\n        .default('body')\n        .describe('A hint for the base text style.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ImageApi = {\n  name: 'Image',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'url': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The URL of the image to display.',\n      ),\n      'description': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|Accessibility text for the image.',\n      ).optional(),\n      'fit': z\n        .enum(['contain', 'cover', 'fill', 'none', 'scaleDown'])\n        .default('fill')\n        .describe(\n          \"Specifies how the image should be resized to fit its container. This corresponds to the CSS 'object-fit' property.\",\n        )\n        .optional(),\n      'variant': z\n        .enum(['icon', 'avatar', 'smallFeature', 'mediumFeature', 'largeFeature', 'header'])\n        .default('mediumFeature')\n        .describe('A hint for the image size and style.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const IconApi = {\n  name: 'Icon',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'name': z\n        .union([\n          z.enum([\n            'accountCircle',\n            'add',\n            'arrowBack',\n            'arrowForward',\n            'attachFile',\n            'calendarToday',\n            'call',\n            'camera',\n            'check',\n            'close',\n            'delete',\n            'download',\n            'edit',\n            'event',\n            'error',\n            'fastForward',\n            'favorite',\n            'favoriteOff',\n            'folder',\n            'help',\n            'home',\n            'info',\n            'locationOn',\n            'lock',\n            'lockOpen',\n            'mail',\n            'menu',\n            'moreVert',\n            'moreHoriz',\n            'notificationsOff',\n            'notifications',\n            'pause',\n            'payment',\n            'person',\n            'phone',\n            'photo',\n            'play',\n            'print',\n            'refresh',\n            'rewind',\n            'search',\n            'send',\n            'settings',\n            'share',\n            'shoppingCart',\n            'skipNext',\n            'skipPrevious',\n            'star',\n            'starHalf',\n            'starOff',\n            'stop',\n            'upload',\n            'visibility',\n            'visibilityOff',\n            'volumeDown',\n            'volumeMute',\n            'volumeOff',\n            'volumeUp',\n            'warning',\n          ]),\n          z.object({\n            'svgPath': z.string(),\n          }),\n          DataBindingSchema.describe('REF:#/$defs/DataBinding'),\n        ])\n        .describe('The name of the icon to display.'),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const VideoApi = {\n  name: 'Video',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'url': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The URL of the video to display.',\n      ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const AudioPlayerApi = {\n  name: 'AudioPlayer',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'url': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The URL of the audio to be played.',\n      ),\n      'description': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|A description of the audio, such as a title or summary.',\n      ).optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const RowApi = {\n  name: 'Row',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'children': ChildListSchema.describe(\n        'REF:#/$defs/ChildList|Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.',\n      ),\n      'justify': z\n        .enum(['center', 'end', 'spaceAround', 'spaceBetween', 'spaceEvenly', 'start', 'stretch'])\n        .default('start')\n        .describe(\n          \"Defines the arrangement of children along the main axis (horizontally). Use 'spaceBetween' to push items to the edges, or 'start'/'end'/'center' to pack them together.\",\n        )\n        .optional(),\n      'align': z\n        .enum(['start', 'center', 'end', 'stretch'])\n        .default('stretch')\n        .describe(\n          \"Defines the alignment of children along the cross axis (vertically). This is similar to the CSS 'align-items' property, but uses camelCase values (e.g., 'start').\",\n        )\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ColumnApi = {\n  name: 'Column',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'children': ChildListSchema.describe(\n        'REF:#/$defs/ChildList|Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list. Children cannot be defined inline, they must be referred to by ID.',\n      ),\n      'justify': z\n        .enum(['start', 'center', 'end', 'spaceBetween', 'spaceAround', 'spaceEvenly', 'stretch'])\n        .default('start')\n        .describe(\n          \"Defines the arrangement of children along the main axis (vertically). Use 'spaceBetween' to push items to the edges (e.g. header at top, footer at bottom), or 'start'/'end'/'center' to pack them together.\",\n        )\n        .optional(),\n      'align': z\n        .enum(['center', 'end', 'start', 'stretch'])\n        .default('stretch')\n        .describe(\n          \"Defines the alignment of children along the cross axis (horizontally). This is similar to the CSS 'align-items' property.\",\n        )\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ListApi = {\n  name: 'List',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'children': ChildListSchema.describe(\n        'REF:#/$defs/ChildList|Defines the children. Use an array of strings for a fixed set of children, or a template object to generate children from a data list.',\n      ),\n      'direction': z\n        .enum(['vertical', 'horizontal'])\n        .default('vertical')\n        .describe('The direction in which the list items are laid out.')\n        .optional(),\n      'align': z\n        .enum(['start', 'center', 'end', 'stretch'])\n        .default('stretch')\n        .describe('Defines the alignment of children along the cross axis.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const CardApi = {\n  name: 'Card',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'child': ComponentIdSchema.describe(\n        \"REF:#/$defs/ComponentId|The ID of the single child component to be rendered inside the card. To display multiple elements, you MUST wrap them in a layout component (like Column or Row) and pass that container's ID here. Do NOT pass multiple IDs or a non-existent ID.\",\n      ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const TabsApi = {\n  name: 'Tabs',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'tabs': z\n        .array(\n          z.object({\n            'title': DynamicStringSchema.describe('REF:#/$defs/DynamicString|The tab title.'),\n            'child': ComponentIdSchema.describe(\n              'REF:#/$defs/ComponentId|The ID of the child component.',\n            ),\n          }),\n        )\n        .min(1)\n        .describe(\n          'An array of objects, where each object defines a tab with a title and a child component.',\n        ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ModalApi = {\n  name: 'Modal',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'trigger': ComponentIdSchema.describe(\n        'REF:#/$defs/ComponentId|The ID of the component that opens the modal when interacted with (e.g., a button).',\n      ),\n      'content': ComponentIdSchema.describe(\n        'REF:#/$defs/ComponentId|The ID of the component to be displayed inside the modal.',\n      ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const DividerApi = {\n  name: 'Divider',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'axis': z\n        .enum(['horizontal', 'vertical'])\n        .default('horizontal')\n        .describe('The orientation of the divider.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ButtonApi = {\n  name: 'Button',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'child': ComponentIdSchema.describe(\n        \"REF:#/$defs/ComponentId|The ID of the child component. Use a 'Text' component for a labeled button. Only use an 'Icon' if the requirements explicitly ask for an icon-only button.\",\n      ),\n      'variant': z\n        .enum(['default', 'primary', 'borderless'])\n        .default('default')\n        .describe(\n          \"A hint for the button style. If omitted, a default button style is used. 'primary' indicates this is the main call-to-action button. 'borderless' means the button has no visual border or background, making its child content appear like a clickable link.\",\n        )\n        .optional(),\n      'action': ActionSchema.describe('REF:#/$defs/Action'),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const TextFieldApi = {\n  name: 'TextField',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'label': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The text label for the input field.',\n      ),\n      'value': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The value of the text field.',\n      ).optional(),\n      'variant': z\n        .enum(['longText', 'number', 'shortText', 'obscured'])\n        .default('shortText')\n        .describe('The type of input field to display.')\n        .optional(),\n      'validationRegexp': z\n        .string()\n        .describe('A regular expression used for client-side validation of the input.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const CheckBoxApi = {\n  name: 'CheckBox',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'label': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The text to display next to the checkbox.',\n      ),\n      'value': DynamicBooleanSchema.describe(\n        'REF:#/$defs/DynamicBoolean|The current state of the checkbox (true for checked, false for unchecked).',\n      ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const ChoicePickerApi = {\n  name: 'ChoicePicker',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'label': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The label for the group of options.',\n      ).optional(),\n      'variant': z\n        .enum(['multipleSelection', 'mutuallyExclusive'])\n        .default('mutuallyExclusive')\n        .describe('A hint for how the choice picker should be displayed and behave.')\n        .optional(),\n      'options': z\n        .array(\n          z.object({\n            'label': DynamicStringSchema.describe(\n              'REF:#/$defs/DynamicString|The text to display for this option.',\n            ),\n            'value': z.string().describe('The stable value associated with this option.'),\n          }),\n        )\n        .describe('The list of available options to choose from.'),\n      'value': DynamicStringListSchema.describe(\n        'REF:#/$defs/DynamicStringList|The list of currently selected values. This should be bound to a string array in the data model.',\n      ),\n      'displayStyle': z\n        .enum(['checkbox', 'chips'])\n        .default('checkbox')\n        .describe('The display style of the component.')\n        .optional(),\n      'filterable': z\n        .boolean()\n        .default(false)\n        .describe('If true, displays a search input to filter the options.')\n        .optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const SliderApi = {\n  name: 'Slider',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'label': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The label for the slider.',\n      ).optional(),\n      'min': z.number().default(0).describe('The minimum value of the slider.').optional(),\n      'max': z.number().describe('The maximum value of the slider.'),\n      'value': DynamicNumberSchema.describe(\n        'REF:#/$defs/DynamicNumber|The current value of the slider.',\n      ),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const DateTimeInputApi = {\n  name: 'DateTimeInput',\n  schema: z\n    .object({\n      'accessibility': AccessibilityAttributesSchema.describe(\n        'REF:#/$defs/AccessibilityAttributes',\n      ).optional(),\n      'weight': z\n        .number()\n        .describe(\n          \"The relative weight of this component within a Row or Column. This is similar to the CSS 'flex-grow' property. Note: this may ONLY be set when the component is a direct descendant of a Row or Column.\",\n        )\n        .optional(),\n      'checks': z\n        .array(CheckRuleSchema)\n        .describe(\n          'A list of checks to perform. These are function calls that must return a boolean indicating validity.',\n        )\n        .optional(),\n      'value': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The selected date and/or time value in ISO 8601 format. If not yet set, initialize with an empty string.',\n      ),\n      'enableDate': z\n        .boolean()\n        .default(false)\n        .describe('If true, allows the user to select a date.')\n        .optional(),\n      'enableTime': z\n        .boolean()\n        .default(false)\n        .describe('If true, allows the user to select a time.')\n        .optional(),\n      'min': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The minimum allowed date/time in ISO 8601 format.',\n      ).optional(),\n      'max': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The maximum allowed date/time in ISO 8601 format.',\n      ).optional(),\n      'label': DynamicStringSchema.describe(\n        'REF:#/$defs/DynamicString|The text label for the input field.',\n      ).optional(),\n    })\n    .strict(),\n} satisfies ComponentApi;\n\nexport const BASIC_COMPONENTS: ComponentApi[] = [\n  TextApi,\n  ImageApi,\n  IconApi,\n  VideoApi,\n  AudioPlayerApi,\n  RowApi,\n  ColumnApi,\n  ListApi,\n  CardApi,\n  TabsApi,\n  ModalApi,\n  DividerApi,\n  ButtonApi,\n  TextFieldApi,\n  CheckBoxApi,\n  ChoicePickerApi,\n  SliderApi,\n  DateTimeInputApi,\n];\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The actual CSS markup of the default A2UI theme.\n *\n * This should be only variable definitions, so they can pierce into the\n * shadow DOM of components.\n *\n * It uses `:where()` to ensure zero specificity, allowing page styles to\n * override these defaults as needed without having to deal with specificity.\n *\n * By default, the theme follows the user's `color-scheme` preference, but\n * developers can force either the light/dark variants using the `a2ui-light`\n * or `a2ui-dark` classes on the root element of their app.\n */\nconst DEFAULT_CSS = `\n  :where(:root) {\n    color-scheme: light dark;\n  }\n\n  :where(.a2ui-dark) {\n    color-scheme: dark;\n  }\n\n  :where(.a2ui-light) {\n    color-scheme: light;\n  }\n\n  :where(:root), :where(.a2ui-dark), :where(.a2ui-light) {\n    --a2ui-color-background: light-dark(#eee, #111);\n    --a2ui-color-on-background: light-dark(#333, #eee);\n\n    --a2ui-color-surface: light-dark(\n      color-mix(in oklab, var(--a2ui-color-background) 85%, white),\n      color-mix(in oklab, var(--a2ui-color-background) 95%, white)\n    );\n    --a2ui-color-on-surface: light-dark(#333, #eee);\n\n    --a2ui-color-primary: #17e;\n    --a2ui-color-primary-light: ${computeColorVariant('light', {colorVar: '--a2ui-color-primary'})};\n    --a2ui-color-primary-dark: ${computeColorVariant('dark', {colorVar: '--a2ui-color-primary'})};\n    --a2ui-color-primary-hover: ${computeColorVariant('hover', {darkVar: '--a2ui-color-primary-dark', lightVar: '--a2ui-color-primary-light'})};\n    --a2ui-color-on-primary: #fff;\n\n    --a2ui-color-secondary: light-dark(#ddd, #333);\n    --a2ui-color-secondary-light: ${computeColorVariant('light', {colorVar: '--a2ui-color-secondary'})};\n    --a2ui-color-secondary-dark: ${computeColorVariant('dark', {colorVar: '--a2ui-color-secondary', percentage: 95})};\n    --a2ui-color-secondary-hover: ${computeColorVariant('hover', {darkVar: '--a2ui-color-secondary-dark', lightVar: '--a2ui-color-secondary-light'})};\n    --a2ui-color-on-secondary: light-dark(#333, #eee);\n\n    --a2ui-border-radius: 0.25rem;\n    --a2ui-color-border: light-dark(#ccc, #444);\n    --a2ui-border-width: 1px;\n    --a2ui-border: 1px solid var(--a2ui-color-border, #ccc);\n\n    --a2ui-font-family-title: inherit;\n    --a2ui-font-family-monospace: monospace;\n    --a2ui-color-input: light-dark(#fff, #2a2a2a);\n    --a2ui-color-on-input: light-dark(#333, #eee);\n\n    --a2ui-grid-base: 0.5rem;\n    --a2ui-spacing-xs: calc(var(--a2ui-spacing-s) / 2);\n    --a2ui-spacing-s: calc(var(--a2ui-spacing-m) / 2);\n    --a2ui-spacing-m: var(--a2ui-grid-base);\n    --a2ui-spacing-l: calc(var(--a2ui-spacing-m) * 2);\n    --a2ui-spacing-xl: calc(var(--a2ui-spacing-l) * 2);\n\n    --a2ui-font-size: 1rem;\n    --a2ui-font-scale: 1.2;\n    --a2ui-font-size-xs: calc(var(--a2ui-font-size-s) / var(--a2ui-font-scale));\n    --a2ui-font-size-s: calc(var(--a2ui-font-size-m) / var(--a2ui-font-scale));\n    --a2ui-font-size-m: var(--a2ui-font-size);\n    --a2ui-font-size-l: calc(var(--a2ui-font-size-m) * var(--a2ui-font-scale));\n    --a2ui-font-size-xl: calc(var(--a2ui-font-size-l) * var(--a2ui-font-scale));\n    --a2ui-font-size-2xl: calc(var(--a2ui-font-size-xl) * var(--a2ui-font-scale));\n\n    --a2ui-line-height-headings: 1.2;\n    --a2ui-line-height-body: 1.5;\n  }\n`;\n\n/**\n * Caches the default stylesheet so it is only created once.\n */\nlet defaultStyleSheet: CSSStyleSheet | undefined;\n\n/**\n * Retrieves the default CSSStyleSheet for A2UI components.\n *\n * If the stylesheet doesn't exist, it creates and initializes one with default\n * theme variables from the DEFAULT_CSS string.\n *\n * @returns The default CSSStyleSheet used by A2UI.\n */\nfunction getDefaultStyleSheet(): CSSStyleSheet {\n  if (!defaultStyleSheet) {\n    defaultStyleSheet = new CSSStyleSheet();\n    defaultStyleSheet.replaceSync(DEFAULT_CSS);\n  }\n  return defaultStyleSheet;\n}\n\n/**\n * Injects CSS variables for the A2UI basic catalog into the document stylesheet collection.\n *\n * This method is used by the A2UI-provided basic catalogs of each renderer\n * so design token values can be shared across all of them.\n *\n * It is only meant to be used by the basic catalog implementations provided\n * by `@a2ui/lit`, `@a2ui/angular` and `@a2ui/react`, and should not be\n * considered as part of the A2UI spec. This package is just a convenient\n * location for it.\n *\n * Users may redefine the values of the CSS variables exposed in the default\n * stylesheet above (and the specific ones exposed by each basic catalog\n * package) to customize the appearance of the items of the basic catalog.\n */\nexport function injectBasicCatalogStyles(targetRoot?: Document | ShadowRoot) {\n  if (typeof document === 'undefined') return;\n  const sheet = getDefaultStyleSheet();\n  const docSheets = typeof document !== 'undefined' ? (document as any).adoptedStyleSheets : null;\n  if (docSheets && typeof docSheets.includes === 'function' && !docSheets.includes(sheet)) {\n    try {\n      (document as any).adoptedStyleSheets = [...docSheets, sheet];\n    } catch {\n      // Fallback\n    }\n  }\n  if (targetRoot && targetRoot !== document) {\n    const targetSheets = (targetRoot as any).adoptedStyleSheets;\n    if (\n      targetSheets &&\n      typeof targetSheets.includes === 'function' &&\n      !targetSheets.includes(sheet)\n    ) {\n      try {\n        (targetRoot as any).adoptedStyleSheets = [...targetSheets, sheet];\n      } catch {\n        // Fallback\n      }\n    }\n  }\n}\n\n/**\n * Options for computing light and dark color variants.\n */\nexport interface ColorVariantLightDarkOptions {\n  /** The CSS variable name of the base color (e.g., '--a2ui-color-primary'). */\n  colorVar: string;\n  /** The percentage of the base color to retain in the mix (default 85). */\n  percentage?: number;\n  /** The color to mix with (default 'white' for light, 'black' for dark). */\n  mixColor?: string;\n}\n\n/**\n * Options for computing hover color variants using light-dark().\n */\nexport interface ColorVariantHoverOptions {\n  /** The CSS variable name of the dark variant. */\n  darkVar: string;\n  /** The CSS variable name of the light variant. */\n  lightVar: string;\n}\n\n/**\n * Computes the CSS formula for light or dark variants of a base color.\n *\n * @param type The variant type ('light' | 'dark').\n * @param options Options containing base color variable and optional percentage.\n * @returns CSS `color-mix` formula string.\n */\nexport function computeColorVariant(\n  type: 'light' | 'dark',\n  options: ColorVariantLightDarkOptions,\n): string;\n\n/**\n * Computes the CSS formula for hover variants of a color using `light-dark()`.\n *\n * @param type The variant type ('hover').\n * @param options Options containing dark and light variant variable names.\n * @returns CSS `light-dark` formula string.\n */\nexport function computeColorVariant(type: 'hover', options: ColorVariantHoverOptions): string;\n\n/**\n * Computes the CSS formula for light, dark, or hover variants of a color.\n *\n * @param type The variant type ('light', 'dark', 'hover').\n * @param options Options containing variable names, percentages, and optional mix color.\n * @returns The CSS formula string.\n */\nexport function computeColorVariant(\n  type: 'light' | 'dark' | 'hover',\n  options: ColorVariantLightDarkOptions | ColorVariantHoverOptions,\n): string {\n  switch (type) {\n    case 'light': {\n      const opt = options as ColorVariantLightDarkOptions;\n      return `color-mix(in oklab, var(${opt.colorVar}) ${opt.percentage ?? 85}%, ${opt.mixColor ?? 'white'})`;\n    }\n    case 'dark': {\n      const opt = options as ColorVariantLightDarkOptions;\n      return `color-mix(in oklab, var(${opt.colorVar}) ${opt.percentage ?? 85}%, ${opt.mixColor ?? 'black'})`;\n    }\n    case 'hover': {\n      const opt = options as ColorVariantHoverOptions;\n      return `light-dark(var(${opt.darkVar}), var(${opt.lightVar}))`;\n    }\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {z} from 'zod';\nimport validateColor from 'validate-color';\n\nexport const HEX_COLOR_REGEX = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n\n/**\n * Validates whether a given string is a valid CSS color.\n *\n * Uses the web platform `CSS.supports('color', color)` API when available in\n * browser environments, and falls back to standard CSS color syntax validation\n * (via validate-color) in server-side / Node.js environments.\n */\nexport function isValidCssColor(color: unknown): boolean {\n  if (typeof color !== 'string' || !color.trim()) {\n    return false;\n  }\n  const trimmed = color.trim();\n  if (typeof CSS !== 'undefined' && typeof CSS.supports === 'function') {\n    return CSS.supports('color', trimmed);\n  }\n  const fn = typeof validateColor === 'function' ? validateColor : (validateColor as any)?.default;\n  return typeof fn === 'function' ? fn(trimmed) : false;\n}\n\n/**\n * Zod schema defining the theme configuration for the basic catalog.\n * Conforms to `specification/v0_9/catalogs/basic/catalog.json#/$defs/theme`.\n */\nexport const BasicCatalogThemeSchema = z\n  .object({\n    primaryColor: z\n      .string()\n      .refine(\n        val => isValidCssColor(val),\n        \"primaryColor must be a valid CSS color (e.g. '#00BFFF', '#17e', 'red', 'rgb(255, 0, 0)')\",\n      )\n      .optional()\n      .describe(\n        \"The primary brand color used for highlights (e.g., primary buttons, active borders). Renderers may generate variants of this color for different contexts. Format: Hexadecimal code, named color, or functional notation (e.g., '#00BFFF', 'red', 'rgb(255, 0, 0)').\",\n      ),\n    iconUrl: z\n      .string()\n      .optional()\n      .describe(\n        'A URL for an image that identifies the agent or tool associated with the surface.',\n      ),\n    agentDisplayName: z\n      .string()\n      .optional()\n      .describe(\n        'Text to be displayed next to the surface to identify the agent or tool that created it.',\n      ),\n  })\n  .passthrough();\n\nexport type BasicCatalogTheme = z.infer<typeof BasicCatalogThemeSchema>;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// AUTO-GENERATED FILE - DO NOT EDIT MANUALLY\n// Generated from specification/ catalogs via scripts/generate-catalog-schemas.mjs\nimport {z} from 'zod';\nimport {\n  DynamicBooleanSchema,\n  DynamicNumberSchema,\n  DynamicStringSchema,\n  DynamicValueSchema,\n} from '../../schema/common-types.js';\n\n/**\n * Checks that the value is not null, undefined, or empty.\n */\nexport const RequiredApi = {\n  name: 'required' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': z\n      .any()\n      .refine(v => v !== undefined, 'Required')\n      .describe('The value to check.'),\n  }),\n};\n\n/**\n * Checks that the value matches a regular expression string.\n */\nexport const RegexApi = {\n  name: 'regex' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': DynamicStringSchema.describe('REF:#/$defs/DynamicString'),\n    'pattern': z.string().describe('The regex pattern to match against.'),\n  }),\n};\n\n/**\n * Checks string length constraints.\n */\nexport const LengthApi = {\n  name: 'length' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': DynamicStringSchema.describe('REF:#/$defs/DynamicString'),\n    'min': z.number().int().describe('The minimum allowed length.').optional(),\n    'max': z.number().int().describe('The maximum allowed length.').optional(),\n  }),\n};\n\n/**\n * Checks numeric range constraints.\n */\nexport const NumericApi = {\n  name: 'numeric' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': DynamicNumberSchema.describe('REF:#/$defs/DynamicNumber'),\n    'min': z.number().describe('The minimum allowed value.').optional(),\n    'max': z.number().describe('The maximum allowed value.').optional(),\n  }),\n};\n\n/**\n * Checks that the value is a valid email address.\n */\nexport const EmailApi = {\n  name: 'email' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': DynamicStringSchema.describe('REF:#/$defs/DynamicString'),\n  }),\n};\n\n/**\n * Performs string interpolation of data model values and other functions in the catalog functions list and returns the resulting string. The value string can contain interpolated expressions in the `${expression}` format. Supported expression types include: JSON Pointer paths to the data model (e.g., `${/absolute/path}` or `${relative/path}`), and client-side function calls (e.g., `${now()}`). Function arguments must be named (e.g., `${formatDate(value:${/currentDate}, format:'MM-dd')}`). To include a literal `${` sequence, escape it as `\\${`.\n */\nexport const FormatStringApi = {\n  name: 'formatString' as const,\n  returnType: 'string' as const,\n  schema: z.object({\n    'value': DynamicStringSchema.describe('REF:#/$defs/DynamicString'),\n  }),\n};\n\n/**\n * Formats a number with the specified grouping and decimal precision.\n */\nexport const FormatNumberApi = {\n  name: 'formatNumber' as const,\n  returnType: 'string' as const,\n  schema: z.object({\n    'value': DynamicNumberSchema.describe('REF:#/$defs/DynamicNumber|The number to format.'),\n    'decimals': DynamicNumberSchema.describe(\n      'REF:#/$defs/DynamicNumber|Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale.',\n    ).optional(),\n    'grouping': DynamicBooleanSchema.describe(\n      \"REF:#/$defs/DynamicBoolean|Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true.\",\n    ).optional(),\n  }),\n};\n\n/**\n * Formats a number as a currency string.\n */\nexport const FormatCurrencyApi = {\n  name: 'formatCurrency' as const,\n  returnType: 'string' as const,\n  schema: z.object({\n    'value': DynamicNumberSchema.describe('REF:#/$defs/DynamicNumber|The monetary amount.'),\n    'currency': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|The ISO 4217 currency code (e.g., 'USD', 'EUR').\",\n    ),\n    'decimals': DynamicNumberSchema.describe(\n      'REF:#/$defs/DynamicNumber|Optional. The number of decimal places to show. Defaults to 0 or 2 depending on locale.',\n    ).optional(),\n    'grouping': DynamicBooleanSchema.describe(\n      \"REF:#/$defs/DynamicBoolean|Optional. If true, uses locale-specific grouping separators (e.g. '1,000'). If false, returns raw digits (e.g. '1000'). Defaults to true.\",\n    ).optional(),\n  }),\n};\n\n/**\n * Formats a timestamp into a string using a pattern.\n */\nexport const FormatDateApi = {\n  name: 'formatDate' as const,\n  returnType: 'string' as const,\n  schema: z.object({\n    'value': DynamicValueSchema.describe('REF:#/$defs/DynamicValue|The date to format.'),\n    'format': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|A Unicode TR35 date pattern string.\\n\\nToken Reference:\\n- Year: 'yy' (26), 'yyyy' (2026)\\n- Month: 'M' (1), 'MM' (01), 'MMM' (Jan), 'MMMM' (January)\\n- Day: 'd' (1), 'dd' (01), 'E' (Tue), 'EEEE' (Tuesday)\\n- Hour (12h): 'h' (1-12), 'hh' (01-12) - requires 'a' for AM/PM\\n- Hour (24h): 'H' (0-23), 'HH' (00-23) - Military Time\\n- Minute: 'mm' (00-59)\\n- Second: 'ss' (00-59)\\n- Period: 'a' (AM/PM)\\n\\nExamples:\\n- 'MMM dd, yyyy' -> 'Jan 16, 2026'\\n- 'HH:mm' -> '14:30' (Military)\\n- 'h:mm a' -> '2:30 PM'\\n- 'EEEE, d MMMM' -> 'Friday, 16 January'\",\n    ),\n  }),\n};\n\n/**\n * Returns a localized string based on the Common Locale Data Repository (CLDR) plural category of the count (zero, one, two, few, many, other). Requires an 'other' fallback. For English, just use 'one' and 'other'.\n */\nexport const PluralizeApi = {\n  name: 'pluralize' as const,\n  returnType: 'string' as const,\n  schema: z.object({\n    'value': DynamicNumberSchema.describe(\n      'REF:#/$defs/DynamicNumber|The numeric value used to determine the plural category.',\n    ),\n    'zero': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|String for the 'zero' category (e.g., 0 items).\",\n    ).optional(),\n    'one': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|String for the 'one' category (e.g., 1 item).\",\n    ).optional(),\n    'two': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|String for the 'two' category (used in Arabic, Welsh, etc.).\",\n    ).optional(),\n    'few': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|String for the 'few' category (e.g., small groups in Slavic languages).\",\n    ).optional(),\n    'many': DynamicStringSchema.describe(\n      \"REF:#/$defs/DynamicString|String for the 'many' category (e.g., large groups in various languages).\",\n    ).optional(),\n    'other': DynamicStringSchema.describe(\n      'REF:#/$defs/DynamicString|The default/fallback string (used for general plural cases).',\n    ),\n  }),\n};\n\n/**\n * Opens the specified URL in a browser or handler. This function has no return value.\n */\nexport const OpenUrlApi = {\n  name: 'openUrl' as const,\n  returnType: 'void' as const,\n  schema: z.object({\n    'url': z.string().describe('The URL to open.'),\n  }),\n};\n\n/**\n * Performs a logical AND operation on a list of boolean values.\n */\nexport const AndApi = {\n  name: 'and' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'values': z\n      .array(DynamicBooleanSchema)\n      .min(2)\n      .describe('The list of boolean values to evaluate.'),\n  }),\n};\n\n/**\n * Performs a logical OR operation on a list of boolean values.\n */\nexport const OrApi = {\n  name: 'or' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'values': z\n      .array(DynamicBooleanSchema)\n      .min(2)\n      .describe('The list of boolean values to evaluate.'),\n  }),\n};\n\n/**\n * Performs a logical NOT operation on a boolean value.\n */\nexport const NotApi = {\n  name: 'not' as const,\n  returnType: 'boolean' as const,\n  schema: z.object({\n    'value': DynamicBooleanSchema.describe(\n      'REF:#/$defs/DynamicBoolean|The boolean value to negate.',\n    ),\n  }),\n};\n\nexport const BASIC_FUNCTION_APIS = [\n  RequiredApi,\n  RegexApi,\n  LengthApi,\n  NumericApi,\n  EmailApi,\n  FormatStringApi,\n  FormatNumberApi,\n  FormatCurrencyApi,\n  FormatDateApi,\n  PluralizeApi,\n  OpenUrlApi,\n  AndApi,\n  OrApi,\n  NotApi,\n];\n\nexport const V09_SPEC_FUNCTION_APIS = BASIC_FUNCTION_APIS;\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {DynamicValue} from '../types/common-types.js';\nimport {A2uiExpressionError} from '../errors.js';\n\n/**\n * The maximum allowed length for expression template strings to prevent resource exhaustion (CWE-400),\n * measured in UTF-16 code units (i.e. JavaScript `string.length`, not characters and not bytes).\n */\nexport const MAX_EXPRESSION_TEMPLATE_LENGTH = 10_000;\n\n/**\n * The maximum allowed number of parts in an expression template to prevent resource exhaustion (CWE-400).\n *\n * A \"part\" is an individual segment produced when parsing the template string: each interpolated\n * expression (`${...}`), escaped interpolation delimiter (`\\${`), or literal text span between\n * interpolations that forms an element in the parsed output array.\n */\nexport const MAX_EXPRESSION_PARTS = 1_000;\n\n/**\n * Parses A2UI expressions, supporting string interpolation and function calls.\n *\n * Converts strings with `${...}` placeholders into arrays of `DynamicValue` objects.\n * Supports literals (strings, numbers, booleans), path-based data bindings, and\n * nested function calls with named arguments.\n */\nexport class ExpressionParser {\n  /**\n   * The maximum allowed recursion depth for nested expressions, which bounds\n   * the work a payload can demand of the parser and keeps it off the stack\n   * limit.\n   *\n   * Every engine uses the same number: `ExpressionParser.MAX_DEPTH` in Python\n   * and `ExpressionParser.maxDepth` in Swift. They must agree, or an\n   * expression one engine accepts the other rejects.\n   */\n  public static readonly MAX_DEPTH = 100;\n\n  /**\n   * Parses an input string into an array of DynamicValues.\n   *\n   * If the input contains no interpolation placeholders, returns the raw string as a single literal.\n   *\n   * @param input Raw string to parse.\n   * @param depth Current recursion depth.\n   * @returns An array of parsed dynamic values and literals.\n   */\n  public parse(input: string, depth = 0): DynamicValue[] {\n    if (depth > ExpressionParser.MAX_DEPTH) {\n      throw new A2uiExpressionError('Max recursion depth reached in parse');\n    }\n    if (input && input.length > MAX_EXPRESSION_TEMPLATE_LENGTH) {\n      throw new A2uiExpressionError(\n        `Expression template length (${input.length}) exceeds maximum limit (${MAX_EXPRESSION_TEMPLATE_LENGTH})`,\n      );\n    }\n    if (!input) {\n      return [];\n    }\n    if (!input.includes('${')) {\n      return [input];\n    }\n\n    const parts: DynamicValue[] = [];\n    const scanner = new Scanner(input);\n\n    while (!scanner.isAtEnd()) {\n      if (parts.length >= MAX_EXPRESSION_PARTS) {\n        throw new A2uiExpressionError(\n          `Expression parts count exceeds maximum limit (${MAX_EXPRESSION_PARTS})`,\n        );\n      }\n      if (scanner.matches('${')) {\n        scanner.advance(2);\n        const content = this.extractInterpolationContent(scanner);\n        const parsed = this.parseExpression(content, depth + 1);\n        if (parsed !== null) {\n          parts.push(parsed);\n        }\n      } else if (scanner.peek() === '\\\\' && scanner.peek(1) === '$' && scanner.peek(2) === '{') {\n        scanner.advance();\n        parts.push('${');\n        scanner.advance(2);\n      } else {\n        const start = scanner.pos;\n        while (!scanner.isAtEnd()) {\n          if (scanner.matches('${')) {\n            break;\n          }\n          if (scanner.peek() === '\\\\' && scanner.peek(1) === '$' && scanner.peek(2) === '{') {\n            break;\n          }\n          scanner.advance();\n        }\n        parts.push(scanner.input.substring(start, scanner.pos));\n      }\n    }\n    return parts.filter(p => p !== null && p !== '') as DynamicValue[];\n  }\n\n  private extractInterpolationContent(scanner: Scanner): string {\n    const start = scanner.pos;\n    let braceBalance = 1;\n\n    while (!scanner.isAtEnd() && braceBalance > 0) {\n      const char = scanner.advance();\n      if (char === '{') {\n        braceBalance++;\n      } else if (char === '}') {\n        braceBalance--;\n      } else if (char === \"'\" || char === '\"') {\n        const quote = char;\n        while (!scanner.isAtEnd()) {\n          const c = scanner.advance();\n          if (c === '\\\\') {\n            scanner.advance();\n          } else if (c === quote) {\n            break;\n          }\n        }\n      }\n    }\n\n    if (braceBalance > 0) {\n      throw new A2uiExpressionError(\"Unclosed interpolation: missing '}'\");\n    }\n\n    return scanner.input.substring(start, scanner.pos - 1);\n  }\n\n  /**\n   * Parses a single expression string into a DynamicValue.\n   *\n   * Unlike `parse()`, which handles mixed literal text and interpolations,\n   * this assumes the entire string is a single expression (e.g., as found inside `${...}`).\n   *\n   * @param expr The expression string to parse.\n   * @param depth The current recursion depth.\n   * @returns The resolved DynamicValue.\n   */\n  public parseExpression(expr: string, depth = 0): DynamicValue {\n    expr = expr.trim();\n    if (!expr) return '';\n\n    const scanner = new Scanner(expr);\n    const result = this.parseExpressionInternal(scanner, depth);\n    if (!scanner.isAtEnd()) {\n      throw new A2uiExpressionError(\n        `Unexpected characters at end of expression: '${scanner.input.substring(scanner.pos)}'`,\n      );\n    }\n    return result;\n  }\n\n  private parseExpressionInternal(scanner: Scanner, depth: number): DynamicValue {\n    // Both recursive paths pass through here: interpolations nested inside an interpolation,\n    // and function-call arguments that are themselves expressions. Checking here counts both.\n    if (depth > ExpressionParser.MAX_DEPTH) {\n      throw new A2uiExpressionError('Max recursion depth reached in parse');\n    }\n    scanner.skipWhitespace();\n    if (scanner.isAtEnd()) return '';\n\n    // 0. Nested Interpolation (Block)\n    if (scanner.matches('${')) {\n      scanner.advance(2);\n      const content = this.extractInterpolationContent(scanner);\n      return this.parseExpression(content, depth + 1);\n    }\n\n    // 1. Literals\n    if (scanner.matchesString(\"'\") || scanner.matchesString('\"')) {\n      return this.parseStringLiteral(scanner);\n    }\n    if (\n      this.isDigit(scanner.peek()) ||\n      ((scanner.peek() === '-' || scanner.peek() === '+') && this.isDigit(scanner.peek(1)))\n    ) {\n      return this.parseNumberLiteral(scanner);\n    }\n    if (scanner.matchesKeyword('true')) return true;\n    if (scanner.matchesKeyword('false')) return false;\n    if (scanner.matchesKeyword('null')) return '';\n\n    // 2. Identifiers (Function calls or Path starts)\n    const token = this.scanPathOrIdentifier(scanner);\n    scanner.skipWhitespace();\n\n    if (scanner.peek() === '(') {\n      return this.parseFunctionCall(token, scanner, depth);\n    } else {\n      if (!token) {\n        return '';\n      }\n      return {path: token};\n    }\n  }\n\n  private scanPathOrIdentifier(scanner: Scanner): string {\n    const start = scanner.pos;\n    while (!scanner.isAtEnd()) {\n      const c = scanner.peek();\n      if (this.isAlnum(c) || c === '/' || c === '.' || c === '_' || c === '-') {\n        scanner.advance();\n      } else {\n        break;\n      }\n    }\n    return scanner.input.substring(start, scanner.pos);\n  }\n\n  private parseFunctionCall(\n    funcName: string,\n    scanner: Scanner,\n    depth: number,\n  ): {call: string; args: Record<string, unknown>; returnType: 'any'} {\n    scanner.match('(');\n    scanner.skipWhitespace();\n\n    const args: Record<string, unknown> = {};\n\n    while (!scanner.isAtEnd() && scanner.peek() !== ')') {\n      const argName = this.scanIdentifier(scanner);\n      scanner.skipWhitespace();\n      if (!scanner.match(':')) {\n        throw new A2uiExpressionError(\n          `Expected ':' after argument name '${argName}' in function '${funcName}'`,\n        );\n      }\n      scanner.skipWhitespace();\n\n      args[argName] = this.parseExpressionInternal(scanner, depth + 1);\n\n      scanner.skipWhitespace();\n      if (scanner.peek() === ',') {\n        scanner.advance();\n        scanner.skipWhitespace();\n      }\n    }\n\n    if (!scanner.match(')')) {\n      throw new A2uiExpressionError(`Expected ')' after function arguments for '${funcName}'`);\n    }\n\n    return {call: funcName, args, returnType: 'any'};\n  }\n\n  private scanIdentifier(scanner: Scanner): string {\n    const start = scanner.pos;\n    while (!scanner.isAtEnd() && (this.isAlnum(scanner.peek()) || scanner.peek() === '_')) {\n      scanner.advance();\n    }\n    return scanner.input.substring(start, scanner.pos);\n  }\n\n  private parseStringLiteral(scanner: Scanner): string {\n    const quote = scanner.advance();\n    let result = '';\n    while (!scanner.isAtEnd()) {\n      const c = scanner.advance();\n      if (c === '\\\\') {\n        const next = scanner.advance();\n        if (next === 'n') result += '\\n';\n        else if (next === 't') result += '\\t';\n        else if (next === 'r') result += '\\r';\n        else result += next;\n      } else if (c === quote) {\n        break;\n      } else {\n        result += c;\n      }\n    }\n    return result;\n  }\n\n  private parseNumberLiteral(scanner: Scanner): number {\n    const start = scanner.pos;\n    if (scanner.peek() === '-' || scanner.peek() === '+') {\n      scanner.advance();\n    }\n    while (!scanner.isAtEnd() && (this.isDigit(scanner.peek()) || scanner.peek() === '.')) {\n      scanner.advance();\n    }\n    if (!scanner.isAtEnd() && (scanner.peek() === 'e' || scanner.peek() === 'E')) {\n      scanner.advance();\n      if (!scanner.isAtEnd() && (scanner.peek() === '+' || scanner.peek() === '-')) {\n        scanner.advance();\n      }\n      while (!scanner.isAtEnd() && this.isDigit(scanner.peek())) {\n        scanner.advance();\n      }\n    }\n    const text = scanner.input.substring(start, scanner.pos);\n    if (!/^[+-]?\\d+\\.?\\d*(?:[eE][+-]?\\d+)?$/.test(text)) {\n      throw new A2uiExpressionError(`Invalid number literal: '${text}'`);\n    }\n    return Number(text);\n  }\n\n  private isAlnum(c: string): boolean {\n    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9');\n  }\n\n  private isDigit(c: string): boolean {\n    return c >= '0' && c <= '9';\n  }\n}\n\nclass Scanner {\n  pos = 0;\n  constructor(public input: string) {}\n\n  isAtEnd(): boolean {\n    return this.pos >= this.input.length;\n  }\n\n  peek(offset = 0): string {\n    if (this.pos + offset >= this.input.length) return '\\0';\n    return this.input[this.pos + offset];\n  }\n\n  advance(count = 1): string {\n    const char = this.input.substring(this.pos, this.pos + count);\n    this.pos += count;\n    return char;\n  }\n\n  match(expected: string): boolean {\n    if (this.peek() === expected) {\n      this.advance();\n      return true;\n    }\n    return false;\n  }\n\n  matches(expected: string): boolean {\n    if (this.input.startsWith(expected, this.pos)) {\n      return true;\n    }\n    return false;\n  }\n\n  matchesString(expected: string): boolean {\n    return this.peek() === expected;\n  }\n\n  matchesKeyword(keyword: string): boolean {\n    if (this.input.startsWith(keyword, this.pos)) {\n      const next = this.peek(keyword.length);\n      if (!/[a-zA-Z0-9_]/.test(next)) {\n        this.advance(keyword.length);\n        return true;\n      }\n    }\n    return false;\n  }\n\n  skipWhitespace() {\n    while (!this.isAtEnd() && /\\s/.test(this.peek())) {\n      this.advance();\n    }\n  }\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Shared basic catalog function implementations and formatting helpers.\n *\n * Provides shared execution algorithms, caching layers, and implementation\n * factory functions consumed by all version-specific basic catalog definitions.\n */\n\nimport {ExpressionParser} from '../expressions/expression_parser.js';\nimport {computed, isSignal, getValue, Signal} from '../reactivity/signals.js';\nimport {createFunctionImplementation, FunctionImplementation} from '../catalog/types.js';\nimport {A2uiExpressionError} from '../errors.js';\nimport {DataContext} from '../resolution/data-context.js';\n\n/**\n * Default BCP 47 locale used when a catalog is built without an explicit one.\n *\n * Pinned to en-US so formatting output is consistent across machines.\n */\nexport const DEFAULT_LOCALE = 'en-US';\n\n/**\n * Resolves the locale tag a catalog was built with to one the formatters can use.\n *\n * Falls back to {@link DEFAULT_LOCALE} in three cases, each of which the Python\n * engine also falls back for:\n *\n * - No tag was supplied.\n * - The tag is malformed, such as `en_US`, which makes `Intl` throw a\n *   `RangeError` from every constructor it is handed to.\n * - The tag is well formed but no locale data matches it, such as `xx-YY`. Here\n *   `Intl` would silently format with the host's ambient locale, which this\n *   module promises never to depend on.\n *\n * @param locale Optional BCP 47 language tag.\n * @returns A tag `Intl` both accepts and has data for.\n */\nexport function resolveLocale(locale?: string): string {\n  if (!locale) return DEFAULT_LOCALE;\n  try {\n    return Intl.NumberFormat.supportedLocalesOf(locale).length > 0 ? locale : DEFAULT_LOCALE;\n  } catch {\n    return DEFAULT_LOCALE;\n  }\n}\n\n/** Standard validation result. */\nexport interface ValidationResult {\n  /** Whether validation passed. */\n  valid: boolean;\n  /** Explanatory message when validation failed. */\n  message?: string;\n}\n\n/**\n * Coerces a value to a string following protocol type conversion rules.\n *\n * - Numbers and booleans: standard string representation.\n * - `null` and `undefined`: an empty string `\"\"`.\n * - Objects and arrays: stringified as compact JSON.\n *\n * @param value The value to coerce.\n * @returns The string representation.\n */\nexport function coerceToString(value: unknown): string {\n  if (value === null || value === undefined) return '';\n  if (typeof value === 'object') {\n    try {\n      return JSON.stringify(value) ?? String(value);\n    } catch {\n      return String(value);\n    }\n  }\n  return String(value);\n}\n\n// ---------------------------------------------------------------------------\n// Validation Execution Helpers\n// ---------------------------------------------------------------------------\n\n/** Validates that a value is present and non-empty. */\nexport function validateRequired(val: unknown): ValidationResult {\n  let isValid = true;\n  if (val === null || val === undefined) isValid = false;\n  else if (typeof val === 'string' && val === '') isValid = false;\n  else if (Array.isArray(val) && val.length === 0) isValid = false;\n  return {\n    valid: isValid,\n    ...(isValid ? {} : {message: 'This field is required.'}),\n  };\n}\n\n/** Validates that a string value matches a regular expression pattern. */\nexport function validateRegex(val: unknown, pattern: string): ValidationResult {\n  try {\n    const isValid = new RegExp(pattern).test(String(val ?? ''));\n    return {\n      valid: isValid,\n      ...(isValid ? {} : {message: 'Value does not match required pattern.'}),\n    };\n  } catch (e) {\n    throw new A2uiExpressionError(`Invalid regex pattern: ${pattern}`, 'regex', e);\n  }\n}\n\n/** Validates that string or array length falls within an optional range. */\nexport function validateLength(val: unknown, min?: number, max?: number): ValidationResult {\n  let len = 0;\n  if (typeof val === 'string' || Array.isArray(val)) {\n    len = val.length;\n  }\n  let isValid = true;\n  let message: string | undefined;\n\n  if (min !== undefined && !isNaN(min) && len < min) {\n    isValid = false;\n    message = `Minimum length is ${min}.`;\n  } else if (max !== undefined && !isNaN(max) && len > max) {\n    isValid = false;\n    message = `Maximum length is ${max}.`;\n  }\n\n  return {\n    valid: isValid,\n    ...(message ? {message} : {}),\n  };\n}\n\n/** Validates that a numeric value falls within an optional range. */\nexport function validateNumeric(val: unknown, min?: number, max?: number): ValidationResult {\n  const num = Number(val);\n  if (isNaN(num)) {\n    return {valid: false, message: 'Value must be a valid number.'};\n  }\n  let isValid = true;\n  let message: string | undefined;\n\n  if (min !== undefined && !isNaN(min) && num < min) {\n    isValid = false;\n    message = `Minimum value is ${min}.`;\n  } else if (max !== undefined && !isNaN(max) && num > max) {\n    isValid = false;\n    message = `Maximum value is ${max}.`;\n  }\n\n  return {\n    valid: isValid,\n    ...(message ? {message} : {}),\n  };\n}\n\nconst EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\n/** Validates that a string matches basic email address syntax. */\nexport function validateEmail(val: unknown): ValidationResult {\n  const isValid = typeof val === 'string' && EMAIL_REGEX.test(val);\n  return {\n    valid: isValid,\n    ...(isValid ? {} : {message: 'Must be a valid email address.'}),\n  };\n}\n\n// ---------------------------------------------------------------------------\n// Formatting Caching & Helpers\n// ---------------------------------------------------------------------------\n\nconst numberFormatCache = new Map<string, Intl.NumberFormat>();\n\nexport function getNumberFormat(\n  locale: string,\n  decimals?: number,\n  grouping?: boolean,\n): Intl.NumberFormat {\n  const key = `${locale}:${decimals ?? 'undef'}:${grouping ?? 'true'}`;\n  let formatter = numberFormatCache.get(key);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, {\n      minimumFractionDigits: decimals,\n      maximumFractionDigits: decimals,\n      useGrouping: grouping,\n    });\n    numberFormatCache.set(key, formatter);\n  }\n  return formatter;\n}\n\nconst currencyFormatCache = new Map<string, Intl.NumberFormat>();\n\nexport function getCurrencyFormat(\n  locale: string,\n  currency: string,\n  decimals?: number,\n  grouping?: boolean,\n): Intl.NumberFormat {\n  const key = `${locale}:${currency}:${decimals ?? 'undef'}:${grouping ?? 'true'}`;\n  let formatter = currencyFormatCache.get(key);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, {\n      style: 'currency',\n      currency,\n      minimumFractionDigits: decimals,\n      maximumFractionDigits: decimals,\n      useGrouping: grouping,\n    });\n    currencyFormatCache.set(key, formatter);\n  }\n  return formatter;\n}\n\n/**\n * An assigned code, formatted only to discover where the locale places a\n * currency. Its own symbol is never shown.\n */\nconst PLACEHOLDER_CURRENCY = 'USD';\n\nconst currencyCodeFormatCache = new Map<string, Intl.NumberFormat>();\n\n/**\n * Returns a formatter that renders the currency as its ISO code rather than as\n * a symbol, which makes the locale's placement and spacing observable through\n * `formatToParts`.\n */\nexport function getCurrencyCodeFormat(\n  locale: string,\n  decimals?: number,\n  grouping?: boolean,\n): Intl.NumberFormat {\n  const key = `${locale}:${decimals ?? 'undef'}:${grouping ?? 'true'}`;\n  let formatter = currencyCodeFormatCache.get(key);\n  if (!formatter) {\n    formatter = new Intl.NumberFormat(locale, {\n      style: 'currency',\n      currency: PLACEHOLDER_CURRENCY,\n      currencyDisplay: 'code',\n      minimumFractionDigits: decimals,\n      maximumFractionDigits: decimals,\n      useGrouping: grouping,\n    });\n    currencyCodeFormatCache.set(key, formatter);\n  }\n  return formatter;\n}\n\n/** Month and weekday names for one locale, indexed for `formatDate`. */\nexport interface DateNames {\n  /** Full month names, January first. */\n  monthsLong: string[];\n  /** Abbreviated month names, January first. */\n  monthsShort: string[];\n  /** Full weekday names, Monday first. */\n  weekdaysLong: string[];\n  /** Abbreviated weekday names, Monday first. */\n  weekdaysShort: string[];\n}\n\nconst dateNamesCache = new Map<string, DateNames>();\n\n/** Builds month and weekday name tables for a locale using `Intl.DateTimeFormat`. */\nexport function getDateNames(locale: string): DateNames {\n  let names = dateNamesCache.get(locale);\n  if (!names) {\n    const render = (options: Intl.DateTimeFormatOptions, dates: Date[]) => {\n      const formatter = new Intl.DateTimeFormat(locale, {...options, timeZone: 'UTC'});\n      return dates.map(d => formatter.format(d));\n    };\n    const months = Array.from({length: 12}, (_, i) => new Date(Date.UTC(2021, i, 15)));\n    const weekdays = Array.from({length: 7}, (_, i) => new Date(Date.UTC(2021, 2, 1 + i)));\n    names = {\n      monthsLong: render({month: 'long'}, months),\n      monthsShort: render({month: 'short'}, months),\n      weekdaysLong: render({weekday: 'long'}, weekdays),\n      weekdaysShort: render({weekday: 'short'}, weekdays),\n    };\n    dateNamesCache.set(locale, names);\n  }\n  return names;\n}\n\nexport const DATE_TOKENS = /yyyy|yy|MMMM|MMM|MM|M|EEEE|E|dd|d|HH|H|hh|h|mm|ss|a/g;\nexport const ISO_OFFSET = /(?:Z|[+-]\\d{2}:?\\d{2})$/;\n\n/**\n * Parses an ISO 8601 timestamp and shifts it so that UTC accessors report\n * the wall-clock fields the timestamp was written with.\n */\nexport function parseTimestamp(value: string): {shifted: Date; instant: Date} | null {\n  const hasOffset = ISO_OFFSET.test(value);\n  const instant = new Date(hasOffset ? value : `${value}Z`);\n  if (isNaN(instant.getTime())) return null;\n\n  let offsetMinutes = 0;\n  const match = /([+-])(\\d{2}):?(\\d{2})$/.exec(value);\n  if (match) {\n    const sign = match[1] === '-' ? -1 : 1;\n    offsetMinutes = sign * (Number(match[2]) * 60 + Number(match[3]));\n  }\n  return {shifted: new Date(instant.getTime() + offsetMinutes * 60_000), instant};\n}\n\nconst pluralRulesCache = new Map<string, Intl.PluralRules>();\n\nexport function getPluralRules(locale: string): Intl.PluralRules {\n  let rules = pluralRulesCache.get(locale);\n  if (!rules) {\n    rules = new Intl.PluralRules(locale);\n    pluralRulesCache.set(locale, rules);\n  }\n  return rules;\n}\n\n// ---------------------------------------------------------------------------\n// Execution Functions\n// ---------------------------------------------------------------------------\n\n/** Evaluates logical AND across an array of values. */\nexport function executeAnd(values: unknown[]): boolean {\n  return Array.isArray(values) ? values.every(v => !!v) : false;\n}\n\n/** Evaluates logical OR across an array of values. */\nexport function executeOr(values: unknown[]): boolean {\n  return Array.isArray(values) ? values.some(v => !!v) : false;\n}\n\n/** Evaluates logical NOT on a single value. */\nexport function executeNot(value: unknown): boolean {\n  return !value;\n}\n\n/** Formats a template string by resolving embedded expressions. */\nexport function executeFormatString(\n  template: string,\n  context: DataContext,\n): Signal<string> | string {\n  const parser = new ExpressionParser();\n  const parts = parser.parse(template);\n\n  if (parts.length === 0) return '';\n\n  const dynamicParts = parts.map(part => {\n    if (typeof part !== 'object' || part === null || Array.isArray(part)) {\n      return part;\n    }\n    return context.resolveSignal(part);\n  });\n\n  return computed(() => {\n    return dynamicParts.map(p => coerceToString(isSignal(p) ? getValue(p) : p)).join('');\n  });\n}\n\n/** Formats a number with configured precision and grouping. */\nexport function executeFormatNumber(\n  value: number,\n  decimals?: number,\n  grouping?: boolean,\n  locale: string = DEFAULT_LOCALE,\n): string {\n  if (isNaN(value)) return '';\n  return getNumberFormat(locale, decimals, grouping).format(value);\n}\n\n/** Formats a number as currency. */\nexport function executeFormatCurrency(\n  value: number,\n  currencyInput: string,\n  decimals: number = 2,\n  grouping?: boolean,\n  locale: string = DEFAULT_LOCALE,\n): string {\n  if (isNaN(value)) return '';\n  const currency = String(currencyInput).toUpperCase();\n  try {\n    return getCurrencyFormat(locale, currency, decimals, grouping).format(value);\n  } catch {\n    // Intl throws only for a malformed code, meaning one that is not three\n    // ASCII letters. A well-formed but unassigned code such as `XYZ` does\n    // not reach here; Intl accepts it and uses it as its own symbol.\n    //\n    // Babel throws for nothing, so the Python engine lays a malformed code\n    // out exactly as the locale's currency pattern dictates. Recover that\n    // same layout by formatting a placeholder currency as a code and\n    // substituting, which keeps the two engines byte-identical.\n    return getCurrencyCodeFormat(locale, decimals, grouping)\n      .formatToParts(value)\n      .map(part => (part.type === 'currency' ? currency : part.value))\n      .join('');\n  }\n}\n\n/** Formats a timestamp using TR35 pattern tokens, or emits an ISO timestamp. */\nexport function executeFormatDate(\n  value: unknown,\n  formatPattern: string = 'yyyy-MM-dd',\n  locale: string = DEFAULT_LOCALE,\n): string {\n  if (!value) return '';\n  const parsed = parseTimestamp(String(value));\n  if (!parsed) return '';\n\n  const {shifted, instant} = parsed;\n  const pattern = formatPattern || 'yyyy-MM-dd';\n  if (pattern === 'ISO') return instant.toISOString();\n\n  const names = getDateNames(locale);\n  const weekdayIndex = (shifted.getUTCDay() + 6) % 7;\n  const hours = shifted.getUTCHours();\n  const hours12 = hours % 12 || 12;\n\n  return pattern.replace(DATE_TOKENS, (token: string) => {\n    switch (token) {\n      case 'yyyy':\n        return String(shifted.getUTCFullYear());\n      case 'yy':\n        return String(shifted.getUTCFullYear()).slice(-2);\n      case 'MMMM':\n        return names.monthsLong[shifted.getUTCMonth()];\n      case 'MMM':\n        return names.monthsShort[shifted.getUTCMonth()];\n      case 'MM':\n        return String(shifted.getUTCMonth() + 1).padStart(2, '0');\n      case 'M':\n        return String(shifted.getUTCMonth() + 1);\n      case 'EEEE':\n        return names.weekdaysLong[weekdayIndex];\n      case 'E':\n        return names.weekdaysShort[weekdayIndex];\n      case 'dd':\n        return String(shifted.getUTCDate()).padStart(2, '0');\n      case 'd':\n        return String(shifted.getUTCDate());\n      case 'HH':\n        return String(hours).padStart(2, '0');\n      case 'H':\n        return String(hours);\n      case 'hh':\n        return String(hours12).padStart(2, '0');\n      case 'h':\n        return String(hours12);\n      case 'mm':\n        return String(shifted.getUTCMinutes()).padStart(2, '0');\n      case 'ss':\n        return String(shifted.getUTCSeconds()).padStart(2, '0');\n      case 'a':\n        return hours < 12 ? 'AM' : 'PM';\n      default:\n        return token;\n    }\n  });\n}\n\n/** Selects the appropriate plural form for a quantity. */\nexport function executePluralize(\n  value: number,\n  forms: Record<string, unknown>,\n  locale: string = DEFAULT_LOCALE,\n): string {\n  let category: string;\n  if (value === 0 && forms['zero'] !== undefined) category = 'zero';\n  else if (value === 1 && forms['one'] !== undefined) category = 'one';\n  else if (value === 2 && forms['two'] !== undefined) category = 'two';\n  else category = getPluralRules(locale).select(value);\n\n  return String(forms[category] ?? forms['other'] ?? '');\n}\n\n/** Opens a specified URL in a new browser tab. */\nexport function executeOpenUrl(urlInput: unknown): void {\n  const target = typeof urlInput === 'string' ? urlInput : undefined;\n  if (!target || typeof window === 'undefined' || !window.open) return;\n\n  const baseHref =\n    typeof window.location !== 'undefined' && window.location.href\n      ? window.location.href\n      : undefined;\n\n  let url: URL;\n  try {\n    url = baseHref ? new URL(target, baseHref) : new URL(target);\n  } catch (e) {\n    throw new A2uiExpressionError(`Invalid URL specified: ${target}`, 'openUrl', e);\n  }\n\n  if (url.protocol !== 'https:' && url.protocol !== 'http:') {\n    throw new A2uiExpressionError(`Unsupported URL scheme: ${url.protocol}`, 'openUrl');\n  }\n\n  window.open(url.href, '_blank', 'noopener,noreferrer');\n}\n\n// ---------------------------------------------------------------------------\n// Implementation Factory Functions\n// ---------------------------------------------------------------------------\n\nexport function createAndImplementation(api: any): FunctionImplementation {\n  return createFunctionImplementation(api, args => executeAnd(args.values));\n}\n\nexport function createOrImplementation(api: any): FunctionImplementation {\n  return createFunctionImplementation(api, args => executeOr(args.values));\n}\n\nexport function createNotImplementation(api: any): FunctionImplementation {\n  return createFunctionImplementation(api, args => executeNot(args.value));\n}\n\nexport function createFormatStringImplementation(api: any): FunctionImplementation {\n  return createFunctionImplementation(api, (args, context) =>\n    executeFormatString(args.value, context),\n  );\n}\n\nexport function createFormatNumberImplementation(\n  api: any,\n  locale?: string,\n): FunctionImplementation {\n  const resolvedLocale = resolveLocale(locale);\n  return createFunctionImplementation(api, args =>\n    executeFormatNumber(args.value, args.decimals, args.grouping, resolvedLocale),\n  );\n}\n\nexport function createFormatCurrencyImplementation(\n  api: any,\n  locale?: string,\n): FunctionImplementation {\n  const resolvedLocale = resolveLocale(locale);\n  return createFunctionImplementation(api, args =>\n    executeFormatCurrency(\n      args.value,\n      args.currency,\n      args.decimals ?? 2,\n      args.grouping,\n      resolvedLocale,\n    ),\n  );\n}\n\nexport function createFormatDateImplementation(api: any, locale?: string): FunctionImplementation {\n  const resolvedLocale = resolveLocale(locale);\n  return createFunctionImplementation(api, args =>\n    executeFormatDate(args.value, args.format, resolvedLocale),\n  );\n}\n\nexport function createPluralizeImplementation(api: any, locale?: string): FunctionImplementation {\n  const resolvedLocale = resolveLocale(locale);\n  return createFunctionImplementation(api, args =>\n    executePluralize(args.value, args as Record<string, unknown>, resolvedLocale),\n  );\n}\n\nexport function createOpenUrlImplementation(api: any): FunctionImplementation {\n  return createFunctionImplementation(api, args => executeOpenUrl(args.url));\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Function implementations for the v0.9 basic catalog.\n */\n\nimport {createFunctionImplementation, FunctionImplementation} from '../../../catalog/types.js';\nimport {\n  AndApi,\n  OrApi,\n  NotApi,\n  RequiredApi,\n  RegexApi,\n  LengthApi,\n  NumericApi,\n  EmailApi,\n  FormatStringApi,\n  FormatNumberApi,\n  FormatCurrencyApi,\n  FormatDateApi,\n  PluralizeApi,\n  OpenUrlApi,\n} from './basic_functions_api.js';\nimport {\n  createAndImplementation,\n  createOrImplementation,\n  createNotImplementation,\n  createFormatStringImplementation,\n  createFormatNumberImplementation as createCommonFormatNumber,\n  createFormatCurrencyImplementation as createCommonFormatCurrency,\n  createFormatDateImplementation as createCommonFormatDate,\n  createPluralizeImplementation as createCommonPluralize,\n  createOpenUrlImplementation,\n  validateRequired,\n  validateRegex,\n  validateLength,\n  validateNumeric,\n  validateEmail,\n} from '../../../common/basic_functions.js';\n\n// Logical\nexport const AndImplementation = createAndImplementation(AndApi);\nexport const OrImplementation = createOrImplementation(OrApi);\nexport const NotImplementation = createNotImplementation(NotApi);\n\n// Validation\nexport const RequiredImplementation = createFunctionImplementation(\n  RequiredApi,\n  args => validateRequired(args.value).valid,\n);\n\nexport const RegexImplementation = createFunctionImplementation(\n  RegexApi,\n  args => validateRegex(args.value, args.pattern).valid,\n);\n\nexport const LengthImplementation = createFunctionImplementation(\n  LengthApi,\n  args => validateLength(args.value, args.min, args.max).valid,\n);\n\nexport const NumericImplementation = createFunctionImplementation(\n  NumericApi,\n  args => validateNumeric(args.value, args.min, args.max).valid,\n);\n\nexport const EmailImplementation = createFunctionImplementation(\n  EmailApi,\n  args => validateEmail(args.value).valid,\n);\n\n// Formatting\nexport const FormatStringImplementation = createFormatStringImplementation(FormatStringApi);\n\nexport function createFormatNumberImplementation(locale?: string): FunctionImplementation {\n  return createCommonFormatNumber(FormatNumberApi, locale);\n}\nexport const FormatNumberImplementation = createFormatNumberImplementation();\n\nexport function createFormatCurrencyImplementation(locale?: string): FunctionImplementation {\n  return createCommonFormatCurrency(FormatCurrencyApi, locale);\n}\nexport const FormatCurrencyImplementation = createFormatCurrencyImplementation();\n\nexport function createFormatDateImplementation(locale?: string): FunctionImplementation {\n  return createCommonFormatDate(FormatDateApi, locale);\n}\nexport const FormatDateImplementation = createFormatDateImplementation();\n\nexport function createPluralizeImplementation(locale?: string): FunctionImplementation {\n  return createCommonPluralize(PluralizeApi, locale);\n}\nexport const PluralizeImplementation = createPluralizeImplementation();\n\n// Actions\nexport const OpenUrlImplementation = createOpenUrlImplementation(OpenUrlApi);\n\n/**\n * Creates standard function implementations for the Basic Catalog.\n *\n * @param options Configuration options containing optional locale.\n * @returns Array of function implementations.\n */\nexport function createBasicCatalogFunctions(options?: {locale?: string}): FunctionImplementation[] {\n  const locale = options?.locale;\n  return [\n    AndImplementation,\n    OrImplementation,\n    NotImplementation,\n    RequiredImplementation,\n    RegexImplementation,\n    LengthImplementation,\n    NumericImplementation,\n    EmailImplementation,\n    FormatStringImplementation,\n    createFormatNumberImplementation(locale),\n    createFormatCurrencyImplementation(locale),\n    createFormatDateImplementation(locale),\n    createPluralizeImplementation(locale),\n    OpenUrlImplementation,\n  ];\n}\n\n/**\n * Standard function implementations for the Basic Catalog.\n *\n * Includes logical, validation, formatting, and action functions.\n */\nexport const BASIC_FUNCTIONS: FunctionImplementation[] = createBasicCatalogFunctions();\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type React from 'react';\nimport {\n  createContext,\n  useCallback,\n  useContext,\n  useEffect,\n  useMemo,\n  useSyncExternalStore,\n} from 'react';\nimport {\n  ComponentContext,\n  type ComponentNode,\n  isComponentNode,\n  ResolvedBinding,\n  isWritable,\n  effect,\n  getValue,\n  peekValue,\n  type NodeProps,\n  type Signal,\n  type SurfaceModel,\n} from '@a2ui/web_core/v0_9';\nimport type {ReactComponentImplementation} from './adapter';\n\n/** Renders a resolved child node, or falls back for an unresolved id. */\nexport type NodeBuildChild = (\n  child: ComponentNode<ReactComponentImplementation> | string,\n  basePath?: string,\n) => React.ReactNode;\n\n/** What a component implementation's `view` receives from the node surface. */\nexport type NodeViewProps = {\n  node: ComponentNode<ReactComponentImplementation>;\n  buildChild: NodeBuildChild;\n};\n\n/** The surface a node view renders under, provided by `A2uiSurface`. */\nexport const NodeSurfaceContext = createContext<SurfaceModel<ReactComponentImplementation> | null>(\n  null,\n);\n\n/** Stands in for a component that has not arrived, or has just been removed. */\nexport const LoadingPlaceholder: React.FC<{componentId: string}> = ({componentId}) => (\n  <div style={{color: 'gray', padding: '4px'}}>[Loading {componentId}...]</div>\n);\n\n/** Unresolved-reference reports already dispatched, per surface. */\nconst reportedUnresolved = new WeakMap<SurfaceModel<ReactComponentImplementation>, Set<string>>();\n\n/**\n * The in-tree notice for a child reference the resolver built no node for.\n * Also reports it through the surface's error channel once per (id, path)\n * so agents see it too, matching how the resolver reports unknown types and\n * cycles. The report runs in an effect: dispatching during render would\n * invoke onError subscribers while React is rendering, and a subscriber\n * that sets state would then warn.\n */\nexport const UnresolvedChildReference: React.FC<{\n  surface: SurfaceModel<ReactComponentImplementation> | null;\n  id: string;\n  requestedPath: string;\n  detail: string;\n}> = ({surface, id, requestedPath, detail}) => {\n  const message = `Unresolved child reference '${id}' at '${requestedPath}': ${detail}`;\n  useEffect(() => {\n    if (!surface) {\n      return;\n    }\n    let seen = reportedUnresolved.get(surface);\n    if (!seen) {\n      seen = new Set();\n      reportedUnresolved.set(surface, seen);\n    }\n    const key = JSON.stringify([id, requestedPath]);\n    if (!seen.has(key)) {\n      seen.add(key);\n      void surface.dispatchError({code: 'UNRESOLVED_CHILD_REFERENCE', message});\n    }\n  }, [surface, id, requestedPath, message]);\n  return <div style={{color: 'red'}}>{message}</div>;\n};\n\nexport function useSignalValue<T>(signal: Signal<T>): T {\n  const subscribe = useCallback(\n    (onChange: () => void) =>\n      effect(() => {\n        getValue(signal);\n        onChange();\n      }),\n    [signal],\n  );\n  const getSnapshot = useCallback(() => peekValue(signal), [signal]);\n  return useSyncExternalStore(subscribe, getSnapshot);\n}\n\n/** Child nodes of one view, keyed by id, then by the child's data path. */\ntype ChildMap = Map<string, Map<string, ComponentNode<ReactComponentImplementation>>>;\n\n/**\n * The two id namespaces `buildChild` callers use. Views hand back the tokens\n * the conversion put in their props (instanceIds, distinct per position);\n * `render`-only and binderless implementations read raw component ids from\n * the model. The namespaces can claim the same string for different nodes\n * (a component named `a#2` next to a second reference to `a`), so each kind\n * of caller resolves through its own map.\n */\ninterface ChildIndex {\n  byToken: ChildMap;\n  byId: ChildMap;\n}\n\nfunction newChildIndex(): ChildIndex {\n  return {byToken: new Map(), byId: new Map()};\n}\n\nfunction setChild(\n  map: ChildMap,\n  id: string,\n  child: ComponentNode<ReactComponentImplementation>,\n  firstWins: boolean,\n): void {\n  let byPath = map.get(id);\n  if (!byPath) {\n    byPath = new Map();\n    map.set(id, byPath);\n  }\n  if (!firstWins || !byPath.has(child.dataPath)) {\n    byPath.set(child.dataPath, child);\n  }\n}\n\n/**\n * Registers a child and returns the token views should hand back to\n * `buildChild`: the node's `instanceId`, which is distinct per position and\n * cannot collide with another node's token. For a component referenced once\n * at the parent's scope, the instanceId is the component id. The raw-id map\n * keeps the first occurrence, matching how a raw reference has no way to\n * name a later one.\n */\nfunction registerChild(\n  index: ChildIndex,\n  child: ComponentNode<ReactComponentImplementation>,\n): string {\n  setChild(index.byToken, child.instanceId, child, false);\n  setChild(index.byId, child.componentId, child, true);\n  return child.instanceId;\n}\n\n/**\n * Converts node-resolved props to the shapes existing views were written\n * against: a child node becomes its componentId string when it shares the\n * parent's data scope, and an `{id, basePath}` pair when it was spawned at a\n * scoped path (a template item). The nodes themselves are collected into\n * `index` for `buildChild` to find again.\n */\nfunction toViewValue(parent: ComponentNode, value: unknown, index: ChildIndex): unknown {\n  if (isComponentNode(value)) {\n    // Every node in this surface's props came from its own resolver, whose\n    // catalog carries ReactComponentImplementation entries.\n    const token = registerChild(index, value as ComponentNode<ReactComponentImplementation>);\n    if (value.dataPath !== parent.dataPath) {\n      return {id: token, basePath: value.dataPath};\n    }\n    return token;\n  }\n  if (value instanceof ResolvedBinding) {\n    return toViewValue(parent, value.value, index);\n  }\n  if (Array.isArray(value)) {\n    return value.map(item => toViewValue(parent, item, index));\n  }\n  if (isPlainObject(value)) {\n    return toViewProps(parent, value, index);\n  }\n  // Rebuilding non-plain values (Map, Date, class instances) key-wise would\n  // strip their prototype.\n  return value;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n  if (!value || typeof value !== 'object') {\n    return false;\n  }\n  const proto = Object.getPrototypeOf(value);\n  return proto === Object.prototype || proto === null;\n}\n\n/**\n * Converts one object level of node props, unwrapping each `ResolvedBinding`\n * into the value + `set<Prop>` pair the views were written against. A\n * read-only binding gets a no-op setter, matching what `GenericBinder`\n * synthesizes for literal-valued properties.\n */\nfunction toViewProps(\n  parent: ComponentNode,\n  props: Record<string, unknown>,\n  index: ChildIndex,\n): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n  for (const [key, inner] of Object.entries(props)) {\n    if (inner instanceof ResolvedBinding) {\n      result[key] = toViewValue(parent, inner.value, index);\n      result[`set${key.charAt(0).toUpperCase()}${key.slice(1)}`] = isWritable(inner)\n        ? inner.set\n        : () => {};\n    } else {\n      result[key] = toViewValue(parent, inner, index);\n    }\n  }\n  return result;\n}\n\n/**\n * Subscribes to a node's props and adapts them to the `ReactA2uiComponentProps`\n * shape existing views implement:\n * converted props, a `ComponentContext`, and a string-id `buildChild` that\n * resolves through the conversion's child index before falling back to the\n * surface-provided `buildChild`.\n */\nexport function useNodeView(\n  node: ComponentNode,\n  buildChild: NodeBuildChild,\n): {\n  viewProps: NodeProps;\n  context: ComponentContext | undefined;\n  viewBuildChild: (id: string, basePath?: string) => React.ReactNode;\n  rawBuildChild: (id: string, basePath?: string) => React.ReactNode;\n} {\n  const surface = useContext(NodeSurfaceContext);\n  const resolved = useSignalValue(node.props);\n\n  const {viewProps, childIndex} = useMemo(() => {\n    const index = newChildIndex();\n    return {viewProps: toViewProps(node, resolved, index) as NodeProps, childIndex: index};\n  }, [node, resolved]);\n\n  // The component can be removed between the resolver's update and this\n  // render committing; ComponentContext's constructor throws on a missing\n  // model, so treat that window as not-ready rather than crashing. Callers\n  // render a LoadingPlaceholder for it.\n  const context = useMemo(\n    () =>\n      surface && surface.componentsModel.get(node.componentId)\n        ? new ComponentContext(surface, node.componentId, node.dataPath)\n        : undefined,\n    [surface, node],\n  );\n\n  const resolveThrough = useCallback(\n    (map: ChildMap, id: string, basePath?: string): React.ReactNode => {\n      const requested = basePath ?? node.dataPath;\n      const byPath = map.get(id);\n      const childNode = byPath?.get(requested);\n      if (childNode) {\n        return buildChild(childNode, basePath);\n      }\n      // An instance at another data path means the reference itself is fine\n      // and the requested path is not one the payload created.\n      const elsewhere = byPath ? [...byPath.keys()] : [];\n      if (elsewhere.length > 0) {\n        return (\n          <UnresolvedChildReference\n            key={JSON.stringify([id, requested])}\n            surface={surface}\n            id={id}\n            requestedPath={requested}\n            detail={\n              `instances exist at ${elsewhere.join(', ')}. Instances are created only at ` +\n              `the data paths the payload implies; buildChild selects among them.`\n            }\n          />\n        );\n      }\n      return buildChild(id, basePath);\n    },\n    [buildChild, node, surface],\n  );\n\n  const viewBuildChild = useCallback(\n    (id: string, basePath?: string) => resolveThrough(childIndex.byToken, id, basePath),\n    [resolveThrough, childIndex],\n  );\n\n  const rawBuildChild = useCallback(\n    (id: string, basePath?: string) => resolveThrough(childIndex.byId, id, basePath),\n    [resolveThrough, childIndex],\n  );\n\n  if (!surface) {\n    throw new Error('A2UI component views render only inside A2uiSurface.');\n  }\n  return {viewProps, context, viewBuildChild, rawBuildChild};\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Surface renderer driven by the node layer.\n *\n * `A2uiSurface` constructs one `NodeResolver` and renders the resolved\n * `ComponentNode` tree it maintains. Each implementation carries a generated\n * `view` (see `adapter.tsx`) that subscribes to its own node's props and\n * converts them back to the shapes existing views expect, so a data change\n * re-renders exactly the affected component. The surface only dispatches: it\n * hands each `view` its node and a `buildChild` that renders resolved child\n * nodes.\n */\n\nimport React, {memo, useCallback, useMemo, useSyncExternalStore} from 'react';\nimport {\n  type ComponentNode,\n  isComponentNode,\n  NodeResolver,\n  effect,\n  getValue,\n  peekValue,\n  type SurfaceModel,\n} from '@a2ui/web_core/v0_9';\nimport type {ReactComponentImplementation} from './adapter';\nimport {\n  LoadingPlaceholder,\n  NodeSurfaceContext,\n  UnresolvedChildReference,\n  useNodeView,\n  type NodeBuildChild,\n} from './node-view';\n\n/** Renders an implementation that has no `view`: its wrapper binds itself. */\nconst RenderFallback: React.FC<{\n  node: ComponentNode<ReactComponentImplementation>;\n  impl: ReactComponentImplementation;\n  buildChild: NodeBuildChild;\n}> = ({node, impl, buildChild}) => {\n  // `render` reads raw component ids from the model, not the tokens the\n  // conversion puts in view props, so it resolves through the raw-id map.\n  const {context, rawBuildChild} = useNodeView(node, buildChild);\n  const Render = impl.render;\n  if (!context) {\n    return <LoadingPlaceholder componentId={node.componentId} />;\n  }\n  return <Render context={context} buildChild={rawBuildChild} />;\n};\n\nconst NodeView = memo(\n  ({\n    surface,\n    node,\n  }: {\n    surface: SurfaceModel<ReactComponentImplementation>;\n    node: ComponentNode<ReactComponentImplementation>;\n  }) => {\n    const buildChild = useCallback<NodeBuildChild>(\n      (child, basePath) => {\n        if (isComponentNode(child)) {\n          return <NodeView key={child.instanceId} surface={surface} node={child} />;\n        }\n        // The resolver turns every child reference it can identify into a\n        // node, so a leftover id was never classified. Distinguish the two\n        // causes a catalog author can actually have.\n        const requested = basePath ?? node.dataPath;\n        const detail = surface.componentsModel.get(child)\n          ? 'the component exists, but the catalog schema does not mark the referencing ' +\n            'property as a component id. Use componentId() or childList() from ' +\n            '@a2ui/web_core.'\n          : 'no component with this id exists on the surface.';\n        return (\n          <UnresolvedChildReference\n            key={JSON.stringify([child, requested])}\n            surface={surface}\n            id={child}\n            requestedPath={requested}\n            detail={detail}\n          />\n        );\n      },\n      [surface, node],\n    );\n\n    if (node.state === 'unknown-type') {\n      return <div style={{color: 'red'}}>Unknown component type: {node.type}</div>;\n    }\n    if (node.isPlaceholder) {\n      return <LoadingPlaceholder componentId={node.componentId} />;\n    }\n    const impl = node.impl;\n    if (!impl) {\n      // Type narrowing; unreachable for a resolved node.\n      return null;\n    }\n    const View = impl.view;\n    if (!View) {\n      return <RenderFallback node={node} impl={impl} buildChild={buildChild} />;\n    }\n    return <View node={node} buildChild={buildChild} />;\n  },\n);\nNodeView.displayName = 'NodeView';\n\nexport const A2uiSurface: React.FC<{\n  surface: SurfaceModel<ReactComponentImplementation>;\n}> = ({surface}) => {\n  // The resolver is created inside subscribe, which React calls only for\n  // committed renders: a render that is discarded (concurrent mode,\n  // Suspense) never constructs one, and every constructed resolver is\n  // disposed by its own unsubscribe. StrictMode's double mount creates and\n  // disposes two in turn.\n  // The factory reads nothing; the dependency exists to reset the box when\n  // the surface is swapped.\n  const box = useMemo(\n    () => ({resolver: undefined as NodeResolver<ReactComponentImplementation> | undefined}),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [surface],\n  );\n  const subscribe = useCallback(\n    (onChange: () => void) => {\n      const resolver = new NodeResolver(surface, surface.defaultCatalog);\n      box.resolver = resolver;\n      const stopEffect = effect(() => {\n        getValue(resolver.rootNode);\n        onChange();\n      });\n      return () => {\n        stopEffect();\n        resolver.dispose();\n        if (box.resolver === resolver) {\n          box.resolver = undefined;\n        }\n      };\n    },\n    [surface, box],\n  );\n  const getSnapshot = useCallback(\n    () => (box.resolver ? peekValue(box.resolver.rootNode) : undefined),\n    [box],\n  );\n  const root = useSyncExternalStore(subscribe, getSnapshot);\n\n  if (!root) {\n    return <LoadingPlaceholder componentId=\"root\" />;\n  }\n  return (\n    <NodeSurfaceContext.Provider value={surface}>\n      <NodeView surface={surface} node={root} />\n    </NodeSurfaceContext.Provider>\n  );\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, {useRef, useSyncExternalStore, useCallback, memo, useEffect} from 'react';\nimport {type ComponentContext, GenericBinder} from '@a2ui/web_core/v0_9';\nimport type {\n  ComponentApi,\n  InferredComponentApiSchemaType,\n  ResolveA2uiProps,\n} from '@a2ui/web_core/v0_9';\nimport {LoadingPlaceholder, useNodeView, type NodeViewProps} from './node-view';\n\nexport interface ReactComponentImplementation extends ComponentApi {\n  /** The framework-specific rendering wrapper. */\n  render: React.FC<{\n    context: ComponentContext;\n    buildChild: (id: string, basePath?: string) => React.ReactNode;\n  }>;\n  /**\n   * Renders this component from a resolved `ComponentNode`. Generated by the\n   * factories below. When absent, `A2uiSurface` renders through `render`,\n   * handing it a `buildChild` that resolves ids through the node layer.\n   */\n  view?: React.FC<NodeViewProps>;\n}\n\nexport type ReactA2uiComponentProps<T> = {\n  props: T;\n  buildChild: (id: string, basePath?: string) => React.ReactNode;\n  context: ComponentContext;\n};\n\n// --- Component Factories ---\n\n/**\n * Creates a React component implementation using the deep generic binder.\n */\nexport function createComponentImplementation<Api extends ComponentApi>(\n  api: Api,\n  RenderComponent: React.FC<\n    ReactA2uiComponentProps<ResolveA2uiProps<InferredComponentApiSchemaType<Api>>>\n  >,\n): ReactComponentImplementation {\n  type Props = ResolveA2uiProps<InferredComponentApiSchemaType<Api>>;\n\n  const MemoizedRender = memo(RenderComponent, (prev, next) => {\n    if (prev.props !== next.props) return false;\n    // The child index is rebuilt when a child arrives, leaves, or is\n    // replaced; binder props don't change with it, so the builder's identity\n    // is the only signal.\n    if (prev.buildChild !== next.buildChild) return false;\n    if (prev.context.componentModel.id !== next.context.componentModel.id) return false;\n    if (prev.context.dataContext.path !== next.context.dataContext.path) return false;\n    return true;\n  });\n\n  const ReactWrapper: React.FC<{\n    context: ComponentContext;\n    buildChild: (id: string, basePath?: string) => React.ReactNode;\n  }> = ({context, buildChild}) => {\n    const bindingRef = useRef<GenericBinder<Props> | null>(null);\n\n    // Create or recreate the binder if the context object changes. Callers\n    // memoize `context`, so a new reference means the component's model or its\n    // data path changed.\n    if (!bindingRef.current) {\n      bindingRef.current = new GenericBinder<Props>(context, api.schema);\n    } else if ((bindingRef.current as unknown as {context: ComponentContext}).context !== context) {\n      bindingRef.current.dispose();\n      bindingRef.current = new GenericBinder<Props>(context, api.schema);\n    }\n    const binding = bindingRef.current;\n\n    const subscribe = useCallback(\n      (callback: () => void) => {\n        const sub = binding.subscribe(callback);\n        return () => sub.unsubscribe();\n      },\n      [binding],\n    );\n\n    const getSnapshot = useCallback(() => binding.snapshot, [binding]);\n    const props = useSyncExternalStore(subscribe, getSnapshot);\n\n    // Prevent DataModel subscription leaks on unmount\n    useEffect(() => {\n      return () => binding.dispose();\n    }, [binding]);\n\n    return (\n      <MemoizedRender props={props || ({} as Props)} buildChild={buildChild} context={context} />\n    );\n  };\n\n  const NodeView: React.FC<NodeViewProps> = ({node, buildChild}) => {\n    const {viewProps, context, viewBuildChild} = useNodeView(node, buildChild);\n    if (!context) {\n      return <LoadingPlaceholder componentId={node.componentId} />;\n    }\n    return (\n      <MemoizedRender props={viewProps as Props} buildChild={viewBuildChild} context={context} />\n    );\n  };\n  NodeView.displayName = `${api.name}.view`;\n\n  return {\n    name: api.name,\n    schema: api.schema,\n    render: ReactWrapper,\n    view: NodeView,\n  };\n}\n\n/**\n * Creates a React component implementation that manages its own context bindings (no generic binder).\n */\nexport function createBinderlessComponentImplementation(\n  api: ComponentApi,\n  RenderComponent: React.FC<{\n    context: ComponentContext;\n    buildChild: (id: string, basePath?: string) => React.ReactNode;\n  }>,\n): ReactComponentImplementation {\n  const NodeView: React.FC<NodeViewProps> = ({node, buildChild}) => {\n    // The conversion's only role here is filling the child index; the\n    // component binds its own values from the context, so its child ids are\n    // raw component ids, not view tokens.\n    const {context, rawBuildChild} = useNodeView(node, buildChild);\n    if (!context) {\n      return <LoadingPlaceholder componentId={node.componentId} />;\n    }\n    return <RenderComponent context={context} buildChild={rawBuildChild} />;\n  };\n  NodeView.displayName = `${api.name}.view`;\n\n  return {\n    name: api.name,\n    schema: api.schema,\n    render: RenderComponent,\n    view: NodeView,\n  };\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type React from 'react';\nimport {useEffect} from 'react';\nimport {injectBasicCatalogStyles} from '@a2ui/web_core/v0_9/basic_catalog';\n\n/**\n * Hook to automatically inject the web_core basic catalog styles.\n */\nexport const useBasicCatalogStyles = () => {\n  useEffect(() => {\n    if (typeof document !== 'undefined' && document.adoptedStyleSheets) {\n      injectBasicCatalogStyles();\n    }\n  }, []);\n};\n\nexport const mapJustify = (j?: string) => {\n  switch (j) {\n    case 'center':\n      return 'center';\n    case 'end':\n      return 'flex-end';\n    case 'spaceAround':\n      return 'space-around';\n    case 'spaceBetween':\n      return 'space-between';\n    case 'spaceEvenly':\n      return 'space-evenly';\n    case 'start':\n      return 'flex-start';\n    case 'stretch':\n      return 'stretch';\n    default:\n      return 'flex-start';\n  }\n};\n\nexport const mapAlign = (a?: string) => {\n  switch (a) {\n    case 'start':\n      return 'flex-start';\n    case 'center':\n      return 'center';\n    case 'end':\n      return 'flex-end';\n    case 'stretch':\n      return 'stretch';\n    default:\n      return 'stretch';\n  }\n};\n\nexport const getBaseLeafStyle = (): React.CSSProperties => ({\n  boxSizing: 'border-box',\n});\n\nexport const getBaseContainerStyle = (): React.CSSProperties => ({\n  boxSizing: 'border-box',\n});\n\n// `min-width: 0` / `min-height: 0` let weighted children shrink below their\n// intrinsic content size. Without them, a component with large content would\n// force the container to overflow.\nexport const getWeightStyle = (weight?: number): React.CSSProperties => {\n  if (typeof weight !== 'number') return {};\n  return {flex: `${weight}`, minWidth: 0, minHeight: 0};\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {createContext, useContext} from 'react';\nimport type {MarkdownRenderer} from '@a2ui/web_core';\n\nexport const MarkdownContext = createContext<MarkdownRenderer | undefined>(undefined);\n\nexport const useMarkdownRenderer = () => useContext(MarkdownContext);\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {useState, useEffect} from 'react';\nimport {useMarkdownRenderer} from '../context/MarkdownContext';\nimport type {MarkdownRendererOptions} from '@a2ui/web_core';\n\nlet warningLogged = false;\n\nexport function useMarkdown(text: string, options?: MarkdownRendererOptions) {\n  const renderer = useMarkdownRenderer();\n  const [html, setHtml] = useState<string | null>(null);\n\n  const optionsKey = JSON.stringify(options);\n\n  useEffect(() => {\n    if (!renderer) {\n      if (!warningLogged) {\n        console.warn(\n          '[useMarkdown]',\n          \"can't render markdown because no markdown renderer is configured.\\n\",\n          'Use `@a2ui/markdown-it`, or your own markdown renderer.',\n        );\n        warningLogged = true;\n      }\n      setHtml(null);\n      return;\n    }\n\n    let active = true;\n    const parsedOptions = optionsKey ? JSON.parse(optionsKey) : undefined;\n\n    renderer(text, parsedOptions)\n      .then(result => {\n        if (active) {\n          setHtml(result);\n        }\n      })\n      .catch(err => {\n        console.error('[useMarkdown] Render failed:', err);\n      });\n\n    return () => {\n      active = false;\n    };\n  }, [text, renderer, optionsKey]);\n\n  return html;\n}\n","/* Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.a2uiText {\n  display: inline-block;\n  color: var(--_a2ui-text-color, var(--a2ui-text-color-text, var(--a2ui-color-on-background)));\n  margin: var(--_a2ui-text-margin, 0);\n  box-sizing: border-box;\n}\n\n.a2uiCaption {\n  display: inline-block;\n  color: var(--a2ui-text-caption-color, light-dark(#666, #aaa));\n  text-align: left;\n  margin: var(--_a2ui-text-margin, 0);\n  box-sizing: border-box;\n}\n\n/* We use :global to target elements generated by the Markdown renderer */\n.a2uiText :global(p),\n.a2uiText :global(h1),\n.a2uiText :global(h2),\n.a2uiText :global(h3),\n.a2uiText :global(h4),\n.a2uiText :global(h5),\n.a2uiText :global(h6),\n.a2uiText :global(ol),\n.a2uiText :global(ul),\n.a2uiText :global(li),\n.a2uiText :global(blockquote),\n.a2uiText :global(pre) {\n  margin: var(--_a2ui-text-margin, 0);\n}\n\n.a2uiText :global(h1),\n.a2uiText :global(h2),\n.a2uiText :global(h3),\n.a2uiText :global(h4),\n.a2uiText :global(h5) {\n  font-family: var(--a2ui-font-family-title, inherit);\n  line-height: var(--a2ui-line-height-headings, 1.2);\n}\n\n.a2uiText :global(h1) {\n  font-size: var(--a2ui-font-size-2xl);\n}\n.a2uiText :global(h2) {\n  font-size: var(--a2ui-font-size-xl);\n}\n.a2uiText :global(h3) {\n  font-size: var(--a2ui-font-size-l);\n}\n.a2uiText :global(p),\n.a2uiText :global(h4) {\n  font-size: var(--a2ui-font-size-m);\n}\n.a2uiText :global(h5) {\n  font-size: var(--a2ui-font-size-s);\n}\n\n.a2uiText :global(p),\n.a2uiText :global(ol),\n.a2uiText :global(ul),\n.a2uiText :global(li),\n.a2uiText :global(blockquote) {\n  line-height: var(--a2ui-line-height-body, 1.5);\n}\n\n.a2uiText :global(a) {\n  color: var(--a2ui-text-a-color, inherit);\n  font-weight: var(--a2ui-text-a-font-weight, inherit);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {createComponentImplementation} from '../../../adapter';\nimport {TextApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {getBaseLeafStyle, getWeightStyle, useBasicCatalogStyles} from '../utils';\nimport {useMarkdown} from '../hooks/useMarkdown';\n\n// Import CSS Module\nimport styles from './Text.module.css';\n\n/** Variants rendered with declarative HTML instead of the Markdown pipeline. */\nconst NON_MARKDOWN_VARIANTS = new Set(['h1', 'h2', 'h3', 'h4', 'h5', 'caption']);\n\n/** Renders text through the Markdown pipeline for unknown/default variants. */\nfunction MarkdownText({\n  text,\n  className,\n  style,\n}: {\n  text: string;\n  className: string;\n  style: React.CSSProperties;\n}) {\n  const renderedHtml = useMarkdown(text);\n  const classes = renderedHtml === null ? `${className} no-markdown-renderer` : className;\n  const contentProps =\n    renderedHtml !== null ? {dangerouslySetInnerHTML: {__html: renderedHtml}} : {children: text};\n\n  return <div className={classes} style={style} {...contentProps} />;\n}\n\n/** Renders known variants (h1–h5, caption) as native HTML elements without Markdown. */\nfunction NonMarkdownText({\n  text,\n  variant,\n  className,\n  style,\n}: {\n  text: string;\n  variant: string;\n  className: string;\n  style: React.CSSProperties;\n}) {\n  const isCaption = variant === 'caption';\n  const HeadingTag = isCaption ? 'em' : (variant as 'h1' | 'h2' | 'h3' | 'h4' | 'h5');\n  if (isCaption) {\n    return (\n      <span className={className} style={style}>\n        <HeadingTag>{text}</HeadingTag>\n      </span>\n    );\n  }\n  return (\n    <div className={className} style={style}>\n      <HeadingTag>{text}</HeadingTag>\n    </div>\n  );\n}\n\n/** Renders text content, using the Markdown pipeline for rich text or native HTML elements for known typographic variants. */\nexport const Text = createComponentImplementation(TextApi, ({props}) => {\n  useBasicCatalogStyles();\n  const text = typeof props.text === 'string' ? props.text : String(props.text ?? '');\n  const variant = props.variant;\n\n  const style: React.CSSProperties = {\n    ...getBaseLeafStyle(),\n    ...getWeightStyle(props.weight),\n  };\n\n  if (variant && NON_MARKDOWN_VARIANTS.has(variant)) {\n    const isCaption = variant === 'caption';\n    const className = [styles.a2uiText, isCaption ? styles.a2uiCaption : variant].join(' ');\n    return <NonMarkdownText text={text} variant={variant} className={className} style={style} />;\n  }\n\n  const className = [styles.a2uiText, variant || 'body'].join(' ');\n  return <MarkdownText text={text} className={className} style={style} />;\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {ImageApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {getBaseLeafStyle, getWeightStyle, useBasicCatalogStyles} from '../utils';\n\nexport const Image = createComponentImplementation(ImageApi, ({props}) => {\n  useBasicCatalogStyles();\n  const mapFit = (fit?: string): React.CSSProperties['objectFit'] => {\n    if (fit === 'scaleDown') return 'scale-down';\n    return (fit as React.CSSProperties['objectFit']) || 'fill';\n  };\n\n  const style: React.CSSProperties = {\n    ...getBaseLeafStyle(),\n    ...getWeightStyle(props.weight),\n    objectFit: mapFit(props.fit),\n    display: 'block',\n    borderRadius: 'var(--a2ui-image-border-radius, 0)',\n  };\n\n  if (props.variant === 'icon') {\n    style.width = 'var(--a2ui-image-icon-size, 24px)';\n    style.height = 'var(--a2ui-image-icon-size, 24px)';\n  } else if (props.variant === 'avatar') {\n    style.width = 'var(--a2ui-image-avatar-size, 40px)';\n    style.height = 'var(--a2ui-image-avatar-size, 40px)';\n    style.borderRadius = '50%';\n  } else if (props.variant === 'smallFeature') {\n    style.maxWidth = 'var(--a2ui-image-small-feature-size, 100px)';\n  } else if (props.variant === 'largeFeature') {\n    style.maxHeight = 'var(--a2ui-image-large-feature-size, 400px)';\n  } else if (props.variant === 'header') {\n    style.height = 'var(--a2ui-image-header-size, 200px)';\n    style.objectFit = 'cover';\n  }\n\n  return <img src={props.url} alt={props.description || ''} style={style} />;\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {IconApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {getBaseLeafStyle, useBasicCatalogStyles} from '../utils';\n\nconst ICON_NAME_OVERRIDES: Record<string, string> = {\n  play: 'play_arrow',\n  rewind: 'fast_rewind',\n  favoriteOff: 'favorite_border',\n  starOff: 'star_border',\n};\n\n/**\n * Convert camelCase to snake_case for Material Symbols font.\n * e.g., \"shoppingCart\" -> \"shopping_cart\", \"skipPrevious\" -> \"skip_previous\"\n */\nfunction toMaterialSymbol(str: string): string {\n  return ICON_NAME_OVERRIDES[str] ?? str.replace(/[A-Z]/g, letter => '_' + letter.toLowerCase());\n}\n\nexport const Icon = createComponentImplementation(IconApi, ({props}) => {\n  useBasicCatalogStyles();\n\n  const isPath = typeof props.name === 'object' && props.name !== null && 'svgPath' in props.name;\n\n  const baseStyle: React.CSSProperties = {\n    ...getBaseLeafStyle(),\n    display: 'inline-flex',\n    alignItems: 'center',\n    justifyContent: 'center',\n    fontSize: 'var(--a2ui-icon-size, var(--a2ui-font-size-xl, 24px))',\n    color: 'var(--a2ui-icon-color, inherit)',\n    lineHeight: 1,\n  };\n\n  if (isPath) {\n    const path = (props.name as {svgPath: string}).svgPath;\n    return (\n      <svg\n        className=\"a2ui-icon svg\"\n        viewBox=\"0 0 24 24\"\n        style={{\n          ...baseStyle,\n          fill: 'currentColor',\n          width: 'var(--a2ui-icon-size, 24px)',\n          height: 'var(--a2ui-icon-size, 24px)',\n        }}\n      >\n        <path d={path}></path>\n      </svg>\n    );\n  }\n\n  const iconName = typeof props.name === 'string' ? toMaterialSymbol(props.name) : '';\n\n  const fontStyle: React.CSSProperties = {\n    ...baseStyle,\n    fontFamily: 'var(--a2ui-icon-font-family, \"Material Symbols Outlined\", sans-serif)',\n    fontVariationSettings: 'var(--a2ui-icon-font-variation-settings, \"FILL\" 1)',\n    fontWeight: 'normal',\n    fontStyle: 'normal',\n    letterSpacing: 'normal',\n    textTransform: 'none',\n  };\n\n  return (\n    <span className=\"material-symbols-outlined\" style={fontStyle}>\n      {iconName}\n    </span>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {VideoApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {getBaseLeafStyle, useBasicCatalogStyles} from '../utils';\n\nexport const Video = createComponentImplementation(VideoApi, ({props}) => {\n  useBasicCatalogStyles();\n  const style: React.CSSProperties = {\n    ...getBaseLeafStyle(),\n    width: '100%',\n    height: 'auto',\n    borderRadius: 'var(--a2ui-video-border-radius, 0)',\n  };\n\n  return <video src={props.url} controls style={style} />;\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {AudioPlayerApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nexport const AudioPlayer = createComponentImplementation(AudioPlayerApi, ({props}) => {\n  useBasicCatalogStyles();\n  const containerStyle: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    gap: 'var(--a2ui-spacing-xs, 0.25rem)',\n    background: 'var(--a2ui-audioplayer-background, transparent)',\n    borderRadius: 'var(--a2ui-audioplayer-border-radius, 0)',\n    padding: 'var(--a2ui-audioplayer-padding, 0)',\n  };\n\n  return (\n    <div style={containerStyle}>\n      {props.description && (\n        <span\n          style={{\n            fontSize: 'var(--a2ui-font-size-xs, 0.75rem)',\n            color: 'var(--a2ui-text-caption-color, light-dark(#666, #aaa))',\n          }}\n        >\n          {props.description}\n        </span>\n      )}\n      <audio src={props.url} controls />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {type ComponentContext, type ComponentId} from '@a2ui/web_core/v0_9';\n\ntype ResolvedChildRef =\n  | ComponentId\n  | {\n      id: ComponentId;\n      basePath: string;\n    };\n\ntype ResolvedChildList = ResolvedChildRef[];\n\nexport const ChildList: React.FC<{\n  childList: ResolvedChildList;\n  context: ComponentContext;\n  buildChild: (id: ComponentId, basePath?: string) => React.ReactNode;\n}> = ({childList, buildChild}) => {\n  if (!Array.isArray(childList)) return null;\n\n  return (\n    <>\n      {childList.map((childRef, index) => {\n        if (typeof childRef === 'string') {\n          return (\n            <React.Fragment key={`${childRef}-${index}`}>{buildChild(childRef)}</React.Fragment>\n          );\n        }\n\n        return (\n          <React.Fragment key={`${childRef.id}-${childRef.basePath}`}>\n            {buildChild(childRef.id, childRef.basePath)}\n          </React.Fragment>\n        );\n      })}\n    </>\n  );\n};\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {createComponentImplementation} from '../../../adapter';\nimport {RowApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {ChildList} from './ChildList';\nimport {mapJustify, mapAlign, getWeightStyle, useBasicCatalogStyles} from '../utils';\n\nexport const Row = createComponentImplementation(RowApi, ({props, buildChild, context}) => {\n  useBasicCatalogStyles();\n  return (\n    <div\n      style={{\n        ...getWeightStyle(props.weight),\n        display: 'flex',\n        flexDirection: 'row',\n        justifyContent: mapJustify(props.justify),\n        alignItems: mapAlign(props.align),\n        gap: 'var(--a2ui-row-gap, var(--a2ui-spacing-m))',\n      }}\n    >\n      <ChildList childList={props.children} buildChild={buildChild} context={context} />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {createComponentImplementation} from '../../../adapter';\nimport {ColumnApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {ChildList} from './ChildList';\nimport {mapJustify, mapAlign, getWeightStyle, useBasicCatalogStyles} from '../utils';\n\nexport const Column = createComponentImplementation(ColumnApi, ({props, buildChild, context}) => {\n  useBasicCatalogStyles();\n  return (\n    <div\n      style={{\n        ...getWeightStyle(props.weight),\n        display: 'flex',\n        flexDirection: 'column',\n        justifyContent: mapJustify(props.justify),\n        alignItems: mapAlign(props.align),\n        gap: 'var(--a2ui-column-gap, var(--a2ui-spacing-m))',\n      }}\n    >\n      <ChildList childList={props.children} buildChild={buildChild} context={context} />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {ListApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {ChildList} from './ChildList';\nimport {mapAlign, useBasicCatalogStyles} from '../utils';\n\nexport const List = createComponentImplementation(ListApi, ({props, buildChild, context}) => {\n  useBasicCatalogStyles();\n  const isHorizontal = props.direction === 'horizontal';\n  const style: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: isHorizontal ? 'row' : 'column',\n    alignItems: mapAlign(props.align),\n    overflowX: isHorizontal ? 'auto' : 'hidden',\n    overflowY: isHorizontal ? 'hidden' : 'auto',\n    gap: 'var(--a2ui-list-gap, var(--a2ui-spacing-s))',\n    padding: 'var(--a2ui-list-padding, 0)',\n  };\n\n  return (\n    <div style={style}>\n      <ChildList childList={props.children} buildChild={buildChild} context={context} />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {CardApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {getBaseContainerStyle, getWeightStyle, useBasicCatalogStyles} from '../utils';\n\nexport const Card = createComponentImplementation(CardApi, ({props, buildChild}) => {\n  useBasicCatalogStyles();\n\n  const style: React.CSSProperties = {\n    ...getBaseContainerStyle(),\n    ...getWeightStyle(props.weight),\n    display: 'block',\n    border: 'var(--a2ui-card-border, var(--a2ui-border))',\n    borderRadius: 'var(--a2ui-card-border-radius, var(--a2ui-border-radius, 8px))',\n    padding: 'var(--a2ui-card-padding, var(--a2ui-spacing-m, 16px))',\n    background: 'var(--a2ui-card-background, var(--a2ui-color-surface, #fff))',\n    color: 'var(--a2ui-color-on-surface, #333)',\n    boxShadow: 'var(--a2ui-card-box-shadow, 0 2px 4px rgba(0,0,0,0.1))',\n    margin: 'var(--a2ui-card-margin, var(--a2ui-spacing-m))',\n  };\n\n  return (\n    <div className=\"a2ui-card\" style={style}>\n      {props.child ? buildChild(props.child) : null}\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {useState} from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {TabsApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\n// The type of a tab is deeply nested into the TabsApi schema, and\n// it seems z.infer is not inferring it correctly (?). We use `any` for now.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype _Tab = any;\n\nexport const Tabs = createComponentImplementation(TabsApi, ({props, buildChild}) => {\n  useBasicCatalogStyles();\n  const [selectedIndex, setSelectedIndex] = useState(0);\n\n  const tabs = props.tabs || [];\n  const activeTab = tabs[selectedIndex];\n\n  const tabsContainer: React.CSSProperties = {\n    display: 'block',\n  };\n\n  const tabsHeaders: React.CSSProperties = {\n    display: 'flex',\n    gap: 'var(--a2ui-spacing-xs, 0.25rem)',\n    borderBottom:\n      'var(--a2ui-tabs-border, var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc))',\n    marginBottom: 'var(--a2ui-spacing-m, 0.5rem)',\n  };\n\n  const tabsHeaderBase: React.CSSProperties = {\n    padding: 'var(--a2ui-spacing-m, 0.5rem) var(--a2ui-spacing-l, 1rem)',\n    background: 'var(--a2ui-tabs-header-background, transparent)',\n    color: 'var(--a2ui-tabs-header-color, var(--a2ui-color-on-surface))',\n    border: 'none',\n    borderRadius: 'var(--a2ui-border-radius, 0.25rem) var(--a2ui-border-radius, 0.25rem) 0 0',\n    cursor: 'pointer',\n    fontFamily: 'inherit',\n  };\n\n  const tabsHeaderActive: React.CSSProperties = {\n    background: 'var(--a2ui-tabs-header-background-active, var(--a2ui-color-secondary, #eee))',\n    color: 'var(--a2ui-tabs-header-color-active, var(--a2ui-color-on-secondary, #333))',\n  };\n\n  const content: React.CSSProperties = {\n    padding: 'var(--a2ui-tabs-content-padding, 0 var(--a2ui-spacing-m, 0.5rem))',\n  };\n\n  return (\n    <div style={tabsContainer}>\n      <div style={tabsHeaders}>\n        {tabs.map((tab: _Tab, i: number) => (\n          <button\n            key={i}\n            className={`a2ui-tabs-header a2ui-tab-button ${selectedIndex === i ? 'active' : ''}`}\n            onClick={() => setSelectedIndex(i)}\n            style={{\n              ...tabsHeaderBase,\n              ...(selectedIndex === i ? tabsHeaderActive : {}),\n            }}\n          >\n            {tab.title}\n          </button>\n        ))}\n      </div>\n      <div style={content}>{activeTab ? buildChild(activeTab.child) : null}</div>\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {DividerApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nexport const Divider = createComponentImplementation(DividerApi, ({props}) => {\n  useBasicCatalogStyles();\n  const isVertical = props.axis === 'vertical';\n  const style: React.CSSProperties = {\n    border: 'none',\n    backgroundColor: 'var(--a2ui-color-border, #ccc)',\n  };\n\n  if (isVertical) {\n    style.width = 'var(--a2ui-border-width, 1px)';\n    style.height = '100%';\n    style.margin = '0 var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 0.5rem))';\n  } else {\n    style.width = '100%';\n    style.height = 'var(--a2ui-border-width, 1px)';\n    style.margin = 'var(--a2ui-divider-spacing, var(--a2ui-spacing-m, 0.5rem)) 0';\n  }\n\n  return <div style={style} />;\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {useState} from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {ModalApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nexport const Modal = createComponentImplementation(ModalApi, ({props, buildChild}) => {\n  useBasicCatalogStyles();\n  const [isOpen, setIsOpen] = useState(false);\n\n  return (\n    <>\n      <div\n        className=\"a2ui-modal-trigger\"\n        onClick={() => setIsOpen(true)}\n        style={{display: 'inline-block'}}\n      >\n        {props.trigger ? buildChild(props.trigger) : null}\n      </div>\n      {isOpen && (\n        <div\n          className=\"a2ui-modal-overlay\"\n          style={{\n            position: 'fixed',\n            top: 0,\n            left: 0,\n            right: 0,\n            bottom: 0,\n            backgroundColor: 'var(--a2ui-modal-overlay-color, rgba(0, 0, 0, 0.5))',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            zIndex: 1000,\n          }}\n          onClick={() => setIsOpen(false)}\n        >\n          <div\n            style={{\n              backgroundColor: 'var(--a2ui-color-surface, #fff)',\n              padding: 'var(--a2ui-modal-padding, var(--a2ui-spacing-l, 24px))',\n              borderRadius: 'var(--a2ui-modal-border-radius, var(--a2ui-border-radius, 8px))',\n              maxWidth: '90%',\n              maxHeight: '90%',\n              overflow: 'auto',\n              display: 'flex',\n              flexDirection: 'column',\n              color: 'var(--a2ui-color-on-surface, inherit)',\n            }}\n            onClick={e => e.stopPropagation()}\n          >\n            <div style={{display: 'flex', justifyContent: 'flex-end'}}>\n              <button\n                className=\"a2ui-modal-close\"\n                onClick={() => setIsOpen(false)}\n                style={{\n                  border: 'none',\n                  background: 'none',\n                  fontSize: 'var(--a2ui-font-size-xl, 1.5rem)',\n                  cursor: 'pointer',\n                  padding: 'var(--a2ui-spacing-xs, 4px)',\n                  color: 'var(--a2ui-color-on-surface, inherit)',\n                }}\n              >\n                &times;\n              </button>\n            </div>\n            <div style={{flex: 1}}>{props.content ? buildChild(props.content) : null}</div>\n          </div>\n        </div>\n      )}\n    </>\n  );\n});\n","/* Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.button {\n  --_a2ui-text-margin: 0;\n  --_a2ui-text-color: var(--a2ui-color-on-secondary, #333);\n  padding: var(--a2ui-button-padding, var(--a2ui-spacing-m, 0.5rem) var(--a2ui-spacing-l, 1rem));\n  margin: var(--a2ui-button-margin, var(--a2ui-spacing-m));\n  background: var(--a2ui-button-background, var(--a2ui-color-surface, #fff));\n  box-shadow: var(--a2ui-button-box-shadow, none);\n  font-weight: var(--a2ui-button-font-weight, normal);\n  color: var(--a2ui-color-on-secondary, #333);\n  border: var(\n    --a2ui-button-border,\n    var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n  );\n  border-radius: var(--a2ui-button-border-radius, var(--a2ui-border-radius, 8px));\n  cursor: pointer;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  transition: background-color 0.2s;\n}\n\n.button:hover {\n  background-color: var(--a2ui-color-secondary-hover, #ddd);\n}\n\n.primary {\n  --_a2ui-text-color: var(--a2ui-color-on-primary, #fff);\n  background-color: var(--a2ui-color-primary, #17e);\n  border: none;\n  color: var(--_a2ui-text-color);\n}\n\n.primary:hover {\n  background-color: var(--a2ui-color-primary-hover, #fbd);\n}\n\n.borderless {\n  background: none;\n  padding: 0;\n  color: var(--a2ui-color-primary, #17e);\n  border: none;\n}\n\n.button:disabled {\n  cursor: not-allowed;\n  opacity: 0.6;\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {createComponentImplementation} from '../../../adapter';\nimport {ButtonApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\nimport styles from './Button.module.css';\n\nexport const Button = createComponentImplementation(ButtonApi, ({props, buildChild}) => {\n  useBasicCatalogStyles();\n\n  const classes = [styles.button];\n  if (props.variant === 'primary') {\n    classes.push(styles.primary);\n  } else if (props.variant === 'borderless') {\n    classes.push(styles.borderless);\n  }\n\n  return (\n    <button className={classes.join(' ')} onClick={props.action} disabled={props.isValid === false}>\n      {props.child ? buildChild(props.child) : null}\n    </button>\n  );\n});\n","/* Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.host {\n  display: flex;\n  flex-direction: column;\n  gap: var(--a2ui-spacing-xs, 0.25rem);\n  width: 100%;\n}\n\n.label {\n  font-size: var(\n    --a2ui-textfield-label-font-size,\n    var(--a2ui-label-font-size, var(--a2ui-font-size-s))\n  );\n  font-weight: var(--a2ui-textfield-label-font-weight, var(--a2ui-label-font-weight, bold));\n}\n\n.input {\n  background-color: var(--a2ui-color-input, #fff);\n  color: var(--a2ui-color-on-input, #333);\n  border: var(\n    --a2ui-textfield-border,\n    var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n  );\n  border-radius: var(--a2ui-textfield-border-radius, var(--a2ui-spacing-m, 8px));\n  padding: var(--a2ui-textfield-padding, var(--a2ui-spacing-m, 0.5rem));\n  font-family: inherit;\n  box-sizing: border-box;\n  width: 100%;\n  transition: border-color 0.2s;\n}\n\n.input:hover {\n  border-color: var(--a2ui-textfield-color-border-hover, var(--a2ui-color-border-hover, #999));\n}\n\n.input:focus {\n  outline: none;\n  border-color: var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));\n}\n\n.invalid {\n  border-color: var(--a2ui-textfield-color-error, red) !important;\n}\n\n.error {\n  color: var(--a2ui-textfield-color-error, red);\n  font-size: var(--a2ui-font-size-xs, 0.75rem);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {TextFieldApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\nimport styles from './TextField.module.css';\n\nexport const TextField = createComponentImplementation(TextFieldApi, ({props}) => {\n  useBasicCatalogStyles();\n  const onChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n    props.setValue(e.target.value);\n  };\n\n  const isLong = props.variant === 'longText';\n  const type =\n    props.variant === 'number' ? 'number' : props.variant === 'obscured' ? 'password' : 'text';\n\n  const uniqueId = React.useId();\n  const hasError = props.validationErrors && props.validationErrors.length > 0;\n  const inputClasses = `${styles.input} ${hasError ? styles.invalid : ''}`;\n\n  return (\n    <div className={styles.host}>\n      {props.label && (\n        <label htmlFor={uniqueId} className={styles.label}>\n          {props.label}\n        </label>\n      )}\n      {isLong ? (\n        <textarea\n          id={uniqueId}\n          className={inputClasses}\n          value={props.value || ''}\n          onChange={onChange}\n        />\n      ) : (\n        <input\n          id={uniqueId}\n          type={type}\n          className={inputClasses}\n          value={props.value || ''}\n          onChange={onChange}\n        />\n      )}\n      {hasError && <span className={styles.error}>{props.validationErrors![0]}</span>}\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {CheckBoxApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nexport const CheckBox = createComponentImplementation(CheckBoxApi, ({props}) => {\n  useBasicCatalogStyles();\n  const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    props.setValue(e.target.checked);\n  };\n\n  const uniqueId = React.useId();\n\n  const hasError = props.validationErrors && props.validationErrors.length > 0;\n\n  const containerStyle: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    margin: 'var(--a2ui-checkbox-margin, var(--a2ui-spacing-m))',\n  };\n\n  const rowStyle: React.CSSProperties = {\n    display: 'flex',\n    alignItems: 'center',\n    gap: 'var(--a2ui-checkbox-gap, var(--a2ui-spacing-s, 0.5rem))',\n  };\n\n  const inputBaseStyle: React.CSSProperties = {\n    cursor: 'pointer',\n    width: 'var(--a2ui-checkbox-size, 1rem)',\n    height: 'var(--a2ui-checkbox-size, 1rem)',\n    background: 'var(--a2ui-checkbox-background, inherit)',\n    border: 'var(--a2ui-checkbox-border, var(--a2ui-border))',\n    borderRadius: 'var(--a2ui-checkbox-border-radius, 4px)',\n    outline: 'none',\n  };\n\n  const inputErrorStyle: React.CSSProperties = {\n    outline: '1px solid var(--a2ui-checkbox-color-error, red)',\n  };\n\n  const labelBaseStyle: React.CSSProperties = {\n    cursor: 'pointer',\n    color: 'var(--a2ui-color-on-surface, inherit)',\n    fontSize:\n      'var(--a2ui-checkbox-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s)))',\n    fontWeight: 'var(--a2ui-checkbox-label-font-weight, var(--a2ui-label-font-weight, bold))',\n  };\n\n  const labelErrorStyle: React.CSSProperties = {\n    color: 'var(--a2ui-checkbox-color-error, red)',\n  };\n\n  const errorStyle: React.CSSProperties = {\n    fontSize: 'var(--a2ui-font-size-xs, 0.75rem)',\n    color: 'var(--a2ui-checkbox-color-error, red)',\n    marginTop: '4px',\n  };\n\n  return (\n    <div style={containerStyle}>\n      <div style={rowStyle}>\n        <input\n          id={uniqueId}\n          type=\"checkbox\"\n          checked={!!props.value}\n          onChange={onChange}\n          style={{\n            ...inputBaseStyle,\n            ...(hasError ? inputErrorStyle : {}),\n          }}\n        />\n        {props.label && (\n          <label\n            htmlFor={uniqueId}\n            style={{\n              ...labelBaseStyle,\n              ...(hasError ? labelErrorStyle : {}),\n            }}\n          >\n            {props.label}\n          </label>\n        )}\n      </div>\n      {hasError && <span style={errorStyle}>{props.validationErrors?.[0]}</span>}\n    </div>\n  );\n});\n","/* Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.host {\n  display: flex;\n  flex-direction: column;\n  gap: var(--a2ui-spacing-s, 0.5rem);\n  width: 100%;\n}\n\n.label {\n  font-size: var(\n    --a2ui-choicepicker-label-font-size,\n    var(--a2ui-label-font-size, var(--a2ui-font-size-s))\n  );\n  font-weight: var(--a2ui-choicepicker-label-font-weight, var(--a2ui-label-font-weight, bold));\n  color: var(--a2ui-choicepicker-label-color, inherit);\n}\n\n.filterInput {\n  background-color: var(--a2ui-color-input, #fff);\n  color: var(--a2ui-color-on-input, #333);\n  border: var(\n    --a2ui-textfield-border,\n    var(--a2ui-border-width, 1px) solid var(--a2ui-color-border, #ccc)\n  );\n  border-radius: var(--a2ui-textfield-border-radius, var(--a2ui-spacing-m, 8px));\n  padding: var(\n    --a2ui-choicepicker-filter-padding,\n    var(--a2ui-spacing-xs, 4px) var(--a2ui-spacing-s, 8px)\n  );\n  font-family: inherit;\n  transition: border-color 0.2s;\n}\n\n.filterInput:hover {\n  border-color: var(--a2ui-textfield-color-border-hover, var(--a2ui-color-border-hover, #999));\n}\n\n.filterInput:focus {\n  outline: none;\n  border-color: var(--a2ui-textfield-color-border-focus, var(--a2ui-color-primary, #17e));\n}\n\n.options {\n  display: flex;\n  flex-direction: column;\n  gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n}\n\n.chips {\n  flex-direction: row;\n  flex-wrap: wrap;\n}\n\n.chip {\n  padding: var(\n    --a2ui-choicepicker-chip-padding,\n    var(--a2ui-spacing-s, 4px) var(--a2ui-spacing-m, 8px)\n  );\n  border-radius: var(--a2ui-choicepicker-chip-border-radius, 999px);\n  border: 1px solid var(--a2ui-color-border, #ccc);\n  background-color: var(--a2ui-color-surface, #fff);\n  color: var(--a2ui-color-on-surface, inherit);\n  cursor: pointer;\n  font-size: var(--a2ui-font-size-xs, 0.75rem);\n  font-family: inherit;\n  transition:\n    background-color 0.2s,\n    border-color 0.2s;\n}\n\n.chip.selected {\n  background-color: var(--a2ui-color-primary, #007bff);\n  color: var(--a2ui-color-on-primary, #fff);\n  border-color: var(--a2ui-color-primary, #007bff);\n}\n\n.optionLabel {\n  display: flex;\n  align-items: center;\n  gap: var(--a2ui-choicepicker-gap, var(--a2ui-spacing-xs, 0.25rem));\n  cursor: pointer;\n}\n\n.optionText {\n  font-size: var(--a2ui-font-size-m, 1rem);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, {useState} from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {ChoicePickerApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\nimport styles from './ChoicePicker.module.css';\n\n// The type of an option is deeply nested into the ChoicePickerApi schema, and\n// it seems z.infer is not inferring it correctly (?). We use `any` for now.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype _Option = any;\n\nexport const ChoicePicker = createComponentImplementation(ChoicePickerApi, ({props}) => {\n  useBasicCatalogStyles();\n  const [filter, setFilter] = useState('');\n  // Radio group names are document-scoped while component ids are only\n  // surface-scoped, so the group name must be unique per rendered instance.\n  const groupName = React.useId();\n\n  const values = Array.isArray(props.value) ? props.value : [];\n  const isMutuallyExclusive = props.variant === 'mutuallyExclusive';\n\n  const onToggle = (val: string) => {\n    if (isMutuallyExclusive) {\n      props.setValue([val]);\n    } else {\n      const newValues = values.includes(val)\n        ? values.filter((v: string) => v !== val)\n        : [...values, val];\n      props.setValue(newValues);\n    }\n  };\n\n  const options = (props.options || []).filter(\n    (opt: _Option) =>\n      !props.filterable ||\n      filter === '' ||\n      String(opt.label).toLowerCase().includes(filter.toLowerCase()),\n  );\n\n  const listClasses = `${styles.options} ${props.displayStyle === 'chips' ? styles.chips : ''}`;\n\n  return (\n    <div className={styles.host}>\n      {props.label && <strong className={styles.label}>{props.label}</strong>}\n      {props.filterable && (\n        <input\n          type=\"text\"\n          placeholder=\"Filter options...\"\n          value={filter}\n          onChange={e => setFilter(e.target.value)}\n          className={styles.filterInput}\n        />\n      )}\n      <div className={listClasses}>\n        {options.map((opt: _Option, i: number) => {\n          const isSelected = values.includes(opt.value);\n          if (props.displayStyle === 'chips') {\n            return (\n              <button\n                key={i}\n                onClick={() => onToggle(opt.value)}\n                className={`${styles.chip} chip ${isSelected ? `${styles.selected} selected` : ''}`}\n                aria-pressed={isSelected}\n              >\n                {opt.label}\n              </button>\n            );\n          }\n          return (\n            <label key={i} className={styles.optionLabel}>\n              <input\n                type={isMutuallyExclusive ? 'radio' : 'checkbox'}\n                checked={isSelected}\n                onChange={() => onToggle(opt.value)}\n                name={isMutuallyExclusive ? groupName : undefined}\n              />\n              <span className={styles.optionText}>{opt.label}</span>\n            </label>\n          );\n        })}\n      </div>\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {SliderApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nexport const Slider = createComponentImplementation(SliderApi, ({props}) => {\n  useBasicCatalogStyles();\n  const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    props.setValue(Number(e.target.value));\n  };\n\n  const uniqueId = React.useId();\n\n  const containerStyle: React.CSSProperties = {\n    display: 'flex',\n    flexDirection: 'column',\n    gap: 'var(--a2ui-spacing-xs, 0.25rem)',\n    margin: 'var(--a2ui-slider-margin, var(--a2ui-spacing-m))',\n  };\n\n  const headerStyle: React.CSSProperties = {\n    display: 'flex',\n    justifyContent: 'space-between',\n    alignItems: 'center',\n  };\n\n  const labelStyle: React.CSSProperties = {\n    fontSize:\n      'var(--a2ui-slider-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s)))',\n    fontWeight: 'var(--a2ui-slider-label-font-weight, var(--a2ui-label-font-weight, bold))',\n  };\n\n  const valueStyle: React.CSSProperties = {\n    fontSize: 'var(--a2ui-font-size-xs, 0.75rem)',\n    color: 'var(--a2ui-text-caption-color, light-dark(#666, #aaa))',\n  };\n\n  const inputStyle: React.CSSProperties = {\n    width: '100%',\n    cursor: 'pointer',\n    accentColor: 'var(--a2ui-slider-thumb-color, var(--a2ui-color-primary, #007bff))',\n    background: 'var(--a2ui-slider-track-color, var(--a2ui-color-secondary, #e9ecef))',\n  };\n\n  return (\n    <div style={containerStyle}>\n      <div style={headerStyle}>\n        {props.label && (\n          <label htmlFor={uniqueId} style={labelStyle}>\n            {props.label}\n          </label>\n        )}\n        <span style={valueStyle}>{props.value}</span>\n      </div>\n      <input\n        id={uniqueId}\n        type=\"range\"\n        min={props.min ?? 0}\n        max={props.max}\n        value={props.value ?? 0}\n        onChange={onChange}\n        style={inputStyle}\n      />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from 'react';\nimport {createComponentImplementation} from '../../../adapter';\nimport {DateTimeInputApi} from '@a2ui/web_core/v0_9/basic_catalog';\nimport {useBasicCatalogStyles} from '../utils';\n\nif (typeof document !== 'undefined') {\n  const styleId = 'a2ui-date-time-input-webkit-styles';\n  if (!document.getElementById(styleId)) {\n    const style = document.createElement('style');\n    style.id = styleId;\n    style.textContent = `\n      .a2ui-date-time-input::-webkit-datetime-edit,\n      .a2ui-date-time-input::-webkit-datetime-edit-fields-wrapper {\n        color: var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333));\n      }\n    `;\n    document.head.appendChild(style);\n  }\n}\n\nfunction normalizeDateTimeValue(value: string | null | undefined, type: string): string {\n  if (!value) return '';\n\n  const hasT = value.includes('T');\n  const split = value.split('T');\n\n  const datePart = (hasT ? split[0] : value)?.substring(0, 10) ?? '';\n  const timePart = (hasT ? split[1] : value)?.substring(0, 5) ?? '';\n\n  switch (type) {\n    case 'date':\n      return datePart;\n    case 'time':\n      return timePart;\n    case 'datetime-local':\n      return `${datePart}T${timePart}`;\n  }\n  return '';\n}\n\nexport const DateTimeInput = createComponentImplementation(DateTimeInputApi, ({props}) => {\n  useBasicCatalogStyles();\n  const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    props.setValue(e.target.value);\n  };\n\n  const uniqueId = React.useId();\n\n  // If neither date or time are enabled, render nothing.\n  if (!(props.enableDate || props.enableTime)) return null;\n\n  // Map enableDate/enableTime to input type\n  let type = 'datetime-local';\n  if (props.enableDate && !props.enableTime) type = 'date';\n  if (!props.enableDate && props.enableTime) type = 'time';\n\n  const normalizedValue = normalizeDateTimeValue(props.value, type);\n\n  const style: React.CSSProperties = {\n    backgroundColor: 'var(--a2ui-datetimeinput-background, var(--a2ui-color-input, #fff))',\n    color: 'var(--a2ui-datetimeinput-color, var(--a2ui-color-on-input, #333))',\n    border: 'var(--a2ui-datetimeinput-border, var(--a2ui-border))',\n    borderRadius: 'var(--a2ui-datetimeinput-border-radius, var(--a2ui-border-radius))',\n    padding: 'var(--a2ui-datetimeinput-padding, var(--a2ui-spacing-s))',\n    boxSizing: 'border-box',\n  };\n\n  return (\n    <div\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        gap: 'var(--a2ui-spacing-xs, 0.25rem)',\n      }}\n    >\n      {props.label && (\n        <label\n          htmlFor={uniqueId}\n          style={{\n            fontSize:\n              'var(--a2ui-datetimeinput-label-font-size, var(--a2ui-label-font-size, var(--a2ui-font-size-s)))',\n            fontWeight:\n              'var(--a2ui-datetimeinput-label-font-weight, var(--a2ui-label-font-weight, bold))',\n          }}\n        >\n          {props.label}\n        </label>\n      )}\n      <input\n        id={uniqueId}\n        className=\"a2ui-date-time-input\"\n        type={type}\n        style={style}\n        value={normalizedValue}\n        onChange={onChange}\n        min={typeof props.min === 'string' ? props.min : undefined}\n        max={typeof props.max === 'string' ? props.max : undefined}\n      />\n    </div>\n  );\n});\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Catalog} from '@a2ui/web_core/v0_9';\nimport {BASIC_FUNCTIONS, BasicCatalogThemeSchema} from '@a2ui/web_core/v0_9/basic_catalog';\nimport type {ReactComponentImplementation} from '../../adapter';\n\nimport {Text} from './components/Text';\nimport {Image} from './components/Image';\nimport {Icon} from './components/Icon';\nimport {Video} from './components/Video';\nimport {AudioPlayer} from './components/AudioPlayer';\nimport {Row} from './components/Row';\nimport {Column} from './components/Column';\nimport {List} from './components/List';\nimport {Card} from './components/Card';\nimport {Tabs} from './components/Tabs';\nimport {Divider} from './components/Divider';\nimport {Modal} from './components/Modal';\nimport {Button} from './components/Button';\nimport {TextField} from './components/TextField';\nimport {CheckBox} from './components/CheckBox';\nimport {ChoicePicker} from './components/ChoicePicker';\nimport {Slider} from './components/Slider';\nimport {DateTimeInput} from './components/DateTimeInput';\n\nexport * from './context/MarkdownContext';\n\nconst basicComponents: ReactComponentImplementation[] = [\n  Text,\n  Image,\n  Icon,\n  Video,\n  AudioPlayer,\n  Row,\n  Column,\n  List,\n  Card,\n  Tabs,\n  Divider,\n  Modal,\n  Button,\n  TextField,\n  CheckBox,\n  ChoicePicker,\n  Slider,\n  DateTimeInput,\n];\n\nexport const basicCatalog = new Catalog<ReactComponentImplementation>(\n  'https://a2ui.org/specification/v0_9/catalogs/basic/catalog.json',\n  '0.9',\n  basicComponents,\n  BASIC_FUNCTIONS,\n  BasicCatalogThemeSchema,\n);\n\nexport {\n  Text,\n  Image,\n  Icon,\n  Video,\n  AudioPlayer,\n  Row,\n  Column,\n  List,\n  Card,\n  Tabs,\n  Divider,\n  Modal,\n  Button,\n  TextField,\n  CheckBox,\n  ChoicePicker,\n  Slider,\n  DateTimeInput,\n};\n","import { Catalog as OfficialCatalog } from \"@a2ui/web_core/v0_9\";\nimport type {\n  Catalog,\n  ComponentApi,\n  ComponentContext,\n} from \"@a2ui/web_core/v0_9\" with { \"resolution-mode\": \"import\" };\nimport {\n  basicCatalog,\n  createComponentImplementation,\n} from \"@a2ui/react/v0_9\";\nimport type { FC, ReactNode } from \"react\";\nimport type { PrometheusA2uiComponentImplementation } from \"./types.js\";\n\n/** The only stable A2UI wire protocol supported by the 3.0 package. */\nexport const PROMETHEUS_A2UI_PROTOCOL_VERSION = \"v0.9.1\" as const;\n\n/** Prometheus-owned catalog identity; it never impersonates the full official catalog. */\nexport const PROMETHEUS_A2UI_CATALOG_ID = \"urn:prometheus-ags:a2ui:catalog:v3\";\n\n/** Explicit default component allowlist derived from the official v0.9 catalog. */\nexport const DEFAULT_PROMETHEUS_A2UI_COMPONENTS = [\n  \"Text\",\n  \"Image\",\n  \"Icon\",\n  \"Video\",\n  \"AudioPlayer\",\n  \"Row\",\n  \"Column\",\n  \"List\",\n  \"Card\",\n  \"Tabs\",\n  \"Divider\",\n  \"Modal\",\n  \"Button\",\n  \"TextField\",\n  \"CheckBox\",\n  \"ChoicePicker\",\n  \"Slider\",\n  \"DateTimeInput\",\n] as const;\n\n/**\n * Default pure-function allowlist. `openUrl` is deliberately excluded because\n * navigation is an application-owned side effect and must be opted in.\n *\n * Official `@a2ui/web_core@0.12.0` removed the non-spec math and comparison\n * functions (`add`, `subtract`, `multiply`, `divide`, `equals`, `not_equals`,\n * `greater_than`, `less_than`, `contains`, `starts_with`, `ends_with`) from the\n * v0.9 basic catalog, so they are no longer allowlisted here.\n */\nexport const DEFAULT_PROMETHEUS_A2UI_FUNCTIONS = [\n  \"and\",\n  \"or\",\n  \"not\",\n  \"required\",\n  \"regex\",\n  \"length\",\n  \"numeric\",\n  \"email\",\n  \"formatString\",\n  \"formatNumber\",\n  \"formatCurrency\",\n  \"formatDate\",\n  \"pluralize\",\n] as const;\n\nexport type PrometheusA2uiComponentName =\n  (typeof DEFAULT_PROMETHEUS_A2UI_COMPONENTS)[number];\nexport type PrometheusA2uiFunctionName =\n  | (typeof DEFAULT_PROMETHEUS_A2UI_FUNCTIONS)[number]\n  | \"openUrl\";\n\nexport interface PrometheusA2uiCatalogOptions {\n  /** Stable catalog id advertised to agents. */\n  id?: string;\n  /** Component names allowed from the official basic catalog. */\n  components?: readonly PrometheusA2uiComponentName[];\n  /** Function names allowed from the official basic catalog. */\n  functions?: readonly PrometheusA2uiFunctionName[];\n  /**\n   * Application implementations that replace the official one of the same\n   * `name`. Each must be built with `createPrometheusA2uiComponent`, and its\n   * name must be listed in `components`.\n   */\n  implementations?: readonly PrometheusA2uiComponentImplementation[];\n}\n\n/** What a custom component's render function receives. */\nexport interface PrometheusA2uiComponentRenderProps {\n  /** Resolved properties; data bindings come with a `set<Name>` writer. */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  props: Record<string, any>;\n  buildChild: (id: string, basePath?: string) => ReactNode;\n  context: ComponentContext;\n}\n\n/**\n * The official implementation of a basic component, for use as the `api` of\n * `createPrometheusA2uiComponent`, which reuses its schema and so keeps the\n * property names and bindings of the pinned official version.\n */\nexport function getPrometheusA2uiOfficialComponent(\n  name: PrometheusA2uiComponentName,\n): PrometheusA2uiComponentImplementation {\n  const implementation = basicCatalog.components.get(name);\n  if (!implementation) {\n    throw new Error(`Official A2UI component is unavailable: ${name}`);\n  }\n  return implementation;\n}\n\n/**\n * Build a component on the official renderer bundled in this package.\n *\n * This package bundles the official `@a2ui/react` so that CommonJS and ESM\n * builds agree. A component created with an application's own copy of\n * `@a2ui/react` therefore cannot share its surface context. Create custom\n * components here so they run on the same instance as the surface.\n */\nexport function createPrometheusA2uiComponent(\n  api: ComponentApi,\n  render: FC<PrometheusA2uiComponentRenderProps>,\n): PrometheusA2uiComponentImplementation {\n  return createComponentImplementation(\n    api,\n    render as never,\n  ) as PrometheusA2uiComponentImplementation;\n}\n\n/**\n * Create a catalog containing only explicitly allowed official implementations.\n * Unknown names throw during configuration rather than failing during render.\n */\nexport function createPrometheusA2uiCatalog(\n  options: PrometheusA2uiCatalogOptions = {},\n): Catalog<PrometheusA2uiComponentImplementation> {\n  const componentNames = options.components ?? DEFAULT_PROMETHEUS_A2UI_COMPONENTS;\n  const functionNames = options.functions ?? DEFAULT_PROMETHEUS_A2UI_FUNCTIONS;\n\n  const overrides = new Map<string, PrometheusA2uiComponentImplementation>();\n  for (const implementation of options.implementations ?? []) {\n    if (!(componentNames as readonly string[]).includes(implementation.name)) {\n      throw new Error(\n        `Custom A2UI component is not in the allowlist: ${implementation.name}`,\n      );\n    }\n    overrides.set(implementation.name, implementation);\n  }\n\n  const components = componentNames.map((name) => {\n    const custom = overrides.get(name);\n    if (custom) return custom;\n    const implementation = basicCatalog.components.get(name);\n    if (!implementation) {\n      throw new Error(`Official A2UI component is unavailable: ${name}`);\n    }\n    return implementation;\n  });\n\n  const functions = functionNames.map((name) => {\n    const implementation = basicCatalog.functions.get(name);\n    if (!implementation) {\n      throw new Error(`Official A2UI function is unavailable: ${name}`);\n    }\n    return implementation;\n  });\n\n  return new OfficialCatalog<PrometheusA2uiComponentImplementation>(\n    options.id ?? PROMETHEUS_A2UI_CATALOG_ID,\n    PROMETHEUS_A2UI_PROTOCOL_VERSION,\n    components,\n    functions,\n    basicCatalog.themeSchema,\n  );\n}\n","import { A2uiClientActionSchema } from \"@a2ui/web_core/v0_9\";\nimport type { A2uiClientAction } from \"@a2ui/web_core/v0_9\" with { \"resolution-mode\": \"import\" };\nimport type { z } from \"zod\";\n\nexport type A2uiActionDeniedCode =\n  | \"invalid-action\"\n  | \"unknown-action\"\n  | \"invalid-context\"\n  | \"unauthorized\"\n  | \"approval-required\"\n  | \"approval-denied\"\n  | \"execution-failed\";\n\nexport type A2uiAuthorizationDecision =\n  | boolean\n  | { allowed: boolean; reason?: string };\n\nexport interface A2uiApprovalRequest {\n  action: A2uiClientAction;\n  context: Record<string, unknown>;\n  rule: A2uiActionRule;\n}\n\nexport interface A2uiActionRule<\n  TContext extends Record<string, unknown> = Record<string, unknown>,\n> {\n  /** Exact official action name. Wildcards are intentionally unsupported. */\n  name: string;\n  /** Application-owned context schema evaluated after official action validation. */\n  contextSchema: z.ZodType<TContext>;\n  /** Destructive rules require an approval callback before execution. */\n  destructive?: boolean;\n  /** Tenant/scope/resource authorization. Absence means deny. */\n  authorize?: (\n    action: A2uiClientAction,\n    context: TContext,\n  ) => A2uiAuthorizationDecision | Promise<A2uiAuthorizationDecision>;\n  /** Store, adapter, or transport operation. */\n  execute: (action: A2uiClientAction, context: TContext) => unknown | Promise<unknown>;\n}\n\nexport type A2uiActionDecision =\n  | {\n      status: \"executed\";\n      action: A2uiClientAction;\n      result: unknown;\n    }\n  | {\n      status: \"denied\";\n      action: A2uiClientAction | null;\n      code: A2uiActionDeniedCode;\n      reason: string;\n      cause?: unknown;\n    };\n\nexport interface A2uiActionPolicy {\n  handle(action: unknown): Promise<A2uiActionDecision>;\n}\n\nexport interface A2uiActionPolicyOptions {\n  rules: readonly A2uiActionRule[];\n  requestApproval?: (request: A2uiApprovalRequest) => boolean | Promise<boolean>;\n  onDecision?: (decision: A2uiActionDecision) => void | Promise<void>;\n}\n\nfunction authorizationAllowed(decision: A2uiAuthorizationDecision): boolean {\n  return typeof decision === \"boolean\" ? decision : decision.allowed;\n}\n\nfunction authorizationReason(decision: A2uiAuthorizationDecision): string | undefined {\n  return typeof decision === \"boolean\" ? undefined : decision.reason;\n}\n\n/** Build a default-deny policy for official A2UI client actions. */\nexport function createA2uiActionPolicy(options: A2uiActionPolicyOptions): A2uiActionPolicy {\n  const rules = new Map<string, A2uiActionRule>();\n  for (const rule of options.rules) {\n    if (rules.has(rule.name)) {\n      throw new Error(`Duplicate A2UI action rule: ${rule.name}`);\n    }\n    rules.set(rule.name, rule);\n  }\n\n  const finish = async (decision: A2uiActionDecision): Promise<A2uiActionDecision> => {\n    await options.onDecision?.(decision);\n    return decision;\n  };\n\n  return {\n    async handle(input: unknown): Promise<A2uiActionDecision> {\n      const parsedAction = A2uiClientActionSchema.safeParse(input);\n      if (!parsedAction.success) {\n        return finish({\n          status: \"denied\",\n          action: null,\n          code: \"invalid-action\",\n          reason: \"The action does not match the official A2UI v0.9.1 action schema.\",\n          cause: parsedAction.error,\n        });\n      }\n\n      const action = parsedAction.data;\n      const rule = rules.get(action.name);\n      if (!rule) {\n        return finish({\n          status: \"denied\",\n          action,\n          code: \"unknown-action\",\n          reason: `A2UI action is not allowlisted: ${action.name}`,\n        });\n      }\n\n      const parsedContext = rule.contextSchema.safeParse(action.context);\n      if (!parsedContext.success) {\n        return finish({\n          status: \"denied\",\n          action,\n          code: \"invalid-context\",\n          reason: `A2UI action context is invalid for ${action.name}.`,\n          cause: parsedContext.error,\n        });\n      }\n\n      // Rules without explicit authorization are denied even when their name\n      // and schema match. Protocol validity never grants application authority.\n      if (!rule.authorize) {\n        return finish({\n          status: \"denied\",\n          action,\n          code: \"unauthorized\",\n          reason: `A2UI action has no application authorization rule: ${action.name}`,\n        });\n      }\n\n      const authorization = await rule.authorize(action, parsedContext.data);\n      if (!authorizationAllowed(authorization)) {\n        return finish({\n          status: \"denied\",\n          action,\n          code: \"unauthorized\",\n          reason:\n            authorizationReason(authorization) ??\n            `A2UI action was denied by application policy: ${action.name}`,\n        });\n      }\n\n      if (rule.destructive) {\n        if (!options.requestApproval) {\n          return finish({\n            status: \"denied\",\n            action,\n            code: \"approval-required\",\n            reason: `A2UI action requires explicit approval: ${action.name}`,\n          });\n        }\n\n        const approved = await options.requestApproval({\n          action,\n          context: parsedContext.data,\n          rule,\n        });\n        if (!approved) {\n          return finish({\n            status: \"denied\",\n            action,\n            code: \"approval-denied\",\n            reason: `A2UI action approval was denied: ${action.name}`,\n          });\n        }\n      }\n\n      try {\n        return finish({\n          status: \"executed\",\n          action,\n          result: await rule.execute(action, parsedContext.data),\n        });\n      } catch (cause) {\n        return finish({\n          status: \"denied\",\n          action,\n          code: \"execution-failed\",\n          reason: `A2UI action execution failed: ${action.name}`,\n          cause,\n        });\n      }\n    },\n  };\n}\n\n/** Policy used when an application has not installed any action authority. */\nexport function createDenyAllA2uiActionPolicy(\n  onDecision?: A2uiActionPolicyOptions[\"onDecision\"],\n): A2uiActionPolicy {\n  return createA2uiActionPolicy({ rules: [], onDecision });\n}\n","import type { A2uiMessage } from \"@a2ui/web_core/v0_9\" with { \"resolution-mode\": \"import\" };\nimport { z } from \"zod\";\n\n/**\n * A2UI protocol version this build speaks on the wire.\n *\n * Surface messages are validated against this literal, so a peer announcing a\n * different version is rejected rather than partially parsed.\n */\nexport const PROMETHEUS_A2UI_RC_PROTOCOL_VERSION = \"v1.0\" as const;\n\nconst componentSchema = z\n  .object({ id: z.string().min(1), component: z.string().min(1) })\n  .passthrough();\nconst surfaceIdSchema = z.string().min(1);\nconst createSurfaceSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    createSurface: z\n      .object({\n        surfaceId: surfaceIdSchema,\n        catalogId: z.string().min(1).optional(),\n        sendDataModel: z.boolean().optional(),\n        components: z.array(componentSchema).min(1).optional(),\n        dataModel: z.record(z.string(), z.unknown()).optional(),\n      })\n      .strict(),\n  })\n  .strict();\nconst updateComponentsSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    updateComponents: z\n      .object({\n        surfaceId: surfaceIdSchema,\n        components: z.array(componentSchema).min(1),\n      })\n      .strict(),\n  })\n  .strict();\nconst updateDataModelSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    updateDataModel: z\n      .object({\n        surfaceId: surfaceIdSchema,\n        path: z.string().optional(),\n        value: z.unknown(),\n      })\n      .strict(),\n  })\n  .strict();\nconst deleteSurfaceSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    deleteSurface: z.object({ surfaceId: surfaceIdSchema }).strict(),\n  })\n  .strict();\nconst callFunctionSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    functionCallId: z.string().min(1),\n    wantResponse: z.boolean().optional(),\n    callFunction: z\n      .object({\n        call: z.string().min(1),\n        catalogId: z.string().min(1).optional(),\n        args: z.record(z.string(), z.unknown()).optional(),\n      })\n      .passthrough(),\n  })\n  .strict();\nconst actionResponseSchema = z\n  .object({\n    version: z.literal(PROMETHEUS_A2UI_RC_PROTOCOL_VERSION),\n    actionId: z.string().min(1),\n    actionResponse: z\n      .object({ value: z.unknown().optional(), error: z.unknown().optional() })\n      .strict()\n      .refine((value) => (\"value\" in value) !== (\"error\" in value)),\n  })\n  .strict();\n\nexport const prometheusA2uiV1MessageSchema = z.union([\n  createSurfaceSchema,\n  updateComponentsSchema,\n  updateDataModelSchema,\n  deleteSurfaceSchema,\n  callFunctionSchema,\n  actionResponseSchema,\n]);\n\nexport type PrometheusA2uiV1Message = z.infer<typeof prometheusA2uiV1MessageSchema>;\nexport type PrometheusA2uiV1FunctionCall = z.infer<typeof callFunctionSchema>;\nexport type PrometheusA2uiV1ActionResponse = z.infer<typeof actionResponseSchema>;\n\nexport interface PrometheusA2uiV1ActionMetadata {\n  surfaceId: string;\n  sourceComponentId: string;\n  wantResponse: boolean;\n  responsePath?: string;\n}\n\nexport interface NormalizedA2uiV1Message {\n  renderMessages: A2uiMessage[];\n  protocolMessage?: PrometheusA2uiV1FunctionCall | PrometheusA2uiV1ActionResponse;\n  actions: PrometheusA2uiV1ActionMetadata[];\n}\n\nfunction normalizeComponents(\n  surfaceId: string,\n  components: Array<Record<string, unknown>>,\n  catalogId: string,\n): { components: Array<Record<string, unknown>>; actions: PrometheusA2uiV1ActionMetadata[] } {\n  const actions: PrometheusA2uiV1ActionMetadata[] = [];\n  const normalized = components.map((input) => {\n    const component = structuredClone(input);\n    if (component.catalogId !== undefined && component.catalogId !== catalogId) {\n      throw new Error(\n        `A2UI v1.0 component ${String(component.id)} requests unsupported catalog ${String(component.catalogId)}.`,\n      );\n    }\n    delete component.catalogId;\n    const action = component.action;\n    if (action && typeof action === \"object\" && \"event\" in action) {\n      const event = (action as { event?: unknown }).event;\n      if (event && typeof event === \"object\") {\n        const eventRecord = event as Record<string, unknown>;\n        const wantResponse = eventRecord.wantResponse === true;\n        const responsePath =\n          typeof eventRecord.responsePath === \"string\" ? eventRecord.responsePath : undefined;\n        if (wantResponse || responsePath) {\n          actions.push({\n            surfaceId,\n            sourceComponentId: String(component.id),\n            wantResponse,\n            ...(responsePath ? { responsePath } : {}),\n          });\n        }\n        delete eventRecord.wantResponse;\n        delete eventRecord.responsePath;\n      }\n    }\n    return component;\n  });\n  return { components: normalized, actions };\n}\n\nexport function normalizeA2uiV1Message(\n  input: unknown,\n  defaultCatalogId: string,\n  surfaceCatalogs: ReadonlyMap<string, string>,\n): NormalizedA2uiV1Message {\n  const message = prometheusA2uiV1MessageSchema.parse(input);\n  if (\"callFunction\" in message || \"actionResponse\" in message) {\n    return { renderMessages: [], protocolMessage: message, actions: [] };\n  }\n  if (\"createSurface\" in message) {\n    const surface = message.createSurface;\n    const catalogId = surface.catalogId ?? defaultCatalogId;\n    const renderMessages: A2uiMessage[] = [\n      {\n        version: \"v0.9.1\",\n        createSurface: {\n          surfaceId: surface.surfaceId,\n          catalogId,\n          ...(surface.sendDataModel === undefined\n            ? {}\n            : { sendDataModel: surface.sendDataModel }),\n        },\n      },\n    ];\n    const normalized = surface.components\n      ? normalizeComponents(surface.surfaceId, surface.components, catalogId)\n      : { components: [], actions: [] };\n    if (normalized.components.length > 0) {\n      renderMessages.push({\n        version: \"v0.9.1\",\n        updateComponents: {\n          surfaceId: surface.surfaceId,\n          components: normalized.components,\n        },\n      } as A2uiMessage);\n    }\n    if (surface.dataModel !== undefined) {\n      renderMessages.push({\n        version: \"v0.9.1\",\n        updateDataModel: {\n          surfaceId: surface.surfaceId,\n          path: \"/\",\n          value: surface.dataModel,\n        },\n      });\n    }\n    return { renderMessages, actions: normalized.actions };\n  }\n  if (\"updateComponents\" in message) {\n    const surface = message.updateComponents;\n    const catalogId = surfaceCatalogs.get(surface.surfaceId) ?? defaultCatalogId;\n    const normalized = normalizeComponents(surface.surfaceId, surface.components, catalogId);\n    return {\n      renderMessages: [\n        {\n          version: \"v0.9.1\",\n          updateComponents: {\n            surfaceId: surface.surfaceId,\n            components: normalized.components,\n          },\n        } as A2uiMessage,\n      ],\n      actions: normalized.actions,\n    };\n  }\n  if (\"updateDataModel\" in message) {\n    return {\n      renderMessages: [\n        {\n          version: \"v0.9.1\",\n          updateDataModel: {\n            ...message.updateDataModel,\n            path: message.updateDataModel.path ?? \"/\",\n          },\n        },\n      ],\n      actions: [],\n    };\n  }\n  return {\n    renderMessages: [\n      { version: \"v0.9.1\", deleteSurface: message.deleteSurface },\n    ],\n    actions: [],\n  };\n}\n","import {\n  A2uiMessageListSchema,\n  A2uiMessageListWrapperSchema,\n  MessageProcessor as OfficialMessageProcessor,\n} from \"@a2ui/web_core/v0_9\";\nimport type {\n  A2uiClientAction,\n  A2uiClientCapabilities,\n  A2uiClientDataModel,\n  A2uiMessage,\n  Catalog,\n  MessageProcessor,\n  SurfaceModel,\n} from \"@a2ui/web_core/v0_9\" with { \"resolution-mode\": \"import\" };\nimport {\n  createDenyAllA2uiActionPolicy,\n  type A2uiActionDecision,\n  type A2uiActionPolicy,\n} from \"../policy/action-policy.js\";\nimport {\n  PROMETHEUS_A2UI_PROTOCOL_VERSION,\n  createPrometheusA2uiCatalog,\n} from \"./catalog.js\";\nimport type { PrometheusA2uiComponentImplementation } from \"./types.js\";\nimport {\n  PROMETHEUS_A2UI_RC_PROTOCOL_VERSION,\n  normalizeA2uiV1Message,\n  type PrometheusA2uiV1ActionMetadata,\n  type PrometheusA2uiV1ActionResponse,\n  type PrometheusA2uiV1FunctionCall,\n} from \"./v1-compat.js\";\n\nexport type PrometheusA2uiErrorCode =\n  | \"invalid-message\"\n  | \"unsupported-protocol-version\"\n  | \"component-not-allowed\"\n  | \"runtime-disposed\";\n\nexport class PrometheusA2uiError extends Error {\n  readonly code: PrometheusA2uiErrorCode;\n  readonly cause?: unknown;\n\n  constructor(code: PrometheusA2uiErrorCode, message: string, cause?: unknown) {\n    super(message);\n    this.name = \"PrometheusA2uiError\";\n    this.code = code;\n    this.cause = cause;\n  }\n}\n\nexport type PrometheusA2uiMessageInput =\n  | readonly unknown[]\n  | { readonly messages: readonly unknown[] };\n\nexport interface CreatePrometheusA2uiRuntimeOptions {\n  /** Explicit catalogs advertised to and accepted from agents. */\n  catalogs?: readonly Catalog<PrometheusA2uiComponentImplementation>[];\n  /** Defaults to a deny-all policy; applications must install authority. */\n  actionPolicy?: A2uiActionPolicy;\n  /** Receives the auditable outcome of every official client action. */\n  onActionDecision?: (decision: A2uiActionDecision) => void | Promise<void>;\n  /** Receives A2UI v1.0 renderer-to-agent action/function/error messages. */\n  onRendererMessage?: (message: PrometheusA2uiRendererMessage) => void | Promise<void>;\n  /** Application-owned implementation for v1.0 agent-initiated function calls. */\n  onFunctionCall?: (call: PrometheusA2uiV1FunctionCall) => unknown | Promise<unknown>;\n}\n\nexport type PrometheusA2uiRendererMessage =\n  | {\n      version: typeof PROMETHEUS_A2UI_RC_PROTOCOL_VERSION;\n      action: A2uiClientAction & { wantResponse?: boolean; actionId?: string };\n    }\n  | {\n      version: typeof PROMETHEUS_A2UI_RC_PROTOCOL_VERSION;\n      functionResponse: { functionCallId: string; call: string; value: unknown };\n    }\n  | {\n      version: typeof PROMETHEUS_A2UI_RC_PROTOCOL_VERSION;\n      error: {\n        code: string;\n        message: string;\n        functionCallId: string;\n      };\n    };\n\nfunction parseMessages(input: PrometheusA2uiMessageInput): A2uiMessage[] {\n  const parsed = Array.isArray(input)\n    ? A2uiMessageListSchema.safeParse(input)\n    : A2uiMessageListWrapperSchema.safeParse(input);\n\n  if (!parsed.success) {\n    throw new PrometheusA2uiError(\n      \"invalid-message\",\n      \"Input does not match the official A2UI v0.9 message schema.\",\n      parsed.error,\n    );\n  }\n\n  const messages = Array.isArray(parsed.data) ? parsed.data : parsed.data.messages;\n  for (const message of messages) {\n    if (message.version !== PROMETHEUS_A2UI_PROTOCOL_VERSION) {\n      throw new PrometheusA2uiError(\n        \"unsupported-protocol-version\",\n        `Expected ${PROMETHEUS_A2UI_PROTOCOL_VERSION}; received ${message.version}.`,\n      );\n    }\n  }\n  return messages;\n}\n\n/**\n * Thin lifecycle wrapper around the official A2UI v0.9 MessageProcessor.\n * It adds exact-version enforcement, catalog/component allowlisting, policy\n * dispatch, and a React-compatible subscription snapshot—never a second\n * protocol parser or surface model.\n */\nexport class PrometheusA2uiRuntime {\n  readonly processor: MessageProcessor<PrometheusA2uiComponentImplementation>;\n  private readonly catalogs: readonly Catalog<PrometheusA2uiComponentImplementation>[];\n  private readonly actionPolicy: A2uiActionPolicy;\n  private readonly onActionDecision?: CreatePrometheusA2uiRuntimeOptions[\"onActionDecision\"];\n  private readonly onRendererMessage?: CreatePrometheusA2uiRuntimeOptions[\"onRendererMessage\"];\n  private readonly onFunctionCall?: CreatePrometheusA2uiRuntimeOptions[\"onFunctionCall\"];\n  private readonly listeners = new Set<() => void>();\n  private readonly subscriptions: Array<{ unsubscribe(): void }> = [];\n  private snapshot: readonly SurfaceModel<PrometheusA2uiComponentImplementation>[] = [];\n  private disposed = false;\n  private actionSequence = 0;\n  private readonly surfaceCatalogs = new Map<string, string>();\n  private readonly v1Surfaces = new Set<string>();\n  private readonly v1Actions = new Map<string, PrometheusA2uiV1ActionMetadata>();\n  private readonly pendingActions = new Map<\n    string,\n    { surfaceId: string; responsePath?: string }\n  >();\n  private readonly agUiActivitySurfaces = new Map<string, Set<string>>();\n\n  constructor(options: CreatePrometheusA2uiRuntimeOptions = {}) {\n    const catalogs = [...(options.catalogs ?? [createPrometheusA2uiCatalog()])];\n    if (catalogs.length === 0) {\n      throw new Error(\"At least one allowlisted A2UI catalog is required.\");\n    }\n    if (new Set(catalogs.map((catalog) => catalog.id)).size !== catalogs.length) {\n      throw new Error(\"A2UI catalog ids must be unique.\");\n    }\n\n    this.catalogs = catalogs;\n    this.actionPolicy = options.actionPolicy ?? createDenyAllA2uiActionPolicy();\n    this.onActionDecision = options.onActionDecision;\n    this.onRendererMessage = options.onRendererMessage;\n    this.onFunctionCall = options.onFunctionCall;\n    this.processor = new OfficialMessageProcessor(\n      catalogs,\n      async (action) => {\n        const decision = await this.actionPolicy.handle(action);\n        await this.onActionDecision?.(decision);\n        if (decision.status === \"executed\") {\n          await this.forwardV1Action(decision.action);\n        }\n      },\n      { version: PROMETHEUS_A2UI_PROTOCOL_VERSION },\n    );\n\n    const update = () => this.refreshSnapshot();\n    this.subscriptions.push(\n      this.processor.onSurfaceCreated(update),\n      this.processor.onSurfaceDeleted(update),\n    );\n    this.refreshSnapshot();\n  }\n\n  /** Validate and process official v0.9.1 or v1.0 RC messages in order. */\n  processMessages(input: PrometheusA2uiMessageInput): void {\n    this.assertActive();\n    const rawMessages: readonly unknown[] = Array.isArray(input)\n      ? input\n      : (input as { readonly messages: readonly unknown[] }).messages;\n    if (!Array.isArray(rawMessages)) {\n      throw new PrometheusA2uiError(\"invalid-message\", \"A2UI input must contain messages.\");\n    }\n    const messages: A2uiMessage[] = [];\n    const protocolMessages: Array<\n      PrometheusA2uiV1FunctionCall | PrometheusA2uiV1ActionResponse\n    > = [];\n    const nextSurfaceCatalogs = new Map(this.surfaceCatalogs);\n    const nextV1Surfaces = new Set(this.v1Surfaces);\n    const nextV1Actions = new Map(this.v1Actions);\n    const clearSurfaceActions = (surfaceId: string): void => {\n      for (const key of nextV1Actions.keys()) {\n        if (key.startsWith(`${surfaceId}:`)) nextV1Actions.delete(key);\n      }\n    };\n\n    try {\n      for (const raw of rawMessages) {\n        if (\n          raw &&\n          typeof raw === \"object\" &&\n          (raw as { version?: unknown }).version === PROMETHEUS_A2UI_RC_PROTOCOL_VERSION\n        ) {\n          const normalized = normalizeA2uiV1Message(\n            raw,\n            this.catalogs[0]!.id,\n            nextSurfaceCatalogs,\n          );\n          messages.push(...normalized.renderMessages);\n          if (normalized.protocolMessage) protocolMessages.push(normalized.protocolMessage);\n          if (\"createSurface\" in (raw as object)) {\n            const create = (raw as { createSurface: { surfaceId: string; catalogId?: string } })\n              .createSurface;\n            nextSurfaceCatalogs.set(\n              create.surfaceId,\n              create.catalogId ?? this.catalogs[0]!.id,\n            );\n            nextV1Surfaces.add(create.surfaceId);\n            clearSurfaceActions(create.surfaceId);\n          } else if (\"updateComponents\" in (raw as object)) {\n            const update = (raw as {\n              updateComponents: {\n                surfaceId: string;\n                components: Array<{ id: string }>;\n              };\n            }).updateComponents;\n            for (const component of update.components) {\n              nextV1Actions.delete(`${update.surfaceId}:${component.id}`);\n            }\n          } else if (\"deleteSurface\" in (raw as object)) {\n            const surfaceId = (raw as { deleteSurface: { surfaceId: string } }).deleteSurface\n              .surfaceId;\n            nextSurfaceCatalogs.delete(surfaceId);\n            nextV1Surfaces.delete(surfaceId);\n            clearSurfaceActions(surfaceId);\n          }\n          for (const metadata of normalized.actions) {\n            nextV1Actions.set(\n              `${metadata.surfaceId}:${metadata.sourceComponentId}`,\n              metadata,\n            );\n          }\n        } else {\n          messages.push(...parseMessages([raw]));\n        }\n      }\n    } catch (cause) {\n      if (cause instanceof PrometheusA2uiError) throw cause;\n      throw new PrometheusA2uiError(\n        \"invalid-message\",\n        \"Input does not match the supported A2UI v0.9.1 or v1.0 RC schema.\",\n        cause,\n      );\n    }\n\n    this.preflight(structuredClone(messages));\n\n    for (const message of messages) {\n      this.assertAllowedComponents(message);\n      this.processor.processMessages([structuredClone(message)]);\n    }\n    this.surfaceCatalogs.clear();\n    for (const [surfaceId, catalogId] of nextSurfaceCatalogs) {\n      this.surfaceCatalogs.set(surfaceId, catalogId);\n    }\n    this.v1Surfaces.clear();\n    for (const surfaceId of nextV1Surfaces) this.v1Surfaces.add(surfaceId);\n    this.v1Actions.clear();\n    for (const [key, metadata] of nextV1Actions) this.v1Actions.set(key, metadata);\n    for (const message of protocolMessages) this.handleV1ProtocolMessage(message);\n    this.refreshSnapshot();\n  }\n\n  /** Consume the AG-UI 0.0.59 A2UI activity snapshot convention. */\n  processAgUiEvent(input: unknown): boolean {\n    this.assertActive();\n    if (!input || typeof input !== \"object\") return false;\n    const event = input as Record<string, unknown>;\n    if (event.type !== \"ACTIVITY_SNAPSHOT\" || event.activityType !== \"a2ui-surface\") {\n      return false;\n    }\n    if (typeof event.messageId !== \"string\" || !event.content || typeof event.content !== \"object\") {\n      throw new PrometheusA2uiError(\"invalid-message\", \"Malformed AG-UI A2UI activity.\");\n    }\n    const operations = (event.content as Record<string, unknown>).a2ui_operations;\n    if (!Array.isArray(operations)) {\n      throw new PrometheusA2uiError(\n        \"invalid-message\",\n        \"AG-UI A2UI activity omitted content.a2ui_operations.\",\n      );\n    }\n    if (event.replace === false && this.agUiActivitySurfaces.has(event.messageId)) {\n      return true;\n    }\n    const surfaces = new Set<string>();\n    const normalized = operations.map((operation) => {\n      if (!operation || typeof operation !== \"object\") return operation;\n      const message = structuredClone(operation) as Record<string, unknown>;\n      if (message.version === \"v0.9\") message.version = PROMETHEUS_A2UI_PROTOCOL_VERSION;\n      for (const key of [\"createSurface\", \"updateComponents\", \"updateDataModel\", \"deleteSurface\"]) {\n        const value = message[key];\n        if (value && typeof value === \"object\") {\n          const surfaceId = (value as Record<string, unknown>).surfaceId;\n          if (typeof surfaceId === \"string\") surfaces.add(surfaceId);\n        }\n      }\n      return message;\n    });\n    const prior = this.agUiActivitySurfaces.get(event.messageId) ?? new Set<string>();\n    const deletes = [...prior]\n      .filter((surfaceId) => this.getSurface(surfaceId))\n      .map((surfaceId) => ({\n        version: PROMETHEUS_A2UI_PROTOCOL_VERSION,\n        deleteSurface: { surfaceId },\n      }));\n    this.processMessages([...deletes, ...normalized]);\n    this.agUiActivitySurfaces.set(event.messageId, surfaces);\n    return true;\n  }\n\n  getSurface(id: string): SurfaceModel<PrometheusA2uiComponentImplementation> | undefined {\n    this.assertActive();\n    return this.processor.model.getSurface(id);\n  }\n\n  getSurfaces = (): readonly SurfaceModel<PrometheusA2uiComponentImplementation>[] => this.snapshot;\n\n  getClientCapabilities(options?: { includeInlineCatalogs?: boolean }): A2uiClientCapabilities {\n    this.assertActive();\n    // web_core 0.12.0 types the result as a version-keyed record; requesting\n    // exactly v0.9.1 yields the `{ \"v0.9.1\": ... }` v0.9 capabilities shape.\n    return this.processor.getRendererCapabilities({\n      ...options,\n      versions: [PROMETHEUS_A2UI_PROTOCOL_VERSION],\n    }) as A2uiClientCapabilities;\n  }\n\n  getClientDataModel(): A2uiClientDataModel | undefined {\n    this.assertActive();\n    // With an explicit version, web_core 0.12.0 returns `{ version, surfaces }`\n    // echoing that version, which is the v0.9 client data model shape.\n    return this.processor.getRendererDataModel(PROMETHEUS_A2UI_PROTOCOL_VERSION) as\n      | A2uiClientDataModel\n      | undefined;\n  }\n\n  subscribe = (listener: () => void): (() => void) => {\n    this.assertActive();\n    this.listeners.add(listener);\n    return () => this.listeners.delete(listener);\n  };\n\n  dispose(): void {\n    if (this.disposed) return;\n    this.disposed = true;\n    for (const subscription of this.subscriptions) subscription.unsubscribe();\n    this.subscriptions.length = 0;\n    this.processor.model.dispose();\n    this.snapshot = [];\n    this.listeners.clear();\n    this.pendingActions.clear();\n    this.agUiActivitySurfaces.clear();\n  }\n\n  private async forwardV1Action(action: A2uiClientAction): Promise<void> {\n    if (!this.v1Surfaces.has(action.surfaceId)) return;\n    const metadata = this.v1Actions.get(`${action.surfaceId}:${action.sourceComponentId}`);\n    const actionId = metadata?.wantResponse\n      ? `${action.surfaceId}:${action.sourceComponentId}:${++this.actionSequence}`\n      : undefined;\n    if (actionId) {\n      this.pendingActions.set(actionId, {\n        surfaceId: action.surfaceId,\n        ...(metadata?.responsePath ? { responsePath: metadata.responsePath } : {}),\n      });\n    }\n    await this.onRendererMessage?.({\n      version: PROMETHEUS_A2UI_RC_PROTOCOL_VERSION,\n      action: {\n        ...action,\n        ...(metadata?.wantResponse ? { wantResponse: true, actionId } : {}),\n      },\n    });\n  }\n\n  private handleV1ProtocolMessage(\n    message: PrometheusA2uiV1FunctionCall | PrometheusA2uiV1ActionResponse,\n  ): void {\n    if (\"actionResponse\" in message) {\n      const responseMessage = message as PrometheusA2uiV1ActionResponse;\n      const pending = this.pendingActions.get(responseMessage.actionId);\n      if (!pending) return;\n      this.pendingActions.delete(responseMessage.actionId);\n      if (pending.responsePath && \"value\" in responseMessage.actionResponse) {\n        this.processor.processMessages([\n          {\n            version: PROMETHEUS_A2UI_PROTOCOL_VERSION,\n            updateDataModel: {\n              surfaceId: pending.surfaceId,\n              path: pending.responsePath,\n              value: responseMessage.actionResponse.value,\n            },\n          },\n        ]);\n      }\n      return;\n    }\n\n    const functionMessage = message as PrometheusA2uiV1FunctionCall;\n\n    void Promise.resolve()\n      .then(async () => {\n        if (!this.onFunctionCall) throw new Error(\"No application function handler is installed.\");\n        const value = await this.onFunctionCall(functionMessage);\n        if (functionMessage.wantResponse !== false) {\n          await this.onRendererMessage?.({\n            version: PROMETHEUS_A2UI_RC_PROTOCOL_VERSION,\n            functionResponse: {\n              functionCallId: functionMessage.functionCallId,\n              call: functionMessage.callFunction.call,\n              value,\n            },\n          });\n        }\n      })\n      .catch(async (cause: unknown) => {\n        if (functionMessage.wantResponse !== false) {\n          await this.onRendererMessage?.({\n            version: PROMETHEUS_A2UI_RC_PROTOCOL_VERSION,\n            error: {\n              code: \"FUNCTION_FAILED\",\n              message: cause instanceof Error ? cause.message : String(cause),\n              functionCallId: functionMessage.functionCallId,\n            },\n          });\n        }\n      });\n  }\n\n  private preflight(messages: readonly A2uiMessage[]): void {\n    const shadow = new OfficialMessageProcessor<PrometheusA2uiComponentImplementation>(\n      [...this.catalogs],\n      async () => undefined,\n      { version: PROMETHEUS_A2UI_PROTOCOL_VERSION },\n    );\n\n    try {\n      for (const [surfaceId, surface] of this.processor.model.surfacesMap) {\n        shadow.processMessages([\n          {\n            version: PROMETHEUS_A2UI_PROTOCOL_VERSION,\n            createSurface: {\n              surfaceId,\n              catalogId: surface.catalog.id,\n              theme: structuredClone(surface.theme),\n              sendDataModel: surface.sendDataModel,\n            },\n          },\n        ]);\n\n        const components = [...surface.componentsModel.entries].map(\n          ([id, component]) => ({\n            ...structuredClone(component.properties),\n            id,\n            component: component.type,\n          }),\n        );\n        if (components.length > 0) {\n          shadow.processMessages([\n            {\n              version: PROMETHEUS_A2UI_PROTOCOL_VERSION,\n              updateComponents: { surfaceId, components },\n            },\n          ]);\n        }\n\n        const data = surface.dataModel.get(\"/\");\n        if (data !== undefined) {\n          shadow.processMessages([\n            {\n              version: PROMETHEUS_A2UI_PROTOCOL_VERSION,\n              updateDataModel: {\n                surfaceId,\n                path: \"/\",\n                value: structuredClone(data),\n              },\n            },\n          ]);\n        }\n      }\n\n      for (const message of messages) {\n        this.assertAllowedComponents(message, shadow);\n        shadow.processMessages([message]);\n      }\n    } finally {\n      shadow.model.dispose();\n    }\n  }\n\n  private assertAllowedComponents(\n    message: A2uiMessage,\n    processor: MessageProcessor<PrometheusA2uiComponentImplementation> =\n      this.processor,\n  ): void {\n    if (!(\"updateComponents\" in message)) return;\n    const surface = processor.model.getSurface(message.updateComponents.surfaceId);\n    if (!surface) return; // The official processor emits the canonical state error.\n\n    for (const component of message.updateComponents.components) {\n      if (!surface.catalog.components.has(component.component)) {\n        throw new PrometheusA2uiError(\n          \"component-not-allowed\",\n          `Component is not allowlisted by catalog ${surface.catalog.id}: ${component.component}`,\n        );\n      }\n    }\n  }\n\n  private refreshSnapshot(): void {\n    if (this.disposed) return;\n    const next = [...this.processor.model.surfacesMap.values()];\n    const unchanged =\n      next.length === this.snapshot.length &&\n      next.every((surface, index) => surface === this.snapshot[index]);\n    if (unchanged) return;\n    this.snapshot = Object.freeze(next);\n    for (const listener of this.listeners) listener();\n  }\n\n  private assertActive(): void {\n    if (this.disposed) {\n      throw new PrometheusA2uiError(\n        \"runtime-disposed\",\n        \"The Prometheus A2UI runtime has been disposed.\",\n      );\n    }\n  }\n}\n\nexport function createPrometheusA2uiRuntime(\n  options: CreatePrometheusA2uiRuntimeOptions = {},\n): PrometheusA2uiRuntime {\n  return new PrometheusA2uiRuntime(options);\n}\n","import { z } from \"zod\";\nimport {\n  graphStore as defaultGraphStore,\n  type GraphStore,\n} from \"@prometheus-ags/entity-graph-core\";\nimport {\n  createA2uiActionPolicy,\n  type A2uiActionDecision,\n  type A2uiActionPolicy,\n  type A2uiApprovalRequest,\n  type A2uiAuthorizationDecision,\n  type A2uiActionRule,\n} from \"./action-policy.js\";\n\nexport const ENTITY_GRAPH_A2UI_ACTIONS = {\n  upsert: \"prometheus.entity.upsert\",\n  replace: \"prometheus.entity.replace\",\n  remove: \"prometheus.entity.remove\",\n  patch: \"prometheus.entity.patch\",\n  unpatch: \"prometheus.entity.unpatch\",\n  clearPatch: \"prometheus.entity.clear-patch\",\n} as const;\n\nexport type EntityGraphA2uiActionName =\n  (typeof ENTITY_GRAPH_A2UI_ACTIONS)[keyof typeof ENTITY_GRAPH_A2UI_ACTIONS];\n\nexport interface EntityGraphA2uiEntityPolicy {\n  /** Exact graph actions allowed for this entity type. */\n  actions: readonly EntityGraphA2uiActionName[];\n  /** Exact fields the agent may write or unpatch. */\n  fields: readonly string[];\n}\n\nexport interface EntityGraphA2uiAuthorizationContext {\n  actionName: EntityGraphA2uiActionName;\n  entityType: string;\n  entityId: string;\n  tenantId?: string;\n  fields: readonly string[];\n  rawContext: Record<string, unknown>;\n}\n\nexport interface CreateEntityGraphA2uiActionPolicyOptions {\n  /** Inject a store for isolation/testing; defaults to the canonical graph. */\n  graphStore?: GraphStore;\n  /** Entity/action/field allowlist. Missing entity types fail closed. */\n  entities: Readonly<Record<string, EntityGraphA2uiEntityPolicy>>;\n  /** Application-owned tenant/scope authorization. Required and fail-closed. */\n  authorize: (\n    context: EntityGraphA2uiAuthorizationContext,\n  ) => A2uiAuthorizationDecision | Promise<A2uiAuthorizationDecision>;\n  /** Required at runtime for destructive `replace` and `remove` actions. */\n  requestApproval?: (request: A2uiApprovalRequest) => boolean | Promise<boolean>;\n  onDecision?: (decision: A2uiActionDecision) => void | Promise<void>;\n}\n\nconst identitySchema = {\n  entityType: z.string().min(1),\n  entityId: z.string().min(1),\n  tenantId: z.string().min(1).optional(),\n};\n\nconst dataContextSchema = z\n  .object({\n    ...identitySchema,\n    data: z.record(z.unknown()),\n  })\n  .strict();\n\nconst identityContextSchema = z.object(identitySchema).strict();\n\nconst keysContextSchema = z\n  .object({\n    ...identitySchema,\n    keys: z.array(z.string().min(1)).min(1),\n  })\n  .strict();\n\nfunction uniqueFields(fields: readonly string[]): readonly string[] {\n  return [...new Set(fields)].sort();\n}\n\n/**\n * Build the stable surface-action to normalized-entity bridge.\n *\n * The helper owns store writes; renderer components only emit official A2UI\n * actions through their hooks/runtime.\n */\nexport function createEntityGraphA2uiActionPolicy(\n  options: CreateEntityGraphA2uiActionPolicyOptions,\n): A2uiActionPolicy {\n  const store = options.graphStore ?? defaultGraphStore;\n\n  const authorize = async (\n    actionName: EntityGraphA2uiActionName,\n    context: Record<string, unknown>,\n    fields: readonly string[],\n  ): Promise<A2uiAuthorizationDecision> => {\n    const entityType = String(context.entityType);\n    const entityId = String(context.entityId);\n    const entityPolicy = options.entities[entityType];\n\n    if (!entityPolicy) {\n      return { allowed: false, reason: `Entity type is not allowlisted: ${entityType}` };\n    }\n    if (!entityPolicy.actions.includes(actionName)) {\n      return { allowed: false, reason: `Action is not allowed for ${entityType}: ${actionName}` };\n    }\n\n    const allowedFields = new Set(entityPolicy.fields);\n    const deniedField = fields.find((field) => !allowedFields.has(field));\n    if (deniedField) {\n      return {\n        allowed: false,\n        reason: `Field is not allowlisted for ${entityType}: ${deniedField}`,\n      };\n    }\n\n    return options.authorize({\n      actionName,\n      entityType,\n      entityId,\n      tenantId: typeof context.tenantId === \"string\" ? context.tenantId : undefined,\n      fields: uniqueFields(fields),\n      rawContext: context,\n    });\n  };\n\n  const dataRule = (\n    name: EntityGraphA2uiActionName,\n    destructive: boolean,\n    execute: (state: ReturnType<GraphStore[\"getState\"]>, type: string, id: string, data: Record<string, unknown>) => void,\n  ): A2uiActionRule => ({\n    name,\n    contextSchema: dataContextSchema,\n    destructive,\n    authorize: (_action, context) => {\n      const data = context.data as Record<string, unknown>;\n      return authorize(name, context, Object.keys(data));\n    },\n    execute: (_action, context) => {\n      execute(\n        store.getState(),\n        String(context.entityType),\n        String(context.entityId),\n        context.data as Record<string, unknown>,\n      );\n    },\n  });\n\n  const identityRule = (\n    name: EntityGraphA2uiActionName,\n    destructive: boolean,\n    execute: (state: ReturnType<GraphStore[\"getState\"]>, type: string, id: string) => void,\n  ): A2uiActionRule => ({\n    name,\n    contextSchema: identityContextSchema,\n    destructive,\n    authorize: (_action, context) => authorize(name, context, []),\n    execute: (_action, context) => {\n      execute(store.getState(), String(context.entityType), String(context.entityId));\n    },\n  });\n\n  const rules: A2uiActionRule[] = [\n    dataRule(ENTITY_GRAPH_A2UI_ACTIONS.upsert, false, (state, type, id, data) => {\n      state.upsertEntity(type, id, data);\n    }),\n    dataRule(ENTITY_GRAPH_A2UI_ACTIONS.replace, true, (state, type, id, data) => {\n      state.replaceEntity(type, id, data);\n    }),\n    dataRule(ENTITY_GRAPH_A2UI_ACTIONS.patch, false, (state, type, id, data) => {\n      state.patchEntity(type, id, data);\n    }),\n    identityRule(ENTITY_GRAPH_A2UI_ACTIONS.remove, true, (state, type, id) => {\n      state.removeEntity(type, id);\n      state.removeIdFromAllLists(type, id);\n    }),\n    identityRule(ENTITY_GRAPH_A2UI_ACTIONS.clearPatch, false, (state, type, id) => {\n      state.clearPatch(type, id);\n    }),\n    {\n      name: ENTITY_GRAPH_A2UI_ACTIONS.unpatch,\n      contextSchema: keysContextSchema,\n      authorize: (_action, context) => {\n        const keys = context.keys as string[];\n        return authorize(\n          ENTITY_GRAPH_A2UI_ACTIONS.unpatch,\n          context,\n          keys,\n        );\n      },\n      execute: (_action, context) => {\n        store.getState().unpatchEntity(\n          String(context.entityType),\n          String(context.entityId),\n          context.keys as string[],\n        );\n      },\n    },\n  ];\n\n  return createA2uiActionPolicy({\n    rules,\n    requestApproval: options.requestApproval,\n    onDecision: options.onDecision,\n  });\n}\n","// Utilities\n//\n\nimport * as mdurl from 'mdurl'\nimport * as ucmicro from 'uc.micro'\nimport { decodeHTML } from 'entities'\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\n\nfunction isString (obj) { return _class(obj) === '[object String]' }\n\nconst _hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction has (object, key) {\n  return _hasOwnProperty.call(object, key)\n}\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n  const sources = Array.prototype.slice.call(arguments, 1)\n\n  sources.forEach(function (source) {\n    if (!source) { return }\n\n    if (typeof source !== 'object') {\n      throw new TypeError(source + 'must be object')\n    }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key]\n    })\n  })\n\n  return obj\n}\n\n// Remove element from array and put another array at those position.\n// Useful for some operations with tokens\nfunction arrayReplaceAt (src, pos, newElements) {\n  return [].concat(src.slice(0, pos), newElements, src.slice(pos + 1))\n}\n\nfunction isValidEntityCode (c) {\n  // broken sequence\n  if (c >= 0xD800 && c <= 0xDFFF) { return false }\n  // never used\n  if (c >= 0xFDD0 && c <= 0xFDEF) { return false }\n  if ((c & 0xFFFF) === 0xFFFF || (c & 0xFFFF) === 0xFFFE) { return false }\n  // control codes\n  if (c >= 0x00 && c <= 0x08) { return false }\n  if (c === 0x0B) { return false }\n  if (c >= 0x0E && c <= 0x1F) { return false }\n  if (c >= 0x7F && c <= 0x9F) { return false }\n  // out of range\n  if (c > 0x10FFFF) { return false }\n  return true\n}\n\nfunction fromCodePoint (c) {\n  /* eslint no-bitwise:0 */\n  if (c > 0xffff) {\n    c -= 0x10000\n    const surrogate1 = 0xd800 + (c >> 10)\n    const surrogate2 = 0xdc00 + (c & 0x3ff)\n\n    return String.fromCharCode(surrogate1, surrogate2)\n  }\n  return String.fromCharCode(c)\n}\n\nconst UNESCAPE_MD_RE = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^_`{|}~])/g\nconst ENTITY_RE = /&([a-z#][a-z0-9]{1,31});/gi\nconst UNESCAPE_ALL_RE = new RegExp(UNESCAPE_MD_RE.source + '|' + ENTITY_RE.source, 'gi')\n\nconst DIGITAL_ENTITY_TEST_RE = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i\n\nfunction replaceEntityPattern (match, name) {\n  if (name.charCodeAt(0) === 0x23/* # */ && DIGITAL_ENTITY_TEST_RE.test(name)) {\n    const code = name[1].toLowerCase() === 'x'\n      ? parseInt(name.slice(2), 16)\n      : parseInt(name.slice(1), 10)\n\n    if (isValidEntityCode(code)) {\n      return fromCodePoint(code)\n    }\n\n    return match\n  }\n\n  const decoded = decodeHTML(match)\n  if (decoded !== match) {\n    return decoded\n  }\n\n  return match\n}\n\nfunction unescapeMd (str) {\n  if (str.indexOf('\\\\') < 0) { return str }\n  return str.replace(UNESCAPE_MD_RE, '$1')\n}\n\nfunction unescapeAll (str) {\n  if (str.indexOf('\\\\') < 0 && str.indexOf('&') < 0) { return str }\n\n  return str.replace(UNESCAPE_ALL_RE, function (match, escaped, entity) {\n    if (escaped) { return escaped }\n    return replaceEntityPattern(match, entity)\n  })\n}\n\nconst HTML_ESCAPE_TEST_RE = /[&<>\"]/\nconst HTML_ESCAPE_REPLACE_RE = /[&<>\"]/g\nconst HTML_REPLACEMENTS = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;'\n}\n\nfunction replaceUnsafeChar (ch) {\n  return HTML_REPLACEMENTS[ch]\n}\n\nfunction escapeHtml (str) {\n  if (HTML_ESCAPE_TEST_RE.test(str)) {\n    return str.replace(HTML_ESCAPE_REPLACE_RE, replaceUnsafeChar)\n  }\n  return str\n}\n\nconst REGEXP_ESCAPE_RE = /[.?*+^$[\\]\\\\(){}|-]/g\n\nfunction escapeRE (str) {\n  return str.replace(REGEXP_ESCAPE_RE, '\\\\$&')\n}\n\nfunction isSpace (code) {\n  switch (code) {\n    case 0x09:\n    case 0x20:\n      return true\n  }\n  return false\n}\n\n// Zs (unicode class) || [\\t\\f\\v\\r\\n]\nfunction isWhiteSpace (code) {\n  if (code >= 0x2000 && code <= 0x200A) { return true }\n  switch (code) {\n    case 0x09: // \\t\n    case 0x0A: // \\n\n    case 0x0B: // \\v\n    case 0x0C: // \\f\n    case 0x0D: // \\r\n    case 0x20:\n    case 0xA0:\n    case 0x1680:\n    case 0x202F:\n    case 0x205F:\n    case 0x3000:\n      return true\n  }\n  return false\n}\n\n// Currently without astral characters support.\nfunction isPunctChar (ch) {\n  return ucmicro.P.test(ch) || ucmicro.S.test(ch)\n}\n\nfunction isPunctCharCode (code) {\n  return isPunctChar(fromCodePoint(code))\n}\n\n// Markdown ASCII punctuation characters.\n//\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\n//\n// Don't confuse with unicode punctuation !!! It lacks some chars in ascii range.\n//\nfunction isMdAsciiPunct (ch) {\n  switch (ch) {\n    case 0x21/* ! */:\n    case 0x22/* \" */:\n    case 0x23/* # */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x26/* & */:\n    case 0x27/* ' */:\n    case 0x28/* ( */:\n    case 0x29/* ) */:\n    case 0x2A/* * */:\n    case 0x2B/* + */:\n    case 0x2C/* , */:\n    case 0x2D/* - */:\n    case 0x2E/* . */:\n    case 0x2F/* / */:\n    case 0x3A/* : */:\n    case 0x3B/* ; */:\n    case 0x3C/* < */:\n    case 0x3D/* = */:\n    case 0x3E/* > */:\n    case 0x3F/* ? */:\n    case 0x40/* @ */:\n    case 0x5B/* [ */:\n    case 0x5C/* \\ */:\n    case 0x5D/* ] */:\n    case 0x5E/* ^ */:\n    case 0x5F/* _ */:\n    case 0x60/* ` */:\n    case 0x7B/* { */:\n    case 0x7C/* | */:\n    case 0x7D/* } */:\n    case 0x7E/* ~ */:\n      return true\n    default:\n      return false\n  }\n}\n\n// Hepler to unify [reference labels].\n//\nfunction normalizeReference (str) {\n  // Trim and collapse whitespace\n  //\n  str = str.trim().replace(/\\s+/g, ' ')\n\n  // In node v10 'ẞ'.toLowerCase() === 'Ṿ', which is presumed to be a bug\n  // fixed in v12 (couldn't find any details).\n  //\n  // So treat this one as a special case\n  // (remove this when node v10 is no longer supported).\n  //\n  if ('ẞ'.toLowerCase() === 'Ṿ') {\n    /* c8 ignore next 2 */\n    str = str.replace(/ẞ/g, 'ß')\n  }\n\n  // .toLowerCase().toUpperCase() should get rid of all differences\n  // between letter variants.\n  //\n  // Simple .toLowerCase() doesn't normalize 125 code points correctly,\n  // and .toUpperCase doesn't normalize 6 of them (list of exceptions:\n  // İ, ϴ, ẞ, Ω, K, Å - those are already uppercased, but have differently\n  // uppercased versions).\n  //\n  // Here's an example showing how it happens. Lets take greek letter omega:\n  // uppercase U+0398 (Θ), U+03f4 (ϴ) and lowercase U+03b8 (θ), U+03d1 (ϑ)\n  //\n  // Unicode entries:\n  // 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8;\n  // 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398\n  // 03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398\n  // 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L;<compat> 0398;;;;N;;;;03B8;\n  //\n  // Case-insensitive comparison should treat all of them as equivalent.\n  //\n  // But .toLowerCase() doesn't change ϑ (it's already lowercase),\n  // and .toUpperCase() doesn't change ϴ (already uppercase).\n  //\n  // Applying first lower then upper case normalizes any character:\n  // '\\u0398\\u03f4\\u03b8\\u03d1'.toLowerCase().toUpperCase() === '\\u0398\\u0398\\u0398\\u0398'\n  //\n  // Note: this is equivalent to unicode case folding; unicode normalization\n  // is a different step that is not required here.\n  //\n  // Final result should be uppercased, because it's later stored in an object\n  // (this avoid a conflict with Object.prototype members,\n  // most notably, `__proto__`)\n  //\n  return str.toLowerCase().toUpperCase()\n}\n\nfunction isAsciiTrimmable (c) {\n  return c === 0x20 || c === 0x09 || c === 0x0a || c === 0x0d\n}\n\n// \"Light\" .trim() for blocks (headers, paragraphs), where unicode spaces\n// should be preserved.\nfunction asciiTrim (str) {\n  let start = 0\n  for (; start < str.length; start++) {\n    if (!isAsciiTrimmable(str.charCodeAt(start))) {\n      break\n    }\n  }\n  let end = str.length - 1\n  for (; end >= start; end--) {\n    if (!isAsciiTrimmable(str.charCodeAt(end))) {\n      break\n    }\n  }\n  return str.slice(start, end + 1)\n}\n\n// Re-export libraries commonly used in both markdown-it and its plugins,\n// so plugins won't have to depend on them explicitly, which reduces their\n// bundled size (e.g. a browser build).\n//\nconst lib = { mdurl, ucmicro }\n\nexport {\n  lib,\n  assign,\n  isString,\n  has,\n  unescapeMd,\n  unescapeAll,\n  isValidEntityCode,\n  fromCodePoint,\n  escapeHtml,\n  arrayReplaceAt,\n  isSpace,\n  isWhiteSpace,\n  isMdAsciiPunct,\n  isPunctChar,\n  isPunctCharCode,\n  escapeRE,\n  normalizeReference,\n  asciiTrim\n}\n","import decode from './lib/decode.mjs'\nimport encode from './lib/encode.mjs'\nimport format from './lib/format.mjs'\nimport parse from './lib/parse.mjs'\n\nexport {\n  decode,\n  encode,\n  format,\n  parse\n}\n","/* eslint-disable no-bitwise */\n\nconst decodeCache = {}\n\nfunction getDecodeCache (exclude) {\n  let cache = decodeCache[exclude]\n  if (cache) { return cache }\n\n  cache = decodeCache[exclude] = []\n\n  for (let i = 0; i < 128; i++) {\n    const ch = String.fromCharCode(i)\n    cache.push(ch)\n  }\n\n  for (let i = 0; i < exclude.length; i++) {\n    const ch = exclude.charCodeAt(i)\n    cache[ch] = '%' + ('0' + ch.toString(16).toUpperCase()).slice(-2)\n  }\n\n  return cache\n}\n\n// Decode percent-encoded string.\n//\nfunction decode (string, exclude) {\n  if (typeof exclude !== 'string') {\n    exclude = decode.defaultChars\n  }\n\n  const cache = getDecodeCache(exclude)\n\n  return string.replace(/(%[a-f0-9]{2})+/gi, function (seq) {\n    let result = ''\n\n    for (let i = 0, l = seq.length; i < l; i += 3) {\n      const b1 = parseInt(seq.slice(i + 1, i + 3), 16)\n\n      if (b1 < 0x80) {\n        result += cache[b1]\n        continue\n      }\n\n      if ((b1 & 0xE0) === 0xC0 && (i + 3 < l)) {\n        // 110xxxxx 10xxxxxx\n        const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n\n        if ((b2 & 0xC0) === 0x80) {\n          const chr = ((b1 << 6) & 0x7C0) | (b2 & 0x3F)\n\n          if (chr < 0x80) {\n            result += '\\ufffd\\ufffd'\n          } else {\n            result += String.fromCharCode(chr)\n          }\n\n          i += 3\n          continue\n        }\n      }\n\n      if ((b1 & 0xF0) === 0xE0 && (i + 6 < l)) {\n        // 1110xxxx 10xxxxxx 10xxxxxx\n        const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n        const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n\n        if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n          const chr = ((b1 << 12) & 0xF000) | ((b2 << 6) & 0xFC0) | (b3 & 0x3F)\n\n          if (chr < 0x800 || (chr >= 0xD800 && chr <= 0xDFFF)) {\n            result += '\\ufffd\\ufffd\\ufffd'\n          } else {\n            result += String.fromCharCode(chr)\n          }\n\n          i += 6\n          continue\n        }\n      }\n\n      if ((b1 & 0xF8) === 0xF0 && (i + 9 < l)) {\n        // 111110xx 10xxxxxx 10xxxxxx 10xxxxxx\n        const b2 = parseInt(seq.slice(i + 4, i + 6), 16)\n        const b3 = parseInt(seq.slice(i + 7, i + 9), 16)\n        const b4 = parseInt(seq.slice(i + 10, i + 12), 16)\n\n        if ((b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80 && (b4 & 0xC0) === 0x80) {\n          let chr = ((b1 << 18) & 0x1C0000) | ((b2 << 12) & 0x3F000) | ((b3 << 6) & 0xFC0) | (b4 & 0x3F)\n\n          if (chr < 0x10000 || chr > 0x10FFFF) {\n            result += '\\ufffd\\ufffd\\ufffd\\ufffd'\n          } else {\n            chr -= 0x10000\n            result += String.fromCharCode(0xD800 + (chr >> 10), 0xDC00 + (chr & 0x3FF))\n          }\n\n          i += 9\n          continue\n        }\n      }\n\n      result += '\\ufffd'\n    }\n\n    return result\n  })\n}\n\ndecode.defaultChars = ';/?:@&=+$,#'\ndecode.componentChars = ''\n\nexport default decode\n","const encodeCache = {}\n\n// Create a lookup array where anything but characters in `chars` string\n// and alphanumeric chars is percent-encoded.\n//\nfunction getEncodeCache (exclude) {\n  let cache = encodeCache[exclude]\n  if (cache) { return cache }\n\n  cache = encodeCache[exclude] = []\n\n  for (let i = 0; i < 128; i++) {\n    const ch = String.fromCharCode(i)\n\n    if (/^[0-9a-z]$/i.test(ch)) {\n      // always allow unencoded alphanumeric characters\n      cache.push(ch)\n    } else {\n      cache.push('%' + ('0' + i.toString(16).toUpperCase()).slice(-2))\n    }\n  }\n\n  for (let i = 0; i < exclude.length; i++) {\n    cache[exclude.charCodeAt(i)] = exclude[i]\n  }\n\n  return cache\n}\n\n// Encode unsafe characters with percent-encoding, skipping already\n// encoded sequences.\n//\n//  - string       - string to encode\n//  - exclude      - list of characters to ignore (in addition to a-zA-Z0-9)\n//  - keepEscaped  - don't encode '%' in a correct escape sequence (default: true)\n//\nfunction encode (string, exclude, keepEscaped) {\n  if (typeof exclude !== 'string') {\n    // encode(string, keepEscaped)\n    keepEscaped = exclude\n    exclude = encode.defaultChars\n  }\n\n  if (typeof keepEscaped === 'undefined') {\n    keepEscaped = true\n  }\n\n  const cache = getEncodeCache(exclude)\n  let result = ''\n\n  for (let i = 0, l = string.length; i < l; i++) {\n    const code = string.charCodeAt(i)\n\n    if (keepEscaped && code === 0x25 /* % */ && i + 2 < l) {\n      if (/^[0-9a-f]{2}$/i.test(string.slice(i + 1, i + 3))) {\n        result += string.slice(i, i + 3)\n        i += 2\n        continue\n      }\n    }\n\n    if (code < 128) {\n      result += cache[code]\n      continue\n    }\n\n    if (code >= 0xD800 && code <= 0xDFFF) {\n      if (code >= 0xD800 && code <= 0xDBFF && i + 1 < l) {\n        const nextCode = string.charCodeAt(i + 1)\n        if (nextCode >= 0xDC00 && nextCode <= 0xDFFF) {\n          result += encodeURIComponent(string[i] + string[i + 1])\n          i++\n          continue\n        }\n      }\n      result += '%EF%BF%BD'\n      continue\n    }\n\n    result += encodeURIComponent(string[i])\n  }\n\n  return result\n}\n\nencode.defaultChars = \";/?:@&=+$,-_.!~*'()#\"\nencode.componentChars = \"-_.!~*'()\"\n\nexport default encode\n","export default function format (url) {\n  let result = ''\n\n  result += url.protocol || ''\n  result += url.slashes ? '//' : ''\n  result += url.auth ? url.auth + '@' : ''\n\n  if (url.hostname && url.hostname.indexOf(':') !== -1) {\n    // ipv6 address\n    result += '[' + url.hostname + ']'\n  } else {\n    result += url.hostname || ''\n  }\n\n  result += url.port ? ':' + url.port : ''\n  result += url.pathname || ''\n  result += url.search || ''\n  result += url.hash || ''\n\n  return result\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n//\n// Changes from joyent/node:\n//\n// 1. No leading slash in paths,\n//    e.g. in `url.parse('http://foo?bar')` pathname is ``, not `/`\n//\n// 2. Backslashes are not replaced with slashes,\n//    so `http:\\\\example.org\\` is treated like a relative path\n//\n// 3. Trailing colon is treated like a part of the path,\n//    i.e. in `http://example.org:foo` pathname is `:foo`\n//\n// 4. Nothing is URL-encoded in the resulting object,\n//    (in joyent/node some chars in auth and paths are encoded)\n//\n// 5. `url.parse()` does not have `parseQueryString` argument\n//\n// 6. Removed extraneous result properties: `host`, `path`, `query`, etc.,\n//    which can be constructed using other parts of the url.\n//\n\nfunction Url () {\n  this.protocol = null\n  this.slashes = null\n  this.auth = null\n  this.port = null\n  this.hostname = null\n  this.hash = null\n  this.search = null\n  this.pathname = null\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nconst protocolPattern = /^([a-z0-9.+-]+:)/i\nconst portPattern = /:[0-9]*$/\n\n// Special case for a simple path URL\n/* eslint-disable-next-line no-useless-escape */\nconst simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/\n\n// RFC 2396: characters reserved for delimiting URLs.\n// We actually just auto-escape these.\nconst delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t']\n\n// RFC 2396: characters not allowed for various reasons.\nconst unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims)\n\n// Allowed by RFCs, but cause of XSS attacks.  Always escape these.\nconst autoEscape = ['\\''].concat(unwise)\n// Characters that are never ever allowed in a hostname.\n// Note that any invalid chars are also handled, but these\n// are the ones that are *expected* to be seen, so we fast-path\n// them.\nconst nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape)\nconst hostEndingChars = ['/', '?', '#']\nconst hostnameMaxLen = 255\nconst hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/\nconst hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/\n// protocols that can allow \"unsafe\" and \"unwise\" chars.\n// protocols that never have a hostname.\nconst hostlessProtocol = {\n  javascript: true,\n  'javascript:': true\n}\n// protocols that always contain a // bit.\nconst slashedProtocol = {\n  http: true,\n  https: true,\n  ftp: true,\n  gopher: true,\n  file: true,\n  'http:': true,\n  'https:': true,\n  'ftp:': true,\n  'gopher:': true,\n  'file:': true\n}\n\nfunction urlParse (url, slashesDenoteHost) {\n  if (url && url instanceof Url) return url\n\n  const u = new Url()\n  u.parse(url, slashesDenoteHost)\n  return u\n}\n\nUrl.prototype.parse = function (url, slashesDenoteHost) {\n  let lowerProto, hec, slashes\n  let rest = url\n\n  // trim before proceeding.\n  // This is to support parse stuff like \"  http://foo.com  \\n\"\n  rest = rest.trim()\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    const simplePath = simplePathPattern.exec(rest)\n    if (simplePath) {\n      this.pathname = simplePath[1]\n      if (simplePath[2]) {\n        this.search = simplePath[2]\n      }\n      return this\n    }\n  }\n\n  let proto = protocolPattern.exec(rest)\n  if (proto) {\n    proto = proto[0]\n    lowerProto = proto.toLowerCase()\n    this.protocol = proto\n    rest = rest.substr(proto.length)\n  }\n\n  // figure out if it's got a host\n  // user@server is *always* interpreted as a hostname, and url\n  // resolution will treat //foo/bar as host=foo,path=bar because that's\n  // how the browser resolves relative URLs.\n  /* eslint-disable-next-line no-useless-escape */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n    slashes = rest.substr(0, 2) === '//'\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2)\n      this.slashes = true\n    }\n  }\n\n  if (!hostlessProtocol[proto] &&\n      (slashes || (proto && !slashedProtocol[proto]))) {\n    // there's a hostname.\n    // the first instance of /, ?, ;, or # ends the host.\n    //\n    // If there is an @ in the hostname, then non-host chars *are* allowed\n    // to the left of the last @ sign, unless some host-ending character\n    // comes *before* the @-sign.\n    // URLs are obnoxious.\n    //\n    // ex:\n    // http://a@b@c/ => user:a@b host:c\n    // http://a@b?@c => user:a host:c path:/?@c\n\n    // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n    // Review our test case against browsers more comprehensively.\n\n    // find the first instance of any hostEndingChars\n    let hostEnd = -1\n    for (let i = 0; i < hostEndingChars.length; i++) {\n      hec = rest.indexOf(hostEndingChars[i])\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec\n      }\n    }\n\n    // at this point, either we have an explicit point where the\n    // auth portion cannot go past, or the last @ char is the decider.\n    let auth, atSign\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@')\n    } else {\n      // atSign must be in auth portion.\n      // http://a@b/c@d => host:b auth:a path:/c@d\n      atSign = rest.lastIndexOf('@', hostEnd)\n    }\n\n    // Now we have a portion which is definitely the auth.\n    // Pull that off.\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign)\n      rest = rest.slice(atSign + 1)\n      this.auth = auth\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1\n    for (let i = 0; i < nonHostChars.length; i++) {\n      hec = rest.indexOf(nonHostChars[i])\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) {\n        hostEnd = hec\n      }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) {\n      hostEnd = rest.length\n    }\n\n    if (rest[hostEnd - 1] === ':') { hostEnd-- }\n    const host = rest.slice(0, hostEnd)\n    rest = rest.slice(hostEnd)\n\n    // pull out port.\n    this.parseHost(host)\n\n    // we've indicated that there is a hostname,\n    // so even if it's empty, it has to be present.\n    this.hostname = this.hostname || ''\n\n    // if hostname begins with [ and ends with ]\n    // assume that it's an IPv6 address.\n    const ipv6Hostname = this.hostname[0] === '[' &&\n        this.hostname[this.hostname.length - 1] === ']'\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      const hostparts = this.hostname.split(/\\./)\n      for (let i = 0, l = hostparts.length; i < l; i++) {\n        const part = hostparts[i]\n        if (!part) { continue }\n        if (!part.match(hostnamePartPattern)) {\n          let newpart = ''\n          for (let j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              // we replace non-ASCII char with a temporary placeholder\n              // we need this to make sure size of hostname is not\n              // broken by replacing non-ASCII by nothing\n              newpart += 'x'\n            } else {\n              newpart += part[j]\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            const validParts = hostparts.slice(0, i)\n            const notHost = hostparts.slice(i + 1)\n            const bit = part.match(hostnamePartStart)\n            if (bit) {\n              validParts.push(bit[1])\n              notHost.unshift(bit[2])\n            }\n            if (notHost.length) {\n              rest = notHost.join('.') + rest\n            }\n            this.hostname = validParts.join('.')\n            break\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = ''\n    }\n\n    // strip [ and ] from the hostname\n    // the host field still retains them, though\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2)\n    }\n  }\n\n  // chop off from the tail first.\n  const hash = rest.indexOf('#')\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash)\n    rest = rest.slice(0, hash)\n  }\n  const qm = rest.indexOf('?')\n  if (qm !== -1) {\n    this.search = rest.substr(qm)\n    rest = rest.slice(0, qm)\n  }\n  if (rest) { this.pathname = rest }\n  if (slashedProtocol[lowerProto] &&\n      this.hostname && !this.pathname) {\n    this.pathname = ''\n  }\n\n  return this\n}\n\nUrl.prototype.parseHost = function (host) {\n  let port = portPattern.exec(host)\n  if (port) {\n    port = port[0]\n    if (port !== ':') {\n      this.port = port.substr(1)\n    }\n    host = host.substr(0, host.length - port.length)\n  }\n  if (host) { this.hostname = host }\n}\n\nexport default urlParse\n","import Any from './properties/Any/regex.mjs';\nimport Cc  from './categories/Cc/regex.mjs';\nimport Cf  from './categories/Cf/regex.mjs';\nimport P   from './categories/P/regex.mjs';\nimport S   from './categories/S/regex.mjs';\nimport Z   from './categories/Z/regex.mjs';\n\nexport { Any, Cc, Cf, P, S, Z };\n","export default /[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/","export default /[\\0-\\x1F\\x7F-\\x9F]/","export default /[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u0890\\u0891\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD80D[\\uDC30-\\uDC3F]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/","export default /[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/","export default /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C0\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B97-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBC2\\uFD40-\\uFD4F\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED7\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDF76\\uDF7B-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0\\uDCB1\\uDD00-\\uDE53\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE88\\uDE90-\\uDEBD\\uDEBF-\\uDEC5\\uDECE-\\uDEDB\\uDEE0-\\uDEE8\\uDEF0-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFCA]/","export default /[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/",null,null,null,null,null,null,"// Just a shortcut for bulk export\n\nimport parseLinkLabel from './parse_link_label.mjs'\nimport parseLinkDestination from './parse_link_destination.mjs'\nimport parseLinkTitle from './parse_link_title.mjs'\n\nexport {\n  parseLinkLabel,\n  parseLinkDestination,\n  parseLinkTitle\n}\n","// Parse link label\n//\n// this function assumes that first character (\"[\") already matches;\n// returns the end of the label\n//\n\nexport default function parseLinkLabel (state, start, disableNested) {\n  let level, found, marker, prevPos\n\n  const max = state.posMax\n  const oldPos = state.pos\n\n  state.pos = start + 1\n  level = 1\n\n  while (state.pos < max) {\n    marker = state.src.charCodeAt(state.pos)\n    if (marker === 0x5D /* ] */) {\n      level--\n      if (level === 0) {\n        found = true\n        break\n      }\n    }\n\n    prevPos = state.pos\n    state.md.inline.skipToken(state)\n    if (marker === 0x5B /* [ */) {\n      if (prevPos === state.pos - 1) {\n        // increase level if we find text `[`, which is not a part of any token\n        level++\n      } else if (disableNested) {\n        state.pos = oldPos\n        return -1\n      }\n    }\n  }\n\n  let labelEnd = -1\n\n  if (found) {\n    labelEnd = state.pos\n  }\n\n  // restore old state\n  state.pos = oldPos\n\n  return labelEnd\n}\n","// Parse link destination\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\nexport default function parseLinkDestination (str, start, max) {\n  let code\n  let pos = start\n\n  const result = {\n    ok: false,\n    pos: 0,\n    str: ''\n  }\n\n  if (str.charCodeAt(pos) === 0x3C /* < */) {\n    pos++\n    while (pos < max) {\n      code = str.charCodeAt(pos)\n      if (code === 0x0A /* \\n */) { return result }\n      if (code === 0x3C /* < */) { return result }\n      if (code === 0x3E /* > */) {\n        result.pos = pos + 1\n        result.str = unescapeAll(str.slice(start + 1, pos))\n        result.ok = true\n        return result\n      }\n      if (code === 0x5C /* \\ */ && pos + 1 < max) {\n        pos += 2\n        continue\n      }\n\n      pos++\n    }\n\n    // no closing '>'\n    return result\n  }\n\n  // this should be ... } else { ... branch\n\n  let level = 0\n  while (pos < max) {\n    code = str.charCodeAt(pos)\n\n    if (code === 0x20) { break }\n\n    // ascii control characters\n    if (code < 0x20 || code === 0x7F) { break }\n\n    if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      if (str.charCodeAt(pos + 1) === 0x20) { break }\n      pos += 2\n      continue\n    }\n\n    if (code === 0x28 /* ( */) {\n      level++\n      if (level > 32) { return result }\n    }\n\n    if (code === 0x29 /* ) */) {\n      if (level === 0) { break }\n      level--\n    }\n\n    pos++\n  }\n\n  if (start === pos) { return result }\n  if (level !== 0) { return result }\n\n  result.str = unescapeAll(str.slice(start, pos))\n  result.pos = pos\n  result.ok = true\n  return result\n}\n","// Parse link title\n//\n\nimport { unescapeAll } from '../common/utils.mjs'\n\n// Parse link title within `str` in [start, max] range,\n// or continue previous parsing if `prev_state` is defined (equal to result of last execution).\n//\nexport default function parseLinkTitle (str, start, max, prev_state) {\n  let code\n  let pos = start\n\n  const state = {\n    // if `true`, this is a valid link title\n    ok: false,\n    // if `true`, this link can be continued on the next line\n    can_continue: false,\n    // if `ok`, it's the position of the first character after the closing marker\n    pos: 0,\n    // if `ok`, it's the unescaped title\n    str: '',\n    // expected closing marker character code\n    marker: 0\n  }\n\n  if (prev_state) {\n    // this is a continuation of a previous parseLinkTitle call on the next line,\n    // used in reference links only\n    state.str = prev_state.str\n    state.marker = prev_state.marker\n  } else {\n    if (pos >= max) { return state }\n\n    let marker = str.charCodeAt(pos)\n    if (marker !== 0x22 /* \" */ && marker !== 0x27 /* ' */ && marker !== 0x28 /* ( */) { return state }\n\n    start++\n    pos++\n\n    // if opening marker is \"(\", switch it to closing marker \")\"\n    if (marker === 0x28) { marker = 0x29 }\n\n    state.marker = marker\n  }\n\n  while (pos < max) {\n    code = str.charCodeAt(pos)\n    if (code === state.marker) {\n      state.pos = pos + 1\n      state.str += unescapeAll(str.slice(start, pos))\n      state.ok = true\n      return state\n    } else if (code === 0x28 /* ( */ && state.marker === 0x29 /* ) */) {\n      return state\n    } else if (code === 0x5C /* \\ */ && pos + 1 < max) {\n      pos++\n    }\n\n    pos++\n  }\n\n  // no closing marker found, but this link title may continue on the next line (for references)\n  state.can_continue = true\n  state.str += unescapeAll(str.slice(start, pos))\n  return state\n}\n","/**\n * class Renderer\n *\n * Generates HTML from parsed token stream. Each instance has independent\n * copy of rules. Those can be rewritten with ease. Also, you can add new\n * rules if you create plugin and adds new token types.\n **/\n\nimport { assign, unescapeAll, escapeHtml } from './common/utils.mjs'\n\nconst default_rules = {}\n\ndefault_rules.code_inline = function (tokens, idx, options, env, slf) {\n  const token = tokens[idx]\n\n  return '<code' + slf.renderAttrs(token) + '>' +\n          escapeHtml(token.content) +\n          '</code>'\n}\n\ndefault_rules.code_block = function (tokens, idx, options, env, slf) {\n  const token = tokens[idx]\n\n  return '<pre' + slf.renderAttrs(token) + '><code>' +\n          escapeHtml(tokens[idx].content) +\n          '</code></pre>\\n'\n}\n\ndefault_rules.fence = function (tokens, idx, options, env, slf) {\n  const token = tokens[idx]\n  const info = token.info ? unescapeAll(token.info).trim() : ''\n  let langName = ''\n  let langAttrs = ''\n\n  if (info) {\n    const arr = info.split(/(\\s+)/g)\n    langName = arr[0]\n    langAttrs = arr.slice(2).join('')\n  }\n\n  let highlighted\n  if (options.highlight) {\n    highlighted = options.highlight(token.content, langName, langAttrs) || escapeHtml(token.content)\n  } else {\n    highlighted = escapeHtml(token.content)\n  }\n\n  if (highlighted.indexOf('<pre') === 0) {\n    return highlighted + '\\n'\n  }\n\n  // If language exists, inject class gently, without modifying original token.\n  // May be, one day we will add .deepClone() for token and simplify this part, but\n  // now we prefer to keep things local.\n  if (info) {\n    const i = token.attrIndex('class')\n    const tmpAttrs = token.attrs ? token.attrs.slice() : []\n\n    if (i < 0) {\n      tmpAttrs.push(['class', options.langPrefix + langName])\n    } else {\n      tmpAttrs[i] = tmpAttrs[i].slice()\n      tmpAttrs[i][1] += ' ' + options.langPrefix + langName\n    }\n\n    // Fake token just to render attributes\n    const tmpToken = {\n      attrs: tmpAttrs\n    }\n\n    return `<pre><code${slf.renderAttrs(tmpToken)}>${highlighted}</code></pre>\\n`\n  }\n\n  return `<pre><code${slf.renderAttrs(token)}>${highlighted}</code></pre>\\n`\n}\n\ndefault_rules.image = function (tokens, idx, options, env, slf) {\n  const token = tokens[idx]\n\n  // \"alt\" attr MUST be set, even if empty. Because it's mandatory and\n  // should be placed on proper position for tests.\n  //\n  // Replace content with actual value\n\n  token.attrs[token.attrIndex('alt')][1] =\n    slf.renderInlineAsText(token.children, options, env)\n\n  return slf.renderToken(tokens, idx, options)\n}\n\ndefault_rules.hardbreak = function (tokens, idx, options /*, env */) {\n  return options.xhtmlOut ? '<br />\\n' : '<br>\\n'\n}\ndefault_rules.softbreak = function (tokens, idx, options /*, env */) {\n  return options.breaks ? (options.xhtmlOut ? '<br />\\n' : '<br>\\n') : '\\n'\n}\n\ndefault_rules.text = function (tokens, idx /*, options, env */) {\n  return escapeHtml(tokens[idx].content)\n}\n\ndefault_rules.html_block = function (tokens, idx /*, options, env */) {\n  return tokens[idx].content\n}\ndefault_rules.html_inline = function (tokens, idx /*, options, env */) {\n  return tokens[idx].content\n}\n\n/**\n * new Renderer()\n *\n * Creates new [[Renderer]] instance and fill [[Renderer#rules]] with defaults.\n **/\nfunction Renderer () {\n  /**\n   * Renderer#rules -> Object\n   *\n   * Contains render rules for tokens. Can be updated and extended.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * md.renderer.rules.strong_open  = function () { return '<b>'; };\n   * md.renderer.rules.strong_close = function () { return '</b>'; };\n   *\n   * var result = md.renderInline(...);\n   * ```\n   *\n   * Each rule is called as independent static function with fixed signature:\n   *\n   * ```javascript\n   * function my_token_render(tokens, idx, options, env, renderer) {\n   *   // ...\n   *   return renderedHTML;\n   * }\n   * ```\n   *\n   * See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs)\n   * for more details and examples.\n   **/\n  this.rules = assign({}, default_rules)\n}\n\n/**\n * Renderer.renderAttrs(token) -> String\n *\n * Render token attributes to string.\n **/\nRenderer.prototype.renderAttrs = function renderAttrs (token) {\n  let i, l, result\n\n  if (!token.attrs) { return '' }\n\n  result = ''\n\n  for (i = 0, l = token.attrs.length; i < l; i++) {\n    result += ' ' + escapeHtml(token.attrs[i][0]) + '=\"' + escapeHtml(token.attrs[i][1]) + '\"'\n  }\n\n  return result\n}\n\n/**\n * Renderer.renderToken(tokens, idx, options) -> String\n * - tokens (Array): list of tokens\n * - idx (Numbed): token index to render\n * - options (Object): params of parser instance\n *\n * Default token renderer. Can be overriden by custom function\n * in [[Renderer#rules]].\n **/\nRenderer.prototype.renderToken = function renderToken (tokens, idx, options) {\n  const token = tokens[idx]\n  let result = ''\n\n  // Tight list paragraphs\n  if (token.hidden) {\n    return ''\n  }\n\n  // Insert a newline between hidden paragraph and subsequent opening\n  // block-level tag.\n  //\n  // For example, here we should insert a newline before blockquote:\n  //  - a\n  //    >\n  //\n  if (token.block && token.nesting !== -1 && idx && tokens[idx - 1].hidden) {\n    result += '\\n'\n  }\n\n  // Add token name, e.g. `<img`\n  result += (token.nesting === -1 ? '</' : '<') + token.tag\n\n  // Encode attributes, e.g. `<img src=\"foo\"`\n  result += this.renderAttrs(token)\n\n  // Add a slash for self-closing tags, e.g. `<img src=\"foo\" /`\n  if (token.nesting === 0 && options.xhtmlOut) {\n    result += ' /'\n  }\n\n  // Check if we need to add a newline after this tag\n  let needLf = false\n  if (token.block) {\n    needLf = true\n\n    if (token.nesting === 1) {\n      if (idx + 1 < tokens.length) {\n        const nextToken = tokens[idx + 1]\n\n        if (nextToken.type === 'inline' || nextToken.hidden) {\n          // Block-level tag containing an inline tag.\n          //\n          needLf = false\n        } else if (nextToken.nesting === -1 && nextToken.tag === token.tag) {\n          // Opening tag + closing tag of the same type. E.g. `<li></li>`.\n          //\n          needLf = false\n        }\n      }\n    }\n  }\n\n  result += needLf ? '>\\n' : '>'\n\n  return result\n}\n\n/**\n * Renderer.renderInline(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * The same as [[Renderer.render]], but for single token of `inline` type.\n **/\nRenderer.prototype.renderInline = function (tokens, options, env) {\n  let result = ''\n  const rules = this.rules\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    const type = tokens[i].type\n\n    if (typeof rules[type] !== 'undefined') {\n      result += rules[type](tokens, i, options, env, this)\n    } else {\n      result += this.renderToken(tokens, i, options)\n    }\n  }\n\n  return result\n}\n\n/** internal\n * Renderer.renderInlineAsText(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Special kludge for image `alt` attributes to conform CommonMark spec.\n * Don't try to use it! Spec requires to show `alt` content with stripped markup,\n * instead of simple escaping.\n **/\nRenderer.prototype.renderInlineAsText = function (tokens, options, env) {\n  let result = ''\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    switch (tokens[i].type) {\n      case 'text':\n        result += tokens[i].content\n        break\n      case 'image':\n        result += this.renderInlineAsText(tokens[i].children, options, env)\n        break\n      case 'html_inline':\n      case 'html_block':\n        result += tokens[i].content\n        break\n      case 'softbreak':\n      case 'hardbreak':\n        result += '\\n'\n        break\n      default:\n        // all other tokens are skipped\n    }\n  }\n\n  return result\n}\n\n/**\n * Renderer.render(tokens, options, env) -> String\n * - tokens (Array): list on block tokens to render\n * - options (Object): params of parser instance\n * - env (Object): additional data from parsed input (references, for example)\n *\n * Takes token stream and generates HTML. Probably, you will never need to call\n * this method directly.\n **/\nRenderer.prototype.render = function (tokens, options, env) {\n  let result = ''\n  const rules = this.rules\n\n  for (let i = 0, len = tokens.length; i < len; i++) {\n    const type = tokens[i].type\n\n    if (type === 'inline') {\n      result += this.renderInline(tokens[i].children, options, env)\n    } else if (typeof rules[type] !== 'undefined') {\n      result += rules[type](tokens, i, options, env, this)\n    } else {\n      result += this.renderToken(tokens, i, options, env)\n    }\n  }\n\n  return result\n}\n\nexport default Renderer\n","/**\n * class Ruler\n *\n * Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and\n * [[MarkdownIt#inline]] to manage sequences of functions (rules):\n *\n * - keep rules in defined order\n * - assign the name to each rule\n * - enable/disable rules\n * - add/replace rules\n * - allow assign rules to additional named chains (in the same)\n * - cacheing lists of active rules\n *\n * You will not need use this class directly until write plugins. For simple\n * rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and\n * [[MarkdownIt.use]].\n **/\n\n/**\n * new Ruler()\n **/\nfunction Ruler () {\n  // List of added rules. Each element is:\n  //\n  // {\n  //   name: XXX,\n  //   enabled: Boolean,\n  //   fn: Function(),\n  //   alt: [ name2, name3 ]\n  // }\n  //\n  this.__rules__ = []\n\n  // Cached rule chains.\n  //\n  // First level - chain name, '' for default.\n  // Second level - diginal anchor for fast filtering by charcodes.\n  //\n  this.__cache__ = null\n}\n\n// Helper methods, should not be used directly\n\n// Find rule index by name\n//\nRuler.prototype.__find__ = function (name) {\n  for (let i = 0; i < this.__rules__.length; i++) {\n    if (this.__rules__[i].name === name) {\n      return i\n    }\n  }\n  return -1\n}\n\n// Build rules lookup cache\n//\nRuler.prototype.__compile__ = function () {\n  const self = this\n  const chains = ['']\n\n  // collect unique names\n  self.__rules__.forEach(function (rule) {\n    if (!rule.enabled) { return }\n\n    rule.alt.forEach(function (altName) {\n      if (chains.indexOf(altName) < 0) {\n        chains.push(altName)\n      }\n    })\n  })\n\n  self.__cache__ = {}\n\n  chains.forEach(function (chain) {\n    self.__cache__[chain] = []\n    self.__rules__.forEach(function (rule) {\n      if (!rule.enabled) { return }\n\n      if (chain && rule.alt.indexOf(chain) < 0) { return }\n\n      self.__cache__[chain].push(rule.fn)\n    })\n  })\n}\n\n/**\n * Ruler.at(name, fn [, options])\n * - name (String): rule name to replace.\n * - fn (Function): new rule function.\n * - options (Object): new rule options (not mandatory).\n *\n * Replace rule by name with new function & options. Throws error if name not\n * found.\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * Replace existing typographer replacement rule with new one:\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.at('replacements', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.at = function (name, fn, options) {\n  const index = this.__find__(name)\n  const opt = options || {}\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + name) }\n\n  this.__rules__[index].fn = fn\n  this.__rules__[index].alt = opt.alt || []\n  this.__cache__ = null\n}\n\n/**\n * Ruler.before(beforeName, ruleName, fn [, options])\n * - beforeName (String): new rule will be added before this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain before one with given name. See also\n * [[Ruler.after]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.block.ruler.before('paragraph', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.before = function (beforeName, ruleName, fn, options) {\n  const index = this.__find__(beforeName)\n  const opt = options || {}\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + beforeName) }\n\n  this.__rules__.splice(index, 0, {\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  })\n\n  this.__cache__ = null\n}\n\n/**\n * Ruler.after(afterName, ruleName, fn [, options])\n * - afterName (String): new rule will be added after this one.\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Add new rule to chain after one with given name. See also\n * [[Ruler.before]], [[Ruler.push]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.inline.ruler.after('text', 'my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.after = function (afterName, ruleName, fn, options) {\n  const index = this.__find__(afterName)\n  const opt = options || {}\n\n  if (index === -1) { throw new Error('Parser rule not found: ' + afterName) }\n\n  this.__rules__.splice(index + 1, 0, {\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  })\n\n  this.__cache__ = null\n}\n\n/**\n * Ruler.push(ruleName, fn [, options])\n * - ruleName (String): name of added rule.\n * - fn (Function): rule function.\n * - options (Object): rule options (not mandatory).\n *\n * Push new rule to the end of chain. See also\n * [[Ruler.before]], [[Ruler.after]].\n *\n * ##### Options:\n *\n * - __alt__ - array with names of \"alternate\" chains.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')();\n *\n * md.core.ruler.push('my_rule', function replace(state) {\n *   //...\n * });\n * ```\n **/\nRuler.prototype.push = function (ruleName, fn, options) {\n  const opt = options || {}\n\n  this.__rules__.push({\n    name: ruleName,\n    enabled: true,\n    fn,\n    alt: opt.alt || []\n  })\n\n  this.__cache__ = null\n}\n\n/**\n * Ruler.enable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to enable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.disable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.enable = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [list] }\n\n  const result = []\n\n  // Search by name and enable\n  list.forEach(function (name) {\n    const idx = this.__find__(name)\n\n    if (idx < 0) {\n      if (ignoreInvalid) { return }\n      throw new Error('Rules manager: invalid rule name ' + name)\n    }\n    this.__rules__[idx].enabled = true\n    result.push(name)\n  }, this)\n\n  this.__cache__ = null\n  return result\n}\n\n/**\n * Ruler.enableOnly(list [, ignoreInvalid])\n * - list (String|Array): list of rule names to enable (whitelist).\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable rules with given names, and disable everything else. If any rule name\n * not found - throw Error. Errors can be disabled by second param.\n *\n * See also [[Ruler.disable]], [[Ruler.enable]].\n **/\nRuler.prototype.enableOnly = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [list] }\n\n  this.__rules__.forEach(function (rule) { rule.enabled = false })\n\n  this.enable(list, ignoreInvalid)\n}\n\n/**\n * Ruler.disable(list [, ignoreInvalid]) -> Array\n * - list (String|Array): list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Disable rules with given names. If any rule name not found - throw Error.\n * Errors can be disabled by second param.\n *\n * Returns list of found rule names (if no exception happened).\n *\n * See also [[Ruler.enable]], [[Ruler.enableOnly]].\n **/\nRuler.prototype.disable = function (list, ignoreInvalid) {\n  if (!Array.isArray(list)) { list = [list] }\n\n  const result = []\n\n  // Search by name and disable\n  list.forEach(function (name) {\n    const idx = this.__find__(name)\n\n    if (idx < 0) {\n      if (ignoreInvalid) { return }\n      throw new Error('Rules manager: invalid rule name ' + name)\n    }\n    this.__rules__[idx].enabled = false\n    result.push(name)\n  }, this)\n\n  this.__cache__ = null\n  return result\n}\n\n/**\n * Ruler.getRules(chainName) -> Array\n *\n * Return array of active functions (rules) for given chain name. It analyzes\n * rules configuration, compiles caches if not exists and returns result.\n *\n * Default chain name is `''` (empty string). It can't be skipped. That's\n * done intentionally, to keep signature monomorphic for high speed.\n **/\nRuler.prototype.getRules = function (chainName) {\n  if (this.__cache__ === null) {\n    this.__compile__()\n  }\n\n  // Chain can be empty, if rules disabled. But we still have to return Array.\n  return this.__cache__[chainName] || []\n}\n\nexport default Ruler\n","// Token class\n\n/**\n * class Token\n **/\n\n/**\n * new Token(type, tag, nesting)\n *\n * Create new token and fill passed properties.\n **/\nfunction Token (type, tag, nesting) {\n  /**\n   * Token#type -> String\n   *\n   * Type of the token (string, e.g. \"paragraph_open\")\n   **/\n  this.type = type\n\n  /**\n   * Token#tag -> String\n   *\n   * html tag name, e.g. \"p\"\n   **/\n  this.tag = tag\n\n  /**\n   * Token#attrs -> Array\n   *\n   * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`\n   **/\n  this.attrs = null\n\n  /**\n   * Token#map -> Array\n   *\n   * Source map info. Format: `[ line_begin, line_end ]`\n   **/\n  this.map = null\n\n  /**\n   * Token#nesting -> Number\n   *\n   * Level change (number in {-1, 0, 1} set), where:\n   *\n   * -  `1` means the tag is opening\n   * -  `0` means the tag is self-closing\n   * - `-1` means the tag is closing\n   **/\n  this.nesting = nesting\n\n  /**\n   * Token#level -> Number\n   *\n   * nesting level, the same as `state.level`\n   **/\n  this.level = 0\n\n  /**\n   * Token#children -> Array\n   *\n   * An array of child nodes (inline and img tokens)\n   **/\n  this.children = null\n\n  /**\n   * Token#content -> String\n   *\n   * In a case of self-closing tag (code, html, fence, etc.),\n   * it has contents of this tag.\n   **/\n  this.content = ''\n\n  /**\n   * Token#markup -> String\n   *\n   * '*' or '_' for emphasis, fence string for fence, etc.\n   **/\n  this.markup = ''\n\n  /**\n   * Token#info -> String\n   *\n   * Additional information:\n   *\n   * - Info string for \"fence\" tokens\n   * - The value \"auto\" for autolink \"link_open\" and \"link_close\" tokens\n   * - The string value of the item marker for ordered-list \"list_item_open\" tokens\n   **/\n  this.info = ''\n\n  /**\n   * Token#meta -> Object\n   *\n   * A place for plugins to store an arbitrary data\n   **/\n  this.meta = null\n\n  /**\n   * Token#block -> Boolean\n   *\n   * True for block-level tokens, false for inline tokens.\n   * Used in renderer to calculate line breaks\n   **/\n  this.block = false\n\n  /**\n   * Token#hidden -> Boolean\n   *\n   * If it's true, ignore this element when rendering. Used for tight lists\n   * to hide paragraphs.\n   **/\n  this.hidden = false\n}\n\n/**\n * Token.attrIndex(name) -> Number\n *\n * Search attribute index by name.\n **/\nToken.prototype.attrIndex = function attrIndex (name) {\n  if (!this.attrs) { return -1 }\n\n  const attrs = this.attrs\n\n  for (let i = 0, len = attrs.length; i < len; i++) {\n    if (attrs[i][0] === name) { return i }\n  }\n  return -1\n}\n\n/**\n * Token.attrPush(attrData)\n *\n * Add `[ name, value ]` attribute to list. Init attrs if necessary\n **/\nToken.prototype.attrPush = function attrPush (attrData) {\n  if (this.attrs) {\n    this.attrs.push(attrData)\n  } else {\n    this.attrs = [attrData]\n  }\n}\n\n/**\n * Token.attrSet(name, value)\n *\n * Set `name` attribute to `value`. Override old value if exists.\n **/\nToken.prototype.attrSet = function attrSet (name, value) {\n  const idx = this.attrIndex(name)\n  const attrData = [name, value]\n\n  if (idx < 0) {\n    this.attrPush(attrData)\n  } else {\n    this.attrs[idx] = attrData\n  }\n}\n\n/**\n * Token.attrGet(name)\n *\n * Get the value of attribute `name`, or null if it does not exist.\n **/\nToken.prototype.attrGet = function attrGet (name) {\n  const idx = this.attrIndex(name)\n  let value = null\n  if (idx >= 0) {\n    value = this.attrs[idx][1]\n  }\n  return value\n}\n\n/**\n * Token.attrJoin(name, value)\n *\n * Join value to existing attribute via space. Or create new attribute if not\n * exists. Useful to operate with token classes.\n **/\nToken.prototype.attrJoin = function attrJoin (name, value) {\n  const idx = this.attrIndex(name)\n\n  if (idx < 0) {\n    this.attrPush([name, value])\n  } else {\n    this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value\n  }\n}\n\nexport default Token\n","// Core state object\n//\n\nimport Token from '../token.mjs'\n\nfunction StateCore (src, md, env) {\n  this.src = src\n  this.env = env\n  this.tokens = []\n  this.inlineMode = false\n  this.md = md // link to parser instance\n}\n\n// re-export Token class to use in core rules\nStateCore.prototype.Token = Token\n\nexport default StateCore\n","// Normalize input string\n\n// https://spec.commonmark.org/0.29/#line-ending\nconst NEWLINES_RE = /\\r\\n?|\\n/g\nconst NULL_RE = /\\0/g\n\nexport default function normalize (state) {\n  let str\n\n  // Normalize newlines\n  str = state.src.replace(NEWLINES_RE, '\\n')\n\n  // Replace NULL characters\n  str = str.replace(NULL_RE, '\\uFFFD')\n\n  state.src = str\n}\n","export default function block (state) {\n  let token\n\n  if (state.inlineMode) {\n    token = new state.Token('inline', '', 0)\n    token.content = state.src\n    token.map = [0, 1]\n    token.children = []\n    state.tokens.push(token)\n  } else {\n    state.md.block.parse(state.src, state.md, state.env, state.tokens)\n  }\n}\n","export default function inline (state) {\n  const tokens = state.tokens\n\n  // Parse inlines\n  for (let i = 0, l = tokens.length; i < l; i++) {\n    const tok = tokens[i]\n    if (tok.type === 'inline') {\n      state.md.inline.parse(tok.content, state.md, state.env, tok.children)\n    }\n  }\n}\n","// Replace link-like texts with link nodes.\n//\n// Currently restricted by `md.validateLink()` to http/https/ftp\n//\n\nimport { arrayReplaceAt } from '../common/utils.mjs'\n\nfunction isLinkOpen (str) {\n  return /^<a[>\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n  return /^<\\/a\\s*>/i.test(str)\n}\n\nexport default function linkify (state) {\n  const blockTokens = state.tokens\n\n  if (!state.md.options.linkify) { return }\n\n  for (let j = 0, l = blockTokens.length; j < l; j++) {\n    if (blockTokens[j].type !== 'inline' ||\n        !state.md.linkify.pretest(blockTokens[j].content)) {\n      continue\n    }\n\n    let tokens = blockTokens[j].children\n\n    let htmlLinkLevel = 0\n\n    // We scan from the end, to keep position when new tags added.\n    // Use reversed logic in links start/end match\n    for (let i = tokens.length - 1; i >= 0; i--) {\n      const currentToken = tokens[i]\n\n      // Skip content of markdown links\n      if (currentToken.type === 'link_close') {\n        i--\n        while (tokens[i].level !== currentToken.level && tokens[i].type !== 'link_open') {\n          i--\n        }\n        continue\n      }\n\n      // Skip content of html tag links\n      if (currentToken.type === 'html_inline') {\n        if (isLinkOpen(currentToken.content) && htmlLinkLevel > 0) {\n          htmlLinkLevel--\n        }\n        if (isLinkClose(currentToken.content)) {\n          htmlLinkLevel++\n        }\n      }\n      if (htmlLinkLevel > 0) { continue }\n\n      if (currentToken.type === 'text' && state.md.linkify.test(currentToken.content)) {\n        const text = currentToken.content\n        let links = state.md.linkify.match(text)\n\n        // Now split string to nodes\n        const nodes = []\n        let level = currentToken.level\n        let lastPos = 0\n\n        // forbid escape sequence at the start of the string,\n        // this avoids http\\://example.com/ from being linkified as\n        // http:<a href=\"//example.com/\">//example.com/</a>\n        if (links.length > 0 &&\n            links[0].index === 0 &&\n            i > 0 &&\n            tokens[i - 1].type === 'text_special') {\n          links = links.slice(1)\n        }\n\n        for (let ln = 0; ln < links.length; ln++) {\n          const url = links[ln].url\n          const fullUrl = state.md.normalizeLink(url)\n          if (!state.md.validateLink(fullUrl)) { continue }\n\n          let urlText = links[ln].text\n\n          // Linkifier might send raw hostnames like \"example.com\", where url\n          // starts with domain name. So we prepend http:// in those cases,\n          // and remove it afterwards.\n          //\n          if (!links[ln].schema) {\n            urlText = state.md.normalizeLinkText('http://' + urlText).replace(/^http:\\/\\//, '')\n          } else if (links[ln].schema === 'mailto:' && !/^mailto:/i.test(urlText)) {\n            urlText = state.md.normalizeLinkText('mailto:' + urlText).replace(/^mailto:/, '')\n          } else {\n            urlText = state.md.normalizeLinkText(urlText)\n          }\n\n          const pos = links[ln].index\n\n          if (pos > lastPos) {\n            const token = new state.Token('text', '', 0)\n            token.content = text.slice(lastPos, pos)\n            token.level = level\n            nodes.push(token)\n          }\n\n          const token_o = new state.Token('link_open', 'a', 1)\n          token_o.attrs = [['href', fullUrl]]\n          token_o.level = level++\n          token_o.markup = 'linkify'\n          token_o.info = 'auto'\n          nodes.push(token_o)\n\n          const token_t = new state.Token('text', '', 0)\n          token_t.content = urlText\n          token_t.level = level\n          nodes.push(token_t)\n\n          const token_c = new state.Token('link_close', 'a', -1)\n          token_c.level = --level\n          token_c.markup = 'linkify'\n          token_c.info = 'auto'\n          nodes.push(token_c)\n\n          lastPos = links[ln].lastIndex\n        }\n        if (lastPos < text.length) {\n          const token = new state.Token('text', '', 0)\n          token.content = text.slice(lastPos)\n          token.level = level\n          nodes.push(token)\n        }\n\n        // replace current node\n        blockTokens[j].children = tokens = arrayReplaceAt(tokens, i, nodes)\n      }\n    }\n  }\n}\n","// Simple typographic replacements\n//\n// (c) (C) → ©\n// (tm) (TM) → ™\n// (r) (R) → ®\n// +- → ±\n// ... → … (also ?.... → ?.., !.... → !..)\n// ???????? → ???, !!!!! → !!!, `,,` → `,`\n// -- → &ndash;, --- → &mdash;\n//\n\n// TODO:\n// - fractionals 1/2, 1/4, 3/4 -> ½, ¼, ¾\n// - multiplications 2 x 4 -> 2 × 4\n\nconst RARE_RE = /\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/\n\n// Workaround for phantomjs - need regex without /g flag,\n// or root check will fail every second time\nconst SCOPED_ABBR_TEST_RE = /\\((c|tm|r)\\)/i\n\nconst SCOPED_ABBR_RE = /\\((c|tm|r)\\)/ig\nconst SCOPED_ABBR = {\n  c: '©',\n  r: '®',\n  tm: '™'\n}\n\nfunction replaceFn (match, name) {\n  return SCOPED_ABBR[name.toLowerCase()]\n}\n\nfunction replace_scoped (inlineTokens) {\n  let inside_autolink = 0\n\n  for (let i = inlineTokens.length - 1; i >= 0; i--) {\n    const token = inlineTokens[i]\n\n    if (token.type === 'text' && !inside_autolink) {\n      token.content = token.content.replace(SCOPED_ABBR_RE, replaceFn)\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++\n    }\n  }\n}\n\nfunction replace_rare (inlineTokens) {\n  let inside_autolink = 0\n\n  for (let i = inlineTokens.length - 1; i >= 0; i--) {\n    const token = inlineTokens[i]\n\n    if (token.type === 'text' && !inside_autolink) {\n      if (RARE_RE.test(token.content)) {\n        token.content = token.content\n          .replace(/\\+-/g, '±')\n          // .., ..., ....... -> …\n          // but ?..... & !..... -> ?.. & !..\n          .replace(/\\.{2,}/g, '…').replace(/([?!])…/g, '$1..')\n          .replace(/([?!]){4,}/g, '$1$1$1').replace(/,{2,}/g, ',')\n          // em-dash\n          .replace(/(^|[^-])---(?=[^-]|$)/mg, '$1\\u2014')\n          // en-dash\n          .replace(/(^|\\s)--(?=\\s|$)/mg, '$1\\u2013')\n          .replace(/(^|[^-\\s])--(?=[^-\\s]|$)/mg, '$1\\u2013')\n      }\n    }\n\n    if (token.type === 'link_open' && token.info === 'auto') {\n      inside_autolink--\n    }\n\n    if (token.type === 'link_close' && token.info === 'auto') {\n      inside_autolink++\n    }\n  }\n}\n\nexport default function replace (state) {\n  let blkIdx\n\n  if (!state.md.options.typographer) { return }\n\n  for (blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== 'inline') { continue }\n\n    if (SCOPED_ABBR_TEST_RE.test(state.tokens[blkIdx].content)) {\n      replace_scoped(state.tokens[blkIdx].children)\n    }\n\n    if (RARE_RE.test(state.tokens[blkIdx].content)) {\n      replace_rare(state.tokens[blkIdx].children)\n    }\n  }\n}\n","// Convert straight quotation marks to typographic ones\n//\n\nimport { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'\n\nconst QUOTE_TEST_RE = /['\"]/\nconst QUOTE_RE = /['\"]/g\nconst APOSTROPHE = '\\u2019' /* ’ */\n\nfunction addReplacement (replacements, tokenIdx, pos, ch) {\n  if (!replacements[tokenIdx]) {\n    replacements[tokenIdx] = []\n  }\n\n  replacements[tokenIdx].push({ pos, ch })\n}\n\nfunction applyReplacements (str, replacements) {\n  let result = ''\n  let lastPos = 0\n\n  replacements.sort((a, b) => a.pos - b.pos)\n\n  for (let i = 0; i < replacements.length; i++) {\n    const replacement = replacements[i]\n\n    result += str.slice(lastPos, replacement.pos) + replacement.ch\n    lastPos = replacement.pos + 1\n  }\n\n  return result + str.slice(lastPos)\n}\n\nfunction process_inlines (tokens, state) {\n  let j\n\n  const stack = []\n  // token index -> list of replacements in the original token content\n  const replacements = {}\n\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i]\n\n    const thisLevel = tokens[i].level\n\n    for (j = stack.length - 1; j >= 0; j--) {\n      if (stack[j].level <= thisLevel) { break }\n    }\n    stack.length = j + 1\n\n    if (token.type !== 'text') { continue }\n\n    const text = token.content\n    let pos = 0\n    const max = text.length\n\n    /* eslint no-labels:0,block-scoped-var:0 */\n    OUTER:\n    while (pos < max) {\n      QUOTE_RE.lastIndex = pos\n      const t = QUOTE_RE.exec(text)\n      if (!t) { break }\n\n      let canOpen = true\n      let canClose = true\n      pos = t.index + 1\n      const isSingle = (t[0] === \"'\")\n\n      // Find previous character,\n      // default to space if it's the beginning of the line\n      //\n      let lastChar = 0x20\n\n      if (t.index - 1 >= 0) {\n        lastChar = text.charCodeAt(t.index - 1)\n      } else {\n        for (j = i - 1; j >= 0; j--) {\n          if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // lastChar defaults to 0x20\n          if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n          lastChar = tokens[j].content.charCodeAt(tokens[j].content.length - 1)\n          break\n        }\n      }\n\n      // Find next character,\n      // default to space if it's the end of the line\n      //\n      let nextChar = 0x20\n\n      if (pos < max) {\n        nextChar = text.charCodeAt(pos)\n      } else {\n        for (j = i + 1; j < tokens.length; j++) {\n          if (tokens[j].type === 'softbreak' || tokens[j].type === 'hardbreak') break // nextChar defaults to 0x20\n          if (!tokens[j].content) continue // should skip all tokens except 'text', 'html_inline' or 'code_inline'\n\n          nextChar = tokens[j].content.charCodeAt(0)\n          break\n        }\n      }\n\n      const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar)\n      const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar)\n\n      const isLastWhiteSpace = isWhiteSpace(lastChar)\n      const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n      if (isNextWhiteSpace) {\n        canOpen = false\n      } else if (isNextPunctChar) {\n        if (!(isLastWhiteSpace || isLastPunctChar)) {\n          canOpen = false\n        }\n      }\n\n      if (isLastWhiteSpace) {\n        canClose = false\n      } else if (isLastPunctChar) {\n        if (!(isNextWhiteSpace || isNextPunctChar)) {\n          canClose = false\n        }\n      }\n\n      if (nextChar === 0x22 /* \" */ && t[0] === '\"') {\n        if (lastChar >= 0x30 /* 0 */ && lastChar <= 0x39 /* 9 */) {\n          // special case: 1\"\" - count first quote as an inch\n          canClose = canOpen = false\n        }\n      }\n\n      if (canOpen && canClose) {\n        // Replace quotes in the middle of punctuation sequence, but not\n        // in the middle of the words, i.e.:\n        //\n        // 1. foo \" bar \" baz - not replaced\n        // 2. foo-\"-bar-\"-baz - replaced\n        // 3. foo\"bar\"baz     - not replaced\n        //\n        canOpen = isLastPunctChar\n        canClose = isNextPunctChar\n      }\n\n      if (!canOpen && !canClose) {\n        // middle of word\n        if (isSingle) {\n          addReplacement(replacements, i, t.index, APOSTROPHE)\n        }\n        continue\n      }\n\n      if (canClose) {\n        // this could be a closing quote, rewind the stack to get a match\n        for (j = stack.length - 1; j >= 0; j--) {\n          let item = stack[j]\n          if (stack[j].level < thisLevel) { break }\n          if (item.single === isSingle && stack[j].level === thisLevel) {\n            item = stack[j]\n\n            let openQuote\n            let closeQuote\n            if (isSingle) {\n              openQuote = state.md.options.quotes[2]\n              closeQuote = state.md.options.quotes[3]\n            } else {\n              openQuote = state.md.options.quotes[0]\n              closeQuote = state.md.options.quotes[1]\n            }\n\n            addReplacement(replacements, i, t.index, closeQuote)\n            addReplacement(replacements, item.token, item.pos, openQuote)\n\n            stack.length = j\n            continue OUTER\n          }\n        }\n      }\n\n      if (canOpen) {\n        stack.push({\n          token: i,\n          pos: t.index,\n          single: isSingle,\n          level: thisLevel\n        })\n      } else if (canClose && isSingle) {\n        addReplacement(replacements, i, t.index, APOSTROPHE)\n      }\n    }\n  }\n\n  Object.keys(replacements).forEach(function (tokenIdx) {\n    tokens[tokenIdx].content = applyReplacements(tokens[tokenIdx].content, replacements[tokenIdx])\n  })\n}\n\nexport default function smartquotes (state) {\n  /* eslint max-depth:0 */\n  if (!state.md.options.typographer) { return }\n\n  for (let blkIdx = state.tokens.length - 1; blkIdx >= 0; blkIdx--) {\n    if (state.tokens[blkIdx].type !== 'inline' ||\n        !QUOTE_TEST_RE.test(state.tokens[blkIdx].content)) {\n      continue\n    }\n\n    process_inlines(state.tokens[blkIdx].children, state)\n  }\n}\n","// Join raw text tokens with the rest of the text\n//\n// This is set as a separate rule to provide an opportunity for plugins\n// to run text replacements after text join, but before escape join.\n//\n// For example, `\\:)` shouldn't be replaced with an emoji.\n//\n\nexport default function text_join (state) {\n  let curr, last\n  const blockTokens = state.tokens\n  const l = blockTokens.length\n\n  for (let j = 0; j < l; j++) {\n    if (blockTokens[j].type !== 'inline') continue\n\n    const tokens = blockTokens[j].children\n    const max = tokens.length\n\n    for (curr = 0; curr < max; curr++) {\n      if (tokens[curr].type === 'text_special') {\n        tokens[curr].type = 'text'\n      }\n    }\n\n    for (curr = last = 0; curr < max; curr++) {\n      if (tokens[curr].type === 'text' &&\n          curr + 1 < max &&\n          tokens[curr + 1].type === 'text') {\n        // collapse two adjacent text nodes\n        tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n      } else {\n        if (curr !== last) { tokens[last] = tokens[curr] }\n\n        last++\n      }\n    }\n\n    if (curr !== last) {\n      tokens.length = last\n    }\n  }\n}\n","/** internal\n * class Core\n *\n * Top-level rules executor. Glues block/inline parsers and does intermediate\n * transformations.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateCore from './rules_core/state_core.mjs'\n\nimport r_normalize from './rules_core/normalize.mjs'\nimport r_block from './rules_core/block.mjs'\nimport r_inline from './rules_core/inline.mjs'\nimport r_linkify from './rules_core/linkify.mjs'\nimport r_replacements from './rules_core/replacements.mjs'\nimport r_smartquotes from './rules_core/smartquotes.mjs'\nimport r_text_join from './rules_core/text_join.mjs'\n\nconst _rules = [\n  ['normalize', r_normalize],\n  ['block', r_block],\n  ['inline', r_inline],\n  ['linkify', r_linkify],\n  ['replacements', r_replacements],\n  ['smartquotes', r_smartquotes],\n  // `text_join` finds `text_special` tokens (for escape sequences)\n  // and joins them with the rest of the text\n  ['text_join', r_text_join]\n]\n\n/**\n * new Core()\n **/\nfunction Core () {\n  /**\n   * Core#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of core rules.\n   **/\n  this.ruler = new Ruler()\n\n  for (let i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1])\n  }\n}\n\n/**\n * Core.process(state)\n *\n * Executes core chain rules.\n **/\nCore.prototype.process = function (state) {\n  const rules = this.ruler.getRules('')\n\n  for (let i = 0, l = rules.length; i < l; i++) {\n    rules[i](state)\n  }\n}\n\nCore.prototype.State = StateCore\n\nexport default Core\n","// Parser state class\n\nimport Token from '../token.mjs'\nimport { isSpace } from '../common/utils.mjs'\n\nfunction StateBlock (src, md, env, tokens) {\n  this.src = src\n\n  // link to parser instance\n  this.md = md\n\n  this.env = env\n\n  //\n  // Internal state vartiables\n  //\n\n  this.tokens = tokens\n\n  this.bMarks = []  // line begin offsets for fast jumps\n  this.eMarks = []  // line end offsets for fast jumps\n  this.tShift = []  // offsets of the first non-space characters (tabs not expanded)\n  this.sCount = []  // indents for each line (tabs expanded)\n\n  // An amount of virtual spaces (tabs expanded) between beginning\n  // of each line (bMarks) and real beginning of that line.\n  //\n  // It exists only as a hack because blockquotes override bMarks\n  // losing information in the process.\n  //\n  // It's used only when expanding tabs, you can think about it as\n  // an initial tab length, e.g. bsCount=21 applied to string `\\t123`\n  // means first tab should be expanded to 4-21%4 === 3 spaces.\n  //\n  this.bsCount = []\n\n  // block parser variables\n\n  // required block content indent (for example, if we are\n  // inside a list, it would be positioned after list marker)\n  this.blkIndent = 0\n  this.line = 0 // line index in src\n  this.lineMax = 0 // lines count\n  this.tight = false  // loose/tight mode for lists\n  this.ddIndent = -1 // indent of the current dd block (-1 if there isn't any)\n  this.listIndent = -1 // indent of the current list block (-1 if there isn't any)\n\n  // can be 'blockquote', 'list', 'root', 'paragraph' or 'reference'\n  // used in lists to determine if they interrupt a paragraph\n  this.parentType = 'root'\n\n  this.level = 0\n\n  // Create caches\n  // Generate markers.\n  const s = this.src\n\n  for (let start = 0, pos = 0, indent = 0, offset = 0, len = s.length, indent_found = false; pos < len; pos++) {\n    const ch = s.charCodeAt(pos)\n\n    if (!indent_found) {\n      if (isSpace(ch)) {\n        indent++\n\n        if (ch === 0x09) {\n          offset += 4 - offset % 4\n        } else {\n          offset++\n        }\n        continue\n      } else {\n        indent_found = true\n      }\n    }\n\n    if (ch === 0x0A || pos === len - 1) {\n      if (ch !== 0x0A) { pos++ }\n      this.bMarks.push(start)\n      this.eMarks.push(pos)\n      this.tShift.push(indent)\n      this.sCount.push(offset)\n      this.bsCount.push(0)\n\n      indent_found = false\n      indent = 0\n      offset = 0\n      start = pos + 1\n    }\n  }\n\n  // Push fake entry to simplify cache bounds checks\n  this.bMarks.push(s.length)\n  this.eMarks.push(s.length)\n  this.tShift.push(0)\n  this.sCount.push(0)\n  this.bsCount.push(0)\n\n  this.lineMax = this.bMarks.length - 1 // don't count last fake line\n}\n\n// Push new token to \"stream\".\n//\nStateBlock.prototype.push = function (type, tag, nesting) {\n  const token = new Token(type, tag, nesting)\n  token.block = true\n\n  if (nesting < 0) this.level-- // closing tag\n  token.level = this.level\n  if (nesting > 0) this.level++ // opening tag\n\n  this.tokens.push(token)\n  return token\n}\n\nStateBlock.prototype.isEmpty = function isEmpty (line) {\n  return this.bMarks[line] + this.tShift[line] >= this.eMarks[line]\n}\n\nStateBlock.prototype.skipEmptyLines = function skipEmptyLines (from) {\n  for (let max = this.lineMax; from < max; from++) {\n    if (this.bMarks[from] + this.tShift[from] < this.eMarks[from]) {\n      break\n    }\n  }\n  return from\n}\n\n// Skip spaces from given position.\nStateBlock.prototype.skipSpaces = function skipSpaces (pos) {\n  for (let max = this.src.length; pos < max; pos++) {\n    const ch = this.src.charCodeAt(pos)\n    if (!isSpace(ch)) { break }\n  }\n  return pos\n}\n\n// Skip spaces from given position in reverse.\nStateBlock.prototype.skipSpacesBack = function skipSpacesBack (pos, min) {\n  if (pos <= min) { return pos }\n\n  while (pos > min) {\n    if (!isSpace(this.src.charCodeAt(--pos))) { return pos + 1 }\n  }\n  return pos\n}\n\n// Skip char codes from given position\nStateBlock.prototype.skipChars = function skipChars (pos, code) {\n  for (let max = this.src.length; pos < max; pos++) {\n    if (this.src.charCodeAt(pos) !== code) { break }\n  }\n  return pos\n}\n\n// Skip char codes reverse from given position - 1\nStateBlock.prototype.skipCharsBack = function skipCharsBack (pos, code, min) {\n  if (pos <= min) { return pos }\n\n  while (pos > min) {\n    if (code !== this.src.charCodeAt(--pos)) { return pos + 1 }\n  }\n  return pos\n}\n\n// cut lines range from source.\nStateBlock.prototype.getLines = function getLines (begin, end, indent, keepLastLF) {\n  if (begin >= end) {\n    return ''\n  }\n\n  const queue = new Array(end - begin)\n\n  for (let i = 0, line = begin; line < end; line++, i++) {\n    let lineIndent = 0\n    const lineStart = this.bMarks[line]\n    let first = lineStart\n    let last\n\n    if (line + 1 < end || keepLastLF) {\n      // No need for bounds check because we have fake entry on tail.\n      last = this.eMarks[line] + 1\n    } else {\n      last = this.eMarks[line]\n    }\n\n    while (first < last && lineIndent < indent) {\n      const ch = this.src.charCodeAt(first)\n\n      if (isSpace(ch)) {\n        if (ch === 0x09) {\n          lineIndent += 4 - (lineIndent + this.bsCount[line]) % 4\n        } else {\n          lineIndent++\n        }\n      } else if (first - lineStart < this.tShift[line]) {\n        // patched tShift masked characters to look like spaces (blockquotes, list markers)\n        lineIndent++\n      } else {\n        break\n      }\n\n      first++\n    }\n\n    if (lineIndent > indent) {\n      // partially expanding tabs in code blocks, e.g '\\t\\tfoobar'\n      // with indent=2 becomes '  \\tfoobar'\n      queue[i] = new Array(lineIndent - indent + 1).join(' ') + this.src.slice(first, last)\n    } else {\n      queue[i] = this.src.slice(first, last)\n    }\n  }\n\n  return queue.join('')\n}\n\n// re-export Token class to use in block rules\nStateBlock.prototype.Token = Token\n\nexport default StateBlock\n","// GFM table, https://github.github.com/gfm/#tables-extension-\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Limit the amount of empty autocompleted cells in a table,\n// see https://github.com/markdown-it/markdown-it/issues/1000,\n//\n// Both pulldown-cmark and commonmark-hs limit the number of cells this way to ~200k.\n// We set it to 65k, which can expand user input by a factor of x370\n// (256x256 square is 1.8kB expanded into 650kB).\nconst MAX_AUTOCOMPLETED_CELLS = 0x10000\n\nfunction getLine (state, line) {\n  const pos = state.bMarks[line] + state.tShift[line]\n  const max = state.eMarks[line]\n\n  return state.src.slice(pos, max)\n}\n\nfunction escapedSplit (str) {\n  const result = []\n  const max = str.length\n\n  let pos = 0\n  let ch = str.charCodeAt(pos)\n  let isEscaped = false\n  let lastPos = 0\n  let current = ''\n\n  while (pos < max) {\n    if (ch === 0x7c/* | */) {\n      if (!isEscaped) {\n        // pipe separating cells, '|'\n        result.push(current + str.substring(lastPos, pos))\n        current = ''\n        lastPos = pos + 1\n      } else {\n        // escaped pipe, '\\|'\n        current += str.substring(lastPos, pos - 1)\n        lastPos = pos\n      }\n    }\n\n    isEscaped = (ch === 0x5c/* \\ */)\n    pos++\n\n    ch = str.charCodeAt(pos)\n  }\n\n  result.push(current + str.substring(lastPos))\n\n  return result\n}\n\nexport default function table (state, startLine, endLine, silent) {\n  // should have at least two lines\n  if (startLine + 2 > endLine) { return false }\n\n  let nextLine = startLine + 1\n\n  if (state.sCount[nextLine] < state.blkIndent) { return false }\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n  // first character of the second line should be '|', '-', ':',\n  // and no other characters are allowed but spaces;\n  // basically, this is the equivalent of /^[-:|][-:|\\s]*$/ regexp\n\n  let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n  if (pos >= state.eMarks[nextLine]) { return false }\n\n  const firstCh = state.src.charCodeAt(pos++)\n  if (firstCh !== 0x7C/* | */ && firstCh !== 0x2D/* - */ && firstCh !== 0x3A/* : */) { return false }\n\n  if (pos >= state.eMarks[nextLine]) { return false }\n\n  const secondCh = state.src.charCodeAt(pos++)\n  if (secondCh !== 0x7C/* | */ && secondCh !== 0x2D/* - */ && secondCh !== 0x3A/* : */ && !isSpace(secondCh)) {\n    return false\n  }\n\n  // if first character is '-', then second character must not be a space\n  // (due to parsing ambiguity with list)\n  if (firstCh === 0x2D/* - */ && isSpace(secondCh)) { return false }\n\n  while (pos < state.eMarks[nextLine]) {\n    const ch = state.src.charCodeAt(pos)\n\n    if (ch !== 0x7C/* | */ && ch !== 0x2D/* - */ && ch !== 0x3A/* : */ && !isSpace(ch)) { return false }\n\n    pos++\n  }\n\n  let lineText = getLine(state, startLine + 1)\n  let columns = lineText.split('|')\n  const aligns = []\n  for (let i = 0; i < columns.length; i++) {\n    const t = columns[i].trim()\n    if (!t) {\n      // allow empty columns before and after table, but not in between columns;\n      // e.g. allow ` |---| `, disallow ` ---||--- `\n      if (i === 0 || i === columns.length - 1) {\n        continue\n      } else {\n        return false\n      }\n    }\n\n    if (!/^:?-+:?$/.test(t)) { return false }\n    if (t.charCodeAt(t.length - 1) === 0x3A/* : */) {\n      aligns.push(t.charCodeAt(0) === 0x3A/* : */ ? 'center' : 'right')\n    } else if (t.charCodeAt(0) === 0x3A/* : */) {\n      aligns.push('left')\n    } else {\n      aligns.push('')\n    }\n  }\n\n  lineText = getLine(state, startLine).trim()\n  if (lineText.indexOf('|') === -1) { return false }\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n  columns = escapedSplit(lineText)\n  if (columns.length && columns[0] === '') columns.shift()\n  if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n  // header row will define an amount of columns in the entire table,\n  // and align row should be exactly the same (the rest of the rows can differ)\n  const columnCount = columns.length\n  if (columnCount === 0 || columnCount !== aligns.length) { return false }\n\n  if (silent) { return true }\n\n  const oldParentType = state.parentType\n  state.parentType = 'table'\n\n  // use 'blockquote' lists for termination because it's\n  // the most similar to tables\n  const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n  const token_to = state.push('table_open', 'table', 1)\n  const tableLines = [startLine, 0]\n  token_to.map = tableLines\n\n  const token_tho = state.push('thead_open', 'thead', 1)\n  token_tho.map = [startLine, startLine + 1]\n\n  const token_htro = state.push('tr_open', 'tr', 1)\n  token_htro.map = [startLine, startLine + 1]\n\n  for (let i = 0; i < columns.length; i++) {\n    const token_ho = state.push('th_open', 'th', 1)\n    if (aligns[i]) {\n      token_ho.attrs = [['style', 'text-align:' + aligns[i]]]\n    }\n\n    const token_il = state.push('inline', '', 0)\n    token_il.content = columns[i].trim()\n    token_il.children = []\n\n    state.push('th_close', 'th', -1)\n  }\n\n  state.push('tr_close', 'tr', -1)\n  state.push('thead_close', 'thead', -1)\n\n  let tbodyLines\n  let autocompletedCells = 0\n\n  for (nextLine = startLine + 2; nextLine < endLine; nextLine++) {\n    if (state.sCount[nextLine] < state.blkIndent) { break }\n\n    let terminate = false\n    for (let i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true\n        break\n      }\n    }\n\n    if (terminate) { break }\n    lineText = getLine(state, nextLine).trim()\n    if (!lineText) { break }\n    if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n    columns = escapedSplit(lineText)\n    if (columns.length && columns[0] === '') columns.shift()\n    if (columns.length && columns[columns.length - 1] === '') columns.pop()\n\n    // note: autocomplete count can be negative if user specifies more columns than header,\n    // but that does not affect intended use (which is limiting expansion)\n    autocompletedCells += columnCount - columns.length\n    if (autocompletedCells > MAX_AUTOCOMPLETED_CELLS) { break }\n\n    if (nextLine === startLine + 2) {\n      const token_tbo = state.push('tbody_open', 'tbody', 1)\n      token_tbo.map = tbodyLines = [startLine + 2, 0]\n    }\n\n    const token_tro = state.push('tr_open', 'tr', 1)\n    token_tro.map = [nextLine, nextLine + 1]\n\n    for (let i = 0; i < columnCount; i++) {\n      const token_tdo = state.push('td_open', 'td', 1)\n      if (aligns[i]) {\n        token_tdo.attrs = [['style', 'text-align:' + aligns[i]]]\n      }\n\n      const token_il = state.push('inline', '', 0)\n      token_il.content = columns[i] ? columns[i].trim() : ''\n      token_il.children = []\n\n      state.push('td_close', 'td', -1)\n    }\n    state.push('tr_close', 'tr', -1)\n  }\n\n  if (tbodyLines) {\n    state.push('tbody_close', 'tbody', -1)\n    tbodyLines[1] = nextLine\n  }\n\n  state.push('table_close', 'table', -1)\n  tableLines[1] = nextLine\n\n  state.parentType = oldParentType\n  state.line = nextLine\n  return true\n}\n","// Code block (4 spaces padded)\n\nexport default function code (state, startLine, endLine/*, silent */) {\n  if (state.sCount[startLine] - state.blkIndent < 4) { return false }\n\n  let nextLine = startLine + 1\n  let last = nextLine\n\n  while (nextLine < endLine) {\n    if (state.isEmpty(nextLine)) {\n      nextLine++\n      continue\n    }\n\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      nextLine++\n      last = nextLine\n      continue\n    }\n    break\n  }\n\n  state.line = last\n\n  const token = state.push('code_block', 'code', 0)\n  token.content = state.getLines(startLine, last, 4 + state.blkIndent, false) + '\\n'\n  token.map = [startLine, state.line]\n\n  return true\n}\n","// fences (``` lang, ~~~ lang)\n\nexport default function fence (state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  let max = state.eMarks[startLine]\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  if (pos + 3 > max) { return false }\n\n  const marker = state.src.charCodeAt(pos)\n\n  if (marker !== 0x7E/* ~ */ && marker !== 0x60 /* ` */) {\n    return false\n  }\n\n  // scan marker length\n  let mem = pos\n  pos = state.skipChars(pos, marker)\n\n  let len = pos - mem\n\n  if (len < 3) { return false }\n\n  const markup = state.src.slice(mem, pos)\n  const params = state.src.slice(pos, max)\n\n  if (marker === 0x60 /* ` */) {\n    if (params.indexOf(String.fromCharCode(marker)) >= 0) {\n      return false\n    }\n  }\n\n  // Since start is found, we can report success here in validation mode\n  if (silent) { return true }\n\n  // search end of block\n  let nextLine = startLine\n  let haveEndMarker = false\n\n  for (;;) {\n    nextLine++\n    if (nextLine >= endLine) {\n      // unclosed block should be autoclosed by end of document.\n      // also block seems to be autoclosed by end of parent\n      break\n    }\n\n    pos = mem = state.bMarks[nextLine] + state.tShift[nextLine]\n    max = state.eMarks[nextLine]\n\n    if (pos < max && state.sCount[nextLine] < state.blkIndent) {\n      // non-empty line with negative indent should stop the list:\n      // - ```\n      //  test\n      break\n    }\n\n    if (state.src.charCodeAt(pos) !== marker) { continue }\n\n    if (state.sCount[nextLine] - state.blkIndent >= 4) {\n      // closing fence should be indented less than 4 spaces\n      continue\n    }\n\n    pos = state.skipChars(pos, marker)\n\n    // closing code fence must be at least as long as the opening one\n    if (pos - mem < len) { continue }\n\n    // make sure tail has spaces only\n    pos = state.skipSpaces(pos)\n\n    if (pos < max) { continue }\n\n    haveEndMarker = true\n    // found!\n    break\n  }\n\n  // If a fence has heading spaces, they should be removed from its inner block\n  len = state.sCount[startLine]\n\n  state.line = nextLine + (haveEndMarker ? 1 : 0)\n\n  const token = state.push('fence', 'code', 0)\n  token.info = params\n  token.content = state.getLines(startLine + 1, nextLine, len, true)\n  token.markup = markup\n  token.map = [startLine, state.line]\n\n  return true\n}\n","// Block quotes\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function blockquote (state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  let max = state.eMarks[startLine]\n\n  const oldLineMax = state.lineMax\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  // check the block quote marker\n  if (state.src.charCodeAt(pos) !== 0x3E/* > */) { return false }\n\n  // we know that it's going to be a valid blockquote,\n  // so no point trying to find the end of it in silent mode\n  if (silent) { return true }\n\n  const oldBMarks = []\n  const oldBSCount = []\n  const oldSCount = []\n  const oldTShift = []\n\n  const terminatorRules = state.md.block.ruler.getRules('blockquote')\n\n  const oldParentType = state.parentType\n  state.parentType = 'blockquote'\n  let lastLineEmpty = false\n  let nextLine\n\n  // Search the end of the block\n  //\n  // Block ends with either:\n  //  1. an empty line outside:\n  //     ```\n  //     > test\n  //\n  //     ```\n  //  2. an empty line inside:\n  //     ```\n  //     >\n  //     test\n  //     ```\n  //  3. another tag:\n  //     ```\n  //     > test\n  //      - - -\n  //     ```\n  for (nextLine = startLine; nextLine < endLine; nextLine++) {\n    // check if it's outdented, i.e. it's inside list item and indented\n    // less than said list item:\n    //\n    // ```\n    // 1. anything\n    //    > current blockquote\n    // 2. checking this line\n    // ```\n    const isOutdented = state.sCount[nextLine] < state.blkIndent\n\n    pos = state.bMarks[nextLine] + state.tShift[nextLine]\n    max = state.eMarks[nextLine]\n\n    if (pos >= max) {\n      // Case 1: line is not inside the blockquote, and this line is empty.\n      break\n    }\n\n    if (state.src.charCodeAt(pos++) === 0x3E/* > */ && !isOutdented) {\n      // This line is inside the blockquote.\n\n      // set offset past spaces and \">\"\n      let initial = state.sCount[nextLine] + 1\n      let spaceAfterMarker\n      let adjustTab\n\n      // skip one optional space after '>'\n      if (state.src.charCodeAt(pos) === 0x20 /* space */) {\n        // ' >   test '\n        //     ^ -- position start of line here:\n        pos++\n        initial++\n        adjustTab = false\n        spaceAfterMarker = true\n      } else if (state.src.charCodeAt(pos) === 0x09 /* tab */) {\n        spaceAfterMarker = true\n\n        if ((state.bsCount[nextLine] + initial) % 4 === 3) {\n          // '  >\\t  test '\n          //       ^ -- position start of line here (tab has width===1)\n          pos++\n          initial++\n          adjustTab = false\n        } else {\n          // ' >\\t  test '\n          //    ^ -- position start of line here + shift bsCount slightly\n          //         to make extra space appear\n          adjustTab = true\n        }\n      } else {\n        spaceAfterMarker = false\n      }\n\n      let offset = initial\n      oldBMarks.push(state.bMarks[nextLine])\n      state.bMarks[nextLine] = pos\n\n      while (pos < max) {\n        const ch = state.src.charCodeAt(pos)\n\n        if (isSpace(ch)) {\n          if (ch === 0x09) {\n            offset += 4 - (offset + state.bsCount[nextLine] + (adjustTab ? 1 : 0)) % 4\n          } else {\n            offset++\n          }\n        } else {\n          break\n        }\n\n        pos++\n      }\n\n      lastLineEmpty = pos >= max\n\n      oldBSCount.push(state.bsCount[nextLine])\n      state.bsCount[nextLine] = state.sCount[nextLine] + 1 + (spaceAfterMarker ? 1 : 0)\n\n      oldSCount.push(state.sCount[nextLine])\n      state.sCount[nextLine] = offset - initial\n\n      oldTShift.push(state.tShift[nextLine])\n      state.tShift[nextLine] = pos - state.bMarks[nextLine]\n      continue\n    }\n\n    // Case 2: line is not inside the blockquote, and the last line was empty.\n    if (lastLineEmpty) { break }\n\n    // Case 3: another tag found.\n    let terminate = false\n    for (let i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true\n        break\n      }\n    }\n\n    if (terminate) {\n      // Quirk to enforce \"hard termination mode\" for paragraphs;\n      // normally if you call `tokenize(state, startLine, nextLine)`,\n      // paragraphs will look below nextLine for paragraph continuation,\n      // but if blockquote is terminated by another tag, they shouldn't\n      state.lineMax = nextLine\n\n      if (state.blkIndent !== 0) {\n        // state.blkIndent was non-zero, we now set it to zero,\n        // so we need to re-calculate all offsets to appear as\n        // if indent wasn't changed\n        oldBMarks.push(state.bMarks[nextLine])\n        oldBSCount.push(state.bsCount[nextLine])\n        oldTShift.push(state.tShift[nextLine])\n        oldSCount.push(state.sCount[nextLine])\n        state.sCount[nextLine] -= state.blkIndent\n      }\n\n      break\n    }\n\n    oldBMarks.push(state.bMarks[nextLine])\n    oldBSCount.push(state.bsCount[nextLine])\n    oldTShift.push(state.tShift[nextLine])\n    oldSCount.push(state.sCount[nextLine])\n\n    // A negative indentation means that this is a paragraph continuation\n    //\n    state.sCount[nextLine] = -1\n  }\n\n  const oldIndent = state.blkIndent\n  state.blkIndent = 0\n\n  const token_o = state.push('blockquote_open', 'blockquote', 1)\n  token_o.markup = '>'\n  const lines = [startLine, 0]\n  token_o.map = lines\n\n  state.md.block.tokenize(state, startLine, nextLine)\n\n  const token_c = state.push('blockquote_close', 'blockquote', -1)\n  token_c.markup = '>'\n\n  state.lineMax = oldLineMax\n  state.parentType = oldParentType\n  lines[1] = state.line\n\n  // Restore original tShift; this might not be necessary since the parser\n  // has already been here, but just to make sure we can do that.\n  for (let i = 0; i < oldTShift.length; i++) {\n    state.bMarks[i + startLine] = oldBMarks[i]\n    state.tShift[i + startLine] = oldTShift[i]\n    state.sCount[i + startLine] = oldSCount[i]\n    state.bsCount[i + startLine] = oldBSCount[i]\n  }\n  state.blkIndent = oldIndent\n\n  return true\n}\n","// Horizontal rule\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function hr (state, startLine, endLine, silent) {\n  const max = state.eMarks[startLine]\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  const marker = state.src.charCodeAt(pos++)\n\n  // Check hr marker\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x5F/* _ */) {\n    return false\n  }\n\n  // markers can be mixed with spaces, but there should be at least 3 of them\n\n  let cnt = 1\n  while (pos < max) {\n    const ch = state.src.charCodeAt(pos++)\n    if (ch !== marker && !isSpace(ch)) { return false }\n    if (ch === marker) { cnt++ }\n  }\n\n  if (cnt < 3) { return false }\n\n  if (silent) { return true }\n\n  state.line = startLine + 1\n\n  const token = state.push('hr', 'hr', 0)\n  token.map = [startLine, state.line]\n  token.markup = Array(cnt + 1).join(String.fromCharCode(marker))\n\n  return true\n}\n","// Lists\n\nimport { isSpace } from '../common/utils.mjs'\n\n// Search `[-+*][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipBulletListMarker (state, startLine) {\n  const max = state.eMarks[startLine]\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n\n  const marker = state.src.charCodeAt(pos++)\n  // Check bullet\n  if (marker !== 0x2A/* * */ &&\n      marker !== 0x2D/* - */ &&\n      marker !== 0x2B/* + */) {\n    return -1\n  }\n\n  if (pos < max) {\n    const ch = state.src.charCodeAt(pos)\n\n    if (!isSpace(ch)) {\n      // \" -test \" - is not a list item\n      return -1\n    }\n  }\n\n  return pos\n}\n\n// Search `\\d+[.)][\\n ]`, returns next pos after marker on success\n// or -1 on fail.\nfunction skipOrderedListMarker (state, startLine) {\n  const start = state.bMarks[startLine] + state.tShift[startLine]\n  const max = state.eMarks[startLine]\n  let pos = start\n\n  // List marker should have at least 2 chars (digit + dot)\n  if (pos + 1 >= max) { return -1 }\n\n  let ch = state.src.charCodeAt(pos++)\n\n  if (ch < 0x30/* 0 */ || ch > 0x39/* 9 */) { return -1 }\n\n  for (;;) {\n    // EOL -> fail\n    if (pos >= max) { return -1 }\n\n    ch = state.src.charCodeAt(pos++)\n\n    if (ch >= 0x30/* 0 */ && ch <= 0x39/* 9 */) {\n      // List marker should have no more than 9 digits\n      // (prevents integer overflow in browsers)\n      if (pos - start >= 10) { return -1 }\n\n      continue\n    }\n\n    // found valid marker\n    if (ch === 0x29/* ) */ || ch === 0x2e/* . */) {\n      break\n    }\n\n    return -1\n  }\n\n  if (pos < max) {\n    ch = state.src.charCodeAt(pos)\n\n    if (!isSpace(ch)) {\n      // \" 1.test \" - is not a list item\n      return -1\n    }\n  }\n  return pos\n}\n\nfunction markTightParagraphs (state, idx) {\n  const level = state.level + 2\n\n  for (let i = idx + 2, l = state.tokens.length - 2; i < l; i++) {\n    if (state.tokens[i].level === level && state.tokens[i].type === 'paragraph_open') {\n      state.tokens[i + 2].hidden = true\n      state.tokens[i].hidden = true\n      i += 2\n    }\n  }\n}\n\nexport default function list (state, startLine, endLine, silent) {\n  let max, pos, start, token\n  let nextLine = startLine\n  let tight = true\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[nextLine] - state.blkIndent >= 4) { return false }\n\n  // Special case:\n  //  - item 1\n  //   - item 2\n  //    - item 3\n  //     - item 4\n  //      - this one is a paragraph continuation\n  if (state.listIndent >= 0 &&\n      state.sCount[nextLine] - state.listIndent >= 4 &&\n      state.sCount[nextLine] < state.blkIndent) {\n    return false\n  }\n\n  let isTerminatingParagraph = false\n\n  // limit conditions when list can interrupt\n  // a paragraph (validation mode only)\n  if (silent && state.parentType === 'paragraph') {\n    // Next list item should still terminate previous list item;\n    //\n    // This code can fail if plugins use blkIndent as well as lists,\n    // but I hope the spec gets fixed long before that happens.\n    //\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      isTerminatingParagraph = true\n    }\n  }\n\n  // Detect list type and position after marker\n  let isOrdered\n  let markerValue\n  let posAfterMarker\n  if ((posAfterMarker = skipOrderedListMarker(state, nextLine)) >= 0) {\n    isOrdered = true\n    start = state.bMarks[nextLine] + state.tShift[nextLine]\n    markerValue = Number(state.src.slice(start, posAfterMarker - 1))\n\n    // If we're starting a new ordered list right after\n    // a paragraph, it should start with 1.\n    if (isTerminatingParagraph && markerValue !== 1) return false\n  } else if ((posAfterMarker = skipBulletListMarker(state, nextLine)) >= 0) {\n    isOrdered = false\n  } else {\n    return false\n  }\n\n  // If we're starting a new unordered list right after\n  // a paragraph, first line should not be empty.\n  if (isTerminatingParagraph) {\n    if (state.skipSpaces(posAfterMarker) >= state.eMarks[nextLine]) return false\n  }\n\n  // For validation mode we can terminate immediately\n  if (silent) { return true }\n\n  // We should terminate list on style change. Remember first one to compare.\n  const markerCharCode = state.src.charCodeAt(posAfterMarker - 1)\n\n  // Start list\n  const listTokIdx = state.tokens.length\n\n  if (isOrdered) {\n    token = state.push('ordered_list_open', 'ol', 1)\n    if (markerValue !== 1) {\n      token.attrs = [['start', markerValue]]\n    }\n  } else {\n    token = state.push('bullet_list_open', 'ul', 1)\n  }\n\n  const listLines = [nextLine, 0]\n  token.map = listLines\n  token.markup = String.fromCharCode(markerCharCode)\n\n  //\n  // Iterate list items\n  //\n\n  let prevEmptyEnd = false\n  const terminatorRules = state.md.block.ruler.getRules('list')\n\n  const oldParentType = state.parentType\n  state.parentType = 'list'\n\n  while (nextLine < endLine) {\n    pos = posAfterMarker\n    max = state.eMarks[nextLine]\n\n    const initial = state.sCount[nextLine] + posAfterMarker - (state.bMarks[nextLine] + state.tShift[nextLine])\n    let offset = initial\n\n    while (pos < max) {\n      const ch = state.src.charCodeAt(pos)\n\n      if (ch === 0x09) {\n        offset += 4 - (offset + state.bsCount[nextLine]) % 4\n      } else if (ch === 0x20) {\n        offset++\n      } else {\n        break\n      }\n\n      pos++\n    }\n\n    const contentStart = pos\n    let indentAfterMarker\n\n    if (contentStart >= max) {\n      // trimming space in \"-    \\n  3\" case, indent is 1 here\n      indentAfterMarker = 1\n    } else {\n      indentAfterMarker = offset - initial\n    }\n\n    // If we have more than 4 spaces, the indent is 1\n    // (the rest is just indented code block)\n    if (indentAfterMarker > 4) { indentAfterMarker = 1 }\n\n    // \"  -  test\"\n    //  ^^^^^ - calculating total length of this thing\n    const indent = initial + indentAfterMarker\n\n    // Run subparser & write tokens\n    token = state.push('list_item_open', 'li', 1)\n    token.markup = String.fromCharCode(markerCharCode)\n    const itemLines = [nextLine, 0]\n    token.map = itemLines\n    if (isOrdered) {\n      token.info = state.src.slice(start, posAfterMarker - 1)\n    }\n\n    // change current state, then restore it after parser subcall\n    const oldTight = state.tight\n    const oldTShift = state.tShift[nextLine]\n    const oldSCount = state.sCount[nextLine]\n\n    //  - example list\n    // ^ listIndent position will be here\n    //   ^ blkIndent position will be here\n    //\n    const oldListIndent = state.listIndent\n    state.listIndent = state.blkIndent\n    state.blkIndent = indent\n\n    state.tight = true\n    state.tShift[nextLine] = contentStart - state.bMarks[nextLine]\n    state.sCount[nextLine] = offset\n\n    if (contentStart >= max && state.isEmpty(nextLine + 1)) {\n      // workaround for this case\n      // (list item is empty, list terminates before \"foo\"):\n      // ~~~~~~~~\n      //   -\n      //\n      //     foo\n      // ~~~~~~~~\n      state.line = Math.min(state.line + 2, endLine)\n    } else {\n      state.md.block.tokenize(state, nextLine, endLine, true)\n    }\n\n    // If any of list item is tight, mark list as tight\n    if (!state.tight || prevEmptyEnd) {\n      tight = false\n    }\n    // Item become loose if finish with empty line,\n    // but we should filter last element, because it means list finish\n    prevEmptyEnd = (state.line - nextLine) > 1 && state.isEmpty(state.line - 1)\n\n    state.blkIndent = state.listIndent\n    state.listIndent = oldListIndent\n    state.tShift[nextLine] = oldTShift\n    state.sCount[nextLine] = oldSCount\n    state.tight = oldTight\n\n    token = state.push('list_item_close', 'li', -1)\n    token.markup = String.fromCharCode(markerCharCode)\n\n    nextLine = state.line\n    itemLines[1] = nextLine\n\n    if (nextLine >= endLine) { break }\n\n    //\n    // Try to check if list is terminated or continued.\n    //\n    if (state.sCount[nextLine] < state.blkIndent) { break }\n\n    // if it's indented more than 3 spaces, it should be a code block\n    if (state.sCount[nextLine] - state.blkIndent >= 4) { break }\n\n    // fail if terminating block found\n    let terminate = false\n    for (let i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true\n        break\n      }\n    }\n    if (terminate) { break }\n\n    // fail if list has another type\n    if (isOrdered) {\n      posAfterMarker = skipOrderedListMarker(state, nextLine)\n      if (posAfterMarker < 0) { break }\n      start = state.bMarks[nextLine] + state.tShift[nextLine]\n    } else {\n      posAfterMarker = skipBulletListMarker(state, nextLine)\n      if (posAfterMarker < 0) { break }\n    }\n\n    if (markerCharCode !== state.src.charCodeAt(posAfterMarker - 1)) { break }\n  }\n\n  // Finalize list\n  if (isOrdered) {\n    token = state.push('ordered_list_close', 'ol', -1)\n  } else {\n    token = state.push('bullet_list_close', 'ul', -1)\n  }\n  token.markup = String.fromCharCode(markerCharCode)\n\n  listLines[1] = nextLine\n  state.line = nextLine\n\n  state.parentType = oldParentType\n\n  // mark paragraphs tight if needed\n  if (tight) {\n    markTightParagraphs(state, listTokIdx)\n  }\n\n  return true\n}\n","import { isSpace, normalizeReference } from '../common/utils.mjs'\n\nexport default function reference (state, startLine, _endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  let max = state.eMarks[startLine]\n  let nextLine = startLine + 1\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  if (state.src.charCodeAt(pos) !== 0x5B/* [ */) { return false }\n\n  function getNextLine (nextLine) {\n    const endLine = state.lineMax\n\n    if (nextLine >= endLine || state.isEmpty(nextLine)) {\n      // empty line or end of input\n      return null\n    }\n\n    let isContinuation = false\n\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { isContinuation = true }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { isContinuation = true }\n\n    if (!isContinuation) {\n      const terminatorRules = state.md.block.ruler.getRules('reference')\n      const oldParentType = state.parentType\n      state.parentType = 'reference'\n\n      // Some tags can terminate paragraph without empty line.\n      let terminate = false\n      for (let i = 0, l = terminatorRules.length; i < l; i++) {\n        if (terminatorRules[i](state, nextLine, endLine, true)) {\n          terminate = true\n          break\n        }\n      }\n\n      state.parentType = oldParentType\n      if (terminate) {\n        // terminated by another block\n        return null\n      }\n    }\n\n    const pos = state.bMarks[nextLine] + state.tShift[nextLine]\n    const max = state.eMarks[nextLine]\n\n    // max + 1 explicitly includes the newline\n    return state.src.slice(pos, max + 1)\n  }\n\n  let str = state.src.slice(pos, max + 1)\n\n  max = str.length\n  let labelEnd = -1\n\n  for (pos = 1; pos < max; pos++) {\n    const ch = str.charCodeAt(pos)\n    if (ch === 0x5B /* [ */) {\n      return false\n    } else if (ch === 0x5D /* ] */) {\n      labelEnd = pos\n      break\n    } else if (ch === 0x0A /* \\n */) {\n      const lineContent = getNextLine(nextLine)\n      if (lineContent !== null) {\n        str += lineContent\n        max = str.length\n        nextLine++\n      }\n    } else if (ch === 0x5C /* \\ */) {\n      pos++\n      if (pos < max && str.charCodeAt(pos) === 0x0A) {\n        const lineContent = getNextLine(nextLine)\n        if (lineContent !== null) {\n          str += lineContent\n          max = str.length\n          nextLine++\n        }\n      }\n    }\n  }\n\n  if (labelEnd < 0 || str.charCodeAt(labelEnd + 1) !== 0x3A/* : */) { return false }\n\n  // [label]:   destination   'title'\n  //         ^^^ skip optional whitespace here\n  for (pos = labelEnd + 2; pos < max; pos++) {\n    const ch = str.charCodeAt(pos)\n    if (ch === 0x0A) {\n      const lineContent = getNextLine(nextLine)\n      if (lineContent !== null) {\n        str += lineContent\n        max = str.length\n        nextLine++\n      }\n    } else if (isSpace(ch)) {\n      /* eslint no-empty:0 */\n    } else {\n      break\n    }\n  }\n\n  // [label]:   destination   'title'\n  //            ^^^^^^^^^^^ parse this\n  const destRes = state.md.helpers.parseLinkDestination(str, pos, max)\n  if (!destRes.ok) { return false }\n\n  const href = state.md.normalizeLink(destRes.str)\n  if (!state.md.validateLink(href)) { return false }\n\n  pos = destRes.pos\n\n  // save cursor state, we could require to rollback later\n  const destEndPos = pos\n  const destEndLineNo = nextLine\n\n  // [label]:   destination   'title'\n  //                       ^^^ skipping those spaces\n  const start = pos\n  for (; pos < max; pos++) {\n    const ch = str.charCodeAt(pos)\n    if (ch === 0x0A) {\n      const lineContent = getNextLine(nextLine)\n      if (lineContent !== null) {\n        str += lineContent\n        max = str.length\n        nextLine++\n      }\n    } else if (isSpace(ch)) {\n      /* Nothing */\n    } else {\n      break\n    }\n  }\n\n  // [label]:   destination   'title'\n  //                          ^^^^^^^ parse this\n  let titleRes = state.md.helpers.parseLinkTitle(str, pos, max)\n  while (titleRes.can_continue) {\n    const lineContent = getNextLine(nextLine)\n    if (lineContent === null) break\n    str += lineContent\n    pos = max\n    max = str.length\n    nextLine++\n    titleRes = state.md.helpers.parseLinkTitle(str, pos, max, titleRes)\n  }\n  let title\n\n  if (pos < max && start !== pos && titleRes.ok) {\n    title = titleRes.str\n    pos = titleRes.pos\n  } else {\n    title = ''\n    pos = destEndPos\n    nextLine = destEndLineNo\n  }\n\n  // skip trailing spaces until the rest of the line\n  while (pos < max) {\n    const ch = str.charCodeAt(pos)\n    if (!isSpace(ch)) { break }\n    pos++\n  }\n\n  if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n    if (title) {\n      // garbage at the end of the line after title,\n      // but it could still be a valid reference if we roll back\n      title = ''\n      pos = destEndPos\n      nextLine = destEndLineNo\n      while (pos < max) {\n        const ch = str.charCodeAt(pos)\n        if (!isSpace(ch)) { break }\n        pos++\n      }\n    }\n  }\n\n  if (pos < max && str.charCodeAt(pos) !== 0x0A) {\n    // garbage at the end of the line\n    return false\n  }\n\n  const label = normalizeReference(str.slice(1, labelEnd))\n  if (!label) {\n    // CommonMark 0.20 disallows empty labels\n    return false\n  }\n\n  // Reference can not terminate anything. This check is for safety only.\n  /* istanbul ignore if */\n  if (silent) { return true }\n\n  if (typeof state.env.references === 'undefined') {\n    state.env.references = {}\n  }\n  if (typeof state.env.references[label] === 'undefined') {\n    state.env.references[label] = { title, href }\n  }\n\n  state.line = nextLine\n  return true\n}\n","// List of valid html blocks names, according to commonmark spec\n// https://spec.commonmark.org/0.30/#html-blocks\n\nexport default [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n","// Regexps to match html elements\n\nconst attr_name = '[a-zA-Z_:][a-zA-Z0-9:._-]*'\n\nconst unquoted = '[^\"\\'=<>`\\\\x00-\\\\x20]+'\nconst single_quoted = \"'[^']*'\"\nconst double_quoted = '\"[^\"]*\"'\n\nconst attr_value = '(?:' + unquoted + '|' + single_quoted + '|' + double_quoted + ')'\n\nconst attribute = '(?:\\\\s+' + attr_name + '(?:\\\\s*=\\\\s*' + attr_value + ')?)'\n\nconst open_tag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>'\n\nconst close_tag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>'\nconst comment = '<!---?>|<!--(?:[^-]|-[^-]|--[^>])*-->'\nconst processing = '<[?][\\\\s\\\\S]*?[?]>'\nconst declaration = '<![A-Za-z][^>]*>'\nconst cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>'\n\nconst HTML_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + '|' + comment +\n                        '|' + processing + '|' + declaration + '|' + cdata + ')')\nconst HTML_OPEN_CLOSE_TAG_RE = new RegExp('^(?:' + open_tag + '|' + close_tag + ')')\n\nexport { HTML_TAG_RE, HTML_OPEN_CLOSE_TAG_RE }\n","// HTML block\n\nimport block_names from '../common/html_blocks.mjs'\nimport { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nconst HTML_SEQUENCES = [\n  [/^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true],\n  [/^<!--/, /-->/, true],\n  [/^<\\?/, /\\?>/, true],\n  [/^<![A-Z]/, />/, true],\n  [/^<!\\[CDATA\\[/, /\\]\\]>/, true],\n  [new RegExp('^</?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true],\n  [new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false]\n]\n\nexport default function html_block (state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  let max = state.eMarks[startLine]\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  if (!state.md.options.html) { return false }\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n  let lineText = state.src.slice(pos, max)\n\n  let i = 0\n  for (; i < HTML_SEQUENCES.length; i++) {\n    if (HTML_SEQUENCES[i][0].test(lineText)) { break }\n  }\n  if (i === HTML_SEQUENCES.length) { return false }\n\n  if (silent) {\n    // true if this sequence can be a terminator, false otherwise\n    return HTML_SEQUENCES[i][2]\n  }\n\n  let nextLine = startLine + 1\n\n  // Block types 6 and 7 (the only ones whose end condition is a blank line)\n  // have `/^$/` as their closing regexp. For all other types (1-5, e.g.\n  // `<!--` comments), a blank line is regular content and must not terminate\n  // the block - it ends only when its closing sequence is found.\n  const endsOnBlankLine = HTML_SEQUENCES[i][1].test('')\n\n  // If we are here - we detected HTML block.\n  // Let's roll down till block end.\n  if (!HTML_SEQUENCES[i][1].test(lineText)) {\n    for (; nextLine < endLine; nextLine++) {\n      if (state.sCount[nextLine] < state.blkIndent) {\n        // An outdented blank line shouldn't end a block that doesn't end on a\n        // blank line (e.g. a `<!--` comment inside a list item). Such blocks\n        // must continue until their closing sequence regardless of indent.\n        if (endsOnBlankLine || !state.isEmpty(nextLine)) { break }\n      }\n\n      pos = state.bMarks[nextLine] + state.tShift[nextLine]\n      max = state.eMarks[nextLine]\n      lineText = state.src.slice(pos, max)\n\n      if (HTML_SEQUENCES[i][1].test(lineText)) {\n        if (lineText.length !== 0) { nextLine++ }\n        break\n      }\n    }\n  }\n\n  state.line = nextLine\n\n  const token = state.push('html_block', '', 0)\n  token.map = [startLine, nextLine]\n  token.content = state.getLines(startLine, nextLine, state.blkIndent, true)\n\n  return true\n}\n","// heading (#, ##, ...)\n\nimport { isSpace, asciiTrim } from '../common/utils.mjs'\n\nexport default function heading (state, startLine, endLine, silent) {\n  let pos = state.bMarks[startLine] + state.tShift[startLine]\n  let max = state.eMarks[startLine]\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  let ch = state.src.charCodeAt(pos)\n\n  if (ch !== 0x23/* # */ || pos >= max) { return false }\n\n  // count heading level\n  let level = 1\n  ch = state.src.charCodeAt(++pos)\n  while (ch === 0x23/* # */ && pos < max && level <= 6) {\n    level++\n    ch = state.src.charCodeAt(++pos)\n  }\n\n  if (level > 6 || (pos < max && !isSpace(ch))) { return false }\n\n  if (silent) { return true }\n\n  // Let's cut tails like '    ###  ' from the end of string\n\n  max = state.skipSpacesBack(max, pos)\n  const tmp = state.skipCharsBack(max, 0x23, pos) // #\n  if (tmp > pos && isSpace(state.src.charCodeAt(tmp - 1))) {\n    max = tmp\n  }\n\n  state.line = startLine + 1\n\n  const token_o = state.push('heading_open', 'h' + String(level), 1)\n  token_o.markup = '########'.slice(0, level)\n  token_o.map = [startLine, state.line]\n\n  const token_i = state.push('inline', '', 0)\n  token_i.content = asciiTrim(state.src.slice(pos, max))\n  token_i.map = [startLine, state.line]\n  token_i.children = []\n\n  const token_c = state.push('heading_close', 'h' + String(level), -1)\n  token_c.markup = '########'.slice(0, level)\n\n  return true\n}\n","// lheading (---, ===)\n\nimport { asciiTrim } from '../common/utils.mjs'\n\nexport default function lheading (state, startLine, endLine/*, silent */) {\n  const terminatorRules = state.md.block.ruler.getRules('paragraph')\n\n  // if it's indented more than 3 spaces, it should be a code block\n  if (state.sCount[startLine] - state.blkIndent >= 4) { return false }\n\n  const oldParentType = state.parentType\n  state.parentType = 'paragraph' // use paragraph to match terminatorRules\n\n  // jump line-by-line until empty one or EOF\n  let level = 0\n  let marker\n  let nextLine = startLine + 1\n\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n    //\n    // Check for underline in setext header\n    //\n    if (state.sCount[nextLine] >= state.blkIndent) {\n      let pos = state.bMarks[nextLine] + state.tShift[nextLine]\n      const max = state.eMarks[nextLine]\n\n      if (pos < max) {\n        marker = state.src.charCodeAt(pos)\n\n        if (marker === 0x2D/* - */ || marker === 0x3D/* = */) {\n          pos = state.skipChars(pos, marker)\n          pos = state.skipSpaces(pos)\n\n          if (pos >= max) {\n            level = (marker === 0x3D/* = */ ? 1 : 2)\n            break\n          }\n        }\n      }\n    }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { continue }\n\n    // Some tags can terminate paragraph without empty line.\n    let terminate = false\n    for (let i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true\n        break\n      }\n    }\n    if (terminate) { break }\n  }\n\n  if (!level) {\n    // Didn't find valid underline\n    state.parentType = oldParentType\n    return false\n  }\n\n  const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false))\n\n  state.line = nextLine + 1\n\n  const token_o = state.push('heading_open', 'h' + String(level), 1)\n  token_o.markup = String.fromCharCode(marker)\n  token_o.map = [startLine, state.line]\n\n  const token_i = state.push('inline', '', 0)\n  token_i.content = content\n  token_i.map = [startLine, state.line - 1]\n  token_i.children = []\n\n  const token_c = state.push('heading_close', 'h' + String(level), -1)\n  token_c.markup = String.fromCharCode(marker)\n\n  state.parentType = oldParentType\n\n  return true\n}\n","// Paragraph\n\nimport { asciiTrim } from '../common/utils.mjs'\n\nexport default function paragraph (state, startLine, endLine) {\n  const terminatorRules = state.md.block.ruler.getRules('paragraph')\n  const oldParentType = state.parentType\n  let nextLine = startLine + 1\n  state.parentType = 'paragraph'\n\n  // jump line-by-line until empty one or EOF\n  for (; nextLine < endLine && !state.isEmpty(nextLine); nextLine++) {\n    // this would be a code block normally, but after paragraph\n    // it's considered a lazy continuation regardless of what's there\n    if (state.sCount[nextLine] - state.blkIndent > 3) { continue }\n\n    // quirk for blockquotes, this line should already be checked by that rule\n    if (state.sCount[nextLine] < 0) { continue }\n\n    // Some tags can terminate paragraph without empty line.\n    let terminate = false\n    for (let i = 0, l = terminatorRules.length; i < l; i++) {\n      if (terminatorRules[i](state, nextLine, endLine, true)) {\n        terminate = true\n        break\n      }\n    }\n    if (terminate) { break }\n  }\n\n  const content = asciiTrim(state.getLines(startLine, nextLine, state.blkIndent, false))\n\n  state.line = nextLine\n\n  const token_o = state.push('paragraph_open', 'p', 1)\n  token_o.map = [startLine, state.line]\n\n  const token_i = state.push('inline', '', 0)\n  token_i.content = content\n  token_i.map = [startLine, state.line]\n  token_i.children = []\n\n  state.push('paragraph_close', 'p', -1)\n\n  state.parentType = oldParentType\n\n  return true\n}\n","/** internal\n * class ParserBlock\n *\n * Block-level tokenizer.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateBlock from './rules_block/state_block.mjs'\n\nimport r_table from './rules_block/table.mjs'\nimport r_code from './rules_block/code.mjs'\nimport r_fence from './rules_block/fence.mjs'\nimport r_blockquote from './rules_block/blockquote.mjs'\nimport r_hr from './rules_block/hr.mjs'\nimport r_list from './rules_block/list.mjs'\nimport r_reference from './rules_block/reference.mjs'\nimport r_html_block from './rules_block/html_block.mjs'\nimport r_heading from './rules_block/heading.mjs'\nimport r_lheading from './rules_block/lheading.mjs'\nimport r_paragraph from './rules_block/paragraph.mjs'\n\nconst _rules = [\n  // First 2 params - rule name & source. Secondary array - list of rules,\n  // which can be terminated by this one.\n  ['table', r_table, ['paragraph', 'reference']],\n  ['code', r_code],\n  ['fence', r_fence, ['paragraph', 'reference', 'blockquote', 'list']],\n  ['blockquote', r_blockquote, ['paragraph', 'reference', 'blockquote', 'list']],\n  ['hr', r_hr, ['paragraph', 'reference', 'blockquote', 'list']],\n  ['list', r_list, ['paragraph', 'reference', 'blockquote']],\n  ['reference', r_reference],\n  ['html_block', r_html_block, ['paragraph', 'reference', 'blockquote']],\n  ['heading', r_heading, ['paragraph', 'reference', 'blockquote']],\n  ['lheading', r_lheading],\n  ['paragraph', r_paragraph]\n]\n\n/**\n * new ParserBlock()\n **/\nfunction ParserBlock () {\n  /**\n   * ParserBlock#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of block rules.\n   **/\n  this.ruler = new Ruler()\n\n  for (let i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1], { alt: (_rules[i][2] || []).slice() })\n  }\n}\n\n// Generate tokens for input range\n//\nParserBlock.prototype.tokenize = function (state, startLine, endLine) {\n  const rules = this.ruler.getRules('')\n  const len = rules.length\n  const maxNesting = state.md.options.maxNesting\n  let line = startLine\n  let hasEmptyLines = false\n\n  while (line < endLine) {\n    state.line = line = state.skipEmptyLines(line)\n    if (line >= endLine) { break }\n\n    // Termination condition for nested calls.\n    // Nested calls currently used for blockquotes & lists\n    if (state.sCount[line] < state.blkIndent) { break }\n\n    // If nesting level exceeded - skip tail to the end. That's not ordinary\n    // situation and we should not care about content.\n    if (state.level >= maxNesting) {\n      state.line = endLine\n      break\n    }\n\n    // Try all possible rules.\n    // On success, rule should:\n    //\n    // - update `state.line`\n    // - update `state.tokens`\n    // - return true\n    const prevLine = state.line\n    let ok = false\n\n    for (let i = 0; i < len; i++) {\n      ok = rules[i](state, line, endLine, false)\n      if (ok) {\n        if (prevLine >= state.line) {\n          throw new Error(\"block rule didn't increment state.line\")\n        }\n        break\n      }\n    }\n\n    // this can only happen if user disables paragraph rule\n    if (!ok) throw new Error('none of the block rules matched')\n\n    // set state.tight if we had an empty line before current tag\n    // i.e. latest empty line should not count\n    state.tight = !hasEmptyLines\n\n    // paragraph might \"eat\" one newline after it in nested lists\n    if (state.isEmpty(state.line - 1)) {\n      hasEmptyLines = true\n    }\n\n    line = state.line\n\n    if (line < endLine && state.isEmpty(line)) {\n      hasEmptyLines = true\n      line++\n      state.line = line\n    }\n  }\n}\n\n/**\n * ParserBlock.parse(str, md, env, outTokens)\n *\n * Process input string and push block tokens into `outTokens`\n **/\nParserBlock.prototype.parse = function (src, md, env, outTokens) {\n  if (!src) { return }\n\n  const state = new this.State(src, md, env, outTokens)\n\n  this.tokenize(state, state.line, state.lineMax)\n}\n\nParserBlock.prototype.State = StateBlock\n\nexport default ParserBlock\n","// Inline parser state\n\nimport Token from '../token.mjs'\nimport { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'\n\nfunction StateInline (src, md, env, outTokens) {\n  this.src = src\n  this.env = env\n  this.md = md\n  this.tokens = outTokens\n  this.tokens_meta = Array(outTokens.length)\n\n  this.pos = 0\n  this.posMax = this.src.length\n  this.level = 0\n  this.pending = ''\n  this.pendingLevel = 0\n\n  // Stores { start: end } pairs. Useful for backtrack\n  // optimization of pairs parse (emphasis, strikes).\n  this.cache = {}\n\n  // List of emphasis-like delimiters for current tag\n  this.delimiters = []\n\n  // Stack of delimiter lists for upper level tags\n  this._prev_delimiters = []\n\n  // backtick length => last seen position\n  this.backticks = {}\n  this.backticksScanned = false\n\n  // Counter used to disable inline linkify-it execution\n  // inside <a> and markdown links\n  this.linkLevel = 0\n}\n\n// Flush pending text\n//\nStateInline.prototype.pushPending = function () {\n  const token = new Token('text', '', 0)\n  token.content = this.pending\n  token.level = this.pendingLevel\n  this.tokens.push(token)\n  this.pending = ''\n  return token\n}\n\n// Push new token to \"stream\".\n// If pending text exists - flush it as text token\n//\nStateInline.prototype.push = function (type, tag, nesting) {\n  if (this.pending) {\n    this.pushPending()\n  }\n\n  const token = new Token(type, tag, nesting)\n  let token_meta = null\n\n  if (nesting < 0) {\n    // closing tag\n    this.level--\n    this.delimiters = this._prev_delimiters.pop()\n  }\n\n  token.level = this.level\n\n  if (nesting > 0) {\n    // opening tag\n    this.level++\n    this._prev_delimiters.push(this.delimiters)\n    this.delimiters = []\n    token_meta = { delimiters: this.delimiters }\n  }\n\n  this.pendingLevel = this.level\n  this.tokens.push(token)\n  this.tokens_meta.push(token_meta)\n  return token\n}\n\n// Scan a sequence of emphasis-like markers, and determine whether\n// it can start an emphasis sequence or end an emphasis sequence.\n//\n//  - start - position to scan from (it should point at a valid marker);\n//  - canSplitWord - determine if these markers can be found inside a word\n//\nStateInline.prototype.scanDelims = function (start, canSplitWord) {\n  const max = this.posMax\n  const marker = this.src.charCodeAt(start)\n\n  // Astral characters below are combined manually, because .codePointAt()\n  // does not guarantee numeric type output. And we don't wish JIT cache issues.\n  // The broken surrogate pairs are evaluated as U+FFFD to prevent possible\n  // crashes.\n\n  let lastChar\n  if (start === 0) {\n    // treat beginning of the line as a whitespace\n    lastChar = 0x20\n  } else if (start === 1) {\n    lastChar = this.src.charCodeAt(0)\n    if ((lastChar & 0xF800) === 0xD800) { lastChar = 0xFFFD }\n  } else {\n    lastChar = this.src.charCodeAt(start - 1)\n    if ((lastChar & 0xFC00) === 0xDC00) {\n      // low surrogate => add high one, replace broken pair with U+FFFD\n      const highSurr = this.src.charCodeAt(start - 2)\n      lastChar = (highSurr & 0xFC00) === 0xD800\n        ? 0x10000 + ((highSurr - 0xD800) << 10) + (lastChar - 0xDC00)\n        : 0xFFFD\n    } else if ((lastChar & 0xFC00) === 0xD800) {\n      lastChar = 0xFFFD\n    }\n  }\n\n  let pos = start\n  while (pos < max && this.src.charCodeAt(pos) === marker) { pos++ }\n\n  const count = pos - start\n\n  // treat end of the line as a whitespace\n  let nextChar = pos < max ? this.src.charCodeAt(pos) : 0x20\n  if ((nextChar & 0xFC00) === 0xD800) {\n    // high surrogate => add low one, replace broken pair with U+FFFD\n    const lowSurr = this.src.charCodeAt(pos + 1)\n    nextChar = (lowSurr & 0xFC00) === 0xDC00\n      ? 0x10000 + ((nextChar - 0xD800) << 10) + (lowSurr - 0xDC00)\n      : 0xFFFD\n  } else if ((nextChar & 0xFC00) === 0xDC00) {\n    nextChar = 0xFFFD\n  }\n\n  const isLastPunctChar = isMdAsciiPunct(lastChar) || isPunctCharCode(lastChar)\n  const isNextPunctChar = isMdAsciiPunct(nextChar) || isPunctCharCode(nextChar)\n\n  const isLastWhiteSpace = isWhiteSpace(lastChar)\n  const isNextWhiteSpace = isWhiteSpace(nextChar)\n\n  const left_flanking =\n    !isNextWhiteSpace && (!isNextPunctChar || isLastWhiteSpace || isLastPunctChar)\n  const right_flanking =\n    !isLastWhiteSpace && (!isLastPunctChar || isNextWhiteSpace || isNextPunctChar)\n\n  const can_open = left_flanking && (canSplitWord || !right_flanking || isLastPunctChar)\n  const can_close = right_flanking && (canSplitWord || !left_flanking || isNextPunctChar)\n\n  return { can_open, can_close, length: count }\n}\n\n// re-export Token class to use in block rules\nStateInline.prototype.Token = Token\n\nexport default StateInline\n","// Skip text characters for text token, place those to pending buffer\n// and increment current pos\n\n// Rule to skip pure text\n// '{}$%@~+=:' reserved for extentions\n\n// !, \", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \\, ], ^, _, `, {, |, }, or ~\n\n// !!!! Don't confuse with \"Markdown ASCII Punctuation\" chars\n// http://spec.commonmark.org/0.15/#ascii-punctuation-character\nfunction isTerminatorChar (ch) {\n  switch (ch) {\n    case 0x0A/* \\n */:\n    case 0x21/* ! */:\n    case 0x23/* # */:\n    case 0x24/* $ */:\n    case 0x25/* % */:\n    case 0x26/* & */:\n    case 0x2A/* * */:\n    case 0x2B/* + */:\n    case 0x2D/* - */:\n    case 0x3A/* : */:\n    case 0x3C/* < */:\n    case 0x3D/* = */:\n    case 0x3E/* > */:\n    case 0x40/* @ */:\n    case 0x5B/* [ */:\n    case 0x5C/* \\ */:\n    case 0x5D/* ] */:\n    case 0x5E/* ^ */:\n    case 0x5F/* _ */:\n    case 0x60/* ` */:\n    case 0x7B/* { */:\n    case 0x7D/* } */:\n    case 0x7E/* ~ */:\n      return true\n    default:\n      return false\n  }\n}\n\nexport default function text (state, silent) {\n  let pos = state.pos\n\n  while (pos < state.posMax && !isTerminatorChar(state.src.charCodeAt(pos))) {\n    pos++\n  }\n\n  if (pos === state.pos) { return false }\n\n  if (!silent) { state.pending += state.src.slice(state.pos, pos) }\n\n  state.pos = pos\n\n  return true\n}\n\n// Alternative implementation, for memory.\n//\n// It costs 10% of performance, but allows extend terminators list, if place it\n// to `ParserInline` property. Probably, will switch to it sometime, such\n// flexibility required.\n\n/*\nvar TERMINATOR_RE = /[\\n!#$%&*+\\-:<=>@[\\\\\\]^_`{}~]/;\n\nmodule.exports = function text(state, silent) {\n  var pos = state.pos,\n      idx = state.src.slice(pos).search(TERMINATOR_RE);\n\n  // first char is terminator -> empty text\n  if (idx === 0) { return false; }\n\n  // no terminator -> text till end of string\n  if (idx < 0) {\n    if (!silent) { state.pending += state.src.slice(pos); }\n    state.pos = state.src.length;\n    return true;\n  }\n\n  if (!silent) { state.pending += state.src.slice(pos, pos + idx); }\n\n  state.pos += idx;\n\n  return true;\n}; */\n","// Process links like https://example.org/\n\n// RFC3986: scheme = ALPHA *( ALPHA / DIGIT / \"+\" / \"-\" / \".\" )\nconst SCHEME_RE = /(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i\n\nexport default function linkify (state, silent) {\n  if (!state.md.options.linkify) return false\n  if (state.linkLevel > 0) return false\n\n  const pos = state.pos\n  const max = state.posMax\n\n  if (pos + 3 > max) return false\n  if (state.src.charCodeAt(pos) !== 0x3A/* : */) return false\n  if (state.src.charCodeAt(pos + 1) !== 0x2F/* / */) return false\n  if (state.src.charCodeAt(pos + 2) !== 0x2F/* / */) return false\n\n  const match = state.pending.match(SCHEME_RE)\n  if (!match) return false\n\n  const proto = match[1]\n\n  const link = state.md.linkify.matchAtStart(state.src.slice(pos - proto.length))\n  if (!link) return false\n\n  let url = link.url\n\n  // invalid link, but still detected by linkify somehow;\n  // need to check to prevent infinite loop below\n  if (url.length <= proto.length) return false\n\n  // disallow '*' at the end of the link (conflicts with emphasis)\n  // do manual backsearch to avoid perf issues with regex /\\*+$/ on \"****...****a\".\n  let urlEnd = url.length\n  while (urlEnd > 0 && url.charCodeAt(urlEnd - 1) === 0x2A/* * */) {\n    urlEnd--\n  }\n  if (urlEnd !== url.length) {\n    url = url.slice(0, urlEnd)\n  }\n\n  const fullUrl = state.md.normalizeLink(url)\n  if (!state.md.validateLink(fullUrl)) return false\n\n  if (!silent) {\n    state.pending = state.pending.slice(0, -proto.length)\n\n    const token_o = state.push('link_open', 'a', 1)\n    token_o.attrs = [['href', fullUrl]]\n    token_o.markup = 'linkify'\n    token_o.info = 'auto'\n\n    const token_t = state.push('text', '', 0)\n    token_t.content = state.md.normalizeLinkText(url)\n\n    const token_c = state.push('link_close', 'a', -1)\n    token_c.markup = 'linkify'\n    token_c.info = 'auto'\n  }\n\n  state.pos += url.length - proto.length\n  return true\n}\n","// Proceess '\\n'\n\nimport { isSpace } from '../common/utils.mjs'\n\nexport default function newline (state, silent) {\n  let pos = state.pos\n\n  if (state.src.charCodeAt(pos) !== 0x0A/* \\n */) { return false }\n\n  const pmax = state.pending.length - 1\n  const max = state.posMax\n\n  // '  \\n' -> hardbreak\n  // Lookup in pending chars is bad practice! Don't copy to other rules!\n  // Pending string is stored in concat mode, indexed lookups will cause\n  // convertion to flat mode.\n  if (!silent) {\n    if (pmax >= 0 && state.pending.charCodeAt(pmax) === 0x20) {\n      if (pmax >= 1 && state.pending.charCodeAt(pmax - 1) === 0x20) {\n        // Find whitespaces tail of pending chars.\n        let ws = pmax - 1\n        while (ws >= 1 && state.pending.charCodeAt(ws - 1) === 0x20) ws--\n\n        state.pending = state.pending.slice(0, ws)\n        state.push('hardbreak', 'br', 0)\n      } else {\n        state.pending = state.pending.slice(0, -1)\n        state.push('softbreak', 'br', 0)\n      }\n    } else {\n      state.push('softbreak', 'br', 0)\n    }\n  }\n\n  pos++\n\n  // skip heading spaces for next line\n  while (pos < max && isSpace(state.src.charCodeAt(pos))) { pos++ }\n\n  state.pos = pos\n  return true\n}\n","// Process escaped chars and hardbreaks\n\nimport { isSpace } from '../common/utils.mjs'\n\nconst ESCAPED = []\n\nfor (let i = 0; i < 256; i++) { ESCAPED.push(0) }\n\n'\\\\!\"#$%&\\'()*+,./:;<=>?@[]^_`{|}~-'\n  .split('').forEach(function (ch) { ESCAPED[ch.charCodeAt(0)] = 1 })\n\nexport default function escape (state, silent) {\n  let pos = state.pos\n  const max = state.posMax\n\n  if (state.src.charCodeAt(pos) !== 0x5C/* \\ */) return false\n  pos++\n\n  // '\\' at the end of the inline block\n  if (pos >= max) return false\n\n  let ch1 = state.src.charCodeAt(pos)\n\n  if (ch1 === 0x0A) {\n    if (!silent) {\n      state.push('hardbreak', 'br', 0)\n    }\n\n    pos++\n    // skip leading whitespaces from next line\n    while (pos < max) {\n      ch1 = state.src.charCodeAt(pos)\n      if (!isSpace(ch1)) break\n      pos++\n    }\n\n    state.pos = pos\n    return true\n  }\n\n  // '\\' before a space is a literal backslash. Don't consume the space, so a\n  // trailing two-space hard line break is still detected by the newline rule.\n  if (ch1 === 0x20) {\n    if (!silent) {\n      const token = state.push('text_special', '', 0)\n      token.content = '\\\\'\n      token.markup = '\\\\'\n      token.info = 'escape'\n    }\n\n    state.pos = pos\n    return true\n  }\n\n  let escapedStr = state.src[pos]\n\n  if (ch1 >= 0xD800 && ch1 <= 0xDBFF && pos + 1 < max) {\n    const ch2 = state.src.charCodeAt(pos + 1)\n\n    if (ch2 >= 0xDC00 && ch2 <= 0xDFFF) {\n      escapedStr += state.src[pos + 1]\n      pos++\n    }\n  }\n\n  const origStr = '\\\\' + escapedStr\n\n  if (!silent) {\n    const token = state.push('text_special', '', 0)\n\n    if (ch1 < 256 && ESCAPED[ch1] !== 0) {\n      token.content = escapedStr\n    } else {\n      token.content = origStr\n    }\n\n    token.markup = origStr\n    token.info = 'escape'\n  }\n\n  state.pos = pos + 1\n  return true\n}\n","// Parse backticks\n\nexport default function backtick (state, silent) {\n  let pos = state.pos\n  const ch = state.src.charCodeAt(pos)\n\n  if (ch !== 0x60/* ` */) { return false }\n\n  const start = pos\n  pos++\n  const max = state.posMax\n\n  // scan marker length\n  while (pos < max && state.src.charCodeAt(pos) === 0x60/* ` */) { pos++ }\n\n  const marker = state.src.slice(start, pos)\n  const openerLength = marker.length\n\n  if (state.backticksScanned && (state.backticks[openerLength] || 0) <= start) {\n    if (!silent) state.pending += marker\n    state.pos += openerLength\n    return true\n  }\n\n  let matchEnd = pos\n  let matchStart\n\n  // Nothing found in the cache, scan until the end of the line (or until marker is found)\n  while ((matchStart = state.src.indexOf('`', matchEnd)) !== -1) {\n    matchEnd = matchStart + 1\n\n    // scan marker length\n    while (matchEnd < max && state.src.charCodeAt(matchEnd) === 0x60/* ` */) { matchEnd++ }\n\n    const closerLength = matchEnd - matchStart\n\n    if (closerLength === openerLength) {\n      // Found matching closer length.\n      if (!silent) {\n        const token = state.push('code_inline', 'code', 0)\n        token.markup = marker\n        token.content = state.src.slice(pos, matchStart)\n          .replace(/\\n/g, ' ')\n          .replace(/^ (.+) $/, '$1')\n      }\n      state.pos = matchEnd\n      return true\n    }\n\n    // Some different length found, put it in cache as upper limit of where closer can be found\n    state.backticks[closerLength] = matchStart\n  }\n\n  // Scanned through the end, didn't find anything\n  state.backticksScanned = true\n\n  if (!silent) state.pending += marker\n  state.pos += openerLength\n  return true\n}\n","// ~~strike through~~\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction strikethrough_tokenize (state, silent) {\n  const start = state.pos\n  const marker = state.src.charCodeAt(start)\n\n  if (silent) { return false }\n\n  if (marker !== 0x7E/* ~ */) { return false }\n\n  const scanned = state.scanDelims(state.pos, true)\n  let len = scanned.length\n  const ch = String.fromCharCode(marker)\n\n  if (len < 2) { return false }\n\n  let token\n\n  if (len % 2) {\n    token = state.push('text', '', 0)\n    token.content = ch\n    len--\n  }\n\n  for (let i = 0; i < len; i += 2) {\n    token = state.push('text', '', 0)\n    token.content = ch + ch\n\n    state.delimiters.push({\n      marker,\n      length: 0,     // disable \"rule of 3\" length checks meant for emphasis\n      token: state.tokens.length - 1,\n      end: -1,\n      open: scanned.can_open,\n      close: scanned.can_close\n    })\n  }\n\n  state.pos += scanned.length\n\n  return true\n}\n\nfunction postProcess (state, delimiters) {\n  let token\n  const loneMarkers = []\n  const max = delimiters.length\n\n  for (let i = 0; i < max; i++) {\n    const startDelim = delimiters[i]\n\n    if (startDelim.marker !== 0x7E/* ~ */) {\n      continue\n    }\n\n    if (startDelim.end === -1) {\n      continue\n    }\n\n    const endDelim = delimiters[startDelim.end]\n\n    token = state.tokens[startDelim.token]\n    token.type = 's_open'\n    token.tag = 's'\n    token.nesting = 1\n    token.markup = '~~'\n    token.content = ''\n\n    token = state.tokens[endDelim.token]\n    token.type = 's_close'\n    token.tag = 's'\n    token.nesting = -1\n    token.markup = '~~'\n    token.content = ''\n\n    if (state.tokens[endDelim.token - 1].type === 'text' &&\n        state.tokens[endDelim.token - 1].content === '~') {\n      loneMarkers.push(endDelim.token - 1)\n    }\n  }\n\n  // If a marker sequence has an odd number of characters, it's splitted\n  // like this: `~~~~~` -> `~` + `~~` + `~~`, leaving one marker at the\n  // start of the sequence.\n  //\n  // So, we have to move all those markers after subsequent s_close tags.\n  //\n  while (loneMarkers.length) {\n    const i = loneMarkers.pop()\n    let j = i + 1\n\n    while (j < state.tokens.length && state.tokens[j].type === 's_close') {\n      j++\n    }\n\n    j--\n\n    if (i !== j) {\n      token = state.tokens[j]\n      state.tokens[j] = state.tokens[i]\n      state.tokens[i] = token\n    }\n  }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction strikethrough_postProcess (state) {\n  const tokens_meta = state.tokens_meta\n  const max = state.tokens_meta.length\n\n  postProcess(state, state.delimiters)\n\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess(state, tokens_meta[curr].delimiters)\n    }\n  }\n}\n\nexport default {\n  tokenize: strikethrough_tokenize,\n  postProcess: strikethrough_postProcess\n}\n","// Process *this* and _that_\n//\n\n// Insert each marker as a separate text token, and add it to delimiter list\n//\nfunction emphasis_tokenize (state, silent) {\n  const start = state.pos\n  const marker = state.src.charCodeAt(start)\n\n  if (silent) { return false }\n\n  if (marker !== 0x5F /* _ */ && marker !== 0x2A /* * */) { return false }\n\n  const scanned = state.scanDelims(state.pos, marker === 0x2A)\n\n  for (let i = 0; i < scanned.length; i++) {\n    const token = state.push('text', '', 0)\n    token.content = String.fromCharCode(marker)\n\n    state.delimiters.push({\n      // Char code of the starting marker (number).\n      //\n      marker,\n\n      // Total length of these series of delimiters.\n      //\n      length: scanned.length,\n\n      // A position of the token this delimiter corresponds to.\n      //\n      token: state.tokens.length - 1,\n\n      // If this delimiter is matched as a valid opener, `end` will be\n      // equal to its position, otherwise it's `-1`.\n      //\n      end: -1,\n\n      // Boolean flags that determine if this delimiter could open or close\n      // an emphasis.\n      //\n      open: scanned.can_open,\n      close: scanned.can_close\n    })\n  }\n\n  state.pos += scanned.length\n\n  return true\n}\n\nfunction postProcess (state, delimiters) {\n  const max = delimiters.length\n\n  for (let i = max - 1; i >= 0; i--) {\n    const startDelim = delimiters[i]\n\n    if (startDelim.marker !== 0x5F/* _ */ && startDelim.marker !== 0x2A/* * */) {\n      continue\n    }\n\n    // Process only opening markers\n    if (startDelim.end === -1) {\n      continue\n    }\n\n    const endDelim = delimiters[startDelim.end]\n\n    // If the previous delimiter has the same marker and is adjacent to this one,\n    // merge those into one strong delimiter.\n    //\n    // `<em><em>whatever</em></em>` -> `<strong>whatever</strong>`\n    //\n    const isStrong = i > 0 &&\n               delimiters[i - 1].end === startDelim.end + 1 &&\n               // check that first two markers match and adjacent\n               delimiters[i - 1].marker === startDelim.marker &&\n               delimiters[i - 1].token === startDelim.token - 1 &&\n               // check that last two markers are adjacent (we can safely assume they match)\n               delimiters[startDelim.end + 1].token === endDelim.token + 1\n\n    const ch = String.fromCharCode(startDelim.marker)\n\n    const token_o = state.tokens[startDelim.token]\n    token_o.type = isStrong ? 'strong_open' : 'em_open'\n    token_o.tag = isStrong ? 'strong' : 'em'\n    token_o.nesting = 1\n    token_o.markup = isStrong ? ch + ch : ch\n    token_o.content = ''\n\n    const token_c = state.tokens[endDelim.token]\n    token_c.type = isStrong ? 'strong_close' : 'em_close'\n    token_c.tag = isStrong ? 'strong' : 'em'\n    token_c.nesting = -1\n    token_c.markup = isStrong ? ch + ch : ch\n    token_c.content = ''\n\n    if (isStrong) {\n      state.tokens[delimiters[i - 1].token].content = ''\n      state.tokens[delimiters[startDelim.end + 1].token].content = ''\n      i--\n    }\n  }\n}\n\n// Walk through delimiter list and replace text tokens with tags\n//\nfunction emphasis_post_process (state) {\n  const tokens_meta = state.tokens_meta\n  const max = state.tokens_meta.length\n\n  postProcess(state, state.delimiters)\n\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      postProcess(state, tokens_meta[curr].delimiters)\n    }\n  }\n}\n\nexport default {\n  tokenize: emphasis_tokenize,\n  postProcess: emphasis_post_process\n}\n","// Process [link](<to> \"stuff\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function link (state, silent) {\n  let code, label, res, ref\n  let href = ''\n  let title = ''\n  let start = state.pos\n  let parseReference = true\n\n  if (state.src.charCodeAt(state.pos) !== 0x5B/* [ */) { return false }\n\n  const oldPos = state.pos\n  const max = state.posMax\n  const labelStart = state.pos + 1\n  const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos, true)\n\n  // parser failed to find ']', so it's not a valid link\n  if (labelEnd < 0) { return false }\n\n  let pos = labelEnd + 1\n  if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n    //\n    // Inline link\n    //\n\n    // might have found a valid shortcut link, disable reference parsing\n    parseReference = false\n\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos)\n      if (!isSpace(code) && code !== 0x0A) { break }\n    }\n    if (pos >= max) { return false }\n\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n    start = pos\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str)\n      if (state.md.validateLink(href)) {\n        pos = res.pos\n      } else {\n        href = ''\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                ^^ skipping these spaces\n      start = pos\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos)\n        if (!isSpace(code) && code !== 0x0A) { break }\n      }\n\n      // [link](  <href>  \"title\"  )\n      //                  ^^^^^^^ parsing link title\n      res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n      if (pos < max && start !== pos && res.ok) {\n        title = res.str\n        pos = res.pos\n\n        // [link](  <href>  \"title\"  )\n        //                         ^^ skipping these spaces\n        for (; pos < max; pos++) {\n          code = state.src.charCodeAt(pos)\n          if (!isSpace(code) && code !== 0x0A) { break }\n        }\n      }\n    }\n\n    if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n      // parsing a valid shortcut link failed, fallback to reference\n      parseReference = true\n    }\n    pos++\n  }\n\n  if (parseReference) {\n    //\n    // Link reference\n    //\n    if (typeof state.env.references === 'undefined') { return false }\n\n    if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n      start = pos + 1\n      pos = state.md.helpers.parseLinkLabel(state, pos)\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++)\n      } else {\n        pos = labelEnd + 1\n      }\n    } else {\n      pos = labelEnd + 1\n    }\n\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n    if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n    ref = state.env.references[normalizeReference(label)]\n    if (!ref) {\n      state.pos = oldPos\n      return false\n    }\n    href = ref.href\n    title = ref.title\n  }\n\n  //\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    state.pos = labelStart\n    state.posMax = labelEnd\n\n    const token_o = state.push('link_open', 'a', 1)\n    const attrs = [['href', href]]\n    token_o.attrs = attrs\n    if (title) {\n      attrs.push(['title', title])\n    }\n\n    state.linkLevel++\n    state.md.inline.tokenize(state)\n    state.linkLevel--\n\n    state.push('link_close', 'a', -1)\n  }\n\n  state.pos = pos\n  state.posMax = max\n  return true\n}\n","// Process ![image](<src> \"title\")\n\nimport { normalizeReference, isSpace } from '../common/utils.mjs'\n\nexport default function image (state, silent) {\n  let code, content, label, pos, ref, res, title, start\n  let href = ''\n  const oldPos = state.pos\n  const max = state.posMax\n\n  if (state.src.charCodeAt(state.pos) !== 0x21/* ! */) { return false }\n  if (state.src.charCodeAt(state.pos + 1) !== 0x5B/* [ */) { return false }\n\n  const labelStart = state.pos + 2\n  const labelEnd = state.md.helpers.parseLinkLabel(state, state.pos + 1, false)\n\n  // parser failed to find ']', so it's not a valid link\n  if (labelEnd < 0) { return false }\n\n  pos = labelEnd + 1\n  if (pos < max && state.src.charCodeAt(pos) === 0x28/* ( */) {\n    //\n    // Inline link\n    //\n\n    // [link](  <href>  \"title\"  )\n    //        ^^ skipping these spaces\n    pos++\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos)\n      if (!isSpace(code) && code !== 0x0A) { break }\n    }\n    if (pos >= max) { return false }\n\n    // [link](  <href>  \"title\"  )\n    //          ^^^^^^ parsing link destination\n    start = pos\n    res = state.md.helpers.parseLinkDestination(state.src, pos, state.posMax)\n    if (res.ok) {\n      href = state.md.normalizeLink(res.str)\n      if (state.md.validateLink(href)) {\n        pos = res.pos\n      } else {\n        href = ''\n      }\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                ^^ skipping these spaces\n    start = pos\n    for (; pos < max; pos++) {\n      code = state.src.charCodeAt(pos)\n      if (!isSpace(code) && code !== 0x0A) { break }\n    }\n\n    // [link](  <href>  \"title\"  )\n    //                  ^^^^^^^ parsing link title\n    res = state.md.helpers.parseLinkTitle(state.src, pos, state.posMax)\n    if (pos < max && start !== pos && res.ok) {\n      title = res.str\n      pos = res.pos\n\n      // [link](  <href>  \"title\"  )\n      //                         ^^ skipping these spaces\n      for (; pos < max; pos++) {\n        code = state.src.charCodeAt(pos)\n        if (!isSpace(code) && code !== 0x0A) { break }\n      }\n    } else {\n      title = ''\n    }\n\n    if (pos >= max || state.src.charCodeAt(pos) !== 0x29/* ) */) {\n      state.pos = oldPos\n      return false\n    }\n    pos++\n  } else {\n    //\n    // Link reference\n    //\n    if (typeof state.env.references === 'undefined') { return false }\n\n    if (pos < max && state.src.charCodeAt(pos) === 0x5B/* [ */) {\n      start = pos + 1\n      pos = state.md.helpers.parseLinkLabel(state, pos)\n      if (pos >= 0) {\n        label = state.src.slice(start, pos++)\n      } else {\n        pos = labelEnd + 1\n      }\n    } else {\n      pos = labelEnd + 1\n    }\n\n    // covers label === '' and label === undefined\n    // (collapsed reference link and shortcut reference link respectively)\n    if (!label) { label = state.src.slice(labelStart, labelEnd) }\n\n    ref = state.env.references[normalizeReference(label)]\n    if (!ref) {\n      state.pos = oldPos\n      return false\n    }\n    href = ref.href\n    title = ref.title\n  }\n\n  //\n  // We found the end of the link, and know for a fact it's a valid link;\n  // so all that's left to do is to call tokenizer.\n  //\n  if (!silent) {\n    content = state.src.slice(labelStart, labelEnd)\n\n    const tokens = []\n    state.md.inline.parse(\n      content,\n      state.md,\n      state.env,\n      tokens\n    )\n\n    const token = state.push('image', 'img', 0)\n    const attrs = [['src', href], ['alt', '']]\n    token.attrs = attrs\n    token.children = tokens\n    token.content = content\n\n    if (title) {\n      attrs.push(['title', title])\n    }\n  }\n\n  state.pos = pos\n  state.posMax = max\n  return true\n}\n","// Process autolinks '<protocol:...>'\n\n/* eslint max-len:0 */\nconst EMAIL_RE = /^([a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/\n/* eslint-disable-next-line no-control-regex */\nconst AUTOLINK_RE = /^([a-zA-Z][a-zA-Z0-9+.-]{1,31}):([^<>\\x00-\\x20]*)$/\n\nexport default function autolink (state, silent) {\n  let pos = state.pos\n\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false }\n\n  const start = state.pos\n  const max = state.posMax\n\n  for (;;) {\n    if (++pos >= max) return false\n\n    const ch = state.src.charCodeAt(pos)\n\n    if (ch === 0x3C /* < */) return false\n    if (ch === 0x3E /* > */) break\n  }\n\n  const url = state.src.slice(start + 1, pos)\n\n  if (AUTOLINK_RE.test(url)) {\n    const fullUrl = state.md.normalizeLink(url)\n    if (!state.md.validateLink(fullUrl)) { return false }\n\n    if (!silent) {\n      const token_o = state.push('link_open', 'a', 1)\n      token_o.attrs = [['href', fullUrl]]\n      token_o.markup = 'autolink'\n      token_o.info = 'auto'\n\n      const token_t = state.push('text', '', 0)\n      token_t.content = state.md.normalizeLinkText(url)\n\n      const token_c = state.push('link_close', 'a', -1)\n      token_c.markup = 'autolink'\n      token_c.info = 'auto'\n    }\n\n    state.pos += url.length + 2\n    return true\n  }\n\n  if (EMAIL_RE.test(url)) {\n    const fullUrl = state.md.normalizeLink('mailto:' + url)\n    if (!state.md.validateLink(fullUrl)) { return false }\n\n    if (!silent) {\n      const token_o = state.push('link_open', 'a', 1)\n      token_o.attrs = [['href', fullUrl]]\n      token_o.markup = 'autolink'\n      token_o.info = 'auto'\n\n      const token_t = state.push('text', '', 0)\n      token_t.content = state.md.normalizeLinkText(url)\n\n      const token_c = state.push('link_close', 'a', -1)\n      token_c.markup = 'autolink'\n      token_c.info = 'auto'\n    }\n\n    state.pos += url.length + 2\n    return true\n  }\n\n  return false\n}\n","// Process html tags\n\nimport { HTML_TAG_RE } from '../common/html_re.mjs'\n\nfunction isLinkOpen (str) {\n  return /^<a[>\\s]/i.test(str)\n}\nfunction isLinkClose (str) {\n  return /^<\\/a\\s*>/i.test(str)\n}\n\nfunction isLetter (ch) {\n  /* eslint no-bitwise:0 */\n  const lc = ch | 0x20 // to lower case\n  return (lc >= 0x61/* a */) && (lc <= 0x7a/* z */)\n}\n\nexport default function html_inline (state, silent) {\n  if (!state.md.options.html) { return false }\n\n  // Check start\n  const max = state.posMax\n  const pos = state.pos\n  if (state.src.charCodeAt(pos) !== 0x3C/* < */ ||\n      pos + 2 >= max) {\n    return false\n  }\n\n  // Quick fail on second char\n  const ch = state.src.charCodeAt(pos + 1)\n  if (ch !== 0x21/* ! */ &&\n      ch !== 0x3F/* ? */ &&\n      ch !== 0x2F/* / */ &&\n      !isLetter(ch)) {\n    return false\n  }\n\n  const match = state.src.slice(pos).match(HTML_TAG_RE)\n  if (!match) { return false }\n\n  if (!silent) {\n    const token = state.push('html_inline', '', 0)\n    token.content = match[0]\n\n    if (isLinkOpen(token.content)) state.linkLevel++\n    if (isLinkClose(token.content)) state.linkLevel--\n  }\n  state.pos += match[0].length\n  return true\n}\n","// Process html entity - &#123;, &#xAF;, &quot;, ...\n\nimport { decodeHTMLStrict } from 'entities'\nimport { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'\n\nconst DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i\nconst NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i\n\nexport default function entity (state, silent) {\n  const pos = state.pos\n  const max = state.posMax\n\n  if (state.src.charCodeAt(pos) !== 0x26/* & */) return false\n\n  if (pos + 1 >= max) return false\n\n  const ch = state.src.charCodeAt(pos + 1)\n\n  if (ch === 0x23 /* # */) {\n    const match = state.src.slice(pos).match(DIGITAL_RE)\n    if (match) {\n      if (!silent) {\n        const code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10)\n\n        const token = state.push('text_special', '', 0)\n        token.content = isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD)\n        token.markup = match[0]\n        token.info = 'entity'\n      }\n      state.pos += match[0].length\n      return true\n    }\n  } else {\n    const match = state.src.slice(pos).match(NAMED_RE)\n    if (match) {\n      const decoded = decodeHTMLStrict(match[0])\n      if (decoded !== match[0]) {\n        if (!silent) {\n          const token = state.push('text_special', '', 0)\n          token.content = decoded\n          token.markup = match[0]\n          token.info = 'entity'\n        }\n        state.pos += match[0].length\n        return true\n      }\n    }\n  }\n\n  return false\n}\n","// For each opening emphasis-like marker find a matching closing one\n//\n\nfunction processDelimiters (delimiters) {\n  const openersBottom = {}\n  const max = delimiters.length\n\n  if (!max) return\n\n  // headerIdx is the first delimiter of the current (where closer is) delimiter run\n  let headerIdx = 0\n  let lastTokenIdx = -2 // needs any value lower than -1\n  const jumps = []\n\n  for (let closerIdx = 0; closerIdx < max; closerIdx++) {\n    const closer = delimiters[closerIdx]\n\n    jumps.push(0)\n\n    // markers belong to same delimiter run if:\n    //  - they have adjacent tokens\n    //  - AND markers are the same\n    //\n    if (delimiters[headerIdx].marker !== closer.marker || lastTokenIdx !== closer.token - 1) {\n      headerIdx = closerIdx\n    }\n\n    lastTokenIdx = closer.token\n\n    // Length is only used for emphasis-specific \"rule of 3\",\n    // if it's not defined (in strikethrough or 3rd party plugins),\n    // we can default it to 0 to disable those checks.\n    //\n    closer.length = closer.length || 0\n\n    if (!closer.close) continue\n\n    // Previously calculated lower bounds (previous fails)\n    // for each marker, each delimiter length modulo 3,\n    // and for whether this closer can be an opener;\n    // https://github.com/commonmark/cmark/commit/34250e12ccebdc6372b8b49c44fab57c72443460\n    /* eslint-disable-next-line no-prototype-builtins */\n    if (!openersBottom.hasOwnProperty(closer.marker)) {\n      openersBottom[closer.marker] = [-1, -1, -1, -1, -1, -1]\n    }\n\n    const minOpenerIdx = openersBottom[closer.marker][(closer.open ? 3 : 0) + (closer.length % 3)]\n\n    let openerIdx = headerIdx - jumps[headerIdx] - 1\n\n    let newMinOpenerIdx = openerIdx\n\n    for (; openerIdx > minOpenerIdx; openerIdx -= jumps[openerIdx] + 1) {\n      const opener = delimiters[openerIdx]\n\n      if (opener.marker !== closer.marker) continue\n\n      if (opener.open && opener.end < 0) {\n        let isOddMatch = false\n\n        // from spec:\n        //\n        // If one of the delimiters can both open and close emphasis, then the\n        // sum of the lengths of the delimiter runs containing the opening and\n        // closing delimiters must not be a multiple of 3 unless both lengths\n        // are multiples of 3.\n        //\n        if (opener.close || closer.open) {\n          if ((opener.length + closer.length) % 3 === 0) {\n            if (opener.length % 3 !== 0 || closer.length % 3 !== 0) {\n              isOddMatch = true\n            }\n          }\n        }\n\n        if (!isOddMatch) {\n          // If previous delimiter cannot be an opener, we can safely skip\n          // the entire sequence in future checks. This is required to make\n          // sure algorithm has linear complexity (see *_*_*_*_*_... case).\n          //\n          const lastJump = openerIdx > 0 && !delimiters[openerIdx - 1].open\n            ? jumps[openerIdx - 1] + 1\n            : 0\n\n          jumps[closerIdx] = closerIdx - openerIdx + lastJump\n          jumps[openerIdx] = lastJump\n\n          closer.open = false\n          opener.end = closerIdx\n          opener.close = false\n          newMinOpenerIdx = -1\n          // treat next token as start of run,\n          // it optimizes skips in **<...>**a**<...>** pathological case\n          lastTokenIdx = -2\n          break\n        }\n      }\n    }\n\n    if (newMinOpenerIdx !== -1) {\n      // If match for this delimiter run failed, we want to set lower bound for\n      // future lookups. This is required to make sure algorithm has linear\n      // complexity.\n      //\n      // See details here:\n      // https://github.com/commonmark/cmark/issues/178#issuecomment-270417442\n      //\n      openersBottom[closer.marker][(closer.open ? 3 : 0) + ((closer.length || 0) % 3)] = newMinOpenerIdx\n    }\n  }\n}\n\nexport default function link_pairs (state) {\n  const tokens_meta = state.tokens_meta\n  const max = state.tokens_meta.length\n\n  processDelimiters(state.delimiters)\n\n  for (let curr = 0; curr < max; curr++) {\n    if (tokens_meta[curr] && tokens_meta[curr].delimiters) {\n      processDelimiters(tokens_meta[curr].delimiters)\n    }\n  }\n}\n","// Clean up tokens after emphasis and strikethrough postprocessing:\n// merge adjacent text nodes into one and re-calculate all token levels\n//\n// This is necessary because initially emphasis delimiter markers (*, _, ~)\n// are treated as their own separate text tokens. Then emphasis rule either\n// leaves them as text (needed to merge with adjacent text) or turns them\n// into opening/closing tags (which messes up levels inside).\n//\n\nexport default function fragments_join (state) {\n  let curr, last\n  let level = 0\n  const tokens = state.tokens\n  const max = state.tokens.length\n\n  for (curr = last = 0; curr < max; curr++) {\n    // re-calculate levels after emphasis/strikethrough turns some text nodes\n    // into opening/closing tags\n    if (tokens[curr].nesting < 0) level-- // closing tag\n    tokens[curr].level = level\n    if (tokens[curr].nesting > 0) level++ // opening tag\n\n    if (tokens[curr].type === 'text' &&\n        curr + 1 < max &&\n        tokens[curr + 1].type === 'text') {\n      // collapse two adjacent text nodes\n      tokens[curr + 1].content = tokens[curr].content + tokens[curr + 1].content\n    } else {\n      if (curr !== last) { tokens[last] = tokens[curr] }\n\n      last++\n    }\n  }\n\n  if (curr !== last) {\n    tokens.length = last\n  }\n}\n","/** internal\n * class ParserInline\n *\n * Tokenizes paragraph content.\n **/\n\nimport Ruler from './ruler.mjs'\nimport StateInline from './rules_inline/state_inline.mjs'\n\nimport r_text from './rules_inline/text.mjs'\nimport r_linkify from './rules_inline/linkify.mjs'\nimport r_newline from './rules_inline/newline.mjs'\nimport r_escape from './rules_inline/escape.mjs'\nimport r_backticks from './rules_inline/backticks.mjs'\nimport r_strikethrough from './rules_inline/strikethrough.mjs'\nimport r_emphasis from './rules_inline/emphasis.mjs'\nimport r_link from './rules_inline/link.mjs'\nimport r_image from './rules_inline/image.mjs'\nimport r_autolink from './rules_inline/autolink.mjs'\nimport r_html_inline from './rules_inline/html_inline.mjs'\nimport r_entity from './rules_inline/entity.mjs'\n\nimport r_balance_pairs from './rules_inline/balance_pairs.mjs'\nimport r_fragments_join from './rules_inline/fragments_join.mjs'\n\n// Parser rules\n\nconst _rules = [\n  ['text', r_text],\n  ['linkify', r_linkify],\n  ['newline', r_newline],\n  ['escape', r_escape],\n  ['backticks', r_backticks],\n  ['strikethrough', r_strikethrough.tokenize],\n  ['emphasis', r_emphasis.tokenize],\n  ['link', r_link],\n  ['image', r_image],\n  ['autolink', r_autolink],\n  ['html_inline', r_html_inline],\n  ['entity', r_entity]\n]\n\n// `rule2` ruleset was created specifically for emphasis/strikethrough\n// post-processing and may be changed in the future.\n//\n// Don't use this for anything except pairs (plugins working with `balance_pairs`).\n//\nconst _rules2 = [\n  ['balance_pairs', r_balance_pairs],\n  ['strikethrough', r_strikethrough.postProcess],\n  ['emphasis', r_emphasis.postProcess],\n  // rules for pairs separate '**' into its own text tokens, which may be left unused,\n  // rule below merges unused segments back with the rest of the text\n  ['fragments_join', r_fragments_join]\n]\n\n/**\n * new ParserInline()\n **/\nfunction ParserInline () {\n  /**\n   * ParserInline#ruler -> Ruler\n   *\n   * [[Ruler]] instance. Keep configuration of inline rules.\n   **/\n  this.ruler = new Ruler()\n\n  for (let i = 0; i < _rules.length; i++) {\n    this.ruler.push(_rules[i][0], _rules[i][1])\n  }\n\n  /**\n   * ParserInline#ruler2 -> Ruler\n   *\n   * [[Ruler]] instance. Second ruler used for post-processing\n   * (e.g. in emphasis-like rules).\n   **/\n  this.ruler2 = new Ruler()\n\n  for (let i = 0; i < _rules2.length; i++) {\n    this.ruler2.push(_rules2[i][0], _rules2[i][1])\n  }\n}\n\n// Skip single token by running all rules in validation mode;\n// returns `true` if any rule reported success\n//\nParserInline.prototype.skipToken = function (state) {\n  const pos = state.pos\n  const rules = this.ruler.getRules('')\n  const len = rules.length\n  const maxNesting = state.md.options.maxNesting\n  const cache = state.cache\n\n  if (typeof cache[pos] !== 'undefined') {\n    state.pos = cache[pos]\n    return\n  }\n\n  let ok = false\n\n  if (state.level < maxNesting) {\n    for (let i = 0; i < len; i++) {\n      // Increment state.level and decrement it later to limit recursion.\n      // It's harmless to do here, because no tokens are created. But ideally,\n      // we'd need a separate private state variable for this purpose.\n      //\n      state.level++\n      ok = rules[i](state, true)\n      state.level--\n\n      if (ok) {\n        if (pos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n        break\n      }\n    }\n  } else {\n    // Too much nesting, just skip until the end of the paragraph.\n    //\n    // NOTE: this will cause links to behave incorrectly in the following case,\n    //       when an amount of `[` is exactly equal to `maxNesting + 1`:\n    //\n    //       [[[[[[[[[[[[[[[[[[[[[foo]()\n    //\n    // TODO: remove this workaround when CM standard will allow nested links\n    //       (we can replace it by preventing links from being parsed in\n    //       validation mode)\n    //\n    state.pos = state.posMax\n  }\n\n  if (!ok) { state.pos++ }\n  cache[pos] = state.pos\n}\n\n// Generate tokens for input range\n//\nParserInline.prototype.tokenize = function (state) {\n  const rules = this.ruler.getRules('')\n  const len = rules.length\n  const end = state.posMax\n  const maxNesting = state.md.options.maxNesting\n\n  while (state.pos < end) {\n    // Try all possible rules.\n    // On success, rule should:\n    //\n    // - update `state.pos`\n    // - update `state.tokens`\n    // - return true\n    const prevPos = state.pos\n    let ok = false\n\n    if (state.level < maxNesting) {\n      for (let i = 0; i < len; i++) {\n        ok = rules[i](state, false)\n        if (ok) {\n          if (prevPos >= state.pos) { throw new Error(\"inline rule didn't increment state.pos\") }\n          break\n        }\n      }\n    }\n\n    if (ok) {\n      if (state.pos >= end) { break }\n      continue\n    }\n\n    state.pending += state.src[state.pos++]\n  }\n\n  if (state.pending) {\n    state.pushPending()\n  }\n}\n\n/**\n * ParserInline.parse(str, md, env, outTokens)\n *\n * Process input string and push inline tokens into `outTokens`\n **/\nParserInline.prototype.parse = function (str, md, env, outTokens) {\n  const state = new this.State(str, md, env, outTokens)\n\n  this.tokenize(state)\n\n  const rules = this.ruler2.getRules('')\n  const len = rules.length\n\n  for (let i = 0; i < len; i++) {\n    rules[i](state)\n  }\n}\n\nParserInline.prototype.State = StateInline\n\nexport default ParserInline\n","import { Any, Cc, Z, P } from 'uc.micro'\n\nexport default function (opts) {\n  const re = {}\n  opts = opts || {}\n\n  re.src_Any = Any.source\n  re.src_Cc = Cc.source\n  re.src_Z = Z.source\n  re.src_P = P.source\n\n  // \\p{\\Z\\P\\Cc\\CF} (white spaces + control + format + punctuation)\n  re.src_ZPCc = [re.src_Z, re.src_P, re.src_Cc].join('|')\n\n  // \\p{\\Z\\Cc} (white spaces + control)\n  re.src_ZCc = [re.src_Z, re.src_Cc].join('|')\n\n  // Experimental. List of chars, completely prohibited in links\n  // because can separate it from other part of text\n  const text_separators = '[><\\uff5c]'\n\n  // All possible word characters (everything without punctuation, spaces & controls)\n  // Defined via punctuation & spaces to save space\n  // Should be something like \\p{\\L\\N\\S\\M} (\\w but without `_`)\n  re.src_pseudo_letter = `(?:(?!${text_separators}|${re.src_ZPCc})${re.src_Any})`\n  // The same as abothe but without [0-9]\n  // var src_pseudo_letter_non_d = '(?:(?![0-9]|' + src_ZPCc + ')' + src_Any + ')';\n\n  re.src_ip4 =\n\n    '(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)'\n\n  // Prohibit any of \"@/[]()\" in user/pass to avoid wrong domain fetch.\n  // Length is capped to exclude possible rescans till the end and avoid O(n^2)\n  // DoS. No standard limit, just take something reasonable.\n  re.src_auth = `(?:(?:(?!${re.src_ZCc}|[@/\\\\[\\\\]()]).){1,50}@)?`\n\n  re.src_port =\n\n    '(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?'\n\n  re.src_host_terminator =\n\n    `(?=$|${text_separators}|${re.src_ZPCc})` +\n    `(?!${opts['---'] ? '-(?!--)|' : '-|'}_|:\\\\d|\\\\.-|\\\\.(?!$|${re.src_ZPCc}))`\n\n  re.src_path =\n\n    '(?:' +\n      '[/?#]' +\n        '(?:' +\n          `(?!${re.src_ZCc}|${text_separators}|[()[\\\\]{}.,\"'?!\\\\-;]).|` +\n          `\\\\[(?:(?!${re.src_ZCc}|\\\\]).)*\\\\]|` +\n          `\\\\((?:(?!${re.src_ZCc}|[)]).)*\\\\)|` +\n          `\\\\{(?:(?!${re.src_ZCc}|[}]).)*\\\\}|` +\n          `\\\\\"(?:(?!${re.src_ZCc}|[\"]).)+\\\\\"|` +\n          `\\\\'(?:(?!${re.src_ZCc}|[']).)+\\\\'|` +\n\n          // allow `I'm_king` if no pair found\n          `\\\\'(?=${re.src_pseudo_letter}|[-])|` +\n\n          // google has many dots in \"google search\" links (#66, #81).\n          // github has ... in commit range links,\n          // Restrict to\n          // - english\n          // - percent-encoded\n          // - parts of file path\n          // - params separator\n          // until more examples found.\n          '\\\\.{2,}[a-zA-Z0-9%/&]|' +\n\n          `\\\\.(?!${re.src_ZCc}|[.]|$)|` +\n          (opts['---']\n            ? '\\\\-(?!--(?:[^-]|$))(?:-*)|' // `---` => long dash, terminate\n            : '\\\\-+|'\n          ) +\n          // allow `,,,` in paths\n          `,(?!${re.src_ZCc}|$)|` +\n\n          // allow `;` if not followed by space-like char\n          `;(?!${re.src_ZCc}|$)|` +\n\n          // allow `!!!` in paths, but not at the end\n          `\\\\!+(?!${re.src_ZCc}|[!]|$)|` +\n\n          `\\\\?(?!${re.src_ZCc}|[?]|$)` +\n        ')+' +\n      '|\\\\/' +\n    ')?'\n\n  // Allow anything in markdown spec, forbid quote (\") at the first position\n  // because emails enclosed in quotes are far more common\n  // Max name length capped to 64 chars (RFC 5321). This also prevents O(n^2)\n  // rescans to the end on inputs like `mailto:mailto:...`\n  re.src_email_name =\n\n    '[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]{0,63}'\n\n  re.src_xn =\n\n    'xn--[a-z0-9\\\\-]{1,59}'\n\n  // More to read about domain names\n  // http://serverfault.com/questions/638260/\n\n  re.src_domain_root =\n\n    // Allow letters & digits (http://test1)\n    '(?:' +\n      re.src_xn +\n      '|' +\n      `${re.src_pseudo_letter}{1,63}` +\n    ')'\n\n  re.src_domain =\n\n    '(?:' +\n      re.src_xn +\n      '|' +\n      `(?:${re.src_pseudo_letter})` +\n      '|' +\n      `(?:${re.src_pseudo_letter}(?:-|${re.src_pseudo_letter}){0,61}${re.src_pseudo_letter})` +\n    ')'\n\n  re.src_host =\n\n    '(?:' +\n    // Don't need IP check, because digits are already allowed in normal domain names\n    //   src_ip4 +\n    // '|' +\n      `(?:(?:(?:${re.src_domain})\\\\.)*${re.src_domain})`/* _root */ +\n    ')'\n\n  re.tpl_host_fuzzy =\n\n    '(?:' +\n      re.src_ip4 +\n    '|' +\n      `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))` +\n    ')'\n\n  re.tpl_host_no_ip_fuzzy =\n\n    `(?:(?:(?:${re.src_domain})\\\\.)+(?:%TLDS%))`\n\n  re.src_host_strict =\n\n    re.src_host + re.src_host_terminator\n\n  re.tpl_host_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_host_terminator\n\n  re.src_host_port_strict =\n\n    re.src_host + re.src_port + re.src_host_terminator\n\n  re.tpl_host_port_fuzzy_strict =\n\n    re.tpl_host_fuzzy + re.src_port + re.src_host_terminator\n\n  re.tpl_host_port_no_ip_fuzzy_strict =\n\n    re.tpl_host_no_ip_fuzzy + re.src_port + re.src_host_terminator\n\n  //\n  // Main rules\n  //\n\n  // Rude test fuzzy links by host, for quick deny\n  re.tpl_host_fuzzy_test =\n\n    `localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:${re.src_ZPCc}|>|$))`\n\n  re.tpl_email_fuzzy =\n\n      `(^|${text_separators}|\"|\\\\(|${re.src_ZCc})` +\n      `(${re.src_email_name}@${re.tpl_host_fuzzy_strict})`\n\n  re.tpl_link_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n      `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_fuzzy_strict}${re.src_path})`\n\n  re.tpl_link_no_ip_fuzzy =\n      // Fuzzy link can't be prepended with .:/\\- and non punctuation.\n      // but can start with > (markdown blockquote)\n      `(^|(?![.:/\\\\-_@])(?:[$+<=>^\\`|\\uff5c]|${re.src_ZPCc}))` +\n      `((?![$+<=>^\\`|\\uff5c])${re.tpl_host_port_no_ip_fuzzy_strict}${re.src_path})`\n\n  return re\n}\n","import reFactory from './lib/re.mjs'\n\n//\n// Helpers\n//\n\n// Merge objects\n//\nfunction assign (obj /* from1, from2, from3, ... */) {\n  const sources = Array.prototype.slice.call(arguments, 1)\n\n  sources.forEach(function (source) {\n    if (!source) { return }\n\n    Object.keys(source).forEach(function (key) {\n      obj[key] = source[key]\n    })\n  })\n\n  return obj\n}\n\nfunction _class (obj) { return Object.prototype.toString.call(obj) }\nfunction isString (obj) { return _class(obj) === '[object String]' }\nfunction isObject (obj) { return _class(obj) === '[object Object]' }\nfunction isRegExp (obj) { return _class(obj) === '[object RegExp]' }\nfunction isFunction (obj) { return _class(obj) === '[object Function]' }\n\nfunction escapeRE (str) { return str.replace(/[.?*+^$[\\]\\\\(){}|-]/g, '\\\\$&') }\n\n//\n\nconst defaultOptions = {\n  fuzzyLink: true,\n  fuzzyEmail: true,\n  fuzzyIP: false\n}\n\nfunction isOptionsObj (obj) {\n  return Object.keys(obj || {}).reduce(function (acc, k) {\n    /* eslint-disable-next-line no-prototype-builtins */\n    return acc || defaultOptions.hasOwnProperty(k)\n  }, false)\n}\n\nconst defaultSchemas = {\n  'http:': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.http) {\n        // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.http = new RegExp(\n          `^\\\\/\\\\/${self.re.src_auth}${self.re.src_host_port_strict}${self.re.src_path}`, 'i'\n        )\n      }\n      if (self.re.http.test(tail)) {\n        return tail.match(self.re.http)[0].length\n      }\n      return 0\n    }\n  },\n  'https:': 'http:',\n  'ftp:': 'http:',\n  '//': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.no_http) {\n      // compile lazily, because \"host\"-containing variables can change on tlds update.\n        self.re.no_http = new RegExp(\n          '^' +\n          self.re.src_auth +\n          // Don't allow single-level domains, because of false positives like '//test'\n          // with code comments\n          `(?:localhost|(?:(?:${self.re.src_domain})\\\\.)+${self.re.src_domain_root})` +\n          self.re.src_port +\n          self.re.src_host_terminator +\n          self.re.src_path,\n\n          'i'\n        )\n      }\n\n      if (self.re.no_http.test(tail)) {\n        // should not be `://` & `///`, that protects from errors in protocol name\n        if (pos >= 3 && text[pos - 3] === ':') { return 0 }\n        if (pos >= 3 && text[pos - 3] === '/') { return 0 }\n        return tail.match(self.re.no_http)[0].length\n      }\n      return 0\n    }\n  },\n  'mailto:': {\n    validate: function (text, pos, self) {\n      const tail = text.slice(pos)\n\n      if (!self.re.mailto) {\n        self.re.mailto = new RegExp(\n          `^${self.re.src_email_name}@${self.re.src_host_strict}`, 'i'\n        )\n      }\n      if (self.re.mailto.test(tail)) {\n        return tail.match(self.re.mailto)[0].length\n      }\n      return 0\n    }\n  }\n}\n\n// RE pattern for 2-character tlds (autogenerated by ./support/tlds_2char_gen.js)\nconst tlds_2ch_src_re = 'a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]'\n\n// DON'T try to make PRs with changes. Extend TLDs with LinkifyIt.tlds() instead\nconst tlds_default = 'biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф'.split('|')\n\nfunction createValidator (re) {\n  return function (text, pos) {\n    const tail = text.slice(pos)\n\n    if (re.test(tail)) {\n      return tail.match(re)[0].length\n    }\n    return 0\n  }\n}\n\nfunction createNormalizer () {\n  return function (match, self) {\n    self.normalize(match)\n  }\n}\n\n// Schemas compiler. Build regexps.\n//\nfunction compile (self) {\n  // Load & clone RE patterns.\n  const re = self.re = reFactory(self.__opts__)\n\n  // Define dynamic patterns\n  const tlds = self.__tlds__.slice()\n\n  self.onCompile()\n\n  if (!self.__tlds_replaced__) {\n    tlds.push(tlds_2ch_src_re)\n  }\n  tlds.push(re.src_xn)\n\n  re.src_tlds = tlds.join('|')\n\n  function untpl (tpl) { return tpl.replace('%TLDS%', re.src_tlds) }\n\n  re.email_fuzzy = RegExp(untpl(re.tpl_email_fuzzy), 'i')\n  re.email_fuzzy_global = RegExp(untpl(re.tpl_email_fuzzy), 'ig')\n  re.link_fuzzy = RegExp(untpl(re.tpl_link_fuzzy), 'i')\n  re.link_fuzzy_global = RegExp(untpl(re.tpl_link_fuzzy), 'ig')\n  re.link_no_ip_fuzzy = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'i')\n  re.link_no_ip_fuzzy_global = RegExp(untpl(re.tpl_link_no_ip_fuzzy), 'ig')\n  re.host_fuzzy_test = RegExp(untpl(re.tpl_host_fuzzy_test), 'i')\n\n  //\n  // Compile each schema\n  //\n\n  const aliases = []\n\n  self.__compiled__ = {} // Reset compiled data\n\n  function schemaError (name, val) {\n    throw new Error(`(LinkifyIt) Invalid schema \"${name}\": ${val}`)\n  }\n\n  Object.keys(self.__schemas__).forEach(function (name) {\n    const val = self.__schemas__[name]\n\n    // skip disabled methods\n    if (val === null) { return }\n\n    const compiled = { validate: null, link: null }\n\n    self.__compiled__[name] = compiled\n\n    if (isObject(val)) {\n      if (isRegExp(val.validate)) {\n        compiled.validate = createValidator(val.validate)\n      } else if (isFunction(val.validate)) {\n        compiled.validate = val.validate\n      } else {\n        schemaError(name, val)\n      }\n\n      if (isFunction(val.normalize)) {\n        compiled.normalize = val.normalize\n      } else if (!val.normalize) {\n        compiled.normalize = createNormalizer()\n      } else {\n        schemaError(name, val)\n      }\n\n      return\n    }\n\n    if (isString(val)) {\n      aliases.push(name)\n      return\n    }\n\n    schemaError(name, val)\n  })\n\n  //\n  // Compile postponed aliases\n  //\n\n  aliases.forEach(function (alias) {\n    if (!self.__compiled__[self.__schemas__[alias]]) {\n      // Silently fail on missed schemas to avoid errons on disable.\n      // schemaError(alias, self.__schemas__[alias]);\n      return\n    }\n\n    self.__compiled__[alias].validate =\n      self.__compiled__[self.__schemas__[alias]].validate\n    self.__compiled__[alias].normalize =\n      self.__compiled__[self.__schemas__[alias]].normalize\n  })\n\n  //\n  // Fake record for guessed links\n  //\n  self.__compiled__[''] = { validate: null, normalize: createNormalizer() }\n\n  //\n  // Build schema condition\n  //\n  const slist = Object.keys(self.__compiled__)\n    .filter(function (name) {\n      // Filter disabled & fake schemas\n      return name.length > 0 && self.__compiled__[name]\n    })\n    .map(escapeRE)\n    .join('|')\n  // (?!_) cause 1.5x slowdown\n  self.re.schema_test = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'i')\n  self.re.schema_search = RegExp(`(^|(?!_)(?:[><\\uff5c]|${re.src_ZPCc}))(${slist})`, 'ig')\n  self.re.schema_at_start = RegExp(`^${self.re.schema_search.source}`, 'i')\n\n  self.re.pretest = RegExp(\n    `(${self.re.schema_test.source})|(${self.re.host_fuzzy_test.source})|@`,\n    'i'\n  )\n}\n\n/**\n * class Match\n *\n * Match result. Single element of array, returned by [[LinkifyIt#match]]\n **/\nfunction Match (text, schema, index, lastIndex) {\n  const raw = text.slice(index, lastIndex)\n\n  /**\n   * Match#schema -> String\n   *\n   * Prefix (protocol) for matched string.\n   **/\n  this.schema = schema.toLowerCase()\n  /**\n   * Match#index -> Number\n   *\n   * First position of matched string.\n   **/\n  this.index = index\n  /**\n   * Match#lastIndex -> Number\n   *\n   * Next position after matched string.\n   **/\n  this.lastIndex = lastIndex\n  /**\n   * Match#raw -> String\n   *\n   * Matched string.\n   **/\n  this.raw = raw\n  /**\n   * Match#text -> String\n   *\n   * Notmalized text of matched string.\n   **/\n  this.text = raw\n  /**\n   * Match#url -> String\n   *\n   * Normalized url of matched string.\n   **/\n  this.url = raw\n}\n\n/**\n * class LinkifyIt\n **/\n\n/**\n * new LinkifyIt(schemas, options)\n * - schemas (Object): Optional. Additional schemas to validate (prefix/validator)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Creates new linkifier instance with optional additional schemas.\n * Can be called without `new` keyword for convenience.\n *\n * By default understands:\n *\n * - `http(s)://...` , `ftp://...`, `mailto:...` & `//...` links\n * - \"fuzzy\" links and emails (example.com, foo@bar.com).\n *\n * `schemas` is an object, where each key/value describes protocol/rule:\n *\n * - __key__ - link prefix (usually, protocol name with `:` at the end, `skype:`\n *   for example). `linkify-it` makes shure that prefix is not preceeded with\n *   alphanumeric char and symbols. Only whitespaces and punctuation allowed.\n * - __value__ - rule to check tail after link prefix\n *   - _String_ - just alias to existing rule\n *   - _Object_\n *     - _validate_ - validator function (should return matched length on success),\n *       or `RegExp`.\n *     - _normalize_ - optional function to normalize text & url of matched result\n *       (for example, for @twitter mentions).\n *\n * `options`:\n *\n * - __fuzzyLink__ - recognige URL-s without `http(s):` prefix. Default `true`.\n * - __fuzzyIP__ - allow IPs in fuzzy links above. Can conflict with some texts\n *   like version numbers. Default `false`.\n * - __fuzzyEmail__ - recognize emails without `mailto:` prefix.\n *\n **/\nfunction LinkifyIt (schemas, options) {\n  if (!(this instanceof LinkifyIt)) {\n    return new LinkifyIt(schemas, options)\n  }\n\n  if (!options) {\n    if (isOptionsObj(schemas)) {\n      options = schemas\n      schemas = {}\n    }\n  }\n\n  this.__opts__ = assign({}, defaultOptions, options)\n\n  this.__schemas__ = assign({}, defaultSchemas, schemas)\n  this.__compiled__ = {}\n\n  this.__tlds__ = tlds_default\n  this.__tlds_replaced__ = false\n\n  this.re = {}\n\n  compile(this)\n}\n\n/** chainable\n * LinkifyIt#add(schema, definition)\n * - schema (String): rule name (fixed pattern prefix)\n * - definition (String|RegExp|Object): schema definition\n *\n * Add new rule definition. See constructor description for details.\n **/\nLinkifyIt.prototype.add = function add (schema, definition) {\n  this.__schemas__[schema] = definition\n  compile(this)\n  return this\n}\n\n/** chainable\n * LinkifyIt#set(options)\n * - options (Object): { fuzzyLink|fuzzyEmail|fuzzyIP: true|false }\n *\n * Set recognition options for links without schema.\n **/\nLinkifyIt.prototype.set = function set (options) {\n  this.__opts__ = assign(this.__opts__, options)\n  return this\n}\n\n/**\n * LinkifyIt#test(text) -> Boolean\n *\n * Searches linkifiable pattern and returns `true` on success or `false` on fail.\n **/\nLinkifyIt.prototype.test = function test (text) {\n  if (!text.length) { return false }\n\n  let m, re\n\n  // try to scan for link with schema - that's the most simple rule\n  if (this.re.schema_test.test(text)) {\n    re = this.re.schema_search\n    re.lastIndex = 0\n    while ((m = re.exec(text)) !== null) {\n      if (this.testSchemaAt(text, m[2], re.lastIndex)) { return true }\n    }\n  }\n\n  if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n    // guess schemaless links\n    if (text.search(this.re.host_fuzzy_test) >= 0) {\n      if (text.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy) !== null) {\n        return true\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n    // guess schemaless emails\n    if (text.indexOf('@') >= 0) {\n      // We can't skip this check, because this cases are possible:\n      // 192.168.1.1@gmail.com, my.in@example.com\n      if (text.match(this.re.email_fuzzy) !== null) { return true }\n    }\n  }\n\n  return false\n}\n\n/**\n * LinkifyIt#pretest(text) -> Boolean\n *\n * Very quick check, that can give false positives. Returns true if link MAY BE\n * can exists. Can be used for speed optimization, when you need to check that\n * link NOT exists.\n **/\nLinkifyIt.prototype.pretest = function pretest (text) {\n  return this.re.pretest.test(text)\n}\n\n/**\n * LinkifyIt#testSchemaAt(text, name, position) -> Number\n * - text (String): text to scan\n * - name (String): rule (schema) name\n * - position (Number): text offset to check from\n *\n * Similar to [[LinkifyIt#test]] but checks only specific protocol tail exactly\n * at given position. Returns length of found pattern (0 on fail).\n **/\nLinkifyIt.prototype.testSchemaAt = function testSchemaAt (text, schema, pos) {\n  // If not supported schema check requested - terminate\n  if (!this.__compiled__[schema.toLowerCase()]) {\n    return 0\n  }\n  return this.__compiled__[schema.toLowerCase()].validate(text, pos, this)\n}\n\n/**\n * LinkifyIt#match(text) -> Array|null\n *\n * Returns array of found link descriptions or `null` on fail. We strongly\n * recommend to use [[LinkifyIt#test]] first, for best speed.\n *\n * ##### Result match description\n *\n * - __schema__ - link schema, can be empty for fuzzy links, or `//` for\n *   protocol-neutral  links.\n * - __index__ - offset of matched text\n * - __lastIndex__ - index of next char after mathch end\n * - __raw__ - matched text\n * - __text__ - normalized text\n * - __url__ - link, generated from matched text\n **/\nLinkifyIt.prototype.match = function match (text) {\n  const result = []\n  const type_schemed = []\n  const type_fuzzy_link = []\n  const type_fuzzy_email = []\n  let m, len, re\n\n  function choose (a, b) {\n    if (!a) { return b }\n    if (!b) { return a }\n    if (a.index !== b.index) { return a.index < b.index ? a : b }\n    return a.lastIndex >= b.lastIndex ? a : b\n  }\n\n  if (!text.length) { return null }\n\n  // scan for links with schema\n  if (this.re.schema_test.test(text)) {\n    re = this.re.schema_search\n    re.lastIndex = 0\n    while ((m = re.exec(text)) !== null) {\n      len = this.testSchemaAt(text, m[2], re.lastIndex)\n      if (len) {\n        type_schemed.push({\n          schema: m[2],\n          index: m.index + m[1].length,\n          lastIndex: m.index + m[0].length + len\n        })\n      }\n    }\n  }\n\n  if (this.__opts__.fuzzyLink && this.__compiled__['http:']) {\n    re = this.__opts__.fuzzyIP ? this.re.link_fuzzy_global : this.re.link_no_ip_fuzzy_global\n    re.lastIndex = 0\n    while ((m = re.exec(text)) !== null) {\n      type_fuzzy_link.push({\n        schema: '',\n        index: m.index + m[1].length,\n        lastIndex: m.index + m[0].length\n      })\n    }\n  }\n\n  if (this.__opts__.fuzzyEmail && this.__compiled__['mailto:']) {\n    re = this.re.email_fuzzy_global\n    re.lastIndex = 0\n    while ((m = re.exec(text)) !== null) {\n      type_fuzzy_email.push({\n        schema: 'mailto:',\n        index: m.index + m[1].length,\n        lastIndex: m.index + m[0].length\n      })\n    }\n  }\n\n  const indexes = [0, 0, 0]\n  let lastIndex = 0\n\n  for (;;) {\n    const candidates = [\n      type_schemed[indexes[0]],\n      type_fuzzy_email[indexes[1]],\n      type_fuzzy_link[indexes[2]]\n    ]\n\n    const candidate = choose(choose(candidates[0], candidates[1]), candidates[2])\n\n    if (!candidate) { break }\n\n    if (candidate === candidates[0]) {\n      indexes[0]++\n    } else if (candidate === candidates[1]) {\n      indexes[1]++\n    } else {\n      indexes[2]++\n    }\n\n    if (candidate.index < lastIndex) { continue }\n\n    const match = new Match(text, candidate.schema, candidate.index, candidate.lastIndex)\n    this.__compiled__[match.schema].normalize(match, this)\n    result.push(match)\n    lastIndex = candidate.lastIndex\n  }\n\n  if (result.length) {\n    return result\n  }\n\n  return null\n}\n\n/**\n * LinkifyIt#matchAtStart(text) -> Match|null\n *\n * Returns fully-formed (not fuzzy) link if it starts at the beginning\n * of the string, and null otherwise.\n **/\nLinkifyIt.prototype.matchAtStart = function matchAtStart (text) {\n  if (!text.length) return null\n\n  const m = this.re.schema_at_start.exec(text)\n  if (!m) return null\n\n  const len = this.testSchemaAt(text, m[2], m[0].length)\n  if (!len) return null\n\n  const match = new Match(text, m[2], m.index + m[1].length, m.index + m[0].length + len)\n\n  this.__compiled__[match.schema].normalize(match, this)\n  return match\n}\n\n/** chainable\n * LinkifyIt#tlds(list [, keepOld]) -> this\n * - list (Array): list of tlds\n * - keepOld (Boolean): merge with current list if `true` (`false` by default)\n *\n * Load (or merge) new tlds list. Those are user for fuzzy links (without prefix)\n * to avoid false positives. By default this algorythm used:\n *\n * - hostname with any 2-letter root zones are ok.\n * - biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф\n *   are ok.\n * - encoded (`xn--...`) root zones are ok.\n *\n * If list is replaced, then exact match for 2-chars root zones will be checked.\n **/\nLinkifyIt.prototype.tlds = function tlds (list, keepOld) {\n  list = Array.isArray(list) ? list : [list]\n\n  if (!keepOld) {\n    this.__tlds__ = list.slice()\n    this.__tlds_replaced__ = true\n    compile(this)\n    return this\n  }\n\n  this.__tlds__ = this.__tlds__.concat(list)\n    .sort()\n    .filter(function (el, idx, arr) {\n      return el !== arr[idx - 1]\n    })\n    .reverse()\n\n  compile(this)\n  return this\n}\n\n/**\n * LinkifyIt#normalize(match)\n *\n * Default normalizer (if schema does not define it's own).\n **/\nLinkifyIt.prototype.normalize = function normalize (match) {\n  // Do minimal possible changes by default. Need to collect feedback prior\n  // to move forward https://github.com/markdown-it/linkify-it/issues/1\n\n  if (!match.schema) { match.url = `http://${match.url}` }\n\n  if (match.schema === 'mailto:' && !/^mailto:/i.test(match.url)) {\n    match.url = `mailto:${match.url}`\n  }\n}\n\n/**\n * LinkifyIt#onCompile()\n *\n * Override to modify basic RegExp-s.\n **/\nLinkifyIt.prototype.onCompile = function onCompile () {\n}\n\nexport default LinkifyIt\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7F]/; // Note: U+007F DEL is excluded too.\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, callback) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = callback(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {String} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(domain, callback) {\n\tconst parts = domain.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tdomain = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tdomain = domain.replace(regexSeparators, '\\x2E');\n\tconst labels = domain.split('.');\n\tconst encoded = map(labels, callback).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = codePoints => String.fromCodePoint(...codePoints);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint >= 0x30 && codePoint < 0x3A) {\n\t\treturn 26 + (codePoint - 0x30);\n\t}\n\tif (codePoint >= 0x41 && codePoint < 0x5B) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint >= 0x61 && codePoint < 0x7B) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tconst oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\t\t\tif (digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tconst inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tconst basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue === n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount === basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.3.1',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport { ucs2decode, ucs2encode, decode, encode, toASCII, toUnicode };\nexport default punycode;\n","// markdown-it default options\n\nexport default {\n  options: {\n    // Enable HTML tags in source\n    html: false,\n\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: false,\n\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n\n    // CSS language prefix for fenced blocks\n    langPrefix: 'language-',\n\n    // autoconvert URL-like texts to links\n    linkify: false,\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    // Internal protection, recursion limit\n    maxNesting: 100\n  },\n\n  components: {\n    core: {},\n    block: {},\n    inline: {}\n  }\n}\n","// \"Zero\" preset, with nothing enabled. Useful for manual configuring of simple\n// modes. For example, to parse bold/italic only.\n\nexport default {\n  options: {\n    // Enable HTML tags in source\n    html: false,\n\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: false,\n\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n\n    // CSS language prefix for fenced blocks\n    langPrefix: 'language-',\n\n    // autoconvert URL-like texts to links\n    linkify: false,\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'normalize',\n        'block',\n        'inline',\n        'text_join'\n      ]\n    },\n\n    block: {\n      rules: [\n        'paragraph'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'text'\n      ],\n      rules2: [\n        'balance_pairs',\n        'fragments_join'\n      ]\n    }\n  }\n}\n","// Commonmark default options\n\nexport default {\n  options: {\n    // Enable HTML tags in source\n    html: true,\n\n    // Use '/' to close single tags (<br />)\n    xhtmlOut: true,\n\n    // Convert '\\n' in paragraphs into <br>\n    breaks: false,\n\n    // CSS language prefix for fenced blocks\n    langPrefix: 'language-',\n\n    // autoconvert URL-like texts to links\n    linkify: false,\n\n    // Enable some language-neutral replacements + quotes beautification\n    typographer: false,\n\n    // Double + single quotes replacement pairs, when typographer enabled,\n    // and smartquotes on. Could be either a String or an Array.\n    //\n    // For example, you can use '«»„“' for Russian, '„“‚‘' for German,\n    // and ['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›'] for French (including nbsp).\n    quotes: '\\u201c\\u201d\\u2018\\u2019', /* “”‘’ */\n\n    // Highlighter function. Should return escaped HTML,\n    // or '' if the source string is not changed and should be escaped externaly.\n    // If result starts with <pre... internal wrapper is skipped.\n    //\n    // function (/*str, lang*/) { return ''; }\n    //\n    highlight: null,\n\n    // Internal protection, recursion limit\n    maxNesting: 20\n  },\n\n  components: {\n\n    core: {\n      rules: [\n        'normalize',\n        'block',\n        'inline',\n        'text_join'\n      ]\n    },\n\n    block: {\n      rules: [\n        'blockquote',\n        'code',\n        'fence',\n        'heading',\n        'hr',\n        'html_block',\n        'lheading',\n        'list',\n        'reference',\n        'paragraph'\n      ]\n    },\n\n    inline: {\n      rules: [\n        'autolink',\n        'backticks',\n        'emphasis',\n        'entity',\n        'escape',\n        'html_inline',\n        'image',\n        'link',\n        'newline',\n        'text'\n      ],\n      rules2: [\n        'balance_pairs',\n        'emphasis',\n        'fragments_join'\n      ]\n    }\n  }\n}\n","// Main parser class\n\nimport * as utils from './common/utils.mjs'\nimport * as helpers from './helpers/index.mjs'\nimport Renderer from './renderer.mjs'\nimport ParserCore from './parser_core.mjs'\nimport ParserBlock from './parser_block.mjs'\nimport ParserInline from './parser_inline.mjs'\nimport LinkifyIt from 'linkify-it'\nimport * as mdurl from 'mdurl'\nimport punycode from 'punycode.js'\n\nimport cfg_default from './presets/default.mjs'\nimport cfg_zero from './presets/zero.mjs'\nimport cfg_commonmark from './presets/commonmark.mjs'\n\nconst config = {\n  default: cfg_default,\n  zero: cfg_zero,\n  commonmark: cfg_commonmark\n}\n\n//\n// This validator can prohibit more than really needed to prevent XSS. It's a\n// tradeoff to keep code simple and to be secure by default.\n//\n// If you need different setup - override validator method as you wish. Or\n// replace it with dummy function and use external sanitizer.\n//\n\nconst BAD_PROTO_RE = /^(vbscript|javascript|file|data):/\nconst GOOD_DATA_RE = /^data:image\\/(gif|png|jpeg|webp);/\n\nfunction validateLink (url) {\n  // url should be normalized at this point, and existing entities are decoded\n  const str = url.trim().toLowerCase()\n\n  return BAD_PROTO_RE.test(str) ? GOOD_DATA_RE.test(str) : true\n}\n\nconst RECODE_HOSTNAME_FOR = ['http:', 'https:', 'mailto:']\n\nfunction normalizeLink (url) {\n  const parsed = mdurl.parse(url, true)\n\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    //\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    //\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toASCII(parsed.hostname)\n      } catch (er) { /**/ }\n    }\n  }\n\n  return mdurl.encode(mdurl.format(parsed))\n}\n\nfunction normalizeLinkText (url) {\n  const parsed = mdurl.parse(url, true)\n\n  if (parsed.hostname) {\n    // Encode hostnames in urls like:\n    // `http://host/`, `https://host/`, `mailto:user@host`, `//host/`\n    //\n    // We don't encode unknown schemas, because it's likely that we encode\n    // something we shouldn't (e.g. `skype:name` treated as `skype:host`)\n    //\n    if (!parsed.protocol || RECODE_HOSTNAME_FOR.indexOf(parsed.protocol) >= 0) {\n      try {\n        parsed.hostname = punycode.toUnicode(parsed.hostname)\n      } catch (er) { /**/ }\n    }\n  }\n\n  // add '%' to exclude list because of https://github.com/markdown-it/markdown-it/issues/720\n  return mdurl.decode(mdurl.format(parsed), mdurl.decode.defaultChars + '%')\n}\n\n/**\n * class MarkdownIt\n *\n * Main parser/renderer class.\n *\n * ##### Usage\n *\n * ```javascript\n * // node.js, \"classic\" way:\n * var MarkdownIt = require('markdown-it'),\n *     md = new MarkdownIt();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // node.js, the same, but with sugar:\n * var md = require('markdown-it')();\n * var result = md.render('# markdown-it rulezz!');\n *\n * // browser without AMD, added to \"window\" on script load\n * // Note, there are no dash.\n * var md = window.markdownit();\n * var result = md.render('# markdown-it rulezz!');\n * ```\n *\n * Single line rendering, without paragraph wrap:\n *\n * ```javascript\n * var md = require('markdown-it')();\n * var result = md.renderInline('__markdown-it__ rulezz!');\n * ```\n **/\n\n/**\n * new MarkdownIt([presetName, options])\n * - presetName (String): optional, `commonmark` / `zero`\n * - options (Object)\n *\n * Creates parser instanse with given config. Can be called without `new`.\n *\n * ##### presetName\n *\n * MarkdownIt provides named presets as a convenience to quickly\n * enable/disable active syntax rules and options for common use cases.\n *\n * - [\"commonmark\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/commonmark.mjs) -\n *   configures parser to strict [CommonMark](http://commonmark.org/) mode.\n * - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.mjs) -\n *   similar to GFM, used when no preset name given. Enables all available rules,\n *   but still without html, typographer & autolinker.\n * - [\"zero\"](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/zero.mjs) -\n *   all rules disabled. Useful to quickly setup your config via `.enable()`.\n *   For example, when you need only `bold` and `italic` markup and nothing else.\n *\n * ##### options:\n *\n * - __html__ - `false`. Set `true` to enable HTML tags in source. Be careful!\n *   That's not safe! You may need external sanitizer to protect output from XSS.\n *   It's better to extend features via plugins, instead of enabling HTML.\n * - __xhtmlOut__ - `false`. Set `true` to add '/' when closing single tags\n *   (`<br />`). This is needed only for full CommonMark compatibility. In real\n *   world you will need HTML output.\n * - __breaks__ - `false`. Set `true` to convert `\\n` in paragraphs into `<br>`.\n * - __langPrefix__ - `language-`. CSS language class prefix for fenced blocks.\n *   Can be useful for external highlighters.\n * - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.\n * - __typographer__  - `false`. Set `true` to enable [some language-neutral\n *   replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.mjs) +\n *   quotes beautification (smartquotes).\n * - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement\n *   pairs, when typographer enabled and smartquotes on. For example, you can\n *   use `'«»„“'` for Russian, `'„“‚‘'` for German, and\n *   `['«\\xA0', '\\xA0»', '‹\\xA0', '\\xA0›']` for French (including nbsp).\n * - __highlight__ - `null`. Highlighter function for fenced code blocks.\n *   Highlighter `function (str, lang)` should return escaped HTML. It can also\n *   return empty string if the source was not changed and should be escaped\n *   externaly. If result starts with <pre... internal wrapper is skipped.\n *\n * ##### Example\n *\n * ```javascript\n * // commonmark mode\n * var md = require('markdown-it')('commonmark');\n *\n * // default mode\n * var md = require('markdown-it')();\n *\n * // enable everything\n * var md = require('markdown-it')({\n *   html: true,\n *   linkify: true,\n *   typographer: true\n * });\n * ```\n *\n * ##### Syntax highlighting\n *\n * ```js\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * var md = require('markdown-it')({\n *   highlight: function (str, lang) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return hljs.highlight(str, { language: lang, ignoreIllegals: true }).value;\n *       } catch (__) {}\n *     }\n *\n *     return ''; // use external default escaping\n *   }\n * });\n * ```\n *\n * Or with full wrapper override (if you need assign class to `<pre>` or `<code>`):\n *\n * ```javascript\n * var hljs = require('highlight.js') // https://highlightjs.org/\n *\n * // Actual default values\n * var md = require('markdown-it')({\n *   highlight: function (str, lang) {\n *     if (lang && hljs.getLanguage(lang)) {\n *       try {\n *         return '<pre><code class=\"hljs\">' +\n *                hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +\n *                '</code></pre>';\n *       } catch (__) {}\n *     }\n *\n *     return '<pre><code class=\"hljs\">' + md.utils.escapeHtml(str) + '</code></pre>';\n *   }\n * });\n * ```\n *\n **/\nfunction MarkdownIt (presetName, options) {\n  if (!(this instanceof MarkdownIt)) {\n    return new MarkdownIt(presetName, options)\n  }\n\n  if (!options) {\n    if (!utils.isString(presetName)) {\n      options = presetName || {}\n      presetName = 'default'\n    }\n  }\n\n  /**\n   * MarkdownIt#inline -> ParserInline\n   *\n   * Instance of [[ParserInline]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.inline = new ParserInline()\n\n  /**\n   * MarkdownIt#block -> ParserBlock\n   *\n   * Instance of [[ParserBlock]]. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.block = new ParserBlock()\n\n  /**\n   * MarkdownIt#core -> Core\n   *\n   * Instance of [[Core]] chain executor. You may need it to add new rules when\n   * writing plugins. For simple rules control use [[MarkdownIt.disable]] and\n   * [[MarkdownIt.enable]].\n   **/\n  this.core = new ParserCore()\n\n  /**\n   * MarkdownIt#renderer -> Renderer\n   *\n   * Instance of [[Renderer]]. Use it to modify output look. Or to add rendering\n   * rules for new token types, generated by plugins.\n   *\n   * ##### Example\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   *\n   * function myToken(tokens, idx, options, env, self) {\n   *   //...\n   *   return result;\n   * };\n   *\n   * md.renderer.rules['my_token'] = myToken\n   * ```\n   *\n   * See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.mjs).\n   **/\n  this.renderer = new Renderer()\n\n  /**\n   * MarkdownIt#linkify -> LinkifyIt\n   *\n   * [linkify-it](https://github.com/markdown-it/linkify-it) instance.\n   * Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.mjs)\n   * rule.\n   **/\n  this.linkify = new LinkifyIt()\n\n  /**\n   * MarkdownIt#validateLink(url) -> Boolean\n   *\n   * Link validation function. CommonMark allows too much in links. By default\n   * we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas\n   * except some embedded image types.\n   *\n   * You can change this behaviour:\n   *\n   * ```javascript\n   * var md = require('markdown-it')();\n   * // enable everything\n   * md.validateLink = function () { return true; }\n   * ```\n   **/\n  this.validateLink = validateLink\n\n  /**\n   * MarkdownIt#normalizeLink(url) -> String\n   *\n   * Function used to encode link url to a machine-readable format,\n   * which includes url-encoding, punycode, etc.\n   **/\n  this.normalizeLink = normalizeLink\n\n  /**\n   * MarkdownIt#normalizeLinkText(url) -> String\n   *\n   * Function used to decode link url to a human-readable format`\n   **/\n  this.normalizeLinkText = normalizeLinkText\n\n  // Expose utils & helpers for easy acces from plugins\n\n  /**\n   * MarkdownIt#utils -> utils\n   *\n   * Assorted utility functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/common/utils.mjs).\n   **/\n  this.utils = utils\n\n  /**\n   * MarkdownIt#helpers -> helpers\n   *\n   * Link components parser functions, useful to write plugins. See details\n   * [here](https://github.com/markdown-it/markdown-it/blob/master/lib/helpers).\n   **/\n  this.helpers = utils.assign({}, helpers)\n\n  this.options = {}\n  this.configure(presetName)\n\n  if (options) { this.set(options) }\n}\n\n/** chainable\n * MarkdownIt.set(options)\n *\n * Set parser options (in the same format as in constructor). Probably, you\n * will never need it, but you can change options after constructor call.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .set({ html: true, breaks: true })\n *             .set({ typographer: true });\n * ```\n *\n * __Note:__ To achieve the best possible performance, don't modify a\n * `markdown-it` instance options on the fly. If you need multiple configurations\n * it's best to create multiple instances and initialize each with separate\n * config.\n **/\nMarkdownIt.prototype.set = function (options) {\n  utils.assign(this.options, options)\n  return this\n}\n\n/** chainable, internal\n * MarkdownIt.configure(presets)\n *\n * Batch load of all options and compenent settings. This is internal method,\n * and you probably will not need it. But if you will - see available presets\n * and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets)\n *\n * We strongly recommend to use presets instead of direct config loads. That\n * will give better compatibility with next versions.\n **/\nMarkdownIt.prototype.configure = function (presets) {\n  const self = this\n\n  if (utils.isString(presets)) {\n    const presetName = presets\n    presets = config[presetName]\n    if (!presets) { throw new Error('Wrong `markdown-it` preset \"' + presetName + '\", check name') }\n  }\n\n  if (!presets) { throw new Error('Wrong `markdown-it` preset, can\\'t be empty') }\n\n  if (presets.options) { self.set(presets.options) }\n\n  if (presets.components) {\n    Object.keys(presets.components).forEach(function (name) {\n      if (presets.components[name].rules) {\n        self[name].ruler.enableOnly(presets.components[name].rules)\n      }\n      if (presets.components[name].rules2) {\n        self[name].ruler2.enableOnly(presets.components[name].rules2)\n      }\n    })\n  }\n  return this\n}\n\n/** chainable\n * MarkdownIt.enable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to enable\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * Enable list or rules. It will automatically find appropriate components,\n * containing rules with given names. If rule not found, and `ignoreInvalid`\n * not set - throws exception.\n *\n * ##### Example\n *\n * ```javascript\n * var md = require('markdown-it')()\n *             .enable(['sub', 'sup'])\n *             .disable('smartquotes');\n * ```\n **/\nMarkdownIt.prototype.enable = function (list, ignoreInvalid) {\n  let result = []\n\n  if (!Array.isArray(list)) { list = [list] }\n\n  ['core', 'block', 'inline'].forEach(function (chain) {\n    result = result.concat(this[chain].ruler.enable(list, true))\n  }, this)\n\n  result = result.concat(this.inline.ruler2.enable(list, true))\n\n  const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n  if (missed.length && !ignoreInvalid) {\n    throw new Error('MarkdownIt. Failed to enable unknown rule(s): ' + missed)\n  }\n\n  return this\n}\n\n/** chainable\n * MarkdownIt.disable(list, ignoreInvalid)\n * - list (String|Array): rule name or list of rule names to disable.\n * - ignoreInvalid (Boolean): set `true` to ignore errors when rule not found.\n *\n * The same as [[MarkdownIt.enable]], but turn specified rules off.\n **/\nMarkdownIt.prototype.disable = function (list, ignoreInvalid) {\n  let result = []\n\n  if (!Array.isArray(list)) { list = [list] }\n\n  ['core', 'block', 'inline'].forEach(function (chain) {\n    result = result.concat(this[chain].ruler.disable(list, true))\n  }, this)\n\n  result = result.concat(this.inline.ruler2.disable(list, true))\n\n  const missed = list.filter(function (name) { return result.indexOf(name) < 0 })\n\n  if (missed.length && !ignoreInvalid) {\n    throw new Error('MarkdownIt. Failed to disable unknown rule(s): ' + missed)\n  }\n  return this\n}\n\n/** chainable\n * MarkdownIt.use(plugin, params)\n *\n * Load specified plugin with given params into current parser instance.\n * It's just a sugar to call `plugin(md, params)` with curring.\n *\n * ##### Example\n *\n * ```javascript\n * var iterator = require('markdown-it-for-inline');\n * var md = require('markdown-it')()\n *             .use(iterator, 'foo_replace', 'text', function (tokens, idx) {\n *               tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar');\n *             });\n * ```\n **/\nMarkdownIt.prototype.use = function (plugin /*, params, ... */) {\n  const args = [this].concat(Array.prototype.slice.call(arguments, 1))\n  plugin.apply(plugin, args)\n  return this\n}\n\n/** internal\n * MarkdownIt.parse(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Parse input string and return list of block tokens (special token type\n * \"inline\" will contain list of inline tokens). You should not call this\n * method directly, until you write custom renderer (for example, to produce\n * AST).\n *\n * `env` is used to pass data between \"distributed\" rules and return additional\n * metadata like reference info, needed for the renderer. It also can be used to\n * inject data in specific cases. Usually, you will be ok to pass `{}`,\n * and then pass updated object to renderer.\n **/\nMarkdownIt.prototype.parse = function (src, env) {\n  if (typeof src !== 'string') {\n    throw new Error('Input data should be a String')\n  }\n\n  const state = new this.core.State(src, this, env)\n\n  this.core.process(state)\n\n  return state.tokens\n}\n\n/**\n * MarkdownIt.render(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Render markdown string into html. It does all magic for you :).\n *\n * `env` can be used to inject additional metadata (`{}` by default).\n * But you will not need it with high probability. See also comment\n * in [[MarkdownIt.parse]].\n **/\nMarkdownIt.prototype.render = function (src, env) {\n  env = env || {}\n\n  return this.renderer.render(this.parse(src, env), this.options, env)\n}\n\n/** internal\n * MarkdownIt.parseInline(src, env) -> Array\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * The same as [[MarkdownIt.parse]] but skip all block rules. It returns the\n * block tokens list with the single `inline` element, containing parsed inline\n * tokens in `children` property. Also updates `env` object.\n **/\nMarkdownIt.prototype.parseInline = function (src, env) {\n  const state = new this.core.State(src, this, env)\n\n  state.inlineMode = true\n  this.core.process(state)\n\n  return state.tokens\n}\n\n/**\n * MarkdownIt.renderInline(src [, env]) -> String\n * - src (String): source string\n * - env (Object): environment sandbox\n *\n * Similar to [[MarkdownIt.render]] but for single paragraph content. Result\n * will NOT be wrapped into `<p>` tags.\n **/\nMarkdownIt.prototype.renderInline = function (src, env) {\n  env = env || {}\n\n  return this.renderer.render(this.parseInline(src, env), this.options, env)\n}\n\nexport default MarkdownIt\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport markdownit from 'markdown-it';\nimport type {MarkdownRendererTagClassMap} from '@a2ui/web_core';\n\n/**\n * A pre-configured instance of markdown-it to render markdown in A2UI web.\n *\n * This renderer does not perform any sanitization of the outgoing HTML.\n */\nexport class MarkdownItRenderer {\n  private markdownIt = markdownit();\n\n  constructor() {\n    this.registerTagClassMapRules();\n  }\n\n  /**\n   * Registers rules to apply tag class maps from the environment.\n   */\n  private registerTagClassMapRules() {\n    // Proxy the \"_open\" default rules to apply classes to their tokens.\n    // See: https://github.com/markdown-it/markdown-it/blob/master/docs/examples/renderer_rules.md#default-renderer-rules\n    const rulesToProxy = [\n      'paragraph_open',\n      'heading_open',\n      'bullet_list_open',\n      'ordered_list_open',\n      'list_item_open',\n      'link_open',\n      'strong_open',\n      'em_open',\n    ];\n\n    for (const ruleName of rulesToProxy) {\n      // We cache the original rule here to use it to render the token after\n      // we've applied classes to it.\n      // See: https://github.com/markdown-it/markdown-it/blob/master/docs/examples/renderer_rules.md#to-add-a-default-css-class-to-an-element\n      const originalRule = this.markdownIt.renderer.rules[ruleName];\n      this.markdownIt.renderer.rules[ruleName] = (tokens, idx, options, env, self) => {\n        const token = tokens[idx];\n        const tagClassMap = env?.tagClassMap as MarkdownRendererTagClassMap | undefined;\n\n        if (tagClassMap) {\n          const tokenClasses = tagClassMap[token.tag] ?? [];\n          for (const clazz of tokenClasses) {\n            token.attrJoin('class', clazz);\n          }\n        }\n        if (originalRule) {\n          // Delegate to the original rule to render the token.\n          return originalRule(tokens, idx, options, env, self);\n        }\n        // Fallback to the default renderToken behavior.\n        return self.renderToken(tokens, idx, options);\n      };\n    }\n  }\n\n  /**\n   * Renders the markdown string to HTML using the internal MarkdownIt instance.\n   *\n   * @param tagClassMap A map of tag names to classes to apply when rendering a tag.\n   *\n   * This method does not perform any sanitization of the outgoing HTML.\n   */\n  render(value: string, tagClassMap?: MarkdownRendererTagClassMap) {\n    return this.markdownIt.render(value, {tagClassMap});\n  }\n}\n\n/**\n * A pre-configured instance of markdown-it to render markdown in A2UI web.\n *\n * This renderer does not perform any sanitization of the outgoing HTML.\n */\nexport const rawMarkdownRenderer = new MarkdownItRenderer();\n","const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function <T>(x: T): T {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function <T>(\n    func: (thisArg: any, ...args: any[]) => T,\n    thisArg: any,\n    ...args: any[]\n  ): T {\n    return func.apply(thisArg, args);\n  };\n}\n\nif (!construct) {\n  construct = function <T>(Func: new (...args: any[]) => T, ...args: any[]): T {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\nconst arrayIsArray = Array.isArray;\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst numberToString = unapply(Number.prototype.toString);\nconst booleanToString = unapply(Boolean.prototype.toString);\nconst bigintToString =\n  typeof BigInt === 'undefined' ? null : unapply(BigInt.prototype.toString);\nconst symbolToString =\n  typeof Symbol === 'undefined' ? null : unapply(Symbol.prototype.toString);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\nconst objectToString = unapply(Object.prototype.toString);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n  func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n  return (thisArg: any, ...args: any[]): T => {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(\n  Func: new (...args: any[]) => T\n): (...args: any[]) => T {\n  return (...args: any[]): T => construct(Func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n  set: Record<string, boolean>,\n  array: readonly unknown[],\n  transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, boolean> {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  if (!arrayIsArray(array)) {\n    return set;\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          (array as unknown[])[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element as string] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (arrayIsArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * Convert non-node values into strings without depending on direct property access.\n *\n * @param value - The value to stringify.\n * @returns A string representation of the provided value.\n */\nfunction stringifyValue(value: unknown): string {\n  switch (typeof value) {\n    case 'string': {\n      return value;\n    }\n\n    case 'number': {\n      return numberToString(value);\n    }\n\n    case 'boolean': {\n      return booleanToString(value);\n    }\n\n    case 'bigint': {\n      return bigintToString ? bigintToString(value) : '0';\n    }\n\n    case 'symbol': {\n      return symbolToString ? symbolToString(value) : 'Symbol()';\n    }\n\n    case 'undefined': {\n      return objectToString(value);\n    }\n\n    case 'function':\n    case 'object': {\n      if (value === null) {\n        return objectToString(value);\n      }\n\n      const valueAsRecord = value as Record<string, any>;\n      const valueToString = lookupGetter(valueAsRecord, 'toString');\n\n      if (typeof valueToString === 'function') {\n        const stringified = valueToString(valueAsRecord);\n\n        return typeof stringified === 'string'\n          ? stringified\n          : objectToString(stringified);\n      }\n\n      return objectToString(value);\n    }\n\n    default: {\n      return objectToString(value);\n    }\n  }\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n  object: T,\n  prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(): null {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nfunction isRegex(value: unknown): value is RegExp {\n  try {\n    regExpTest(value as RegExp, '');\n    return true;\n  } catch {\n    return false;\n  }\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  arraySplice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  objectToString,\n  // RegExp\n  regExpTest,\n  isRegex,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Other conversion\n  stringifyValue,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'search',\n  'section',\n  'select',\n  'shadow',\n  'slot',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n] as const);\n\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'enterkeyhint',\n  'exportparts',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'inputmode',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'part',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n] as const);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'command',\n  'commandfor',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'exportparts',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inert',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'part',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'slot',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n] as const);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'amplitude',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'exponent',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'intercept',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'mask-type',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'slope',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'tablevalues',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnalign',\n  'columnlines',\n  'columnspacing',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lquote',\n  'lspace',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n] as const);\n","import { seal } from './utils.js';\n\nexport const MUSTACHE_EXPR = seal(/{{[\\w\\W]*|^[\\w\\W]*}}/g);\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|^[\\w\\W]*%>/g);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*/g);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n\n// Markup-significant character probes used by _sanitizeElements.\n// Shared module-level instances are safe despite the sticky /g flags:\n// unapply() resets lastIndex for RegExp receivers before every call.\nexport const ELEMENT_MARKUP_PROBE = seal(/<[/\\w!]/g);\nexport const COMMENT_MARKUP_PROBE = seal(/<[/\\w]/g);\nexport const FALLBACK_TAG_CLOSE = seal(/<\\/no(script|embed|frames)/i);\nexport const SELF_CLOSING_TAG = seal(/\\/>/i);\n","import type { Config, UseProfilesConfig } from './config';\nimport type { DOMPurify, HooksMap, HookFunction, WindowLike } from './types';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  seal,\n  arrayForEach,\n  arrayIsArray,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySplice,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  isRegex,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n  stringifyValue,\n} from './utils.js';\n\nexport type { Config } from './config';\n\nexport type {\n  DOMPurify,\n  RemovedElement,\n  RemovedAttribute,\n  HookName,\n  NodeHook,\n  ElementHook,\n  DocumentFragmentHook,\n  UponSanitizeElementHook,\n  UponSanitizeAttributeHook,\n  UponSanitizeElementHookEvent,\n  UponSanitizeAttributeHookEvent,\n  WindowLike,\n} from './types';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  processingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n  trustedTypes: TrustedTypePolicyFactory,\n  purifyHostElement: HTMLScriptElement\n) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nconst _createHooksMap = function (): HooksMap {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: [],\n  };\n};\n\n/**\n * Resolve a set-valued configuration option: a fresh set built from\n * cfg[key] when it is an own array property (seeded with a clone of\n * options.base when given, case-normalized via options.transform),\n * the fallback set otherwise.\n *\n * @param cfg the cloned, prototype-free configuration object\n * @param key the configuration property to read\n * @param fallback the set to use when the option is absent or not an array\n * @param options transform and optional base set to merge into\n * @returns the resolved set\n */\nconst _resolveSetOption = function (\n  cfg: Config,\n  key: keyof Config,\n  fallback: Record<string, boolean>,\n  options: {\n    transform: Parameters<typeof addToSet>[2];\n    base?: Record<string, boolean>;\n  }\n): Record<string, boolean> {\n  return objectHasOwnProperty(cfg, key) && arrayIsArray(cfg[key])\n    ? addToSet(\n        options.base ? clone(options.base) : {},\n        cfg[key] as readonly unknown[],\n        options.transform\n      )\n    : fallback;\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n  const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n  DOMPurify.version = VERSION;\n\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document ||\n    !window.Element\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript: HTMLScriptElement =\n    originalDocument.currentScript as HTMLScriptElement;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n  const getShadowRoot = lookupGetter(ElementPrototype, 'shadowRoot');\n  const getAttributes = lookupGetter(ElementPrototype, 'attributes');\n  const getNodeType =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeType') : null;\n  const getNodeName =\n    Node && Node.prototype ? lookupGetter(Node.prototype, 'nodeName') : null;\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  // The instance's own internal Trusted Types policy. Unlike a caller-supplied\n  // `TRUSTED_TYPES_POLICY`, this is created at most once — Trusted Types throws\n  // on duplicate policy names — and is the only policy allowed to persist\n  // across configurations and survive `clearConfig()`.\n  let defaultTrustedTypesPolicy;\n  let defaultTrustedTypesPolicyResolved = false;\n\n  // Tracks whether we are already inside a call to the configured Trusted Types\n  // policy (`createHTML` or `createScriptURL`). If a supplied policy callback\n  // itself calls `DOMPurify.sanitize` (the cause of #1422), `sanitize` would\n  // re-enter the policy and recurse until the stack overflows. We detect that\n  // re-entry and throw a clear, actionable error instead. The guard is shared\n  // across both callbacks, because either one re-entering `sanitize` triggers\n  // the same unbounded recursion.\n  let IN_TRUSTED_TYPES_POLICY = 0;\n  const _assertNotInTrustedTypesPolicy = function (): void {\n    if (IN_TRUSTED_TYPES_POLICY > 0) {\n      throw typeErrorCreate(\n        'A configured TRUSTED_TYPES_POLICY callback (createHTML or ' +\n          'createScriptURL) must not call DOMPurify.sanitize, as that causes ' +\n          'infinite recursion. Do not pass a policy whose callbacks wrap ' +\n          'DOMPurify as TRUSTED_TYPES_POLICY; see the \"DOMPurify and Trusted ' +\n          'Types\" section of the README.'\n      );\n    }\n  };\n\n  const _createTrustedHTML = function (html: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createHTML(html);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  const _createTrustedScriptURL = function (scriptUrl: string): string {\n    _assertNotInTrustedTypesPolicy();\n\n    IN_TRUSTED_TYPES_POLICY++;\n    try {\n      return trustedTypesPolicy.createScriptURL(scriptUrl);\n    } finally {\n      IN_TRUSTED_TYPES_POLICY--;\n    }\n  };\n\n  // Lazily resolve (and cache) the instance's internal default policy.\n  // Resolution is attempted at most once: a successful `createPolicy` cannot be\n  // repeated (Trusted Types throws on duplicate names), and a failed or\n  // unsupported attempt must not be retried on every parse.\n  const _getDefaultTrustedTypesPolicy = function () {\n    if (!defaultTrustedTypesPolicyResolved) {\n      defaultTrustedTypesPolicy = _createTrustedTypesPolicy(\n        trustedTypes,\n        currentScript\n      );\n      defaultTrustedTypesPolicyResolved = true;\n    }\n\n    return defaultTrustedTypesPolicy;\n  };\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = _createHooksMap();\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Config object to store ADD_TAGS/ADD_ATTR functions (when used as functions) */\n  const EXTRA_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n    })\n  );\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Pristine allowlist bindings captured at setConfig() time. On the\n   * persistent-config path sanitize() restores the sets from these before\n   * the per-walk hook clone-guard, so a hook's in-call widening cannot\n   * carry across calls. Null until setConfig() is called; reset by\n   * clearConfig(). */\n  let SET_CONFIG_ALLOWED_TAGS = null;\n  let SET_CONFIG_ALLOWED_ATTR = null;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES: UseProfilesConfig | false = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    // <selectedcontent> mirrors the selected <option>'s subtree, cloned by\n    // the UA (customizable <select>) — including any on* handlers — and the\n    // engine re-mirrors synchronously whenever a removal changes which\n    // option/selectedcontent is current, even inside DOMPurify's inert\n    // DOMParser document. Hoisting its children on removal re-inserts a fresh\n    // mirror target ahead of the walk, which the engine refills, looping\n    // forever (DoS) and amplifying output. Dropping its content on removal\n    // (rather than hoisting) breaks that cascade; the content is a duplicate\n    // of the option, which is sanitized on its own. See campaign-3 F1/F6.\n    'selectedcontent',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  const DEFAULT_MATHML_TEXT_INTEGRATION_POINTS = freeze([\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet(\n    {},\n    DEFAULT_MATHML_TEXT_INTEGRATION_POINTS\n  );\n\n  const DEFAULT_HTML_INTEGRATION_POINTS = freeze(['annotation-xml']);\n  let HTML_INTEGRATION_POINTS = addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG: Config | null = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (\n    testValue: unknown\n  ): testValue is Function | RegExp {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg: Config = {}): void {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = _resolveSetOption(\n      cfg,\n      'ALLOWED_TAGS',\n      DEFAULT_ALLOWED_TAGS,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_ATTR = _resolveSetOption(\n      cfg,\n      'ALLOWED_ATTR',\n      DEFAULT_ALLOWED_ATTR,\n      { transform: transformCaseFunc }\n    );\n    ALLOWED_NAMESPACES = _resolveSetOption(\n      cfg,\n      'ALLOWED_NAMESPACES',\n      DEFAULT_ALLOWED_NAMESPACES,\n      { transform: stringToString }\n    );\n    URI_SAFE_ATTRIBUTES = _resolveSetOption(\n      cfg,\n      'ADD_URI_SAFE_ATTR',\n      DEFAULT_URI_SAFE_ATTRIBUTES,\n      { transform: transformCaseFunc, base: DEFAULT_URI_SAFE_ATTRIBUTES }\n    );\n    DATA_URI_TAGS = _resolveSetOption(\n      cfg,\n      'ADD_DATA_URI_TAGS',\n      DEFAULT_DATA_URI_TAGS,\n      { transform: transformCaseFunc, base: DEFAULT_DATA_URI_TAGS }\n    );\n    FORBID_CONTENTS = _resolveSetOption(\n      cfg,\n      'FORBID_CONTENTS',\n      DEFAULT_FORBID_CONTENTS,\n      { transform: transformCaseFunc }\n    );\n    FORBID_TAGS = _resolveSetOption(cfg, 'FORBID_TAGS', clone({}), {\n      transform: transformCaseFunc,\n    });\n    FORBID_ATTR = _resolveSetOption(cfg, 'FORBID_ATTR', clone({}), {\n      transform: transformCaseFunc,\n    });\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES && typeof cfg.USE_PROFILES === 'object'\n        ? clone(cfg.USE_PROFILES)\n        : cfg.USE_PROFILES\n      : false;\n\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = isRegex(cfg.ALLOWED_URI_REGEXP)\n      ? cfg.ALLOWED_URI_REGEXP\n      : EXPRESSIONS.IS_ALLOWED_URI; // Default regexp\n\n    NAMESPACE =\n      typeof cfg.NAMESPACE === 'string' ? cfg.NAMESPACE : HTML_NAMESPACE; // Default HTML namespace\n\n    MATHML_TEXT_INTEGRATION_POINTS =\n      objectHasOwnProperty(cfg, 'MATHML_TEXT_INTEGRATION_POINTS') &&\n      cfg.MATHML_TEXT_INTEGRATION_POINTS &&\n      typeof cfg.MATHML_TEXT_INTEGRATION_POINTS === 'object'\n        ? clone(cfg.MATHML_TEXT_INTEGRATION_POINTS)\n        : addToSet({}, DEFAULT_MATHML_TEXT_INTEGRATION_POINTS); // Default built-in map\n\n    HTML_INTEGRATION_POINTS =\n      objectHasOwnProperty(cfg, 'HTML_INTEGRATION_POINTS') &&\n      cfg.HTML_INTEGRATION_POINTS &&\n      typeof cfg.HTML_INTEGRATION_POINTS === 'object'\n        ? clone(cfg.HTML_INTEGRATION_POINTS)\n        : addToSet({}, DEFAULT_HTML_INTEGRATION_POINTS); // Default built-in map\n\n    const customElementHandling =\n      objectHasOwnProperty(cfg, 'CUSTOM_ELEMENT_HANDLING') &&\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING === 'object'\n        ? clone(cfg.CUSTOM_ELEMENT_HANDLING)\n        : create(null);\n\n    CUSTOM_ELEMENT_HANDLING = create(null);\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'tagNameCheck') &&\n      isRegexOrFunction(customElementHandling.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck = customElementHandling.tagNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(customElementHandling, 'attributeNameCheck') &&\n      isRegexOrFunction(customElementHandling.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        customElementHandling.attributeNameCheck; // Default undefined\n    }\n\n    if (\n      objectHasOwnProperty(\n        customElementHandling,\n        'allowCustomizedBuiltInElements'\n      ) &&\n      typeof customElementHandling.allowCustomizedBuiltInElements === 'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        customElementHandling.allowCustomizedBuiltInElements; // Default undefined\n    }\n\n    seal(CUSTOM_ELEMENT_HANDLING);\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = create(null);\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Always reset function-based ADD_TAGS / ADD_ATTR checks to prevent\n     * leaking across calls when switching from function to array config */\n    EXTRA_ELEMENT_HANDLING.tagCheck = null;\n    EXTRA_ELEMENT_HANDLING.attributeCheck = null;\n\n    /* Merge configuration parameters */\n    if (objectHasOwnProperty(cfg, 'ADD_TAGS')) {\n      if (typeof cfg.ADD_TAGS === 'function') {\n        EXTRA_ELEMENT_HANDLING.tagCheck = cfg.ADD_TAGS;\n      } else if (arrayIsArray(cfg.ADD_TAGS)) {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n    }\n\n    if (objectHasOwnProperty(cfg, 'ADD_ATTR')) {\n      if (typeof cfg.ADD_ATTR === 'function') {\n        EXTRA_ELEMENT_HANDLING.attributeCheck = cfg.ADD_ATTR;\n      } else if (arrayIsArray(cfg.ADD_ATTR)) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n    }\n\n    if (\n      objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR') &&\n      arrayIsArray(cfg.ADD_URI_SAFE_ATTR)\n    ) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (\n      objectHasOwnProperty(cfg, 'FORBID_CONTENTS') &&\n      arrayIsArray(cfg.FORBID_CONTENTS)\n    ) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    if (\n      objectHasOwnProperty(cfg, 'ADD_FORBID_CONTENTS') &&\n      arrayIsArray(cfg.ADD_FORBID_CONTENTS)\n    ) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.ADD_FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    // Re-derive the active Trusted Types policy from this configuration on\n    // every parse. The active policy must never be sticky closure state that\n    // outlives the config that set it: a caller-supplied policy left in place\n    // after `clearConfig()` — or after a later call that supplied none, or\n    // `TRUSTED_TYPES_POLICY: null` — could sign a subsequent \"default\"\n    // `RETURN_TRUSTED_TYPE` result with a foreign, possibly unsafe policy.\n    // See GHSA-vxr8-fq34-vvx9.\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // A caller-supplied policy applies to this configuration only.\n      const previousTrustedTypesPolicy = trustedTypesPolicy;\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`. If the supplied policy's\n      // `createHTML` is circular (i.e. it calls `DOMPurify.sanitize`), this\n      // throws via the re-entrancy guard. Restore the previous policy first so\n      // the instance is not left in a poisoned state. See #1422.\n      try {\n        emptyHTML = _createTrustedHTML('');\n      } catch (error) {\n        trustedTypesPolicy = previousTrustedTypesPolicy;\n        throw error;\n      }\n    } else if (cfg.TRUSTED_TYPES_POLICY === null) {\n      // Explicit opt-out for this call: perform no Trusted Types signing and\n      // create nothing (so a strict `trusted-types` CSP that disallows a\n      // `dompurify` policy can still call `sanitize` from inside its own\n      // policy — see #1422). Resetting to `undefined` rather than a sticky\n      // `null` also drops any previously retained caller policy, so it cannot\n      // resurface on a later call, while still allowing the next config-less\n      // call to restore the internal default policy. See GHSA-vxr8-fq34-vvx9.\n      trustedTypesPolicy = undefined;\n      emptyHTML = '';\n    } else {\n      // No policy supplied: keep the currently active policy if one is set — a\n      // previously supplied policy is intentionally sticky across config-less\n      // calls — otherwise fall back to the instance's own internal policy,\n      // created at most once. (A policy supplied for a *single* call still\n      // lingers by design; what must not linger is a policy whose configuration\n      // has been torn down via `clearConfig()`, which restores the default.)\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _getDefaultTrustedTypesPolicy();\n      }\n\n      // Sign internal variables only when a policy is active. A falsy policy\n      // (Trusted Types unsupported, creation failed, or an explicit opt-out)\n      // leaves `emptyHTML` as a plain string, so we never call `.createHTML` on\n      // a non-policy and throw. See #1422.\n      if (trustedTypesPolicy && typeof emptyHTML === 'string') {\n        emptyHTML = _createTrustedHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * Namespace rules for an element in the SVG namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkSvgNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to SVG\n    // is via <svg>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'svg';\n    }\n\n    // The only way to switch from MathML to SVG is via <svg>\n    // if the parent is either <annotation-xml> or a MathML\n    // text integration point.\n    if (parent.namespaceURI === MATHML_NAMESPACE) {\n      return (\n        tagName === 'svg' &&\n        (parentTagName === 'annotation-xml' ||\n          MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n      );\n    }\n\n    // We only allow elements that are defined in SVG\n    // spec. All others are disallowed in SVG namespace.\n    return Boolean(ALL_SVG_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the MathML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkMathMlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from HTML namespace to MathML\n    // is via <math>. If it happens via any other tag, then\n    // it should be killed.\n    if (parent.namespaceURI === HTML_NAMESPACE) {\n      return tagName === 'math';\n    }\n\n    // The only way to switch from SVG to MathML is via\n    // <math> and HTML integration points\n    if (parent.namespaceURI === SVG_NAMESPACE) {\n      return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n    }\n\n    // We only allow elements that are defined in MathML\n    // spec. All others are disallowed in MathML namespace.\n    return Boolean(ALL_MATHML_TAGS[tagName]);\n  };\n\n  /**\n   * Namespace rules for an element in the HTML namespace.\n   *\n   * @param tagName the element's lowercase tag name\n   * @param parent the (possibly simulated) parent node\n   * @param parentTagName the parent's lowercase tag name\n   * @returns true if a spec-compliant parser could produce this element\n   */\n  const _checkHtmlNamespace = function (\n    tagName: string,\n    parent: { namespaceURI?: string },\n    parentTagName: string\n  ): boolean {\n    // The only way to switch from SVG to HTML is via\n    // HTML integration points, and from MathML to HTML\n    // is via MathML text integration points\n    if (\n      parent.namespaceURI === SVG_NAMESPACE &&\n      !HTML_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    if (\n      parent.namespaceURI === MATHML_NAMESPACE &&\n      !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n    ) {\n      return false;\n    }\n\n    // We disallow tags that are specific for MathML\n    // or SVG and should never appear in HTML namespace\n    return (\n      !ALL_MATHML_TAGS[tagName] &&\n      (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n    );\n  };\n\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element: Element): boolean {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      return _checkSvgNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      return _checkMathMlNamespace(tagName, parent, parentTagName);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      return _checkHtmlNamespace(tagName, parent, parentTagName);\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function (node: Node): void {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      /* The normal detach failed — this is reached for a parentless node\n         (getParentNode() is null, so .removeChild throws). Element.prototype\n         .remove() is itself a spec no-op on a parentless node, so a recorded\n         \"removal\" would otherwise hand the caller back an intact,\n         payload-bearing node (e.g. a detached IN_PLACE root the mXSS canary or\n         the style-with-element-child rule decided to kill). Fail closed by\n         throwing — exactly as a clobbered root does at the IN_PLACE entry —\n         rather than trying to \"neutralize\" the node via its own methods.\n         Neutralizing would mean calling getAttributeNames()/removeAttribute()\n         on the node, both of which a <form> root can clobber via a named child\n         (and _isClobbered does not even probe getAttributeNames), so the\n         neutralize step could itself be silently defeated, leaving the payload\n         intact. A throw touches only the cached, clobber-safe remove() and\n         getParentNode(). Generalizes GHSA-r47g-fvhr-h676 (clobbered-form root)\n         to every root-kill reason. REPORT-3.\n\n         This lives inside the catch, so it never fires for a normally-removed\n         in-tree node: those have a parent, removeChild() succeeds, and the\n         catch is not entered. Only a kept (parentless) root reaches here. */\n      remove(node);\n\n      if (!getParentNode(node)) {\n        throw typeErrorCreate(\n          'a node selected for removal could not be detached from its tree ' +\n            'and cannot be safely returned; refusing to sanitize in place'\n        );\n      }\n    }\n  };\n\n  /**\n   * _neutralizeRoot\n   *\n   * Fail-closed teardown of an in-place root after the sanitize walk aborts\n   * (campaign-3 F2). An internal throw mid-walk — e.g. a page-registered\n   * custom element's reaction detaches a node so `_forceRemove`'s deliberate\n   * parentless guard throws, or any other re-entrant engine mutation — would\n   * otherwise leave the caller's *live* tree half-sanitized, with everything\n   * after the abort point still carrying its handlers. There is no safe way\n   * to resume the walk (the tree mutated under us), so we strip the root bare:\n   * remove every child and every attribute, then let the caller's catch see\n   * the original error. Clobber-safe (cached `remove`/`childNodes`/`attributes`\n   * getters; the root was already clobber-pre-flighted at the IN_PLACE entry).\n   *\n   * @param root the in-place root to empty\n   */\n  const _neutralizeRoot = function (root: Node): void {\n    const childNodes = getChildNodes(root);\n    if (childNodes) {\n      const snapshot: Node[] = [];\n      arrayForEach(childNodes, (child) => {\n        arrayPush(snapshot, child);\n      });\n      arrayForEach(snapshot, (child) => {\n        try {\n          remove(child);\n        } catch (_) {\n          /* Best-effort teardown; a still-attached child is handled below */\n        }\n      });\n    }\n\n    const attributes = getAttributes(root);\n    if (attributes) {\n      for (let i = attributes.length - 1; i >= 0; --i) {\n        const attribute = attributes[i];\n        const name = attribute && attribute.name;\n        if (typeof name === 'string') {\n          try {\n            (root as Element).removeAttribute(name);\n          } catch (_) {\n            /* Clobbered removeAttribute — ignore (fail-closed best effort) */\n          }\n        }\n      }\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function (name: string, element: Element): void {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element,\n      });\n    }\n\n    element.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _stripDisallowedAttributes\n   *\n   * Removes every attribute the active configuration does not allow from a\n   * single element, using the same allowlist as the main attribute pass (so\n   * `on*` handlers go, but no `/^on/` blocklist is introduced). Used only to\n   * neutralise nodes that are being discarded from an in-place tree.\n   *\n   * @param element the element to strip\n   */\n  const _stripDisallowedAttributes = function (element: Element): void {\n    const attributes = getAttributes(element);\n    if (!attributes) {\n      return;\n    }\n\n    for (let i = attributes.length - 1; i >= 0; --i) {\n      const attribute = attributes[i];\n      const name = attribute && attribute.name;\n      if (typeof name !== 'string' || ALLOWED_ATTR[transformCaseFunc(name)]) {\n        continue;\n      }\n\n      try {\n        element.removeAttribute(name);\n      } catch (_) {\n        /* Clobbered removeAttribute on a doomed node — ignore */\n      }\n    }\n  };\n\n  /**\n   * _neutralizeSubtree\n   *\n   * Completes the audit-5 F1 fix across every removal path. The KEEP_CONTENT\n   * move-hoist neutralises only disallowed-tag removals; clobber, mXSS-canary,\n   * namespace, comment, processing-instruction and KEEP_CONTENT:false removals\n   * all drop their subtree wholesale via `_forceRemove`. On the IN_PLACE path\n   * those dropped nodes are detached from the caller's LIVE tree but a\n   * handler-bearing original among them (an `<img onerror>`/`<video>` that was\n   * loading) keeps its queued resource event, which fires in page scope after\n   * sanitize returns. This walks a removed subtree and strips every attribute\n   * the active configuration does not allow — so `on*` handlers are cancelled\n   * through the SAME allowlist that governs kept nodes, not a separate `/^on/`\n   * blocklist. Run synchronously before sanitize returns, i.e. before any\n   * queued event can fire. Hook-free by design: these nodes leave the output,\n   * so firing attribute hooks for them would be surprising. Clobber-safe reads;\n   * a doomed clobbered node may shadow `removeAttribute` (its own attributes are\n   * irrelevant — it is discarded — while its non-clobbered descendants, e.g.\n   * the `<img>`, are reached and scrubbed).\n   *\n   * @param root the root of a removed subtree to neutralise\n   */\n  const _neutralizeSubtree = function (root: Node): void {\n    const stack: Node[] = [root];\n\n    while (stack.length > 0) {\n      const node = stack.pop();\n      const nodeType = getNodeType ? getNodeType(node) : (node as any).nodeType;\n\n      if (nodeType === NODE_TYPE.element) {\n        _stripDisallowedAttributes(node as Element);\n      }\n\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push(childNodes[i]);\n        }\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty: string): Document {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy ? _createTrustedHTML(dirty) : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function (root: Node): NodeIterator {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * Replace template expression syntax (mustache, ERB, template\n   * literal) with a space; shared by all SAFE_FOR_TEMPLATES scrub\n   * sites. Order matters: mustache, then ERB, then template literal.\n   *\n   * @param value the string to scrub\n   * @returns the scrubbed string\n   */\n  const _stripTemplateExpressions = function (value: string): string {\n    value = stringReplace(value, MUSTACHE_EXPR, ' ');\n    value = stringReplace(value, ERB_EXPR, ' ');\n    value = stringReplace(value, TMPLIT_EXPR, ' ');\n    return value;\n  };\n\n  /**\n   * Strip template-engine expressions ({{...}}, ${...}, <%...%>) from the\n   * character data of an element subtree. Used as the final safety net for\n   * SAFE_FOR_TEMPLATES on every DOM-returning code path so that expressions\n   * which only form after text-node normalization (e.g. fragments split across\n   * stripped elements) cannot survive into a template-evaluating framework.\n   *\n   * Walks text/comment/CDATA/processing-instruction nodes and mutates `.data`\n   * in place rather than round-tripping through innerHTML. This preserves\n   * descendant node references (important for IN_PLACE callers), avoids a\n   * serialize/reparse cycle, and reads literal character data — which means\n   * `<%...%>` in text content matches the ERB regex against its real bytes\n   * instead of the HTML-entity-escaped form innerHTML would produce.\n   *\n   * Attribute values are not visited here; SAFE_FOR_TEMPLATES handling for\n   * attributes is performed during the per-node `_sanitizeAttributes` pass.\n   *\n   * @param node The root element whose character data should be scrubbed.\n   */\n  const _scrubTemplateExpressions = function (node: Element): void {\n    node.normalize();\n    const walker = createNodeIterator.call(\n      node.ownerDocument || node,\n      node,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_CDATA_SECTION |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION,\n      null\n    );\n\n    let currentNode = walker.nextNode() as CharacterData | null;\n    while (currentNode) {\n      currentNode.data = _stripTemplateExpressions(currentNode.data);\n      currentNode = walker.nextNode() as CharacterData | null;\n    }\n\n    // NodeIterator does not descend into <template>.content per the DOM spec,\n    // so we must explicitly recurse into each template's content fragment,\n    // mirroring the approach used by _sanitizeShadowDOM.\n    const templates = node.querySelectorAll?.('template');\n    if (templates) {\n      arrayForEach(templates, (tmpl: HTMLTemplateElement) => {\n        if (_isDocumentFragment(tmpl.content)) {\n          _scrubTemplateExpressions(tmpl.content as unknown as Element);\n        }\n      });\n    }\n  };\n\n  /**\n   * _isClobbered\n   *\n   * Detect DOM-clobbering on HTMLFormElement nodes. Form is the only HTML\n   * interface with [LegacyOverrideBuiltIns]; a descendant element with a\n   * `name` attribute matching a prototype property shadows that property\n   * on direct reads. We use this check at the IN_PLACE entry-point and\n   * during attribute sanitization to refuse clobbered forms.\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function (element: Element): boolean {\n    // Realm-independent tag-name probe. If we can't determine the tag\n    // name at all, we can't reason about clobbering — return false\n    // (the caller's other defences still apply).\n    const realTagName = getNodeName ? getNodeName(element) : null;\n    if (typeof realTagName !== 'string') {\n      return false;\n    }\n\n    if (transformCaseFunc(realTagName) !== 'form') {\n      return false;\n    }\n\n    return (\n      typeof element.nodeName !== 'string' ||\n      typeof element.textContent !== 'string' ||\n      typeof element.removeChild !== 'function' ||\n      // Realm-safe NamedNodeMap detection: equality against the cached\n      // prototype getter. Clobbered .attributes (e.g. <input name=\"attributes\">)\n      // makes the direct read diverge from the cached read; a clean form\n      // (same-realm OR foreign-realm) has both reads pointing at the same\n      // canonical NamedNodeMap.\n      element.attributes !== getAttributes(element) ||\n      typeof element.removeAttribute !== 'function' ||\n      typeof element.setAttribute !== 'function' ||\n      typeof element.namespaceURI !== 'string' ||\n      typeof element.insertBefore !== 'function' ||\n      typeof element.hasChildNodes !== 'function' ||\n      // NodeType clobbering probe. Cached Node.prototype.nodeType getter\n      // returns the integer 1 for any Element regardless of realm; direct\n      // read on a clobbered form (e.g. <input name=\"nodeType\">) returns\n      // the named child element. Cheap addition — nodeType is read from\n      // an internal slot, no serialization cost — and removes a residual\n      // clobbering surface used by several mXSS / PI / comment branches\n      // in _sanitizeElements that compare currentNode.nodeType directly.\n      element.nodeType !== getNodeType(element) ||\n      // HTMLFormElement has [LegacyOverrideBuiltIns]: a descendant named\n      // \"childNodes\" shadows the prototype getter. Direct reads of\n      // form.childNodes from a clobbered form return the named child\n      // instead of the real NodeList, so any walk that reads it directly\n      // skips the form's real children. Compare the direct read to the\n      // cached Node.prototype getter — when the form's named-property\n      // getter intercepts the read, the two values differ and we flag\n      // the form. This catches every clobbering child type (input,\n      // select, etc.) regardless of whether the named child happens to\n      // carry a numeric .length, which a typeof-based probe would miss\n      // (e.g. HTMLSelectElement.length is a defined unsigned-long).\n      element.childNodes !== getChildNodes(element)\n    );\n  };\n\n  /**\n   * Checks whether the given value is a DocumentFragment from any realm.\n   *\n   * The realm-independent replacement reads `nodeType` through the cached\n   * Node.prototype getter and compares to the DOCUMENT_FRAGMENT_NODE\n   * constant (11). nodeType is a numeric value resolved from the node's\n   * internal slot, identical across realms for the same kind of node.\n   *\n   * @param value object to check\n   * @return true if value is a DocumentFragment-shaped node from any realm\n   */\n  const _isDocumentFragment = function (value: unknown): boolean {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return getNodeType(value as Node) === NODE_TYPE.documentFragment;\n    } catch (_) {\n      return false;\n    }\n  };\n\n  /**\n   * Checks whether the given object is a DOM node, including nodes that\n   * originate from a different window/realm (e.g. an iframe's\n   * contentDocument). The previous `value instanceof Node` check was\n   * realm-bound: nodes from a different window failed it, causing\n   * sanitize() to silently stringify them and reset IN_PLACE to false,\n   * returning the original node unsanitized. See GHSA-4w3q-35jp-p934.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true if value is a DOM node from any realm\n   */\n  const _isNode = function (value: unknown): value is Node {\n    if (!getNodeType || typeof value !== 'object' || value === null) {\n      return false;\n    }\n\n    try {\n      return typeof getNodeType(value) === 'number';\n    } catch (_) {\n      return false;\n    }\n  };\n\n  function _executeHooks<T extends HookFunction>(\n    hooks: HookFunction[],\n    currentNode: Parameters<T>[0],\n    data: Parameters<T>[1]\n  ): void {\n    if (hooks.length === 0) {\n      return;\n    }\n\n    arrayForEach(hooks, (hook: T) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n\n  /**\n   * Structural-threat checks that condemn a node regardless of the\n   * allowlists: mXSS via namespace confusion, risky CSS construction,\n   * processing instructions, markup-bearing comments. Pure predicate;\n   * the caller removes. Check order is load-bearing.\n   *\n   * @param currentNode the node to inspect\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node must be removed\n   */\n  const _isUnsafeNode = function (currentNode: any, tagName: string): boolean {\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.textContent) &&\n      regExpTest(EXPRESSIONS.ELEMENT_MARKUP_PROBE, currentNode.innerHTML)\n    ) {\n      return true;\n    }\n\n    /* Remove risky CSS construction leading to mXSS */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.namespaceURI === HTML_NAMESPACE &&\n      tagName === 'style' &&\n      _isNode(currentNode.firstElementChild)\n    ) {\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.processingInstruction) {\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(EXPRESSIONS.COMMENT_MARKUP_PROBE, currentNode.data)\n    ) {\n      return true;\n    }\n\n    return false;\n  };\n\n  /**\n   * Handle a node whose tag is forbidden or not allowlisted: keep\n   * allowed custom elements (false return exits _sanitizeElements\n   * early - namespace/fallback checks and the afterSanitizeElements\n   * hook are intentionally skipped for kept custom elements), else\n   * hoist content per KEEP_CONTENT and remove.\n   *\n   * @param currentNode the disallowed node\n   * @param tagName the node's transformCaseFunc'd tag name\n   * @return true if the node was removed, false if kept\n   */\n  const _sanitizeDisallowedNode = function (\n    currentNode: any,\n    tagName: string\n  ): boolean {\n    /* Check if we have a custom element to handle */\n    if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n      if (\n        CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n        regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n      ) {\n        return false;\n      }\n\n      if (\n        CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n        CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n      ) {\n        return false;\n      }\n    }\n\n    /* Keep content except for bad-listed elements.\n         Use the cached prototype getters exclusively — the previous code\n         had `|| currentNode.parentNode` / `|| currentNode.childNodes`\n         fallbacks, but the cached getters always return the canonical\n         value (or null for a real parent-less node), so the fallback\n         path was dead in safe cases and a clobbering surface in unsafe\n         ones. Falsy cached results stay falsy; the `if (childNodes &&\n         parentNode)` check already gates correctly. */\n    if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n      const parentNode = getParentNode(currentNode);\n      const childNodes = getChildNodes(currentNode);\n\n      if (childNodes && parentNode) {\n        const childCount = childNodes.length;\n\n        /* In-place: hoist the *original* children so the iterator visits\n             and sanitises them through the same allowlist pass as every other\n             node. The caller built the tree in the live document, so the\n             originals carry already-queued resource events (`<img onerror>`,\n             `<video>`/`<audio>` error, lazy/`onload`, …); cloning would leave\n             those originals detached but still armed, firing in page scope\n             while the returned tree looked clean. Moving is safe in-place: the\n             root is pre-validated as an allowed tag and so is never the node\n             being removed, which keeps `parentNode` inside the iterator root\n             and the relocated child inside the serialised tree.\n\n             Otherwise (string / DOM-copy paths): clone. The iterator is rooted\n             at — and the result serialised from — `body`, so a restrictive\n             ALLOWED_TAGS that removes `body` itself must leave its content in\n             place, which only cloning does; and those paths parse into an\n             inert document, so their discarded originals never had a queued\n             event to neutralise.\n\n             `childNodes` is live; a tail-to-head walk keeps `childNodes[i]`\n             valid whether we move (drops the trailing entry) or clone (leaves\n             the list intact). */\n        for (let i = childCount - 1; i >= 0; --i) {\n          const hoisted = IN_PLACE\n            ? childNodes[i]\n            : cloneNode(childNodes[i], true);\n          parentNode.insertBefore(hoisted, getNextSibling(currentNode));\n        }\n      }\n    }\n\n    _forceRemove(currentNode);\n    return true;\n  };\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode: any): boolean {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(\n      getNodeName ? getNodeName(currentNode) : currentNode.nodeName\n    );\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Remove mXSS vectors, processing instructions and risky comments */\n    if (_isUnsafeNode(currentNode, tagName)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (\n      FORBID_TAGS[tagName] ||\n      (!(\n        EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.tagCheck(tagName)\n      ) &&\n        !ALLOWED_TAGS[tagName])\n    ) {\n      return _sanitizeDisallowedNode(currentNode, tagName);\n    }\n\n    /* Check whether element has a valid namespace.\n       Realm-safe check (GHSA-hpcv-96wg-7vj8): use the cached Node.prototype\n       nodeType getter rather than `instanceof Element`, which is realm-\n       bound and short-circuits to false for any node minted in a different\n       realm — letting a foreign-realm element with a forbidden namespace\n       slip past the namespace check entirely. */\n    const nt = getNodeType ? getNodeType(currentNode) : currentNode.nodeType;\n    if (nt === NODE_TYPE.element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(EXPRESSIONS.FALLBACK_TAG_CLOSE, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      const content = _stripTemplateExpressions(currentNode.textContent);\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (\n    lcTag: string,\n    lcName: string,\n    value: string\n  ): boolean {\n    /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it */\n    if (FORBID_ATTR[lcName]) {\n      return false;\n    }\n\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    const nameIsPermitted =\n      ALLOWED_ATTR[lcName] ||\n      (EXTRA_ELEMENT_HANDLING.attributeCheck instanceof Function &&\n        EXTRA_ELEMENT_HANDLING.attributeCheck(lcName, lcTag));\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (ALLOW_DATA_ATTR && regExpTest(DATA_ATTR, lcName)) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!nameIsPermitted) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_isBasicCustomElement(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName, lcTag)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n    } else if (value) {\n      return false;\n    } else {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    }\n\n    return true;\n  };\n\n  /* Names the HTML spec reserves from valid-custom-element-name; these must\n   * never be treated as basic custom elements even when a permissive\n   * CUSTOM_ELEMENT_HANDLING.tagNameCheck is configured. */\n  const RESERVED_CUSTOM_ELEMENT_NAMES = addToSet({}, [\n    'annotation-xml',\n    'color-profile',\n    'font-face',\n    'font-face-format',\n    'font-face-name',\n    'font-face-src',\n    'font-face-uri',\n    'missing-glyph',\n  ]);\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName: string): boolean {\n    return (\n      !RESERVED_CUSTOM_ELEMENT_NAMES[stringToLowerCase(tagName)] &&\n      regExpTest(CUSTOM_ELEMENT, tagName)\n    );\n  };\n\n  /**\n   * Wrap an attribute value in the matching Trusted Types object when\n   * the active policy requires it. Namespaced attributes pass through\n   * unchanged (no TT support yet, see\n   * https://bugs.chromium.org/p/chromium/issues/detail?id=1305293).\n   *\n   * @param lcTag lowercase tag name of the containing element\n   * @param lcName lowercase attribute name\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the attribute value to wrap\n   * @return the value, wrapped when Trusted Types demand it\n   */\n  const _applyTrustedTypesToAttribute = function (\n    lcTag: string,\n    lcName: string,\n    namespaceURI: string | null,\n    value: string\n  ): string {\n    if (\n      trustedTypesPolicy &&\n      typeof trustedTypes === 'object' &&\n      typeof trustedTypes.getAttributeType === 'function' &&\n      !namespaceURI\n    ) {\n      switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n        case 'TrustedHTML': {\n          return _createTrustedHTML(value);\n        }\n\n        case 'TrustedScriptURL': {\n          return _createTrustedScriptURL(value);\n        }\n\n        default: {\n          break;\n        }\n      }\n    }\n\n    return value;\n  };\n\n  /**\n   * Write a modified attribute value back onto the element. On\n   * success, re-probe for clobbering introduced by the new value and\n   * remove the element when found; otherwise pop the removal entry\n   * recorded by the earlier _removeAttribute (long-standing pairing\n   * with the SANITIZE_NAMED_PROPS path - do not \"fix\" casually). On\n   * failure, remove the attribute instead.\n   *\n   * @param currentNode the element carrying the attribute\n   * @param name the attribute name as present on the element\n   * @param namespaceURI the attribute's namespace, if any\n   * @param value the new attribute value\n   */\n  const _setAttributeValue = function (\n    currentNode: Element,\n    name: string,\n    namespaceURI: string | null,\n    value: string\n  ): void {\n    try {\n      if (namespaceURI) {\n        currentNode.setAttributeNS(namespaceURI, name, value);\n      } else {\n        /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n        currentNode.setAttribute(name, value);\n      }\n\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n      } else {\n        arrayPop(DOMPurify.removed);\n      }\n    } catch (_) {\n      _removeAttribute(name, currentNode);\n    }\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode: Element): void {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined,\n    };\n    let l = attributes.length;\n    const lcTag = transformCaseFunc(currentNode.nodeName);\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (\n        SANITIZE_NAMED_PROPS &&\n        (lcName === 'id' || lcName === 'name') &&\n        stringIndexOf(value, SANITIZE_NAMED_PROPS_PREFIX) !== 0\n      ) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n      // Else: already prefixed, leave the attribute alone — the prefix is\n      // itself the clobbering protection, and re-applying it is incorrect.\n\n      /* Work around a security issue with comments inside attributes */\n      if (\n        SAFE_FOR_XML &&\n        regExpTest(\n          /((--!?|])>)|<\\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,\n          value\n        )\n      ) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Make sure we cannot easily use animated hrefs, even if animations are allowed */\n      if (lcName === 'attributename' && stringMatch(value, 'href')) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Did the hooks force-keep the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (\n        !ALLOW_SELF_CLOSE_IN_ATTR &&\n        regExpTest(EXPRESSIONS.SELF_CLOSING_TAG, value)\n      ) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        value = _stripTemplateExpressions(value);\n      }\n\n      /* Is `value` valid for this attribute? */\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      value = _applyTrustedTypesToAttribute(lcTag, lcName, namespaceURI, value);\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        _setAttributeValue(currentNode, name, namespaceURI, value);\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): use nodeType against the\n         DOCUMENT_FRAGMENT_NODE constant rather than instanceof, so we\n         recurse into <template>.content from foreign realms too. */\n      if (_isDocumentFragment(shadowNode.content)) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n\n      /* An element iterated here may itself host an attached\n         shadow root. The default NodeIterator does not enter shadow\n         trees, so a shadow root nested inside template.content was\n         previously reached by no walk at all (the pre-pass at\n         _sanitizeAttachedShadowRoots descends via childNodes, which\n         doesn't enter template.content; the template-content recursion\n         above iterates the content but never inspected shadowRoot).\n         Walk it explicitly. The nodeType guard avoids reading\n         shadowRoot off text / comment / CDATA / PI nodes that the\n         iterator also surfaces. */\n      const shadowNodeType = getNodeType\n        ? getNodeType(shadowNode)\n        : shadowNode.nodeType;\n      if (shadowNodeType === NODE_TYPE.element) {\n        const innerSr = getShadowRoot(shadowNode);\n        if (_isDocumentFragment(innerSr)) {\n          _sanitizeAttachedShadowRoots(innerSr);\n          _sanitizeShadowDOM(innerSr);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n\n  /**\n   * _sanitizeAttachedShadowRoots\n   *\n   * Walks `root` and feeds every attached shadow root we encounter into\n   * the existing _sanitizeShadowDOM pipeline. The default node iterator\n   * does not descend into shadow trees, so nodes inside an attached\n   * shadow root would otherwise be skipped entirely.\n   *\n   * Two real input paths put attached shadow roots in front of us:\n   *   1. IN_PLACE on a DOM node that already has shadow roots attached.\n   *   2. DOM-node input where importNode(dirty, true) deep-clones the\n   *      shadow root because it was created with `clonable: true`.\n   *\n   * This pass runs once, up front, so the main iteration loop (and the\n   * existing _sanitizeShadowDOM template-content recursion) stay\n   * untouched — string-input paths are not affected.\n   *\n   * @param root the subtree root to walk for attached shadow roots\n   */\n  const _sanitizeAttachedShadowRoots = function (root: Node): void {\n    /* Iterative (explicit stack) rather than per-child recursion. DOM APIs\n       impose no depth cap, so an attacker-shaped tree (JSON/CRDT/editor data\n       built straight into the DOM — the IN_PLACE surface) deeper than the JS\n       call-stack budget would otherwise overflow native recursion here and\n       throw at the IN_PLACE entry pre-pass, before a single node is\n       sanitized, leaving the caller's live tree untouched (fail-open). See\n       campaign-3 F4. A heap stack keeps depth off the call stack.\n\n       Each work item is either a node to descend into, or a deferred\n       `_sanitizeShadowDOM` for an already-walked shadow root. The deferred\n       form preserves the original post-order discipline: a shadow root's\n       nested shadow roots are discovered before the outer shadow is\n       sanitized (which may remove hosts). Pushes are in reverse of the\n       desired processing order (LIFO): template content, then children, then\n       the shadow-sanitize, then the shadow walk — so the order matches the\n       previous recursion exactly. */\n    const stack: Array<{ node: Node | null; shadow: DocumentFragment | null }> =\n      [{ node: root, shadow: null }];\n\n    while (stack.length > 0) {\n      const item = stack.pop();\n\n      /* Deferred shadow-DOM sanitisation: runs after its subtree was walked. */\n      if (item.shadow) {\n        _sanitizeShadowDOM(item.shadow);\n        continue;\n      }\n\n      const node = item.node;\n      const nodeType = getNodeType ? getNodeType(node) : (node as any).nodeType;\n      const isElement = nodeType === NODE_TYPE.element;\n\n      /* (pushed last → processed first) Children, snapshotted in reverse so\n         the first child is processed first. Snapshotting matters because a\n         hook may detach siblings mid-walk. */\n      const childNodes = getChildNodes(node);\n      if (childNodes) {\n        for (let i = childNodes.length - 1; i >= 0; --i) {\n          stack.push({ node: childNodes[i], shadow: null });\n        }\n      }\n\n      /* (pushed before children → processed after them, matching the old\n         \"template content last\" order) When the node is a <template>,\n         descend into its content. */\n      if (isElement) {\n        const rootName = getNodeName ? getNodeName(node) : null;\n        if (\n          typeof rootName === 'string' &&\n          transformCaseFunc(rootName) === 'template'\n        ) {\n          const content = (node as HTMLTemplateElement).content;\n          if (_isDocumentFragment(content)) {\n            stack.push({ node: content, shadow: null });\n          }\n        }\n      }\n\n      /* Shadow root (processed first): walk its subtree, then sanitise it.\n         Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n         rather than `instanceof DocumentFragment`, which is realm-bound and\n         silently skipped foreign-realm shadow roots (e.g.\n         iframe.contentDocument attachShadow). */\n      if (isElement) {\n        const sr = getShadowRoot(node);\n        if (_isDocumentFragment(sr)) {\n          /* Push the deferred sanitise first so it pops after the shadow\n             walk we push next, i.e. nested shadow roots are discovered\n             before this one is sanitised. */\n          stack.push({ node: null, shadow: sr }, { node: sr, shadow: null });\n        }\n      }\n    }\n  };\n\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      dirty = stringifyValue(dirty);\n\n      if (typeof dirty !== 'string') {\n        throw typeErrorCreate('dirty is not a string, aborting');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (SET_CONFIG) {\n      /* Persistent setConfig() path: _parseConfig is skipped, so the sets are\n       * not re-derived per call. Restore them from the pristine bindings\n       * captured at setConfig() time so a previous call's hook clone (mutated\n       * below) does not carry over. */\n      ALLOWED_TAGS = SET_CONFIG_ALLOWED_TAGS;\n      ALLOWED_ATTR = SET_CONFIG_ALLOWED_ATTR;\n    } else {\n      _parseConfig(cfg);\n    }\n\n    /* Clone the hook-mutable allowlists before the walk whenever an\n     * uponSanitize* hook is registered. The hook event exposes ALLOWED_TAGS\n     * and ALLOWED_ATTR by reference (as allowedTags / allowedAttributes), so\n     * a hook that widens them would otherwise mutate the shared set\n     * permanently: across later calls and across every element. Cloning per\n     * walk keeps documented in-call widening working while scoping it to the\n     * call. A single guard for both config paths - the per-call path rebinds\n     * the sets in _parseConfig each call, the persistent path restores them\n     * from the captured bindings just above - so the two cannot diverge. */\n    if (\n      hooks.uponSanitizeElement.length > 0 ||\n      hooks.uponSanitizeAttribute.length > 0\n    ) {\n      ALLOWED_TAGS = clone(ALLOWED_TAGS);\n    }\n\n    if (hooks.uponSanitizeAttribute.length > 0) {\n      ALLOWED_ATTR = clone(ALLOWED_ATTR);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Resolve IN_PLACE for this call without mutating persistent config.\n       Writing the IN_PLACE closure variable here leaks under setConfig(),\n       where _parseConfig is skipped on later calls: a single string call would\n       disable in-place mode for every subsequent node call, returning a\n       sanitized copy while leaving the caller's node — which in-place callers\n       keep using and whose return value they ignore — unsanitized. REPORT-2. */\n    const inPlace = IN_PLACE && typeof dirty !== 'string' && _isNode(dirty);\n\n    if (inPlace) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes.\n         Read nodeName through the cached prototype getter — a clobbering\n         child named \"nodeName\" on the form root would otherwise shadow\n         the property and let this check skip the root-allowlist\n         validation entirely. */\n      const nn = getNodeName\n        ? getNodeName(dirty as Node)\n        : (dirty as Node).nodeName;\n      if (typeof nn === 'string') {\n        const tagName = transformCaseFunc(nn);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n\n      /* Pre-flight the root through _isClobbered. The iterator-driven\n         removal path can not detach a parent-less root: _forceRemove\n         falls through to Element.prototype.remove(), which per spec\n         is a no-op on a node with no parent. A clobbered root would\n         then survive the main loop with its attributes uninspected,\n         because _sanitizeAttributes early-returns on _isClobbered. The\n         result would be an attacker-controlled form, complete with any\n         event-handler attributes the caller passed in, handed back to\n         the application unsanitized. Refuse to sanitize such a root\n         the same way we refuse a forbidden tag. GHSA-r47g-fvhr-h676. */\n      if (_isClobbered(dirty as Element)) {\n        throw typeErrorCreate(\n          'root node is clobbered and cannot be sanitized in-place'\n        );\n      }\n\n      /* Sanitize attached shadow roots before the main iterator runs.\n         The iterator does not descend into shadow trees. Same fail-closed\n         barrier as the main walk (campaign-3 F2): a custom-element reaction\n         inside a shadow root could abort this pre-pass before the walk runs,\n         which would otherwise leave the entire live tree unsanitized. */\n      try {\n        _sanitizeAttachedShadowRoots(dirty as Node);\n      } catch (error) {\n        _neutralizeRoot(dirty as Node);\n\n        throw error;\n      }\n    } else if (_isNode(dirty)) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n\n      /* Clonable shadow roots are deep-cloned by importNode(); sanitize\n         them before the main iterator runs, since the iterator does not\n         descend into shadow trees. The walk routes every read through a\n         cached prototype getter so clobbering descendants on a form root\n         cannot hide a shadow host from this pass. */\n      _sanitizeAttachedShadowRoots(importedNode);\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? _createTrustedHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(inPlace ? dirty : body);\n\n    /* Now start iterating over the created document.\n       The walk runs inside an exception barrier (campaign-3 F2): a re-entrant\n       engine/custom-element mutation can detach a node mid-walk so\n       `_forceRemove`'s parentless guard throws, aborting the loop. Without the\n       barrier the caller's in-place tree would be left half-sanitized with the\n       unvisited tail still armed. On any throw we fail closed — strip the\n       in-place root bare — then rethrow so the existing throw contract is\n       preserved. (String/DOM-copy paths never return the partial body, so the\n       propagating throw is already fail-closed there.) */\n    try {\n      while ((currentNode = nodeIterator.nextNode())) {\n        /* Sanitize tags and elements */\n        _sanitizeElements(currentNode);\n\n        /* Check attributes next */\n        _sanitizeAttributes(currentNode);\n\n        /* Shadow DOM detected, sanitize it.\n           Realm-safe check (GHSA-hpcv-96wg-7vj8): nodeType-based detection\n           instead of instanceof, so foreign-realm <template>.content is\n           walked correctly. */\n        if (_isDocumentFragment(currentNode.content)) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n      }\n    } catch (error) {\n      if (inPlace) {\n        _neutralizeRoot(dirty as Node);\n      }\n\n      throw error;\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (inPlace) {\n      /* Fail-closed completion of the audit-5 F1 fix: every node removed from\n         the caller's live tree is detached but may still hold a queued\n         resource-event handler that fires in page scope after we return. The\n         move-hoist covers only disallowed-tag KEEP_CONTENT removals; strip the\n         non-allow-listed attributes off every other removed subtree (clobber,\n         mXSS, namespace, comments, KEEP_CONTENT:false, …) so those handlers are\n         cancelled before any event can fire. Runs synchronously, pre-return. */\n      arrayForEach(DOMPurify.removed, (entry) => {\n        if (entry.element) {\n          _neutralizeSubtree(entry.element as Node);\n        }\n      });\n\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(dirty as Element);\n      }\n\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (SAFE_FOR_TEMPLATES) {\n        _scrubTemplateExpressions(body);\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      serializedHTML = _stripTemplateExpressions(serializedHTML);\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? _createTrustedHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n    SET_CONFIG_ALLOWED_TAGS = ALLOWED_TAGS;\n    SET_CONFIG_ALLOWED_ATTR = ALLOWED_ATTR;\n  };\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n    SET_CONFIG_ALLOWED_TAGS = null;\n    SET_CONFIG_ALLOWED_ATTR = null;\n\n    // Drop any caller-supplied Trusted Types policy so it cannot poison later\n    // `RETURN_TRUSTED_TYPE` output. The internal default policy (cached, and\n    // never recreated — Trusted Types throws on duplicate names) is restored by\n    // the next `_parseConfig`. See GHSA-vxr8-fq34-vvx9.\n    trustedTypesPolicy = defaultTrustedTypesPolicy;\n    emptyHTML = '';\n  };\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  DOMPurify.addHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    /* Reject unknown entry points. Without this, a non-hook key (e.g.\n     * '__proto__') indexes off the prototype chain rather than a real\n     * hook array, and arrayPush then writes to Object.prototype. Guard\n     * with an own-property check against the known hook names. */\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  DOMPurify.removeHook = function (\n    entryPoint: keyof HooksMap,\n    hookFunction: HookFunction\n  ) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return undefined;\n    }\n\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n      return index === -1\n        ? undefined\n        : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n\n    return arrayPop(hooks[entryPoint]);\n  };\n\n  DOMPurify.removeHooks = function (entryPoint: keyof HooksMap) {\n    if (!objectHasOwnProperty(hooks, entryPoint)) {\n      return;\n    }\n\n    hooks[entryPoint] = [];\n  };\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DOMPurify from 'dompurify';\n\n// An isomorphic instance of DOMPurify.\n// We use this instead of `isomorphic-dompurify` because our angular samples\n// don't like building with jsdom as a \"dependency\" (not dev). Since this\n// package is meant to be used by all renderers, we add some code in the\n// sanitize function to initialize this the first time, looking at the\n// environment (globalThis).\nlet purify: any;\n\n/**\n * Sanitizes an HTML string.\n * @param {string} html the HTML string to sanitize.\n * @returns a sanitized HTML string.\n */\nexport function sanitize(html: string): string {\n  if (!purify) {\n    if (typeof DOMPurify.sanitize === 'function') {\n      purify = DOMPurify;\n    } else {\n      const globalWindow = (globalThis as any).window;\n      if (globalWindow) {\n        purify = DOMPurify(globalWindow);\n      } else {\n        throw new Error(\n          'DOMPurify requires a window object. If testing, provide a jsdom window as `globalThis`.',\n        );\n      }\n    }\n  }\n  return purify.sanitize(html);\n}\n","/*\n * Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {rawMarkdownRenderer} from './raw-markdown.js';\nimport {sanitize} from './sanitizer.js';\nimport type {\n  MarkdownRenderer,\n  MarkdownRendererOptions,\n  MarkdownRendererTagClassMap,\n} from '@a2ui/web_core';\n\nexport type {MarkdownRenderer, MarkdownRendererOptions, MarkdownRendererTagClassMap};\n\n/**\n * A Markdown to HTML renderer using markdown-it and dompurify.\n * @param value The markdown code to render.\n * @param options Options for the markdown renderer.\n * @returns A promise that resolves to the rendered HTML as a string.\n */\nexport async function renderMarkdown(\n  value: string,\n  options?: MarkdownRendererOptions,\n): Promise<string> {\n  const htmlString = rawMarkdownRenderer.render(value, options?.tagClassMap);\n  return sanitize(htmlString);\n}\n","import {\n  createContext,\n  useCallback,\n  useContext,\n  useSyncExternalStore,\n  type ReactNode,\n} from \"react\";\nimport { A2uiSurface, MarkdownContext } from \"@a2ui/react/v0_9\";\nimport { renderMarkdown } from \"@a2ui/markdown-it\";\nimport type {\n  A2uiClientCapabilities,\n  A2uiClientDataModel,\n  SurfaceModel,\n} from \"@a2ui/web_core/v0_9\" with { \"resolution-mode\": \"import\" };\nimport type {\n  PrometheusA2uiMessageInput,\n  PrometheusA2uiRuntime,\n} from \"../official/runtime.js\";\nimport type { PrometheusA2uiComponentImplementation } from \"../official/types.js\";\n\nconst A2uiRuntimeContext = createContext<PrometheusA2uiRuntime | null>(null);\nconst subscribeToHydration = () => () => undefined;\nconst clientSnapshot = () => true;\nconst serverSnapshot = () => false;\n\n/**\n * The official v0.9 renderer currently omits `getServerSnapshot` in an\n * internal external-store subscription. Gate it until hydration so Next.js\n * and other SSR consumers receive deterministic server markup instead of a\n * runtime exception.\n */\nfunction useA2uiClientReady(): boolean {\n  return useSyncExternalStore(subscribeToHydration, clientSnapshot, serverSnapshot);\n}\n\nexport interface PrometheusA2uiProviderProps {\n  /** Runtime ownership stays with the application so lifecycle is explicit. */\n  runtime: PrometheusA2uiRuntime;\n  children: ReactNode;\n}\n\nexport function PrometheusA2uiProvider({\n  runtime,\n  children,\n}: PrometheusA2uiProviderProps) {\n  return (\n    <A2uiRuntimeContext.Provider value={runtime}>\n      <MarkdownContext.Provider value={renderMarkdown}>\n        {children}\n      </MarkdownContext.Provider>\n    </A2uiRuntimeContext.Provider>\n  );\n}\n\n/** Read the nearest official A2UI runtime. */\nexport function usePrometheusA2uiRuntime(): PrometheusA2uiRuntime {\n  const runtime = useContext(A2uiRuntimeContext);\n  if (!runtime) {\n    throw new Error(\"usePrometheusA2uiRuntime must be used inside PrometheusA2uiProvider.\");\n  }\n  return runtime;\n}\n\n/** Subscribe to the official processor's surface collection. */\nexport function usePrometheusA2uiSurfaces(): readonly SurfaceModel<PrometheusA2uiComponentImplementation>[] {\n  const runtime = usePrometheusA2uiRuntime();\n  return useSyncExternalStore(runtime.subscribe, runtime.getSurfaces, runtime.getSurfaces);\n}\n\nexport interface UsePrometheusA2uiResult {\n  runtime: PrometheusA2uiRuntime;\n  surfaces: readonly SurfaceModel<PrometheusA2uiComponentImplementation>[];\n  processMessages(input: PrometheusA2uiMessageInput): void;\n  getClientCapabilities(options?: { includeInlineCatalogs?: boolean }): A2uiClientCapabilities;\n  getClientDataModel(): A2uiClientDataModel | undefined;\n}\n\n/** Orchestrate official message ingestion and surface reads from React. */\nexport function usePrometheusA2ui(): UsePrometheusA2uiResult {\n  const runtime = usePrometheusA2uiRuntime();\n  const surfaces = usePrometheusA2uiSurfaces();\n  const processMessages = useCallback(\n    (input: PrometheusA2uiMessageInput) => runtime.processMessages(input),\n    [runtime],\n  );\n  const getClientCapabilities = useCallback(\n    (options?: { includeInlineCatalogs?: boolean }) =>\n      runtime.getClientCapabilities(options),\n    [runtime],\n  );\n  const getClientDataModel = useCallback(\n    () => runtime.getClientDataModel(),\n    [runtime],\n  );\n\n  return {\n    runtime,\n    surfaces,\n    processMessages,\n    getClientCapabilities,\n    getClientDataModel,\n  };\n}\n\nexport interface PrometheusA2uiSurfaceProps {\n  surfaceId: string;\n  fallback?: ReactNode;\n  className?: string;\n}\n\n/** Render one official catalog-backed A2UI surface. */\nexport function PrometheusA2uiSurface({\n  surfaceId,\n  fallback = null,\n  className,\n}: PrometheusA2uiSurfaceProps) {\n  const runtime = usePrometheusA2uiRuntime();\n  const surfaces = usePrometheusA2uiSurfaces();\n  const clientReady = useA2uiClientReady();\n  const surface = surfaces.find((candidate) => candidate.id === surfaceId)\n    ?? runtime.getSurface(surfaceId);\n\n  if (!surface) return <>{fallback}</>;\n  return (\n    <div\n      className={className}\n      data-prometheus-a2ui-client-ready={clientReady ? \"true\" : \"false\"}\n      data-prometheus-a2ui-surface={surface.id}\n    >\n      {clientReady ? <A2uiSurface surface={surface} /> : fallback}\n    </div>\n  );\n}\n\nexport interface PrometheusA2uiSurfacesProps {\n  empty?: ReactNode;\n  className?: string;\n  surfaceClassName?: string;\n}\n\n/** Render every surface currently owned by the official processor. */\nexport function PrometheusA2uiSurfaces({\n  empty = null,\n  className,\n  surfaceClassName,\n}: PrometheusA2uiSurfacesProps) {\n  const surfaces = usePrometheusA2uiSurfaces();\n  const clientReady = useA2uiClientReady();\n  if (surfaces.length === 0) return <>{empty}</>;\n\n  return (\n    <div className={className} data-prometheus-a2ui-surfaces>\n      {surfaces.map((surface) => (\n        <div\n          className={surfaceClassName}\n          data-prometheus-a2ui-client-ready={clientReady ? \"true\" : \"false\"}\n          data-prometheus-a2ui-surface={surface.id}\n          key={surface.id}\n        >\n          {clientReady ? <A2uiSurface surface={surface} /> : null}\n        </div>\n      ))}\n    </div>\n  );\n}\n"]}