{"version":3,"sources":["../../node_modules/commander/lib/error.js","../../node_modules/commander/lib/argument.js","../../node_modules/commander/lib/help.js","../../node_modules/commander/lib/option.js","../../node_modules/commander/lib/suggestSimilar.js","../../node_modules/commander/lib/command.js","../../node_modules/commander/index.js","../../node_modules/kleur/index.mjs","../../node_modules/universalify/index.js","../../node_modules/graceful-fs/polyfills.js","../../node_modules/graceful-fs/legacy-streams.js","../../node_modules/graceful-fs/clone.js","../../node_modules/graceful-fs/graceful-fs.js","../node_modules/fs-extra/lib/fs/index.js","../node_modules/fs-extra/lib/mkdirs/utils.js","../node_modules/fs-extra/lib/mkdirs/make-dir.js","../node_modules/fs-extra/lib/mkdirs/index.js","../node_modules/fs-extra/lib/path-exists/index.js","../node_modules/fs-extra/lib/util/utimes.js","../node_modules/fs-extra/lib/util/stat.js","../node_modules/fs-extra/lib/util/async.js","../node_modules/fs-extra/lib/copy/copy.js","../node_modules/fs-extra/lib/copy/copy-sync.js","../node_modules/fs-extra/lib/copy/index.js","../node_modules/fs-extra/lib/remove/index.js","../node_modules/fs-extra/lib/empty/index.js","../node_modules/fs-extra/lib/ensure/file.js","../node_modules/fs-extra/lib/ensure/link.js","../node_modules/fs-extra/lib/ensure/symlink-paths.js","../node_modules/fs-extra/lib/ensure/symlink-type.js","../node_modules/fs-extra/lib/ensure/symlink.js","../node_modules/fs-extra/lib/ensure/index.js","../../node_modules/jsonfile/utils.js","../../node_modules/jsonfile/index.js","../node_modules/fs-extra/lib/json/jsonfile.js","../node_modules/fs-extra/lib/output-file/index.js","../node_modules/fs-extra/lib/json/output-json.js","../node_modules/fs-extra/lib/json/output-json-sync.js","../node_modules/fs-extra/lib/json/index.js","../node_modules/fs-extra/lib/move/move.js","../node_modules/fs-extra/lib/move/move-sync.js","../node_modules/fs-extra/lib/move/index.js","../node_modules/fs-extra/lib/index.js","../../node_modules/prompts/node_modules/kleur/index.js","../../node_modules/prompts/dist/util/action.js","../../node_modules/prompts/dist/util/strip.js","../../node_modules/sisteransi/src/index.js","../../node_modules/prompts/dist/util/clear.js","../../node_modules/prompts/dist/util/figures.js","../../node_modules/prompts/dist/util/style.js","../../node_modules/prompts/dist/util/lines.js","../../node_modules/prompts/dist/util/wrap.js","../../node_modules/prompts/dist/util/entriesToDisplay.js","../../node_modules/prompts/dist/util/index.js","../../node_modules/prompts/dist/elements/prompt.js","../../node_modules/prompts/dist/elements/text.js","../../node_modules/prompts/dist/elements/select.js","../../node_modules/prompts/dist/elements/toggle.js","../../node_modules/prompts/dist/dateparts/datepart.js","../../node_modules/prompts/dist/dateparts/meridiem.js","../../node_modules/prompts/dist/dateparts/day.js","../../node_modules/prompts/dist/dateparts/hours.js","../../node_modules/prompts/dist/dateparts/milliseconds.js","../../node_modules/prompts/dist/dateparts/minutes.js","../../node_modules/prompts/dist/dateparts/month.js","../../node_modules/prompts/dist/dateparts/seconds.js","../../node_modules/prompts/dist/dateparts/year.js","../../node_modules/prompts/dist/dateparts/index.js","../../node_modules/prompts/dist/elements/date.js","../../node_modules/prompts/dist/elements/number.js","../../node_modules/prompts/dist/elements/multiselect.js","../../node_modules/prompts/dist/elements/autocomplete.js","../../node_modules/prompts/dist/elements/autocompleteMultiselect.js","../../node_modules/prompts/dist/elements/confirm.js","../../node_modules/prompts/dist/elements/index.js","../../node_modules/prompts/dist/prompts.js","../../node_modules/prompts/dist/index.js","../../node_modules/prompts/lib/util/action.js","../../node_modules/prompts/lib/util/strip.js","../../node_modules/prompts/lib/util/clear.js","../../node_modules/prompts/lib/util/figures.js","../../node_modules/prompts/lib/util/style.js","../../node_modules/prompts/lib/util/lines.js","../../node_modules/prompts/lib/util/wrap.js","../../node_modules/prompts/lib/util/entriesToDisplay.js","../../node_modules/prompts/lib/util/index.js","../../node_modules/prompts/lib/elements/prompt.js","../../node_modules/prompts/lib/elements/text.js","../../node_modules/prompts/lib/elements/select.js","../../node_modules/prompts/lib/elements/toggle.js","../../node_modules/prompts/lib/dateparts/datepart.js","../../node_modules/prompts/lib/dateparts/meridiem.js","../../node_modules/prompts/lib/dateparts/day.js","../../node_modules/prompts/lib/dateparts/hours.js","../../node_modules/prompts/lib/dateparts/milliseconds.js","../../node_modules/prompts/lib/dateparts/minutes.js","../../node_modules/prompts/lib/dateparts/month.js","../../node_modules/prompts/lib/dateparts/seconds.js","../../node_modules/prompts/lib/dateparts/year.js","../../node_modules/prompts/lib/dateparts/index.js","../../node_modules/prompts/lib/elements/date.js","../../node_modules/prompts/lib/elements/number.js","../../node_modules/prompts/lib/elements/multiselect.js","../../node_modules/prompts/lib/elements/autocomplete.js","../../node_modules/prompts/lib/elements/autocompleteMultiselect.js","../../node_modules/prompts/lib/elements/confirm.js","../../node_modules/prompts/lib/elements/index.js","../../node_modules/prompts/lib/prompts.js","../../node_modules/prompts/lib/index.js","../../node_modules/prompts/index.js","../node_modules/ajv/lib/compile/codegen/code.ts","../node_modules/ajv/lib/compile/codegen/scope.ts","../node_modules/ajv/lib/compile/codegen/index.ts","../node_modules/ajv/lib/compile/util.ts","../node_modules/ajv/lib/compile/names.ts","../node_modules/ajv/lib/compile/errors.ts","../node_modules/ajv/lib/compile/validate/boolSchema.ts","../node_modules/ajv/lib/compile/rules.ts","../node_modules/ajv/lib/compile/validate/applicability.ts","../node_modules/ajv/lib/compile/validate/dataType.ts","../node_modules/ajv/lib/compile/validate/defaults.ts","../node_modules/ajv/lib/vocabularies/code.ts","../node_modules/ajv/lib/compile/validate/keyword.ts","../node_modules/ajv/lib/compile/validate/subschema.ts","../../node_modules/fast-deep-equal/index.js","../../node_modules/json-schema-traverse/index.js","../node_modules/ajv/lib/compile/resolve.ts","../node_modules/ajv/lib/compile/validate/index.ts","../node_modules/ajv/lib/runtime/validation_error.ts","../node_modules/ajv/lib/compile/ref_error.ts","../node_modules/ajv/lib/compile/index.ts","../node_modules/ajv/dist/refs/data.json","../../node_modules/fast-uri/lib/utils.js","../../node_modules/fast-uri/lib/schemes.js","../../node_modules/fast-uri/index.js","../node_modules/ajv/lib/runtime/uri.ts","../node_modules/ajv/lib/core.ts","../node_modules/ajv/lib/vocabularies/core/id.ts","../node_modules/ajv/lib/vocabularies/core/ref.ts","../node_modules/ajv/lib/vocabularies/core/index.ts","../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../node_modules/ajv/lib/runtime/ucs2length.ts","../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../node_modules/ajv/lib/vocabularies/validation/required.ts","../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../node_modules/ajv/lib/runtime/equal.ts","../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../node_modules/ajv/lib/vocabularies/validation/const.ts","../node_modules/ajv/lib/vocabularies/validation/enum.ts","../node_modules/ajv/lib/vocabularies/validation/index.ts","../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../node_modules/ajv/lib/vocabularies/applicator/items.ts","../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../node_modules/ajv/lib/vocabularies/applicator/not.ts","../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../node_modules/ajv/lib/vocabularies/applicator/if.ts","../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../node_modules/ajv/lib/vocabularies/applicator/index.ts","../node_modules/ajv/lib/vocabularies/format/format.ts","../node_modules/ajv/lib/vocabularies/format/index.ts","../node_modules/ajv/lib/vocabularies/metadata.ts","../node_modules/ajv/lib/vocabularies/draft7.ts","../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../node_modules/ajv/dist/refs/json-schema-draft-07.json","../node_modules/ajv/lib/ajv.ts","../../node_modules/ajv-formats/src/formats.ts","../../node_modules/ajv/lib/compile/codegen/code.ts","../../node_modules/ajv/lib/compile/codegen/scope.ts","../../node_modules/ajv/lib/compile/codegen/index.ts","../../node_modules/ajv/lib/compile/util.ts","../../node_modules/ajv/lib/compile/names.ts","../../node_modules/ajv/lib/compile/errors.ts","../../node_modules/ajv/lib/compile/validate/boolSchema.ts","../../node_modules/ajv/lib/compile/rules.ts","../../node_modules/ajv/lib/compile/validate/applicability.ts","../../node_modules/ajv/lib/compile/validate/dataType.ts","../../node_modules/ajv/lib/compile/validate/defaults.ts","../../node_modules/ajv/lib/vocabularies/code.ts","../../node_modules/ajv/lib/compile/validate/keyword.ts","../../node_modules/ajv/lib/compile/validate/subschema.ts","../../node_modules/ajv/lib/compile/resolve.ts","../../node_modules/ajv/lib/compile/validate/index.ts","../../node_modules/ajv/lib/runtime/validation_error.ts","../../node_modules/ajv/lib/compile/ref_error.ts","../../node_modules/ajv/lib/compile/index.ts","../../node_modules/ajv/dist/refs/data.json","../../node_modules/ajv/lib/runtime/uri.ts","../../node_modules/ajv/lib/core.ts","../../node_modules/ajv/lib/vocabularies/core/id.ts","../../node_modules/ajv/lib/vocabularies/core/ref.ts","../../node_modules/ajv/lib/vocabularies/core/index.ts","../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../node_modules/ajv/lib/runtime/ucs2length.ts","../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../node_modules/ajv/lib/vocabularies/validation/required.ts","../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../node_modules/ajv/lib/runtime/equal.ts","../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../node_modules/ajv/lib/vocabularies/validation/const.ts","../../node_modules/ajv/lib/vocabularies/validation/enum.ts","../../node_modules/ajv/lib/vocabularies/validation/index.ts","../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../node_modules/ajv/lib/vocabularies/applicator/items.ts","../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../node_modules/ajv/lib/vocabularies/applicator/not.ts","../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../node_modules/ajv/lib/vocabularies/applicator/if.ts","../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../node_modules/ajv/lib/vocabularies/applicator/index.ts","../../node_modules/ajv/lib/vocabularies/format/format.ts","../../node_modules/ajv/lib/vocabularies/format/index.ts","../../node_modules/ajv/lib/vocabularies/metadata.ts","../../node_modules/ajv/lib/vocabularies/draft7.ts","../../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../node_modules/ajv/dist/refs/json-schema-draft-07.json","../../node_modules/ajv/lib/ajv.ts","../../node_modules/ajv-formats/src/limit.ts","../../node_modules/ajv-formats/src/index.ts","../../node_modules/semver/internal/constants.js","../../node_modules/semver/internal/debug.js","../../node_modules/semver/internal/re.js","../../node_modules/semver/internal/parse-options.js","../../node_modules/semver/internal/identifiers.js","../../node_modules/semver/classes/semver.js","../../node_modules/semver/functions/parse.js","../../node_modules/semver/functions/valid.js","../../node_modules/semver/functions/clean.js","../../node_modules/semver/functions/inc.js","../../node_modules/semver/functions/diff.js","../../node_modules/semver/functions/major.js","../../node_modules/semver/functions/minor.js","../../node_modules/semver/functions/patch.js","../../node_modules/semver/functions/prerelease.js","../../node_modules/semver/functions/compare.js","../../node_modules/semver/functions/rcompare.js","../../node_modules/semver/functions/compare-loose.js","../../node_modules/semver/functions/compare-build.js","../../node_modules/semver/functions/sort.js","../../node_modules/semver/functions/rsort.js","../../node_modules/semver/functions/gt.js","../../node_modules/semver/functions/lt.js","../../node_modules/semver/functions/eq.js","../../node_modules/semver/functions/neq.js","../../node_modules/semver/functions/gte.js","../../node_modules/semver/functions/lte.js","../../node_modules/semver/functions/cmp.js","../../node_modules/semver/functions/coerce.js","../../node_modules/semver/internal/lrucache.js","../../node_modules/semver/classes/range.js","../../node_modules/semver/classes/comparator.js","../../node_modules/semver/functions/satisfies.js","../../node_modules/semver/ranges/to-comparators.js","../../node_modules/semver/ranges/max-satisfying.js","../../node_modules/semver/ranges/min-satisfying.js","../../node_modules/semver/ranges/min-version.js","../../node_modules/semver/ranges/valid.js","../../node_modules/semver/ranges/outside.js","../../node_modules/semver/ranges/gtr.js","../../node_modules/semver/ranges/ltr.js","../../node_modules/semver/ranges/intersects.js","../../node_modules/semver/ranges/simplify.js","../../node_modules/semver/ranges/subset.js","../../node_modules/semver/index.js","../../node_modules/yaml/dist/nodes/identity.js","../../node_modules/yaml/dist/visit.js","../../node_modules/yaml/dist/doc/directives.js","../../node_modules/yaml/dist/doc/anchors.js","../../node_modules/yaml/dist/doc/applyReviver.js","../../node_modules/yaml/dist/nodes/toJS.js","../../node_modules/yaml/dist/nodes/Node.js","../../node_modules/yaml/dist/nodes/Alias.js","../../node_modules/yaml/dist/nodes/Scalar.js","../../node_modules/yaml/dist/doc/createNode.js","../../node_modules/yaml/dist/nodes/Collection.js","../../node_modules/yaml/dist/stringify/stringifyComment.js","../../node_modules/yaml/dist/stringify/foldFlowLines.js","../../node_modules/yaml/dist/stringify/stringifyString.js","../../node_modules/yaml/dist/stringify/stringify.js","../../node_modules/yaml/dist/stringify/stringifyPair.js","../../node_modules/yaml/dist/log.js","../../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../../node_modules/yaml/dist/nodes/addPairToJSMap.js","../../node_modules/yaml/dist/nodes/Pair.js","../../node_modules/yaml/dist/stringify/stringifyCollection.js","../../node_modules/yaml/dist/nodes/YAMLMap.js","../../node_modules/yaml/dist/schema/common/map.js","../../node_modules/yaml/dist/nodes/YAMLSeq.js","../../node_modules/yaml/dist/schema/common/seq.js","../../node_modules/yaml/dist/schema/common/string.js","../../node_modules/yaml/dist/schema/common/null.js","../../node_modules/yaml/dist/schema/core/bool.js","../../node_modules/yaml/dist/stringify/stringifyNumber.js","../../node_modules/yaml/dist/schema/core/float.js","../../node_modules/yaml/dist/schema/core/int.js","../../node_modules/yaml/dist/schema/core/schema.js","../../node_modules/yaml/dist/schema/json/schema.js","../../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../../node_modules/yaml/dist/schema/yaml-1.1/float.js","../../node_modules/yaml/dist/schema/yaml-1.1/int.js","../../node_modules/yaml/dist/schema/yaml-1.1/set.js","../../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../../node_modules/yaml/dist/schema/tags.js","../../node_modules/yaml/dist/schema/Schema.js","../../node_modules/yaml/dist/stringify/stringifyDocument.js","../../node_modules/yaml/dist/doc/Document.js","../../node_modules/yaml/dist/errors.js","../../node_modules/yaml/dist/compose/resolve-props.js","../../node_modules/yaml/dist/compose/util-contains-newline.js","../../node_modules/yaml/dist/compose/util-flow-indent-check.js","../../node_modules/yaml/dist/compose/util-map-includes.js","../../node_modules/yaml/dist/compose/resolve-block-map.js","../../node_modules/yaml/dist/compose/resolve-block-seq.js","../../node_modules/yaml/dist/compose/resolve-end.js","../../node_modules/yaml/dist/compose/resolve-flow-collection.js","../../node_modules/yaml/dist/compose/compose-collection.js","../../node_modules/yaml/dist/compose/resolve-block-scalar.js","../../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../../node_modules/yaml/dist/compose/compose-scalar.js","../../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../../node_modules/yaml/dist/compose/compose-node.js","../../node_modules/yaml/dist/compose/compose-doc.js","../../node_modules/yaml/dist/compose/composer.js","../../node_modules/yaml/dist/parse/cst-scalar.js","../../node_modules/yaml/dist/parse/cst-stringify.js","../../node_modules/yaml/dist/parse/cst-visit.js","../../node_modules/yaml/dist/parse/cst.js","../../node_modules/yaml/dist/parse/lexer.js","../../node_modules/yaml/dist/parse/line-counter.js","../../node_modules/yaml/dist/parse/parser.js","../../node_modules/yaml/dist/public-api.js","../../node_modules/yaml/dist/index.js","../../node_modules/esprima/dist/esprima.js","../../node_modules/array-timsort/src/index.js","../node_modules/comment-json/src/common.js","../node_modules/comment-json/src/array.js","../node_modules/comment-json/src/parse.js","../node_modules/comment-json/src/stringify.js","../node_modules/comment-json/src/index.js","../../node_modules/chalk/source/vendor/ansi-styles/index.js","../../node_modules/chalk/source/vendor/supports-color/index.js","../../node_modules/chalk/source/utilities.js","../../node_modules/chalk/source/index.js","../../node_modules/ansi-regex/index.js","../../node_modules/strip-ansi/index.js","../../node_modules/get-east-asian-width/lookup-data.js","../../node_modules/get-east-asian-width/utilities.js","../../node_modules/get-east-asian-width/lookup.js","../../node_modules/get-east-asian-width/index.js","../node_modules/dotenv/package.json","../node_modules/dotenv/lib/main.js","../../node_modules/cli-table3/src/debug.js","../../node_modules/cli-table3/node_modules/ansi-regex/index.js","../../node_modules/cli-table3/node_modules/strip-ansi/index.js","../../node_modules/cli-table3/node_modules/is-fullwidth-code-point/index.js","../../node_modules/cli-table3/node_modules/emoji-regex/index.js","../../node_modules/cli-table3/node_modules/string-width/index.js","../../node_modules/cli-table3/src/utils.js","../../node_modules/@colors/colors/lib/styles.js","../../node_modules/@colors/colors/lib/system/has-flag.js","../../node_modules/@colors/colors/lib/system/supports-colors.js","../../node_modules/@colors/colors/lib/custom/trap.js","../../node_modules/@colors/colors/lib/custom/zalgo.js","../../node_modules/@colors/colors/lib/maps/america.js","../../node_modules/@colors/colors/lib/maps/zebra.js","../../node_modules/@colors/colors/lib/maps/rainbow.js","../../node_modules/@colors/colors/lib/maps/random.js","../../node_modules/@colors/colors/lib/colors.js","../../node_modules/@colors/colors/safe.js","../../node_modules/cli-table3/src/cell.js","../../node_modules/cli-table3/src/layout-manager.js","../../node_modules/cli-table3/src/table.js","../../node_modules/cli-table3/index.js","../../node_modules/emoji-regex/index.mjs","../../node_modules/string-width/index.js","../../node_modules/widest-line/index.js","../../node_modules/cli-boxes/boxes.json","../../node_modules/cli-boxes/index.js","../../node_modules/camelcase/index.js","../../node_modules/ansi-align/node_modules/ansi-regex/index.js","../../node_modules/ansi-align/node_modules/strip-ansi/index.js","../../node_modules/ansi-align/node_modules/is-fullwidth-code-point/index.js","../../node_modules/ansi-align/node_modules/emoji-regex/index.js","../../node_modules/ansi-align/node_modules/string-width/index.js","../../node_modules/ansi-align/index.js","../../node_modules/ansi-styles/index.js","../../node_modules/wrap-ansi/index.js","../../node_modules/boxen/index.js","../src/spec/apply-state.ts","../src/spec/reconcile.ts","../src/spec/handoff.ts","../src/index.ts","../../node_modules/commander/esm.mjs","../src/commands/claude.ts","../src/utils/repo-root.ts","../src/utils/theme.ts","../src/core/claude-runtime-sync.ts","../src/core/global-hooks-bootstrap.ts","../src/utils/atomic-write.ts","../src/core/global-hooks-flag.ts","../src/utils/worktree-session.ts","../src/core/global-skills-flag.ts","../src/core/skills-layout.ts","../src/core/skills-scaffold.ts","../src/core/skill-discovery.ts","../src/core/skills-state.ts","../../node_modules/zod/v4/classic/external.js","../../node_modules/zod/v4/core/index.js","../../node_modules/zod/v4/core/core.js","../../node_modules/zod/v4/core/util.js","../../node_modules/zod/v4/core/errors.js","../../node_modules/zod/v4/core/parse.js","../../node_modules/zod/v4/core/regexes.js","../../node_modules/zod/v4/core/checks.js","../../node_modules/zod/v4/core/doc.js","../../node_modules/zod/v4/core/versions.js","../../node_modules/zod/v4/core/schemas.js","../../node_modules/zod/v4/locales/index.js","../../node_modules/zod/v4/locales/ar.js","../../node_modules/zod/v4/locales/az.js","../../node_modules/zod/v4/locales/be.js","../../node_modules/zod/v4/locales/bg.js","../../node_modules/zod/v4/locales/ca.js","../../node_modules/zod/v4/locales/cs.js","../../node_modules/zod/v4/locales/da.js","../../node_modules/zod/v4/locales/de.js","../../node_modules/zod/v4/locales/el.js","../../node_modules/zod/v4/locales/en.js","../../node_modules/zod/v4/locales/eo.js","../../node_modules/zod/v4/locales/es.js","../../node_modules/zod/v4/locales/fa.js","../../node_modules/zod/v4/locales/fi.js","../../node_modules/zod/v4/locales/fr.js","../../node_modules/zod/v4/locales/fr-CA.js","../../node_modules/zod/v4/locales/he.js","../../node_modules/zod/v4/locales/hr.js","../../node_modules/zod/v4/locales/hu.js","../../node_modules/zod/v4/locales/hy.js","../../node_modules/zod/v4/locales/id.js","../../node_modules/zod/v4/locales/is.js","../../node_modules/zod/v4/locales/it.js","../../node_modules/zod/v4/locales/ja.js","../../node_modules/zod/v4/locales/ka.js","../../node_modules/zod/v4/locales/km.js","../../node_modules/zod/v4/locales/kh.js","../../node_modules/zod/v4/locales/ko.js","../../node_modules/zod/v4/locales/lt.js","../../node_modules/zod/v4/locales/mk.js","../../node_modules/zod/v4/locales/ms.js","../../node_modules/zod/v4/locales/nl.js","../../node_modules/zod/v4/locales/no.js","../../node_modules/zod/v4/locales/ota.js","../../node_modules/zod/v4/locales/ps.js","../../node_modules/zod/v4/locales/pl.js","../../node_modules/zod/v4/locales/pt.js","../../node_modules/zod/v4/locales/ro.js","../../node_modules/zod/v4/locales/ru.js","../../node_modules/zod/v4/locales/sl.js","../../node_modules/zod/v4/locales/sv.js","../../node_modules/zod/v4/locales/ta.js","../../node_modules/zod/v4/locales/th.js","../../node_modules/zod/v4/locales/tr.js","../../node_modules/zod/v4/locales/uk.js","../../node_modules/zod/v4/locales/ua.js","../../node_modules/zod/v4/locales/ur.js","../../node_modules/zod/v4/locales/uz.js","../../node_modules/zod/v4/locales/vi.js","../../node_modules/zod/v4/locales/zh-CN.js","../../node_modules/zod/v4/locales/zh-TW.js","../../node_modules/zod/v4/locales/yo.js","../../node_modules/zod/v4/core/registries.js","../../node_modules/zod/v4/core/api.js","../../node_modules/zod/v4/core/to-json-schema.js","../../node_modules/zod/v4/core/json-schema-processors.js","../../node_modules/zod/v4/core/json-schema-generator.js","../../node_modules/zod/v4/core/json-schema.js","../../node_modules/zod/v4/classic/schemas.js","../../node_modules/zod/v4/classic/checks.js","../../node_modules/zod/v4/classic/iso.js","../../node_modules/zod/v4/classic/errors.js","../../node_modules/zod/v4/classic/parse.js","../../node_modules/zod/v4/classic/compat.js","../../node_modules/zod/v4/classic/from-json-schema.js","../../node_modules/zod/v4/classic/coerce.js","../src/core/pack-metadata.ts","../src/core/skills-runtime-reconcile.ts","../src/core/pi-runtime.ts","../src/utils/confirmation.ts","../src/core/machine-bootstrap.ts","../src/commands/pi.ts","../src/commands/pi-install.ts","../src/commands/install-pi.ts","../src/commands/init.ts","../src/core/registry-scaffold.ts","../src/core/drift.ts","../src/core/plugin-era-cleanup.ts","../src/core/global-skills-bootstrap.ts","../src/core/pi-runtime-hooks.ts","../src/core/service-skills-ensure.ts","../src/core/init-verification.ts","../src/core/skills-runtime-views.ts","../src/core/project-mcp-sync.ts","../src/core/context.ts","../node_modules/conf/dist/source/index.js","../../node_modules/dot-prop/index.js","../../node_modules/env-paths/index.js","../../node_modules/atomically/dist/index.js","../../node_modules/stubborn-fs/dist/index.js","../../node_modules/stubborn-utils/dist/attemptify_async.js","../../node_modules/stubborn-utils/dist/attemptify_sync.js","../../node_modules/stubborn-utils/dist/constants.js","../../node_modules/stubborn-utils/dist/retryify_async.js","../../node_modules/stubborn-utils/dist/retryify_sync.js","../../node_modules/stubborn-fs/dist/constants.js","../../node_modules/stubborn-fs/dist/handlers.js","../../node_modules/atomically/dist/constants.js","../../node_modules/atomically/dist/utils/lang.js","../../node_modules/atomically/dist/utils/temp.js","../../node_modules/when-exit/dist/node/interceptor.js","../../node_modules/when-exit/dist/node/constants.js","../../node_modules/when-exit/dist/node/signals.js","../../node_modules/when-exit/dist/node/index.js","../../node_modules/mimic-fn/index.js","../../node_modules/debounce-fn/index.js","../../node_modules/uint8array-extras/index.js","../src/core/diff.ts","../src/utils/hash.ts","../src/adapters/claude.ts","../src/adapters/base.ts","../src/adapters/registry.ts","../src/core/bd-auto-stage-patch.ts","../src/core/dependency-maintenance.ts","../src/commands/status.ts","../src/core/sync-executor.ts","../src/utils/atomic-config.ts","../src/utils/config-adapter.ts","../src/utils/sync-mcp-cli.ts","../src/utils/env-manager.ts","../src/core/rollback.ts","../src/core/manifest.ts","../src/types/config.ts","../src/commands/reset.ts","../src/commands/help.ts","../src/commands/clean.ts","../src/commands/end.ts","../src/commands/worktree.ts","../src/commands/attach.ts","../src/commands/docs.ts","../src/utils/docs-scanner.ts","../src/utils/docs-cache.ts","../src/commands/docs-cross-check-gh.ts","../src/commands/docs-cross-check-bd.ts","../src/commands/docs-cross-check-core.ts","../src/commands/memory.ts","../src/commands/merge.ts","../src/commands/debug.ts","../src/commands/report.ts","../src/commands/skills.ts","../src/core/skills-materializer.ts","../src/commands/claude-sync.ts","../src/commands/doctor.ts","../src/core/beads-shared-server.ts","../src/commands/bootstrap.ts","../src/commands/update.ts","../src/core/repo-discovery.ts","../src/commands/install.ts","../src/utils/nudge.ts","../src/commands/release.ts","../src/core/xt-reports.ts","../src/commands/spec/draft.ts","../src/spec/templates.ts","../src/spec/slug.ts","../src/spec/log.ts","../src/spec/schema.ts","../src/commands/spec/validate.ts","../src/spec/scrutiny.ts","../src/spec/checks.ts","../src/spec/validate.ts","../src/spec/report.ts","../src/commands/spec/doctor.ts","../src/spec/readiness/probe.ts","../src/spec/readiness/matrix.ts","../src/commands/spec/apply.ts","../src/spec/xml.ts","../src/spec/transform/to-change-contract.ts","../src/spec/dispatch.ts","../src/commands/spec/status.ts","../src/spec/drift.ts","../src/commands/spec/archive.ts","../src/spec/archive-gate.ts","../src/commands/spec.ts","../src/commands/migrate.ts","../src/utils/known-repos.ts","../src/utils/banner.ts"],"sourcesContent":["/**\n * CommanderError class\n */\nclass CommanderError extends Error {\n  /**\n   * Constructs the CommanderError class\n   * @param {number} exitCode suggested exit code which could be used with process.exit\n   * @param {string} code an id string representing the error\n   * @param {string} message human-readable description of the error\n   */\n  constructor(exitCode, code, message) {\n    super(message);\n    // properly capture stack trace in Node.js\n    Error.captureStackTrace(this, this.constructor);\n    this.name = this.constructor.name;\n    this.code = code;\n    this.exitCode = exitCode;\n    this.nestedError = undefined;\n  }\n}\n\n/**\n * InvalidArgumentError class\n */\nclass InvalidArgumentError extends CommanderError {\n  /**\n   * Constructs the InvalidArgumentError class\n   * @param {string} [message] explanation of why argument is invalid\n   */\n  constructor(message) {\n    super(1, 'commander.invalidArgument', message);\n    // properly capture stack trace in Node.js\n    Error.captureStackTrace(this, this.constructor);\n    this.name = this.constructor.name;\n  }\n}\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Argument {\n  /**\n   * Initialize a new command argument with the given name and description.\n   * The default is that the argument is required, and you can explicitly\n   * indicate this with <> around the name. Put [] around the name for an optional argument.\n   *\n   * @param {string} name\n   * @param {string} [description]\n   */\n\n  constructor(name, description) {\n    this.description = description || '';\n    this.variadic = false;\n    this.parseArg = undefined;\n    this.defaultValue = undefined;\n    this.defaultValueDescription = undefined;\n    this.argChoices = undefined;\n\n    switch (name[0]) {\n      case '<': // e.g. <required>\n        this.required = true;\n        this._name = name.slice(1, -1);\n        break;\n      case '[': // e.g. [optional]\n        this.required = false;\n        this._name = name.slice(1, -1);\n        break;\n      default:\n        this.required = true;\n        this._name = name;\n        break;\n    }\n\n    if (this._name.endsWith('...')) {\n      this.variadic = true;\n      this._name = this._name.slice(0, -3);\n    }\n  }\n\n  /**\n   * Return argument name.\n   *\n   * @return {string}\n   */\n\n  name() {\n    return this._name;\n  }\n\n  /**\n   * @package\n   */\n\n  _collectValue(value, previous) {\n    if (previous === this.defaultValue || !Array.isArray(previous)) {\n      return [value];\n    }\n\n    previous.push(value);\n    return previous;\n  }\n\n  /**\n   * Set the default value, and optionally supply the description to be displayed in the help.\n   *\n   * @param {*} value\n   * @param {string} [description]\n   * @return {Argument}\n   */\n\n  default(value, description) {\n    this.defaultValue = value;\n    this.defaultValueDescription = description;\n    return this;\n  }\n\n  /**\n   * Set the custom handler for processing CLI command arguments into argument values.\n   *\n   * @param {Function} [fn]\n   * @return {Argument}\n   */\n\n  argParser(fn) {\n    this.parseArg = fn;\n    return this;\n  }\n\n  /**\n   * Only allow argument value to be one of choices.\n   *\n   * @param {string[]} values\n   * @return {Argument}\n   */\n\n  choices(values) {\n    this.argChoices = values.slice();\n    this.parseArg = (arg, previous) => {\n      if (!this.argChoices.includes(arg)) {\n        throw new InvalidArgumentError(\n          `Allowed choices are ${this.argChoices.join(', ')}.`,\n        );\n      }\n      if (this.variadic) {\n        return this._collectValue(arg, previous);\n      }\n      return arg;\n    };\n    return this;\n  }\n\n  /**\n   * Make argument required.\n   *\n   * @returns {Argument}\n   */\n  argRequired() {\n    this.required = true;\n    return this;\n  }\n\n  /**\n   * Make argument optional.\n   *\n   * @returns {Argument}\n   */\n  argOptional() {\n    this.required = false;\n    return this;\n  }\n}\n\n/**\n * Takes an argument and returns its human readable equivalent for help usage.\n *\n * @param {Argument} arg\n * @return {string}\n * @private\n */\n\nfunction humanReadableArgName(arg) {\n  const nameOutput = arg.name() + (arg.variadic === true ? '...' : '');\n\n  return arg.required ? '<' + nameOutput + '>' : '[' + nameOutput + ']';\n}\n\nexports.Argument = Argument;\nexports.humanReadableArgName = humanReadableArgName;\n","const { humanReadableArgName } = require('./argument.js');\n\n/**\n * TypeScript import types for JSDoc, used by Visual Studio Code IntelliSense and `npm run typescript-checkJS`\n * https://www.typescriptlang.org/docs/handbook/jsdoc-supported-types.html#import-types\n * @typedef { import(\"./argument.js\").Argument } Argument\n * @typedef { import(\"./command.js\").Command } Command\n * @typedef { import(\"./option.js\").Option } Option\n */\n\n// Although this is a class, methods are static in style to allow override using subclass or just functions.\nclass Help {\n  constructor() {\n    this.helpWidth = undefined;\n    this.minWidthToWrap = 40;\n    this.sortSubcommands = false;\n    this.sortOptions = false;\n    this.showGlobalOptions = false;\n  }\n\n  /**\n   * prepareContext is called by Commander after applying overrides from `Command.configureHelp()`\n   * and just before calling `formatHelp()`.\n   *\n   * Commander just uses the helpWidth and the rest is provided for optional use by more complex subclasses.\n   *\n   * @param {{ error?: boolean, helpWidth?: number, outputHasColors?: boolean }} contextOptions\n   */\n  prepareContext(contextOptions) {\n    this.helpWidth = this.helpWidth ?? contextOptions.helpWidth ?? 80;\n  }\n\n  /**\n   * Get an array of the visible subcommands. Includes a placeholder for the implicit help command, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Command[]}\n   */\n\n  visibleCommands(cmd) {\n    const visibleCommands = cmd.commands.filter((cmd) => !cmd._hidden);\n    const helpCommand = cmd._getHelpCommand();\n    if (helpCommand && !helpCommand._hidden) {\n      visibleCommands.push(helpCommand);\n    }\n    if (this.sortSubcommands) {\n      visibleCommands.sort((a, b) => {\n        // @ts-ignore: because overloaded return type\n        return a.name().localeCompare(b.name());\n      });\n    }\n    return visibleCommands;\n  }\n\n  /**\n   * Compare options for sort.\n   *\n   * @param {Option} a\n   * @param {Option} b\n   * @returns {number}\n   */\n  compareOptions(a, b) {\n    const getSortKey = (option) => {\n      // WYSIWYG for order displayed in help. Short used for comparison if present. No special handling for negated.\n      return option.short\n        ? option.short.replace(/^-/, '')\n        : option.long.replace(/^--/, '');\n    };\n    return getSortKey(a).localeCompare(getSortKey(b));\n  }\n\n  /**\n   * Get an array of the visible options. Includes a placeholder for the implicit help option, if there is one.\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleOptions(cmd) {\n    const visibleOptions = cmd.options.filter((option) => !option.hidden);\n    // Built-in help option.\n    const helpOption = cmd._getHelpOption();\n    if (helpOption && !helpOption.hidden) {\n      // Automatically hide conflicting flags. Bit dubious but a historical behaviour that is convenient for single-command programs.\n      const removeShort = helpOption.short && cmd._findOption(helpOption.short);\n      const removeLong = helpOption.long && cmd._findOption(helpOption.long);\n      if (!removeShort && !removeLong) {\n        visibleOptions.push(helpOption); // no changes needed\n      } else if (helpOption.long && !removeLong) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.long, helpOption.description),\n        );\n      } else if (helpOption.short && !removeShort) {\n        visibleOptions.push(\n          cmd.createOption(helpOption.short, helpOption.description),\n        );\n      }\n    }\n    if (this.sortOptions) {\n      visibleOptions.sort(this.compareOptions);\n    }\n    return visibleOptions;\n  }\n\n  /**\n   * Get an array of the visible global options. (Not including help.)\n   *\n   * @param {Command} cmd\n   * @returns {Option[]}\n   */\n\n  visibleGlobalOptions(cmd) {\n    if (!this.showGlobalOptions) return [];\n\n    const globalOptions = [];\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      const visibleOptions = ancestorCmd.options.filter(\n        (option) => !option.hidden,\n      );\n      globalOptions.push(...visibleOptions);\n    }\n    if (this.sortOptions) {\n      globalOptions.sort(this.compareOptions);\n    }\n    return globalOptions;\n  }\n\n  /**\n   * Get an array of the arguments if any have a description.\n   *\n   * @param {Command} cmd\n   * @returns {Argument[]}\n   */\n\n  visibleArguments(cmd) {\n    // Side effect! Apply the legacy descriptions before the arguments are displayed.\n    if (cmd._argsDescription) {\n      cmd.registeredArguments.forEach((argument) => {\n        argument.description =\n          argument.description || cmd._argsDescription[argument.name()] || '';\n      });\n    }\n\n    // If there are any arguments with a description then return all the arguments.\n    if (cmd.registeredArguments.find((argument) => argument.description)) {\n      return cmd.registeredArguments;\n    }\n    return [];\n  }\n\n  /**\n   * Get the command term to show in the list of subcommands.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandTerm(cmd) {\n    // Legacy. Ignores custom usage string, and nested commands.\n    const args = cmd.registeredArguments\n      .map((arg) => humanReadableArgName(arg))\n      .join(' ');\n    return (\n      cmd._name +\n      (cmd._aliases[0] ? '|' + cmd._aliases[0] : '') +\n      (cmd.options.length ? ' [options]' : '') + // simplistic check for non-help option\n      (args ? ' ' + args : '')\n    );\n  }\n\n  /**\n   * Get the option term to show in the list of options.\n   *\n   * @param {Option} option\n   * @returns {string}\n   */\n\n  optionTerm(option) {\n    return option.flags;\n  }\n\n  /**\n   * Get the argument term to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @returns {string}\n   */\n\n  argumentTerm(argument) {\n    return argument.name();\n  }\n\n  /**\n   * Get the longest command term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestSubcommandTermLength(cmd, helper) {\n    return helper.visibleCommands(cmd).reduce((max, command) => {\n      return Math.max(\n        max,\n        this.displayWidth(\n          helper.styleSubcommandTerm(helper.subcommandTerm(command)),\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestOptionTermLength(cmd, helper) {\n    return helper.visibleOptions(cmd).reduce((max, option) => {\n      return Math.max(\n        max,\n        this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest global option term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestGlobalOptionTermLength(cmd, helper) {\n    return helper.visibleGlobalOptions(cmd).reduce((max, option) => {\n      return Math.max(\n        max,\n        this.displayWidth(helper.styleOptionTerm(helper.optionTerm(option))),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the longest argument term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  longestArgumentTermLength(cmd, helper) {\n    return helper.visibleArguments(cmd).reduce((max, argument) => {\n      return Math.max(\n        max,\n        this.displayWidth(\n          helper.styleArgumentTerm(helper.argumentTerm(argument)),\n        ),\n      );\n    }, 0);\n  }\n\n  /**\n   * Get the command usage to be displayed at the top of the built-in help.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandUsage(cmd) {\n    // Usage\n    let cmdName = cmd._name;\n    if (cmd._aliases[0]) {\n      cmdName = cmdName + '|' + cmd._aliases[0];\n    }\n    let ancestorCmdNames = '';\n    for (\n      let ancestorCmd = cmd.parent;\n      ancestorCmd;\n      ancestorCmd = ancestorCmd.parent\n    ) {\n      ancestorCmdNames = ancestorCmd.name() + ' ' + ancestorCmdNames;\n    }\n    return ancestorCmdNames + cmdName + ' ' + cmd.usage();\n  }\n\n  /**\n   * Get the description for the command.\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  commandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.description();\n  }\n\n  /**\n   * Get the subcommand summary to show in the list of subcommands.\n   * (Fallback to description for backwards compatibility.)\n   *\n   * @param {Command} cmd\n   * @returns {string}\n   */\n\n  subcommandDescription(cmd) {\n    // @ts-ignore: because overloaded return type\n    return cmd.summary() || cmd.description();\n  }\n\n  /**\n   * Get the option description to show in the list of options.\n   *\n   * @param {Option} option\n   * @return {string}\n   */\n\n  optionDescription(option) {\n    const extraInfo = [];\n\n    if (option.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${option.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (option.defaultValue !== undefined) {\n      // default for boolean and negated more for programmer than end user,\n      // but show true/false for boolean option as may be for hand-rolled env or config processing.\n      const showDefault =\n        option.required ||\n        option.optional ||\n        (option.isBoolean() && typeof option.defaultValue === 'boolean');\n      if (showDefault) {\n        extraInfo.push(\n          `default: ${option.defaultValueDescription || JSON.stringify(option.defaultValue)}`,\n        );\n      }\n    }\n    // preset for boolean and negated are more for programmer than end user\n    if (option.presetArg !== undefined && option.optional) {\n      extraInfo.push(`preset: ${JSON.stringify(option.presetArg)}`);\n    }\n    if (option.envVar !== undefined) {\n      extraInfo.push(`env: ${option.envVar}`);\n    }\n    if (extraInfo.length > 0) {\n      const extraDescription = `(${extraInfo.join(', ')})`;\n      if (option.description) {\n        return `${option.description} ${extraDescription}`;\n      }\n      return extraDescription;\n    }\n\n    return option.description;\n  }\n\n  /**\n   * Get the argument description to show in the list of arguments.\n   *\n   * @param {Argument} argument\n   * @return {string}\n   */\n\n  argumentDescription(argument) {\n    const extraInfo = [];\n    if (argument.argChoices) {\n      extraInfo.push(\n        // use stringify to match the display of the default value\n        `choices: ${argument.argChoices.map((choice) => JSON.stringify(choice)).join(', ')}`,\n      );\n    }\n    if (argument.defaultValue !== undefined) {\n      extraInfo.push(\n        `default: ${argument.defaultValueDescription || JSON.stringify(argument.defaultValue)}`,\n      );\n    }\n    if (extraInfo.length > 0) {\n      const extraDescription = `(${extraInfo.join(', ')})`;\n      if (argument.description) {\n        return `${argument.description} ${extraDescription}`;\n      }\n      return extraDescription;\n    }\n    return argument.description;\n  }\n\n  /**\n   * Format a list of items, given a heading and an array of formatted items.\n   *\n   * @param {string} heading\n   * @param {string[]} items\n   * @param {Help} helper\n   * @returns string[]\n   */\n  formatItemList(heading, items, helper) {\n    if (items.length === 0) return [];\n\n    return [helper.styleTitle(heading), ...items, ''];\n  }\n\n  /**\n   * Group items by their help group heading.\n   *\n   * @param {Command[] | Option[]} unsortedItems\n   * @param {Command[] | Option[]} visibleItems\n   * @param {Function} getGroup\n   * @returns {Map<string, Command[] | Option[]>}\n   */\n  groupItems(unsortedItems, visibleItems, getGroup) {\n    const result = new Map();\n    // Add groups in order of appearance in unsortedItems.\n    unsortedItems.forEach((item) => {\n      const group = getGroup(item);\n      if (!result.has(group)) result.set(group, []);\n    });\n    // Add items in order of appearance in visibleItems.\n    visibleItems.forEach((item) => {\n      const group = getGroup(item);\n      if (!result.has(group)) {\n        result.set(group, []);\n      }\n      result.get(group).push(item);\n    });\n    return result;\n  }\n\n  /**\n   * Generate the built-in help text.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {string}\n   */\n\n  formatHelp(cmd, helper) {\n    const termWidth = helper.padWidth(cmd, helper);\n    const helpWidth = helper.helpWidth ?? 80; // in case prepareContext() was not called\n\n    function callFormatItem(term, description) {\n      return helper.formatItem(term, termWidth, description, helper);\n    }\n\n    // Usage\n    let output = [\n      `${helper.styleTitle('Usage:')} ${helper.styleUsage(helper.commandUsage(cmd))}`,\n      '',\n    ];\n\n    // Description\n    const commandDescription = helper.commandDescription(cmd);\n    if (commandDescription.length > 0) {\n      output = output.concat([\n        helper.boxWrap(\n          helper.styleCommandDescription(commandDescription),\n          helpWidth,\n        ),\n        '',\n      ]);\n    }\n\n    // Arguments\n    const argumentList = helper.visibleArguments(cmd).map((argument) => {\n      return callFormatItem(\n        helper.styleArgumentTerm(helper.argumentTerm(argument)),\n        helper.styleArgumentDescription(helper.argumentDescription(argument)),\n      );\n    });\n    output = output.concat(\n      this.formatItemList('Arguments:', argumentList, helper),\n    );\n\n    // Options\n    const optionGroups = this.groupItems(\n      cmd.options,\n      helper.visibleOptions(cmd),\n      (option) => option.helpGroupHeading ?? 'Options:',\n    );\n    optionGroups.forEach((options, group) => {\n      const optionList = options.map((option) => {\n        return callFormatItem(\n          helper.styleOptionTerm(helper.optionTerm(option)),\n          helper.styleOptionDescription(helper.optionDescription(option)),\n        );\n      });\n      output = output.concat(this.formatItemList(group, optionList, helper));\n    });\n\n    if (helper.showGlobalOptions) {\n      const globalOptionList = helper\n        .visibleGlobalOptions(cmd)\n        .map((option) => {\n          return callFormatItem(\n            helper.styleOptionTerm(helper.optionTerm(option)),\n            helper.styleOptionDescription(helper.optionDescription(option)),\n          );\n        });\n      output = output.concat(\n        this.formatItemList('Global Options:', globalOptionList, helper),\n      );\n    }\n\n    // Commands\n    const commandGroups = this.groupItems(\n      cmd.commands,\n      helper.visibleCommands(cmd),\n      (sub) => sub.helpGroup() || 'Commands:',\n    );\n    commandGroups.forEach((commands, group) => {\n      const commandList = commands.map((sub) => {\n        return callFormatItem(\n          helper.styleSubcommandTerm(helper.subcommandTerm(sub)),\n          helper.styleSubcommandDescription(helper.subcommandDescription(sub)),\n        );\n      });\n      output = output.concat(this.formatItemList(group, commandList, helper));\n    });\n\n    return output.join('\\n');\n  }\n\n  /**\n   * Return display width of string, ignoring ANSI escape sequences. Used in padding and wrapping calculations.\n   *\n   * @param {string} str\n   * @returns {number}\n   */\n  displayWidth(str) {\n    return stripColor(str).length;\n  }\n\n  /**\n   * Style the title for displaying in the help. Called with 'Usage:', 'Options:', etc.\n   *\n   * @param {string} str\n   * @returns {string}\n   */\n  styleTitle(str) {\n    return str;\n  }\n\n  styleUsage(str) {\n    // Usage has lots of parts the user might like to color separately! Assume default usage string which is formed like:\n    //    command subcommand [options] [command] <foo> [bar]\n    return str\n      .split(' ')\n      .map((word) => {\n        if (word === '[options]') return this.styleOptionText(word);\n        if (word === '[command]') return this.styleSubcommandText(word);\n        if (word[0] === '[' || word[0] === '<')\n          return this.styleArgumentText(word);\n        return this.styleCommandText(word); // Restrict to initial words?\n      })\n      .join(' ');\n  }\n  styleCommandDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleOptionDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleSubcommandDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleArgumentDescription(str) {\n    return this.styleDescriptionText(str);\n  }\n  styleDescriptionText(str) {\n    return str;\n  }\n  styleOptionTerm(str) {\n    return this.styleOptionText(str);\n  }\n  styleSubcommandTerm(str) {\n    // This is very like usage with lots of parts! Assume default string which is formed like:\n    //    subcommand [options] <foo> [bar]\n    return str\n      .split(' ')\n      .map((word) => {\n        if (word === '[options]') return this.styleOptionText(word);\n        if (word[0] === '[' || word[0] === '<')\n          return this.styleArgumentText(word);\n        return this.styleSubcommandText(word); // Restrict to initial words?\n      })\n      .join(' ');\n  }\n  styleArgumentTerm(str) {\n    return this.styleArgumentText(str);\n  }\n  styleOptionText(str) {\n    return str;\n  }\n  styleArgumentText(str) {\n    return str;\n  }\n  styleSubcommandText(str) {\n    return str;\n  }\n  styleCommandText(str) {\n    return str;\n  }\n\n  /**\n   * Calculate the pad width from the maximum term length.\n   *\n   * @param {Command} cmd\n   * @param {Help} helper\n   * @returns {number}\n   */\n\n  padWidth(cmd, helper) {\n    return Math.max(\n      helper.longestOptionTermLength(cmd, helper),\n      helper.longestGlobalOptionTermLength(cmd, helper),\n      helper.longestSubcommandTermLength(cmd, helper),\n      helper.longestArgumentTermLength(cmd, helper),\n    );\n  }\n\n  /**\n   * Detect manually wrapped and indented strings by checking for line break followed by whitespace.\n   *\n   * @param {string} str\n   * @returns {boolean}\n   */\n  preformatted(str) {\n    return /\\n[^\\S\\r\\n]/.test(str);\n  }\n\n  /**\n   * Format the \"item\", which consists of a term and description. Pad the term and wrap the description, indenting the following lines.\n   *\n   * So \"TTT\", 5, \"DDD DDDD DD DDD\" might be formatted for this.helpWidth=17 like so:\n   *   TTT  DDD DDDD\n   *        DD DDD\n   *\n   * @param {string} term\n   * @param {number} termWidth\n   * @param {string} description\n   * @param {Help} helper\n   * @returns {string}\n   */\n  formatItem(term, termWidth, description, helper) {\n    const itemIndent = 2;\n    const itemIndentStr = ' '.repeat(itemIndent);\n    if (!description) return itemIndentStr + term;\n\n    // Pad the term out to a consistent width, so descriptions are aligned.\n    const paddedTerm = term.padEnd(\n      termWidth + term.length - helper.displayWidth(term),\n    );\n\n    // Format the description.\n    const spacerWidth = 2; // between term and description\n    const helpWidth = this.helpWidth ?? 80; // in case prepareContext() was not called\n    const remainingWidth = helpWidth - termWidth - spacerWidth - itemIndent;\n    let formattedDescription;\n    if (\n      remainingWidth < this.minWidthToWrap ||\n      helper.preformatted(description)\n    ) {\n      formattedDescription = description;\n    } else {\n      const wrappedDescription = helper.boxWrap(description, remainingWidth);\n      formattedDescription = wrappedDescription.replace(\n        /\\n/g,\n        '\\n' + ' '.repeat(termWidth + spacerWidth),\n      );\n    }\n\n    // Construct and overall indent.\n    return (\n      itemIndentStr +\n      paddedTerm +\n      ' '.repeat(spacerWidth) +\n      formattedDescription.replace(/\\n/g, `\\n${itemIndentStr}`)\n    );\n  }\n\n  /**\n   * Wrap a string at whitespace, preserving existing line breaks.\n   * Wrapping is skipped if the width is less than `minWidthToWrap`.\n   *\n   * @param {string} str\n   * @param {number} width\n   * @returns {string}\n   */\n  boxWrap(str, width) {\n    if (width < this.minWidthToWrap) return str;\n\n    const rawLines = str.split(/\\r\\n|\\n/);\n    // split up text by whitespace\n    const chunkPattern = /[\\s]*[^\\s]+/g;\n    const wrappedLines = [];\n    rawLines.forEach((line) => {\n      const chunks = line.match(chunkPattern);\n      if (chunks === null) {\n        wrappedLines.push('');\n        return;\n      }\n\n      let sumChunks = [chunks.shift()];\n      let sumWidth = this.displayWidth(sumChunks[0]);\n      chunks.forEach((chunk) => {\n        const visibleWidth = this.displayWidth(chunk);\n        // Accumulate chunks while they fit into width.\n        if (sumWidth + visibleWidth <= width) {\n          sumChunks.push(chunk);\n          sumWidth += visibleWidth;\n          return;\n        }\n        wrappedLines.push(sumChunks.join(''));\n\n        const nextChunk = chunk.trimStart(); // trim space at line break\n        sumChunks = [nextChunk];\n        sumWidth = this.displayWidth(nextChunk);\n      });\n      wrappedLines.push(sumChunks.join(''));\n    });\n\n    return wrappedLines.join('\\n');\n  }\n}\n\n/**\n * Strip style ANSI escape sequences from the string. In particular, SGR (Select Graphic Rendition) codes.\n *\n * @param {string} str\n * @returns {string}\n * @package\n */\n\nfunction stripColor(str) {\n  // eslint-disable-next-line no-control-regex\n  const sgrPattern = /\\x1b\\[\\d*(;\\d*)*m/g;\n  return str.replace(sgrPattern, '');\n}\n\nexports.Help = Help;\nexports.stripColor = stripColor;\n","const { InvalidArgumentError } = require('./error.js');\n\nclass Option {\n  /**\n   * Initialize a new `Option` with the given `flags` and `description`.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   */\n\n  constructor(flags, description) {\n    this.flags = flags;\n    this.description = description || '';\n\n    this.required = flags.includes('<'); // A value must be supplied when the option is specified.\n    this.optional = flags.includes('['); // A value is optional when the option is specified.\n    // variadic test ignores <value,...> et al which might be used to describe custom splitting of single argument\n    this.variadic = /\\w\\.\\.\\.[>\\]]$/.test(flags); // The option can take multiple values.\n    this.mandatory = false; // The option must have a value after parsing, which usually means it must be specified on command line.\n    const optionFlags = splitOptionFlags(flags);\n    this.short = optionFlags.shortFlag; // May be a short flag, undefined, or even a long flag (if option has two long flags).\n    this.long = optionFlags.longFlag;\n    this.negate = false;\n    if (this.long) {\n      this.negate = this.long.startsWith('--no-');\n    }\n    this.defaultValue = undefined;\n    this.defaultValueDescription = undefined;\n    this.presetArg = undefined;\n    this.envVar = undefined;\n    this.parseArg = undefined;\n    this.hidden = false;\n    this.argChoices = undefined;\n    this.conflictsWith = [];\n    this.implied = undefined;\n    this.helpGroupHeading = undefined; // soft initialised when option added to command\n  }\n\n  /**\n   * Set the default value, and optionally supply the description to be displayed in the help.\n   *\n   * @param {*} value\n   * @param {string} [description]\n   * @return {Option}\n   */\n\n  default(value, description) {\n    this.defaultValue = value;\n    this.defaultValueDescription = description;\n    return this;\n  }\n\n  /**\n   * Preset to use when option used without option-argument, especially optional but also boolean and negated.\n   * The custom processing (parseArg) is called.\n   *\n   * @example\n   * new Option('--color').default('GREYSCALE').preset('RGB');\n   * new Option('--donate [amount]').preset('20').argParser(parseFloat);\n   *\n   * @param {*} arg\n   * @return {Option}\n   */\n\n  preset(arg) {\n    this.presetArg = arg;\n    return this;\n  }\n\n  /**\n   * Add option name(s) that conflict with this option.\n   * An error will be displayed if conflicting options are found during parsing.\n   *\n   * @example\n   * new Option('--rgb').conflicts('cmyk');\n   * new Option('--js').conflicts(['ts', 'jsx']);\n   *\n   * @param {(string | string[])} names\n   * @return {Option}\n   */\n\n  conflicts(names) {\n    this.conflictsWith = this.conflictsWith.concat(names);\n    return this;\n  }\n\n  /**\n   * Specify implied option values for when this option is set and the implied options are not.\n   *\n   * The custom processing (parseArg) is not called on the implied values.\n   *\n   * @example\n   * program\n   *   .addOption(new Option('--log', 'write logging information to file'))\n   *   .addOption(new Option('--trace', 'log extra details').implies({ log: 'trace.txt' }));\n   *\n   * @param {object} impliedOptionValues\n   * @return {Option}\n   */\n  implies(impliedOptionValues) {\n    let newImplied = impliedOptionValues;\n    if (typeof impliedOptionValues === 'string') {\n      // string is not documented, but easy mistake and we can do what user probably intended.\n      newImplied = { [impliedOptionValues]: true };\n    }\n    this.implied = Object.assign(this.implied || {}, newImplied);\n    return this;\n  }\n\n  /**\n   * Set environment variable to check for option value.\n   *\n   * An environment variable is only used if when processed the current option value is\n   * undefined, or the source of the current value is 'default' or 'config' or 'env'.\n   *\n   * @param {string} name\n   * @return {Option}\n   */\n\n  env(name) {\n    this.envVar = name;\n    return this;\n  }\n\n  /**\n   * Set the custom handler for processing CLI option arguments into option values.\n   *\n   * @param {Function} [fn]\n   * @return {Option}\n   */\n\n  argParser(fn) {\n    this.parseArg = fn;\n    return this;\n  }\n\n  /**\n   * Whether the option is mandatory and must have a value after parsing.\n   *\n   * @param {boolean} [mandatory=true]\n   * @return {Option}\n   */\n\n  makeOptionMandatory(mandatory = true) {\n    this.mandatory = !!mandatory;\n    return this;\n  }\n\n  /**\n   * Hide option in help.\n   *\n   * @param {boolean} [hide=true]\n   * @return {Option}\n   */\n\n  hideHelp(hide = true) {\n    this.hidden = !!hide;\n    return this;\n  }\n\n  /**\n   * @package\n   */\n\n  _collectValue(value, previous) {\n    if (previous === this.defaultValue || !Array.isArray(previous)) {\n      return [value];\n    }\n\n    previous.push(value);\n    return previous;\n  }\n\n  /**\n   * Only allow option value to be one of choices.\n   *\n   * @param {string[]} values\n   * @return {Option}\n   */\n\n  choices(values) {\n    this.argChoices = values.slice();\n    this.parseArg = (arg, previous) => {\n      if (!this.argChoices.includes(arg)) {\n        throw new InvalidArgumentError(\n          `Allowed choices are ${this.argChoices.join(', ')}.`,\n        );\n      }\n      if (this.variadic) {\n        return this._collectValue(arg, previous);\n      }\n      return arg;\n    };\n    return this;\n  }\n\n  /**\n   * Return option name.\n   *\n   * @return {string}\n   */\n\n  name() {\n    if (this.long) {\n      return this.long.replace(/^--/, '');\n    }\n    return this.short.replace(/^-/, '');\n  }\n\n  /**\n   * Return option name, in a camelcase format that can be used\n   * as an object attribute key.\n   *\n   * @return {string}\n   */\n\n  attributeName() {\n    if (this.negate) {\n      return camelcase(this.name().replace(/^no-/, ''));\n    }\n    return camelcase(this.name());\n  }\n\n  /**\n   * Set the help group heading.\n   *\n   * @param {string} heading\n   * @return {Option}\n   */\n  helpGroup(heading) {\n    this.helpGroupHeading = heading;\n    return this;\n  }\n\n  /**\n   * Check if `arg` matches the short or long flag.\n   *\n   * @param {string} arg\n   * @return {boolean}\n   * @package\n   */\n\n  is(arg) {\n    return this.short === arg || this.long === arg;\n  }\n\n  /**\n   * Return whether a boolean option.\n   *\n   * Options are one of boolean, negated, required argument, or optional argument.\n   *\n   * @return {boolean}\n   * @package\n   */\n\n  isBoolean() {\n    return !this.required && !this.optional && !this.negate;\n  }\n}\n\n/**\n * This class is to make it easier to work with dual options, without changing the existing\n * implementation. We support separate dual options for separate positive and negative options,\n * like `--build` and `--no-build`, which share a single option value. This works nicely for some\n * use cases, but is tricky for others where we want separate behaviours despite\n * the single shared option value.\n */\nclass DualOptions {\n  /**\n   * @param {Option[]} options\n   */\n  constructor(options) {\n    this.positiveOptions = new Map();\n    this.negativeOptions = new Map();\n    this.dualOptions = new Set();\n    options.forEach((option) => {\n      if (option.negate) {\n        this.negativeOptions.set(option.attributeName(), option);\n      } else {\n        this.positiveOptions.set(option.attributeName(), option);\n      }\n    });\n    this.negativeOptions.forEach((value, key) => {\n      if (this.positiveOptions.has(key)) {\n        this.dualOptions.add(key);\n      }\n    });\n  }\n\n  /**\n   * Did the value come from the option, and not from possible matching dual option?\n   *\n   * @param {*} value\n   * @param {Option} option\n   * @returns {boolean}\n   */\n  valueFromOption(value, option) {\n    const optionKey = option.attributeName();\n    if (!this.dualOptions.has(optionKey)) return true;\n\n    // Use the value to deduce if (probably) came from the option.\n    const preset = this.negativeOptions.get(optionKey).presetArg;\n    const negativeValue = preset !== undefined ? preset : false;\n    return option.negate === (negativeValue === value);\n  }\n}\n\n/**\n * Convert string from kebab-case to camelCase.\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction camelcase(str) {\n  return str.split('-').reduce((str, word) => {\n    return str + word[0].toUpperCase() + word.slice(1);\n  });\n}\n\n/**\n * Split the short and long flag out of something like '-m,--mixed <value>'\n *\n * @private\n */\n\nfunction splitOptionFlags(flags) {\n  let shortFlag;\n  let longFlag;\n  // short flag, single dash and single character\n  const shortFlagExp = /^-[^-]$/;\n  // long flag, double dash and at least one character\n  const longFlagExp = /^--[^-]/;\n\n  const flagParts = flags.split(/[ |,]+/).concat('guard');\n  // Normal is short and/or long.\n  if (shortFlagExp.test(flagParts[0])) shortFlag = flagParts.shift();\n  if (longFlagExp.test(flagParts[0])) longFlag = flagParts.shift();\n  // Long then short. Rarely used but fine.\n  if (!shortFlag && shortFlagExp.test(flagParts[0]))\n    shortFlag = flagParts.shift();\n  // Allow two long flags, like '--ws, --workspace'\n  // This is the supported way to have a shortish option flag.\n  if (!shortFlag && longFlagExp.test(flagParts[0])) {\n    shortFlag = longFlag;\n    longFlag = flagParts.shift();\n  }\n\n  // Check for unprocessed flag. Fail noisily rather than silently ignore.\n  if (flagParts[0].startsWith('-')) {\n    const unsupportedFlag = flagParts[0];\n    const baseError = `option creation failed due to '${unsupportedFlag}' in option flags '${flags}'`;\n    if (/^-[^-][^-]/.test(unsupportedFlag))\n      throw new Error(\n        `${baseError}\n- a short flag is a single dash and a single character\n  - either use a single dash and a single character (for a short flag)\n  - or use a double dash for a long option (and can have two, like '--ws, --workspace')`,\n      );\n    if (shortFlagExp.test(unsupportedFlag))\n      throw new Error(`${baseError}\n- too many short flags`);\n    if (longFlagExp.test(unsupportedFlag))\n      throw new Error(`${baseError}\n- too many long flags`);\n\n    throw new Error(`${baseError}\n- unrecognised flag format`);\n  }\n  if (shortFlag === undefined && longFlag === undefined)\n    throw new Error(\n      `option creation failed due to no flags found in '${flags}'.`,\n    );\n\n  return { shortFlag, longFlag };\n}\n\nexports.Option = Option;\nexports.DualOptions = DualOptions;\n","const maxDistance = 3;\n\nfunction editDistance(a, b) {\n  // https://en.wikipedia.org/wiki/Damerau–Levenshtein_distance\n  // Calculating optimal string alignment distance, no substring is edited more than once.\n  // (Simple implementation.)\n\n  // Quick early exit, return worst case.\n  if (Math.abs(a.length - b.length) > maxDistance)\n    return Math.max(a.length, b.length);\n\n  // distance between prefix substrings of a and b\n  const d = [];\n\n  // pure deletions turn a into empty string\n  for (let i = 0; i <= a.length; i++) {\n    d[i] = [i];\n  }\n  // pure insertions turn empty string into b\n  for (let j = 0; j <= b.length; j++) {\n    d[0][j] = j;\n  }\n\n  // fill matrix\n  for (let j = 1; j <= b.length; j++) {\n    for (let i = 1; i <= a.length; i++) {\n      let cost = 1;\n      if (a[i - 1] === b[j - 1]) {\n        cost = 0;\n      } else {\n        cost = 1;\n      }\n      d[i][j] = Math.min(\n        d[i - 1][j] + 1, // deletion\n        d[i][j - 1] + 1, // insertion\n        d[i - 1][j - 1] + cost, // substitution\n      );\n      // transposition\n      if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n        d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + 1);\n      }\n    }\n  }\n\n  return d[a.length][b.length];\n}\n\n/**\n * Find close matches, restricted to same number of edits.\n *\n * @param {string} word\n * @param {string[]} candidates\n * @returns {string}\n */\n\nfunction suggestSimilar(word, candidates) {\n  if (!candidates || candidates.length === 0) return '';\n  // remove possible duplicates\n  candidates = Array.from(new Set(candidates));\n\n  const searchingOptions = word.startsWith('--');\n  if (searchingOptions) {\n    word = word.slice(2);\n    candidates = candidates.map((candidate) => candidate.slice(2));\n  }\n\n  let similar = [];\n  let bestDistance = maxDistance;\n  const minSimilarity = 0.4;\n  candidates.forEach((candidate) => {\n    if (candidate.length <= 1) return; // no one character guesses\n\n    const distance = editDistance(word, candidate);\n    const length = Math.max(word.length, candidate.length);\n    const similarity = (length - distance) / length;\n    if (similarity > minSimilarity) {\n      if (distance < bestDistance) {\n        // better edit distance, throw away previous worse matches\n        bestDistance = distance;\n        similar = [candidate];\n      } else if (distance === bestDistance) {\n        similar.push(candidate);\n      }\n    }\n  });\n\n  similar.sort((a, b) => a.localeCompare(b));\n  if (searchingOptions) {\n    similar = similar.map((candidate) => `--${candidate}`);\n  }\n\n  if (similar.length > 1) {\n    return `\\n(Did you mean one of ${similar.join(', ')}?)`;\n  }\n  if (similar.length === 1) {\n    return `\\n(Did you mean ${similar[0]}?)`;\n  }\n  return '';\n}\n\nexports.suggestSimilar = suggestSimilar;\n","const EventEmitter = require('node:events').EventEmitter;\nconst childProcess = require('node:child_process');\nconst path = require('node:path');\nconst fs = require('node:fs');\nconst process = require('node:process');\n\nconst { Argument, humanReadableArgName } = require('./argument.js');\nconst { CommanderError } = require('./error.js');\nconst { Help, stripColor } = require('./help.js');\nconst { Option, DualOptions } = require('./option.js');\nconst { suggestSimilar } = require('./suggestSimilar');\n\nclass Command extends EventEmitter {\n  /**\n   * Initialize a new `Command`.\n   *\n   * @param {string} [name]\n   */\n\n  constructor(name) {\n    super();\n    /** @type {Command[]} */\n    this.commands = [];\n    /** @type {Option[]} */\n    this.options = [];\n    this.parent = null;\n    this._allowUnknownOption = false;\n    this._allowExcessArguments = false;\n    /** @type {Argument[]} */\n    this.registeredArguments = [];\n    this._args = this.registeredArguments; // deprecated old name\n    /** @type {string[]} */\n    this.args = []; // cli args with options removed\n    this.rawArgs = [];\n    this.processedArgs = []; // like .args but after custom processing and collecting variadic\n    this._scriptPath = null;\n    this._name = name || '';\n    this._optionValues = {};\n    this._optionValueSources = {}; // default, env, cli etc\n    this._storeOptionsAsProperties = false;\n    this._actionHandler = null;\n    this._executableHandler = false;\n    this._executableFile = null; // custom name for executable\n    this._executableDir = null; // custom search directory for subcommands\n    this._defaultCommandName = null;\n    this._exitCallback = null;\n    this._aliases = [];\n    this._combineFlagAndOptionalValue = true;\n    this._description = '';\n    this._summary = '';\n    this._argsDescription = undefined; // legacy\n    this._enablePositionalOptions = false;\n    this._passThroughOptions = false;\n    this._lifeCycleHooks = {}; // a hash of arrays\n    /** @type {(boolean | string)} */\n    this._showHelpAfterError = false;\n    this._showSuggestionAfterError = true;\n    this._savedState = null; // used in save/restoreStateBeforeParse\n\n    // see configureOutput() for docs\n    this._outputConfiguration = {\n      writeOut: (str) => process.stdout.write(str),\n      writeErr: (str) => process.stderr.write(str),\n      outputError: (str, write) => write(str),\n      getOutHelpWidth: () =>\n        process.stdout.isTTY ? process.stdout.columns : undefined,\n      getErrHelpWidth: () =>\n        process.stderr.isTTY ? process.stderr.columns : undefined,\n      getOutHasColors: () =>\n        useColor() ?? (process.stdout.isTTY && process.stdout.hasColors?.()),\n      getErrHasColors: () =>\n        useColor() ?? (process.stderr.isTTY && process.stderr.hasColors?.()),\n      stripColor: (str) => stripColor(str),\n    };\n\n    this._hidden = false;\n    /** @type {(Option | null | undefined)} */\n    this._helpOption = undefined; // Lazy created on demand. May be null if help option is disabled.\n    this._addImplicitHelpCommand = undefined; // undecided whether true or false yet, not inherited\n    /** @type {Command} */\n    this._helpCommand = undefined; // lazy initialised, inherited\n    this._helpConfiguration = {};\n    /** @type {string | undefined} */\n    this._helpGroupHeading = undefined; // soft initialised when added to parent\n    /** @type {string | undefined} */\n    this._defaultCommandGroup = undefined;\n    /** @type {string | undefined} */\n    this._defaultOptionGroup = undefined;\n  }\n\n  /**\n   * Copy settings that are useful to have in common across root command and subcommands.\n   *\n   * (Used internally when adding a command using `.command()` so subcommands inherit parent settings.)\n   *\n   * @param {Command} sourceCommand\n   * @return {Command} `this` command for chaining\n   */\n  copyInheritedSettings(sourceCommand) {\n    this._outputConfiguration = sourceCommand._outputConfiguration;\n    this._helpOption = sourceCommand._helpOption;\n    this._helpCommand = sourceCommand._helpCommand;\n    this._helpConfiguration = sourceCommand._helpConfiguration;\n    this._exitCallback = sourceCommand._exitCallback;\n    this._storeOptionsAsProperties = sourceCommand._storeOptionsAsProperties;\n    this._combineFlagAndOptionalValue =\n      sourceCommand._combineFlagAndOptionalValue;\n    this._allowExcessArguments = sourceCommand._allowExcessArguments;\n    this._enablePositionalOptions = sourceCommand._enablePositionalOptions;\n    this._showHelpAfterError = sourceCommand._showHelpAfterError;\n    this._showSuggestionAfterError = sourceCommand._showSuggestionAfterError;\n\n    return this;\n  }\n\n  /**\n   * @returns {Command[]}\n   * @private\n   */\n\n  _getCommandAndAncestors() {\n    const result = [];\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    for (let command = this; command; command = command.parent) {\n      result.push(command);\n    }\n    return result;\n  }\n\n  /**\n   * Define a command.\n   *\n   * There are two styles of command: pay attention to where to put the description.\n   *\n   * @example\n   * // Command implemented using action handler (description is supplied separately to `.command`)\n   * program\n   *   .command('clone <source> [destination]')\n   *   .description('clone a repository into a newly created directory')\n   *   .action((source, destination) => {\n   *     console.log('clone command called');\n   *   });\n   *\n   * // Command implemented using separate executable file (description is second parameter to `.command`)\n   * program\n   *   .command('start <service>', 'start named service')\n   *   .command('stop [service]', 'stop named service, or all if no name supplied');\n   *\n   * @param {string} nameAndArgs - command name and arguments, args are `<required>` or `[optional]` and last may also be `variadic...`\n   * @param {(object | string)} [actionOptsOrExecDesc] - configuration options (for action), or description (for executable)\n   * @param {object} [execOpts] - configuration options (for executable)\n   * @return {Command} returns new command for action handler, or `this` for executable command\n   */\n\n  command(nameAndArgs, actionOptsOrExecDesc, execOpts) {\n    let desc = actionOptsOrExecDesc;\n    let opts = execOpts;\n    if (typeof desc === 'object' && desc !== null) {\n      opts = desc;\n      desc = null;\n    }\n    opts = opts || {};\n    const [, name, args] = nameAndArgs.match(/([^ ]+) *(.*)/);\n\n    const cmd = this.createCommand(name);\n    if (desc) {\n      cmd.description(desc);\n      cmd._executableHandler = true;\n    }\n    if (opts.isDefault) this._defaultCommandName = cmd._name;\n    cmd._hidden = !!(opts.noHelp || opts.hidden); // noHelp is deprecated old name for hidden\n    cmd._executableFile = opts.executableFile || null; // Custom name for executable file, set missing to null to match constructor\n    if (args) cmd.arguments(args);\n    this._registerCommand(cmd);\n    cmd.parent = this;\n    cmd.copyInheritedSettings(this);\n\n    if (desc) return this;\n    return cmd;\n  }\n\n  /**\n   * Factory routine to create a new unattached command.\n   *\n   * See .command() for creating an attached subcommand, which uses this routine to\n   * create the command. You can override createCommand to customise subcommands.\n   *\n   * @param {string} [name]\n   * @return {Command} new command\n   */\n\n  createCommand(name) {\n    return new Command(name);\n  }\n\n  /**\n   * You can customise the help with a subclass of Help by overriding createHelp,\n   * or by overriding Help properties using configureHelp().\n   *\n   * @return {Help}\n   */\n\n  createHelp() {\n    return Object.assign(new Help(), this.configureHelp());\n  }\n\n  /**\n   * You can customise the help by overriding Help properties using configureHelp(),\n   * or with a subclass of Help by overriding createHelp().\n   *\n   * @param {object} [configuration] - configuration options\n   * @return {(Command | object)} `this` command for chaining, or stored configuration\n   */\n\n  configureHelp(configuration) {\n    if (configuration === undefined) return this._helpConfiguration;\n\n    this._helpConfiguration = configuration;\n    return this;\n  }\n\n  /**\n   * The default output goes to stdout and stderr. You can customise this for special\n   * applications. You can also customise the display of errors by overriding outputError.\n   *\n   * The configuration properties are all functions:\n   *\n   *     // change how output being written, defaults to stdout and stderr\n   *     writeOut(str)\n   *     writeErr(str)\n   *     // change how output being written for errors, defaults to writeErr\n   *     outputError(str, write) // used for displaying errors and not used for displaying help\n   *     // specify width for wrapping help\n   *     getOutHelpWidth()\n   *     getErrHelpWidth()\n   *     // color support, currently only used with Help\n   *     getOutHasColors()\n   *     getErrHasColors()\n   *     stripColor() // used to remove ANSI escape codes if output does not have colors\n   *\n   * @param {object} [configuration] - configuration options\n   * @return {(Command | object)} `this` command for chaining, or stored configuration\n   */\n\n  configureOutput(configuration) {\n    if (configuration === undefined) return this._outputConfiguration;\n\n    this._outputConfiguration = {\n      ...this._outputConfiguration,\n      ...configuration,\n    };\n    return this;\n  }\n\n  /**\n   * Display the help or a custom message after an error occurs.\n   *\n   * @param {(boolean|string)} [displayHelp]\n   * @return {Command} `this` command for chaining\n   */\n  showHelpAfterError(displayHelp = true) {\n    if (typeof displayHelp !== 'string') displayHelp = !!displayHelp;\n    this._showHelpAfterError = displayHelp;\n    return this;\n  }\n\n  /**\n   * Display suggestion of similar commands for unknown commands, or options for unknown options.\n   *\n   * @param {boolean} [displaySuggestion]\n   * @return {Command} `this` command for chaining\n   */\n  showSuggestionAfterError(displaySuggestion = true) {\n    this._showSuggestionAfterError = !!displaySuggestion;\n    return this;\n  }\n\n  /**\n   * Add a prepared subcommand.\n   *\n   * See .command() for creating an attached subcommand which inherits settings from its parent.\n   *\n   * @param {Command} cmd - new subcommand\n   * @param {object} [opts] - configuration options\n   * @return {Command} `this` command for chaining\n   */\n\n  addCommand(cmd, opts) {\n    if (!cmd._name) {\n      throw new Error(`Command passed to .addCommand() must have a name\n- specify the name in Command constructor or using .name()`);\n    }\n\n    opts = opts || {};\n    if (opts.isDefault) this._defaultCommandName = cmd._name;\n    if (opts.noHelp || opts.hidden) cmd._hidden = true; // modifying passed command due to existing implementation\n\n    this._registerCommand(cmd);\n    cmd.parent = this;\n    cmd._checkForBrokenPassThrough();\n\n    return this;\n  }\n\n  /**\n   * Factory routine to create a new unattached argument.\n   *\n   * See .argument() for creating an attached argument, which uses this routine to\n   * create the argument. You can override createArgument to return a custom argument.\n   *\n   * @param {string} name\n   * @param {string} [description]\n   * @return {Argument} new argument\n   */\n\n  createArgument(name, description) {\n    return new Argument(name, description);\n  }\n\n  /**\n   * Define argument syntax for command.\n   *\n   * The default is that the argument is required, and you can explicitly\n   * indicate this with <> around the name. Put [] around the name for an optional argument.\n   *\n   * @example\n   * program.argument('<input-file>');\n   * program.argument('[output-file]');\n   *\n   * @param {string} name\n   * @param {string} [description]\n   * @param {(Function|*)} [parseArg] - custom argument processing function or default value\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n  argument(name, description, parseArg, defaultValue) {\n    const argument = this.createArgument(name, description);\n    if (typeof parseArg === 'function') {\n      argument.default(defaultValue).argParser(parseArg);\n    } else {\n      argument.default(parseArg);\n    }\n    this.addArgument(argument);\n    return this;\n  }\n\n  /**\n   * Define argument syntax for command, adding multiple at once (without descriptions).\n   *\n   * See also .argument().\n   *\n   * @example\n   * program.arguments('<cmd> [env]');\n   *\n   * @param {string} names\n   * @return {Command} `this` command for chaining\n   */\n\n  arguments(names) {\n    names\n      .trim()\n      .split(/ +/)\n      .forEach((detail) => {\n        this.argument(detail);\n      });\n    return this;\n  }\n\n  /**\n   * Define argument syntax for command, adding a prepared argument.\n   *\n   * @param {Argument} argument\n   * @return {Command} `this` command for chaining\n   */\n  addArgument(argument) {\n    const previousArgument = this.registeredArguments.slice(-1)[0];\n    if (previousArgument?.variadic) {\n      throw new Error(\n        `only the last argument can be variadic '${previousArgument.name()}'`,\n      );\n    }\n    if (\n      argument.required &&\n      argument.defaultValue !== undefined &&\n      argument.parseArg === undefined\n    ) {\n      throw new Error(\n        `a default value for a required argument is never used: '${argument.name()}'`,\n      );\n    }\n    this.registeredArguments.push(argument);\n    return this;\n  }\n\n  /**\n   * Customise or override default help command. By default a help command is automatically added if your command has subcommands.\n   *\n   * @example\n   *    program.helpCommand('help [cmd]');\n   *    program.helpCommand('help [cmd]', 'show help');\n   *    program.helpCommand(false); // suppress default help command\n   *    program.helpCommand(true); // add help command even if no subcommands\n   *\n   * @param {string|boolean} enableOrNameAndArgs - enable with custom name and/or arguments, or boolean to override whether added\n   * @param {string} [description] - custom description\n   * @return {Command} `this` command for chaining\n   */\n\n  helpCommand(enableOrNameAndArgs, description) {\n    if (typeof enableOrNameAndArgs === 'boolean') {\n      this._addImplicitHelpCommand = enableOrNameAndArgs;\n      if (enableOrNameAndArgs && this._defaultCommandGroup) {\n        // make the command to store the group\n        this._initCommandGroup(this._getHelpCommand());\n      }\n      return this;\n    }\n\n    const nameAndArgs = enableOrNameAndArgs ?? 'help [command]';\n    const [, helpName, helpArgs] = nameAndArgs.match(/([^ ]+) *(.*)/);\n    const helpDescription = description ?? 'display help for command';\n\n    const helpCommand = this.createCommand(helpName);\n    helpCommand.helpOption(false);\n    if (helpArgs) helpCommand.arguments(helpArgs);\n    if (helpDescription) helpCommand.description(helpDescription);\n\n    this._addImplicitHelpCommand = true;\n    this._helpCommand = helpCommand;\n    // init group unless lazy create\n    if (enableOrNameAndArgs || description) this._initCommandGroup(helpCommand);\n\n    return this;\n  }\n\n  /**\n   * Add prepared custom help command.\n   *\n   * @param {(Command|string|boolean)} helpCommand - custom help command, or deprecated enableOrNameAndArgs as for `.helpCommand()`\n   * @param {string} [deprecatedDescription] - deprecated custom description used with custom name only\n   * @return {Command} `this` command for chaining\n   */\n  addHelpCommand(helpCommand, deprecatedDescription) {\n    // If not passed an object, call through to helpCommand for backwards compatibility,\n    // as addHelpCommand was originally used like helpCommand is now.\n    if (typeof helpCommand !== 'object') {\n      this.helpCommand(helpCommand, deprecatedDescription);\n      return this;\n    }\n\n    this._addImplicitHelpCommand = true;\n    this._helpCommand = helpCommand;\n    this._initCommandGroup(helpCommand);\n    return this;\n  }\n\n  /**\n   * Lazy create help command.\n   *\n   * @return {(Command|null)}\n   * @package\n   */\n  _getHelpCommand() {\n    const hasImplicitHelpCommand =\n      this._addImplicitHelpCommand ??\n      (this.commands.length &&\n        !this._actionHandler &&\n        !this._findCommand('help'));\n\n    if (hasImplicitHelpCommand) {\n      if (this._helpCommand === undefined) {\n        this.helpCommand(undefined, undefined); // use default name and description\n      }\n      return this._helpCommand;\n    }\n    return null;\n  }\n\n  /**\n   * Add hook for life cycle event.\n   *\n   * @param {string} event\n   * @param {Function} listener\n   * @return {Command} `this` command for chaining\n   */\n\n  hook(event, listener) {\n    const allowedValues = ['preSubcommand', 'preAction', 'postAction'];\n    if (!allowedValues.includes(event)) {\n      throw new Error(`Unexpected value for event passed to hook : '${event}'.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n    }\n    if (this._lifeCycleHooks[event]) {\n      this._lifeCycleHooks[event].push(listener);\n    } else {\n      this._lifeCycleHooks[event] = [listener];\n    }\n    return this;\n  }\n\n  /**\n   * Register callback to use as replacement for calling process.exit.\n   *\n   * @param {Function} [fn] optional callback which will be passed a CommanderError, defaults to throwing\n   * @return {Command} `this` command for chaining\n   */\n\n  exitOverride(fn) {\n    if (fn) {\n      this._exitCallback = fn;\n    } else {\n      this._exitCallback = (err) => {\n        if (err.code !== 'commander.executeSubCommandAsync') {\n          throw err;\n        } else {\n          // Async callback from spawn events, not useful to throw.\n        }\n      };\n    }\n    return this;\n  }\n\n  /**\n   * Call process.exit, and _exitCallback if defined.\n   *\n   * @param {number} exitCode exit code for using with process.exit\n   * @param {string} code an id string representing the error\n   * @param {string} message human-readable description of the error\n   * @return never\n   * @private\n   */\n\n  _exit(exitCode, code, message) {\n    if (this._exitCallback) {\n      this._exitCallback(new CommanderError(exitCode, code, message));\n      // Expecting this line is not reached.\n    }\n    process.exit(exitCode);\n  }\n\n  /**\n   * Register callback `fn` for the command.\n   *\n   * @example\n   * program\n   *   .command('serve')\n   *   .description('start service')\n   *   .action(function() {\n   *      // do work here\n   *   });\n   *\n   * @param {Function} fn\n   * @return {Command} `this` command for chaining\n   */\n\n  action(fn) {\n    const listener = (args) => {\n      // The .action callback takes an extra parameter which is the command or options.\n      const expectedArgsCount = this.registeredArguments.length;\n      const actionArgs = args.slice(0, expectedArgsCount);\n      if (this._storeOptionsAsProperties) {\n        actionArgs[expectedArgsCount] = this; // backwards compatible \"options\"\n      } else {\n        actionArgs[expectedArgsCount] = this.opts();\n      }\n      actionArgs.push(this);\n\n      return fn.apply(this, actionArgs);\n    };\n    this._actionHandler = listener;\n    return this;\n  }\n\n  /**\n   * Factory routine to create a new unattached option.\n   *\n   * See .option() for creating an attached option, which uses this routine to\n   * create the option. You can override createOption to return a custom option.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @return {Option} new option\n   */\n\n  createOption(flags, description) {\n    return new Option(flags, description);\n  }\n\n  /**\n   * Wrap parseArgs to catch 'commander.invalidArgument'.\n   *\n   * @param {(Option | Argument)} target\n   * @param {string} value\n   * @param {*} previous\n   * @param {string} invalidArgumentMessage\n   * @private\n   */\n\n  _callParseArg(target, value, previous, invalidArgumentMessage) {\n    try {\n      return target.parseArg(value, previous);\n    } catch (err) {\n      if (err.code === 'commander.invalidArgument') {\n        const message = `${invalidArgumentMessage} ${err.message}`;\n        this.error(message, { exitCode: err.exitCode, code: err.code });\n      }\n      throw err;\n    }\n  }\n\n  /**\n   * Check for option flag conflicts.\n   * Register option if no conflicts found, or throw on conflict.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  _registerOption(option) {\n    const matchingOption =\n      (option.short && this._findOption(option.short)) ||\n      (option.long && this._findOption(option.long));\n    if (matchingOption) {\n      const matchingFlag =\n        option.long && this._findOption(option.long)\n          ? option.long\n          : option.short;\n      throw new Error(`Cannot add option '${option.flags}'${this._name && ` to command '${this._name}'`} due to conflicting flag '${matchingFlag}'\n-  already used by option '${matchingOption.flags}'`);\n    }\n\n    this._initOptionGroup(option);\n    this.options.push(option);\n  }\n\n  /**\n   * Check for command name and alias conflicts with existing commands.\n   * Register command if no conflicts found, or throw on conflict.\n   *\n   * @param {Command} command\n   * @private\n   */\n\n  _registerCommand(command) {\n    const knownBy = (cmd) => {\n      return [cmd.name()].concat(cmd.aliases());\n    };\n\n    const alreadyUsed = knownBy(command).find((name) =>\n      this._findCommand(name),\n    );\n    if (alreadyUsed) {\n      const existingCmd = knownBy(this._findCommand(alreadyUsed)).join('|');\n      const newCmd = knownBy(command).join('|');\n      throw new Error(\n        `cannot add command '${newCmd}' as already have command '${existingCmd}'`,\n      );\n    }\n\n    this._initCommandGroup(command);\n    this.commands.push(command);\n  }\n\n  /**\n   * Add an option.\n   *\n   * @param {Option} option\n   * @return {Command} `this` command for chaining\n   */\n  addOption(option) {\n    this._registerOption(option);\n\n    const oname = option.name();\n    const name = option.attributeName();\n\n    // store default value\n    if (option.negate) {\n      // --no-foo is special and defaults foo to true, unless a --foo option is already defined\n      const positiveLongFlag = option.long.replace(/^--no-/, '--');\n      if (!this._findOption(positiveLongFlag)) {\n        this.setOptionValueWithSource(\n          name,\n          option.defaultValue === undefined ? true : option.defaultValue,\n          'default',\n        );\n      }\n    } else if (option.defaultValue !== undefined) {\n      this.setOptionValueWithSource(name, option.defaultValue, 'default');\n    }\n\n    // handler for cli and env supplied values\n    const handleOptionValue = (val, invalidValueMessage, valueSource) => {\n      // val is null for optional option used without an optional-argument.\n      // val is undefined for boolean and negated option.\n      if (val == null && option.presetArg !== undefined) {\n        val = option.presetArg;\n      }\n\n      // custom processing\n      const oldValue = this.getOptionValue(name);\n      if (val !== null && option.parseArg) {\n        val = this._callParseArg(option, val, oldValue, invalidValueMessage);\n      } else if (val !== null && option.variadic) {\n        val = option._collectValue(val, oldValue);\n      }\n\n      // Fill-in appropriate missing values. Long winded but easy to follow.\n      if (val == null) {\n        if (option.negate) {\n          val = false;\n        } else if (option.isBoolean() || option.optional) {\n          val = true;\n        } else {\n          val = ''; // not normal, parseArg might have failed or be a mock function for testing\n        }\n      }\n      this.setOptionValueWithSource(name, val, valueSource);\n    };\n\n    this.on('option:' + oname, (val) => {\n      const invalidValueMessage = `error: option '${option.flags}' argument '${val}' is invalid.`;\n      handleOptionValue(val, invalidValueMessage, 'cli');\n    });\n\n    if (option.envVar) {\n      this.on('optionEnv:' + oname, (val) => {\n        const invalidValueMessage = `error: option '${option.flags}' value '${val}' from env '${option.envVar}' is invalid.`;\n        handleOptionValue(val, invalidValueMessage, 'env');\n      });\n    }\n\n    return this;\n  }\n\n  /**\n   * Internal implementation shared by .option() and .requiredOption()\n   *\n   * @return {Command} `this` command for chaining\n   * @private\n   */\n  _optionEx(config, flags, description, fn, defaultValue) {\n    if (typeof flags === 'object' && flags instanceof Option) {\n      throw new Error(\n        'To add an Option object use addOption() instead of option() or requiredOption()',\n      );\n    }\n    const option = this.createOption(flags, description);\n    option.makeOptionMandatory(!!config.mandatory);\n    if (typeof fn === 'function') {\n      option.default(defaultValue).argParser(fn);\n    } else if (fn instanceof RegExp) {\n      // deprecated\n      const regex = fn;\n      fn = (val, def) => {\n        const m = regex.exec(val);\n        return m ? m[0] : def;\n      };\n      option.default(defaultValue).argParser(fn);\n    } else {\n      option.default(fn);\n    }\n\n    return this.addOption(option);\n  }\n\n  /**\n   * Define option with `flags`, `description`, and optional argument parsing function or `defaultValue` or both.\n   *\n   * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space. A required\n   * option-argument is indicated by `<>` and an optional option-argument by `[]`.\n   *\n   * See the README for more details, and see also addOption() and requiredOption().\n   *\n   * @example\n   * program\n   *     .option('-p, --pepper', 'add pepper')\n   *     .option('--pt, --pizza-type <TYPE>', 'type of pizza') // required option-argument\n   *     .option('-c, --cheese [CHEESE]', 'add extra cheese', 'mozzarella') // optional option-argument with default\n   *     .option('-t, --tip <VALUE>', 'add tip to purchase cost', parseFloat) // custom parse function\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @param {(Function|*)} [parseArg] - custom option processing function or default value\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n\n  option(flags, description, parseArg, defaultValue) {\n    return this._optionEx({}, flags, description, parseArg, defaultValue);\n  }\n\n  /**\n   * Add a required option which must have a value after parsing. This usually means\n   * the option must be specified on the command line. (Otherwise the same as .option().)\n   *\n   * The `flags` string contains the short and/or long flags, separated by comma, a pipe or space.\n   *\n   * @param {string} flags\n   * @param {string} [description]\n   * @param {(Function|*)} [parseArg] - custom option processing function or default value\n   * @param {*} [defaultValue]\n   * @return {Command} `this` command for chaining\n   */\n\n  requiredOption(flags, description, parseArg, defaultValue) {\n    return this._optionEx(\n      { mandatory: true },\n      flags,\n      description,\n      parseArg,\n      defaultValue,\n    );\n  }\n\n  /**\n   * Alter parsing of short flags with optional values.\n   *\n   * @example\n   * // for `.option('-f,--flag [value]'):\n   * program.combineFlagAndOptionalValue(true);  // `-f80` is treated like `--flag=80`, this is the default behaviour\n   * program.combineFlagAndOptionalValue(false) // `-fb` is treated like `-f -b`\n   *\n   * @param {boolean} [combine] - if `true` or omitted, an optional value can be specified directly after the flag.\n   * @return {Command} `this` command for chaining\n   */\n  combineFlagAndOptionalValue(combine = true) {\n    this._combineFlagAndOptionalValue = !!combine;\n    return this;\n  }\n\n  /**\n   * Allow unknown options on the command line.\n   *\n   * @param {boolean} [allowUnknown] - if `true` or omitted, no error will be thrown for unknown options.\n   * @return {Command} `this` command for chaining\n   */\n  allowUnknownOption(allowUnknown = true) {\n    this._allowUnknownOption = !!allowUnknown;\n    return this;\n  }\n\n  /**\n   * Allow excess command-arguments on the command line. Pass false to make excess arguments an error.\n   *\n   * @param {boolean} [allowExcess] - if `true` or omitted, no error will be thrown for excess arguments.\n   * @return {Command} `this` command for chaining\n   */\n  allowExcessArguments(allowExcess = true) {\n    this._allowExcessArguments = !!allowExcess;\n    return this;\n  }\n\n  /**\n   * Enable positional options. Positional means global options are specified before subcommands which lets\n   * subcommands reuse the same option names, and also enables subcommands to turn on passThroughOptions.\n   * The default behaviour is non-positional and global options may appear anywhere on the command line.\n   *\n   * @param {boolean} [positional]\n   * @return {Command} `this` command for chaining\n   */\n  enablePositionalOptions(positional = true) {\n    this._enablePositionalOptions = !!positional;\n    return this;\n  }\n\n  /**\n   * Pass through options that come after command-arguments rather than treat them as command-options,\n   * so actual command-options come before command-arguments. Turning this on for a subcommand requires\n   * positional options to have been enabled on the program (parent commands).\n   * The default behaviour is non-positional and options may appear before or after command-arguments.\n   *\n   * @param {boolean} [passThrough] for unknown options.\n   * @return {Command} `this` command for chaining\n   */\n  passThroughOptions(passThrough = true) {\n    this._passThroughOptions = !!passThrough;\n    this._checkForBrokenPassThrough();\n    return this;\n  }\n\n  /**\n   * @private\n   */\n\n  _checkForBrokenPassThrough() {\n    if (\n      this.parent &&\n      this._passThroughOptions &&\n      !this.parent._enablePositionalOptions\n    ) {\n      throw new Error(\n        `passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`,\n      );\n    }\n  }\n\n  /**\n   * Whether to store option values as properties on command object,\n   * or store separately (specify false). In both cases the option values can be accessed using .opts().\n   *\n   * @param {boolean} [storeAsProperties=true]\n   * @return {Command} `this` command for chaining\n   */\n\n  storeOptionsAsProperties(storeAsProperties = true) {\n    if (this.options.length) {\n      throw new Error('call .storeOptionsAsProperties() before adding options');\n    }\n    if (Object.keys(this._optionValues).length) {\n      throw new Error(\n        'call .storeOptionsAsProperties() before setting option values',\n      );\n    }\n    this._storeOptionsAsProperties = !!storeAsProperties;\n    return this;\n  }\n\n  /**\n   * Retrieve option value.\n   *\n   * @param {string} key\n   * @return {object} value\n   */\n\n  getOptionValue(key) {\n    if (this._storeOptionsAsProperties) {\n      return this[key];\n    }\n    return this._optionValues[key];\n  }\n\n  /**\n   * Store option value.\n   *\n   * @param {string} key\n   * @param {object} value\n   * @return {Command} `this` command for chaining\n   */\n\n  setOptionValue(key, value) {\n    return this.setOptionValueWithSource(key, value, undefined);\n  }\n\n  /**\n   * Store option value and where the value came from.\n   *\n   * @param {string} key\n   * @param {object} value\n   * @param {string} source - expected values are default/config/env/cli/implied\n   * @return {Command} `this` command for chaining\n   */\n\n  setOptionValueWithSource(key, value, source) {\n    if (this._storeOptionsAsProperties) {\n      this[key] = value;\n    } else {\n      this._optionValues[key] = value;\n    }\n    this._optionValueSources[key] = source;\n    return this;\n  }\n\n  /**\n   * Get source of option value.\n   * Expected values are default | config | env | cli | implied\n   *\n   * @param {string} key\n   * @return {string}\n   */\n\n  getOptionValueSource(key) {\n    return this._optionValueSources[key];\n  }\n\n  /**\n   * Get source of option value. See also .optsWithGlobals().\n   * Expected values are default | config | env | cli | implied\n   *\n   * @param {string} key\n   * @return {string}\n   */\n\n  getOptionValueSourceWithGlobals(key) {\n    // global overwrites local, like optsWithGlobals\n    let source;\n    this._getCommandAndAncestors().forEach((cmd) => {\n      if (cmd.getOptionValueSource(key) !== undefined) {\n        source = cmd.getOptionValueSource(key);\n      }\n    });\n    return source;\n  }\n\n  /**\n   * Get user arguments from implied or explicit arguments.\n   * Side-effects: set _scriptPath if args included script. Used for default program name, and subcommand searches.\n   *\n   * @private\n   */\n\n  _prepareUserArgs(argv, parseOptions) {\n    if (argv !== undefined && !Array.isArray(argv)) {\n      throw new Error('first parameter to parse must be array or undefined');\n    }\n    parseOptions = parseOptions || {};\n\n    // auto-detect argument conventions if nothing supplied\n    if (argv === undefined && parseOptions.from === undefined) {\n      if (process.versions?.electron) {\n        parseOptions.from = 'electron';\n      }\n      // check node specific options for scenarios where user CLI args follow executable without scriptname\n      const execArgv = process.execArgv ?? [];\n      if (\n        execArgv.includes('-e') ||\n        execArgv.includes('--eval') ||\n        execArgv.includes('-p') ||\n        execArgv.includes('--print')\n      ) {\n        parseOptions.from = 'eval'; // internal usage, not documented\n      }\n    }\n\n    // default to using process.argv\n    if (argv === undefined) {\n      argv = process.argv;\n    }\n    this.rawArgs = argv.slice();\n\n    // extract the user args and scriptPath\n    let userArgs;\n    switch (parseOptions.from) {\n      case undefined:\n      case 'node':\n        this._scriptPath = argv[1];\n        userArgs = argv.slice(2);\n        break;\n      case 'electron':\n        // @ts-ignore: because defaultApp is an unknown property\n        if (process.defaultApp) {\n          this._scriptPath = argv[1];\n          userArgs = argv.slice(2);\n        } else {\n          userArgs = argv.slice(1);\n        }\n        break;\n      case 'user':\n        userArgs = argv.slice(0);\n        break;\n      case 'eval':\n        userArgs = argv.slice(1);\n        break;\n      default:\n        throw new Error(\n          `unexpected parse option { from: '${parseOptions.from}' }`,\n        );\n    }\n\n    // Find default name for program from arguments.\n    if (!this._name && this._scriptPath)\n      this.nameFromFilename(this._scriptPath);\n    this._name = this._name || 'program';\n\n    return userArgs;\n  }\n\n  /**\n   * Parse `argv`, setting options and invoking commands when defined.\n   *\n   * Use parseAsync instead of parse if any of your action handlers are async.\n   *\n   * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n   *\n   * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n   * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n   * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n   * - `'user'`: just user arguments\n   *\n   * @example\n   * program.parse(); // parse process.argv and auto-detect electron and special node flags\n   * program.parse(process.argv); // assume argv[0] is app and argv[1] is script\n   * program.parse(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n   *\n   * @param {string[]} [argv] - optional, defaults to process.argv\n   * @param {object} [parseOptions] - optionally specify style of options with from: node/user/electron\n   * @param {string} [parseOptions.from] - where the args are from: 'node', 'user', 'electron'\n   * @return {Command} `this` command for chaining\n   */\n\n  parse(argv, parseOptions) {\n    this._prepareForParse();\n    const userArgs = this._prepareUserArgs(argv, parseOptions);\n    this._parseCommand([], userArgs);\n\n    return this;\n  }\n\n  /**\n   * Parse `argv`, setting options and invoking commands when defined.\n   *\n   * Call with no parameters to parse `process.argv`. Detects Electron and special node options like `node --eval`. Easy mode!\n   *\n   * Or call with an array of strings to parse, and optionally where the user arguments start by specifying where the arguments are `from`:\n   * - `'node'`: default, `argv[0]` is the application and `argv[1]` is the script being run, with user arguments after that\n   * - `'electron'`: `argv[0]` is the application and `argv[1]` varies depending on whether the electron application is packaged\n   * - `'user'`: just user arguments\n   *\n   * @example\n   * await program.parseAsync(); // parse process.argv and auto-detect electron and special node flags\n   * await program.parseAsync(process.argv); // assume argv[0] is app and argv[1] is script\n   * await program.parseAsync(my-args, { from: 'user' }); // just user supplied arguments, nothing special about argv[0]\n   *\n   * @param {string[]} [argv]\n   * @param {object} [parseOptions]\n   * @param {string} parseOptions.from - where the args are from: 'node', 'user', 'electron'\n   * @return {Promise}\n   */\n\n  async parseAsync(argv, parseOptions) {\n    this._prepareForParse();\n    const userArgs = this._prepareUserArgs(argv, parseOptions);\n    await this._parseCommand([], userArgs);\n\n    return this;\n  }\n\n  _prepareForParse() {\n    if (this._savedState === null) {\n      this.saveStateBeforeParse();\n    } else {\n      this.restoreStateBeforeParse();\n    }\n  }\n\n  /**\n   * Called the first time parse is called to save state and allow a restore before subsequent calls to parse.\n   * Not usually called directly, but available for subclasses to save their custom state.\n   *\n   * This is called in a lazy way. Only commands used in parsing chain will have state saved.\n   */\n  saveStateBeforeParse() {\n    this._savedState = {\n      // name is stable if supplied by author, but may be unspecified for root command and deduced during parsing\n      _name: this._name,\n      // option values before parse have default values (including false for negated options)\n      // shallow clones\n      _optionValues: { ...this._optionValues },\n      _optionValueSources: { ...this._optionValueSources },\n    };\n  }\n\n  /**\n   * Restore state before parse for calls after the first.\n   * Not usually called directly, but available for subclasses to save their custom state.\n   *\n   * This is called in a lazy way. Only commands used in parsing chain will have state restored.\n   */\n  restoreStateBeforeParse() {\n    if (this._storeOptionsAsProperties)\n      throw new Error(`Can not call parse again when storeOptionsAsProperties is true.\n- either make a new Command for each call to parse, or stop storing options as properties`);\n\n    // clear state from _prepareUserArgs\n    this._name = this._savedState._name;\n    this._scriptPath = null;\n    this.rawArgs = [];\n    // clear state from setOptionValueWithSource\n    this._optionValues = { ...this._savedState._optionValues };\n    this._optionValueSources = { ...this._savedState._optionValueSources };\n    // clear state from _parseCommand\n    this.args = [];\n    // clear state from _processArguments\n    this.processedArgs = [];\n  }\n\n  /**\n   * Throw if expected executable is missing. Add lots of help for author.\n   *\n   * @param {string} executableFile\n   * @param {string} executableDir\n   * @param {string} subcommandName\n   */\n  _checkForMissingExecutable(executableFile, executableDir, subcommandName) {\n    if (fs.existsSync(executableFile)) return;\n\n    const executableDirMessage = executableDir\n      ? `searched for local subcommand relative to directory '${executableDir}'`\n      : 'no directory for search for local subcommand, use .executableDir() to supply a custom directory';\n    const executableMissing = `'${executableFile}' does not exist\n - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead\n - if the default executable name is not suitable, use the executableFile option to supply a custom name or path\n - ${executableDirMessage}`;\n    throw new Error(executableMissing);\n  }\n\n  /**\n   * Execute a sub-command executable.\n   *\n   * @private\n   */\n\n  _executeSubCommand(subcommand, args) {\n    args = args.slice();\n    let launchWithNode = false; // Use node for source targets so do not need to get permissions correct, and on Windows.\n    const sourceExt = ['.js', '.ts', '.tsx', '.mjs', '.cjs'];\n\n    function findFile(baseDir, baseName) {\n      // Look for specified file\n      const localBin = path.resolve(baseDir, baseName);\n      if (fs.existsSync(localBin)) return localBin;\n\n      // Stop looking if candidate already has an expected extension.\n      if (sourceExt.includes(path.extname(baseName))) return undefined;\n\n      // Try all the extensions.\n      const foundExt = sourceExt.find((ext) =>\n        fs.existsSync(`${localBin}${ext}`),\n      );\n      if (foundExt) return `${localBin}${foundExt}`;\n\n      return undefined;\n    }\n\n    // Not checking for help first. Unlikely to have mandatory and executable, and can't robustly test for help flags in external command.\n    this._checkForMissingMandatoryOptions();\n    this._checkForConflictingOptions();\n\n    // executableFile and executableDir might be full path, or just a name\n    let executableFile =\n      subcommand._executableFile || `${this._name}-${subcommand._name}`;\n    let executableDir = this._executableDir || '';\n    if (this._scriptPath) {\n      let resolvedScriptPath; // resolve possible symlink for installed npm binary\n      try {\n        resolvedScriptPath = fs.realpathSync(this._scriptPath);\n      } catch {\n        resolvedScriptPath = this._scriptPath;\n      }\n      executableDir = path.resolve(\n        path.dirname(resolvedScriptPath),\n        executableDir,\n      );\n    }\n\n    // Look for a local file in preference to a command in PATH.\n    if (executableDir) {\n      let localFile = findFile(executableDir, executableFile);\n\n      // Legacy search using prefix of script name instead of command name\n      if (!localFile && !subcommand._executableFile && this._scriptPath) {\n        const legacyName = path.basename(\n          this._scriptPath,\n          path.extname(this._scriptPath),\n        );\n        if (legacyName !== this._name) {\n          localFile = findFile(\n            executableDir,\n            `${legacyName}-${subcommand._name}`,\n          );\n        }\n      }\n      executableFile = localFile || executableFile;\n    }\n\n    launchWithNode = sourceExt.includes(path.extname(executableFile));\n\n    let proc;\n    if (process.platform !== 'win32') {\n      if (launchWithNode) {\n        args.unshift(executableFile);\n        // add executable arguments to spawn\n        args = incrementNodeInspectorPort(process.execArgv).concat(args);\n\n        proc = childProcess.spawn(process.argv[0], args, { stdio: 'inherit' });\n      } else {\n        proc = childProcess.spawn(executableFile, args, { stdio: 'inherit' });\n      }\n    } else {\n      this._checkForMissingExecutable(\n        executableFile,\n        executableDir,\n        subcommand._name,\n      );\n      args.unshift(executableFile);\n      // add executable arguments to spawn\n      args = incrementNodeInspectorPort(process.execArgv).concat(args);\n      proc = childProcess.spawn(process.execPath, args, { stdio: 'inherit' });\n    }\n\n    if (!proc.killed) {\n      // testing mainly to avoid leak warnings during unit tests with mocked spawn\n      const signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP'];\n      signals.forEach((signal) => {\n        process.on(signal, () => {\n          if (proc.killed === false && proc.exitCode === null) {\n            // @ts-ignore because signals not typed to known strings\n            proc.kill(signal);\n          }\n        });\n      });\n    }\n\n    // By default terminate process when spawned process terminates.\n    const exitCallback = this._exitCallback;\n    proc.on('close', (code) => {\n      code = code ?? 1; // code is null if spawned process terminated due to a signal\n      if (!exitCallback) {\n        process.exit(code);\n      } else {\n        exitCallback(\n          new CommanderError(\n            code,\n            'commander.executeSubCommandAsync',\n            '(close)',\n          ),\n        );\n      }\n    });\n    proc.on('error', (err) => {\n      // @ts-ignore: because err.code is an unknown property\n      if (err.code === 'ENOENT') {\n        this._checkForMissingExecutable(\n          executableFile,\n          executableDir,\n          subcommand._name,\n        );\n        // @ts-ignore: because err.code is an unknown property\n      } else if (err.code === 'EACCES') {\n        throw new Error(`'${executableFile}' not executable`);\n      }\n      if (!exitCallback) {\n        process.exit(1);\n      } else {\n        const wrappedError = new CommanderError(\n          1,\n          'commander.executeSubCommandAsync',\n          '(error)',\n        );\n        wrappedError.nestedError = err;\n        exitCallback(wrappedError);\n      }\n    });\n\n    // Store the reference to the child process\n    this.runningCommand = proc;\n  }\n\n  /**\n   * @private\n   */\n\n  _dispatchSubcommand(commandName, operands, unknown) {\n    const subCommand = this._findCommand(commandName);\n    if (!subCommand) this.help({ error: true });\n\n    subCommand._prepareForParse();\n    let promiseChain;\n    promiseChain = this._chainOrCallSubCommandHook(\n      promiseChain,\n      subCommand,\n      'preSubcommand',\n    );\n    promiseChain = this._chainOrCall(promiseChain, () => {\n      if (subCommand._executableHandler) {\n        this._executeSubCommand(subCommand, operands.concat(unknown));\n      } else {\n        return subCommand._parseCommand(operands, unknown);\n      }\n    });\n    return promiseChain;\n  }\n\n  /**\n   * Invoke help directly if possible, or dispatch if necessary.\n   * e.g. help foo\n   *\n   * @private\n   */\n\n  _dispatchHelpCommand(subcommandName) {\n    if (!subcommandName) {\n      this.help();\n    }\n    const subCommand = this._findCommand(subcommandName);\n    if (subCommand && !subCommand._executableHandler) {\n      subCommand.help();\n    }\n\n    // Fallback to parsing the help flag to invoke the help.\n    return this._dispatchSubcommand(\n      subcommandName,\n      [],\n      [this._getHelpOption()?.long ?? this._getHelpOption()?.short ?? '--help'],\n    );\n  }\n\n  /**\n   * Check this.args against expected this.registeredArguments.\n   *\n   * @private\n   */\n\n  _checkNumberOfArguments() {\n    // too few\n    this.registeredArguments.forEach((arg, i) => {\n      if (arg.required && this.args[i] == null) {\n        this.missingArgument(arg.name());\n      }\n    });\n    // too many\n    if (\n      this.registeredArguments.length > 0 &&\n      this.registeredArguments[this.registeredArguments.length - 1].variadic\n    ) {\n      return;\n    }\n    if (this.args.length > this.registeredArguments.length) {\n      this._excessArguments(this.args);\n    }\n  }\n\n  /**\n   * Process this.args using this.registeredArguments and save as this.processedArgs!\n   *\n   * @private\n   */\n\n  _processArguments() {\n    const myParseArg = (argument, value, previous) => {\n      // Extra processing for nice error message on parsing failure.\n      let parsedValue = value;\n      if (value !== null && argument.parseArg) {\n        const invalidValueMessage = `error: command-argument value '${value}' is invalid for argument '${argument.name()}'.`;\n        parsedValue = this._callParseArg(\n          argument,\n          value,\n          previous,\n          invalidValueMessage,\n        );\n      }\n      return parsedValue;\n    };\n\n    this._checkNumberOfArguments();\n\n    const processedArgs = [];\n    this.registeredArguments.forEach((declaredArg, index) => {\n      let value = declaredArg.defaultValue;\n      if (declaredArg.variadic) {\n        // Collect together remaining arguments for passing together as an array.\n        if (index < this.args.length) {\n          value = this.args.slice(index);\n          if (declaredArg.parseArg) {\n            value = value.reduce((processed, v) => {\n              return myParseArg(declaredArg, v, processed);\n            }, declaredArg.defaultValue);\n          }\n        } else if (value === undefined) {\n          value = [];\n        }\n      } else if (index < this.args.length) {\n        value = this.args[index];\n        if (declaredArg.parseArg) {\n          value = myParseArg(declaredArg, value, declaredArg.defaultValue);\n        }\n      }\n      processedArgs[index] = value;\n    });\n    this.processedArgs = processedArgs;\n  }\n\n  /**\n   * Once we have a promise we chain, but call synchronously until then.\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {Function} fn\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCall(promise, fn) {\n    // thenable\n    if (promise?.then && typeof promise.then === 'function') {\n      // already have a promise, chain callback\n      return promise.then(() => fn());\n    }\n    // callback might return a promise\n    return fn();\n  }\n\n  /**\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {string} event\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCallHooks(promise, event) {\n    let result = promise;\n    const hooks = [];\n    this._getCommandAndAncestors()\n      .reverse()\n      .filter((cmd) => cmd._lifeCycleHooks[event] !== undefined)\n      .forEach((hookedCommand) => {\n        hookedCommand._lifeCycleHooks[event].forEach((callback) => {\n          hooks.push({ hookedCommand, callback });\n        });\n      });\n    if (event === 'postAction') {\n      hooks.reverse();\n    }\n\n    hooks.forEach((hookDetail) => {\n      result = this._chainOrCall(result, () => {\n        return hookDetail.callback(hookDetail.hookedCommand, this);\n      });\n    });\n    return result;\n  }\n\n  /**\n   *\n   * @param {(Promise|undefined)} promise\n   * @param {Command} subCommand\n   * @param {string} event\n   * @return {(Promise|undefined)}\n   * @private\n   */\n\n  _chainOrCallSubCommandHook(promise, subCommand, event) {\n    let result = promise;\n    if (this._lifeCycleHooks[event] !== undefined) {\n      this._lifeCycleHooks[event].forEach((hook) => {\n        result = this._chainOrCall(result, () => {\n          return hook(this, subCommand);\n        });\n      });\n    }\n    return result;\n  }\n\n  /**\n   * Process arguments in context of this command.\n   * Returns action result, in case it is a promise.\n   *\n   * @private\n   */\n\n  _parseCommand(operands, unknown) {\n    const parsed = this.parseOptions(unknown);\n    this._parseOptionsEnv(); // after cli, so parseArg not called on both cli and env\n    this._parseOptionsImplied();\n    operands = operands.concat(parsed.operands);\n    unknown = parsed.unknown;\n    this.args = operands.concat(unknown);\n\n    if (operands && this._findCommand(operands[0])) {\n      return this._dispatchSubcommand(operands[0], operands.slice(1), unknown);\n    }\n    if (\n      this._getHelpCommand() &&\n      operands[0] === this._getHelpCommand().name()\n    ) {\n      return this._dispatchHelpCommand(operands[1]);\n    }\n    if (this._defaultCommandName) {\n      this._outputHelpIfRequested(unknown); // Run the help for default command from parent rather than passing to default command\n      return this._dispatchSubcommand(\n        this._defaultCommandName,\n        operands,\n        unknown,\n      );\n    }\n    if (\n      this.commands.length &&\n      this.args.length === 0 &&\n      !this._actionHandler &&\n      !this._defaultCommandName\n    ) {\n      // probably missing subcommand and no handler, user needs help (and exit)\n      this.help({ error: true });\n    }\n\n    this._outputHelpIfRequested(parsed.unknown);\n    this._checkForMissingMandatoryOptions();\n    this._checkForConflictingOptions();\n\n    // We do not always call this check to avoid masking a \"better\" error, like unknown command.\n    const checkForUnknownOptions = () => {\n      if (parsed.unknown.length > 0) {\n        this.unknownOption(parsed.unknown[0]);\n      }\n    };\n\n    const commandEvent = `command:${this.name()}`;\n    if (this._actionHandler) {\n      checkForUnknownOptions();\n      this._processArguments();\n\n      let promiseChain;\n      promiseChain = this._chainOrCallHooks(promiseChain, 'preAction');\n      promiseChain = this._chainOrCall(promiseChain, () =>\n        this._actionHandler(this.processedArgs),\n      );\n      if (this.parent) {\n        promiseChain = this._chainOrCall(promiseChain, () => {\n          this.parent.emit(commandEvent, operands, unknown); // legacy\n        });\n      }\n      promiseChain = this._chainOrCallHooks(promiseChain, 'postAction');\n      return promiseChain;\n    }\n    if (this.parent?.listenerCount(commandEvent)) {\n      checkForUnknownOptions();\n      this._processArguments();\n      this.parent.emit(commandEvent, operands, unknown); // legacy\n    } else if (operands.length) {\n      if (this._findCommand('*')) {\n        // legacy default command\n        return this._dispatchSubcommand('*', operands, unknown);\n      }\n      if (this.listenerCount('command:*')) {\n        // skip option check, emit event for possible misspelling suggestion\n        this.emit('command:*', operands, unknown);\n      } else if (this.commands.length) {\n        this.unknownCommand();\n      } else {\n        checkForUnknownOptions();\n        this._processArguments();\n      }\n    } else if (this.commands.length) {\n      checkForUnknownOptions();\n      // This command has subcommands and nothing hooked up at this level, so display help (and exit).\n      this.help({ error: true });\n    } else {\n      checkForUnknownOptions();\n      this._processArguments();\n      // fall through for caller to handle after calling .parse()\n    }\n  }\n\n  /**\n   * Find matching command.\n   *\n   * @private\n   * @return {Command | undefined}\n   */\n  _findCommand(name) {\n    if (!name) return undefined;\n    return this.commands.find(\n      (cmd) => cmd._name === name || cmd._aliases.includes(name),\n    );\n  }\n\n  /**\n   * Return an option matching `arg` if any.\n   *\n   * @param {string} arg\n   * @return {Option}\n   * @package\n   */\n\n  _findOption(arg) {\n    return this.options.find((option) => option.is(arg));\n  }\n\n  /**\n   * Display an error message if a mandatory option does not have a value.\n   * Called after checking for help flags in leaf subcommand.\n   *\n   * @private\n   */\n\n  _checkForMissingMandatoryOptions() {\n    // Walk up hierarchy so can call in subcommand after checking for displaying help.\n    this._getCommandAndAncestors().forEach((cmd) => {\n      cmd.options.forEach((anOption) => {\n        if (\n          anOption.mandatory &&\n          cmd.getOptionValue(anOption.attributeName()) === undefined\n        ) {\n          cmd.missingMandatoryOptionValue(anOption);\n        }\n      });\n    });\n  }\n\n  /**\n   * Display an error message if conflicting options are used together in this.\n   *\n   * @private\n   */\n  _checkForConflictingLocalOptions() {\n    const definedNonDefaultOptions = this.options.filter((option) => {\n      const optionKey = option.attributeName();\n      if (this.getOptionValue(optionKey) === undefined) {\n        return false;\n      }\n      return this.getOptionValueSource(optionKey) !== 'default';\n    });\n\n    const optionsWithConflicting = definedNonDefaultOptions.filter(\n      (option) => option.conflictsWith.length > 0,\n    );\n\n    optionsWithConflicting.forEach((option) => {\n      const conflictingAndDefined = definedNonDefaultOptions.find((defined) =>\n        option.conflictsWith.includes(defined.attributeName()),\n      );\n      if (conflictingAndDefined) {\n        this._conflictingOption(option, conflictingAndDefined);\n      }\n    });\n  }\n\n  /**\n   * Display an error message if conflicting options are used together.\n   * Called after checking for help flags in leaf subcommand.\n   *\n   * @private\n   */\n  _checkForConflictingOptions() {\n    // Walk up hierarchy so can call in subcommand after checking for displaying help.\n    this._getCommandAndAncestors().forEach((cmd) => {\n      cmd._checkForConflictingLocalOptions();\n    });\n  }\n\n  /**\n   * Parse options from `argv` removing known options,\n   * and return argv split into operands and unknown arguments.\n   *\n   * Side effects: modifies command by storing options. Does not reset state if called again.\n   *\n   * Examples:\n   *\n   *     argv => operands, unknown\n   *     --known kkk op => [op], []\n   *     op --known kkk => [op], []\n   *     sub --unknown uuu op => [sub], [--unknown uuu op]\n   *     sub -- --unknown uuu op => [sub --unknown uuu op], []\n   *\n   * @param {string[]} args\n   * @return {{operands: string[], unknown: string[]}}\n   */\n\n  parseOptions(args) {\n    const operands = []; // operands, not options or values\n    const unknown = []; // first unknown option and remaining unknown args\n    let dest = operands;\n\n    function maybeOption(arg) {\n      return arg.length > 1 && arg[0] === '-';\n    }\n\n    const negativeNumberArg = (arg) => {\n      // return false if not a negative number\n      if (!/^-(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?$/.test(arg)) return false;\n      // negative number is ok unless digit used as an option in command hierarchy\n      return !this._getCommandAndAncestors().some((cmd) =>\n        cmd.options\n          .map((opt) => opt.short)\n          .some((short) => /^-\\d$/.test(short)),\n      );\n    };\n\n    // parse options\n    let activeVariadicOption = null;\n    let activeGroup = null; // working through group of short options, like -abc\n    let i = 0;\n    while (i < args.length || activeGroup) {\n      const arg = activeGroup ?? args[i++];\n      activeGroup = null;\n\n      // literal\n      if (arg === '--') {\n        if (dest === unknown) dest.push(arg);\n        dest.push(...args.slice(i));\n        break;\n      }\n\n      if (\n        activeVariadicOption &&\n        (!maybeOption(arg) || negativeNumberArg(arg))\n      ) {\n        this.emit(`option:${activeVariadicOption.name()}`, arg);\n        continue;\n      }\n      activeVariadicOption = null;\n\n      if (maybeOption(arg)) {\n        const option = this._findOption(arg);\n        // recognised option, call listener to assign value with possible custom processing\n        if (option) {\n          if (option.required) {\n            const value = args[i++];\n            if (value === undefined) this.optionMissingArgument(option);\n            this.emit(`option:${option.name()}`, value);\n          } else if (option.optional) {\n            let value = null;\n            // historical behaviour is optional value is following arg unless an option\n            if (\n              i < args.length &&\n              (!maybeOption(args[i]) || negativeNumberArg(args[i]))\n            ) {\n              value = args[i++];\n            }\n            this.emit(`option:${option.name()}`, value);\n          } else {\n            // boolean flag\n            this.emit(`option:${option.name()}`);\n          }\n          activeVariadicOption = option.variadic ? option : null;\n          continue;\n        }\n      }\n\n      // Look for combo options following single dash, eat first one if known.\n      if (arg.length > 2 && arg[0] === '-' && arg[1] !== '-') {\n        const option = this._findOption(`-${arg[1]}`);\n        if (option) {\n          if (\n            option.required ||\n            (option.optional && this._combineFlagAndOptionalValue)\n          ) {\n            // option with value following in same argument\n            this.emit(`option:${option.name()}`, arg.slice(2));\n          } else {\n            // boolean option\n            this.emit(`option:${option.name()}`);\n            // remove the processed option and keep processing group\n            activeGroup = `-${arg.slice(2)}`;\n          }\n          continue;\n        }\n      }\n\n      // Look for known long flag with value, like --foo=bar\n      if (/^--[^=]+=/.test(arg)) {\n        const index = arg.indexOf('=');\n        const option = this._findOption(arg.slice(0, index));\n        if (option && (option.required || option.optional)) {\n          this.emit(`option:${option.name()}`, arg.slice(index + 1));\n          continue;\n        }\n      }\n\n      // Not a recognised option by this command.\n      // Might be a command-argument, or subcommand option, or unknown option, or help command or option.\n\n      // An unknown option means further arguments also classified as unknown so can be reprocessed by subcommands.\n      // A negative number in a leaf command is not an unknown option.\n      if (\n        dest === operands &&\n        maybeOption(arg) &&\n        !(this.commands.length === 0 && negativeNumberArg(arg))\n      ) {\n        dest = unknown;\n      }\n\n      // If using positionalOptions, stop processing our options at subcommand.\n      if (\n        (this._enablePositionalOptions || this._passThroughOptions) &&\n        operands.length === 0 &&\n        unknown.length === 0\n      ) {\n        if (this._findCommand(arg)) {\n          operands.push(arg);\n          unknown.push(...args.slice(i));\n          break;\n        } else if (\n          this._getHelpCommand() &&\n          arg === this._getHelpCommand().name()\n        ) {\n          operands.push(arg, ...args.slice(i));\n          break;\n        } else if (this._defaultCommandName) {\n          unknown.push(arg, ...args.slice(i));\n          break;\n        }\n      }\n\n      // If using passThroughOptions, stop processing options at first command-argument.\n      if (this._passThroughOptions) {\n        dest.push(arg, ...args.slice(i));\n        break;\n      }\n\n      // add arg\n      dest.push(arg);\n    }\n\n    return { operands, unknown };\n  }\n\n  /**\n   * Return an object containing local option values as key-value pairs.\n   *\n   * @return {object}\n   */\n  opts() {\n    if (this._storeOptionsAsProperties) {\n      // Preserve original behaviour so backwards compatible when still using properties\n      const result = {};\n      const len = this.options.length;\n\n      for (let i = 0; i < len; i++) {\n        const key = this.options[i].attributeName();\n        result[key] =\n          key === this._versionOptionName ? this._version : this[key];\n      }\n      return result;\n    }\n\n    return this._optionValues;\n  }\n\n  /**\n   * Return an object containing merged local and global option values as key-value pairs.\n   *\n   * @return {object}\n   */\n  optsWithGlobals() {\n    // globals overwrite locals\n    return this._getCommandAndAncestors().reduce(\n      (combinedOptions, cmd) => Object.assign(combinedOptions, cmd.opts()),\n      {},\n    );\n  }\n\n  /**\n   * Display error message and exit (or call exitOverride).\n   *\n   * @param {string} message\n   * @param {object} [errorOptions]\n   * @param {string} [errorOptions.code] - an id string representing the error\n   * @param {number} [errorOptions.exitCode] - used with process.exit\n   */\n  error(message, errorOptions) {\n    // output handling\n    this._outputConfiguration.outputError(\n      `${message}\\n`,\n      this._outputConfiguration.writeErr,\n    );\n    if (typeof this._showHelpAfterError === 'string') {\n      this._outputConfiguration.writeErr(`${this._showHelpAfterError}\\n`);\n    } else if (this._showHelpAfterError) {\n      this._outputConfiguration.writeErr('\\n');\n      this.outputHelp({ error: true });\n    }\n\n    // exit handling\n    const config = errorOptions || {};\n    const exitCode = config.exitCode || 1;\n    const code = config.code || 'commander.error';\n    this._exit(exitCode, code, message);\n  }\n\n  /**\n   * Apply any option related environment variables, if option does\n   * not have a value from cli or client code.\n   *\n   * @private\n   */\n  _parseOptionsEnv() {\n    this.options.forEach((option) => {\n      if (option.envVar && option.envVar in process.env) {\n        const optionKey = option.attributeName();\n        // Priority check. Do not overwrite cli or options from unknown source (client-code).\n        if (\n          this.getOptionValue(optionKey) === undefined ||\n          ['default', 'config', 'env'].includes(\n            this.getOptionValueSource(optionKey),\n          )\n        ) {\n          if (option.required || option.optional) {\n            // option can take a value\n            // keep very simple, optional always takes value\n            this.emit(`optionEnv:${option.name()}`, process.env[option.envVar]);\n          } else {\n            // boolean\n            // keep very simple, only care that envVar defined and not the value\n            this.emit(`optionEnv:${option.name()}`);\n          }\n        }\n      }\n    });\n  }\n\n  /**\n   * Apply any implied option values, if option is undefined or default value.\n   *\n   * @private\n   */\n  _parseOptionsImplied() {\n    const dualHelper = new DualOptions(this.options);\n    const hasCustomOptionValue = (optionKey) => {\n      return (\n        this.getOptionValue(optionKey) !== undefined &&\n        !['default', 'implied'].includes(this.getOptionValueSource(optionKey))\n      );\n    };\n    this.options\n      .filter(\n        (option) =>\n          option.implied !== undefined &&\n          hasCustomOptionValue(option.attributeName()) &&\n          dualHelper.valueFromOption(\n            this.getOptionValue(option.attributeName()),\n            option,\n          ),\n      )\n      .forEach((option) => {\n        Object.keys(option.implied)\n          .filter((impliedKey) => !hasCustomOptionValue(impliedKey))\n          .forEach((impliedKey) => {\n            this.setOptionValueWithSource(\n              impliedKey,\n              option.implied[impliedKey],\n              'implied',\n            );\n          });\n      });\n  }\n\n  /**\n   * Argument `name` is missing.\n   *\n   * @param {string} name\n   * @private\n   */\n\n  missingArgument(name) {\n    const message = `error: missing required argument '${name}'`;\n    this.error(message, { code: 'commander.missingArgument' });\n  }\n\n  /**\n   * `Option` is missing an argument.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  optionMissingArgument(option) {\n    const message = `error: option '${option.flags}' argument missing`;\n    this.error(message, { code: 'commander.optionMissingArgument' });\n  }\n\n  /**\n   * `Option` does not have a value, and is a mandatory option.\n   *\n   * @param {Option} option\n   * @private\n   */\n\n  missingMandatoryOptionValue(option) {\n    const message = `error: required option '${option.flags}' not specified`;\n    this.error(message, { code: 'commander.missingMandatoryOptionValue' });\n  }\n\n  /**\n   * `Option` conflicts with another option.\n   *\n   * @param {Option} option\n   * @param {Option} conflictingOption\n   * @private\n   */\n  _conflictingOption(option, conflictingOption) {\n    // The calling code does not know whether a negated option is the source of the\n    // value, so do some work to take an educated guess.\n    const findBestOptionFromValue = (option) => {\n      const optionKey = option.attributeName();\n      const optionValue = this.getOptionValue(optionKey);\n      const negativeOption = this.options.find(\n        (target) => target.negate && optionKey === target.attributeName(),\n      );\n      const positiveOption = this.options.find(\n        (target) => !target.negate && optionKey === target.attributeName(),\n      );\n      if (\n        negativeOption &&\n        ((negativeOption.presetArg === undefined && optionValue === false) ||\n          (negativeOption.presetArg !== undefined &&\n            optionValue === negativeOption.presetArg))\n      ) {\n        return negativeOption;\n      }\n      return positiveOption || option;\n    };\n\n    const getErrorMessage = (option) => {\n      const bestOption = findBestOptionFromValue(option);\n      const optionKey = bestOption.attributeName();\n      const source = this.getOptionValueSource(optionKey);\n      if (source === 'env') {\n        return `environment variable '${bestOption.envVar}'`;\n      }\n      return `option '${bestOption.flags}'`;\n    };\n\n    const message = `error: ${getErrorMessage(option)} cannot be used with ${getErrorMessage(conflictingOption)}`;\n    this.error(message, { code: 'commander.conflictingOption' });\n  }\n\n  /**\n   * Unknown option `flag`.\n   *\n   * @param {string} flag\n   * @private\n   */\n\n  unknownOption(flag) {\n    if (this._allowUnknownOption) return;\n    let suggestion = '';\n\n    if (flag.startsWith('--') && this._showSuggestionAfterError) {\n      // Looping to pick up the global options too\n      let candidateFlags = [];\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      let command = this;\n      do {\n        const moreFlags = command\n          .createHelp()\n          .visibleOptions(command)\n          .filter((option) => option.long)\n          .map((option) => option.long);\n        candidateFlags = candidateFlags.concat(moreFlags);\n        command = command.parent;\n      } while (command && !command._enablePositionalOptions);\n      suggestion = suggestSimilar(flag, candidateFlags);\n    }\n\n    const message = `error: unknown option '${flag}'${suggestion}`;\n    this.error(message, { code: 'commander.unknownOption' });\n  }\n\n  /**\n   * Excess arguments, more than expected.\n   *\n   * @param {string[]} receivedArgs\n   * @private\n   */\n\n  _excessArguments(receivedArgs) {\n    if (this._allowExcessArguments) return;\n\n    const expected = this.registeredArguments.length;\n    const s = expected === 1 ? '' : 's';\n    const forSubcommand = this.parent ? ` for '${this.name()}'` : '';\n    const message = `error: too many arguments${forSubcommand}. Expected ${expected} argument${s} but got ${receivedArgs.length}.`;\n    this.error(message, { code: 'commander.excessArguments' });\n  }\n\n  /**\n   * Unknown command.\n   *\n   * @private\n   */\n\n  unknownCommand() {\n    const unknownName = this.args[0];\n    let suggestion = '';\n\n    if (this._showSuggestionAfterError) {\n      const candidateNames = [];\n      this.createHelp()\n        .visibleCommands(this)\n        .forEach((command) => {\n          candidateNames.push(command.name());\n          // just visible alias\n          if (command.alias()) candidateNames.push(command.alias());\n        });\n      suggestion = suggestSimilar(unknownName, candidateNames);\n    }\n\n    const message = `error: unknown command '${unknownName}'${suggestion}`;\n    this.error(message, { code: 'commander.unknownCommand' });\n  }\n\n  /**\n   * Get or set the program version.\n   *\n   * This method auto-registers the \"-V, --version\" option which will print the version number.\n   *\n   * You can optionally supply the flags and description to override the defaults.\n   *\n   * @param {string} [str]\n   * @param {string} [flags]\n   * @param {string} [description]\n   * @return {(this | string | undefined)} `this` command for chaining, or version string if no arguments\n   */\n\n  version(str, flags, description) {\n    if (str === undefined) return this._version;\n    this._version = str;\n    flags = flags || '-V, --version';\n    description = description || 'output the version number';\n    const versionOption = this.createOption(flags, description);\n    this._versionOptionName = versionOption.attributeName();\n    this._registerOption(versionOption);\n\n    this.on('option:' + versionOption.name(), () => {\n      this._outputConfiguration.writeOut(`${str}\\n`);\n      this._exit(0, 'commander.version', str);\n    });\n    return this;\n  }\n\n  /**\n   * Set the description.\n   *\n   * @param {string} [str]\n   * @param {object} [argsDescription]\n   * @return {(string|Command)}\n   */\n  description(str, argsDescription) {\n    if (str === undefined && argsDescription === undefined)\n      return this._description;\n    this._description = str;\n    if (argsDescription) {\n      this._argsDescription = argsDescription;\n    }\n    return this;\n  }\n\n  /**\n   * Set the summary. Used when listed as subcommand of parent.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n  summary(str) {\n    if (str === undefined) return this._summary;\n    this._summary = str;\n    return this;\n  }\n\n  /**\n   * Set an alias for the command.\n   *\n   * You may call more than once to add multiple aliases. Only the first alias is shown in the auto-generated help.\n   *\n   * @param {string} [alias]\n   * @return {(string|Command)}\n   */\n\n  alias(alias) {\n    if (alias === undefined) return this._aliases[0]; // just return first, for backwards compatibility\n\n    /** @type {Command} */\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    let command = this;\n    if (\n      this.commands.length !== 0 &&\n      this.commands[this.commands.length - 1]._executableHandler\n    ) {\n      // assume adding alias for last added executable subcommand, rather than this\n      command = this.commands[this.commands.length - 1];\n    }\n\n    if (alias === command._name)\n      throw new Error(\"Command alias can't be the same as its name\");\n    const matchingCommand = this.parent?._findCommand(alias);\n    if (matchingCommand) {\n      // c.f. _registerCommand\n      const existingCmd = [matchingCommand.name()]\n        .concat(matchingCommand.aliases())\n        .join('|');\n      throw new Error(\n        `cannot add alias '${alias}' to command '${this.name()}' as already have command '${existingCmd}'`,\n      );\n    }\n\n    command._aliases.push(alias);\n    return this;\n  }\n\n  /**\n   * Set aliases for the command.\n   *\n   * Only the first alias is shown in the auto-generated help.\n   *\n   * @param {string[]} [aliases]\n   * @return {(string[]|Command)}\n   */\n\n  aliases(aliases) {\n    // Getter for the array of aliases is the main reason for having aliases() in addition to alias().\n    if (aliases === undefined) return this._aliases;\n\n    aliases.forEach((alias) => this.alias(alias));\n    return this;\n  }\n\n  /**\n   * Set / get the command usage `str`.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n\n  usage(str) {\n    if (str === undefined) {\n      if (this._usage) return this._usage;\n\n      const args = this.registeredArguments.map((arg) => {\n        return humanReadableArgName(arg);\n      });\n      return []\n        .concat(\n          this.options.length || this._helpOption !== null ? '[options]' : [],\n          this.commands.length ? '[command]' : [],\n          this.registeredArguments.length ? args : [],\n        )\n        .join(' ');\n    }\n\n    this._usage = str;\n    return this;\n  }\n\n  /**\n   * Get or set the name of the command.\n   *\n   * @param {string} [str]\n   * @return {(string|Command)}\n   */\n\n  name(str) {\n    if (str === undefined) return this._name;\n    this._name = str;\n    return this;\n  }\n\n  /**\n   * Set/get the help group heading for this subcommand in parent command's help.\n   *\n   * @param {string} [heading]\n   * @return {Command | string}\n   */\n\n  helpGroup(heading) {\n    if (heading === undefined) return this._helpGroupHeading ?? '';\n    this._helpGroupHeading = heading;\n    return this;\n  }\n\n  /**\n   * Set/get the default help group heading for subcommands added to this command.\n   * (This does not override a group set directly on the subcommand using .helpGroup().)\n   *\n   * @example\n   * program.commandsGroup('Development Commands:);\n   * program.command('watch')...\n   * program.command('lint')...\n   * ...\n   *\n   * @param {string} [heading]\n   * @returns {Command | string}\n   */\n  commandsGroup(heading) {\n    if (heading === undefined) return this._defaultCommandGroup ?? '';\n    this._defaultCommandGroup = heading;\n    return this;\n  }\n\n  /**\n   * Set/get the default help group heading for options added to this command.\n   * (This does not override a group set directly on the option using .helpGroup().)\n   *\n   * @example\n   * program\n   *   .optionsGroup('Development Options:')\n   *   .option('-d, --debug', 'output extra debugging')\n   *   .option('-p, --profile', 'output profiling information')\n   *\n   * @param {string} [heading]\n   * @returns {Command | string}\n   */\n  optionsGroup(heading) {\n    if (heading === undefined) return this._defaultOptionGroup ?? '';\n    this._defaultOptionGroup = heading;\n    return this;\n  }\n\n  /**\n   * @param {Option} option\n   * @private\n   */\n  _initOptionGroup(option) {\n    if (this._defaultOptionGroup && !option.helpGroupHeading)\n      option.helpGroup(this._defaultOptionGroup);\n  }\n\n  /**\n   * @param {Command} cmd\n   * @private\n   */\n  _initCommandGroup(cmd) {\n    if (this._defaultCommandGroup && !cmd.helpGroup())\n      cmd.helpGroup(this._defaultCommandGroup);\n  }\n\n  /**\n   * Set the name of the command from script filename, such as process.argv[1],\n   * or require.main.filename, or __filename.\n   *\n   * (Used internally and public although not documented in README.)\n   *\n   * @example\n   * program.nameFromFilename(require.main.filename);\n   *\n   * @param {string} filename\n   * @return {Command}\n   */\n\n  nameFromFilename(filename) {\n    this._name = path.basename(filename, path.extname(filename));\n\n    return this;\n  }\n\n  /**\n   * Get or set the directory for searching for executable subcommands of this command.\n   *\n   * @example\n   * program.executableDir(__dirname);\n   * // or\n   * program.executableDir('subcommands');\n   *\n   * @param {string} [path]\n   * @return {(string|null|Command)}\n   */\n\n  executableDir(path) {\n    if (path === undefined) return this._executableDir;\n    this._executableDir = path;\n    return this;\n  }\n\n  /**\n   * Return program help documentation.\n   *\n   * @param {{ error: boolean }} [contextOptions] - pass {error:true} to wrap for stderr instead of stdout\n   * @return {string}\n   */\n\n  helpInformation(contextOptions) {\n    const helper = this.createHelp();\n    const context = this._getOutputContext(contextOptions);\n    helper.prepareContext({\n      error: context.error,\n      helpWidth: context.helpWidth,\n      outputHasColors: context.hasColors,\n    });\n    const text = helper.formatHelp(this, helper);\n    if (context.hasColors) return text;\n    return this._outputConfiguration.stripColor(text);\n  }\n\n  /**\n   * @typedef HelpContext\n   * @type {object}\n   * @property {boolean} error\n   * @property {number} helpWidth\n   * @property {boolean} hasColors\n   * @property {function} write - includes stripColor if needed\n   *\n   * @returns {HelpContext}\n   * @private\n   */\n\n  _getOutputContext(contextOptions) {\n    contextOptions = contextOptions || {};\n    const error = !!contextOptions.error;\n    let baseWrite;\n    let hasColors;\n    let helpWidth;\n    if (error) {\n      baseWrite = (str) => this._outputConfiguration.writeErr(str);\n      hasColors = this._outputConfiguration.getErrHasColors();\n      helpWidth = this._outputConfiguration.getErrHelpWidth();\n    } else {\n      baseWrite = (str) => this._outputConfiguration.writeOut(str);\n      hasColors = this._outputConfiguration.getOutHasColors();\n      helpWidth = this._outputConfiguration.getOutHelpWidth();\n    }\n    const write = (str) => {\n      if (!hasColors) str = this._outputConfiguration.stripColor(str);\n      return baseWrite(str);\n    };\n    return { error, write, hasColors, helpWidth };\n  }\n\n  /**\n   * Output help information for this command.\n   *\n   * Outputs built-in help, and custom text added using `.addHelpText()`.\n   *\n   * @param {{ error: boolean } | Function} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n   */\n\n  outputHelp(contextOptions) {\n    let deprecatedCallback;\n    if (typeof contextOptions === 'function') {\n      deprecatedCallback = contextOptions;\n      contextOptions = undefined;\n    }\n\n    const outputContext = this._getOutputContext(contextOptions);\n    /** @type {HelpTextEventContext} */\n    const eventContext = {\n      error: outputContext.error,\n      write: outputContext.write,\n      command: this,\n    };\n\n    this._getCommandAndAncestors()\n      .reverse()\n      .forEach((command) => command.emit('beforeAllHelp', eventContext));\n    this.emit('beforeHelp', eventContext);\n\n    let helpInformation = this.helpInformation({ error: outputContext.error });\n    if (deprecatedCallback) {\n      helpInformation = deprecatedCallback(helpInformation);\n      if (\n        typeof helpInformation !== 'string' &&\n        !Buffer.isBuffer(helpInformation)\n      ) {\n        throw new Error('outputHelp callback must return a string or a Buffer');\n      }\n    }\n    outputContext.write(helpInformation);\n\n    if (this._getHelpOption()?.long) {\n      this.emit(this._getHelpOption().long); // deprecated\n    }\n    this.emit('afterHelp', eventContext);\n    this._getCommandAndAncestors().forEach((command) =>\n      command.emit('afterAllHelp', eventContext),\n    );\n  }\n\n  /**\n   * You can pass in flags and a description to customise the built-in help option.\n   * Pass in false to disable the built-in help option.\n   *\n   * @example\n   * program.helpOption('-?, --help' 'show help'); // customise\n   * program.helpOption(false); // disable\n   *\n   * @param {(string | boolean)} flags\n   * @param {string} [description]\n   * @return {Command} `this` command for chaining\n   */\n\n  helpOption(flags, description) {\n    // Support enabling/disabling built-in help option.\n    if (typeof flags === 'boolean') {\n      if (flags) {\n        if (this._helpOption === null) this._helpOption = undefined; // reenable\n        if (this._defaultOptionGroup) {\n          // make the option to store the group\n          this._initOptionGroup(this._getHelpOption());\n        }\n      } else {\n        this._helpOption = null; // disable\n      }\n      return this;\n    }\n\n    // Customise flags and description.\n    this._helpOption = this.createOption(\n      flags ?? '-h, --help',\n      description ?? 'display help for command',\n    );\n    // init group unless lazy create\n    if (flags || description) this._initOptionGroup(this._helpOption);\n\n    return this;\n  }\n\n  /**\n   * Lazy create help option.\n   * Returns null if has been disabled with .helpOption(false).\n   *\n   * @returns {(Option | null)} the help option\n   * @package\n   */\n  _getHelpOption() {\n    // Lazy create help option on demand.\n    if (this._helpOption === undefined) {\n      this.helpOption(undefined, undefined);\n    }\n    return this._helpOption;\n  }\n\n  /**\n   * Supply your own option to use for the built-in help option.\n   * This is an alternative to using helpOption() to customise the flags and description etc.\n   *\n   * @param {Option} option\n   * @return {Command} `this` command for chaining\n   */\n  addHelpOption(option) {\n    this._helpOption = option;\n    this._initOptionGroup(option);\n    return this;\n  }\n\n  /**\n   * Output help information and exit.\n   *\n   * Outputs built-in help, and custom text added using `.addHelpText()`.\n   *\n   * @param {{ error: boolean }} [contextOptions] - pass {error:true} to write to stderr instead of stdout\n   */\n\n  help(contextOptions) {\n    this.outputHelp(contextOptions);\n    let exitCode = Number(process.exitCode ?? 0); // process.exitCode does allow a string or an integer, but we prefer just a number\n    if (\n      exitCode === 0 &&\n      contextOptions &&\n      typeof contextOptions !== 'function' &&\n      contextOptions.error\n    ) {\n      exitCode = 1;\n    }\n    // message: do not have all displayed text available so only passing placeholder.\n    this._exit(exitCode, 'commander.help', '(outputHelp)');\n  }\n\n  /**\n   * // Do a little typing to coordinate emit and listener for the help text events.\n   * @typedef HelpTextEventContext\n   * @type {object}\n   * @property {boolean} error\n   * @property {Command} command\n   * @property {function} write\n   */\n\n  /**\n   * Add additional text to be displayed with the built-in help.\n   *\n   * Position is 'before' or 'after' to affect just this command,\n   * and 'beforeAll' or 'afterAll' to affect this command and all its subcommands.\n   *\n   * @param {string} position - before or after built-in help\n   * @param {(string | Function)} text - string to add, or a function returning a string\n   * @return {Command} `this` command for chaining\n   */\n\n  addHelpText(position, text) {\n    const allowedValues = ['beforeAll', 'before', 'after', 'afterAll'];\n    if (!allowedValues.includes(position)) {\n      throw new Error(`Unexpected value for position to addHelpText.\nExpecting one of '${allowedValues.join(\"', '\")}'`);\n    }\n\n    const helpEvent = `${position}Help`;\n    this.on(helpEvent, (/** @type {HelpTextEventContext} */ context) => {\n      let helpStr;\n      if (typeof text === 'function') {\n        helpStr = text({ error: context.error, command: context.command });\n      } else {\n        helpStr = text;\n      }\n      // Ignore falsy value when nothing to output.\n      if (helpStr) {\n        context.write(`${helpStr}\\n`);\n      }\n    });\n    return this;\n  }\n\n  /**\n   * Output help information if help flags specified\n   *\n   * @param {Array} args - array of options to search for help flags\n   * @private\n   */\n\n  _outputHelpIfRequested(args) {\n    const helpOption = this._getHelpOption();\n    const helpRequested = helpOption && args.find((arg) => helpOption.is(arg));\n    if (helpRequested) {\n      this.outputHelp();\n      // (Do not have all displayed text available so only passing placeholder.)\n      this._exit(0, 'commander.helpDisplayed', '(outputHelp)');\n    }\n  }\n}\n\n/**\n * Scan arguments and increment port number for inspect calls (to avoid conflicts when spawning new command).\n *\n * @param {string[]} args - array of arguments from node.execArgv\n * @returns {string[]}\n * @private\n */\n\nfunction incrementNodeInspectorPort(args) {\n  // Testing for these options:\n  //  --inspect[=[host:]port]\n  //  --inspect-brk[=[host:]port]\n  //  --inspect-port=[host:]port\n  return args.map((arg) => {\n    if (!arg.startsWith('--inspect')) {\n      return arg;\n    }\n    let debugOption;\n    let debugHost = '127.0.0.1';\n    let debugPort = '9229';\n    let match;\n    if ((match = arg.match(/^(--inspect(-brk)?)$/)) !== null) {\n      // e.g. --inspect\n      debugOption = match[1];\n    } else if (\n      (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+)$/)) !== null\n    ) {\n      debugOption = match[1];\n      if (/^\\d+$/.test(match[3])) {\n        // e.g. --inspect=1234\n        debugPort = match[3];\n      } else {\n        // e.g. --inspect=localhost\n        debugHost = match[3];\n      }\n    } else if (\n      (match = arg.match(/^(--inspect(-brk|-port)?)=([^:]+):(\\d+)$/)) !== null\n    ) {\n      // e.g. --inspect=localhost:1234\n      debugOption = match[1];\n      debugHost = match[3];\n      debugPort = match[4];\n    }\n\n    if (debugOption && debugPort !== '0') {\n      return `${debugOption}=${debugHost}:${parseInt(debugPort) + 1}`;\n    }\n    return arg;\n  });\n}\n\n/**\n * @returns {boolean | undefined}\n * @package\n */\nfunction useColor() {\n  // Test for common conventions.\n  // NB: the observed behaviour is in combination with how author adds color! For example:\n  //   - we do not test NODE_DISABLE_COLORS, but util:styletext does\n  //   - we do test NO_COLOR, but Chalk does not\n  //\n  // References:\n  // https://no-color.org\n  // https://bixense.com/clicolors/\n  // https://github.com/nodejs/node/blob/0a00217a5f67ef4a22384cfc80eb6dd9a917fdc1/lib/internal/tty.js#L109\n  // https://github.com/chalk/supports-color/blob/c214314a14bcb174b12b3014b2b0a8de375029ae/index.js#L33\n  // (https://force-color.org recent web page from 2023, does not match major javascript implementations)\n\n  if (\n    process.env.NO_COLOR ||\n    process.env.FORCE_COLOR === '0' ||\n    process.env.FORCE_COLOR === 'false'\n  )\n    return false;\n  if (process.env.FORCE_COLOR || process.env.CLICOLOR_FORCE !== undefined)\n    return true;\n  return undefined;\n}\n\nexports.Command = Command;\nexports.useColor = useColor; // exporting for tests\n","const { Argument } = require('./lib/argument.js');\nconst { Command } = require('./lib/command.js');\nconst { CommanderError, InvalidArgumentError } = require('./lib/error.js');\nconst { Help } = require('./lib/help.js');\nconst { Option } = require('./lib/option.js');\n\nexports.program = new Command();\n\nexports.createCommand = (name) => new Command(name);\nexports.createOption = (flags, description) => new Option(flags, description);\nexports.createArgument = (name, description) => new Argument(name, description);\n\n/**\n * Expose classes\n */\n\nexports.Command = Command;\nexports.Option = Option;\nexports.Argument = Argument;\nexports.Help = Help;\n\nexports.CommanderError = CommanderError;\nexports.InvalidArgumentError = InvalidArgumentError;\nexports.InvalidOptionArgumentError = InvalidArgumentError; // Deprecated\n","'use strict';\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nexport default $;\n","'use strict'\n\nexports.fromCallback = function (fn) {\n  return Object.defineProperty(function (...args) {\n    if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n    else {\n      return new Promise((resolve, reject) => {\n        args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n        fn.apply(this, args)\n      })\n    }\n  }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n  return Object.defineProperty(function (...args) {\n    const cb = args[args.length - 1]\n    if (typeof cb !== 'function') return fn.apply(this, args)\n    else {\n      args.pop()\n      fn.apply(this, args).then(r => cb(null, r), cb)\n    }\n  }, 'name', { value: fn.name })\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n  if (!cwd)\n    cwd = origCwd.call(process)\n  return cwd\n}\ntry {\n  process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n  var chdir = process.chdir\n  process.chdir = function (d) {\n    cwd = null\n    chdir.call(process, d)\n  }\n  if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n  // (re-)implement some things that are known busted or missing.\n\n  // lchmod, broken prior to 0.6.2\n  // back-port the fix here.\n  if (constants.hasOwnProperty('O_SYMLINK') &&\n      process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n    patchLchmod(fs)\n  }\n\n  // lutimes implementation, or no-op\n  if (!fs.lutimes) {\n    patchLutimes(fs)\n  }\n\n  // https://github.com/isaacs/node-graceful-fs/issues/4\n  // Chown should not fail on einval or eperm if non-root.\n  // It should not fail on enosys ever, as this just indicates\n  // that a fs doesn't support the intended operation.\n\n  fs.chown = chownFix(fs.chown)\n  fs.fchown = chownFix(fs.fchown)\n  fs.lchown = chownFix(fs.lchown)\n\n  fs.chmod = chmodFix(fs.chmod)\n  fs.fchmod = chmodFix(fs.fchmod)\n  fs.lchmod = chmodFix(fs.lchmod)\n\n  fs.chownSync = chownFixSync(fs.chownSync)\n  fs.fchownSync = chownFixSync(fs.fchownSync)\n  fs.lchownSync = chownFixSync(fs.lchownSync)\n\n  fs.chmodSync = chmodFixSync(fs.chmodSync)\n  fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n  fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n  fs.stat = statFix(fs.stat)\n  fs.fstat = statFix(fs.fstat)\n  fs.lstat = statFix(fs.lstat)\n\n  fs.statSync = statFixSync(fs.statSync)\n  fs.fstatSync = statFixSync(fs.fstatSync)\n  fs.lstatSync = statFixSync(fs.lstatSync)\n\n  // if lchmod/lchown do not exist, then make them no-ops\n  if (fs.chmod && !fs.lchmod) {\n    fs.lchmod = function (path, mode, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchmodSync = function () {}\n  }\n  if (fs.chown && !fs.lchown) {\n    fs.lchown = function (path, uid, gid, cb) {\n      if (cb) process.nextTick(cb)\n    }\n    fs.lchownSync = function () {}\n  }\n\n  // on Windows, A/V software can lock the directory, causing this\n  // to fail with an EACCES or EPERM if the directory contains newly\n  // created files.  Try again on failure, for up to 60 seconds.\n\n  // Set the timeout this long because some Windows Anti-Virus, such as Parity\n  // bit9, may lock files for up to a minute, causing npm package install\n  // failures. Also, take care to yield the scheduler. Windows scheduling gives\n  // CPU to a busy looping process, which can cause the program causing the lock\n  // contention to be starved of CPU by node, so the contention doesn't resolve.\n  if (platform === \"win32\") {\n    fs.rename = typeof fs.rename !== 'function' ? fs.rename\n    : (function (fs$rename) {\n      function rename (from, to, cb) {\n        var start = Date.now()\n        var backoff = 0;\n        fs$rename(from, to, function CB (er) {\n          if (er\n              && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n              && Date.now() - start < 60000) {\n            setTimeout(function() {\n              fs.stat(to, function (stater, st) {\n                if (stater && stater.code === \"ENOENT\")\n                  fs$rename(from, to, CB);\n                else\n                  cb(er)\n              })\n            }, backoff)\n            if (backoff < 100)\n              backoff += 10;\n            return;\n          }\n          if (cb) cb(er)\n        })\n      }\n      if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n      return rename\n    })(fs.rename)\n  }\n\n  // if read() returns EAGAIN, then just try it again.\n  fs.read = typeof fs.read !== 'function' ? fs.read\n  : (function (fs$read) {\n    function read (fd, buffer, offset, length, position, callback_) {\n      var callback\n      if (callback_ && typeof callback_ === 'function') {\n        var eagCounter = 0\n        callback = function (er, _, __) {\n          if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n            eagCounter ++\n            return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n          }\n          callback_.apply(this, arguments)\n        }\n      }\n      return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n    }\n\n    // This ensures `util.promisify` works as it does for native `fs.read`.\n    if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n    return read\n  })(fs.read)\n\n  fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n  : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n    var eagCounter = 0\n    while (true) {\n      try {\n        return fs$readSync.call(fs, fd, buffer, offset, length, position)\n      } catch (er) {\n        if (er.code === 'EAGAIN' && eagCounter < 10) {\n          eagCounter ++\n          continue\n        }\n        throw er\n      }\n    }\n  }})(fs.readSync)\n\n  function patchLchmod (fs) {\n    fs.lchmod = function (path, mode, callback) {\n      fs.open( path\n             , constants.O_WRONLY | constants.O_SYMLINK\n             , mode\n             , function (err, fd) {\n        if (err) {\n          if (callback) callback(err)\n          return\n        }\n        // prefer to return the chmod error, if one occurs,\n        // but still try to close, and report closing errors if they occur.\n        fs.fchmod(fd, mode, function (err) {\n          fs.close(fd, function(err2) {\n            if (callback) callback(err || err2)\n          })\n        })\n      })\n    }\n\n    fs.lchmodSync = function (path, mode) {\n      var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n      // prefer to return the chmod error, if one occurs,\n      // but still try to close, and report closing errors if they occur.\n      var threw = true\n      var ret\n      try {\n        ret = fs.fchmodSync(fd, mode)\n        threw = false\n      } finally {\n        if (threw) {\n          try {\n            fs.closeSync(fd)\n          } catch (er) {}\n        } else {\n          fs.closeSync(fd)\n        }\n      }\n      return ret\n    }\n  }\n\n  function patchLutimes (fs) {\n    if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n      fs.lutimes = function (path, at, mt, cb) {\n        fs.open(path, constants.O_SYMLINK, function (er, fd) {\n          if (er) {\n            if (cb) cb(er)\n            return\n          }\n          fs.futimes(fd, at, mt, function (er) {\n            fs.close(fd, function (er2) {\n              if (cb) cb(er || er2)\n            })\n          })\n        })\n      }\n\n      fs.lutimesSync = function (path, at, mt) {\n        var fd = fs.openSync(path, constants.O_SYMLINK)\n        var ret\n        var threw = true\n        try {\n          ret = fs.futimesSync(fd, at, mt)\n          threw = false\n        } finally {\n          if (threw) {\n            try {\n              fs.closeSync(fd)\n            } catch (er) {}\n          } else {\n            fs.closeSync(fd)\n          }\n        }\n        return ret\n      }\n\n    } else if (fs.futimes) {\n      fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n      fs.lutimesSync = function () {}\n    }\n  }\n\n  function chmodFix (orig) {\n    if (!orig) return orig\n    return function (target, mode, cb) {\n      return orig.call(fs, target, mode, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chmodFixSync (orig) {\n    if (!orig) return orig\n    return function (target, mode) {\n      try {\n        return orig.call(fs, target, mode)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n\n  function chownFix (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid, cb) {\n      return orig.call(fs, target, uid, gid, function (er) {\n        if (chownErOk(er)) er = null\n        if (cb) cb.apply(this, arguments)\n      })\n    }\n  }\n\n  function chownFixSync (orig) {\n    if (!orig) return orig\n    return function (target, uid, gid) {\n      try {\n        return orig.call(fs, target, uid, gid)\n      } catch (er) {\n        if (!chownErOk(er)) throw er\n      }\n    }\n  }\n\n  function statFix (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options, cb) {\n      if (typeof options === 'function') {\n        cb = options\n        options = null\n      }\n      function callback (er, stats) {\n        if (stats) {\n          if (stats.uid < 0) stats.uid += 0x100000000\n          if (stats.gid < 0) stats.gid += 0x100000000\n        }\n        if (cb) cb.apply(this, arguments)\n      }\n      return options ? orig.call(fs, target, options, callback)\n        : orig.call(fs, target, callback)\n    }\n  }\n\n  function statFixSync (orig) {\n    if (!orig) return orig\n    // Older versions of Node erroneously returned signed integers for\n    // uid + gid.\n    return function (target, options) {\n      var stats = options ? orig.call(fs, target, options)\n        : orig.call(fs, target)\n      if (stats) {\n        if (stats.uid < 0) stats.uid += 0x100000000\n        if (stats.gid < 0) stats.gid += 0x100000000\n      }\n      return stats;\n    }\n  }\n\n  // ENOSYS means that the fs doesn't support the op. Just ignore\n  // that, because it doesn't matter.\n  //\n  // if there's no getuid, or if getuid() is something other\n  // than 0, and the error is EINVAL or EPERM, then just ignore\n  // it.\n  //\n  // This specific case is a silent failure in cp, install, tar,\n  // and most other unix tools that manage permissions.\n  //\n  // When running as root, or if other types of errors are\n  // encountered, then it's strict.\n  function chownErOk (er) {\n    if (!er)\n      return true\n\n    if (er.code === \"ENOSYS\")\n      return true\n\n    var nonroot = !process.getuid || process.getuid() !== 0\n    if (nonroot) {\n      if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n        return true\n    }\n\n    return false\n  }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n  return {\n    ReadStream: ReadStream,\n    WriteStream: WriteStream\n  }\n\n  function ReadStream (path, options) {\n    if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n    Stream.call(this);\n\n    var self = this;\n\n    this.path = path;\n    this.fd = null;\n    this.readable = true;\n    this.paused = false;\n\n    this.flags = 'r';\n    this.mode = 438; /*=0666*/\n    this.bufferSize = 64 * 1024;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.encoding) this.setEncoding(this.encoding);\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.end === undefined) {\n        this.end = Infinity;\n      } else if ('number' !== typeof this.end) {\n        throw TypeError('end must be a Number');\n      }\n\n      if (this.start > this.end) {\n        throw new Error('start must be <= end');\n      }\n\n      this.pos = this.start;\n    }\n\n    if (this.fd !== null) {\n      process.nextTick(function() {\n        self._read();\n      });\n      return;\n    }\n\n    fs.open(this.path, this.flags, this.mode, function (err, fd) {\n      if (err) {\n        self.emit('error', err);\n        self.readable = false;\n        return;\n      }\n\n      self.fd = fd;\n      self.emit('open', fd);\n      self._read();\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n    Stream.call(this);\n\n    this.path = path;\n    this.fd = null;\n    this.writable = true;\n\n    this.flags = 'w';\n    this.encoding = 'binary';\n    this.mode = 438; /*=0666*/\n    this.bytesWritten = 0;\n\n    options = options || {};\n\n    // Mixin options into this\n    var keys = Object.keys(options);\n    for (var index = 0, length = keys.length; index < length; index++) {\n      var key = keys[index];\n      this[key] = options[key];\n    }\n\n    if (this.start !== undefined) {\n      if ('number' !== typeof this.start) {\n        throw TypeError('start must be a Number');\n      }\n      if (this.start < 0) {\n        throw new Error('start must be >= zero');\n      }\n\n      this.pos = this.start;\n    }\n\n    this.busy = false;\n    this._queue = [];\n\n    if (this.fd === null) {\n      this._open = fs.open;\n      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n      this.flush();\n    }\n  }\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n  return obj.__proto__\n}\n\nfunction clone (obj) {\n  if (obj === null || typeof obj !== 'object')\n    return obj\n\n  if (obj instanceof Object)\n    var copy = { __proto__: getPrototypeOf(obj) }\n  else\n    var copy = Object.create(null)\n\n  Object.getOwnPropertyNames(obj).forEach(function (key) {\n    Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n  })\n\n  return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n  gracefulQueue = Symbol.for('graceful-fs.queue')\n  // This is used in testing by future versions\n  previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n  gracefulQueue = '___graceful-fs.queue'\n  previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n  Object.defineProperty(context, gracefulQueue, {\n    get: function() {\n      return queue\n    }\n  })\n}\n\nvar debug = noop\nif (util.debuglog)\n  debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n  debug = function() {\n    var m = util.format.apply(util, arguments)\n    m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n    console.error(m)\n  }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n  // This queue can be shared by multiple loaded instances\n  var queue = global[gracefulQueue] || []\n  publishQueue(fs, queue)\n\n  // Patch fs.close/closeSync to shared queue version, because we need\n  // to retry() whenever a close happens *anywhere* in the program.\n  // This is essential when multiple graceful-fs instances are\n  // in play at the same time.\n  fs.close = (function (fs$close) {\n    function close (fd, cb) {\n      return fs$close.call(fs, fd, function (err) {\n        // This function uses the graceful-fs shared queue\n        if (!err) {\n          resetQueue()\n        }\n\n        if (typeof cb === 'function')\n          cb.apply(this, arguments)\n      })\n    }\n\n    Object.defineProperty(close, previousSymbol, {\n      value: fs$close\n    })\n    return close\n  })(fs.close)\n\n  fs.closeSync = (function (fs$closeSync) {\n    function closeSync (fd) {\n      // This function uses the graceful-fs shared queue\n      fs$closeSync.apply(fs, arguments)\n      resetQueue()\n    }\n\n    Object.defineProperty(closeSync, previousSymbol, {\n      value: fs$closeSync\n    })\n    return closeSync\n  })(fs.closeSync)\n\n  if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n    process.on('exit', function() {\n      debug(fs[gracefulQueue])\n      require('assert').equal(fs[gracefulQueue].length, 0)\n    })\n  }\n}\n\nif (!global[gracefulQueue]) {\n  publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n    module.exports = patch(fs)\n    fs.__patched = true;\n}\n\nfunction patch (fs) {\n  // Everything that references the open() function needs to be in here\n  polyfills(fs)\n  fs.gracefulify = patch\n\n  fs.createReadStream = createReadStream\n  fs.createWriteStream = createWriteStream\n  var fs$readFile = fs.readFile\n  fs.readFile = readFile\n  function readFile (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$readFile(path, options, cb)\n\n    function go$readFile (path, options, cb, startTime) {\n      return fs$readFile(path, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$writeFile = fs.writeFile\n  fs.writeFile = writeFile\n  function writeFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$writeFile(path, data, options, cb)\n\n    function go$writeFile (path, data, options, cb, startTime) {\n      return fs$writeFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$appendFile = fs.appendFile\n  if (fs$appendFile)\n    fs.appendFile = appendFile\n  function appendFile (path, data, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    return go$appendFile(path, data, options, cb)\n\n    function go$appendFile (path, data, options, cb, startTime) {\n      return fs$appendFile(path, data, options, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$copyFile = fs.copyFile\n  if (fs$copyFile)\n    fs.copyFile = copyFile\n  function copyFile (src, dest, flags, cb) {\n    if (typeof flags === 'function') {\n      cb = flags\n      flags = 0\n    }\n    return go$copyFile(src, dest, flags, cb)\n\n    function go$copyFile (src, dest, flags, cb, startTime) {\n      return fs$copyFile(src, dest, flags, function (err) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  var fs$readdir = fs.readdir\n  fs.readdir = readdir\n  var noReaddirOptionVersions = /^v[0-5]\\./\n  function readdir (path, options, cb) {\n    if (typeof options === 'function')\n      cb = options, options = null\n\n    var go$readdir = noReaddirOptionVersions.test(process.version)\n      ? function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n      : function go$readdir (path, options, cb, startTime) {\n        return fs$readdir(path, options, fs$readdirCallback(\n          path, options, cb, startTime\n        ))\n      }\n\n    return go$readdir(path, options, cb)\n\n    function fs$readdirCallback (path, options, cb, startTime) {\n      return function (err, files) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([\n            go$readdir,\n            [path, options, cb],\n            err,\n            startTime || Date.now(),\n            Date.now()\n          ])\n        else {\n          if (files && files.sort)\n            files.sort()\n\n          if (typeof cb === 'function')\n            cb.call(this, err, files)\n        }\n      }\n    }\n  }\n\n  if (process.version.substr(0, 4) === 'v0.8') {\n    var legStreams = legacy(fs)\n    ReadStream = legStreams.ReadStream\n    WriteStream = legStreams.WriteStream\n  }\n\n  var fs$ReadStream = fs.ReadStream\n  if (fs$ReadStream) {\n    ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n    ReadStream.prototype.open = ReadStream$open\n  }\n\n  var fs$WriteStream = fs.WriteStream\n  if (fs$WriteStream) {\n    WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n    WriteStream.prototype.open = WriteStream$open\n  }\n\n  Object.defineProperty(fs, 'ReadStream', {\n    get: function () {\n      return ReadStream\n    },\n    set: function (val) {\n      ReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  Object.defineProperty(fs, 'WriteStream', {\n    get: function () {\n      return WriteStream\n    },\n    set: function (val) {\n      WriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  // legacy names\n  var FileReadStream = ReadStream\n  Object.defineProperty(fs, 'FileReadStream', {\n    get: function () {\n      return FileReadStream\n    },\n    set: function (val) {\n      FileReadStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n  var FileWriteStream = WriteStream\n  Object.defineProperty(fs, 'FileWriteStream', {\n    get: function () {\n      return FileWriteStream\n    },\n    set: function (val) {\n      FileWriteStream = val\n    },\n    enumerable: true,\n    configurable: true\n  })\n\n  function ReadStream (path, options) {\n    if (this instanceof ReadStream)\n      return fs$ReadStream.apply(this, arguments), this\n    else\n      return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n  }\n\n  function ReadStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        if (that.autoClose)\n          that.destroy()\n\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n        that.read()\n      }\n    })\n  }\n\n  function WriteStream (path, options) {\n    if (this instanceof WriteStream)\n      return fs$WriteStream.apply(this, arguments), this\n    else\n      return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n  }\n\n  function WriteStream$open () {\n    var that = this\n    open(that.path, that.flags, that.mode, function (err, fd) {\n      if (err) {\n        that.destroy()\n        that.emit('error', err)\n      } else {\n        that.fd = fd\n        that.emit('open', fd)\n      }\n    })\n  }\n\n  function createReadStream (path, options) {\n    return new fs.ReadStream(path, options)\n  }\n\n  function createWriteStream (path, options) {\n    return new fs.WriteStream(path, options)\n  }\n\n  var fs$open = fs.open\n  fs.open = open\n  function open (path, flags, mode, cb) {\n    if (typeof mode === 'function')\n      cb = mode, mode = null\n\n    return go$open(path, flags, mode, cb)\n\n    function go$open (path, flags, mode, cb, startTime) {\n      return fs$open(path, flags, mode, function (err, fd) {\n        if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n          enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n        else {\n          if (typeof cb === 'function')\n            cb.apply(this, arguments)\n        }\n      })\n    }\n  }\n\n  return fs\n}\n\nfunction enqueue (elem) {\n  debug('ENQUEUE', elem[0].name, elem[1])\n  fs[gracefulQueue].push(elem)\n  retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n  var now = Date.now()\n  for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n    // entries that are only a length of 2 are from an older version, don't\n    // bother modifying those since they'll be retried anyway.\n    if (fs[gracefulQueue][i].length > 2) {\n      fs[gracefulQueue][i][3] = now // startTime\n      fs[gracefulQueue][i][4] = now // lastTime\n    }\n  }\n  // call retry to make sure we're actively processing the queue\n  retry()\n}\n\nfunction retry () {\n  // clear the timer and remove it to help prevent unintended concurrency\n  clearTimeout(retryTimer)\n  retryTimer = undefined\n\n  if (fs[gracefulQueue].length === 0)\n    return\n\n  var elem = fs[gracefulQueue].shift()\n  var fn = elem[0]\n  var args = elem[1]\n  // these items may be unset if they were added by an older graceful-fs\n  var err = elem[2]\n  var startTime = elem[3]\n  var lastTime = elem[4]\n\n  // if we don't have a startTime we have no way of knowing if we've waited\n  // long enough, so go ahead and retry this item now\n  if (startTime === undefined) {\n    debug('RETRY', fn.name, args)\n    fn.apply(null, args)\n  } else if (Date.now() - startTime >= 60000) {\n    // it's been more than 60 seconds total, bail now\n    debug('TIMEOUT', fn.name, args)\n    var cb = args.pop()\n    if (typeof cb === 'function')\n      cb.call(null, err)\n  } else {\n    // the amount of time between the last attempt and right now\n    var sinceAttempt = Date.now() - lastTime\n    // the amount of time between when we first tried, and when we last tried\n    // rounded up to at least 1\n    var sinceStart = Math.max(lastTime - startTime, 1)\n    // backoff. wait longer than the total time we've been retrying, but only\n    // up to a maximum of 100ms\n    var desiredDelay = Math.min(sinceStart * 1.2, 100)\n    // it's been long enough since the last retry, do it again\n    if (sinceAttempt >= desiredDelay) {\n      debug('RETRY', fn.name, args)\n      fn.apply(null, args.concat([startTime]))\n    } else {\n      // if we can't do this job yet, push it to the end of the queue\n      // and let the next iteration check again\n      fs[gracefulQueue].push(elem)\n    }\n  }\n\n  // schedule our next run if one isn't already scheduled\n  if (retryTimer === undefined) {\n    retryTimer = setTimeout(retry, 0)\n  }\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n  'access',\n  'appendFile',\n  'chmod',\n  'chown',\n  'close',\n  'copyFile',\n  'cp',\n  'fchmod',\n  'fchown',\n  'fdatasync',\n  'fstat',\n  'fsync',\n  'ftruncate',\n  'futimes',\n  'glob',\n  'lchmod',\n  'lchown',\n  'lutimes',\n  'link',\n  'lstat',\n  'mkdir',\n  'mkdtemp',\n  'open',\n  'opendir',\n  'readdir',\n  'readFile',\n  'readlink',\n  'realpath',\n  'rename',\n  'rm',\n  'rmdir',\n  'stat',\n  'statfs',\n  'symlink',\n  'truncate',\n  'unlink',\n  'utimes',\n  'writeFile'\n].filter(key => {\n  // Some commands are not available on some systems. Ex:\n  // fs.cp was added in Node.js v16.7.0\n  // fs.statfs was added in Node v19.6.0, v18.15.0\n  // fs.glob was added in Node.js v22.0.0\n  // fs.lchown is not available on at least some Linux\n  return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n  exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n  if (typeof callback === 'function') {\n    return fs.exists(filename, callback)\n  }\n  return new Promise(resolve => {\n    return fs.exists(filename, resolve)\n  })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n  if (typeof callback === 'function') {\n    return fs.read(fd, buffer, offset, length, position, callback)\n  }\n  return new Promise((resolve, reject) => {\n    fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n      if (err) return reject(err)\n      resolve({ bytesRead, buffer })\n    })\n  })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n  if (typeof args[args.length - 1] === 'function') {\n    return fs.write(fd, buffer, ...args)\n  }\n\n  return new Promise((resolve, reject) => {\n    fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n      if (err) return reject(err)\n      resolve({ bytesWritten, buffer })\n    })\n  })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n  if (typeof args[args.length - 1] === 'function') {\n    return fs.readv(fd, buffers, ...args)\n  }\n\n  return new Promise((resolve, reject) => {\n    fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n      if (err) return reject(err)\n      resolve({ bytesRead, buffers })\n    })\n  })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n  if (typeof args[args.length - 1] === 'function') {\n    return fs.writev(fd, buffers, ...args)\n  }\n\n  return new Promise((resolve, reject) => {\n    fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n      if (err) return reject(err)\n      resolve({ bytesWritten, buffers })\n    })\n  })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n  exports.realpath.native = u(fs.realpath.native)\n} else {\n  process.emitWarning(\n    'fs.realpath.native is not a function. Is fs being monkey-patched?',\n    'Warning', 'fs-extra-WARN0003'\n  )\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n  if (process.platform === 'win32') {\n    const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n    if (pathHasInvalidWinCharacters) {\n      const error = new Error(`Path contains invalid characters: ${pth}`)\n      error.code = 'EINVAL'\n      throw error\n    }\n  }\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n  const defaults = { mode: 0o777 }\n  if (typeof options === 'number') return options\n  return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n  checkPath(dir)\n\n  return fs.mkdir(dir, {\n    mode: getMode(options),\n    recursive: true\n  })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n  checkPath(dir)\n\n  return fs.mkdirSync(dir, {\n    mode: getMode(options),\n    recursive: true\n  })\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n  mkdirs: makeDir,\n  mkdirsSync: makeDirSync,\n  // alias\n  mkdirp: makeDir,\n  mkdirpSync: makeDirSync,\n  ensureDir: makeDir,\n  ensureDirSync: makeDirSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n  return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n  pathExists: u(pathExists),\n  pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n  const fd = await fs.open(path, 'r+')\n\n  let error = null\n\n  try {\n    await fs.futimes(fd, atime, mtime)\n  } catch (futimesErr) {\n    error = futimesErr\n  } finally {\n    try {\n      await fs.close(fd)\n    } catch (closeErr) {\n      if (!error) error = closeErr\n    }\n  }\n\n  if (error) {\n    throw error\n  }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n  const fd = fs.openSync(path, 'r+')\n\n  let error = null\n\n  try {\n    fs.futimesSync(fd, atime, mtime)\n  } catch (futimesErr) {\n    error = futimesErr\n  } finally {\n    try {\n      fs.closeSync(fd)\n    } catch (closeErr) {\n      if (!error) error = closeErr\n    }\n  }\n\n  if (error) {\n    throw error\n  }\n}\n\nmodule.exports = {\n  utimesMillis: u(utimesMillis),\n  utimesMillisSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n  const statFunc = opts.dereference\n    ? (file) => fs.stat(file, { bigint: true })\n    : (file) => fs.lstat(file, { bigint: true })\n  return Promise.all([\n    statFunc(src),\n    statFunc(dest).catch(err => {\n      if (err.code === 'ENOENT') return null\n      throw err\n    })\n  ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n  let destStat\n  const statFunc = opts.dereference\n    ? (file) => fs.statSync(file, { bigint: true })\n    : (file) => fs.lstatSync(file, { bigint: true })\n  const srcStat = statFunc(src)\n  try {\n    destStat = statFunc(dest)\n  } catch (err) {\n    if (err.code === 'ENOENT') return { srcStat, destStat: null }\n    throw err\n  }\n  return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n  const { srcStat, destStat } = await getStats(src, dest, opts)\n  if (destStat) {\n    if (areIdentical(srcStat, destStat)) {\n      const srcBaseName = path.basename(src)\n      const destBaseName = path.basename(dest)\n      if (funcName === 'move' &&\n        srcBaseName !== destBaseName &&\n        srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n        return { srcStat, destStat, isChangingCase: true }\n      }\n      throw new Error('Source and destination must not be the same.')\n    }\n    if (srcStat.isDirectory() && !destStat.isDirectory()) {\n      throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n    }\n    if (!srcStat.isDirectory() && destStat.isDirectory()) {\n      throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n    }\n  }\n\n  if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n\n  return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n  const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n  if (destStat) {\n    if (areIdentical(srcStat, destStat)) {\n      const srcBaseName = path.basename(src)\n      const destBaseName = path.basename(dest)\n      if (funcName === 'move' &&\n        srcBaseName !== destBaseName &&\n        srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n        return { srcStat, destStat, isChangingCase: true }\n      }\n      throw new Error('Source and destination must not be the same.')\n    }\n    if (srcStat.isDirectory() && !destStat.isDirectory()) {\n      throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n    }\n    if (!srcStat.isDirectory() && destStat.isDirectory()) {\n      throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n    }\n  }\n\n  if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n  return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n  const srcParent = path.resolve(path.dirname(src))\n  const destParent = path.resolve(path.dirname(dest))\n  if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n  let destStat\n  try {\n    destStat = await fs.stat(destParent, { bigint: true })\n  } catch (err) {\n    if (err.code === 'ENOENT') return\n    throw err\n  }\n\n  if (areIdentical(srcStat, destStat)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n\n  return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n  const srcParent = path.resolve(path.dirname(src))\n  const destParent = path.resolve(path.dirname(dest))\n  if (destParent === srcParent || destParent === path.parse(destParent).root) return\n  let destStat\n  try {\n    destStat = fs.statSync(destParent, { bigint: true })\n  } catch (err) {\n    if (err.code === 'ENOENT') return\n    throw err\n  }\n  if (areIdentical(srcStat, destStat)) {\n    throw new Error(errMsg(src, dest, funcName))\n  }\n  return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n  // stat.dev can be 0n on windows when node version >= 22.x.x\n  return destStat.ino !== undefined && destStat.dev !== undefined && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n  const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n  const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n  return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n  return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n  // checkPaths\n  checkPaths: u(checkPaths),\n  checkPathsSync,\n  // checkParent\n  checkParentPaths: u(checkParentPaths),\n  checkParentPathsSync,\n  // Misc\n  isSrcSubdir,\n  areIdentical\n}\n","'use strict'\n\n// https://github.com/jprichardson/node-fs-extra/issues/1056\n// Performing parallel operations on each item of an async iterator is\n// surprisingly hard; you need to have handlers in place to avoid getting an\n// UnhandledPromiseRejectionWarning.\n// NOTE: This function does not presently handle return values, only errors\nasync function asyncIteratorConcurrentProcess (iterator, fn) {\n  const promises = []\n  for await (const item of iterator) {\n    promises.push(\n      fn(item).then(\n        () => null,\n        (err) => err ?? new Error('unknown error')\n      )\n    )\n  }\n  await Promise.all(\n    promises.map((promise) =>\n      promise.then((possibleErr) => {\n        if (possibleErr !== null) throw possibleErr\n      })\n    )\n  )\n}\n\nmodule.exports = {\n  asyncIteratorConcurrentProcess\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\nconst { asyncIteratorConcurrentProcess } = require('../util/async')\n\nasync function copy (src, dest, opts = {}) {\n  if (typeof opts === 'function') {\n    opts = { filter: opts }\n  }\n\n  opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n  opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n  // Warn about using preserveTimestamps on 32-bit node\n  if (opts.preserveTimestamps && process.arch === 'ia32') {\n    process.emitWarning(\n      'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n      '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n      'Warning', 'fs-extra-WARN0001'\n    )\n  }\n\n  const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n  await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n  const include = await runFilter(src, dest, opts)\n\n  if (!include) return\n\n  // check if the parent of dest exists, and create it if it doesn't exist\n  const destParent = path.dirname(dest)\n  const dirExists = await pathExists(destParent)\n  if (!dirExists) {\n    await mkdirs(destParent)\n  }\n\n  await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n  if (!opts.filter) return true\n  return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n  const statFn = opts.dereference ? fs.stat : fs.lstat\n  const srcStat = await statFn(src)\n\n  if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n  if (\n    srcStat.isFile() ||\n    srcStat.isCharacterDevice() ||\n    srcStat.isBlockDevice()\n  ) return onFile(srcStat, destStat, src, dest, opts)\n\n  if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n  if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n  if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n  throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n  if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n  if (opts.overwrite) {\n    await fs.unlink(dest)\n    return copyFile(srcStat, src, dest, opts)\n  }\n  if (opts.errorOnExist) {\n    throw new Error(`'${dest}' already exists`)\n  }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n  await fs.copyFile(src, dest)\n  if (opts.preserveTimestamps) {\n    // Make sure the file is writable before setting the timestamp\n    // otherwise open fails with EPERM when invoked with 'r+'\n    // (through utimes call)\n    if (fileIsNotWritable(srcStat.mode)) {\n      await makeFileWritable(dest, srcStat.mode)\n    }\n\n    // Set timestamps and mode correspondingly\n\n    // Note that The initial srcStat.atime cannot be trusted\n    // because it is modified by the read(2) system call\n    // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n    const updatedSrcStat = await fs.stat(src)\n    await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n  }\n\n  return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n  return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n  return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n  // the dest directory might not exist, create it\n  if (!destStat) {\n    await fs.mkdir(dest)\n  }\n\n  // iterate through the files in the current directory to copy everything\n  await asyncIteratorConcurrentProcess(await fs.opendir(src), async (item) => {\n    const srcItem = path.join(src, item.name)\n    const destItem = path.join(dest, item.name)\n\n    const include = await runFilter(srcItem, destItem, opts)\n    // only copy the item if it matches the filter function\n    if (include) {\n      const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n      // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n      // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n      await getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n    }\n  })\n\n  if (!destStat) {\n    await fs.chmod(dest, srcStat.mode)\n  }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n  let resolvedSrc = await fs.readlink(src)\n  if (opts.dereference) {\n    resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n  }\n  if (!destStat) {\n    return fs.symlink(resolvedSrc, dest)\n  }\n\n  let resolvedDest = null\n  try {\n    resolvedDest = await fs.readlink(dest)\n  } catch (e) {\n    // dest exists and is a regular file or directory,\n    // Windows may throw UNKNOWN error. If dest already exists,\n    // fs throws error anyway, so no need to guard against it here.\n    if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n    throw e\n  }\n  if (opts.dereference) {\n    resolvedDest = path.resolve(process.cwd(), resolvedDest)\n  }\n  // If both symlinks resolve to the same target, they are still distinct symlinks\n  // that can be copied/overwritten. Only check subdirectory constraints when\n  // the resolved paths are different.\n  if (resolvedSrc !== resolvedDest) {\n    if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n      throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n    }\n\n    // do not copy if src is a subdir of dest since unlinking\n    // dest in this case would result in removing src contents\n    // and therefore a broken symlink would be created.\n    if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n      throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n    }\n  }\n\n  // copy the link\n  await fs.unlink(dest)\n  return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n  if (typeof opts === 'function') {\n    opts = { filter: opts }\n  }\n\n  opts = opts || {}\n  opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n  opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n  // Warn about using preserveTimestamps on 32-bit node\n  if (opts.preserveTimestamps && process.arch === 'ia32') {\n    process.emitWarning(\n      'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n      '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n      'Warning', 'fs-extra-WARN0002'\n    )\n  }\n\n  const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n  stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n  if (opts.filter && !opts.filter(src, dest)) return\n  const destParent = path.dirname(dest)\n  if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n  return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n  const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n  const srcStat = statSync(src)\n\n  if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n  else if (srcStat.isFile() ||\n           srcStat.isCharacterDevice() ||\n           srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n  else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n  else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n  else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n  throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n  if (!destStat) return copyFile(srcStat, src, dest, opts)\n  return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n  if (opts.overwrite) {\n    fs.unlinkSync(dest)\n    return copyFile(srcStat, src, dest, opts)\n  } else if (opts.errorOnExist) {\n    throw new Error(`'${dest}' already exists`)\n  }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n  fs.copyFileSync(src, dest)\n  if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n  return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n  // Make sure the file is writable before setting the timestamp\n  // otherwise open fails with EPERM when invoked with 'r+'\n  // (through utimes call)\n  if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n  return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n  return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n  return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n  return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n  // The initial srcStat.atime cannot be trusted\n  // because it is modified by the read(2) system call\n  // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n  const updatedSrcStat = fs.statSync(src)\n  return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n  if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n  return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n  fs.mkdirSync(dest)\n  copyDir(src, dest, opts)\n  return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n  const dir = fs.opendirSync(src)\n\n  try {\n    let dirent\n\n    while ((dirent = dir.readSync()) !== null) {\n      copyDirItem(dirent.name, src, dest, opts)\n    }\n  } finally {\n    dir.closeSync()\n  }\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n  const srcItem = path.join(src, item)\n  const destItem = path.join(dest, item)\n  if (opts.filter && !opts.filter(srcItem, destItem)) return\n  const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n  return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n  let resolvedSrc = fs.readlinkSync(src)\n  if (opts.dereference) {\n    resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n  }\n\n  if (!destStat) {\n    return fs.symlinkSync(resolvedSrc, dest)\n  } else {\n    let resolvedDest\n    try {\n      resolvedDest = fs.readlinkSync(dest)\n    } catch (err) {\n      // dest exists and is a regular file or directory,\n      // Windows may throw UNKNOWN error. If dest already exists,\n      // fs throws error anyway, so no need to guard against it here.\n      if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n      throw err\n    }\n    if (opts.dereference) {\n      resolvedDest = path.resolve(process.cwd(), resolvedDest)\n    }\n    // If both symlinks resolve to the same target, they are still distinct symlinks\n    // that can be copied/overwritten. Only check subdirectory constraints when\n    // the resolved paths are different.\n    if (resolvedSrc !== resolvedDest) {\n      if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n        throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n      }\n\n      // prevent copy if src is a subdir of dest since unlinking\n      // dest in this case would result in removing src contents\n      // and therefore a broken symlink would be created.\n      if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n        throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n      }\n    }\n    return copyLink(resolvedSrc, dest)\n  }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n  fs.unlinkSync(dest)\n  return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n  copy: u(require('./copy')),\n  copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n  fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n  fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n  remove: u(remove),\n  removeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n  let items\n  try {\n    items = await fs.readdir(dir)\n  } catch {\n    return mkdir.mkdirs(dir)\n  }\n\n  return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n  let items\n  try {\n    items = fs.readdirSync(dir)\n  } catch {\n    return mkdir.mkdirsSync(dir)\n  }\n\n  items.forEach(item => {\n    item = path.join(dir, item)\n    remove.removeSync(item)\n  })\n}\n\nmodule.exports = {\n  emptyDirSync,\n  emptydirSync: emptyDirSync,\n  emptyDir,\n  emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n  let stats\n  try {\n    stats = await fs.stat(file)\n  } catch { }\n  if (stats && stats.isFile()) return\n\n  const dir = path.dirname(file)\n\n  let dirStats = null\n  try {\n    dirStats = await fs.stat(dir)\n  } catch (err) {\n    // if the directory doesn't exist, make it\n    if (err.code === 'ENOENT') {\n      await mkdir.mkdirs(dir)\n      await fs.writeFile(file, '')\n      return\n    } else {\n      throw err\n    }\n  }\n\n  if (dirStats.isDirectory()) {\n    await fs.writeFile(file, '')\n  } else {\n    // parent is not a directory\n    // This is just to cause an internal ENOTDIR error to be thrown\n    await fs.readdir(dir)\n  }\n}\n\nfunction createFileSync (file) {\n  let stats\n  try {\n    stats = fs.statSync(file)\n  } catch { }\n  if (stats && stats.isFile()) return\n\n  const dir = path.dirname(file)\n  try {\n    if (!fs.statSync(dir).isDirectory()) {\n      // parent is not a directory\n      // This is just to cause an internal ENOTDIR error to be thrown\n      fs.readdirSync(dir)\n    }\n  } catch (err) {\n    // If the stat call above failed because the directory doesn't exist, create it\n    if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n    else throw err\n  }\n\n  fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n  createFile: u(createFile),\n  createFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n  let dstStat\n  try {\n    dstStat = await fs.lstat(dstpath, { bigint: true })\n  } catch {\n    // ignore error\n  }\n\n  let srcStat\n  try {\n    srcStat = await fs.lstat(srcpath, { bigint: true })\n  } catch (err) {\n    err.message = err.message.replace('lstat', 'ensureLink')\n    throw err\n  }\n\n  if (dstStat && areIdentical(srcStat, dstStat)) return\n\n  const dir = path.dirname(dstpath)\n\n  const dirExists = await pathExists(dir)\n\n  if (!dirExists) {\n    await mkdir.mkdirs(dir)\n  }\n\n  await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n  let dstStat\n  try {\n    dstStat = fs.lstatSync(dstpath, { bigint: true })\n  } catch {}\n\n  try {\n    const srcStat = fs.lstatSync(srcpath, { bigint: true })\n    if (dstStat && areIdentical(srcStat, dstStat)) return\n  } catch (err) {\n    err.message = err.message.replace('lstat', 'ensureLink')\n    throw err\n  }\n\n  const dir = path.dirname(dstpath)\n  const dirExists = fs.existsSync(dir)\n  if (dirExists) return fs.linkSync(srcpath, dstpath)\n  mkdir.mkdirsSync(dir)\n\n  return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n  createLink: u(createLink),\n  createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n  if (path.isAbsolute(srcpath)) {\n    try {\n      await fs.lstat(srcpath)\n    } catch (err) {\n      err.message = err.message.replace('lstat', 'ensureSymlink')\n      throw err\n    }\n\n    return {\n      toCwd: srcpath,\n      toDst: srcpath\n    }\n  }\n\n  const dstdir = path.dirname(dstpath)\n  const relativeToDst = path.join(dstdir, srcpath)\n\n  const exists = await pathExists(relativeToDst)\n  if (exists) {\n    return {\n      toCwd: relativeToDst,\n      toDst: srcpath\n    }\n  }\n\n  try {\n    await fs.lstat(srcpath)\n  } catch (err) {\n    err.message = err.message.replace('lstat', 'ensureSymlink')\n    throw err\n  }\n\n  return {\n    toCwd: srcpath,\n    toDst: path.relative(dstdir, srcpath)\n  }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n  if (path.isAbsolute(srcpath)) {\n    const exists = fs.existsSync(srcpath)\n    if (!exists) throw new Error('absolute srcpath does not exist')\n    return {\n      toCwd: srcpath,\n      toDst: srcpath\n    }\n  }\n\n  const dstdir = path.dirname(dstpath)\n  const relativeToDst = path.join(dstdir, srcpath)\n  const exists = fs.existsSync(relativeToDst)\n  if (exists) {\n    return {\n      toCwd: relativeToDst,\n      toDst: srcpath\n    }\n  }\n\n  const srcExists = fs.existsSync(srcpath)\n  if (!srcExists) throw new Error('relative srcpath does not exist')\n  return {\n    toCwd: srcpath,\n    toDst: path.relative(dstdir, srcpath)\n  }\n}\n\nmodule.exports = {\n  symlinkPaths: u(symlinkPaths),\n  symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n  if (type) return type\n\n  let stats\n  try {\n    stats = await fs.lstat(srcpath)\n  } catch {\n    return 'file'\n  }\n\n  return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n  if (type) return type\n\n  let stats\n  try {\n    stats = fs.lstatSync(srcpath)\n  } catch {\n    return 'file'\n  }\n  return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n  symlinkType: u(symlinkType),\n  symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n  let stats\n  try {\n    stats = await fs.lstat(dstpath)\n  } catch { }\n\n  if (stats && stats.isSymbolicLink()) {\n    // When srcpath is relative, resolve it relative to dstpath's directory\n    // (standard symlink behavior) or fall back to cwd if that doesn't exist\n    let srcStat\n    if (path.isAbsolute(srcpath)) {\n      srcStat = await fs.stat(srcpath, { bigint: true })\n    } else {\n      const dstdir = path.dirname(dstpath)\n      const relativeToDst = path.join(dstdir, srcpath)\n      try {\n        srcStat = await fs.stat(relativeToDst, { bigint: true })\n      } catch {\n        srcStat = await fs.stat(srcpath, { bigint: true })\n      }\n    }\n\n    const dstStat = await fs.stat(dstpath, { bigint: true })\n    if (areIdentical(srcStat, dstStat)) return\n  }\n\n  const relative = await symlinkPaths(srcpath, dstpath)\n  srcpath = relative.toDst\n  const toType = await symlinkType(relative.toCwd, type)\n  const dir = path.dirname(dstpath)\n\n  if (!(await pathExists(dir))) {\n    await mkdirs(dir)\n  }\n\n  return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n  let stats\n  try {\n    stats = fs.lstatSync(dstpath)\n  } catch { }\n  if (stats && stats.isSymbolicLink()) {\n    // When srcpath is relative, resolve it relative to dstpath's directory\n    // (standard symlink behavior) or fall back to cwd if that doesn't exist\n    let srcStat\n    if (path.isAbsolute(srcpath)) {\n      srcStat = fs.statSync(srcpath, { bigint: true })\n    } else {\n      const dstdir = path.dirname(dstpath)\n      const relativeToDst = path.join(dstdir, srcpath)\n      try {\n        srcStat = fs.statSync(relativeToDst, { bigint: true })\n      } catch {\n        srcStat = fs.statSync(srcpath, { bigint: true })\n      }\n    }\n\n    const dstStat = fs.statSync(dstpath, { bigint: true })\n    if (areIdentical(srcStat, dstStat)) return\n  }\n\n  const relative = symlinkPathsSync(srcpath, dstpath)\n  srcpath = relative.toDst\n  type = symlinkTypeSync(relative.toCwd, type)\n  const dir = path.dirname(dstpath)\n  const exists = fs.existsSync(dir)\n  if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n  mkdirsSync(dir)\n  return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n  createSymlink: u(createSymlink),\n  createSymlinkSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n  // file\n  createFile,\n  createFileSync,\n  ensureFile: createFile,\n  ensureFileSync: createFileSync,\n  // link\n  createLink,\n  createLinkSync,\n  ensureLink: createLink,\n  ensureLinkSync: createLinkSync,\n  // symlink\n  createSymlink,\n  createSymlinkSync,\n  ensureSymlink: createSymlink,\n  ensureSymlinkSync: createSymlinkSync\n}\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n  const EOF = finalEOL ? EOL : ''\n  const str = JSON.stringify(obj, replacer, spaces)\n\n  return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n  // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n  if (Buffer.isBuffer(content)) content = content.toString('utf8')\n  return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","let _fs\ntry {\n  _fs = require('graceful-fs')\n} catch (_) {\n  _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n  if (typeof options === 'string') {\n    options = { encoding: options }\n  }\n\n  const fs = options.fs || _fs\n\n  const shouldThrow = 'throws' in options ? options.throws : true\n\n  let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n  data = stripBom(data)\n\n  let obj\n  try {\n    obj = JSON.parse(data, options ? options.reviver : null)\n  } catch (err) {\n    if (shouldThrow) {\n      err.message = `${file}: ${err.message}`\n      throw err\n    } else {\n      return null\n    }\n  }\n\n  return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n  if (typeof options === 'string') {\n    options = { encoding: options }\n  }\n\n  const fs = options.fs || _fs\n\n  const shouldThrow = 'throws' in options ? options.throws : true\n\n  try {\n    let content = fs.readFileSync(file, options)\n    content = stripBom(content)\n    return JSON.parse(content, options.reviver)\n  } catch (err) {\n    if (shouldThrow) {\n      err.message = `${file}: ${err.message}`\n      throw err\n    } else {\n      return null\n    }\n  }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n  const fs = options.fs || _fs\n\n  const str = stringify(obj, options)\n\n  await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n  const fs = options.fs || _fs\n\n  const str = stringify(obj, options)\n  // not sure if fs.writeFileSync returns anything, but just in case\n  return fs.writeFileSync(file, str, options)\n}\n\n// NOTE: do not change this export format; required for ESM compat\n// see https://github.com/jprichardson/node-jsonfile/pull/162 for details\nmodule.exports = {\n  readFile,\n  readFileSync,\n  writeFile,\n  writeFileSync\n}\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n  // jsonfile exports\n  readJson: jsonFile.readFile,\n  readJsonSync: jsonFile.readFileSync,\n  writeJson: jsonFile.writeFile,\n  writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n  const dir = path.dirname(file)\n\n  if (!(await pathExists(dir))) {\n    await mkdir.mkdirs(dir)\n  }\n\n  return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n  const dir = path.dirname(file)\n  if (!fs.existsSync(dir)) {\n    mkdir.mkdirsSync(dir)\n  }\n\n  fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n  outputFile: u(outputFile),\n  outputFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n  const str = stringify(data, options)\n\n  await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n  const str = stringify(data, options)\n\n  outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n  const overwrite = opts.overwrite || opts.clobber || false\n\n  const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n  await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n  // If the parent of dest is not root, make sure it exists before proceeding\n  const destParent = path.dirname(dest)\n  const parsedParentPath = path.parse(destParent)\n  if (parsedParentPath.root !== destParent) {\n    await mkdirp(destParent)\n  }\n\n  return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n  if (!isChangingCase) {\n    if (overwrite) {\n      await remove(dest)\n    } else if (await pathExists(dest)) {\n      throw new Error('dest already exists.')\n    }\n  }\n\n  try {\n    // Try w/ rename first, and try copy + remove if EXDEV\n    await fs.rename(src, dest)\n  } catch (err) {\n    if (err.code !== 'EXDEV') {\n      throw err\n    }\n    await moveAcrossDevice(src, dest, overwrite)\n  }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n  const opts = {\n    overwrite,\n    errorOnExist: true,\n    preserveTimestamps: true\n  }\n\n  await copy(src, dest, opts)\n  return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n  opts = opts || {}\n  const overwrite = opts.overwrite || opts.clobber || false\n\n  const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n  stat.checkParentPathsSync(src, srcStat, dest, 'move')\n  if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n  return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n  const parent = path.dirname(dest)\n  const parsedPath = path.parse(parent)\n  return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n  if (isChangingCase) return rename(src, dest, overwrite)\n  if (overwrite) {\n    removeSync(dest)\n    return rename(src, dest, overwrite)\n  }\n  if (fs.existsSync(dest)) throw new Error('dest already exists.')\n  return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n  try {\n    fs.renameSync(src, dest)\n  } catch (err) {\n    if (err.code !== 'EXDEV') throw err\n    return moveAcrossDevice(src, dest, overwrite)\n  }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n  const opts = {\n    overwrite,\n    errorOnExist: true,\n    preserveTimestamps: true\n  }\n  copySync(src, dest, opts)\n  return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n  move: u(require('./move')),\n  moveSync: require('./move-sync')\n}\n","'use strict'\n\nmodule.exports = {\n  // Export promiseified graceful-fs:\n  ...require('./fs'),\n  // Export extra methods:\n  ...require('./copy'),\n  ...require('./empty'),\n  ...require('./ensure'),\n  ...require('./json'),\n  ...require('./mkdirs'),\n  ...require('./move'),\n  ...require('./output-file'),\n  ...require('./path-exists'),\n  ...require('./remove')\n}\n","'use strict';\n\nconst { FORCE_COLOR, NODE_DISABLE_COLORS, TERM } = process.env;\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && TERM !== 'dumb' && FORCE_COLOR !== '0',\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (str.includes(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\tthis.has.includes(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\nmodule.exports = $;\n","'use strict';\n\nmodule.exports = (key, isSelect) => {\n  if (key.meta && key.name !== 'escape') return;\n\n  if (key.ctrl) {\n    if (key.name === 'a') return 'first';\n    if (key.name === 'c') return 'abort';\n    if (key.name === 'd') return 'abort';\n    if (key.name === 'e') return 'last';\n    if (key.name === 'g') return 'reset';\n  }\n\n  if (isSelect) {\n    if (key.name === 'j') return 'down';\n    if (key.name === 'k') return 'up';\n  }\n\n  if (key.name === 'return') return 'submit';\n  if (key.name === 'enter') return 'submit'; // ctrl + J\n\n  if (key.name === 'backspace') return 'delete';\n  if (key.name === 'delete') return 'deleteForward';\n  if (key.name === 'abort') return 'abort';\n  if (key.name === 'escape') return 'exit';\n  if (key.name === 'tab') return 'next';\n  if (key.name === 'pagedown') return 'nextPage';\n  if (key.name === 'pageup') return 'prevPage'; // TODO create home() in prompt types (e.g. TextPrompt)\n\n  if (key.name === 'home') return 'home'; // TODO create end() in prompt types (e.g. TextPrompt)\n\n  if (key.name === 'end') return 'end';\n  if (key.name === 'up') return 'up';\n  if (key.name === 'down') return 'down';\n  if (key.name === 'right') return 'right';\n  if (key.name === 'left') return 'left';\n  return false;\n};","'use strict';\n\nmodule.exports = str => {\n  const pattern = ['[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)', '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PRZcf-ntqry=><~]))'].join('|');\n  const RGX = new RegExp(pattern, 'g');\n  return typeof str === 'string' ? str.replace(RGX, '') : str;\n};","'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n  to(x, y) {\n    if (!y) return `${CSI}${x + 1}G`;\n    return `${CSI}${y + 1};${x + 1}H`;\n  },\n  move(x, y) {\n    let ret = '';\n\n    if (x < 0) ret += `${CSI}${-x}D`;\n    else if (x > 0) ret += `${CSI}${x}C`;\n\n    if (y < 0) ret += `${CSI}${-y}A`;\n    else if (y > 0) ret += `${CSI}${y}B`;\n\n    return ret;\n  },\n  up: (count = 1) => `${CSI}${count}A`,\n  down: (count = 1) => `${CSI}${count}B`,\n  forward: (count = 1) => `${CSI}${count}C`,\n  backward: (count = 1) => `${CSI}${count}D`,\n  nextLine: (count = 1) => `${CSI}E`.repeat(count),\n  prevLine: (count = 1) => `${CSI}F`.repeat(count),\n  left: `${CSI}G`,\n  hide: `${CSI}?25l`,\n  show: `${CSI}?25h`,\n  save: `${ESC}7`,\n  restore: `${ESC}8`\n}\n\nconst scroll = {\n  up: (count = 1) => `${CSI}S`.repeat(count),\n  down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n  screen: `${CSI}2J`,\n  up: (count = 1) => `${CSI}1J`.repeat(count),\n  down: (count = 1) => `${CSI}J`.repeat(count),\n  line: `${CSI}2K`,\n  lineEnd: `${CSI}K`,\n  lineStart: `${CSI}1K`,\n  lines(count) {\n    let clear = '';\n    for (let i = 0; i < count; i++)\n      clear += this.line + (i < count - 1 ? cursor.up() : '');\n    if (count)\n      clear += cursor.left;\n    return clear;\n  }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","'use strict';\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nconst strip = require('./strip');\n\nconst _require = require('sisteransi'),\n      erase = _require.erase,\n      cursor = _require.cursor;\n\nconst width = str => [...strip(str)].length;\n/**\n * @param {string} prompt\n * @param {number} perLine\n */\n\n\nmodule.exports = function (prompt, perLine) {\n  if (!perLine) return erase.line + cursor.to(0);\n  let rows = 0;\n  const lines = prompt.split(/\\r?\\n/);\n\n  var _iterator = _createForOfIteratorHelper(lines),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      let line = _step.value;\n      rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return erase.lines(rows);\n};","'use strict';\n\nconst main = {\n  arrowUp: '↑',\n  arrowDown: '↓',\n  arrowLeft: '←',\n  arrowRight: '→',\n  radioOn: '◉',\n  radioOff: '◯',\n  tick: '✔',\n  cross: '✖',\n  ellipsis: '…',\n  pointerSmall: '›',\n  line: '─',\n  pointer: '❯'\n};\nconst win = {\n  arrowUp: main.arrowUp,\n  arrowDown: main.arrowDown,\n  arrowLeft: main.arrowLeft,\n  arrowRight: main.arrowRight,\n  radioOn: '(*)',\n  radioOff: '( )',\n  tick: '√',\n  cross: '×',\n  ellipsis: '...',\n  pointerSmall: '»',\n  line: '─',\n  pointer: '>'\n};\nconst figures = process.platform === 'win32' ? win : main;\nmodule.exports = figures;","'use strict';\n\nconst c = require('kleur');\n\nconst figures = require('./figures'); // rendering user input.\n\n\nconst styles = Object.freeze({\n  password: {\n    scale: 1,\n    render: input => '*'.repeat(input.length)\n  },\n  emoji: {\n    scale: 2,\n    render: input => '😃'.repeat(input.length)\n  },\n  invisible: {\n    scale: 0,\n    render: input => ''\n  },\n  default: {\n    scale: 1,\n    render: input => `${input}`\n  }\n});\n\nconst render = type => styles[type] || styles.default; // icon to signalize a prompt.\n\n\nconst symbols = Object.freeze({\n  aborted: c.red(figures.cross),\n  done: c.green(figures.tick),\n  exited: c.yellow(figures.cross),\n  default: c.cyan('?')\n});\n\nconst symbol = (done, aborted, exited) => aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default; // between the question and the user's input.\n\n\nconst delimiter = completing => c.gray(completing ? figures.ellipsis : figures.pointerSmall);\n\nconst item = (expandable, expanded) => c.gray(expandable ? expanded ? figures.pointerSmall : '+' : figures.line);\n\nmodule.exports = {\n  styles,\n  render,\n  symbols,\n  symbol,\n  delimiter,\n  item\n};","'use strict';\n\nconst strip = require('./strip');\n/**\n * @param {string} msg\n * @param {number} perLine\n */\n\n\nmodule.exports = function (msg, perLine) {\n  let lines = String(strip(msg) || '').split(/\\r?\\n/);\n  if (!perLine) return lines.length;\n  return lines.map(l => Math.ceil(l.length / perLine)).reduce((a, b) => a + b);\n};","'use strict';\n/**\n * @param {string} msg The message to wrap\n * @param {object} opts\n * @param {number|string} [opts.margin] Left margin\n * @param {number} opts.width Maximum characters per line including the margin\n */\n\nmodule.exports = (msg, opts = {}) => {\n  const tab = Number.isSafeInteger(parseInt(opts.margin)) ? new Array(parseInt(opts.margin)).fill(' ').join('') : opts.margin || '';\n  const width = opts.width;\n  return (msg || '').split(/\\r?\\n/g).map(line => line.split(/\\s+/g).reduce((arr, w) => {\n    if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width) arr[arr.length - 1] += ` ${w}`;else arr.push(`${tab}${w}`);\n    return arr;\n  }, [tab]).join('\\n')).join('\\n');\n};","'use strict';\n/**\n * Determine what entries should be displayed on the screen, based on the\n * currently selected index and the maximum visible. Used in list-based\n * prompts like `select` and `multiselect`.\n *\n * @param {number} cursor the currently selected entry\n * @param {number} total the total entries available to display\n * @param {number} [maxVisible] the number of entries that can be displayed\n */\n\nmodule.exports = (cursor, total, maxVisible) => {\n  maxVisible = maxVisible || total;\n  let startIndex = Math.min(total - maxVisible, cursor - Math.floor(maxVisible / 2));\n  if (startIndex < 0) startIndex = 0;\n  let endIndex = Math.min(startIndex + maxVisible, total);\n  return {\n    startIndex,\n    endIndex\n  };\n};","'use strict';\n\nmodule.exports = {\n  action: require('./action'),\n  clear: require('./clear'),\n  style: require('./style'),\n  strip: require('./strip'),\n  figures: require('./figures'),\n  lines: require('./lines'),\n  wrap: require('./wrap'),\n  entriesToDisplay: require('./entriesToDisplay')\n};","'use strict';\n\nconst readline = require('readline');\n\nconst _require = require('../util'),\n      action = _require.action;\n\nconst EventEmitter = require('events');\n\nconst _require2 = require('sisteransi'),\n      beep = _require2.beep,\n      cursor = _require2.cursor;\n\nconst color = require('kleur');\n/**\n * Base prompt skeleton\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\n\n\nclass Prompt extends EventEmitter {\n  constructor(opts = {}) {\n    super();\n    this.firstRender = true;\n    this.in = opts.stdin || process.stdin;\n    this.out = opts.stdout || process.stdout;\n\n    this.onRender = (opts.onRender || (() => void 0)).bind(this);\n\n    const rl = readline.createInterface({\n      input: this.in,\n      escapeCodeTimeout: 50\n    });\n    readline.emitKeypressEvents(this.in, rl);\n    if (this.in.isTTY) this.in.setRawMode(true);\n    const isSelect = ['SelectPrompt', 'MultiselectPrompt'].indexOf(this.constructor.name) > -1;\n\n    const keypress = (str, key) => {\n      let a = action(key, isSelect);\n\n      if (a === false) {\n        this._ && this._(str, key);\n      } else if (typeof this[a] === 'function') {\n        this[a](key);\n      } else {\n        this.bell();\n      }\n    };\n\n    this.close = () => {\n      this.out.write(cursor.show);\n      this.in.removeListener('keypress', keypress);\n      if (this.in.isTTY) this.in.setRawMode(false);\n      rl.close();\n      this.emit(this.aborted ? 'abort' : this.exited ? 'exit' : 'submit', this.value);\n      this.closed = true;\n    };\n\n    this.in.on('keypress', keypress);\n  }\n\n  fire() {\n    this.emit('state', {\n      value: this.value,\n      aborted: !!this.aborted,\n      exited: !!this.exited\n    });\n  }\n\n  bell() {\n    this.out.write(beep);\n  }\n\n  render() {\n    this.onRender(color);\n    if (this.firstRender) this.firstRender = false;\n  }\n\n}\n\nmodule.exports = Prompt;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('sisteransi'),\n      erase = _require.erase,\n      cursor = _require.cursor;\n\nconst _require2 = require('../util'),\n      style = _require2.style,\n      clear = _require2.clear,\n      lines = _require2.lines,\n      figures = _require2.figures;\n/**\n * TextPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {String} [opts.style='default'] Render style\n * @param {String} [opts.initial] Default value\n * @param {Function} [opts.validate] Validate function\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.error] The invalid error label\n */\n\n\nclass TextPrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.transform = style.render(opts.style);\n    this.scale = this.transform.scale;\n    this.msg = opts.message;\n    this.initial = opts.initial || ``;\n\n    this.validator = opts.validate || (() => true);\n\n    this.value = ``;\n    this.errorMsg = opts.error || `Please Enter A Valid Value`;\n    this.cursor = Number(!!this.initial);\n    this.cursorOffset = 0;\n    this.clear = clear(``, this.out.columns);\n    this.render();\n  }\n\n  set value(v) {\n    if (!v && this.initial) {\n      this.placeholder = true;\n      this.rendered = color.gray(this.transform.render(this.initial));\n    } else {\n      this.placeholder = false;\n      this.rendered = this.transform.render(v);\n    }\n\n    this._value = v;\n    this.fire();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  reset() {\n    this.value = ``;\n    this.cursor = Number(!!this.initial);\n    this.cursorOffset = 0;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.value = this.value || this.initial;\n    this.done = this.aborted = true;\n    this.error = false;\n    this.red = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  validate() {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      let valid = yield _this.validator(_this.value);\n\n      if (typeof valid === `string`) {\n        _this.errorMsg = valid;\n        valid = false;\n      }\n\n      _this.error = !valid;\n    })();\n  }\n\n  submit() {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      _this2.value = _this2.value || _this2.initial;\n      _this2.cursorOffset = 0;\n      _this2.cursor = _this2.rendered.length;\n      yield _this2.validate();\n\n      if (_this2.error) {\n        _this2.red = true;\n\n        _this2.fire();\n\n        _this2.render();\n\n        return;\n      }\n\n      _this2.done = true;\n      _this2.aborted = false;\n\n      _this2.fire();\n\n      _this2.render();\n\n      _this2.out.write('\\n');\n\n      _this2.close();\n    })();\n  }\n\n  next() {\n    if (!this.placeholder) return this.bell();\n    this.value = this.initial;\n    this.cursor = this.rendered.length;\n    this.fire();\n    this.render();\n  }\n\n  moveCursor(n) {\n    if (this.placeholder) return;\n    this.cursor = this.cursor + n;\n    this.cursorOffset += n;\n  }\n\n  _(c, key) {\n    let s1 = this.value.slice(0, this.cursor);\n    let s2 = this.value.slice(this.cursor);\n    this.value = `${s1}${c}${s2}`;\n    this.red = false;\n    this.cursor = this.placeholder ? 0 : s1.length + 1;\n    this.render();\n  }\n\n  delete() {\n    if (this.isCursorAtStart()) return this.bell();\n    let s1 = this.value.slice(0, this.cursor - 1);\n    let s2 = this.value.slice(this.cursor);\n    this.value = `${s1}${s2}`;\n    this.red = false;\n\n    if (this.isCursorAtStart()) {\n      this.cursorOffset = 0;\n    } else {\n      this.cursorOffset++;\n      this.moveCursor(-1);\n    }\n\n    this.render();\n  }\n\n  deleteForward() {\n    if (this.cursor * this.scale >= this.rendered.length || this.placeholder) return this.bell();\n    let s1 = this.value.slice(0, this.cursor);\n    let s2 = this.value.slice(this.cursor + 1);\n    this.value = `${s1}${s2}`;\n    this.red = false;\n\n    if (this.isCursorAtEnd()) {\n      this.cursorOffset = 0;\n    } else {\n      this.cursorOffset++;\n    }\n\n    this.render();\n  }\n\n  first() {\n    this.cursor = 0;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.value.length;\n    this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0 || this.placeholder) return this.bell();\n    this.moveCursor(-1);\n    this.render();\n  }\n\n  right() {\n    if (this.cursor * this.scale >= this.rendered.length || this.placeholder) return this.bell();\n    this.moveCursor(1);\n    this.render();\n  }\n\n  isCursorAtStart() {\n    return this.cursor === 0 || this.placeholder && this.cursor === 1;\n  }\n\n  isCursorAtEnd() {\n    return this.cursor === this.rendered.length || this.placeholder && this.cursor === this.rendered.length + 1;\n  }\n\n  render() {\n    if (this.closed) return;\n\n    if (!this.firstRender) {\n      if (this.outputError) this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n      this.out.write(clear(this.outputText, this.out.columns));\n    }\n\n    super.render();\n    this.outputError = '';\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.red ? color.red(this.rendered) : this.rendered].join(` `);\n\n    if (this.error) {\n      this.outputError += this.errorMsg.split(`\\n`).reduce((a, l, i) => a + `\\n${i ? ' ' : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0));\n  }\n\n}\n\nmodule.exports = TextPrompt;","'use strict';\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('../util'),\n      style = _require.style,\n      clear = _require.clear,\n      figures = _require.figures,\n      wrap = _require.wrap,\n      entriesToDisplay = _require.entriesToDisplay;\n\nconst _require2 = require('sisteransi'),\n      cursor = _require2.cursor;\n/**\n * SelectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {Number} [opts.initial] Index of default value\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n */\n\n\nclass SelectPrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.hint = opts.hint || '- Use arrow-keys. Return to submit.';\n    this.warn = opts.warn || '- This option is disabled';\n    this.cursor = opts.initial || 0;\n    this.choices = opts.choices.map((ch, idx) => {\n      if (typeof ch === 'string') ch = {\n        title: ch,\n        value: idx\n      };\n      return {\n        title: ch && (ch.title || ch.value || ch),\n        value: ch && (ch.value === undefined ? idx : ch.value),\n        description: ch && ch.description,\n        selected: ch && ch.selected,\n        disabled: ch && ch.disabled\n      };\n    });\n    this.optionsPerPage = opts.optionsPerPage || 10;\n    this.value = (this.choices[this.cursor] || {}).value;\n    this.clear = clear('', this.out.columns);\n    this.render();\n  }\n\n  moveCursor(n) {\n    this.cursor = n;\n    this.value = this.choices[n].value;\n    this.fire();\n  }\n\n  reset() {\n    this.moveCursor(0);\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    if (!this.selection.disabled) {\n      this.done = true;\n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    } else this.bell();\n  }\n\n  first() {\n    this.moveCursor(0);\n    this.render();\n  }\n\n  last() {\n    this.moveCursor(this.choices.length - 1);\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.moveCursor(this.choices.length - 1);\n    } else {\n      this.moveCursor(this.cursor - 1);\n    }\n\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.choices.length - 1) {\n      this.moveCursor(0);\n    } else {\n      this.moveCursor(this.cursor + 1);\n    }\n\n    this.render();\n  }\n\n  next() {\n    this.moveCursor((this.cursor + 1) % this.choices.length);\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') return this.submit();\n  }\n\n  get selection() {\n    return this.choices[this.cursor];\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    let _entriesToDisplay = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage),\n        startIndex = _entriesToDisplay.startIndex,\n        endIndex = _entriesToDisplay.endIndex; // Print prompt\n\n\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.done ? this.selection.title : this.selection.disabled ? color.yellow(this.warn) : color.gray(this.hint)].join(' '); // Print choices\n\n    if (!this.done) {\n      this.outputText += '\\n';\n\n      for (let i = startIndex; i < endIndex; i++) {\n        let title,\n            prefix,\n            desc = '',\n            v = this.choices[i]; // Determine whether to display \"more choices\" indicators\n\n        if (i === startIndex && startIndex > 0) {\n          prefix = figures.arrowUp;\n        } else if (i === endIndex - 1 && endIndex < this.choices.length) {\n          prefix = figures.arrowDown;\n        } else {\n          prefix = ' ';\n        }\n\n        if (v.disabled) {\n          title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n          prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : '  ') + prefix;\n        } else {\n          title = this.cursor === i ? color.cyan().underline(v.title) : v.title;\n          prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : '  ') + prefix;\n\n          if (v.description && this.cursor === i) {\n            desc = ` - ${v.description}`;\n\n            if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\\r?\\n/).length > 1) {\n              desc = '\\n' + wrap(v.description, {\n                margin: 3,\n                width: this.out.columns\n              });\n            }\n          }\n        }\n\n        this.outputText += `${prefix} ${title}${color.gray(desc)}\\n`;\n      }\n    }\n\n    this.out.write(this.outputText);\n  }\n\n}\n\nmodule.exports = SelectPrompt;","\"use strict\";\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('../util'),\n      style = _require.style,\n      clear = _require.clear;\n\nconst _require2 = require('sisteransi'),\n      cursor = _require2.cursor,\n      erase = _require2.erase;\n/**\n * TogglePrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Boolean} [opts.initial=false] Default value\n * @param {String} [opts.active='no'] Active label\n * @param {String} [opts.inactive='off'] Inactive label\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\n\n\nclass TogglePrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.value = !!opts.initial;\n    this.active = opts.active || 'on';\n    this.inactive = opts.inactive || 'off';\n    this.initialValue = this.value;\n    this.render();\n  }\n\n  reset() {\n    this.value = this.initialValue;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  deactivate() {\n    if (this.value === false) return this.bell();\n    this.value = false;\n    this.render();\n  }\n\n  activate() {\n    if (this.value === true) return this.bell();\n    this.value = true;\n    this.render();\n  }\n\n  delete() {\n    this.deactivate();\n  }\n\n  left() {\n    this.deactivate();\n  }\n\n  right() {\n    this.activate();\n  }\n\n  down() {\n    this.deactivate();\n  }\n\n  up() {\n    this.activate();\n  }\n\n  next() {\n    this.value = !this.value;\n    this.fire();\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.value = !this.value;\n    } else if (c === '1') {\n      this.value = true;\n    } else if (c === '0') {\n      this.value = false;\n    } else return this.bell();\n\n    this.render();\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.value ? this.inactive : color.cyan().underline(this.inactive), color.gray('/'), this.value ? color.cyan().underline(this.active) : this.active].join(' ');\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n\n}\n\nmodule.exports = TogglePrompt;","'use strict';\n\nclass DatePart {\n  constructor({\n    token,\n    date,\n    parts,\n    locales\n  }) {\n    this.token = token;\n    this.date = date || new Date();\n    this.parts = parts || [this];\n    this.locales = locales || {};\n  }\n\n  up() {}\n\n  down() {}\n\n  next() {\n    const currentIdx = this.parts.indexOf(this);\n    return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n  }\n\n  setTo(val) {}\n\n  prev() {\n    let parts = [].concat(this.parts).reverse();\n    const currentIdx = parts.indexOf(this);\n    return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n  }\n\n  toString() {\n    return String(this.date);\n  }\n\n}\n\nmodule.exports = DatePart;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Meridiem extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setHours((this.date.getHours() + 12) % 24);\n  }\n\n  down() {\n    this.up();\n  }\n\n  toString() {\n    let meridiem = this.date.getHours() > 12 ? 'pm' : 'am';\n    return /\\A/.test(this.token) ? meridiem.toUpperCase() : meridiem;\n  }\n\n}\n\nmodule.exports = Meridiem;","'use strict';\n\nconst DatePart = require('./datepart');\n\nconst pos = n => {\n  n = n % 10;\n  return n === 1 ? 'st' : n === 2 ? 'nd' : n === 3 ? 'rd' : 'th';\n};\n\nclass Day extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setDate(this.date.getDate() + 1);\n  }\n\n  down() {\n    this.date.setDate(this.date.getDate() - 1);\n  }\n\n  setTo(val) {\n    this.date.setDate(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let date = this.date.getDate();\n    let day = this.date.getDay();\n    return this.token === 'DD' ? String(date).padStart(2, '0') : this.token === 'Do' ? date + pos(date) : this.token === 'd' ? day + 1 : this.token === 'ddd' ? this.locales.weekdaysShort[day] : this.token === 'dddd' ? this.locales.weekdays[day] : date;\n  }\n\n}\n\nmodule.exports = Day;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Hours extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setHours(this.date.getHours() + 1);\n  }\n\n  down() {\n    this.date.setHours(this.date.getHours() - 1);\n  }\n\n  setTo(val) {\n    this.date.setHours(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let hours = this.date.getHours();\n    if (/h/.test(this.token)) hours = hours % 12 || 12;\n    return this.token.length > 1 ? String(hours).padStart(2, '0') : hours;\n  }\n\n}\n\nmodule.exports = Hours;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Milliseconds extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMilliseconds(this.date.getMilliseconds() + 1);\n  }\n\n  down() {\n    this.date.setMilliseconds(this.date.getMilliseconds() - 1);\n  }\n\n  setTo(val) {\n    this.date.setMilliseconds(parseInt(val.substr(-this.token.length)));\n  }\n\n  toString() {\n    return String(this.date.getMilliseconds()).padStart(4, '0').substr(0, this.token.length);\n  }\n\n}\n\nmodule.exports = Milliseconds;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Minutes extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMinutes(this.date.getMinutes() + 1);\n  }\n\n  down() {\n    this.date.setMinutes(this.date.getMinutes() - 1);\n  }\n\n  setTo(val) {\n    this.date.setMinutes(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let m = this.date.getMinutes();\n    return this.token.length > 1 ? String(m).padStart(2, '0') : m;\n  }\n\n}\n\nmodule.exports = Minutes;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Month extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMonth(this.date.getMonth() + 1);\n  }\n\n  down() {\n    this.date.setMonth(this.date.getMonth() - 1);\n  }\n\n  setTo(val) {\n    val = parseInt(val.substr(-2)) - 1;\n    this.date.setMonth(val < 0 ? 0 : val);\n  }\n\n  toString() {\n    let month = this.date.getMonth();\n    let tl = this.token.length;\n    return tl === 2 ? String(month + 1).padStart(2, '0') : tl === 3 ? this.locales.monthsShort[month] : tl === 4 ? this.locales.months[month] : String(month + 1);\n  }\n\n}\n\nmodule.exports = Month;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Seconds extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setSeconds(this.date.getSeconds() + 1);\n  }\n\n  down() {\n    this.date.setSeconds(this.date.getSeconds() - 1);\n  }\n\n  setTo(val) {\n    this.date.setSeconds(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let s = this.date.getSeconds();\n    return this.token.length > 1 ? String(s).padStart(2, '0') : s;\n  }\n\n}\n\nmodule.exports = Seconds;","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Year extends DatePart {\n  constructor(opts = {}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setFullYear(this.date.getFullYear() + 1);\n  }\n\n  down() {\n    this.date.setFullYear(this.date.getFullYear() - 1);\n  }\n\n  setTo(val) {\n    this.date.setFullYear(val.substr(-4));\n  }\n\n  toString() {\n    let year = String(this.date.getFullYear()).padStart(4, '0');\n    return this.token.length === 2 ? year.substr(-2) : year;\n  }\n\n}\n\nmodule.exports = Year;","'use strict';\n\nmodule.exports = {\n  DatePart: require('./datepart'),\n  Meridiem: require('./meridiem'),\n  Day: require('./day'),\n  Hours: require('./hours'),\n  Milliseconds: require('./milliseconds'),\n  Minutes: require('./minutes'),\n  Month: require('./month'),\n  Seconds: require('./seconds'),\n  Year: require('./year')\n};","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('../util'),\n      style = _require.style,\n      clear = _require.clear,\n      figures = _require.figures;\n\nconst _require2 = require('sisteransi'),\n      erase = _require2.erase,\n      cursor = _require2.cursor;\n\nconst _require3 = require('../dateparts'),\n      DatePart = _require3.DatePart,\n      Meridiem = _require3.Meridiem,\n      Day = _require3.Day,\n      Hours = _require3.Hours,\n      Milliseconds = _require3.Milliseconds,\n      Minutes = _require3.Minutes,\n      Month = _require3.Month,\n      Seconds = _require3.Seconds,\n      Year = _require3.Year;\n\nconst regex = /\\\\(.)|\"((?:\\\\[\"\\\\]|[^\"])+)\"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g;\nconst regexGroups = {\n  1: ({\n    token\n  }) => token.replace(/\\\\(.)/g, '$1'),\n  2: opts => new Day(opts),\n  // Day // TODO\n  3: opts => new Month(opts),\n  // Month\n  4: opts => new Year(opts),\n  // Year\n  5: opts => new Meridiem(opts),\n  // AM/PM // TODO (special)\n  6: opts => new Hours(opts),\n  // Hours\n  7: opts => new Minutes(opts),\n  // Minutes\n  8: opts => new Seconds(opts),\n  // Seconds\n  9: opts => new Milliseconds(opts) // Fractional seconds\n\n};\nconst dfltLocales = {\n  months: 'January,February,March,April,May,June,July,August,September,October,November,December'.split(','),\n  monthsShort: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n  weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n  weekdaysShort: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(',')\n};\n/**\n * DatePrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Number} [opts.initial] Index of default value\n * @param {String} [opts.mask] The format mask\n * @param {object} [opts.locales] The date locales\n * @param {String} [opts.error] The error message shown on invalid value\n * @param {Function} [opts.validate] Function to validate the submitted value\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\n\nclass DatePrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.cursor = 0;\n    this.typed = '';\n    this.locales = Object.assign(dfltLocales, opts.locales);\n    this._date = opts.initial || new Date();\n    this.errorMsg = opts.error || 'Please Enter A Valid Value';\n\n    this.validator = opts.validate || (() => true);\n\n    this.mask = opts.mask || 'YYYY-MM-DD HH:mm:ss';\n    this.clear = clear('', this.out.columns);\n    this.render();\n  }\n\n  get value() {\n    return this.date;\n  }\n\n  get date() {\n    return this._date;\n  }\n\n  set date(date) {\n    if (date) this._date.setTime(date.getTime());\n  }\n\n  set mask(mask) {\n    let result;\n    this.parts = [];\n\n    while (result = regex.exec(mask)) {\n      let match = result.shift();\n      let idx = result.findIndex(gr => gr != null);\n      this.parts.push(idx in regexGroups ? regexGroups[idx]({\n        token: result[idx] || match,\n        date: this.date,\n        parts: this.parts,\n        locales: this.locales\n      }) : result[idx] || match);\n    }\n\n    let parts = this.parts.reduce((arr, i) => {\n      if (typeof i === 'string' && typeof arr[arr.length - 1] === 'string') arr[arr.length - 1] += i;else arr.push(i);\n      return arr;\n    }, []);\n    this.parts.splice(0);\n    this.parts.push(...parts);\n    this.reset();\n  }\n\n  moveCursor(n) {\n    this.typed = '';\n    this.cursor = n;\n    this.fire();\n  }\n\n  reset() {\n    this.moveCursor(this.parts.findIndex(p => p instanceof DatePart));\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.error = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  validate() {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      let valid = yield _this.validator(_this.value);\n\n      if (typeof valid === 'string') {\n        _this.errorMsg = valid;\n        valid = false;\n      }\n\n      _this.error = !valid;\n    })();\n  }\n\n  submit() {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      yield _this2.validate();\n\n      if (_this2.error) {\n        _this2.color = 'red';\n\n        _this2.fire();\n\n        _this2.render();\n\n        return;\n      }\n\n      _this2.done = true;\n      _this2.aborted = false;\n\n      _this2.fire();\n\n      _this2.render();\n\n      _this2.out.write('\\n');\n\n      _this2.close();\n    })();\n  }\n\n  up() {\n    this.typed = '';\n    this.parts[this.cursor].up();\n    this.render();\n  }\n\n  down() {\n    this.typed = '';\n    this.parts[this.cursor].down();\n    this.render();\n  }\n\n  left() {\n    let prev = this.parts[this.cursor].prev();\n    if (prev == null) return this.bell();\n    this.moveCursor(this.parts.indexOf(prev));\n    this.render();\n  }\n\n  right() {\n    let next = this.parts[this.cursor].next();\n    if (next == null) return this.bell();\n    this.moveCursor(this.parts.indexOf(next));\n    this.render();\n  }\n\n  next() {\n    let next = this.parts[this.cursor].next();\n    this.moveCursor(next ? this.parts.indexOf(next) : this.parts.findIndex(part => part instanceof DatePart));\n    this.render();\n  }\n\n  _(c) {\n    if (/\\d/.test(c)) {\n      this.typed += c;\n      this.parts[this.cursor].setTo(this.typed);\n      this.render();\n    }\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns));\n    super.render(); // Print prompt\n\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), []).join('')].join(' '); // Print error\n\n    if (this.error) {\n      this.outputText += this.errorMsg.split('\\n').reduce((a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n\n}\n\nmodule.exports = DatePrompt;","\"use strict\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('sisteransi'),\n      cursor = _require.cursor,\n      erase = _require.erase;\n\nconst _require2 = require('../util'),\n      style = _require2.style,\n      figures = _require2.figures,\n      clear = _require2.clear,\n      lines = _require2.lines;\n\nconst isNumber = /[0-9]/;\n\nconst isDef = any => any !== undefined;\n\nconst round = (number, precision) => {\n  let factor = Math.pow(10, precision);\n  return Math.round(number * factor) / factor;\n};\n/**\n * NumberPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {String} [opts.style='default'] Render style\n * @param {Number} [opts.initial] Default value\n * @param {Number} [opts.max=+Infinity] Max value\n * @param {Number} [opts.min=-Infinity] Min value\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {Function} [opts.validate] Validate function\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.error] The invalid error label\n */\n\n\nclass NumberPrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.transform = style.render(opts.style);\n    this.msg = opts.message;\n    this.initial = isDef(opts.initial) ? opts.initial : '';\n    this.float = !!opts.float;\n    this.round = opts.round || 2;\n    this.inc = opts.increment || 1;\n    this.min = isDef(opts.min) ? opts.min : -Infinity;\n    this.max = isDef(opts.max) ? opts.max : Infinity;\n    this.errorMsg = opts.error || `Please Enter A Valid Value`;\n\n    this.validator = opts.validate || (() => true);\n\n    this.color = `cyan`;\n    this.value = ``;\n    this.typed = ``;\n    this.lastHit = 0;\n    this.render();\n  }\n\n  set value(v) {\n    if (!v && v !== 0) {\n      this.placeholder = true;\n      this.rendered = color.gray(this.transform.render(`${this.initial}`));\n      this._value = ``;\n    } else {\n      this.placeholder = false;\n      this.rendered = this.transform.render(`${round(v, this.round)}`);\n      this._value = round(v, this.round);\n    }\n\n    this.fire();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  parse(x) {\n    return this.float ? parseFloat(x) : parseInt(x);\n  }\n\n  valid(c) {\n    return c === `-` || c === `.` && this.float || isNumber.test(c);\n  }\n\n  reset() {\n    this.typed = ``;\n    this.value = ``;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    let x = this.value;\n    this.value = x !== `` ? x : this.initial;\n    this.done = this.aborted = true;\n    this.error = false;\n    this.fire();\n    this.render();\n    this.out.write(`\\n`);\n    this.close();\n  }\n\n  validate() {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      let valid = yield _this.validator(_this.value);\n\n      if (typeof valid === `string`) {\n        _this.errorMsg = valid;\n        valid = false;\n      }\n\n      _this.error = !valid;\n    })();\n  }\n\n  submit() {\n    var _this2 = this;\n\n    return _asyncToGenerator(function* () {\n      yield _this2.validate();\n\n      if (_this2.error) {\n        _this2.color = `red`;\n\n        _this2.fire();\n\n        _this2.render();\n\n        return;\n      }\n\n      let x = _this2.value;\n      _this2.value = x !== `` ? x : _this2.initial;\n      _this2.done = true;\n      _this2.aborted = false;\n      _this2.error = false;\n\n      _this2.fire();\n\n      _this2.render();\n\n      _this2.out.write(`\\n`);\n\n      _this2.close();\n    })();\n  }\n\n  up() {\n    this.typed = ``;\n\n    if (this.value === '') {\n      this.value = this.min - this.inc;\n    }\n\n    if (this.value >= this.max) return this.bell();\n    this.value += this.inc;\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  down() {\n    this.typed = ``;\n\n    if (this.value === '') {\n      this.value = this.min + this.inc;\n    }\n\n    if (this.value <= this.min) return this.bell();\n    this.value -= this.inc;\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  delete() {\n    let val = this.value.toString();\n    if (val.length === 0) return this.bell();\n    this.value = this.parse(val = val.slice(0, -1)) || ``;\n\n    if (this.value !== '' && this.value < this.min) {\n      this.value = this.min;\n    }\n\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  next() {\n    this.value = this.initial;\n    this.fire();\n    this.render();\n  }\n\n  _(c, key) {\n    if (!this.valid(c)) return this.bell();\n    const now = Date.now();\n    if (now - this.lastHit > 1000) this.typed = ``; // 1s elapsed\n\n    this.typed += c;\n    this.lastHit = now;\n    this.color = `cyan`;\n    if (c === `.`) return this.fire();\n    this.value = Math.min(this.parse(this.typed), this.max);\n    if (this.value > this.max) this.value = this.max;\n    if (this.value < this.min) this.value = this.min;\n    this.fire();\n    this.render();\n  }\n\n  render() {\n    if (this.closed) return;\n\n    if (!this.firstRender) {\n      if (this.outputError) this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n      this.out.write(clear(this.outputText, this.out.columns));\n    }\n\n    super.render();\n    this.outputError = ''; // Print prompt\n\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), !this.done || !this.done && !this.placeholder ? color[this.color]().underline(this.rendered) : this.rendered].join(` `); // Print error\n\n    if (this.error) {\n      this.outputError += this.errorMsg.split(`\\n`).reduce((a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore);\n  }\n\n}\n\nmodule.exports = NumberPrompt;","'use strict';\n\nconst color = require('kleur');\n\nconst _require = require('sisteransi'),\n      cursor = _require.cursor;\n\nconst Prompt = require('./prompt');\n\nconst _require2 = require('../util'),\n      clear = _require2.clear,\n      figures = _require2.figures,\n      style = _require2.style,\n      wrap = _require2.wrap,\n      entriesToDisplay = _require2.entriesToDisplay;\n/**\n * MultiselectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {String} [opts.warn] Hint shown for disabled choices\n * @param {Number} [opts.max] Max choices\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\n\n\nclass MultiselectPrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.cursor = opts.cursor || 0;\n    this.scrollIndex = opts.cursor || 0;\n    this.hint = opts.hint || '';\n    this.warn = opts.warn || '- This option is disabled -';\n    this.minSelected = opts.min;\n    this.showMinError = false;\n    this.maxChoices = opts.max;\n    this.instructions = opts.instructions;\n    this.optionsPerPage = opts.optionsPerPage || 10;\n    this.value = opts.choices.map((ch, idx) => {\n      if (typeof ch === 'string') ch = {\n        title: ch,\n        value: idx\n      };\n      return {\n        title: ch && (ch.title || ch.value || ch),\n        description: ch && ch.description,\n        value: ch && (ch.value === undefined ? idx : ch.value),\n        selected: ch && ch.selected,\n        disabled: ch && ch.disabled\n      };\n    });\n    this.clear = clear('', this.out.columns);\n\n    if (!opts.overrideRender) {\n      this.render();\n    }\n  }\n\n  reset() {\n    this.value.map(v => !v.selected);\n    this.cursor = 0;\n    this.fire();\n    this.render();\n  }\n\n  selected() {\n    return this.value.filter(v => v.selected);\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    const selected = this.value.filter(e => e.selected);\n\n    if (this.minSelected && selected.length < this.minSelected) {\n      this.showMinError = true;\n      this.render();\n    } else {\n      this.done = true;\n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    }\n  }\n\n  first() {\n    this.cursor = 0;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.value.length - 1;\n    this.render();\n  }\n\n  next() {\n    this.cursor = (this.cursor + 1) % this.value.length;\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.cursor = this.value.length - 1;\n    } else {\n      this.cursor--;\n    }\n\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.value.length - 1) {\n      this.cursor = 0;\n    } else {\n      this.cursor++;\n    }\n\n    this.render();\n  }\n\n  left() {\n    this.value[this.cursor].selected = false;\n    this.render();\n  }\n\n  right() {\n    if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n    this.value[this.cursor].selected = true;\n    this.render();\n  }\n\n  handleSpaceToggle() {\n    const v = this.value[this.cursor];\n\n    if (v.selected) {\n      v.selected = false;\n      this.render();\n    } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n      return this.bell();\n    } else {\n      v.selected = true;\n      this.render();\n    }\n  }\n\n  toggleAll() {\n    if (this.maxChoices !== undefined || this.value[this.cursor].disabled) {\n      return this.bell();\n    }\n\n    const newSelected = !this.value[this.cursor].selected;\n    this.value.filter(v => !v.disabled).forEach(v => v.selected = newSelected);\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.handleSpaceToggle();\n    } else if (c === 'a') {\n      this.toggleAll();\n    } else {\n      return this.bell();\n    }\n  }\n\n  renderInstructions() {\n    if (this.instructions === undefined || this.instructions) {\n      if (typeof this.instructions === 'string') {\n        return this.instructions;\n      }\n\n      return '\\nInstructions:\\n' + `    ${figures.arrowUp}/${figures.arrowDown}: Highlight option\\n` + `    ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\\n` + (this.maxChoices === undefined ? `    a: Toggle all\\n` : '') + `    enter/return: Complete answer`;\n    }\n\n    return '';\n  }\n\n  renderOption(cursor, v, i, arrowIndicator) {\n    const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' ';\n    let title, desc;\n\n    if (v.disabled) {\n      title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n    } else {\n      title = cursor === i ? color.cyan().underline(v.title) : v.title;\n\n      if (cursor === i && v.description) {\n        desc = ` - ${v.description}`;\n\n        if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\\r?\\n/).length > 1) {\n          desc = '\\n' + wrap(v.description, {\n            margin: prefix.length,\n            width: this.out.columns\n          });\n        }\n      }\n    }\n\n    return prefix + title + color.gray(desc || '');\n  } // shared with autocompleteMultiselect\n\n\n  paginateOptions(options) {\n    if (options.length === 0) {\n      return color.red('No matches for this query.');\n    }\n\n    let _entriesToDisplay = entriesToDisplay(this.cursor, options.length, this.optionsPerPage),\n        startIndex = _entriesToDisplay.startIndex,\n        endIndex = _entriesToDisplay.endIndex;\n\n    let prefix,\n        styledOptions = [];\n\n    for (let i = startIndex; i < endIndex; i++) {\n      if (i === startIndex && startIndex > 0) {\n        prefix = figures.arrowUp;\n      } else if (i === endIndex - 1 && endIndex < options.length) {\n        prefix = figures.arrowDown;\n      } else {\n        prefix = ' ';\n      }\n\n      styledOptions.push(this.renderOption(this.cursor, options[i], i, prefix));\n    }\n\n    return '\\n' + styledOptions.join('\\n');\n  } // shared with autocomleteMultiselect\n\n\n  renderOptions(options) {\n    if (!this.done) {\n      return this.paginateOptions(options);\n    }\n\n    return '';\n  }\n\n  renderDoneOrInstructions() {\n    if (this.done) {\n      return this.value.filter(e => e.selected).map(v => v.title).join(', ');\n    }\n\n    const output = [color.gray(this.hint), this.renderInstructions()];\n\n    if (this.value[this.cursor].disabled) {\n      output.push(color.yellow(this.warn));\n    }\n\n    return output.join(' ');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    super.render(); // print prompt\n\n    let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(' ');\n\n    if (this.showMinError) {\n      prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n      this.showMinError = false;\n    }\n\n    prompt += this.renderOptions(this.value);\n    this.out.write(this.clear + prompt);\n    this.clear = clear(prompt, this.out.columns);\n  }\n\n}\n\nmodule.exports = MultiselectPrompt;","'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('sisteransi'),\n      erase = _require.erase,\n      cursor = _require.cursor;\n\nconst _require2 = require('../util'),\n      style = _require2.style,\n      clear = _require2.clear,\n      figures = _require2.figures,\n      wrap = _require2.wrap,\n      entriesToDisplay = _require2.entriesToDisplay;\n\nconst getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]);\n\nconst getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]);\n\nconst getIndex = (arr, valOrTitle) => {\n  const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle);\n  return index > -1 ? index : undefined;\n};\n/**\n * TextPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of auto-complete choices objects\n * @param {Function} [opts.suggest] Filter function. Defaults to sort by title\n * @param {Number} [opts.limit=10] Max number of results to show\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {String} [opts.style='default'] Render style\n * @param {String} [opts.fallback] Fallback message - initial to default value\n * @param {String} [opts.initial] Index of the default value\n * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.noMatches] The no matches found label\n */\n\n\nclass AutocompletePrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.suggest = opts.suggest;\n    this.choices = opts.choices;\n    this.initial = typeof opts.initial === 'number' ? opts.initial : getIndex(opts.choices, opts.initial);\n    this.select = this.initial || opts.cursor || 0;\n    this.i18n = {\n      noMatches: opts.noMatches || 'no matches found'\n    };\n    this.fallback = opts.fallback || this.initial;\n    this.clearFirst = opts.clearFirst || false;\n    this.suggestions = [];\n    this.input = '';\n    this.limit = opts.limit || 10;\n    this.cursor = 0;\n    this.transform = style.render(opts.style);\n    this.scale = this.transform.scale;\n    this.render = this.render.bind(this);\n    this.complete = this.complete.bind(this);\n    this.clear = clear('', this.out.columns);\n    this.complete(this.render);\n    this.render();\n  }\n\n  set fallback(fb) {\n    this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb;\n  }\n\n  get fallback() {\n    let choice;\n    if (typeof this._fb === 'number') choice = this.choices[this._fb];else if (typeof this._fb === 'string') choice = {\n      title: this._fb\n    };\n    return choice || this._fb || {\n      title: this.i18n.noMatches\n    };\n  }\n\n  moveSelect(i) {\n    this.select = i;\n    if (this.suggestions.length > 0) this.value = getVal(this.suggestions, i);else this.value = this.fallback.value;\n    this.fire();\n  }\n\n  complete(cb) {\n    var _this = this;\n\n    return _asyncToGenerator(function* () {\n      const p = _this.completing = _this.suggest(_this.input, _this.choices);\n\n      const suggestions = yield p;\n      if (_this.completing !== p) return;\n      _this.suggestions = suggestions.map((s, i, arr) => ({\n        title: getTitle(arr, i),\n        value: getVal(arr, i),\n        description: s.description\n      }));\n      _this.completing = false;\n      const l = Math.max(suggestions.length - 1, 0);\n\n      _this.moveSelect(Math.min(l, _this.select));\n\n      cb && cb();\n    })();\n  }\n\n  reset() {\n    this.input = '';\n    this.complete(() => {\n      this.moveSelect(this.initial !== void 0 ? this.initial : 0);\n      this.render();\n    });\n    this.render();\n  }\n\n  exit() {\n    if (this.clearFirst && this.input.length > 0) {\n      this.reset();\n    } else {\n      this.done = this.exited = true;\n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    }\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.exited = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.done = true;\n    this.aborted = this.exited = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  _(c, key) {\n    let s1 = this.input.slice(0, this.cursor);\n    let s2 = this.input.slice(this.cursor);\n    this.input = `${s1}${c}${s2}`;\n    this.cursor = s1.length + 1;\n    this.complete(this.render);\n    this.render();\n  }\n\n  delete() {\n    if (this.cursor === 0) return this.bell();\n    let s1 = this.input.slice(0, this.cursor - 1);\n    let s2 = this.input.slice(this.cursor);\n    this.input = `${s1}${s2}`;\n    this.complete(this.render);\n    this.cursor = this.cursor - 1;\n    this.render();\n  }\n\n  deleteForward() {\n    if (this.cursor * this.scale >= this.rendered.length) return this.bell();\n    let s1 = this.input.slice(0, this.cursor);\n    let s2 = this.input.slice(this.cursor + 1);\n    this.input = `${s1}${s2}`;\n    this.complete(this.render);\n    this.render();\n  }\n\n  first() {\n    this.moveSelect(0);\n    this.render();\n  }\n\n  last() {\n    this.moveSelect(this.suggestions.length - 1);\n    this.render();\n  }\n\n  up() {\n    if (this.select === 0) {\n      this.moveSelect(this.suggestions.length - 1);\n    } else {\n      this.moveSelect(this.select - 1);\n    }\n\n    this.render();\n  }\n\n  down() {\n    if (this.select === this.suggestions.length - 1) {\n      this.moveSelect(0);\n    } else {\n      this.moveSelect(this.select + 1);\n    }\n\n    this.render();\n  }\n\n  next() {\n    if (this.select === this.suggestions.length - 1) {\n      this.moveSelect(0);\n    } else this.moveSelect(this.select + 1);\n\n    this.render();\n  }\n\n  nextPage() {\n    this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1));\n    this.render();\n  }\n\n  prevPage() {\n    this.moveSelect(Math.max(this.select - this.limit, 0));\n    this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0) return this.bell();\n    this.cursor = this.cursor - 1;\n    this.render();\n  }\n\n  right() {\n    if (this.cursor * this.scale >= this.rendered.length) return this.bell();\n    this.cursor = this.cursor + 1;\n    this.render();\n  }\n\n  renderOption(v, hovered, isStart, isEnd) {\n    let desc;\n    let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' ';\n    let title = hovered ? color.cyan().underline(v.title) : v.title;\n    prefix = (hovered ? color.cyan(figures.pointer) + ' ' : '  ') + prefix;\n\n    if (v.description) {\n      desc = ` - ${v.description}`;\n\n      if (prefix.length + title.length + desc.length >= this.out.columns || v.description.split(/\\r?\\n/).length > 1) {\n        desc = '\\n' + wrap(v.description, {\n          margin: 3,\n          width: this.out.columns\n        });\n      }\n    }\n\n    return prefix + ' ' + title + color.gray(desc || '');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    let _entriesToDisplay = entriesToDisplay(this.select, this.choices.length, this.limit),\n        startIndex = _entriesToDisplay.startIndex,\n        endIndex = _entriesToDisplay.endIndex;\n\n    this.outputText = [style.symbol(this.done, this.aborted, this.exited), color.bold(this.msg), style.delimiter(this.completing), this.done && this.suggestions[this.select] ? this.suggestions[this.select].title : this.rendered = this.transform.render(this.input)].join(' ');\n\n    if (!this.done) {\n      const suggestions = this.suggestions.slice(startIndex, endIndex).map((item, i) => this.renderOption(item, this.select === i + startIndex, i === 0 && startIndex > 0, i + startIndex === endIndex - 1 && endIndex < this.choices.length)).join('\\n');\n      this.outputText += `\\n` + (suggestions || color.gray(this.fallback.title));\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n\n}\n\nmodule.exports = AutocompletePrompt;","'use strict';\n\nconst color = require('kleur');\n\nconst _require = require('sisteransi'),\n      cursor = _require.cursor;\n\nconst MultiselectPrompt = require('./multiselect');\n\nconst _require2 = require('../util'),\n      clear = _require2.clear,\n      style = _require2.style,\n      figures = _require2.figures;\n/**\n * MultiselectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {String} [opts.warn] Hint shown for disabled choices\n * @param {Number} [opts.max] Max choices\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\n\n\nclass AutocompleteMultiselectPrompt extends MultiselectPrompt {\n  constructor(opts = {}) {\n    opts.overrideRender = true;\n    super(opts);\n    this.inputValue = '';\n    this.clear = clear('', this.out.columns);\n    this.filteredOptions = this.value;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.filteredOptions.length - 1;\n    this.render();\n  }\n\n  next() {\n    this.cursor = (this.cursor + 1) % this.filteredOptions.length;\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.cursor = this.filteredOptions.length - 1;\n    } else {\n      this.cursor--;\n    }\n\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.filteredOptions.length - 1) {\n      this.cursor = 0;\n    } else {\n      this.cursor++;\n    }\n\n    this.render();\n  }\n\n  left() {\n    this.filteredOptions[this.cursor].selected = false;\n    this.render();\n  }\n\n  right() {\n    if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n    this.filteredOptions[this.cursor].selected = true;\n    this.render();\n  }\n\n  delete() {\n    if (this.inputValue.length) {\n      this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1);\n      this.updateFilteredOptions();\n    }\n  }\n\n  updateFilteredOptions() {\n    const currentHighlight = this.filteredOptions[this.cursor];\n    this.filteredOptions = this.value.filter(v => {\n      if (this.inputValue) {\n        if (typeof v.title === 'string') {\n          if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) {\n            return true;\n          }\n        }\n\n        if (typeof v.value === 'string') {\n          if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) {\n            return true;\n          }\n        }\n\n        return false;\n      }\n\n      return true;\n    });\n    const newHighlightIndex = this.filteredOptions.findIndex(v => v === currentHighlight);\n    this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex;\n    this.render();\n  }\n\n  handleSpaceToggle() {\n    const v = this.filteredOptions[this.cursor];\n\n    if (v.selected) {\n      v.selected = false;\n      this.render();\n    } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n      return this.bell();\n    } else {\n      v.selected = true;\n      this.render();\n    }\n  }\n\n  handleInputChange(c) {\n    this.inputValue = this.inputValue + c;\n    this.updateFilteredOptions();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.handleSpaceToggle();\n    } else {\n      this.handleInputChange(c);\n    }\n  }\n\n  renderInstructions() {\n    if (this.instructions === undefined || this.instructions) {\n      if (typeof this.instructions === 'string') {\n        return this.instructions;\n      }\n\n      return `\nInstructions:\n    ${figures.arrowUp}/${figures.arrowDown}: Highlight option\n    ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\n    [a,b,c]/delete: Filter choices\n    enter/return: Complete answer\n`;\n    }\n\n    return '';\n  }\n\n  renderCurrentInput() {\n    return `\nFiltered results for: ${this.inputValue ? this.inputValue : color.gray('Enter something to filter')}\\n`;\n  }\n\n  renderOption(cursor, v, i) {\n    let title;\n    if (v.disabled) title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);else title = cursor === i ? color.cyan().underline(v.title) : v.title;\n    return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + '  ' + title;\n  }\n\n  renderDoneOrInstructions() {\n    if (this.done) {\n      return this.value.filter(e => e.selected).map(v => v.title).join(', ');\n    }\n\n    const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()];\n\n    if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) {\n      output.push(color.yellow(this.warn));\n    }\n\n    return output.join(' ');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    super.render(); // print prompt\n\n    let prompt = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(false), this.renderDoneOrInstructions()].join(' ');\n\n    if (this.showMinError) {\n      prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n      this.showMinError = false;\n    }\n\n    prompt += this.renderOptions(this.filteredOptions);\n    this.out.write(this.clear + prompt);\n    this.clear = clear(prompt, this.out.columns);\n  }\n\n}\n\nmodule.exports = AutocompleteMultiselectPrompt;","\"use strict\";\n\nconst color = require('kleur');\n\nconst Prompt = require('./prompt');\n\nconst _require = require('../util'),\n      style = _require.style,\n      clear = _require.clear;\n\nconst _require2 = require('sisteransi'),\n      erase = _require2.erase,\n      cursor = _require2.cursor;\n/**\n * ConfirmPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Boolean} [opts.initial] Default value (true/false)\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.yes] The \"Yes\" label\n * @param {String} [opts.yesOption] The \"Yes\" option when choosing between yes/no\n * @param {String} [opts.no] The \"No\" label\n * @param {String} [opts.noOption] The \"No\" option when choosing between yes/no\n */\n\n\nclass ConfirmPrompt extends Prompt {\n  constructor(opts = {}) {\n    super(opts);\n    this.msg = opts.message;\n    this.value = opts.initial;\n    this.initialValue = !!opts.initial;\n    this.yesMsg = opts.yes || 'yes';\n    this.yesOption = opts.yesOption || '(Y/n)';\n    this.noMsg = opts.no || 'no';\n    this.noOption = opts.noOption || '(y/N)';\n    this.render();\n  }\n\n  reset() {\n    this.value = this.initialValue;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.value = this.value || false;\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  _(c, key) {\n    if (c.toLowerCase() === 'y') {\n      this.value = true;\n      return this.submit();\n    }\n\n    if (c.toLowerCase() === 'n') {\n      this.value = false;\n      return this.submit();\n    }\n\n    return this.bell();\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n    this.outputText = [style.symbol(this.done, this.aborted), color.bold(this.msg), style.delimiter(this.done), this.done ? this.value ? this.yesMsg : this.noMsg : color.gray(this.initialValue ? this.yesOption : this.noOption)].join(' ');\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n\n}\n\nmodule.exports = ConfirmPrompt;","'use strict';\n\nmodule.exports = {\n  TextPrompt: require('./text'),\n  SelectPrompt: require('./select'),\n  TogglePrompt: require('./toggle'),\n  DatePrompt: require('./date'),\n  NumberPrompt: require('./number'),\n  MultiselectPrompt: require('./multiselect'),\n  AutocompletePrompt: require('./autocomplete'),\n  AutocompleteMultiselectPrompt: require('./autocompleteMultiselect'),\n  ConfirmPrompt: require('./confirm')\n};","'use strict';\n\nconst $ = exports;\n\nconst el = require('./elements');\n\nconst noop = v => v;\n\nfunction toPrompt(type, args, opts = {}) {\n  return new Promise((res, rej) => {\n    const p = new el[type](args);\n    const onAbort = opts.onAbort || noop;\n    const onSubmit = opts.onSubmit || noop;\n    const onExit = opts.onExit || noop;\n    p.on('state', args.onState || noop);\n    p.on('submit', x => res(onSubmit(x)));\n    p.on('exit', x => res(onExit(x)));\n    p.on('abort', x => rej(onAbort(x)));\n  });\n}\n/**\n * Text prompt\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.text = args => toPrompt('TextPrompt', args);\n/**\n * Password prompt with masked input\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.password = args => {\n  args.style = 'password';\n  return $.text(args);\n};\n/**\n * Prompt where input is invisible, like sudo\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.invisible = args => {\n  args.style = 'invisible';\n  return $.text(args);\n};\n/**\n * Number prompt\n * @param {string} args.message Prompt message to display\n * @param {number} args.initial Default number value\n * @param {function} [args.onState] On state change callback\n * @param {number} [args.max] Max value\n * @param {number} [args.min] Min value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.number = args => toPrompt('NumberPrompt', args);\n/**\n * Date prompt\n * @param {string} args.message Prompt message to display\n * @param {number} args.initial Default number value\n * @param {function} [args.onState] On state change callback\n * @param {number} [args.max] Max value\n * @param {number} [args.min] Min value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.date = args => toPrompt('DatePrompt', args);\n/**\n * Classic yes/no prompt\n * @param {string} args.message Prompt message to display\n * @param {boolean} [args.initial=false] Default value\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.confirm = args => toPrompt('ConfirmPrompt', args);\n/**\n * List prompt, split intput string by `seperator`\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {string} [args.separator] String separator\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input, in form of an `Array`\n */\n\n\n$.list = args => {\n  const sep = args.separator || ',';\n  return toPrompt('TextPrompt', args, {\n    onSubmit: str => str.split(sep).map(s => s.trim())\n  });\n};\n/**\n * Toggle/switch prompt\n * @param {string} args.message Prompt message to display\n * @param {boolean} [args.initial=false] Default value\n * @param {string} [args.active=\"on\"] Text for `active` state\n * @param {string} [args.inactive=\"off\"] Text for `inactive` state\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.toggle = args => toPrompt('TogglePrompt', args);\n/**\n * Interactive select prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of choices objects `[{ title, value }, ...]`\n * @param {number} [args.initial] Index of default value\n * @param {String} [args.hint] Hint to display\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.select = args => toPrompt('SelectPrompt', args);\n/**\n * Interactive multi-select / autocompleteMultiselect prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of choices objects `[{ title, value, [selected] }, ...]`\n * @param {number} [args.max] Max select\n * @param {string} [args.hint] Hint to display user\n * @param {Number} [args.cursor=0] Cursor start position\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.multiselect = args => {\n  args.choices = [].concat(args.choices || []);\n\n  const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n\n  return toPrompt('MultiselectPrompt', args, {\n    onAbort: toSelected,\n    onSubmit: toSelected\n  });\n};\n\n$.autocompleteMultiselect = args => {\n  args.choices = [].concat(args.choices || []);\n\n  const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n\n  return toPrompt('AutocompleteMultiselectPrompt', args, {\n    onAbort: toSelected,\n    onSubmit: toSelected\n  });\n};\n\nconst byTitle = (input, choices) => Promise.resolve(choices.filter(item => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase()));\n/**\n * Interactive auto-complete prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of auto-complete choices objects `[{ title, value }, ...]`\n * @param {Function} [args.suggest] Function to filter results based on user input. Defaults to sort by `title`\n * @param {number} [args.limit=10] Max number of results to show\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {String} [args.initial] Index of the default value\n * @param {boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n * @param {String} [args.fallback] Fallback message - defaults to initial value\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n\n\n$.autocomplete = args => {\n  args.suggest = args.suggest || byTitle;\n  args.choices = [].concat(args.choices || []);\n  return toPrompt('AutocompletePrompt', args);\n};","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nconst prompts = require('./prompts');\n\nconst passOn = ['suggest', 'format', 'onState', 'validate', 'onRender', 'type'];\n\nconst noop = () => {};\n/**\n * Prompt for a series of questions\n * @param {Array|Object} questions Single question object or Array of question objects\n * @param {Function} [onSubmit] Callback function called on prompt submit\n * @param {Function} [onCancel] Callback function called on cancel/abort\n * @returns {Object} Object with values from user input\n */\n\n\nfunction prompt() {\n  return _prompt.apply(this, arguments);\n}\n\nfunction _prompt() {\n  _prompt = _asyncToGenerator(function* (questions = [], {\n    onSubmit = noop,\n    onCancel = noop\n  } = {}) {\n    const answers = {};\n    const override = prompt._override || {};\n    questions = [].concat(questions);\n    let answer, question, quit, name, type, lastPrompt;\n\n    const getFormattedAnswer = /*#__PURE__*/function () {\n      var _ref = _asyncToGenerator(function* (question, answer, skipValidation = false) {\n        if (!skipValidation && question.validate && question.validate(answer) !== true) {\n          return;\n        }\n\n        return question.format ? yield question.format(answer, answers) : answer;\n      });\n\n      return function getFormattedAnswer(_x, _x2) {\n        return _ref.apply(this, arguments);\n      };\n    }();\n\n    var _iterator = _createForOfIteratorHelper(questions),\n        _step;\n\n    try {\n      for (_iterator.s(); !(_step = _iterator.n()).done;) {\n        question = _step.value;\n        var _question = question;\n        name = _question.name;\n        type = _question.type;\n\n        // evaluate type first and skip if type is a falsy value\n        if (typeof type === 'function') {\n          type = yield type(answer, _objectSpread({}, answers), question);\n          question['type'] = type;\n        }\n\n        if (!type) continue; // if property is a function, invoke it unless it's a special function\n\n        for (let key in question) {\n          if (passOn.includes(key)) continue;\n          let value = question[key];\n          question[key] = typeof value === 'function' ? yield value(answer, _objectSpread({}, answers), lastPrompt) : value;\n        }\n\n        lastPrompt = question;\n\n        if (typeof question.message !== 'string') {\n          throw new Error('prompt message is required');\n        } // update vars in case they changed\n\n\n        var _question2 = question;\n        name = _question2.name;\n        type = _question2.type;\n\n        if (prompts[type] === void 0) {\n          throw new Error(`prompt type (${type}) is not defined`);\n        }\n\n        if (override[question.name] !== undefined) {\n          answer = yield getFormattedAnswer(question, override[question.name]);\n\n          if (answer !== undefined) {\n            answers[name] = answer;\n            continue;\n          }\n        }\n\n        try {\n          // Get the injected answer if there is one or prompt the user\n          answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : yield prompts[type](question);\n          answers[name] = answer = yield getFormattedAnswer(question, answer, true);\n          quit = yield onSubmit(question, answer, answers);\n        } catch (err) {\n          quit = !(yield onCancel(question, answers));\n        }\n\n        if (quit) return answers;\n      }\n    } catch (err) {\n      _iterator.e(err);\n    } finally {\n      _iterator.f();\n    }\n\n    return answers;\n  });\n  return _prompt.apply(this, arguments);\n}\n\nfunction getInjectedAnswer(injected, deafultValue) {\n  const answer = injected.shift();\n\n  if (answer instanceof Error) {\n    throw answer;\n  }\n\n  return answer === undefined ? deafultValue : answer;\n}\n\nfunction inject(answers) {\n  prompt._injected = (prompt._injected || []).concat(answers);\n}\n\nfunction override(answers) {\n  prompt._override = Object.assign({}, answers);\n}\n\nmodule.exports = Object.assign(prompt, {\n  prompt,\n  prompts,\n  inject,\n  override\n});","'use strict';\n\nmodule.exports = (key, isSelect) => {\n  if (key.meta && key.name !== 'escape') return;\n  \n  if (key.ctrl) {\n    if (key.name === 'a') return 'first';\n    if (key.name === 'c') return 'abort';\n    if (key.name === 'd') return 'abort';\n    if (key.name === 'e') return 'last';\n    if (key.name === 'g') return 'reset';\n  }\n  \n  if (isSelect) {\n    if (key.name === 'j') return 'down';\n    if (key.name === 'k') return 'up';\n  }\n\n  if (key.name === 'return') return 'submit';\n  if (key.name === 'enter') return 'submit'; // ctrl + J\n  if (key.name === 'backspace') return 'delete';\n  if (key.name === 'delete') return 'deleteForward';\n  if (key.name === 'abort') return 'abort';\n  if (key.name === 'escape') return 'exit';\n  if (key.name === 'tab') return 'next';\n  if (key.name === 'pagedown') return 'nextPage';\n  if (key.name === 'pageup') return 'prevPage';\n  // TODO create home() in prompt types (e.g. TextPrompt)\n  if (key.name === 'home') return 'home';\n  // TODO create end() in prompt types (e.g. TextPrompt)\n  if (key.name === 'end') return 'end';\n\n  if (key.name === 'up') return 'up';\n  if (key.name === 'down') return 'down';\n  if (key.name === 'right') return 'right';\n  if (key.name === 'left') return 'left';\n\n  return false;\n};\n","'use strict';\n\nmodule.exports = str => {\n  const pattern = [\n    '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n    '(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PRZcf-ntqry=><~]))'\n  ].join('|');\n\n  const RGX = new RegExp(pattern, 'g');\n  return typeof str === 'string' ? str.replace(RGX, '') : str;\n};\n","'use strict';\n\nconst strip = require('./strip');\nconst { erase, cursor } = require('sisteransi');\n\nconst width = str => [...strip(str)].length;\n\n/**\n * @param {string} prompt\n * @param {number} perLine\n */\nmodule.exports = function(prompt, perLine) {\n  if (!perLine) return erase.line + cursor.to(0);\n\n  let rows = 0;\n  const lines = prompt.split(/\\r?\\n/);\n  for (let line of lines) {\n    rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / perLine);\n  }\n\n  return erase.lines(rows);\n};\n","'use strict';\t\n\n const main = {\n  arrowUp: '↑',\n  arrowDown: '↓',\n  arrowLeft: '←',\n  arrowRight: '→',\n  radioOn: '◉',\n  radioOff: '◯',\n  tick: '✔',\t\n  cross: '✖',\t\n  ellipsis: '…',\t\n  pointerSmall: '›',\t\n  line: '─',\t\n  pointer: '❯'\t\n};\t\nconst win = {\n  arrowUp: main.arrowUp,\n  arrowDown: main.arrowDown,\n  arrowLeft: main.arrowLeft,\n  arrowRight: main.arrowRight,\n  radioOn: '(*)',\n  radioOff: '( )',\t\n  tick: '√',\t\n  cross: '×',\t\n  ellipsis: '...',\t\n  pointerSmall: '»',\t\n  line: '─',\t\n  pointer: '>'\t\n};\t\nconst figures = process.platform === 'win32' ? win : main;\t\n\n module.exports = figures;\n","'use strict';\n\nconst c = require('kleur');\nconst figures = require('./figures');\n\n// rendering user input.\nconst styles = Object.freeze({\n  password: { scale: 1, render: input => '*'.repeat(input.length) },\n  emoji: { scale: 2, render: input => '😃'.repeat(input.length) },\n  invisible: { scale: 0, render: input => '' },\n  default: { scale: 1, render: input => `${input}` }\n});\nconst render = type => styles[type] || styles.default;\n\n// icon to signalize a prompt.\nconst symbols = Object.freeze({\n  aborted: c.red(figures.cross),\n  done: c.green(figures.tick),\n  exited: c.yellow(figures.cross),\n  default: c.cyan('?')\n});\n\nconst symbol = (done, aborted, exited) =>\n  aborted ? symbols.aborted : exited ? symbols.exited : done ? symbols.done : symbols.default;\n\n// between the question and the user's input.\nconst delimiter = completing =>\n  c.gray(completing ? figures.ellipsis : figures.pointerSmall);\n\nconst item = (expandable, expanded) =>\n  c.gray(expandable ? (expanded ? figures.pointerSmall : '+') : figures.line);\n\nmodule.exports = {\n  styles,\n  render,\n  symbols,\n  symbol,\n  delimiter,\n  item\n};\n","'use strict';\n\nconst strip = require('./strip');\n\n/**\n * @param {string} msg\n * @param {number} perLine\n */\nmodule.exports = function (msg, perLine) {\n  let lines = String(strip(msg) || '').split(/\\r?\\n/);\n\n  if (!perLine) return lines.length;\n  return lines.map(l => Math.ceil(l.length / perLine))\n      .reduce((a, b) => a + b);\n};\n","'use strict';\n\n/**\n * @param {string} msg The message to wrap\n * @param {object} opts\n * @param {number|string} [opts.margin] Left margin\n * @param {number} opts.width Maximum characters per line including the margin\n */\nmodule.exports = (msg, opts = {}) => {\n  const tab = Number.isSafeInteger(parseInt(opts.margin))\n    ? new Array(parseInt(opts.margin)).fill(' ').join('')\n    : (opts.margin || '');\n\n  const width = opts.width;\n\n  return (msg || '').split(/\\r?\\n/g)\n    .map(line => line\n      .split(/\\s+/g)\n      .reduce((arr, w) => {\n        if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width)\n          arr[arr.length - 1] += ` ${w}`;\n        else arr.push(`${tab}${w}`);\n        return arr;\n      }, [ tab ])\n      .join('\\n'))\n    .join('\\n');\n};\n","'use strict';\n\n/**\n * Determine what entries should be displayed on the screen, based on the\n * currently selected index and the maximum visible. Used in list-based\n * prompts like `select` and `multiselect`.\n *\n * @param {number} cursor the currently selected entry\n * @param {number} total the total entries available to display\n * @param {number} [maxVisible] the number of entries that can be displayed\n */\nmodule.exports = (cursor, total, maxVisible)  => {\n  maxVisible = maxVisible || total;\n\n  let startIndex = Math.min(total- maxVisible, cursor - Math.floor(maxVisible / 2));\n  if (startIndex < 0) startIndex = 0;\n\n  let endIndex = Math.min(startIndex + maxVisible, total);\n\n  return { startIndex, endIndex };\n};\n","'use strict';\n\nmodule.exports = {\n  action: require('./action'),\n  clear: require('./clear'),\n  style: require('./style'),\n  strip: require('./strip'),\n  figures: require('./figures'),\n  lines: require('./lines'),\n  wrap: require('./wrap'),\n  entriesToDisplay: require('./entriesToDisplay')\n};\n","'use strict';\n\nconst readline = require('readline');\nconst { action } = require('../util');\nconst EventEmitter = require('events');\nconst { beep, cursor } = require('sisteransi');\nconst color = require('kleur');\n\n/**\n * Base prompt skeleton\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\nclass Prompt extends EventEmitter {\n  constructor(opts={}) {\n    super();\n\n    this.firstRender = true;\n    this.in = opts.stdin || process.stdin;\n    this.out = opts.stdout || process.stdout;\n    this.onRender = (opts.onRender || (() => void 0)).bind(this);\n    const rl = readline.createInterface({ input:this.in, escapeCodeTimeout:50 });\n    readline.emitKeypressEvents(this.in, rl);\n\n    if (this.in.isTTY) this.in.setRawMode(true);\n    const isSelect = [ 'SelectPrompt', 'MultiselectPrompt' ].indexOf(this.constructor.name) > -1;\n    const keypress = (str, key) => {\n      let a = action(key, isSelect);\n      if (a === false) {\n        this._ && this._(str, key);\n      } else if (typeof this[a] === 'function') {\n        this[a](key);\n      } else {\n        this.bell();\n      }\n    };\n\n    this.close = () => {\n      this.out.write(cursor.show);\n      this.in.removeListener('keypress', keypress);\n      if (this.in.isTTY) this.in.setRawMode(false);\n      rl.close();\n      this.emit(this.aborted ? 'abort' : this.exited ? 'exit' : 'submit', this.value);\n      this.closed = true;\n    };\n\n    this.in.on('keypress', keypress);\n  }\n\n  fire() {\n    this.emit('state', {\n      value: this.value,\n      aborted: !!this.aborted,\n      exited: !!this.exited\n    });\n  }\n\n  bell() {\n    this.out.write(beep);\n  }\n\n  render() {\n    this.onRender(color);\n    if (this.firstRender) this.firstRender = false;\n  }\n}\n\nmodule.exports = Prompt;\n","const color = require('kleur');\nconst Prompt = require('./prompt');\nconst { erase, cursor } = require('sisteransi');\nconst { style, clear, lines, figures } = require('../util');\n\n/**\n * TextPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {String} [opts.style='default'] Render style\n * @param {String} [opts.initial] Default value\n * @param {Function} [opts.validate] Validate function\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.error] The invalid error label\n */\nclass TextPrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.transform = style.render(opts.style);\n    this.scale = this.transform.scale;\n    this.msg = opts.message;\n    this.initial = opts.initial || ``;\n    this.validator = opts.validate || (() => true);\n    this.value = ``;\n    this.errorMsg = opts.error || `Please Enter A Valid Value`;\n    this.cursor = Number(!!this.initial);\n    this.cursorOffset = 0;\n    this.clear = clear(``, this.out.columns);\n    this.render();\n  }\n\n  set value(v) {\n    if (!v && this.initial) {\n      this.placeholder = true;\n      this.rendered = color.gray(this.transform.render(this.initial));\n    } else {\n      this.placeholder = false;\n      this.rendered = this.transform.render(v);\n    }\n    this._value = v;\n    this.fire();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  reset() {\n    this.value = ``;\n    this.cursor = Number(!!this.initial);\n    this.cursorOffset = 0;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.value = this.value || this.initial;\n    this.done = this.aborted = true;\n    this.error = false;\n    this.red = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  async validate() {\n    let valid = await this.validator(this.value);\n    if (typeof valid === `string`) {\n      this.errorMsg = valid;\n      valid = false;\n    }\n    this.error = !valid;\n  }\n\n  async submit() {\n    this.value = this.value || this.initial;\n    this.cursorOffset = 0;\n    this.cursor = this.rendered.length;\n    await this.validate();\n    if (this.error) {\n      this.red = true;\n      this.fire();\n      this.render();\n      return;\n    }\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  next() {\n    if (!this.placeholder) return this.bell();\n    this.value = this.initial;\n    this.cursor = this.rendered.length;\n    this.fire();\n    this.render();\n  }\n\n  moveCursor(n) {\n    if (this.placeholder) return;\n    this.cursor = this.cursor+n;\n    this.cursorOffset += n;\n  }\n\n  _(c, key) {\n    let s1 = this.value.slice(0, this.cursor);\n    let s2 = this.value.slice(this.cursor);\n    this.value = `${s1}${c}${s2}`;\n    this.red = false;\n    this.cursor = this.placeholder ? 0 : s1.length+1;\n    this.render();\n  }\n\n  delete() {\n    if (this.isCursorAtStart()) return this.bell();\n    let s1 = this.value.slice(0, this.cursor-1);\n    let s2 = this.value.slice(this.cursor);\n    this.value = `${s1}${s2}`;\n    this.red = false;\n    if (this.isCursorAtStart()) {\n      this.cursorOffset = 0\n    } else {\n      this.cursorOffset++;\n      this.moveCursor(-1);\n    }\n    this.render();\n  }\n\n  deleteForward() {\n    if(this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell();\n    let s1 = this.value.slice(0, this.cursor);\n    let s2 = this.value.slice(this.cursor+1);\n    this.value = `${s1}${s2}`;\n    this.red = false;\n    if (this.isCursorAtEnd()) {\n      this.cursorOffset = 0;\n    } else {\n      this.cursorOffset++;\n    }\n    this.render();\n  }\n\n  first() {\n    this.cursor = 0;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.value.length;\n    this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0 || this.placeholder) return this.bell();\n    this.moveCursor(-1);\n    this.render();\n  }\n\n  right() {\n    if (this.cursor*this.scale >= this.rendered.length || this.placeholder) return this.bell();\n    this.moveCursor(1);\n    this.render();\n  }\n\n  isCursorAtStart() {\n    return this.cursor === 0 || (this.placeholder && this.cursor === 1);\n  }\n\n  isCursorAtEnd() {\n    return this.cursor === this.rendered.length || (this.placeholder && this.cursor === this.rendered.length + 1)\n  }\n\n  render() {\n    if (this.closed) return;\n    if (!this.firstRender) {\n      if (this.outputError)\n        this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n      this.out.write(clear(this.outputText, this.out.columns));\n    }\n    super.render();\n    this.outputError = '';\n\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(this.done),\n      this.red ? color.red(this.rendered) : this.rendered\n    ].join(` `);\n\n    if (this.error) {\n      this.outputError += this.errorMsg.split(`\\n`)\n          .reduce((a, l, i) => a + `\\n${i ? ' ' : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore + cursor.move(this.cursorOffset, 0));\n  }\n}\n\nmodule.exports = TextPrompt;","'use strict';\n\nconst color = require('kleur');\nconst Prompt = require('./prompt');\nconst { style, clear, figures, wrap, entriesToDisplay } = require('../util');\nconst { cursor } = require('sisteransi');\n\n/**\n * SelectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {Number} [opts.initial] Index of default value\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n */\nclass SelectPrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.hint = opts.hint || '- Use arrow-keys. Return to submit.';\n    this.warn = opts.warn || '- This option is disabled';\n    this.cursor = opts.initial || 0;\n    this.choices = opts.choices.map((ch, idx) => {\n      if (typeof ch === 'string')\n        ch = {title: ch, value: idx};\n      return {\n        title: ch && (ch.title || ch.value || ch),\n        value: ch && (ch.value === undefined ? idx : ch.value),\n        description: ch && ch.description,\n        selected: ch && ch.selected,\n        disabled: ch && ch.disabled\n      };\n    });\n    this.optionsPerPage = opts.optionsPerPage || 10;\n    this.value = (this.choices[this.cursor] || {}).value;\n    this.clear = clear('', this.out.columns);\n    this.render();\n  }\n\n  moveCursor(n) {\n    this.cursor = n;\n    this.value = this.choices[n].value;\n    this.fire();\n  }\n\n  reset() {\n    this.moveCursor(0);\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    if (!this.selection.disabled) {\n      this.done = true;\n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    } else\n      this.bell();\n  }\n\n  first() {\n    this.moveCursor(0);\n    this.render();\n  }\n\n  last() {\n    this.moveCursor(this.choices.length - 1);\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.moveCursor(this.choices.length - 1);\n    } else {\n      this.moveCursor(this.cursor - 1);\n    }\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.choices.length - 1) {\n      this.moveCursor(0);\n    } else {\n      this.moveCursor(this.cursor + 1);\n    }\n    this.render();\n  }\n\n  next() {\n    this.moveCursor((this.cursor + 1) % this.choices.length);\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') return this.submit();\n  }\n\n  get selection() {\n    return this.choices[this.cursor];\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    let { startIndex, endIndex } = entriesToDisplay(this.cursor, this.choices.length, this.optionsPerPage);\n\n    // Print prompt\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(false),\n      this.done ? this.selection.title : this.selection.disabled\n          ? color.yellow(this.warn) : color.gray(this.hint)\n    ].join(' ');\n\n    // Print choices\n    if (!this.done) {\n      this.outputText += '\\n';\n      for (let i = startIndex; i < endIndex; i++) {\n        let title, prefix, desc = '', v = this.choices[i];\n\n        // Determine whether to display \"more choices\" indicators\n        if (i === startIndex && startIndex > 0) {\n          prefix = figures.arrowUp;\n        } else if (i === endIndex - 1 && endIndex < this.choices.length) {\n          prefix = figures.arrowDown;\n        } else {\n          prefix = ' ';\n        }\n\n        if (v.disabled) {\n          title = this.cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n          prefix = (this.cursor === i ? color.bold().gray(figures.pointer) + ' ' : '  ') + prefix;\n        } else {\n          title = this.cursor === i ? color.cyan().underline(v.title) : v.title;\n          prefix = (this.cursor === i ? color.cyan(figures.pointer) + ' ' : '  ') + prefix;\n          if (v.description && this.cursor === i) {\n            desc = ` - ${v.description}`;\n            if (prefix.length + title.length + desc.length >= this.out.columns\n                || v.description.split(/\\r?\\n/).length > 1) {\n              desc = '\\n' + wrap(v.description, { margin: 3, width: this.out.columns });\n            }\n          }\n        }\n\n        this.outputText += `${prefix} ${title}${color.gray(desc)}\\n`;\n      }\n    }\n\n    this.out.write(this.outputText);\n  }\n}\n\nmodule.exports = SelectPrompt;\n","const color = require('kleur');\nconst Prompt = require('./prompt');\nconst { style, clear } = require('../util');\nconst { cursor, erase } = require('sisteransi');\n\n/**\n * TogglePrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Boolean} [opts.initial=false] Default value\n * @param {String} [opts.active='no'] Active label\n * @param {String} [opts.inactive='off'] Inactive label\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\nclass TogglePrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.value = !!opts.initial;\n    this.active = opts.active || 'on';\n    this.inactive = opts.inactive || 'off';\n    this.initialValue = this.value;\n    this.render();\n  }\n\n  reset() {\n    this.value = this.initialValue;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  deactivate() {\n    if (this.value === false) return this.bell();\n    this.value = false;\n    this.render();\n  }\n\n  activate() {\n    if (this.value === true) return this.bell();\n    this.value = true;\n    this.render();\n  }\n\n  delete() {\n    this.deactivate();\n  }\n  left() {\n    this.deactivate();\n  }\n  right() {\n    this.activate();\n  }\n  down() {\n    this.deactivate();\n  }\n  up() {\n    this.activate();\n  }\n\n  next() {\n    this.value = !this.value;\n    this.fire();\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.value = !this.value;\n    } else if (c === '1') {\n      this.value = true;\n    } else if (c === '0') {\n      this.value = false;\n    } else return this.bell();\n    this.render();\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(this.done),\n      this.value ? this.inactive : color.cyan().underline(this.inactive),\n      color.gray('/'),\n      this.value ? color.cyan().underline(this.active) : this.active\n    ].join(' ');\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n}\n\nmodule.exports = TogglePrompt;\n","'use strict';\n\nclass DatePart {\n  constructor({token, date, parts, locales}) {\n    this.token = token;\n    this.date = date || new Date();\n    this.parts = parts || [this];\n    this.locales = locales || {};\n  }\n\n  up() {}\n\n  down() {}\n\n  next() {\n    const currentIdx = this.parts.indexOf(this);\n    return this.parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n  }\n\n  setTo(val) {}\n\n  prev() {\n    let parts = [].concat(this.parts).reverse();\n    const currentIdx = parts.indexOf(this);\n    return parts.find((part, idx) => idx > currentIdx && part instanceof DatePart);\n  }\n\n  toString() {\n    return String(this.date);\n  }\n}\n\nmodule.exports = DatePart;\n\n\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Meridiem extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setHours((this.date.getHours() + 12) % 24);\n  }\n\n  down() {\n    this.up();\n  }\n\n  toString() {\n    let meridiem = this.date.getHours() > 12 ? 'pm' : 'am';\n    return /\\A/.test(this.token) ? meridiem.toUpperCase() : meridiem;\n  }\n}\n\nmodule.exports = Meridiem;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nconst pos = n => {\n  n = n % 10;\n  return n === 1 ? 'st'\n       : n === 2 ? 'nd'\n       : n === 3 ? 'rd'\n       : 'th';\n}\n\nclass Day extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setDate(this.date.getDate() + 1);\n  }\n\n  down() {\n    this.date.setDate(this.date.getDate() - 1);\n  }\n\n  setTo(val) {\n    this.date.setDate(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let date = this.date.getDate();\n    let day = this.date.getDay();\n    return this.token === 'DD' ? String(date).padStart(2, '0')\n         : this.token === 'Do' ? date + pos(date)\n         : this.token === 'd' ? day + 1\n         : this.token === 'ddd' ? this.locales.weekdaysShort[day]\n         : this.token === 'dddd' ? this.locales.weekdays[day]\n         : date;\n  }\n}\n\nmodule.exports = Day;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Hours extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setHours(this.date.getHours() + 1);\n  }\n\n  down() {\n    this.date.setHours(this.date.getHours() - 1);\n  }\n\n  setTo(val) {\n    this.date.setHours(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let hours = this.date.getHours();\n    if (/h/.test(this.token))\n      hours = (hours % 12) || 12;\n    return this.token.length > 1 ? String(hours).padStart(2, '0') : hours;\n  }\n}\n\nmodule.exports = Hours;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Milliseconds extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMilliseconds(this.date.getMilliseconds() + 1);\n  }\n\n  down() {\n    this.date.setMilliseconds(this.date.getMilliseconds() - 1);\n  }\n\n  setTo(val) {\n    this.date.setMilliseconds(parseInt(val.substr(-(this.token.length))));\n  }\n\n  toString() {\n    return String(this.date.getMilliseconds()).padStart(4, '0')\n                                              .substr(0, this.token.length);\n  }\n}\n\nmodule.exports = Milliseconds;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Minutes extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMinutes(this.date.getMinutes() + 1);\n  }\n\n  down() {\n    this.date.setMinutes(this.date.getMinutes() - 1);\n  }\n\n  setTo(val) {\n    this.date.setMinutes(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let m = this.date.getMinutes();\n    return this.token.length > 1 ? String(m).padStart(2, '0') : m;\n  }\n}\n\nmodule.exports = Minutes;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Month extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setMonth(this.date.getMonth() + 1);\n  }\n\n  down() {\n    this.date.setMonth(this.date.getMonth() - 1);\n  }\n\n  setTo(val) {\n    val = parseInt(val.substr(-2)) - 1;\n    this.date.setMonth(val < 0 ? 0 : val);\n  }\n\n  toString() {\n    let month = this.date.getMonth();\n    let tl = this.token.length;\n    return tl === 2 ? String(month + 1).padStart(2, '0')\n           : tl === 3 ? this.locales.monthsShort[month]\n             : tl === 4 ? this.locales.months[month]\n               : String(month + 1);\n  }\n}\n\nmodule.exports = Month;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Seconds extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setSeconds(this.date.getSeconds() + 1);\n  }\n\n  down() {\n    this.date.setSeconds(this.date.getSeconds() - 1);\n  }\n\n  setTo(val) {\n    this.date.setSeconds(parseInt(val.substr(-2)));\n  }\n\n  toString() {\n    let s = this.date.getSeconds();\n    return this.token.length > 1 ? String(s).padStart(2, '0') : s;\n  }\n}\n\nmodule.exports = Seconds;\n","'use strict';\n\nconst DatePart = require('./datepart');\n\nclass Year extends DatePart {\n  constructor(opts={}) {\n    super(opts);\n  }\n\n  up() {\n    this.date.setFullYear(this.date.getFullYear() + 1);\n  }\n\n  down() {\n    this.date.setFullYear(this.date.getFullYear() - 1);\n  }\n\n  setTo(val) {\n    this.date.setFullYear(val.substr(-4));\n  }\n\n  toString() {\n    let year = String(this.date.getFullYear()).padStart(4, '0');\n    return this.token.length === 2 ? year.substr(-2) : year;\n  }\n}\n\nmodule.exports = Year;\n","'use strict';\n\nmodule.exports = {\n  DatePart: require('./datepart'),\n  Meridiem: require('./meridiem'),\n  Day: require('./day'),\n  Hours: require('./hours'),\n  Milliseconds: require('./milliseconds'),\n  Minutes: require('./minutes'),\n  Month: require('./month'),\n  Seconds: require('./seconds'),\n  Year: require('./year'),\n}\n","'use strict';\n\nconst color = require('kleur');\nconst Prompt = require('./prompt');\nconst { style, clear, figures } = require('../util');\nconst { erase, cursor } = require('sisteransi');\nconst { DatePart, Meridiem, Day, Hours, Milliseconds, Minutes, Month, Seconds, Year } = require('../dateparts');\n\nconst regex = /\\\\(.)|\"((?:\\\\[\"\\\\]|[^\"])+)\"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g;\nconst regexGroups = {\n  1: ({token}) => token.replace(/\\\\(.)/g, '$1'),\n  2: (opts) => new Day(opts), // Day // TODO\n  3: (opts) => new Month(opts), // Month\n  4: (opts) => new Year(opts), // Year\n  5: (opts) => new Meridiem(opts), // AM/PM // TODO (special)\n  6: (opts) => new Hours(opts), // Hours\n  7: (opts) => new Minutes(opts), // Minutes\n  8: (opts) => new Seconds(opts), // Seconds\n  9: (opts) => new Milliseconds(opts), // Fractional seconds\n}\n\nconst dfltLocales = {\n  months: 'January,February,March,April,May,June,July,August,September,October,November,December'.split(','),\n  monthsShort: 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'.split(','),\n  weekdays: 'Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday'.split(','),\n  weekdaysShort: 'Sun,Mon,Tue,Wed,Thu,Fri,Sat'.split(',')\n}\n\n\n/**\n * DatePrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Number} [opts.initial] Index of default value\n * @param {String} [opts.mask] The format mask\n * @param {object} [opts.locales] The date locales\n * @param {String} [opts.error] The error message shown on invalid value\n * @param {Function} [opts.validate] Function to validate the submitted value\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\nclass DatePrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.cursor = 0;\n    this.typed = '';\n    this.locales = Object.assign(dfltLocales, opts.locales);\n    this._date = opts.initial || new Date();\n    this.errorMsg = opts.error || 'Please Enter A Valid Value';\n    this.validator = opts.validate || (() => true);\n    this.mask = opts.mask || 'YYYY-MM-DD HH:mm:ss';\n    this.clear = clear('', this.out.columns);\n    this.render();\n  }\n\n  get value() {\n    return this.date\n  }\n\n  get date() {\n    return this._date;\n  }\n\n  set date(date) {\n    if (date) this._date.setTime(date.getTime());\n  }\n\n  set mask(mask) {\n    let result;\n    this.parts = [];\n    while(result = regex.exec(mask)) {\n      let match = result.shift();\n      let idx = result.findIndex(gr => gr != null);\n      this.parts.push(idx in regexGroups\n        ? regexGroups[idx]({ token: result[idx] || match, date: this.date, parts: this.parts, locales: this.locales })\n        : result[idx] || match);\n    }\n\n    let parts = this.parts.reduce((arr, i) => {\n      if (typeof i === 'string' && typeof arr[arr.length - 1] === 'string')\n        arr[arr.length - 1] += i;\n      else arr.push(i);\n      return arr;\n    }, []);\n\n    this.parts.splice(0);\n    this.parts.push(...parts);\n    this.reset();\n  }\n\n  moveCursor(n) {\n    this.typed = '';\n    this.cursor = n;\n    this.fire();\n  }\n\n  reset() {\n    this.moveCursor(this.parts.findIndex(p => p instanceof DatePart));\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.error = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  async validate() {\n    let valid = await this.validator(this.value);\n    if (typeof valid === 'string') {\n      this.errorMsg = valid;\n      valid = false;\n    }\n    this.error = !valid;\n  }\n\n  async submit() {\n    await this.validate();\n    if (this.error) {\n      this.color = 'red';\n      this.fire();\n      this.render();\n      return;\n    }\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  up() {\n    this.typed = '';\n    this.parts[this.cursor].up();\n    this.render();\n  }\n\n  down() {\n    this.typed = '';\n    this.parts[this.cursor].down();\n    this.render();\n  }\n\n  left() {\n    let prev = this.parts[this.cursor].prev();\n    if (prev == null) return this.bell();\n    this.moveCursor(this.parts.indexOf(prev));\n    this.render();\n  }\n\n  right() {\n    let next = this.parts[this.cursor].next();\n    if (next == null) return this.bell();\n    this.moveCursor(this.parts.indexOf(next));\n    this.render();\n  }\n\n  next() {\n    let next = this.parts[this.cursor].next();\n    this.moveCursor(next\n      ? this.parts.indexOf(next)\n      : this.parts.findIndex((part) => part instanceof DatePart));\n    this.render();\n  }\n\n  _(c) {\n    if (/\\d/.test(c)) {\n      this.typed += c;\n      this.parts[this.cursor].setTo(this.typed);\n      this.render();\n    }\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    // Print prompt\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(false),\n      this.parts.reduce((arr, p, idx) => arr.concat(idx === this.cursor && !this.done ? color.cyan().underline(p.toString()) : p), [])\n          .join('')\n    ].join(' ');\n\n    // Print error\n    if (this.error) {\n      this.outputText += this.errorMsg.split('\\n').reduce(\n          (a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n}\n\nmodule.exports = DatePrompt;\n","const color = require('kleur');\nconst Prompt = require('./prompt');\nconst { cursor, erase } = require('sisteransi');\nconst { style, figures, clear, lines } = require('../util');\n\nconst isNumber = /[0-9]/;\nconst isDef = any => any !== undefined;\nconst round = (number, precision) => {\n  let factor = Math.pow(10, precision);\n  return Math.round(number * factor) / factor;\n}\n\n/**\n * NumberPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {String} [opts.style='default'] Render style\n * @param {Number} [opts.initial] Default value\n * @param {Number} [opts.max=+Infinity] Max value\n * @param {Number} [opts.min=-Infinity] Min value\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {Function} [opts.validate] Validate function\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.error] The invalid error label\n */\nclass NumberPrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.transform = style.render(opts.style);\n    this.msg = opts.message;\n    this.initial = isDef(opts.initial) ? opts.initial : '';\n    this.float = !!opts.float;\n    this.round = opts.round || 2;\n    this.inc = opts.increment || 1;\n    this.min = isDef(opts.min) ? opts.min : -Infinity;\n    this.max = isDef(opts.max) ? opts.max : Infinity;\n    this.errorMsg = opts.error || `Please Enter A Valid Value`;\n    this.validator = opts.validate || (() => true);\n    this.color = `cyan`;\n    this.value = ``;\n    this.typed = ``;\n    this.lastHit = 0;\n    this.render();\n  }\n\n  set value(v) {\n    if (!v && v !== 0) {\n      this.placeholder = true;\n      this.rendered = color.gray(this.transform.render(`${this.initial}`));\n      this._value = ``;\n    } else {\n      this.placeholder = false;\n      this.rendered = this.transform.render(`${round(v, this.round)}`);\n      this._value = round(v, this.round);\n    }\n    this.fire();\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  parse(x) {\n    return this.float ? parseFloat(x) : parseInt(x);\n  }\n\n  valid(c) {\n    return c === `-` || c === `.` && this.float || isNumber.test(c)\n  }\n\n  reset() {\n    this.typed = ``;\n    this.value = ``;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    let x = this.value;\n    this.value = x !== `` ? x : this.initial;\n    this.done = this.aborted = true;\n    this.error = false;\n    this.fire();\n    this.render();\n    this.out.write(`\\n`);\n    this.close();\n  }\n\n  async validate() {\n    let valid = await this.validator(this.value);\n    if (typeof valid === `string`) {\n      this.errorMsg = valid;\n      valid = false;\n    }\n    this.error = !valid;\n  }\n\n  async submit() {\n    await this.validate();\n    if (this.error) {\n      this.color = `red`;\n      this.fire();\n      this.render();\n      return;\n    }\n    let x = this.value;\n    this.value = x !== `` ? x : this.initial;\n    this.done = true;\n    this.aborted = false;\n    this.error = false;\n    this.fire();\n    this.render();\n    this.out.write(`\\n`);\n    this.close();\n  }\n\n  up() {\n    this.typed = ``;\n    if(this.value === '') {\n      this.value = this.min - this.inc;\n    }\n    if (this.value >= this.max) return this.bell();\n    this.value += this.inc;\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  down() {\n    this.typed = ``;\n    if(this.value === '') {\n      this.value = this.min + this.inc;\n    }\n    if (this.value <= this.min) return this.bell();\n    this.value -= this.inc;\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  delete() {\n    let val = this.value.toString();\n    if (val.length === 0) return this.bell();\n    this.value = this.parse((val = val.slice(0, -1))) || ``;\n    if (this.value !== '' && this.value < this.min) {\n      this.value = this.min;\n    }\n    this.color = `cyan`;\n    this.fire();\n    this.render();\n  }\n\n  next() {\n    this.value = this.initial;\n    this.fire();\n    this.render();\n  }\n\n  _(c, key) {\n    if (!this.valid(c)) return this.bell();\n\n    const now = Date.now();\n    if (now - this.lastHit > 1000) this.typed = ``; // 1s elapsed\n    this.typed += c;\n    this.lastHit = now;\n    this.color = `cyan`;\n\n    if (c === `.`) return this.fire();\n\n    this.value = Math.min(this.parse(this.typed), this.max);\n    if (this.value > this.max) this.value = this.max;\n    if (this.value < this.min) this.value = this.min;\n    this.fire();\n    this.render();\n  }\n\n  render() {\n    if (this.closed) return;\n    if (!this.firstRender) {\n      if (this.outputError)\n        this.out.write(cursor.down(lines(this.outputError, this.out.columns) - 1) + clear(this.outputError, this.out.columns));\n      this.out.write(clear(this.outputText, this.out.columns));\n    }\n    super.render();\n    this.outputError = '';\n\n    // Print prompt\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(this.done),\n      !this.done || (!this.done && !this.placeholder)\n          ? color[this.color]().underline(this.rendered) : this.rendered\n    ].join(` `);\n\n    // Print error\n    if (this.error) {\n      this.outputError += this.errorMsg.split(`\\n`)\n          .reduce((a, l, i) => a + `\\n${i ? ` ` : figures.pointerSmall} ${color.red().italic(l)}`, ``);\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText + cursor.save + this.outputError + cursor.restore);\n  }\n}\n\nmodule.exports = NumberPrompt;\n","'use strict';\n\nconst color = require('kleur');\nconst { cursor } = require('sisteransi');\nconst Prompt = require('./prompt');\nconst { clear, figures, style, wrap, entriesToDisplay } = require('../util');\n\n/**\n * MultiselectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {String} [opts.warn] Hint shown for disabled choices\n * @param {Number} [opts.max] Max choices\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {Number} [opts.optionsPerPage=10] Max options to display at once\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\nclass MultiselectPrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.cursor = opts.cursor || 0;\n    this.scrollIndex = opts.cursor || 0;\n    this.hint = opts.hint || '';\n    this.warn = opts.warn || '- This option is disabled -';\n    this.minSelected = opts.min;\n    this.showMinError = false;\n    this.maxChoices = opts.max;\n    this.instructions = opts.instructions;\n    this.optionsPerPage = opts.optionsPerPage || 10;\n    this.value = opts.choices.map((ch, idx) => {\n      if (typeof ch === 'string')\n        ch = {title: ch, value: idx};\n      return {\n        title: ch && (ch.title || ch.value || ch),\n        description: ch && ch.description,\n        value: ch && (ch.value === undefined ? idx : ch.value),\n        selected: ch && ch.selected,\n        disabled: ch && ch.disabled\n      };\n    });\n    this.clear = clear('', this.out.columns);\n    if (!opts.overrideRender) {\n      this.render();\n    }\n  }\n\n  reset() {\n    this.value.map(v => !v.selected);\n    this.cursor = 0;\n    this.fire();\n    this.render();\n  }\n\n  selected() {\n    return this.value.filter(v => v.selected);\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    const selected = this.value\n      .filter(e => e.selected);\n    if (this.minSelected && selected.length < this.minSelected) {\n      this.showMinError = true;\n      this.render();\n    } else {\n      this.done = true;\n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    }\n  }\n\n  first() {\n    this.cursor = 0;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.value.length - 1;\n    this.render();\n  }\n  next() {\n    this.cursor = (this.cursor + 1) % this.value.length;\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.cursor = this.value.length - 1;\n    } else {\n      this.cursor--;\n    }\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.value.length - 1) {\n      this.cursor = 0;\n    } else {\n      this.cursor++;\n    }\n    this.render();\n  }\n\n  left() {\n    this.value[this.cursor].selected = false;\n    this.render();\n  }\n\n  right() {\n    if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n    this.value[this.cursor].selected = true;\n    this.render();\n  }\n\n  handleSpaceToggle() {\n    const v = this.value[this.cursor];\n\n    if (v.selected) {\n      v.selected = false;\n      this.render();\n    } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n      return this.bell();\n    } else {\n      v.selected = true;\n      this.render();\n    }\n  }\n\n  toggleAll() {\n    if (this.maxChoices !== undefined || this.value[this.cursor].disabled) {\n      return this.bell();\n    }\n\n    const newSelected = !this.value[this.cursor].selected;\n    this.value.filter(v => !v.disabled).forEach(v => v.selected = newSelected);\n    this.render();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.handleSpaceToggle();\n    } else if (c === 'a') {\n      this.toggleAll();\n    } else {\n      return this.bell();\n    }\n  }\n\n  renderInstructions() {\n    if (this.instructions === undefined || this.instructions) {\n      if (typeof this.instructions === 'string') {\n        return this.instructions;\n      }\n      return '\\nInstructions:\\n'\n        + `    ${figures.arrowUp}/${figures.arrowDown}: Highlight option\\n`\n        + `    ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\\n`\n        + (this.maxChoices === undefined ? `    a: Toggle all\\n` : '')\n        + `    enter/return: Complete answer`;\n    }\n    return '';\n  }\n\n  renderOption(cursor, v, i, arrowIndicator) {\n    const prefix = (v.selected ? color.green(figures.radioOn) : figures.radioOff) + ' ' + arrowIndicator + ' ';\n    let title, desc;\n\n    if (v.disabled) {\n      title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n    } else {\n      title = cursor === i ? color.cyan().underline(v.title) : v.title;\n      if (cursor === i && v.description) {\n        desc = ` - ${v.description}`;\n        if (prefix.length + title.length + desc.length >= this.out.columns\n          || v.description.split(/\\r?\\n/).length > 1) {\n          desc = '\\n' + wrap(v.description, { margin: prefix.length, width: this.out.columns });\n        }\n      }\n    }\n\n    return prefix + title + color.gray(desc || '');\n  }\n\n  // shared with autocompleteMultiselect\n  paginateOptions(options) {\n    if (options.length === 0) {\n      return color.red('No matches for this query.');\n    }\n\n    let { startIndex, endIndex } = entriesToDisplay(this.cursor, options.length, this.optionsPerPage);\n    let prefix, styledOptions = [];\n\n    for (let i = startIndex; i < endIndex; i++) {\n      if (i === startIndex && startIndex > 0) {\n        prefix = figures.arrowUp;\n      } else if (i === endIndex - 1 && endIndex < options.length) {\n        prefix = figures.arrowDown;\n      } else {\n        prefix = ' ';\n      }\n      styledOptions.push(this.renderOption(this.cursor, options[i], i, prefix));\n    }\n\n    return '\\n' + styledOptions.join('\\n');\n  }\n\n  // shared with autocomleteMultiselect\n  renderOptions(options) {\n    if (!this.done) {\n      return this.paginateOptions(options);\n    }\n    return '';\n  }\n\n  renderDoneOrInstructions() {\n    if (this.done) {\n      return this.value\n        .filter(e => e.selected)\n        .map(v => v.title)\n        .join(', ');\n    }\n\n    const output = [color.gray(this.hint), this.renderInstructions()];\n\n    if (this.value[this.cursor].disabled) {\n      output.push(color.yellow(this.warn));\n    }\n    return output.join(' ');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    super.render();\n\n    // print prompt\n    let prompt = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(false),\n      this.renderDoneOrInstructions()\n    ].join(' ');\n    if (this.showMinError) {\n      prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n      this.showMinError = false;\n    }\n    prompt += this.renderOptions(this.value);\n\n    this.out.write(this.clear + prompt);\n    this.clear = clear(prompt, this.out.columns);\n  }\n}\n\nmodule.exports = MultiselectPrompt;\n","'use strict';\n\nconst color = require('kleur');\nconst Prompt = require('./prompt');\nconst { erase, cursor } = require('sisteransi');\nconst { style, clear, figures, wrap, entriesToDisplay } = require('../util');\n\nconst getVal = (arr, i) => arr[i] && (arr[i].value || arr[i].title || arr[i]);\nconst getTitle = (arr, i) => arr[i] && (arr[i].title || arr[i].value || arr[i]);\nconst getIndex = (arr, valOrTitle) => {\n  const index = arr.findIndex(el => el.value === valOrTitle || el.title === valOrTitle);\n  return index > -1 ? index : undefined;\n};\n\n/**\n * TextPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of auto-complete choices objects\n * @param {Function} [opts.suggest] Filter function. Defaults to sort by title\n * @param {Number} [opts.limit=10] Max number of results to show\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {String} [opts.style='default'] Render style\n * @param {String} [opts.fallback] Fallback message - initial to default value\n * @param {String} [opts.initial] Index of the default value\n * @param {Boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.noMatches] The no matches found label\n */\nclass AutocompletePrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.suggest = opts.suggest;\n    this.choices = opts.choices;\n    this.initial = typeof opts.initial === 'number'\n      ? opts.initial\n      : getIndex(opts.choices, opts.initial);\n    this.select = this.initial || opts.cursor || 0;\n    this.i18n = { noMatches: opts.noMatches || 'no matches found' };\n    this.fallback = opts.fallback || this.initial;\n    this.clearFirst = opts.clearFirst || false;\n    this.suggestions = [];\n    this.input = '';\n    this.limit = opts.limit || 10;\n    this.cursor = 0;\n    this.transform = style.render(opts.style);\n    this.scale = this.transform.scale;\n    this.render = this.render.bind(this);\n    this.complete = this.complete.bind(this);\n    this.clear = clear('', this.out.columns);\n    this.complete(this.render);\n    this.render();\n  }\n\n  set fallback(fb) {\n    this._fb = Number.isSafeInteger(parseInt(fb)) ? parseInt(fb) : fb;\n  }\n\n  get fallback() {\n    let choice;\n    if (typeof this._fb === 'number')\n      choice = this.choices[this._fb];\n    else if (typeof this._fb === 'string')\n      choice = { title: this._fb };\n    return choice || this._fb || { title: this.i18n.noMatches };\n  }\n\n  moveSelect(i) {\n    this.select = i;\n    if (this.suggestions.length > 0)\n      this.value = getVal(this.suggestions, i);\n    else this.value = this.fallback.value;\n    this.fire();\n  }\n\n  async complete(cb) {\n    const p = (this.completing = this.suggest(this.input, this.choices));\n    const suggestions = await p;\n\n    if (this.completing !== p) return;\n    this.suggestions = suggestions\n      .map((s, i, arr) => ({ title: getTitle(arr, i), value: getVal(arr, i), description: s.description }));\n    this.completing = false;\n    const l = Math.max(suggestions.length - 1, 0);\n    this.moveSelect(Math.min(l, this.select));\n\n    cb && cb();\n  }\n\n  reset() {\n    this.input = '';\n    this.complete(() => {\n      this.moveSelect(this.initial !== void 0 ? this.initial : 0);\n      this.render();\n    });\n    this.render();\n  }\n\n  exit() {\n    if (this.clearFirst && this.input.length > 0) {\n      this.reset();\n    } else {\n      this.done = this.exited = true; \n      this.aborted = false;\n      this.fire();\n      this.render();\n      this.out.write('\\n');\n      this.close();\n    }\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.exited = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.done = true;\n    this.aborted = this.exited = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  _(c, key) {\n    let s1 = this.input.slice(0, this.cursor);\n    let s2 = this.input.slice(this.cursor);\n    this.input = `${s1}${c}${s2}`;\n    this.cursor = s1.length+1;\n    this.complete(this.render);\n    this.render();\n  }\n\n  delete() {\n    if (this.cursor === 0) return this.bell();\n    let s1 = this.input.slice(0, this.cursor-1);\n    let s2 = this.input.slice(this.cursor);\n    this.input = `${s1}${s2}`;\n    this.complete(this.render);\n    this.cursor = this.cursor-1;\n    this.render();\n  }\n\n  deleteForward() {\n    if(this.cursor*this.scale >= this.rendered.length) return this.bell();\n    let s1 = this.input.slice(0, this.cursor);\n    let s2 = this.input.slice(this.cursor+1);\n    this.input = `${s1}${s2}`;\n    this.complete(this.render);\n    this.render();\n  }\n\n  first() {\n    this.moveSelect(0);\n    this.render();\n  }\n\n  last() {\n    this.moveSelect(this.suggestions.length - 1);\n    this.render();\n  }\n\n  up() {\n    if (this.select === 0) {\n      this.moveSelect(this.suggestions.length - 1);\n    } else {\n      this.moveSelect(this.select - 1);\n    }\n    this.render();\n  }\n\n  down() {\n    if (this.select === this.suggestions.length - 1) {\n      this.moveSelect(0);\n    } else {\n      this.moveSelect(this.select + 1);\n    }\n    this.render();\n  }\n\n  next() {\n    if (this.select === this.suggestions.length - 1) {\n      this.moveSelect(0);\n    } else this.moveSelect(this.select + 1);\n    this.render();\n  }\n\n  nextPage() {\n    this.moveSelect(Math.min(this.select + this.limit, this.suggestions.length - 1));\n    this.render();\n  }\n\n  prevPage() {\n    this.moveSelect(Math.max(this.select - this.limit, 0));\n    this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0) return this.bell();\n    this.cursor = this.cursor-1;\n    this.render();\n  }\n\n  right() {\n    if (this.cursor*this.scale >= this.rendered.length) return this.bell();\n    this.cursor = this.cursor+1;\n    this.render();\n  }\n\n  renderOption(v, hovered, isStart, isEnd) {\n    let desc;\n    let prefix = isStart ? figures.arrowUp : isEnd ? figures.arrowDown : ' ';\n    let title = hovered ? color.cyan().underline(v.title) : v.title;\n    prefix = (hovered ? color.cyan(figures.pointer) + ' ' : '  ') + prefix;\n    if (v.description) {\n      desc = ` - ${v.description}`;\n      if (prefix.length + title.length + desc.length >= this.out.columns\n        || v.description.split(/\\r?\\n/).length > 1) {\n        desc = '\\n' + wrap(v.description, { margin: 3, width: this.out.columns })\n      }\n    }\n    return prefix + ' ' + title + color.gray(desc || '');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    let { startIndex, endIndex } = entriesToDisplay(this.select, this.choices.length, this.limit);\n\n    this.outputText = [\n      style.symbol(this.done, this.aborted, this.exited),\n      color.bold(this.msg),\n      style.delimiter(this.completing),\n      this.done && this.suggestions[this.select]\n        ? this.suggestions[this.select].title\n        : this.rendered = this.transform.render(this.input)\n    ].join(' ');\n\n    if (!this.done) {\n      const suggestions = this.suggestions\n        .slice(startIndex, endIndex)\n        .map((item, i) =>  this.renderOption(item,\n          this.select === i + startIndex,\n          i === 0 && startIndex > 0,\n          i + startIndex === endIndex - 1 && endIndex < this.choices.length))\n        .join('\\n');\n      this.outputText += `\\n` + (suggestions || color.gray(this.fallback.title));\n    }\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n}\n\nmodule.exports = AutocompletePrompt;\n","'use strict';\n\nconst color = require('kleur');\nconst { cursor } = require('sisteransi');\nconst MultiselectPrompt = require('./multiselect');\nconst { clear, style, figures } = require('../util');\n/**\n * MultiselectPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Array} opts.choices Array of choice objects\n * @param {String} [opts.hint] Hint to display\n * @param {String} [opts.warn] Hint shown for disabled choices\n * @param {Number} [opts.max] Max choices\n * @param {Number} [opts.cursor=0] Cursor start position\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n */\nclass AutocompleteMultiselectPrompt extends MultiselectPrompt {\n  constructor(opts={}) {\n    opts.overrideRender = true;\n    super(opts);\n    this.inputValue = '';\n    this.clear = clear('', this.out.columns);\n    this.filteredOptions = this.value;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.filteredOptions.length - 1;\n    this.render();\n  }\n  next() {\n    this.cursor = (this.cursor + 1) % this.filteredOptions.length;\n    this.render();\n  }\n\n  up() {\n    if (this.cursor === 0) {\n      this.cursor = this.filteredOptions.length - 1;\n    } else {\n      this.cursor--;\n    }\n    this.render();\n  }\n\n  down() {\n    if (this.cursor === this.filteredOptions.length - 1) {\n      this.cursor = 0;\n    } else {\n      this.cursor++;\n    }\n    this.render();\n  }\n\n  left() {\n    this.filteredOptions[this.cursor].selected = false;\n    this.render();\n  }\n\n  right() {\n    if (this.value.filter(e => e.selected).length >= this.maxChoices) return this.bell();\n    this.filteredOptions[this.cursor].selected = true;\n    this.render();\n  }\n\n  delete() {\n    if (this.inputValue.length) {\n      this.inputValue = this.inputValue.substr(0, this.inputValue.length - 1);\n      this.updateFilteredOptions();\n    }\n  }\n\n  updateFilteredOptions() {\n    const currentHighlight = this.filteredOptions[this.cursor];\n    this.filteredOptions = this.value\n      .filter(v => {\n        if (this.inputValue) {\n          if (typeof v.title === 'string') {\n            if (v.title.toLowerCase().includes(this.inputValue.toLowerCase())) {\n              return true;\n            }\n          }\n          if (typeof v.value === 'string') {\n            if (v.value.toLowerCase().includes(this.inputValue.toLowerCase())) {\n              return true;\n            }\n          }\n          return false;\n        }\n        return true;\n      });\n    const newHighlightIndex = this.filteredOptions.findIndex(v => v === currentHighlight)\n    this.cursor = newHighlightIndex < 0 ? 0 : newHighlightIndex;\n    this.render();\n  }\n\n  handleSpaceToggle() {\n    const v = this.filteredOptions[this.cursor];\n\n    if (v.selected) {\n      v.selected = false;\n      this.render();\n    } else if (v.disabled || this.value.filter(e => e.selected).length >= this.maxChoices) {\n      return this.bell();\n    } else {\n      v.selected = true;\n      this.render();\n    }\n  }\n\n  handleInputChange(c) {\n    this.inputValue = this.inputValue + c;\n    this.updateFilteredOptions();\n  }\n\n  _(c, key) {\n    if (c === ' ') {\n      this.handleSpaceToggle();\n    } else {\n      this.handleInputChange(c);\n    }\n  }\n\n  renderInstructions() {\n    if (this.instructions === undefined || this.instructions) {\n      if (typeof this.instructions === 'string') {\n        return this.instructions;\n      }\n      return `\nInstructions:\n    ${figures.arrowUp}/${figures.arrowDown}: Highlight option\n    ${figures.arrowLeft}/${figures.arrowRight}/[space]: Toggle selection\n    [a,b,c]/delete: Filter choices\n    enter/return: Complete answer\n`;\n    }\n    return '';\n  }\n\n  renderCurrentInput() {\n    return `\nFiltered results for: ${this.inputValue ? this.inputValue : color.gray('Enter something to filter')}\\n`;\n  }\n\n  renderOption(cursor, v, i) {\n    let title;\n    if (v.disabled) title = cursor === i ? color.gray().underline(v.title) : color.strikethrough().gray(v.title);\n    else title = cursor === i ? color.cyan().underline(v.title) : v.title;\n    return (v.selected ? color.green(figures.radioOn) : figures.radioOff) + '  ' + title\n  }\n\n  renderDoneOrInstructions() {\n    if (this.done) {\n      return this.value\n        .filter(e => e.selected)\n        .map(v => v.title)\n        .join(', ');\n    }\n\n    const output = [color.gray(this.hint), this.renderInstructions(), this.renderCurrentInput()];\n\n    if (this.filteredOptions.length && this.filteredOptions[this.cursor].disabled) {\n      output.push(color.yellow(this.warn));\n    }\n    return output.join(' ');\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    super.render();\n\n    // print prompt\n\n    let prompt = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(false),\n      this.renderDoneOrInstructions()\n    ].join(' ');\n\n    if (this.showMinError) {\n      prompt += color.red(`You must select a minimum of ${this.minSelected} choices.`);\n      this.showMinError = false;\n    }\n    prompt += this.renderOptions(this.filteredOptions);\n\n    this.out.write(this.clear + prompt);\n    this.clear = clear(prompt, this.out.columns);\n  }\n}\n\nmodule.exports = AutocompleteMultiselectPrompt;\n","const color = require('kleur');\nconst Prompt = require('./prompt');\nconst { style, clear } = require('../util');\nconst { erase, cursor } = require('sisteransi');\n\n/**\n * ConfirmPrompt Base Element\n * @param {Object} opts Options\n * @param {String} opts.message Message\n * @param {Boolean} [opts.initial] Default value (true/false)\n * @param {Stream} [opts.stdin] The Readable stream to listen to\n * @param {Stream} [opts.stdout] The Writable stream to write readline data to\n * @param {String} [opts.yes] The \"Yes\" label\n * @param {String} [opts.yesOption] The \"Yes\" option when choosing between yes/no\n * @param {String} [opts.no] The \"No\" label\n * @param {String} [opts.noOption] The \"No\" option when choosing between yes/no\n */\nclass ConfirmPrompt extends Prompt {\n  constructor(opts={}) {\n    super(opts);\n    this.msg = opts.message;\n    this.value = opts.initial;\n    this.initialValue = !!opts.initial;\n    this.yesMsg = opts.yes || 'yes';\n    this.yesOption = opts.yesOption || '(Y/n)';\n    this.noMsg = opts.no || 'no';\n    this.noOption = opts.noOption || '(y/N)';\n    this.render();\n  }\n\n  reset() {\n    this.value = this.initialValue;\n    this.fire();\n    this.render();\n  }\n\n  exit() {\n    this.abort();\n  }\n\n  abort() {\n    this.done = this.aborted = true;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  submit() {\n    this.value = this.value || false;\n    this.done = true;\n    this.aborted = false;\n    this.fire();\n    this.render();\n    this.out.write('\\n');\n    this.close();\n  }\n\n  _(c, key) {\n    if (c.toLowerCase() === 'y') {\n      this.value = true;\n      return this.submit();\n    }\n    if (c.toLowerCase() === 'n') {\n      this.value = false;\n      return this.submit();\n    }\n    return this.bell();\n  }\n\n  render() {\n    if (this.closed) return;\n    if (this.firstRender) this.out.write(cursor.hide);\n    else this.out.write(clear(this.outputText, this.out.columns));\n    super.render();\n\n    this.outputText = [\n      style.symbol(this.done, this.aborted),\n      color.bold(this.msg),\n      style.delimiter(this.done),\n      this.done ? (this.value ? this.yesMsg : this.noMsg)\n          : color.gray(this.initialValue ? this.yesOption : this.noOption)\n    ].join(' ');\n\n    this.out.write(erase.line + cursor.to(0) + this.outputText);\n  }\n}\n\nmodule.exports = ConfirmPrompt;\n","'use strict';\n\nmodule.exports = {\n  TextPrompt: require('./text'),\n  SelectPrompt: require('./select'),\n  TogglePrompt: require('./toggle'),\n  DatePrompt: require('./date'),\n  NumberPrompt: require('./number'),\n  MultiselectPrompt: require('./multiselect'),\n  AutocompletePrompt: require('./autocomplete'),\n  AutocompleteMultiselectPrompt: require('./autocompleteMultiselect'),\n  ConfirmPrompt: require('./confirm')\n};\n","'use strict';\nconst $ = exports;\nconst el = require('./elements');\nconst noop = v => v;\n\nfunction toPrompt(type, args, opts={}) {\n  return new Promise((res, rej) => {\n    const p = new el[type](args);\n    const onAbort = opts.onAbort || noop;\n    const onSubmit = opts.onSubmit || noop;\n    const onExit = opts.onExit || noop;\n    p.on('state', args.onState || noop);\n    p.on('submit', x => res(onSubmit(x)));\n    p.on('exit', x => res(onExit(x)));\n    p.on('abort', x => rej(onAbort(x)));\n  });\n}\n\n/**\n * Text prompt\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.text = args => toPrompt('TextPrompt', args);\n\n/**\n * Password prompt with masked input\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.password = args => {\n  args.style = 'password';\n  return $.text(args);\n};\n\n/**\n * Prompt where input is invisible, like sudo\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {function} [args.onState] On state change callback\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.invisible = args => {\n  args.style = 'invisible';\n  return $.text(args);\n};\n\n/**\n * Number prompt\n * @param {string} args.message Prompt message to display\n * @param {number} args.initial Default number value\n * @param {function} [args.onState] On state change callback\n * @param {number} [args.max] Max value\n * @param {number} [args.min] Min value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.number = args => toPrompt('NumberPrompt', args);\n\n/**\n * Date prompt\n * @param {string} args.message Prompt message to display\n * @param {number} args.initial Default number value\n * @param {function} [args.onState] On state change callback\n * @param {number} [args.max] Max value\n * @param {number} [args.min] Min value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {Boolean} [opts.float=false] Parse input as floats\n * @param {Number} [opts.round=2] Round floats to x decimals\n * @param {Number} [opts.increment=1] Number to increment by when using arrow-keys\n * @param {function} [args.validate] Function to validate user input\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.date = args => toPrompt('DatePrompt', args);\n\n/**\n * Classic yes/no prompt\n * @param {string} args.message Prompt message to display\n * @param {boolean} [args.initial=false] Default value\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.confirm = args => toPrompt('ConfirmPrompt', args);\n\n/**\n * List prompt, split intput string by `seperator`\n * @param {string} args.message Prompt message to display\n * @param {string} [args.initial] Default string value\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {string} [args.separator] String separator\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input, in form of an `Array`\n */\n$.list = args => {\n  const sep = args.separator || ',';\n  return toPrompt('TextPrompt', args, {\n    onSubmit: str => str.split(sep).map(s => s.trim())\n  });\n};\n\n/**\n * Toggle/switch prompt\n * @param {string} args.message Prompt message to display\n * @param {boolean} [args.initial=false] Default value\n * @param {string} [args.active=\"on\"] Text for `active` state\n * @param {string} [args.inactive=\"off\"] Text for `inactive` state\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.toggle = args => toPrompt('TogglePrompt', args);\n\n/**\n * Interactive select prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of choices objects `[{ title, value }, ...]`\n * @param {number} [args.initial] Index of default value\n * @param {String} [args.hint] Hint to display\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.select = args => toPrompt('SelectPrompt', args);\n\n/**\n * Interactive multi-select / autocompleteMultiselect prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of choices objects `[{ title, value, [selected] }, ...]`\n * @param {number} [args.max] Max select\n * @param {string} [args.hint] Hint to display user\n * @param {Number} [args.cursor=0] Cursor start position\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.multiselect = args => {\n  args.choices = [].concat(args.choices || []);\n  const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n  return toPrompt('MultiselectPrompt', args, {\n    onAbort: toSelected,\n    onSubmit: toSelected\n  });\n};\n\n$.autocompleteMultiselect = args => {\n  args.choices = [].concat(args.choices || []);\n  const toSelected = items => items.filter(item => item.selected).map(item => item.value);\n  return toPrompt('AutocompleteMultiselectPrompt', args, {\n    onAbort: toSelected,\n    onSubmit: toSelected\n  });\n};\n\nconst byTitle = (input, choices) => Promise.resolve(\n  choices.filter(item => item.title.slice(0, input.length).toLowerCase() === input.toLowerCase())\n);\n\n/**\n * Interactive auto-complete prompt\n * @param {string} args.message Prompt message to display\n * @param {Array} args.choices Array of auto-complete choices objects `[{ title, value }, ...]`\n * @param {Function} [args.suggest] Function to filter results based on user input. Defaults to sort by `title`\n * @param {number} [args.limit=10] Max number of results to show\n * @param {string} [args.style=\"default\"] Render style ('default', 'password', 'invisible')\n * @param {String} [args.initial] Index of the default value\n * @param {boolean} [opts.clearFirst] The first ESCAPE keypress will clear the input\n * @param {String} [args.fallback] Fallback message - defaults to initial value\n * @param {function} [args.onState] On state change callback\n * @param {Stream} [args.stdin] The Readable stream to listen to\n * @param {Stream} [args.stdout] The Writable stream to write readline data to\n * @returns {Promise} Promise with user input\n */\n$.autocomplete = args => {\n  args.suggest = args.suggest || byTitle;\n  args.choices = [].concat(args.choices || []);\n  return toPrompt('AutocompletePrompt', args);\n};\n","'use strict';\n\nconst prompts = require('./prompts');\n\nconst passOn = ['suggest', 'format', 'onState', 'validate', 'onRender', 'type'];\nconst noop = () => {};\n\n/**\n * Prompt for a series of questions\n * @param {Array|Object} questions Single question object or Array of question objects\n * @param {Function} [onSubmit] Callback function called on prompt submit\n * @param {Function} [onCancel] Callback function called on cancel/abort\n * @returns {Object} Object with values from user input\n */\nasync function prompt(questions=[], { onSubmit=noop, onCancel=noop }={}) {\n  const answers = {};\n  const override = prompt._override || {};\n  questions = [].concat(questions);\n  let answer, question, quit, name, type, lastPrompt;\n\n  const getFormattedAnswer = async (question, answer, skipValidation = false) => {\n    if (!skipValidation && question.validate && question.validate(answer) !== true) {\n      return;\n    }\n    return question.format ? await question.format(answer, answers) : answer\n  };\n\n  for (question of questions) {\n    ({ name, type } = question);\n\n    // evaluate type first and skip if type is a falsy value\n    if (typeof type === 'function') {\n      type = await type(answer, { ...answers }, question)\n      question['type'] = type\n    }\n    if (!type) continue;\n\n    // if property is a function, invoke it unless it's a special function\n    for (let key in question) {\n      if (passOn.includes(key)) continue;\n      let value = question[key];\n      question[key] = typeof value === 'function' ? await value(answer, { ...answers }, lastPrompt) : value;\n    }\n\n    lastPrompt = question;\n\n    if (typeof question.message !== 'string') {\n      throw new Error('prompt message is required');\n    }\n\n    // update vars in case they changed\n    ({ name, type } = question);\n\n    if (prompts[type] === void 0) {\n      throw new Error(`prompt type (${type}) is not defined`);\n    }\n\n    if (override[question.name] !== undefined) {\n      answer = await getFormattedAnswer(question, override[question.name]);\n      if (answer !== undefined) {\n        answers[name] = answer;\n        continue;\n      }\n    }\n\n    try {\n      // Get the injected answer if there is one or prompt the user\n      answer = prompt._injected ? getInjectedAnswer(prompt._injected, question.initial) : await prompts[type](question);\n      answers[name] = answer = await getFormattedAnswer(question, answer, true);\n      quit = await onSubmit(question, answer, answers);\n    } catch (err) {\n      quit = !(await onCancel(question, answers));\n    }\n\n    if (quit) return answers;\n  }\n\n  return answers;\n}\n\nfunction getInjectedAnswer(injected, deafultValue) {\n  const answer = injected.shift();\n    if (answer instanceof Error) {\n      throw answer;\n    }\n\n    return (answer === undefined) ? deafultValue : answer;\n}\n\nfunction inject(answers) {\n  prompt._injected = (prompt._injected || []).concat(answers);\n}\n\nfunction override(answers) {\n  prompt._override = Object.assign({}, answers);\n}\n\nmodule.exports = Object.assign(prompt, { prompt, prompts, inject, override });\n","function isNodeLT(tar) {\n  tar = (Array.isArray(tar) ? tar : tar.split('.')).map(Number);\n  let i=0, src=process.versions.node.split('.').map(Number);\n  for (; i < tar.length; i++) {\n    if (src[i] > tar[i]) return false;\n    if (tar[i] > src[i]) return true;\n  }\n  return false;\n}\n\nmodule.exports =\n  isNodeLT('8.6.0')\n    ? require('./dist/index.js')\n    : require('./lib/index.js');\n","// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set<string>\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n  [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set<string>\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude<T, true> | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude<T, true>) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc<EvaluatedProperties>\n  items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n","import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set<string>\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set<string>()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n  \"type\",\n  \"format\",\n  \"pattern\",\n  \"maxLength\",\n  \"minLength\",\n  \"maxProperties\",\n  \"minProperties\",\n  \"maxItems\",\n  \"minItems\",\n  \"maximum\",\n  \"minimum\",\n  \"uniqueItems\",\n  \"multipleOf\",\n  \"required\",\n  \"enum\",\n  \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n  if (typeof schema == \"boolean\") return true\n  if (limit === true) return !hasRef(schema)\n  if (!limit) return false\n  return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n  \"$ref\",\n  \"$recursiveRef\",\n  \"$recursiveAnchor\",\n  \"$dynamicRef\",\n  \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n  for (const key in schema) {\n    if (REF_KEYWORDS.has(key)) return true\n    const sch = schema[key]\n    if (Array.isArray(sch) && sch.some(hasRef)) return true\n    if (typeof sch == \"object\" && hasRef(sch)) return true\n  }\n  return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n  let count = 0\n  for (const key in schema) {\n    if (key === \"$ref\") return Infinity\n    count++\n    if (SIMPLE_INLINED.has(key)) continue\n    if (typeof schema[key] == \"object\") {\n      eachItem(schema[key], (sch) => (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set<string> = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n","import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial<ErrorObject>[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial<ErrorObject>[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n","import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set<string> // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set<string>(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n","{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n  let acc = ''\n  let code = 0\n  let i = 0\n\n  for (i = 0; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (code === 48) {\n      continue\n    }\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n    break\n  }\n\n  for (i += 1; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n  }\n  return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n  buffer.length = 0\n  return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n  if (buffer.length) {\n    const hex = stringArrayToHexStripped(buffer)\n    if (hex !== '') {\n      address.push(hex)\n    } else {\n      output.error = true\n      return false\n    }\n    buffer.length = 0\n  }\n  return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n  let tokenCount = 0\n  const output = { error: false, address: '', zone: '' }\n  /** @type {Array<string>} */\n  const address = []\n  /** @type {Array<string>} */\n  const buffer = []\n  let endipv6Encountered = false\n  let endIpv6 = false\n\n  let consume = consumeHextets\n\n  for (let i = 0; i < input.length; i++) {\n    const cursor = input[i]\n    if (cursor === '[' || cursor === ']') { continue }\n    if (cursor === ':') {\n      if (endipv6Encountered === true) {\n        endIpv6 = true\n      }\n      if (!consume(buffer, address, output)) { break }\n      if (++tokenCount > 7) {\n        // not valid\n        output.error = true\n        break\n      }\n      if (i > 0 && input[i - 1] === ':') {\n        endipv6Encountered = true\n      }\n      address.push(':')\n      continue\n    } else if (cursor === '%') {\n      if (!consume(buffer, address, output)) { break }\n      // switch to zone detection\n      consume = consumeIsZone\n    } else {\n      buffer.push(cursor)\n      continue\n    }\n  }\n  if (buffer.length) {\n    if (consume === consumeIsZone) {\n      output.zone = buffer.join('')\n    } else if (endIpv6) {\n      address.push(buffer.join(''))\n    } else {\n      address.push(stringArrayToHexStripped(buffer))\n    }\n  }\n  output.address = address.join('')\n  return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n  const ipv6 = getIPV6(host)\n\n  if (!ipv6.error) {\n    let newHost = ipv6.address\n    let escapedHost = ipv6.address\n    if (ipv6.zone) {\n      newHost += '%' + ipv6.zone\n      escapedHost += '%25' + ipv6.zone\n    }\n    return { host: newHost, isIPV6: true, escapedHost }\n  } else {\n    return { host, isIPV6: false }\n  }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n  let ind = 0\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === token) ind++\n  }\n  return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n  let input = path\n  const output = []\n  let nextSlash = -1\n  let len = 0\n\n  // eslint-disable-next-line no-cond-assign\n  while (len = input.length) {\n    if (len === 1) {\n      if (input === '.') {\n        break\n      } else if (input === '/') {\n        output.push('/')\n        break\n      } else {\n        output.push(input)\n        break\n      }\n    } else if (len === 2) {\n      if (input[0] === '.') {\n        if (input[1] === '.') {\n          break\n        } else if (input[1] === '/') {\n          input = input.slice(2)\n          continue\n        }\n      } else if (input[0] === '/') {\n        if (input[1] === '.' || input[1] === '/') {\n          output.push('/')\n          break\n        }\n      }\n    } else if (len === 3) {\n      if (input === '/..') {\n        if (output.length !== 0) {\n          output.pop()\n        }\n        output.push('/')\n        break\n      }\n    }\n    if (input[0] === '.') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(3)\n          continue\n        }\n      } else if (input[1] === '/') {\n        input = input.slice(2)\n        continue\n      }\n    } else if (input[0] === '/') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(2)\n          continue\n        } else if (input[2] === '.') {\n          if (input[3] === '/') {\n            input = input.slice(3)\n            if (output.length !== 0) {\n              output.pop()\n            }\n            continue\n          }\n        }\n      }\n    }\n\n    // Rule 2E: Move normal path segment to output\n    if ((nextSlash = input.indexOf('/', 1)) === -1) {\n      output.push(input)\n      break\n    } else {\n      output.push(input.slice(0, nextSlash))\n      input = input.slice(nextSlash)\n    }\n  }\n\n  return output.join('')\n}\n\n/**\n * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n  const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n  re.lastIndex = 0\n  return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` and `%2E` stay escaped.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n  if (input.indexOf('%') === -1) {\n    return input\n  }\n\n  let output = ''\n\n  for (let i = 0; i < input.length; i++) {\n    if (input[i] === '%' && i + 2 < input.length) {\n      const hex = input.slice(i + 1, i + 3)\n      if (isHexPair(hex)) {\n        const normalizedHex = hex.toUpperCase()\n        const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n        if (decodeUnreserved && isUnreserved(decoded)) {\n          output += decoded\n        } else {\n          output += '%' + normalizedHex\n        }\n\n        i += 2\n        continue\n      }\n    }\n\n    output += input[i]\n  }\n\n  return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n  let output = ''\n\n  for (let i = 0; i < input.length; i++) {\n    if (input[i] === '%' && i + 2 < input.length) {\n      const hex = input.slice(i + 1, i + 3)\n      if (isHexPair(hex)) {\n        const normalizedHex = hex.toUpperCase()\n        const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n        if (decoded !== '.' && isUnreserved(decoded)) {\n          output += decoded\n        } else {\n          output += '%' + normalizedHex\n        }\n\n        i += 2\n        continue\n      }\n    }\n\n    if (isPathCharacter(input[i])) {\n      output += input[i]\n    } else {\n      output += escape(input[i])\n    }\n  }\n\n  return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n  let output = ''\n\n  for (let i = 0; i < input.length; i++) {\n    if (input[i] === '%' && i + 2 < input.length) {\n      const hex = input.slice(i + 1, i + 3)\n      if (isHexPair(hex)) {\n        output += '%' + hex.toUpperCase()\n        i += 2\n        continue\n      }\n    }\n\n    output += escape(input[i])\n  }\n\n  return output\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n  const uriTokens = []\n\n  if (component.userinfo !== undefined) {\n    uriTokens.push(component.userinfo)\n    uriTokens.push('@')\n  }\n\n  if (component.host !== undefined) {\n    let host = unescape(component.host)\n    if (!isIPv4(host)) {\n      const ipV6res = normalizeIPv6(host)\n      if (ipV6res.isIPV6 === true) {\n        host = `[${ipV6res.escapedHost}]`\n      } else {\n        host = reescapeHostDelimiters(host, false)\n      }\n    }\n    uriTokens.push(host)\n  }\n\n  if (typeof component.port === 'number' || typeof component.port === 'string') {\n    uriTokens.push(':')\n    uriTokens.push(String(component.port))\n  }\n\n  return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n  nonSimpleDomain,\n  recomposeAuthority,\n  reescapeHostDelimiters,\n  normalizePercentEncoding,\n  normalizePathEncoding,\n  escapePreservingEscapes,\n  removeDotSegments,\n  isIPv4,\n  isUUID,\n  normalizeIPv6,\n  stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n  'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n  return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n  if (wsComponent.secure === true) {\n    return true\n  } else if (wsComponent.secure === false) {\n    return false\n  } else if (wsComponent.scheme) {\n    return (\n      wsComponent.scheme.length === 3 &&\n      (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n      (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n      (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n    )\n  } else {\n    return false\n  }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n  if (!component.host) {\n    component.error = component.error || 'HTTP URIs must have a host.'\n  }\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n  const secure = String(component.scheme).toLowerCase() === 'https'\n\n  // normalize the default port\n  if (component.port === (secure ? 443 : 80) || component.port === '') {\n    component.port = undefined\n  }\n\n  // normalize the empty path\n  if (!component.path) {\n    component.path = '/'\n  }\n\n  // NOTE: We do not parse query strings for HTTP URIs\n  // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n  // and not the HTTP spec.\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n  wsComponent.secure = wsIsSecure(wsComponent)\n\n  // construct resouce name\n  wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n  wsComponent.path = undefined\n  wsComponent.query = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n  if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n    wsComponent.port = undefined\n  }\n\n  // ensure scheme matches secure flag\n  if (typeof wsComponent.secure === 'boolean') {\n    wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n    wsComponent.secure = undefined\n  }\n\n  // reconstruct path from resource name\n  if (wsComponent.resourceName) {\n    const [path, query] = wsComponent.resourceName.split('?')\n    wsComponent.path = (path && path !== '/' ? path : undefined)\n    wsComponent.query = query\n    wsComponent.resourceName = undefined\n  }\n\n  // forbid fragment component\n  wsComponent.fragment = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n  if (!urnComponent.path) {\n    urnComponent.error = 'URN can not be parsed'\n    return urnComponent\n  }\n  const matches = urnComponent.path.match(URN_REG)\n  if (matches) {\n    const scheme = options.scheme || urnComponent.scheme || 'urn'\n    urnComponent.nid = matches[1].toLowerCase()\n    urnComponent.nss = matches[2]\n    const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n    const schemeHandler = getSchemeHandler(urnScheme)\n    urnComponent.path = undefined\n\n    if (schemeHandler) {\n      urnComponent = schemeHandler.parse(urnComponent, options)\n    }\n  } else {\n    urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n  }\n\n  return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n  if (urnComponent.nid === undefined) {\n    throw new Error('URN without nid cannot be serialized')\n  }\n  const scheme = options.scheme || urnComponent.scheme || 'urn'\n  const nid = urnComponent.nid.toLowerCase()\n  const urnScheme = `${scheme}:${options.nid || nid}`\n  const schemeHandler = getSchemeHandler(urnScheme)\n\n  if (schemeHandler) {\n    urnComponent = schemeHandler.serialize(urnComponent, options)\n  }\n\n  const uriComponent = urnComponent\n  const nss = urnComponent.nss\n  uriComponent.path = `${nid || options.nid}:${nss}`\n\n  options.skipEscape = true\n  return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n  const uuidComponent = urnComponent\n  uuidComponent.uuid = uuidComponent.nss\n  uuidComponent.nss = undefined\n\n  if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n    uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n  }\n\n  return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n  const urnComponent = uuidComponent\n  // normalize UUID\n  urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n  return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n  scheme: 'http',\n  domainHost: true,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n  scheme: 'https',\n  domainHost: http.domainHost,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n  scheme: 'ws',\n  domainHost: true,\n  parse: wsParse,\n  serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n  scheme: 'wss',\n  domainHost: ws.domainHost,\n  parse: ws.parse,\n  serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n  scheme: 'urn',\n  parse: urnParse,\n  serialize: urnSerialize,\n  skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n  scheme: 'urn:uuid',\n  parse: urnuuidParse,\n  serialize: urnuuidSerialize,\n  skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n  http,\n  https,\n  ws,\n  wss,\n  urn,\n  'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n  return (\n    scheme && (\n      SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n      SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n  ) ||\n    undefined\n}\n\nmodule.exports = {\n  wsIsSecure,\n  SCHEMES,\n  isValidSchemeName,\n  getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n  if (typeof uri === 'string') {\n    uri = /** @type {T} */ (normalizeString(uri, options))\n  } else if (typeof uri === 'object') {\n    uri = /** @type {T} */ (parse(serialize(uri, options), options))\n  }\n  return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n  const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n  const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n  schemelessOptions.skipEscape = true\n  return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n  /** @type {import('./types/index').URIComponent} */\n  const target = {}\n  if (!skipNormalization) {\n    base = parse(serialize(base, options), options) // normalize base component\n    relative = parse(serialize(relative, options), options) // normalize relative component\n  }\n  options = options || {}\n\n  if (!options.tolerant && relative.scheme) {\n    target.scheme = relative.scheme\n    // target.authority = relative.authority;\n    target.userinfo = relative.userinfo\n    target.host = relative.host\n    target.port = relative.port\n    target.path = removeDotSegments(relative.path || '')\n    target.query = relative.query\n  } else {\n    if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n      // target.authority = relative.authority;\n      target.userinfo = relative.userinfo\n      target.host = relative.host\n      target.port = relative.port\n      target.path = removeDotSegments(relative.path || '')\n      target.query = relative.query\n    } else {\n      if (!relative.path) {\n        target.path = base.path\n        if (relative.query !== undefined) {\n          target.query = relative.query\n        } else {\n          target.query = base.query\n        }\n      } else {\n        if (relative.path[0] === '/') {\n          target.path = removeDotSegments(relative.path)\n        } else {\n          if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n            target.path = '/' + relative.path\n          } else if (!base.path) {\n            target.path = relative.path\n          } else {\n            target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n          }\n          target.path = removeDotSegments(target.path)\n        }\n        target.query = relative.query\n      }\n      // target.authority = base.authority;\n      target.userinfo = base.userinfo\n      target.host = base.host\n      target.port = base.port\n    }\n    target.scheme = base.scheme\n  }\n\n  target.fragment = relative.fragment\n\n  return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n  const normalizedA = normalizeComparableURI(uriA, options)\n  const normalizedB = normalizeComparableURI(uriB, options)\n\n  return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n  const component = {\n    host: cmpts.host,\n    scheme: cmpts.scheme,\n    userinfo: cmpts.userinfo,\n    port: cmpts.port,\n    path: cmpts.path,\n    query: cmpts.query,\n    nid: cmpts.nid,\n    nss: cmpts.nss,\n    uuid: cmpts.uuid,\n    fragment: cmpts.fragment,\n    reference: cmpts.reference,\n    resourceName: cmpts.resourceName,\n    secure: cmpts.secure,\n    error: ''\n  }\n  const options = Object.assign({}, opts)\n  const uriTokens = []\n\n  // find scheme handler\n  const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n  // perform scheme specific serialization\n  if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n  if (component.path !== undefined) {\n    if (!options.skipEscape) {\n      component.path = escapePreservingEscapes(component.path)\n\n      if (component.scheme !== undefined) {\n        component.path = component.path.split('%3A').join(':')\n      }\n    } else {\n      component.path = normalizePercentEncoding(component.path)\n    }\n  }\n\n  if (options.reference !== 'suffix' && component.scheme) {\n    uriTokens.push(component.scheme, ':')\n  }\n\n  const authority = recomposeAuthority(component)\n  if (authority !== undefined) {\n    if (options.reference !== 'suffix') {\n      uriTokens.push('//')\n    }\n\n    uriTokens.push(authority)\n\n    if (component.path && component.path[0] !== '/') {\n      uriTokens.push('/')\n    }\n  }\n  if (component.path !== undefined) {\n    let s = component.path\n\n    if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n      s = removeDotSegments(s)\n    }\n\n    if (\n      authority === undefined &&\n      s[0] === '/' &&\n      s[1] === '/'\n    ) {\n      // don't allow the path to start with \"//\"\n      s = '/%2F' + s.slice(2)\n    }\n\n    uriTokens.push(s)\n  }\n\n  if (component.query !== undefined) {\n    uriTokens.push('?', component.query)\n  }\n\n  if (component.fragment !== undefined) {\n    uriTokens.push('#', component.fragment)\n  }\n  return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {RegExpMatchArray} matches\n * @returns {string|undefined}\n */\nfunction getParseError (parsed, matches) {\n  if (matches[2] !== undefined && parsed.path && parsed.path[0] !== '/') {\n    return 'URI path must start with \"/\" when authority is present.'\n  }\n\n  if (typeof parsed.port === 'number' && (parsed.port < 0 || parsed.port > 65535)) {\n    return 'URI port is malformed.'\n  }\n\n  return undefined\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: boolean }}\n */\nfunction parseWithStatus (uri, opts) {\n  const options = Object.assign({}, opts)\n  /** @type {import('./types/index').URIComponent} */\n  const parsed = {\n    scheme: undefined,\n    userinfo: undefined,\n    host: '',\n    port: undefined,\n    path: '',\n    query: undefined,\n    fragment: undefined\n  }\n\n  let malformedAuthorityOrPort = false\n\n  let isIP = false\n  if (options.reference === 'suffix') {\n    if (options.scheme) {\n      uri = options.scheme + ':' + uri\n    } else {\n      uri = '//' + uri\n    }\n  }\n\n  const matches = uri.match(URI_PARSE)\n\n  if (matches) {\n    // store each component\n    parsed.scheme = matches[1]\n    parsed.userinfo = matches[3]\n    parsed.host = matches[4]\n    parsed.port = parseInt(matches[5], 10)\n    parsed.path = matches[6] || ''\n    parsed.query = matches[7]\n    parsed.fragment = matches[8]\n\n    // fix port number\n    if (isNaN(parsed.port)) {\n      parsed.port = matches[5]\n    }\n\n    const parseError = getParseError(parsed, matches)\n    if (parseError !== undefined) {\n      parsed.error = parsed.error || parseError\n      malformedAuthorityOrPort = true\n    }\n\n    if (parsed.host) {\n      const ipv4result = isIPv4(parsed.host)\n      if (ipv4result === false) {\n        const ipv6result = normalizeIPv6(parsed.host)\n        parsed.host = ipv6result.host.toLowerCase()\n        isIP = ipv6result.isIPV6\n      } else {\n        isIP = true\n      }\n    }\n    if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n      parsed.reference = 'same-document'\n    } else if (parsed.scheme === undefined) {\n      parsed.reference = 'relative'\n    } else if (parsed.fragment === undefined) {\n      parsed.reference = 'absolute'\n    } else {\n      parsed.reference = 'uri'\n    }\n\n    // check for reference errors\n    if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n      parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n    }\n\n    // find scheme handler\n    const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n    // check if scheme can't handle IRIs\n    if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n      // if host component is a domain name\n      if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n        // convert Unicode IDN -> ASCII IDN\n        try {\n          parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n        } catch (e) {\n          parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n        }\n      }\n      // convert IRI -> URI\n    }\n\n    if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n      if (uri.indexOf('%') !== -1) {\n        if (parsed.scheme !== undefined) {\n          parsed.scheme = unescape(parsed.scheme)\n        }\n        if (parsed.host !== undefined) {\n          parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n        }\n      }\n      if (parsed.path) {\n        parsed.path = normalizePathEncoding(parsed.path)\n      }\n      if (parsed.fragment) {\n        try {\n          parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n        } catch {\n          parsed.error = parsed.error || 'URI malformed'\n        }\n      }\n    }\n\n    // perform scheme specific parsing\n    if (schemeHandler && schemeHandler.parse) {\n      schemeHandler.parse(parsed, options)\n    }\n  } else {\n    parsed.error = parsed.error || 'URI can not be parsed.'\n  }\n  return { parsed, malformedAuthorityOrPort }\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n  return parseWithStatus(uri, opts).parsed\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction normalizeString (uri, opts) {\n  return normalizeStringWithStatus(uri, opts).normalized\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ normalized: string, malformedAuthorityOrPort: boolean }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n  const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n  return {\n    normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n    malformedAuthorityOrPort\n  }\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string|undefined}\n */\nfunction normalizeComparableURI (uri, opts) {\n  if (typeof uri === 'string') {\n    const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n    return malformedAuthorityOrPort ? undefined : normalized\n  }\n\n  if (typeof uri === 'object') {\n    return serialize(uri, opts)\n  }\n}\n\nconst fastUri = {\n  SCHEMES,\n  normalize,\n  resolve,\n  resolveComponent,\n  equal,\n  serialize,\n  parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  specialNumbers?: \"fast\" | \"null\" // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise<AnySchemaObject>\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = Object.create(null)\n  readonly RULES: ValidationRules\n  readonly _compilations: Set<SchemaEnv> = new Set()\n  private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n  private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n  validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType<T>\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n  validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n  validate<T>(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise<T> {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema<T>(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile<T>(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction<JTDDataType<T>>\n  compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync<T = unknown>(\n    schema: SchemaObject | JSONSchemaType<T>,\n    _meta?: boolean\n  ): Promise<ValidateFunction<T>>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n  compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>>\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise<AnyValidateFunction> {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    if ($data) {\n      const {regExp} = it.opts.code\n      const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n      const valid = gen.let(\"valid\")\n      gen.try(\n        () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n        () => gen.assign(valid, false)\n      )\n      cxt.fail$data(_`!${valid}`)\n    } else {\n      const regExp = usePattern(cxt, schema)\n      cxt.fail$data(_`!${regExp}.test(${data})`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n","import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator<string>\n  | FormatValidator<number>\n  | AsyncFormatValidator<string>\n  | AsyncFormatValidator<number>\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Core schema meta-schema\",\n  \"definitions\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$ref\": \"#\"}\n    },\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  },\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$schema\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"$ref\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"additionalItems\": {\"$ref\": \"#\"},\n    \"items\": {\n      \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n      \"default\": true\n    },\n    \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"contains\": {\"$ref\": \"#\"},\n    \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n    \"additionalProperties\": {\"$ref\": \"#\"},\n    \"definitions\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n      }\n    },\n    \"propertyNames\": {\"$ref\": \"#\"},\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true,\n      \"minItems\": 1,\n      \"uniqueItems\": true\n    },\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/definitions/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"format\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"if\": {\"$ref\": \"#\"},\n    \"then\": {\"$ref\": \"#\"},\n    \"else\": {\"$ref\": \"#\"},\n    \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"not\": {\"$ref\": \"#\"}\n  },\n  \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    if (!this.opts.meta) return\n    const metaSchema = this.opts.$data\n      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n      : draft7MetaSchema\n    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  SchemaValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {Format, FormatDefinition} from \"ajv\"\nimport type {FormatValidator, FormatCompare} from \"ajv/dist/types\"\n\nexport type FormatMode = \"fast\" | \"full\"\n\nexport type FormatName =\n  | \"date\"\n  | \"time\"\n  | \"date-time\"\n  | \"duration\"\n  | \"uri\"\n  | \"uri-reference\"\n  | \"uri-template\"\n  | \"url\"\n  | \"email\"\n  | \"hostname\"\n  | \"ipv4\"\n  | \"ipv6\"\n  | \"regex\"\n  | \"uuid\"\n  | \"json-pointer\"\n  | \"json-pointer-uri-fragment\"\n  | \"relative-json-pointer\"\n  | \"byte\"\n  | \"int32\"\n  | \"int64\"\n  | \"float\"\n  | \"double\"\n  | \"password\"\n  | \"binary\"\n\nexport type DefinedFormats = {\n  [key in FormatName]: Format\n}\n\nfunction fmtDef(\n  validate: RegExp | FormatValidator<string>,\n  compare: FormatCompare<string>\n): FormatDefinition<string> {\n  return {validate, compare}\n}\n\nexport const fullFormats: DefinedFormats = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: fmtDef(date, compareDate),\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: fmtDef(time, compareTime),\n  \"date-time\": fmtDef(date_time, compareDateTime),\n  // duration: https://tools.ietf.org/html/rfc3339#appendix-A\n  duration: /^P(?!$)((\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?|(\\d+W)?)$/,\n  uri,\n  \"uri-reference\":\n    /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,\n  // uri-template: https://tools.ietf.org/html/rfc6570\n  \"uri-template\":\n    /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i,\n  // For the source: https://gist.github.com/dperini/729294\n  // For test cases: https://mathiasbynens.be/demo/url-regex\n  url: /^(?:https?|ftp):\\/\\/(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)(?:\\.(?:[a-z0-9\\u{00a1}-\\u{ffff}]+-)*[a-z0-9\\u{00a1}-\\u{ffff}]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu,\n  email:\n    /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n  hostname:\n    /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i,\n  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))$/i,\n  regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  \"json-pointer\": /^(?:\\/(?:[^~/]|~0|~1)*)*$/,\n  \"json-pointer-uri-fragment\": /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  \"relative-json-pointer\": /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/,\n  // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types\n  // byte: https://github.com/miguelmota/is-base64\n  byte,\n  // signed 32 bit integer\n  int32: {type: \"number\", validate: validateInt32},\n  // signed 64 bit integer\n  int64: {type: \"number\", validate: validateInt64},\n  // C-type float\n  float: {type: \"number\", validate: validateNumber},\n  // C-type double\n  double: {type: \"number\", validate: validateNumber},\n  // hint to the UI to hide input strings\n  password: true,\n  // unchecked string payload\n  binary: true,\n}\n\nexport const fastFormats: DefinedFormats = {\n  ...fullFormats,\n  date: fmtDef(/^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/, compareDate),\n  time: fmtDef(\n    /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n    compareTime\n  ),\n  \"date-time\": fmtDef(\n    /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n    compareDateTime\n  ),\n  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n  uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n  \"uri-reference\": /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n  // email (sources from jsen validator):\n  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation')\n  email:\n    /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n}\n\nexport const formatNames = Object.keys(fullFormats) as FormatName[]\n\nfunction isLeapYear(year: number): boolean {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)\n}\n\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/\nconst DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction date(str: string): boolean {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  const matches: string[] | null = DATE.exec(str)\n  if (!matches) return false\n  const year: number = +matches[1]\n  const month: number = +matches[2]\n  const day: number = +matches[3]\n  return (\n    month >= 1 &&\n    month <= 12 &&\n    day >= 1 &&\n    day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month])\n  )\n}\n\nfunction compareDate(d1: string, d2: string): number | undefined {\n  if (!(d1 && d2)) return undefined\n  if (d1 > d2) return 1\n  if (d1 < d2) return -1\n  return 0\n}\n\nconst TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i\n\nfunction time(str: string, withTimeZone?: boolean): boolean {\n  const matches: string[] | null = TIME.exec(str)\n  if (!matches) return false\n\n  const hour: number = +matches[1]\n  const minute: number = +matches[2]\n  const second: number = +matches[3]\n  const timeZone: string = matches[5]\n  return (\n    ((hour <= 23 && minute <= 59 && second <= 59) ||\n      (hour === 23 && minute === 59 && second === 60)) &&\n    (!withTimeZone || timeZone !== \"\")\n  )\n}\n\nfunction compareTime(t1: string, t2: string): number | undefined {\n  if (!(t1 && t2)) return undefined\n  const a1 = TIME.exec(t1)\n  const a2 = TIME.exec(t2)\n  if (!(a1 && a2)) return undefined\n  t1 = a1[1] + a1[2] + a1[3] + (a1[4] || \"\")\n  t2 = a2[1] + a2[2] + a2[3] + (a2[4] || \"\")\n  if (t1 > t2) return 1\n  if (t1 < t2) return -1\n  return 0\n}\n\nconst DATE_TIME_SEPARATOR = /t|\\s/i\nfunction date_time(str: string): boolean {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  const dateTime: string[] = str.split(DATE_TIME_SEPARATOR)\n  return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1], true)\n}\n\nfunction compareDateTime(dt1: string, dt2: string): number | undefined {\n  if (!(dt1 && dt2)) return undefined\n  const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR)\n  const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR)\n  const res = compareDate(d1, d2)\n  if (res === undefined) return undefined\n  return res || compareTime(t1, t2)\n}\n\nconst NOT_URI_FRAGMENT = /\\/|:/\nconst URI =\n  /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i\n\nfunction uri(str: string): boolean {\n  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n  return NOT_URI_FRAGMENT.test(str) && URI.test(str)\n}\n\nconst BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm\n\nfunction byte(str: string): boolean {\n  BYTE.lastIndex = 0\n  return BYTE.test(str)\n}\n\nconst MIN_INT32 = -(2 ** 31)\nconst MAX_INT32 = 2 ** 31 - 1\n\nfunction validateInt32(value: number): boolean {\n  return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32\n}\n\nfunction validateInt64(value: number): boolean {\n  // JSON and javascript max Int is 2**53, so any int that passes isInteger is valid for Int64\n  return Number.isInteger(value)\n}\n\nfunction validateNumber(): boolean {\n  return true\n}\n\nconst Z_ANCHOR = /[^\\\\]\\\\Z/\nfunction regex(str: string): boolean {\n  if (Z_ANCHOR.test(str)) return false\n  try {\n    new RegExp(str)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n","// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set<string>\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n  [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set<string>\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude<T, true> | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude<T, true>) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc<EvaluatedProperties>\n  items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n","import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set<string>\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set<string>()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n  \"type\",\n  \"format\",\n  \"pattern\",\n  \"maxLength\",\n  \"minLength\",\n  \"maxProperties\",\n  \"minProperties\",\n  \"maxItems\",\n  \"minItems\",\n  \"maximum\",\n  \"minimum\",\n  \"uniqueItems\",\n  \"multipleOf\",\n  \"required\",\n  \"enum\",\n  \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n  if (typeof schema == \"boolean\") return true\n  if (limit === true) return !hasRef(schema)\n  if (!limit) return false\n  return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n  \"$ref\",\n  \"$recursiveRef\",\n  \"$recursiveAnchor\",\n  \"$dynamicRef\",\n  \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n  for (const key in schema) {\n    if (REF_KEYWORDS.has(key)) return true\n    const sch = schema[key]\n    if (Array.isArray(sch) && sch.some(hasRef)) return true\n    if (typeof sch == \"object\" && hasRef(sch)) return true\n  }\n  return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n  let count = 0\n  for (const key in schema) {\n    if (key === \"$ref\") return Infinity\n    count++\n    if (SIMPLE_INLINED.has(key)) continue\n    if (typeof schema[key] == \"object\") {\n      eachItem(schema[key], (sch) => (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set<string> = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n","import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial<ErrorObject>[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial<ErrorObject>[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n","import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set<string> // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set<string>(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n","{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  specialNumbers?: \"fast\" | \"null\" // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise<AnySchemaObject>\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = {}\n  readonly RULES: ValidationRules\n  readonly _compilations: Set<SchemaEnv> = new Set()\n  private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n  private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n  validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType<T>\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n  validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n  validate<T>(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise<T> {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema<T>(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile<T>(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction<JTDDataType<T>>\n  compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync<T = unknown>(\n    schema: SchemaObject | JSONSchemaType<T>,\n    _meta?: boolean\n  ): Promise<ValidateFunction<T>>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n  compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>>\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise<AnyValidateFunction> {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    if ($data) {\n      const {regExp} = it.opts.code\n      const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n      const valid = gen.let(\"valid\")\n      gen.try(\n        () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n        () => gen.assign(valid, false)\n      )\n      cxt.fail$data(_`!${valid}`)\n    } else {\n      const regExp = usePattern(cxt, schema)\n      cxt.fail$data(_`!${regExp}.test(${data})`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n","import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n","import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator<string>\n  | FormatValidator<number>\n  | AsyncFormatValidator<string>\n  | AsyncFormatValidator<number>\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"http://json-schema.org/draft-07/schema#\",\n  \"title\": \"Core schema meta-schema\",\n  \"definitions\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$ref\": \"#\"}\n    },\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  },\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$schema\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"$ref\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"additionalItems\": {\"$ref\": \"#\"},\n    \"items\": {\n      \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n      \"default\": true\n    },\n    \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"contains\": {\"$ref\": \"#\"},\n    \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n    \"additionalProperties\": {\"$ref\": \"#\"},\n    \"definitions\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$ref\": \"#\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n      }\n    },\n    \"propertyNames\": {\"$ref\": \"#\"},\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true,\n      \"minItems\": 1,\n      \"uniqueItems\": true\n    },\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/definitions/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"format\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"if\": {\"$ref\": \"#\"},\n    \"then\": {\"$ref\": \"#\"},\n    \"else\": {\"$ref\": \"#\"},\n    \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n    \"not\": {\"$ref\": \"#\"}\n  },\n  \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    if (!this.opts.meta) return\n    const metaSchema = this.opts.$data\n      ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n      : draft7MetaSchema\n    this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  SchemaValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type Ajv from \"ajv\"\nimport type {\n  Plugin,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  Code,\n  Name,\n  ErrorObject,\n} from \"ajv\"\nimport type {AddedFormat} from \"ajv/dist/types\"\nimport type {Rule} from \"ajv/dist/compile/rules\"\nimport {KeywordCxt} from \"ajv\"\nimport {_, str, or, getProperty, operators} from \"ajv/dist/compile/codegen\"\n\ntype Kwd = \"formatMaximum\" | \"formatMinimum\" | \"formatExclusiveMaximum\" | \"formatExclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst ops = operators\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  formatMaximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  formatMinimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  formatExclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  formatExclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitFormatError = ErrorObject<Kwd, {limit: string; comparison: Comparison}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`should be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nexport const formatLimitDefinition: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt) {\n    const {gen, data, schemaCode, keyword, it} = cxt\n    const {opts, self} = it\n    if (!opts.validateFormats) return\n\n    const fCxt = new KeywordCxt(it, (self.RULES.all.format as Rule).definition, \"format\")\n    if (fCxt.$data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fmt = gen.const(\"fmt\", _`${fmts}[${fCxt.schemaCode}]`)\n      cxt.fail$data(\n        or(\n          _`typeof ${fmt} != \"object\"`,\n          _`${fmt} instanceof RegExp`,\n          _`typeof ${fmt}.compare != \"function\"`,\n          compareCode(fmt)\n        )\n      )\n    }\n\n    function validateFormat(): void {\n      const format = fCxt.schema as string\n      const fmtDef: AddedFormat | undefined = self.formats[format]\n      if (!fmtDef || fmtDef === true) return\n      if (\n        typeof fmtDef != \"object\" ||\n        fmtDef instanceof RegExp ||\n        typeof fmtDef.compare != \"function\"\n      ) {\n        throw new Error(`\"${keyword}\": format \"${format}\" does not define \"compare\" function`)\n      }\n      const fmt = gen.scopeValue(\"formats\", {\n        key: format,\n        ref: fmtDef,\n        code: opts.code.formats ? _`${opts.code.formats}${getProperty(format)}` : undefined,\n      })\n\n      cxt.fail$data(compareCode(fmt))\n    }\n\n    function compareCode(fmt: Name): Code {\n      return _`${fmt}.compare(${data}, ${schemaCode}) ${KWDs[keyword as Kwd].fail} 0`\n    }\n  },\n  dependencies: [\"format\"],\n}\n\nconst formatLimitPlugin: Plugin<undefined> = (ajv: Ajv): Ajv => {\n  ajv.addKeyword(formatLimitDefinition)\n  return ajv\n}\n\nexport default formatLimitPlugin\n","import {\n  DefinedFormats,\n  FormatMode,\n  FormatName,\n  formatNames,\n  fastFormats,\n  fullFormats,\n} from \"./formats\"\nimport formatLimit from \"./limit\"\nimport type Ajv from \"ajv\"\nimport type {Plugin, Format} from \"ajv\"\nimport {_, Name} from \"ajv/dist/compile/codegen\"\n\nexport {FormatMode, FormatName} from \"./formats\"\nexport {LimitFormatError} from \"./limit\"\nexport interface FormatOptions {\n  mode?: FormatMode\n  formats?: FormatName[]\n  keywords?: boolean\n}\n\nexport type FormatsPluginOptions = FormatName[] | FormatOptions\n\nexport interface FormatsPlugin extends Plugin<FormatsPluginOptions> {\n  get: (format: FormatName, mode?: FormatMode) => Format\n}\n\nconst fullName = new Name(\"fullFormats\")\nconst fastName = new Name(\"fastFormats\")\n\nconst formatsPlugin: FormatsPlugin = (\n  ajv: Ajv,\n  opts: FormatsPluginOptions = {keywords: true}\n): Ajv => {\n  if (Array.isArray(opts)) {\n    addFormats(ajv, opts, fullFormats, fullName)\n    return ajv\n  }\n  const [formats, exportName] =\n    opts.mode === \"fast\" ? [fastFormats, fastName] : [fullFormats, fullName]\n  const list = opts.formats || formatNames\n  addFormats(ajv, list, formats, exportName)\n  if (opts.keywords) formatLimit(ajv)\n  return ajv\n}\n\nformatsPlugin.get = (name: FormatName, mode: FormatMode = \"full\"): Format => {\n  const formats = mode === \"fast\" ? fastFormats : fullFormats\n  const f = formats[name]\n  if (!f) throw new Error(`Unknown format \"${name}\"`)\n  return f\n}\n\nfunction addFormats(ajv: Ajv, list: FormatName[], fs: DefinedFormats, exportName: Name): void {\n  ajv.opts.code.formats ??= _`require(\"ajv-formats/dist/formats\").${exportName}`\n  for (const f of list) ajv.addFormat(f, fs[f])\n}\n\nmodule.exports = exports = formatsPlugin\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default formatsPlugin\n","'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a === b ? 0 : a < b ? -1 : 1\n  }\n\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    if (this.major < other.major) {\n      return -1\n    }\n    if (this.major > other.major) {\n      return 1\n    }\n    if (this.minor < other.minor) {\n      return -1\n    }\n    if (this.minor > other.minor) {\n      return 1\n    }\n    if (this.patch < other.patch) {\n      return -1\n    }\n    if (this.patch > other.patch) {\n      return 1\n    }\n    return 0\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n  if (typeof (options) === 'string') {\n    identifierBase = identifier\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(\n      version instanceof SemVer ? version.version : version,\n      options\n    ).inc(release, identifier, identifierBase).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // If the main part has no difference\n    if (lowVersion.compareMain(highVersion) === 0) {\n      if (lowVersion.minor && !lowVersion.patch) {\n        return 'minor'\n      }\n      return 'patch'\n    }\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are prereleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  comp = comp.replace(re[t.BUILD], '')\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let first = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!first) {\n        first = version\n      }\n    } else {\n      if (prev) {\n        set.push([first, prev])\n      }\n      prev = null\n      first = null\n    }\n  }\n  if (first) {\n    set.push([first, null])\n  }\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max) {\n      ranges.push(min)\n    } else if (!max && min === v[0]) {\n      ranges.push('*')\n    } else if (!max) {\n      ranges.push(`>=${min}`)\n    } else if (min === v[0]) {\n      ranges.push(`<=${max}`)\n    } else {\n      ranges.push(`${min} - ${max}`)\n    }\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If LT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = minimumVersionWithPreRelease\n    } else {\n      sub = minimumVersion\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = minimumVersion\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n  parse,\n  valid,\n  clean,\n  inc,\n  diff,\n  major,\n  minor,\n  patch,\n  prerelease,\n  compare,\n  rcompare,\n  compareLoose,\n  compareBuild,\n  sort,\n  rsort,\n  gt,\n  lt,\n  eq,\n  neq,\n  gte,\n  lte,\n  cmp,\n  coerce,\n  Comparator,\n  Range,\n  satisfies,\n  toComparators,\n  maxSatisfying,\n  minSatisfying,\n  minVersion,\n  validRange,\n  outside,\n  gtr,\n  ltr,\n  intersects,\n  simplifyRange,\n  subset,\n  SemVer,\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n  RELEASE_TYPES: constants.RELEASE_TYPES,\n  compareIdentifiers: identifiers.compareIdentifiers,\n  rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n    if (node && typeof node === 'object')\n        switch (node[NODE_TYPE]) {\n            case MAP:\n            case SEQ:\n                return true;\n        }\n    return false;\n}\nfunction isNode(node) {\n    if (node && typeof node === 'object')\n        switch (node[NODE_TYPE]) {\n            case ALIAS:\n            case MAP:\n            case SCALAR:\n            case SEQ:\n                return true;\n        }\n    return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n *   - `key`: For sequence values and map `Pair`, the node's index in the\n *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n *     `null` for the root node.\n *   - `node`: The current node.\n *   - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n *   - `undefined` (default): Do nothing and continue\n *   - `visit.SKIP`: Do not visit the children of this node, continue with next\n *     sibling\n *   - `visit.BREAK`: Terminate traversal completely\n *   - `visit.REMOVE`: Remove the current node, then continue with the next one\n *   - `Node`: Replace the current node, then continue by visiting it\n *   - `number`: While iterating the items of a sequence or map, set the index\n *     of the next step. This is useful especially if the index of the current\n *     node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n    const visitor_ = initVisitor(visitor);\n    if (identity.isDocument(node)) {\n        const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n        if (cd === REMOVE)\n            node.contents = null;\n    }\n    else\n        visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n    const ctrl = callVisitor(key, node, visitor, path);\n    if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n        replaceNode(key, path, ctrl);\n        return visit_(key, ctrl, visitor, path);\n    }\n    if (typeof ctrl !== 'symbol') {\n        if (identity.isCollection(node)) {\n            path = Object.freeze(path.concat(node));\n            for (let i = 0; i < node.items.length; ++i) {\n                const ci = visit_(i, node.items[i], visitor, path);\n                if (typeof ci === 'number')\n                    i = ci - 1;\n                else if (ci === BREAK)\n                    return BREAK;\n                else if (ci === REMOVE) {\n                    node.items.splice(i, 1);\n                    i -= 1;\n                }\n            }\n        }\n        else if (identity.isPair(node)) {\n            path = Object.freeze(path.concat(node));\n            const ck = visit_('key', node.key, visitor, path);\n            if (ck === BREAK)\n                return BREAK;\n            else if (ck === REMOVE)\n                node.key = null;\n            const cv = visit_('value', node.value, visitor, path);\n            if (cv === BREAK)\n                return BREAK;\n            else if (cv === REMOVE)\n                node.value = null;\n        }\n    }\n    return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n *   - `key`: For sequence values and map `Pair`, the node's index in the\n *     collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n *     `null` for the root node.\n *   - `node`: The current node.\n *   - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n *   - `Promise`: Must resolve to one of the following values\n *   - `undefined` (default): Do nothing and continue\n *   - `visit.SKIP`: Do not visit the children of this node, continue with next\n *     sibling\n *   - `visit.BREAK`: Terminate traversal completely\n *   - `visit.REMOVE`: Remove the current node, then continue with the next one\n *   - `Node`: Replace the current node, then continue by visiting it\n *   - `number`: While iterating the items of a sequence or map, set the index\n *     of the next step. This is useful especially if the index of the current\n *     node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n    const visitor_ = initVisitor(visitor);\n    if (identity.isDocument(node)) {\n        const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n        if (cd === REMOVE)\n            node.contents = null;\n    }\n    else\n        await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n    const ctrl = await callVisitor(key, node, visitor, path);\n    if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n        replaceNode(key, path, ctrl);\n        return visitAsync_(key, ctrl, visitor, path);\n    }\n    if (typeof ctrl !== 'symbol') {\n        if (identity.isCollection(node)) {\n            path = Object.freeze(path.concat(node));\n            for (let i = 0; i < node.items.length; ++i) {\n                const ci = await visitAsync_(i, node.items[i], visitor, path);\n                if (typeof ci === 'number')\n                    i = ci - 1;\n                else if (ci === BREAK)\n                    return BREAK;\n                else if (ci === REMOVE) {\n                    node.items.splice(i, 1);\n                    i -= 1;\n                }\n            }\n        }\n        else if (identity.isPair(node)) {\n            path = Object.freeze(path.concat(node));\n            const ck = await visitAsync_('key', node.key, visitor, path);\n            if (ck === BREAK)\n                return BREAK;\n            else if (ck === REMOVE)\n                node.key = null;\n            const cv = await visitAsync_('value', node.value, visitor, path);\n            if (cv === BREAK)\n                return BREAK;\n            else if (cv === REMOVE)\n                node.value = null;\n        }\n    }\n    return ctrl;\n}\nfunction initVisitor(visitor) {\n    if (typeof visitor === 'object' &&\n        (visitor.Collection || visitor.Node || visitor.Value)) {\n        return Object.assign({\n            Alias: visitor.Node,\n            Map: visitor.Node,\n            Scalar: visitor.Node,\n            Seq: visitor.Node\n        }, visitor.Value && {\n            Map: visitor.Value,\n            Scalar: visitor.Value,\n            Seq: visitor.Value\n        }, visitor.Collection && {\n            Map: visitor.Collection,\n            Seq: visitor.Collection\n        }, visitor);\n    }\n    return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n    if (typeof visitor === 'function')\n        return visitor(key, node, path);\n    if (identity.isMap(node))\n        return visitor.Map?.(key, node, path);\n    if (identity.isSeq(node))\n        return visitor.Seq?.(key, node, path);\n    if (identity.isPair(node))\n        return visitor.Pair?.(key, node, path);\n    if (identity.isScalar(node))\n        return visitor.Scalar?.(key, node, path);\n    if (identity.isAlias(node))\n        return visitor.Alias?.(key, node, path);\n    return undefined;\n}\nfunction replaceNode(key, path, node) {\n    const parent = path[path.length - 1];\n    if (identity.isCollection(parent)) {\n        parent.items[key] = node;\n    }\n    else if (identity.isPair(parent)) {\n        if (key === 'key')\n            parent.key = node;\n        else\n            parent.value = node;\n    }\n    else if (identity.isDocument(parent)) {\n        parent.contents = node;\n    }\n    else {\n        const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n        throw new Error(`Cannot replace node with ${pt} parent`);\n    }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n    '!': '%21',\n    ',': '%2C',\n    '[': '%5B',\n    ']': '%5D',\n    '{': '%7B',\n    '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n    constructor(yaml, tags) {\n        /**\n         * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n         * included in the document's stringified representation.\n         */\n        this.docStart = null;\n        /** The doc-end marker `...`.  */\n        this.docEnd = false;\n        this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n        this.tags = Object.assign({}, Directives.defaultTags, tags);\n    }\n    clone() {\n        const copy = new Directives(this.yaml, this.tags);\n        copy.docStart = this.docStart;\n        return copy;\n    }\n    /**\n     * During parsing, get a Directives instance for the current document and\n     * update the stream state according to the current version's spec.\n     */\n    atDocument() {\n        const res = new Directives(this.yaml, this.tags);\n        switch (this.yaml.version) {\n            case '1.1':\n                this.atNextDocument = true;\n                break;\n            case '1.2':\n                this.atNextDocument = false;\n                this.yaml = {\n                    explicit: Directives.defaultYaml.explicit,\n                    version: '1.2'\n                };\n                this.tags = Object.assign({}, Directives.defaultTags);\n                break;\n        }\n        return res;\n    }\n    /**\n     * @param onError - May be called even if the action was successful\n     * @returns `true` on success\n     */\n    add(line, onError) {\n        if (this.atNextDocument) {\n            this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n            this.tags = Object.assign({}, Directives.defaultTags);\n            this.atNextDocument = false;\n        }\n        const parts = line.trim().split(/[ \\t]+/);\n        const name = parts.shift();\n        switch (name) {\n            case '%TAG': {\n                if (parts.length !== 2) {\n                    onError(0, '%TAG directive should contain exactly two parts');\n                    if (parts.length < 2)\n                        return false;\n                }\n                const [handle, prefix] = parts;\n                this.tags[handle] = prefix;\n                return true;\n            }\n            case '%YAML': {\n                this.yaml.explicit = true;\n                if (parts.length !== 1) {\n                    onError(0, '%YAML directive should contain exactly one part');\n                    return false;\n                }\n                const [version] = parts;\n                if (version === '1.1' || version === '1.2') {\n                    this.yaml.version = version;\n                    return true;\n                }\n                else {\n                    const isValid = /^\\d+\\.\\d+$/.test(version);\n                    onError(6, `Unsupported YAML version ${version}`, isValid);\n                    return false;\n                }\n            }\n            default:\n                onError(0, `Unknown directive ${name}`, true);\n                return false;\n        }\n    }\n    /**\n     * Resolves a tag, matching handles to those defined in %TAG directives.\n     *\n     * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n     *   `'!local'` tag, or `null` if unresolvable.\n     */\n    tagName(source, onError) {\n        if (source === '!')\n            return '!'; // non-specific tag\n        if (source[0] !== '!') {\n            onError(`Not a valid tag: ${source}`);\n            return null;\n        }\n        if (source[1] === '<') {\n            const verbatim = source.slice(2, -1);\n            if (verbatim === '!' || verbatim === '!!') {\n                onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n                return null;\n            }\n            if (source[source.length - 1] !== '>')\n                onError('Verbatim tags must end with a >');\n            return verbatim;\n        }\n        const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n        if (!suffix)\n            onError(`The ${source} tag has no suffix`);\n        const prefix = this.tags[handle];\n        if (prefix) {\n            try {\n                return prefix + decodeURIComponent(suffix);\n            }\n            catch (error) {\n                onError(String(error));\n                return null;\n            }\n        }\n        if (handle === '!')\n            return source; // local tag\n        onError(`Could not resolve tag: ${source}`);\n        return null;\n    }\n    /**\n     * Given a fully resolved tag, returns its printable string form,\n     * taking into account current tag prefixes and defaults.\n     */\n    tagString(tag) {\n        for (const [handle, prefix] of Object.entries(this.tags)) {\n            if (tag.startsWith(prefix))\n                return handle + escapeTagName(tag.substring(prefix.length));\n        }\n        return tag[0] === '!' ? tag : `!<${tag}>`;\n    }\n    toString(doc) {\n        const lines = this.yaml.explicit\n            ? [`%YAML ${this.yaml.version || '1.2'}`]\n            : [];\n        const tagEntries = Object.entries(this.tags);\n        let tagNames;\n        if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n            const tags = {};\n            visit.visit(doc.contents, (_key, node) => {\n                if (identity.isNode(node) && node.tag)\n                    tags[node.tag] = true;\n            });\n            tagNames = Object.keys(tags);\n        }\n        else\n            tagNames = [];\n        for (const [handle, prefix] of tagEntries) {\n            if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n                continue;\n            if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n                lines.push(`%TAG ${handle} ${prefix}`);\n        }\n        return lines.join('\\n');\n    }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n    if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n        const sa = JSON.stringify(anchor);\n        const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n        throw new Error(msg);\n    }\n    return true;\n}\nfunction anchorNames(root) {\n    const anchors = new Set();\n    visit.visit(root, {\n        Value(_key, node) {\n            if (node.anchor)\n                anchors.add(node.anchor);\n        }\n    });\n    return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n    for (let i = 1; true; ++i) {\n        const name = `${prefix}${i}`;\n        if (!exclude.has(name))\n            return name;\n    }\n}\nfunction createNodeAnchors(doc, prefix) {\n    const aliasObjects = [];\n    const sourceObjects = new Map();\n    let prevAnchors = null;\n    return {\n        onAnchor: (source) => {\n            aliasObjects.push(source);\n            prevAnchors ?? (prevAnchors = anchorNames(doc));\n            const anchor = findNewAnchor(prefix, prevAnchors);\n            prevAnchors.add(anchor);\n            return anchor;\n        },\n        /**\n         * With circular references, the source node is only resolved after all\n         * of its child nodes are. This is why anchors are set only after all of\n         * the nodes have been created.\n         */\n        setAnchors: () => {\n            for (const source of aliasObjects) {\n                const ref = sourceObjects.get(source);\n                if (typeof ref === 'object' &&\n                    ref.anchor &&\n                    (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n                    ref.node.anchor = ref.anchor;\n                }\n                else {\n                    const error = new Error('Failed to resolve repeated object (this should not happen)');\n                    error.source = source;\n                    throw error;\n                }\n            }\n        },\n        sourceObjects\n    };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n    if (val && typeof val === 'object') {\n        if (Array.isArray(val)) {\n            for (let i = 0, len = val.length; i < len; ++i) {\n                const v0 = val[i];\n                const v1 = applyReviver(reviver, val, String(i), v0);\n                // eslint-disable-next-line @typescript-eslint/no-array-delete\n                if (v1 === undefined)\n                    delete val[i];\n                else if (v1 !== v0)\n                    val[i] = v1;\n            }\n        }\n        else if (val instanceof Map) {\n            for (const k of Array.from(val.keys())) {\n                const v0 = val.get(k);\n                const v1 = applyReviver(reviver, val, k, v0);\n                if (v1 === undefined)\n                    val.delete(k);\n                else if (v1 !== v0)\n                    val.set(k, v1);\n            }\n        }\n        else if (val instanceof Set) {\n            for (const v0 of Array.from(val)) {\n                const v1 = applyReviver(reviver, val, v0, v0);\n                if (v1 === undefined)\n                    val.delete(v0);\n                else if (v1 !== v0) {\n                    val.delete(v0);\n                    val.add(v1);\n                }\n            }\n        }\n        else {\n            for (const [k, v0] of Object.entries(val)) {\n                const v1 = applyReviver(reviver, val, k, v0);\n                if (v1 === undefined)\n                    delete val[k];\n                else if (v1 !== v0)\n                    val[k] = v1;\n            }\n        }\n    }\n    return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n *   as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n *   `{ keep: true }` is not set, output should be suitable for JSON\n *   stringification.\n */\nfunction toJS(value, arg, ctx) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n    if (Array.isArray(value))\n        return value.map((v, i) => toJS(v, String(i), ctx));\n    if (value && typeof value.toJSON === 'function') {\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n        if (!ctx || !identity.hasAnchor(value))\n            return value.toJSON(arg, ctx);\n        const data = { aliasCount: 0, count: 1, res: undefined };\n        ctx.anchors.set(value, data);\n        ctx.onCreate = res => {\n            data.res = res;\n            delete ctx.onCreate;\n        };\n        const res = value.toJSON(arg, ctx);\n        if (ctx.onCreate)\n            ctx.onCreate(res);\n        return res;\n    }\n    if (typeof value === 'bigint' && !ctx?.keep)\n        return Number(value);\n    return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n    constructor(type) {\n        Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n    }\n    /** Create a copy of this node.  */\n    clone() {\n        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n        if (this.range)\n            copy.range = this.range.slice();\n        return copy;\n    }\n    /** A plain JavaScript representation of this node. */\n    toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n        if (!identity.isDocument(doc))\n            throw new TypeError('A document argument is required');\n        const ctx = {\n            anchors: new Map(),\n            doc,\n            keep: true,\n            mapAsMap: mapAsMap === true,\n            mapKeyWarned: false,\n            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n        };\n        const res = toJS.toJS(this, '', ctx);\n        if (typeof onAnchor === 'function')\n            for (const { count, res } of ctx.anchors.values())\n                onAnchor(res, count);\n        return typeof reviver === 'function'\n            ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n            : res;\n    }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n    constructor(source) {\n        super(identity.ALIAS);\n        this.source = source;\n        Object.defineProperty(this, 'tag', {\n            set() {\n                throw new Error('Alias nodes cannot have tags');\n            }\n        });\n    }\n    /**\n     * Resolve the value of this alias within `doc`, finding the last\n     * instance of the `source` anchor before this node.\n     */\n    resolve(doc, ctx) {\n        if (ctx?.maxAliasCount === 0)\n            throw new ReferenceError('Alias resolution is disabled');\n        let nodes;\n        if (ctx?.aliasResolveCache) {\n            nodes = ctx.aliasResolveCache;\n        }\n        else {\n            nodes = [];\n            visit.visit(doc, {\n                Node: (_key, node) => {\n                    if (identity.isAlias(node) || identity.hasAnchor(node))\n                        nodes.push(node);\n                }\n            });\n            if (ctx)\n                ctx.aliasResolveCache = nodes;\n        }\n        let found = undefined;\n        for (const node of nodes) {\n            if (node === this)\n                break;\n            if (node.anchor === this.source)\n                found = node;\n        }\n        return found;\n    }\n    toJSON(_arg, ctx) {\n        if (!ctx)\n            return { source: this.source };\n        const { anchors, doc, maxAliasCount } = ctx;\n        const source = this.resolve(doc, ctx);\n        if (!source) {\n            const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n            throw new ReferenceError(msg);\n        }\n        let data = anchors.get(source);\n        if (!data) {\n            // Resolve anchors for Node.prototype.toJS()\n            toJS.toJS(source, null, ctx);\n            data = anchors.get(source);\n        }\n        /* istanbul ignore if */\n        if (data?.res === undefined) {\n            const msg = 'This should not happen: Alias anchor was not resolved?';\n            throw new ReferenceError(msg);\n        }\n        if (maxAliasCount >= 0) {\n            data.count += 1;\n            if (data.aliasCount === 0)\n                data.aliasCount = getAliasCount(doc, source, anchors);\n            if (data.count * data.aliasCount > maxAliasCount) {\n                const msg = 'Excessive alias count indicates a resource exhaustion attack';\n                throw new ReferenceError(msg);\n            }\n        }\n        return data.res;\n    }\n    toString(ctx, _onComment, _onChompKeep) {\n        const src = `*${this.source}`;\n        if (ctx) {\n            anchors.anchorIsValid(this.source);\n            if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n                const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n                throw new Error(msg);\n            }\n            if (ctx.implicitKey)\n                return `${src} `;\n        }\n        return src;\n    }\n}\nfunction getAliasCount(doc, node, anchors) {\n    if (identity.isAlias(node)) {\n        const source = node.resolve(doc);\n        const anchor = anchors && source && anchors.get(source);\n        return anchor ? anchor.count * anchor.aliasCount : 0;\n    }\n    else if (identity.isCollection(node)) {\n        let count = 0;\n        for (const item of node.items) {\n            const c = getAliasCount(doc, item, anchors);\n            if (c > count)\n                count = c;\n        }\n        return count;\n    }\n    else if (identity.isPair(node)) {\n        const kc = getAliasCount(doc, node.key, anchors);\n        const vc = getAliasCount(doc, node.value, anchors);\n        return Math.max(kc, vc);\n    }\n    return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n    constructor(value) {\n        super(identity.SCALAR);\n        this.value = value;\n    }\n    toJSON(arg, ctx) {\n        return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n    }\n    toString() {\n        return String(this.value);\n    }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n    if (tagName) {\n        const match = tags.filter(t => t.tag === tagName);\n        const tagObj = match.find(t => !t.format) ?? match[0];\n        if (!tagObj)\n            throw new Error(`Tag ${tagName} not found`);\n        return tagObj;\n    }\n    return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n    if (identity.isDocument(value))\n        value = value.contents;\n    if (identity.isNode(value))\n        return value;\n    if (identity.isPair(value)) {\n        const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n        map.items.push(value);\n        return map;\n    }\n    if (value instanceof String ||\n        value instanceof Number ||\n        value instanceof Boolean ||\n        (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n    ) {\n        // https://tc39.es/ecma262/#sec-serializejsonproperty\n        value = value.valueOf();\n    }\n    const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n    // Detect duplicate references to the same object & use Alias nodes for all\n    // after first. The `ref` wrapper allows for circular references to resolve.\n    let ref = undefined;\n    if (aliasDuplicateObjects && value && typeof value === 'object') {\n        ref = sourceObjects.get(value);\n        if (ref) {\n            ref.anchor ?? (ref.anchor = onAnchor(value));\n            return new Alias.Alias(ref.anchor);\n        }\n        else {\n            ref = { anchor: null, node: null };\n            sourceObjects.set(value, ref);\n        }\n    }\n    if (tagName?.startsWith('!!'))\n        tagName = defaultTagPrefix + tagName.slice(2);\n    let tagObj = findTagObject(value, tagName, schema.tags);\n    if (!tagObj) {\n        if (value && typeof value.toJSON === 'function') {\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n            value = value.toJSON();\n        }\n        if (!value || typeof value !== 'object') {\n            const node = new Scalar.Scalar(value);\n            if (ref)\n                ref.node = node;\n            return node;\n        }\n        tagObj =\n            value instanceof Map\n                ? schema[identity.MAP]\n                : Symbol.iterator in Object(value)\n                    ? schema[identity.SEQ]\n                    : schema[identity.MAP];\n    }\n    if (onTagObj) {\n        onTagObj(tagObj);\n        delete ctx.onTagObj;\n    }\n    const node = tagObj?.createNode\n        ? tagObj.createNode(ctx.schema, value, ctx)\n        : typeof tagObj?.nodeClass?.from === 'function'\n            ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n            : new Scalar.Scalar(value);\n    if (tagName)\n        node.tag = tagName;\n    else if (!tagObj.default)\n        node.tag = tagObj.tag;\n    if (ref)\n        ref.node = node;\n    return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n    let v = value;\n    for (let i = path.length - 1; i >= 0; --i) {\n        const k = path[i];\n        if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n            const a = [];\n            a[k] = v;\n            v = a;\n        }\n        else {\n            v = new Map([[k, v]]);\n        }\n    }\n    return createNode.createNode(v, undefined, {\n        aliasDuplicateObjects: false,\n        keepUndefined: false,\n        onAnchor: () => {\n            throw new Error('This should not happen, please report a bug.');\n        },\n        schema,\n        sourceObjects: new Map()\n    });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n    (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n    constructor(type, schema) {\n        super(type);\n        Object.defineProperty(this, 'schema', {\n            value: schema,\n            configurable: true,\n            enumerable: false,\n            writable: true\n        });\n    }\n    /**\n     * Create a copy of this collection.\n     *\n     * @param schema - If defined, overwrites the original's schema\n     */\n    clone(schema) {\n        const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n        if (schema)\n            copy.schema = schema;\n        copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n        if (this.range)\n            copy.range = this.range.slice();\n        return copy;\n    }\n    /**\n     * Adds a value to the collection. For `!!map` and `!!omap` the value must\n     * be a Pair instance or a `{ key, value }` object, which may not have a key\n     * that already exists in the map.\n     */\n    addIn(path, value) {\n        if (isEmptyPath(path))\n            this.add(value);\n        else {\n            const [key, ...rest] = path;\n            const node = this.get(key, true);\n            if (identity.isCollection(node))\n                node.addIn(rest, value);\n            else if (node === undefined && this.schema)\n                this.set(key, collectionFromPath(this.schema, rest, value));\n            else\n                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n        }\n    }\n    /**\n     * Removes a value from the collection.\n     * @returns `true` if the item was found and removed.\n     */\n    deleteIn(path) {\n        const [key, ...rest] = path;\n        if (rest.length === 0)\n            return this.delete(key);\n        const node = this.get(key, true);\n        if (identity.isCollection(node))\n            return node.deleteIn(rest);\n        else\n            throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n    }\n    /**\n     * Returns item at `key`, or `undefined` if not found. By default unwraps\n     * scalar values from their surrounding node; to disable set `keepScalar` to\n     * `true` (collections are always returned intact).\n     */\n    getIn(path, keepScalar) {\n        const [key, ...rest] = path;\n        const node = this.get(key, true);\n        if (rest.length === 0)\n            return !keepScalar && identity.isScalar(node) ? node.value : node;\n        else\n            return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n    }\n    hasAllNullValues(allowScalar) {\n        return this.items.every(node => {\n            if (!identity.isPair(node))\n                return false;\n            const n = node.value;\n            return (n == null ||\n                (allowScalar &&\n                    identity.isScalar(n) &&\n                    n.value == null &&\n                    !n.commentBefore &&\n                    !n.comment &&\n                    !n.tag));\n        });\n    }\n    /**\n     * Checks if the collection includes a value with the key `key`.\n     */\n    hasIn(path) {\n        const [key, ...rest] = path;\n        if (rest.length === 0)\n            return this.has(key);\n        const node = this.get(key, true);\n        return identity.isCollection(node) ? node.hasIn(rest) : false;\n    }\n    /**\n     * Sets a value in this collection. For `!!set`, `value` needs to be a\n     * boolean to add/remove the item from the set.\n     */\n    setIn(path, value) {\n        const [key, ...rest] = path;\n        if (rest.length === 0) {\n            this.set(key, value);\n        }\n        else {\n            const node = this.get(key, true);\n            if (identity.isCollection(node))\n                node.setIn(rest, value);\n            else if (node === undefined && this.schema)\n                this.set(key, collectionFromPath(this.schema, rest, value));\n            else\n                throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n        }\n    }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n    if (/^\\n+$/.test(comment))\n        return comment.substring(1);\n    return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n    ? indentComment(comment, indent)\n    : comment.includes('\\n')\n        ? '\\n' + indentComment(comment, indent)\n        : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n    if (!lineWidth || lineWidth < 0)\n        return text;\n    if (lineWidth < minContentWidth)\n        minContentWidth = 0;\n    const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n    if (text.length <= endStep)\n        return text;\n    const folds = [];\n    const escapedFolds = {};\n    let end = lineWidth - indent.length;\n    if (typeof indentAtStart === 'number') {\n        if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n            folds.push(0);\n        else\n            end = lineWidth - indentAtStart;\n    }\n    let split = undefined;\n    let prev = undefined;\n    let overflow = false;\n    let i = -1;\n    let escStart = -1;\n    let escEnd = -1;\n    if (mode === FOLD_BLOCK) {\n        i = consumeMoreIndentedLines(text, i, indent.length);\n        if (i !== -1)\n            end = i + endStep;\n    }\n    for (let ch; (ch = text[(i += 1)]);) {\n        if (mode === FOLD_QUOTED && ch === '\\\\') {\n            escStart = i;\n            switch (text[i + 1]) {\n                case 'x':\n                    i += 3;\n                    break;\n                case 'u':\n                    i += 5;\n                    break;\n                case 'U':\n                    i += 9;\n                    break;\n                default:\n                    i += 1;\n            }\n            escEnd = i;\n        }\n        if (ch === '\\n') {\n            if (mode === FOLD_BLOCK)\n                i = consumeMoreIndentedLines(text, i, indent.length);\n            end = i + indent.length + endStep;\n            split = undefined;\n        }\n        else {\n            if (ch === ' ' &&\n                prev &&\n                prev !== ' ' &&\n                prev !== '\\n' &&\n                prev !== '\\t') {\n                // space surrounded by non-space can be replaced with newline + indent\n                const next = text[i + 1];\n                if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n                    split = i;\n            }\n            if (i >= end) {\n                if (split) {\n                    folds.push(split);\n                    end = split + endStep;\n                    split = undefined;\n                }\n                else if (mode === FOLD_QUOTED) {\n                    // white-space collected at end may stretch past lineWidth\n                    while (prev === ' ' || prev === '\\t') {\n                        prev = ch;\n                        ch = text[(i += 1)];\n                        overflow = true;\n                    }\n                    // Account for newline escape, but don't break preceding escape\n                    const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n                    // Bail out if lineWidth & minContentWidth are shorter than an escape string\n                    if (escapedFolds[j])\n                        return text;\n                    folds.push(j);\n                    escapedFolds[j] = true;\n                    end = j + endStep;\n                    split = undefined;\n                }\n                else {\n                    overflow = true;\n                }\n            }\n        }\n        prev = ch;\n    }\n    if (overflow && onOverflow)\n        onOverflow();\n    if (folds.length === 0)\n        return text;\n    if (onFold)\n        onFold();\n    let res = text.slice(0, folds[0]);\n    for (let i = 0; i < folds.length; ++i) {\n        const fold = folds[i];\n        const end = folds[i + 1] || text.length;\n        if (fold === 0)\n            res = `\\n${indent}${text.slice(0, end)}`;\n        else {\n            if (mode === FOLD_QUOTED && escapedFolds[fold])\n                res += `${text[fold]}\\\\`;\n            res += `\\n${indent}${text.slice(fold + 1, end)}`;\n        }\n    }\n    return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n    let end = i;\n    let start = i + 1;\n    let ch = text[start];\n    while (ch === ' ' || ch === '\\t') {\n        if (i < start + indent) {\n            ch = text[++i];\n        }\n        else {\n            do {\n                ch = text[++i];\n            } while (ch && ch !== '\\n');\n            end = i;\n            start = i + 1;\n            ch = text[start];\n        }\n    }\n    return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n    indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n    lineWidth: ctx.options.lineWidth,\n    minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n    if (!lineWidth || lineWidth < 0)\n        return false;\n    const limit = lineWidth - indentLength;\n    const strLen = str.length;\n    if (strLen <= limit)\n        return false;\n    for (let i = 0, start = 0; i < strLen; ++i) {\n        if (str[i] === '\\n') {\n            if (i - start > limit)\n                return true;\n            start = i + 1;\n            if (strLen - start <= limit)\n                return false;\n        }\n    }\n    return true;\n}\nfunction doubleQuotedString(value, ctx) {\n    const json = JSON.stringify(value);\n    if (ctx.options.doubleQuotedAsJSON)\n        return json;\n    const { implicitKey } = ctx;\n    const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');\n    let str = '';\n    let start = 0;\n    for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n        if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n            // space before newline needs to be escaped to not be folded\n            str += json.slice(start, i) + '\\\\ ';\n            i += 1;\n            start = i;\n            ch = '\\\\';\n        }\n        if (ch === '\\\\')\n            switch (json[i + 1]) {\n                case 'u':\n                    {\n                        str += json.slice(start, i);\n                        const code = json.substr(i + 2, 4);\n                        switch (code) {\n                            case '0000':\n                                str += '\\\\0';\n                                break;\n                            case '0007':\n                                str += '\\\\a';\n                                break;\n                            case '000b':\n                                str += '\\\\v';\n                                break;\n                            case '001b':\n                                str += '\\\\e';\n                                break;\n                            case '0085':\n                                str += '\\\\N';\n                                break;\n                            case '00a0':\n                                str += '\\\\_';\n                                break;\n                            case '2028':\n                                str += '\\\\L';\n                                break;\n                            case '2029':\n                                str += '\\\\P';\n                                break;\n                            default:\n                                if (code.substr(0, 2) === '00')\n                                    str += '\\\\x' + code.substr(2);\n                                else\n                                    str += json.substr(i, 6);\n                        }\n                        i += 5;\n                        start = i + 1;\n                    }\n                    break;\n                case 'n':\n                    if (implicitKey ||\n                        json[i + 2] === '\"' ||\n                        json.length < minMultiLineLength) {\n                        i += 1;\n                    }\n                    else {\n                        // folding will eat first newline\n                        str += json.slice(start, i) + '\\n\\n';\n                        while (json[i + 2] === '\\\\' &&\n                            json[i + 3] === 'n' &&\n                            json[i + 4] !== '\"') {\n                            str += '\\n';\n                            i += 2;\n                        }\n                        str += indent;\n                        // space after newline needs to be escaped to not be folded\n                        if (json[i + 2] === ' ')\n                            str += '\\\\';\n                        i += 1;\n                        start = i + 1;\n                    }\n                    break;\n                default:\n                    i += 1;\n            }\n    }\n    str = start ? str + json.slice(start) : json;\n    return implicitKey\n        ? str\n        : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n    if (ctx.options.singleQuote === false ||\n        (ctx.implicitKey && value.includes('\\n')) ||\n        /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n    )\n        return doubleQuotedString(value, ctx);\n    const indent = ctx.indent || (containsDocumentMarker(value) ? '  ' : '');\n    const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n    return ctx.implicitKey\n        ? res\n        : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n    const { singleQuote } = ctx.options;\n    let qs;\n    if (singleQuote === false)\n        qs = doubleQuotedString;\n    else {\n        const hasDouble = value.includes('\"');\n        const hasSingle = value.includes(\"'\");\n        if (hasDouble && !hasSingle)\n            qs = singleQuotedString;\n        else if (hasSingle && !hasDouble)\n            qs = doubleQuotedString;\n        else\n            qs = singleQuote ? singleQuotedString : doubleQuotedString;\n    }\n    return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n    blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n    blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n    const { blockQuote, commentString, lineWidth } = ctx.options;\n    // 1. Block can't end in whitespace unless the last line is non-empty.\n    // 2. Strings consisting of only whitespace are best rendered explicitly.\n    if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n        return quotedString(value, ctx);\n    }\n    const indent = ctx.indent ||\n        (ctx.forceBlockIndent || containsDocumentMarker(value) ? '  ' : '');\n    const literal = blockQuote === 'literal'\n        ? true\n        : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED\n            ? false\n            : type === Scalar.Scalar.BLOCK_LITERAL\n                ? true\n                : !lineLengthOverLimit(value, lineWidth, indent.length);\n    if (!value)\n        return literal ? '|\\n' : '>\\n';\n    // determine chomping from whitespace at value end\n    let chomp;\n    let endStart;\n    for (endStart = value.length; endStart > 0; --endStart) {\n        const ch = value[endStart - 1];\n        if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n            break;\n    }\n    let end = value.substring(endStart);\n    const endNlPos = end.indexOf('\\n');\n    if (endNlPos === -1) {\n        chomp = '-'; // strip\n    }\n    else if (value === end || endNlPos !== end.length - 1) {\n        chomp = '+'; // keep\n        if (onChompKeep)\n            onChompKeep();\n    }\n    else {\n        chomp = ''; // clip\n    }\n    if (end) {\n        value = value.slice(0, -end.length);\n        if (end[end.length - 1] === '\\n')\n            end = end.slice(0, -1);\n        end = end.replace(blockEndNewlines, `$&${indent}`);\n    }\n    // determine indent indicator from whitespace at value start\n    let startWithSpace = false;\n    let startEnd;\n    let startNlPos = -1;\n    for (startEnd = 0; startEnd < value.length; ++startEnd) {\n        const ch = value[startEnd];\n        if (ch === ' ')\n            startWithSpace = true;\n        else if (ch === '\\n')\n            startNlPos = startEnd;\n        else\n            break;\n    }\n    let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n    if (start) {\n        value = value.substring(start.length);\n        start = start.replace(/\\n+/g, `$&${indent}`);\n    }\n    const indentSize = indent ? '2' : '1'; // root is at -1\n    // Leading | or > is added later\n    let header = (startWithSpace ? indentSize : '') + chomp;\n    if (comment) {\n        header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n        if (onComment)\n            onComment();\n    }\n    if (!literal) {\n        const foldedValue = value\n            .replace(/\\n+/g, '\\n$&')\n            .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n            //                ^ more-ind. ^ empty     ^ capture next empty lines only at end of indent\n            .replace(/\\n+/g, `$&${indent}`);\n        let literalFallback = false;\n        const foldOptions = getFoldOptions(ctx, true);\n        if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n            foldOptions.onOverflow = () => {\n                literalFallback = true;\n            };\n        }\n        const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n        if (!literalFallback)\n            return `>${header}\\n${indent}${body}`;\n    }\n    value = value.replace(/\\n+/g, `$&${indent}`);\n    return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n    const { type, value } = item;\n    const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n    if ((implicitKey && value.includes('\\n')) ||\n        (inFlow && /[[\\]{},]/.test(value))) {\n        return quotedString(value, ctx);\n    }\n    if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n        // not allowed:\n        // - '-' or '?'\n        // - start with an indicator character (except [?:-]) or /[?-] /\n        // - '\\n ', ': ' or ' \\n' anywhere\n        // - '#' not preceded by a non-space char\n        // - end with ' ' or ':'\n        return implicitKey || inFlow || !value.includes('\\n')\n            ? quotedString(value, ctx)\n            : blockString(item, ctx, onComment, onChompKeep);\n    }\n    if (!implicitKey &&\n        !inFlow &&\n        type !== Scalar.Scalar.PLAIN &&\n        value.includes('\\n')) {\n        // Where allowed & type not set explicitly, prefer block style for multiline strings\n        return blockString(item, ctx, onComment, onChompKeep);\n    }\n    if (containsDocumentMarker(value)) {\n        if (indent === '') {\n            ctx.forceBlockIndent = true;\n            return blockString(item, ctx, onComment, onChompKeep);\n        }\n        else if (implicitKey && indent === indentStep) {\n            return quotedString(value, ctx);\n        }\n    }\n    const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n    // Verify that output will be parsed as a string, as e.g. plain numbers and\n    // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n    // and others in v1.1.\n    if (actualString) {\n        const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n        const { compat, tags } = ctx.doc.schema;\n        if (tags.some(test) || compat?.some(test))\n            return quotedString(value, ctx);\n    }\n    return implicitKey\n        ? str\n        : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n    const { implicitKey, inFlow } = ctx;\n    const ss = typeof item.value === 'string'\n        ? item\n        : Object.assign({}, item, { value: String(item.value) });\n    let { type } = item;\n    if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n        // force double quotes on control characters & unpaired surrogates\n        if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n            type = Scalar.Scalar.QUOTE_DOUBLE;\n    }\n    const _stringify = (_type) => {\n        switch (_type) {\n            case Scalar.Scalar.BLOCK_FOLDED:\n            case Scalar.Scalar.BLOCK_LITERAL:\n                return implicitKey || inFlow\n                    ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n                    : blockString(ss, ctx, onComment, onChompKeep);\n            case Scalar.Scalar.QUOTE_DOUBLE:\n                return doubleQuotedString(ss.value, ctx);\n            case Scalar.Scalar.QUOTE_SINGLE:\n                return singleQuotedString(ss.value, ctx);\n            case Scalar.Scalar.PLAIN:\n                return plainString(ss, ctx, onComment, onChompKeep);\n            default:\n                return null;\n        }\n    };\n    let res = _stringify(type);\n    if (res === null) {\n        const { defaultKeyType, defaultStringType } = ctx.options;\n        const t = (implicitKey && defaultKeyType) || defaultStringType;\n        res = _stringify(t);\n        if (res === null)\n            throw new Error(`Unsupported default string type ${t}`);\n    }\n    return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n    const opt = Object.assign({\n        blockQuote: true,\n        commentString: stringifyComment.stringifyComment,\n        defaultKeyType: null,\n        defaultStringType: 'PLAIN',\n        directives: null,\n        doubleQuotedAsJSON: false,\n        doubleQuotedMinMultiLineLength: 40,\n        falseStr: 'false',\n        flowCollectionPadding: true,\n        indentSeq: true,\n        lineWidth: 80,\n        minContentWidth: 20,\n        nullStr: 'null',\n        simpleKeys: false,\n        singleQuote: null,\n        trailingComma: false,\n        trueStr: 'true',\n        verifyAliasOrder: true\n    }, doc.schema.toStringOptions, options);\n    let inFlow;\n    switch (opt.collectionStyle) {\n        case 'block':\n            inFlow = false;\n            break;\n        case 'flow':\n            inFlow = true;\n            break;\n        default:\n            inFlow = null;\n    }\n    return {\n        anchors: new Set(),\n        doc,\n        flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n        indent: '',\n        indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : '  ',\n        inFlow,\n        options: opt\n    };\n}\nfunction getTagObject(tags, item) {\n    if (item.tag) {\n        const match = tags.filter(t => t.tag === item.tag);\n        if (match.length > 0)\n            return match.find(t => t.format === item.format) ?? match[0];\n    }\n    let tagObj = undefined;\n    let obj;\n    if (identity.isScalar(item)) {\n        obj = item.value;\n        let match = tags.filter(t => t.identify?.(obj));\n        if (match.length > 1) {\n            const testMatch = match.filter(t => t.test);\n            if (testMatch.length > 0)\n                match = testMatch;\n        }\n        tagObj =\n            match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n    }\n    else {\n        obj = item;\n        tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n    }\n    if (!tagObj) {\n        const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n        throw new Error(`Tag not resolved for ${name} value`);\n    }\n    return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n    if (!doc.directives)\n        return '';\n    const props = [];\n    const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n    if (anchor && anchors.anchorIsValid(anchor)) {\n        anchors$1.add(anchor);\n        props.push(`&${anchor}`);\n    }\n    const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n    if (tag)\n        props.push(doc.directives.tagString(tag));\n    return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n    if (identity.isPair(item))\n        return item.toString(ctx, onComment, onChompKeep);\n    if (identity.isAlias(item)) {\n        if (ctx.doc.directives)\n            return item.toString(ctx);\n        if (ctx.resolvedAliases?.has(item)) {\n            throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n        }\n        else {\n            if (ctx.resolvedAliases)\n                ctx.resolvedAliases.add(item);\n            else\n                ctx.resolvedAliases = new Set([item]);\n            item = item.resolve(ctx.doc);\n        }\n    }\n    let tagObj = undefined;\n    const node = identity.isNode(item)\n        ? item\n        : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n    tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n    const props = stringifyProps(node, tagObj, ctx);\n    if (props.length > 0)\n        ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n    const str = typeof tagObj.stringify === 'function'\n        ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n        : identity.isScalar(node)\n            ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n            : node.toString(ctx, onComment, onChompKeep);\n    if (!props)\n        return str;\n    return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n        ? `${props} ${str}`\n        : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n    const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n    let keyComment = (identity.isNode(key) && key.comment) || null;\n    if (simpleKeys) {\n        if (keyComment) {\n            throw new Error('With simple keys, key nodes cannot have comments');\n        }\n        if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n            const msg = 'With simple keys, collection cannot be used as a key value';\n            throw new Error(msg);\n        }\n    }\n    let explicitKey = !simpleKeys &&\n        (!key ||\n            (keyComment && value == null && !ctx.inFlow) ||\n            identity.isCollection(key) ||\n            (identity.isScalar(key)\n                ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n                : typeof key === 'object'));\n    ctx = Object.assign({}, ctx, {\n        allNullValues: false,\n        implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n        indent: indent + indentStep\n    });\n    let keyCommentDone = false;\n    let chompKeep = false;\n    let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n    if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n        if (simpleKeys)\n            throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n        explicitKey = true;\n    }\n    if (ctx.inFlow) {\n        if (allNullValues || value == null) {\n            if (keyCommentDone && onComment)\n                onComment();\n            return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n        }\n    }\n    else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n        str = `? ${str}`;\n        if (keyComment && !keyCommentDone) {\n            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n        }\n        else if (chompKeep && onChompKeep)\n            onChompKeep();\n        return str;\n    }\n    if (keyCommentDone)\n        keyComment = null;\n    if (explicitKey) {\n        if (keyComment)\n            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n        str = `? ${str}\\n${indent}:`;\n    }\n    else {\n        str = `${str}:`;\n        if (keyComment)\n            str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n    }\n    let vsb, vcb, valueComment;\n    if (identity.isNode(value)) {\n        vsb = !!value.spaceBefore;\n        vcb = value.commentBefore;\n        valueComment = value.comment;\n    }\n    else {\n        vsb = false;\n        vcb = null;\n        valueComment = null;\n        if (value && typeof value === 'object')\n            value = doc.createNode(value);\n    }\n    ctx.implicitKey = false;\n    if (!explicitKey && !keyComment && identity.isScalar(value))\n        ctx.indentAtStart = str.length + 1;\n    chompKeep = false;\n    if (!indentSeq &&\n        indentStep.length >= 2 &&\n        !ctx.inFlow &&\n        !explicitKey &&\n        identity.isSeq(value) &&\n        !value.flow &&\n        !value.tag &&\n        !value.anchor) {\n        // If indentSeq === false, consider '- ' as part of indentation where possible\n        ctx.indent = ctx.indent.substring(2);\n    }\n    let valueCommentDone = false;\n    const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n    let ws = ' ';\n    if (keyComment || vsb || vcb) {\n        ws = vsb ? '\\n' : '';\n        if (vcb) {\n            const cs = commentString(vcb);\n            ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n        }\n        if (valueStr === '' && !ctx.inFlow) {\n            if (ws === '\\n' && valueComment)\n                ws = '\\n\\n';\n        }\n        else {\n            ws += `\\n${ctx.indent}`;\n        }\n    }\n    else if (!explicitKey && identity.isCollection(value)) {\n        const vs0 = valueStr[0];\n        const nl0 = valueStr.indexOf('\\n');\n        const hasNewline = nl0 !== -1;\n        const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n        if (hasNewline || !flow) {\n            let hasPropsLine = false;\n            if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n                let sp0 = valueStr.indexOf(' ');\n                if (vs0 === '&' &&\n                    sp0 !== -1 &&\n                    sp0 < nl0 &&\n                    valueStr[sp0 + 1] === '!') {\n                    sp0 = valueStr.indexOf(' ', sp0 + 1);\n                }\n                if (sp0 === -1 || nl0 < sp0)\n                    hasPropsLine = true;\n            }\n            if (!hasPropsLine)\n                ws = `\\n${ctx.indent}`;\n        }\n    }\n    else if (valueStr === '' || valueStr[0] === '\\n') {\n        ws = '';\n    }\n    str += ws + valueStr;\n    if (ctx.inFlow) {\n        if (valueCommentDone && onComment)\n            onComment();\n    }\n    else if (valueComment && !valueCommentDone) {\n        str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n    }\n    else if (chompKeep && onChompKeep) {\n        onChompKeep();\n    }\n    return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n    if (logLevel === 'debug')\n        console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n    if (logLevel === 'debug' || logLevel === 'warn') {\n        if (typeof node_process.emitWarning === 'function')\n            node_process.emitWarning(warning);\n        else\n            console.warn(warning);\n    }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n    identify: value => value === MERGE_KEY ||\n        (typeof value === 'symbol' && value.description === MERGE_KEY),\n    default: 'key',\n    tag: 'tag:yaml.org,2002:merge',\n    test: /^<<$/,\n    resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n        addToJSMap: addMergeToJSMap\n    }),\n    stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n    (identity.isScalar(key) &&\n        (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n        merge.identify(key.value))) &&\n    ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n    const source = resolveAliasValue(ctx, value);\n    if (identity.isSeq(source))\n        for (const it of source.items)\n            mergeValue(ctx, map, it);\n    else if (Array.isArray(source))\n        for (const it of source)\n            mergeValue(ctx, map, it);\n    else\n        mergeValue(ctx, map, source);\n}\nfunction mergeValue(ctx, map, value) {\n    const source = resolveAliasValue(ctx, value);\n    if (!identity.isMap(source))\n        throw new Error('Merge sources must be maps or map aliases');\n    const srcMap = source.toJSON(null, ctx, Map);\n    for (const [key, value] of srcMap) {\n        if (map instanceof Map) {\n            if (!map.has(key))\n                map.set(key, value);\n        }\n        else if (map instanceof Set) {\n            map.add(key);\n        }\n        else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n            Object.defineProperty(map, key, {\n                value,\n                writable: true,\n                enumerable: true,\n                configurable: true\n            });\n        }\n    }\n    return map;\n}\nfunction resolveAliasValue(ctx, value) {\n    return ctx && identity.isAlias(value) ? value.resolve(ctx.doc, ctx) : value;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n    if (identity.isNode(key) && key.addToJSMap)\n        key.addToJSMap(ctx, map, value);\n    // TODO: Should drop this special case for bare << handling\n    else if (merge.isMergeKey(ctx, key))\n        merge.addMergeToJSMap(ctx, map, value);\n    else {\n        const jsKey = toJS.toJS(key, '', ctx);\n        if (map instanceof Map) {\n            map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n        }\n        else if (map instanceof Set) {\n            map.add(jsKey);\n        }\n        else {\n            const stringKey = stringifyKey(key, jsKey, ctx);\n            const jsValue = toJS.toJS(value, stringKey, ctx);\n            if (stringKey in map)\n                Object.defineProperty(map, stringKey, {\n                    value: jsValue,\n                    writable: true,\n                    enumerable: true,\n                    configurable: true\n                });\n            else\n                map[stringKey] = jsValue;\n        }\n    }\n    return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n    if (jsKey === null)\n        return '';\n    // eslint-disable-next-line @typescript-eslint/no-base-to-string\n    if (typeof jsKey !== 'object')\n        return String(jsKey);\n    if (identity.isNode(key) && ctx?.doc) {\n        const strCtx = stringify.createStringifyContext(ctx.doc, {});\n        strCtx.anchors = new Set();\n        for (const node of ctx.anchors.keys())\n            strCtx.anchors.add(node.anchor);\n        strCtx.inFlow = true;\n        strCtx.inStringifyKey = true;\n        const strKey = key.toString(strCtx);\n        if (!ctx.mapKeyWarned) {\n            let jsonStr = JSON.stringify(strKey);\n            if (jsonStr.length > 40)\n                jsonStr = jsonStr.substring(0, 36) + '...\"';\n            log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n            ctx.mapKeyWarned = true;\n        }\n        return strKey;\n    }\n    return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n    const k = createNode.createNode(key, undefined, ctx);\n    const v = createNode.createNode(value, undefined, ctx);\n    return new Pair(k, v);\n}\nclass Pair {\n    constructor(key, value = null) {\n        Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n        this.key = key;\n        this.value = value;\n    }\n    clone(schema) {\n        let { key, value } = this;\n        if (identity.isNode(key))\n            key = key.clone(schema);\n        if (identity.isNode(value))\n            value = value.clone(schema);\n        return new Pair(key, value);\n    }\n    toJSON(_, ctx) {\n        const pair = ctx?.mapAsMap ? new Map() : {};\n        return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n    }\n    toString(ctx, onComment, onChompKeep) {\n        return ctx?.doc\n            ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n            : JSON.stringify(this);\n    }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n    const flow = ctx.inFlow ?? collection.flow;\n    const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n    return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n    const { indent, options: { commentString } } = ctx;\n    const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n    let chompKeep = false; // flag for the preceding node's status\n    const lines = [];\n    for (let i = 0; i < items.length; ++i) {\n        const item = items[i];\n        let comment = null;\n        if (identity.isNode(item)) {\n            if (!chompKeep && item.spaceBefore)\n                lines.push('');\n            addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n            if (item.comment)\n                comment = item.comment;\n        }\n        else if (identity.isPair(item)) {\n            const ik = identity.isNode(item.key) ? item.key : null;\n            if (ik) {\n                if (!chompKeep && ik.spaceBefore)\n                    lines.push('');\n                addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n            }\n        }\n        chompKeep = false;\n        let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n        if (comment)\n            str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n        if (chompKeep && comment)\n            chompKeep = false;\n        lines.push(blockItemPrefix + str);\n    }\n    let str;\n    if (lines.length === 0) {\n        str = flowChars.start + flowChars.end;\n    }\n    else {\n        str = lines[0];\n        for (let i = 1; i < lines.length; ++i) {\n            const line = lines[i];\n            str += line ? `\\n${indent}${line}` : '\\n';\n        }\n    }\n    if (comment) {\n        str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n        if (onComment)\n            onComment();\n    }\n    else if (chompKeep && onChompKeep)\n        onChompKeep();\n    return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n    const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n    itemIndent += indentStep;\n    const itemCtx = Object.assign({}, ctx, {\n        indent: itemIndent,\n        inFlow: true,\n        type: null\n    });\n    let reqNewline = false;\n    let linesAtValue = 0;\n    const lines = [];\n    for (let i = 0; i < items.length; ++i) {\n        const item = items[i];\n        let comment = null;\n        if (identity.isNode(item)) {\n            if (item.spaceBefore)\n                lines.push('');\n            addCommentBefore(ctx, lines, item.commentBefore, false);\n            if (item.comment)\n                comment = item.comment;\n        }\n        else if (identity.isPair(item)) {\n            const ik = identity.isNode(item.key) ? item.key : null;\n            if (ik) {\n                if (ik.spaceBefore)\n                    lines.push('');\n                addCommentBefore(ctx, lines, ik.commentBefore, false);\n                if (ik.comment)\n                    reqNewline = true;\n            }\n            const iv = identity.isNode(item.value) ? item.value : null;\n            if (iv) {\n                if (iv.comment)\n                    comment = iv.comment;\n                if (iv.commentBefore)\n                    reqNewline = true;\n            }\n            else if (item.value == null && ik?.comment) {\n                comment = ik.comment;\n            }\n        }\n        if (comment)\n            reqNewline = true;\n        let str = stringify.stringify(item, itemCtx, () => (comment = null));\n        reqNewline || (reqNewline = lines.length > linesAtValue || str.includes('\\n'));\n        if (i < items.length - 1) {\n            str += ',';\n        }\n        else if (ctx.options.trailingComma) {\n            if (ctx.options.lineWidth > 0) {\n                reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) +\n                    (str.length + 2) >\n                    ctx.options.lineWidth);\n            }\n            if (reqNewline) {\n                str += ',';\n            }\n        }\n        if (comment)\n            str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n        lines.push(str);\n        linesAtValue = lines.length;\n    }\n    const { start, end } = flowChars;\n    if (lines.length === 0) {\n        return start + end;\n    }\n    else {\n        if (!reqNewline) {\n            const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n            reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n        }\n        if (reqNewline) {\n            let str = start;\n            for (const line of lines)\n                str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n            return `${str}\\n${indent}${end}`;\n        }\n        else {\n            return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n        }\n    }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n    if (comment && chompKeep)\n        comment = comment.replace(/^\\n+/, '');\n    if (comment) {\n        const ic = stringifyComment.indentComment(commentString(comment), indent);\n        lines.push(ic.trimStart()); // Avoid double indent on first line\n    }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n    const k = identity.isScalar(key) ? key.value : key;\n    for (const it of items) {\n        if (identity.isPair(it)) {\n            if (it.key === key || it.key === k)\n                return it;\n            if (identity.isScalar(it.key) && it.key.value === k)\n                return it;\n        }\n    }\n    return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n    static get tagName() {\n        return 'tag:yaml.org,2002:map';\n    }\n    constructor(schema) {\n        super(identity.MAP, schema);\n        this.items = [];\n    }\n    /**\n     * A generic collection parsing method that can be extended\n     * to other node classes that inherit from YAMLMap\n     */\n    static from(schema, obj, ctx) {\n        const { keepUndefined, replacer } = ctx;\n        const map = new this(schema);\n        const add = (key, value) => {\n            if (typeof replacer === 'function')\n                value = replacer.call(obj, key, value);\n            else if (Array.isArray(replacer) && !replacer.includes(key))\n                return;\n            if (value !== undefined || keepUndefined)\n                map.items.push(Pair.createPair(key, value, ctx));\n        };\n        if (obj instanceof Map) {\n            for (const [key, value] of obj)\n                add(key, value);\n        }\n        else if (obj && typeof obj === 'object') {\n            for (const key of Object.keys(obj))\n                add(key, obj[key]);\n        }\n        if (typeof schema.sortMapEntries === 'function') {\n            map.items.sort(schema.sortMapEntries);\n        }\n        return map;\n    }\n    /**\n     * Adds a value to the collection.\n     *\n     * @param overwrite - If not set `true`, using a key that is already in the\n     *   collection will throw. Otherwise, overwrites the previous value.\n     */\n    add(pair, overwrite) {\n        let _pair;\n        if (identity.isPair(pair))\n            _pair = pair;\n        else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n            // In TypeScript, this never happens.\n            _pair = new Pair.Pair(pair, pair?.value);\n        }\n        else\n            _pair = new Pair.Pair(pair.key, pair.value);\n        const prev = findPair(this.items, _pair.key);\n        const sortEntries = this.schema?.sortMapEntries;\n        if (prev) {\n            if (!overwrite)\n                throw new Error(`Key ${_pair.key} already set`);\n            // For scalars, keep the old node & its comments and anchors\n            if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n                prev.value.value = _pair.value;\n            else\n                prev.value = _pair.value;\n        }\n        else if (sortEntries) {\n            const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n            if (i === -1)\n                this.items.push(_pair);\n            else\n                this.items.splice(i, 0, _pair);\n        }\n        else {\n            this.items.push(_pair);\n        }\n    }\n    delete(key) {\n        const it = findPair(this.items, key);\n        if (!it)\n            return false;\n        const del = this.items.splice(this.items.indexOf(it), 1);\n        return del.length > 0;\n    }\n    get(key, keepScalar) {\n        const it = findPair(this.items, key);\n        const node = it?.value;\n        return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n    }\n    has(key) {\n        return !!findPair(this.items, key);\n    }\n    set(key, value) {\n        this.add(new Pair.Pair(key, value), true);\n    }\n    /**\n     * @param ctx - Conversion context, originally set in Document#toJS()\n     * @param {Class} Type - If set, forces the returned collection type\n     * @returns Instance of Type, Map, or Object\n     */\n    toJSON(_, ctx, Type) {\n        const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n        if (ctx?.onCreate)\n            ctx.onCreate(map);\n        for (const item of this.items)\n            addPairToJSMap.addPairToJSMap(ctx, map, item);\n        return map;\n    }\n    toString(ctx, onComment, onChompKeep) {\n        if (!ctx)\n            return JSON.stringify(this);\n        for (const item of this.items) {\n            if (!identity.isPair(item))\n                throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n        }\n        if (!ctx.allNullValues && this.hasAllNullValues(false))\n            ctx = Object.assign({}, ctx, { allNullValues: true });\n        return stringifyCollection.stringifyCollection(this, ctx, {\n            blockItemPrefix: '',\n            flowChars: { start: '{', end: '}' },\n            itemIndent: ctx.indent || '',\n            onChompKeep,\n            onComment\n        });\n    }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n    collection: 'map',\n    default: true,\n    nodeClass: YAMLMap.YAMLMap,\n    tag: 'tag:yaml.org,2002:map',\n    resolve(map, onError) {\n        if (!identity.isMap(map))\n            onError('Expected a mapping for this tag');\n        return map;\n    },\n    createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n    static get tagName() {\n        return 'tag:yaml.org,2002:seq';\n    }\n    constructor(schema) {\n        super(identity.SEQ, schema);\n        this.items = [];\n    }\n    add(value) {\n        this.items.push(value);\n    }\n    /**\n     * Removes a value from the collection.\n     *\n     * `key` must contain a representation of an integer for this to succeed.\n     * It may be wrapped in a `Scalar`.\n     *\n     * @returns `true` if the item was found and removed.\n     */\n    delete(key) {\n        const idx = asItemIndex(key);\n        if (typeof idx !== 'number')\n            return false;\n        const del = this.items.splice(idx, 1);\n        return del.length > 0;\n    }\n    get(key, keepScalar) {\n        const idx = asItemIndex(key);\n        if (typeof idx !== 'number')\n            return undefined;\n        const it = this.items[idx];\n        return !keepScalar && identity.isScalar(it) ? it.value : it;\n    }\n    /**\n     * Checks if the collection includes a value with the key `key`.\n     *\n     * `key` must contain a representation of an integer for this to succeed.\n     * It may be wrapped in a `Scalar`.\n     */\n    has(key) {\n        const idx = asItemIndex(key);\n        return typeof idx === 'number' && idx < this.items.length;\n    }\n    /**\n     * Sets a value in this collection. For `!!set`, `value` needs to be a\n     * boolean to add/remove the item from the set.\n     *\n     * If `key` does not contain a representation of an integer, this will throw.\n     * It may be wrapped in a `Scalar`.\n     */\n    set(key, value) {\n        const idx = asItemIndex(key);\n        if (typeof idx !== 'number')\n            throw new Error(`Expected a valid index, not ${key}.`);\n        const prev = this.items[idx];\n        if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n            prev.value = value;\n        else\n            this.items[idx] = value;\n    }\n    toJSON(_, ctx) {\n        const seq = [];\n        if (ctx?.onCreate)\n            ctx.onCreate(seq);\n        let i = 0;\n        for (const item of this.items)\n            seq.push(toJS.toJS(item, String(i++), ctx));\n        return seq;\n    }\n    toString(ctx, onComment, onChompKeep) {\n        if (!ctx)\n            return JSON.stringify(this);\n        return stringifyCollection.stringifyCollection(this, ctx, {\n            blockItemPrefix: '- ',\n            flowChars: { start: '[', end: ']' },\n            itemIndent: (ctx.indent || '') + '  ',\n            onChompKeep,\n            onComment\n        });\n    }\n    static from(schema, obj, ctx) {\n        const { replacer } = ctx;\n        const seq = new this(schema);\n        if (obj && Symbol.iterator in Object(obj)) {\n            let i = 0;\n            for (let it of obj) {\n                if (typeof replacer === 'function') {\n                    const key = obj instanceof Set ? it : String(i++);\n                    it = replacer.call(obj, key, it);\n                }\n                seq.items.push(createNode.createNode(it, undefined, ctx));\n            }\n        }\n        return seq;\n    }\n}\nfunction asItemIndex(key) {\n    let idx = identity.isScalar(key) ? key.value : key;\n    if (idx && typeof idx === 'string')\n        idx = Number(idx);\n    return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n        ? idx\n        : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n    collection: 'seq',\n    default: true,\n    nodeClass: YAMLSeq.YAMLSeq,\n    tag: 'tag:yaml.org,2002:seq',\n    resolve(seq, onError) {\n        if (!identity.isSeq(seq))\n            onError('Expected a sequence for this tag');\n        return seq;\n    },\n    createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n    identify: value => typeof value === 'string',\n    default: true,\n    tag: 'tag:yaml.org,2002:str',\n    resolve: str => str,\n    stringify(item, ctx, onComment, onChompKeep) {\n        ctx = Object.assign({ actualString: true }, ctx);\n        return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n    }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n    identify: value => value == null,\n    createNode: () => new Scalar.Scalar(null),\n    default: true,\n    tag: 'tag:yaml.org,2002:null',\n    test: /^(?:~|[Nn]ull|NULL)?$/,\n    resolve: () => new Scalar.Scalar(null),\n    stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n        ? source\n        : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n    identify: value => typeof value === 'boolean',\n    default: true,\n    tag: 'tag:yaml.org,2002:bool',\n    test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n    resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n    stringify({ source, value }, ctx) {\n        if (source && boolTag.test.test(source)) {\n            const sv = source[0] === 't' || source[0] === 'T';\n            if (value === sv)\n                return source;\n        }\n        return value ? ctx.options.trueStr : ctx.options.falseStr;\n    }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n    if (typeof value === 'bigint')\n        return String(value);\n    const num = typeof value === 'number' ? value : Number(value);\n    if (!isFinite(num))\n        return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n    let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n    if (!format &&\n        minFractionDigits &&\n        (!tag || tag === 'tag:yaml.org,2002:float') &&\n        /^-?\\d/.test(n) &&\n        !n.includes('e')) {\n        let i = n.indexOf('.');\n        if (i < 0) {\n            i = n.length;\n            n += '.';\n        }\n        let d = minFractionDigits - (n.length - i - 1);\n        while (d-- > 0)\n            n += '0';\n    }\n    return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n    resolve: str => str.slice(-3).toLowerCase() === 'nan'\n        ? NaN\n        : str[0] === '-'\n            ? Number.NEGATIVE_INFINITY\n            : Number.POSITIVE_INFINITY,\n    stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    format: 'EXP',\n    test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n    resolve: str => parseFloat(str),\n    stringify(node) {\n        const num = Number(node.value);\n        return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n    }\n};\nconst float = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n    resolve(str) {\n        const node = new Scalar.Scalar(parseFloat(str));\n        const dot = str.indexOf('.');\n        if (dot !== -1 && str[str.length - 1] === '0')\n            node.minFractionDigits = str.length - dot - 1;\n        return node;\n    },\n    stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n    const { value } = node;\n    if (intIdentify(value) && value >= 0)\n        return prefix + value.toString(radix);\n    return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n    identify: value => intIdentify(value) && value >= 0,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'OCT',\n    test: /^0o[0-7]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n    stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n    identify: intIdentify,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    test: /^[-+]?[0-9]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n    stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n    identify: value => intIdentify(value) && value >= 0,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'HEX',\n    test: /^0x[0-9a-fA-F]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n    stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n    map.map,\n    seq.seq,\n    string.string,\n    _null.nullTag,\n    bool.boolTag,\n    int.intOct,\n    int.int,\n    int.intHex,\n    float.floatNaN,\n    float.floatExp,\n    float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n    return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n    {\n        identify: value => typeof value === 'string',\n        default: true,\n        tag: 'tag:yaml.org,2002:str',\n        resolve: str => str,\n        stringify: stringifyJSON\n    },\n    {\n        identify: value => value == null,\n        createNode: () => new Scalar.Scalar(null),\n        default: true,\n        tag: 'tag:yaml.org,2002:null',\n        test: /^null$/,\n        resolve: () => null,\n        stringify: stringifyJSON\n    },\n    {\n        identify: value => typeof value === 'boolean',\n        default: true,\n        tag: 'tag:yaml.org,2002:bool',\n        test: /^true$|^false$/,\n        resolve: str => str === 'true',\n        stringify: stringifyJSON\n    },\n    {\n        identify: intIdentify,\n        default: true,\n        tag: 'tag:yaml.org,2002:int',\n        test: /^-?(?:0|[1-9][0-9]*)$/,\n        resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n        stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n    },\n    {\n        identify: value => typeof value === 'number',\n        default: true,\n        tag: 'tag:yaml.org,2002:float',\n        test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n        resolve: str => parseFloat(str),\n        stringify: stringifyJSON\n    }\n];\nconst jsonError = {\n    default: true,\n    tag: '',\n    test: /^/,\n    resolve(str, onError) {\n        onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n        return str;\n    }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n    identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n    default: false,\n    tag: 'tag:yaml.org,2002:binary',\n    /**\n     * Returns a Buffer in node and an Uint8Array in browsers\n     *\n     * To use the resulting buffer as an image, you'll want to do something like:\n     *\n     *   const blob = new Blob([buffer], { type: 'image/jpeg' })\n     *   document.querySelector('#photo').src = URL.createObjectURL(blob)\n     */\n    resolve(src, onError) {\n        if (typeof node_buffer.Buffer === 'function') {\n            return node_buffer.Buffer.from(src, 'base64');\n        }\n        else if (typeof atob === 'function') {\n            // On IE 11, atob() can't handle newlines\n            const str = atob(src.replace(/[\\n\\r]/g, ''));\n            const buffer = new Uint8Array(str.length);\n            for (let i = 0; i < str.length; ++i)\n                buffer[i] = str.charCodeAt(i);\n            return buffer;\n        }\n        else {\n            onError('This environment does not support reading binary tags; either Buffer or atob is required');\n            return src;\n        }\n    },\n    stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n        if (!value)\n            return '';\n        const buf = value; // checked earlier by binary.identify()\n        let str;\n        if (typeof node_buffer.Buffer === 'function') {\n            str =\n                buf instanceof node_buffer.Buffer\n                    ? buf.toString('base64')\n                    : node_buffer.Buffer.from(buf.buffer).toString('base64');\n        }\n        else if (typeof btoa === 'function') {\n            let s = '';\n            for (let i = 0; i < buf.length; ++i)\n                s += String.fromCharCode(buf[i]);\n            str = btoa(s);\n        }\n        else {\n            throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n        }\n        type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n        if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n            const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n            const n = Math.ceil(str.length / lineWidth);\n            const lines = new Array(n);\n            for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n                lines[i] = str.substr(o, lineWidth);\n            }\n            str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n        }\n        return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n    }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n    if (identity.isSeq(seq)) {\n        for (let i = 0; i < seq.items.length; ++i) {\n            let item = seq.items[i];\n            if (identity.isPair(item))\n                continue;\n            else if (identity.isMap(item)) {\n                if (item.items.length > 1)\n                    onError('Each pair must have its own sequence indicator');\n                const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n                if (item.commentBefore)\n                    pair.key.commentBefore = pair.key.commentBefore\n                        ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n                        : item.commentBefore;\n                if (item.comment) {\n                    const cn = pair.value ?? pair.key;\n                    cn.comment = cn.comment\n                        ? `${item.comment}\\n${cn.comment}`\n                        : item.comment;\n                }\n                item = pair;\n            }\n            seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n        }\n    }\n    else\n        onError('Expected a sequence for this tag');\n    return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n    const { replacer } = ctx;\n    const pairs = new YAMLSeq.YAMLSeq(schema);\n    pairs.tag = 'tag:yaml.org,2002:pairs';\n    let i = 0;\n    if (iterable && Symbol.iterator in Object(iterable))\n        for (let it of iterable) {\n            if (typeof replacer === 'function')\n                it = replacer.call(iterable, String(i++), it);\n            let key, value;\n            if (Array.isArray(it)) {\n                if (it.length === 2) {\n                    key = it[0];\n                    value = it[1];\n                }\n                else\n                    throw new TypeError(`Expected [key, value] tuple: ${it}`);\n            }\n            else if (it && it instanceof Object) {\n                const keys = Object.keys(it);\n                if (keys.length === 1) {\n                    key = keys[0];\n                    value = it[key];\n                }\n                else {\n                    throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n                }\n            }\n            else {\n                key = it;\n            }\n            pairs.items.push(Pair.createPair(key, value, ctx));\n        }\n    return pairs;\n}\nconst pairs = {\n    collection: 'seq',\n    default: false,\n    tag: 'tag:yaml.org,2002:pairs',\n    resolve: resolvePairs,\n    createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n    constructor() {\n        super();\n        this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n        this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n        this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n        this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n        this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n        this.tag = YAMLOMap.tag;\n    }\n    /**\n     * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n     * but TypeScript won't allow widening the signature of a child method.\n     */\n    toJSON(_, ctx) {\n        if (!ctx)\n            return super.toJSON(_);\n        const map = new Map();\n        if (ctx?.onCreate)\n            ctx.onCreate(map);\n        for (const pair of this.items) {\n            let key, value;\n            if (identity.isPair(pair)) {\n                key = toJS.toJS(pair.key, '', ctx);\n                value = toJS.toJS(pair.value, key, ctx);\n            }\n            else {\n                key = toJS.toJS(pair, '', ctx);\n            }\n            if (map.has(key))\n                throw new Error('Ordered maps must not include duplicate keys');\n            map.set(key, value);\n        }\n        return map;\n    }\n    static from(schema, iterable, ctx) {\n        const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n        const omap = new this();\n        omap.items = pairs$1.items;\n        return omap;\n    }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n    collection: 'seq',\n    identify: value => value instanceof Map,\n    nodeClass: YAMLOMap,\n    default: false,\n    tag: 'tag:yaml.org,2002:omap',\n    resolve(seq, onError) {\n        const pairs$1 = pairs.resolvePairs(seq, onError);\n        const seenKeys = [];\n        for (const { key } of pairs$1.items) {\n            if (identity.isScalar(key)) {\n                if (seenKeys.includes(key.value)) {\n                    onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n                }\n                else {\n                    seenKeys.push(key.value);\n                }\n            }\n        }\n        return Object.assign(new YAMLOMap(), pairs$1);\n    },\n    createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n    const boolObj = value ? trueTag : falseTag;\n    if (source && boolObj.test.test(source))\n        return source;\n    return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n    identify: value => value === true,\n    default: true,\n    tag: 'tag:yaml.org,2002:bool',\n    test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n    resolve: () => new Scalar.Scalar(true),\n    stringify: boolStringify\n};\nconst falseTag = {\n    identify: value => value === false,\n    default: true,\n    tag: 'tag:yaml.org,2002:bool',\n    test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n    resolve: () => new Scalar.Scalar(false),\n    stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n    resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n        ? NaN\n        : str[0] === '-'\n            ? Number.NEGATIVE_INFINITY\n            : Number.POSITIVE_INFINITY,\n    stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    format: 'EXP',\n    test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n    resolve: (str) => parseFloat(str.replace(/_/g, '')),\n    stringify(node) {\n        const num = Number(node.value);\n        return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n    }\n};\nconst float = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n    resolve(str) {\n        const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n        const dot = str.indexOf('.');\n        if (dot !== -1) {\n            const f = str.substring(dot + 1).replace(/_/g, '');\n            if (f[f.length - 1] === '0')\n                node.minFractionDigits = f.length;\n        }\n        return node;\n    },\n    stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n    const sign = str[0];\n    if (sign === '-' || sign === '+')\n        offset += 1;\n    str = str.substring(offset).replace(/_/g, '');\n    if (intAsBigInt) {\n        switch (radix) {\n            case 2:\n                str = `0b${str}`;\n                break;\n            case 8:\n                str = `0o${str}`;\n                break;\n            case 16:\n                str = `0x${str}`;\n                break;\n        }\n        const n = BigInt(str);\n        return sign === '-' ? BigInt(-1) * n : n;\n    }\n    const n = parseInt(str, radix);\n    return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n    const { value } = node;\n    if (intIdentify(value)) {\n        const str = value.toString(radix);\n        return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n    }\n    return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n    identify: intIdentify,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'BIN',\n    test: /^[-+]?0b[0-1_]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n    stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n    identify: intIdentify,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'OCT',\n    test: /^[-+]?0[0-7_]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n    stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n    identify: intIdentify,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    test: /^[-+]?[0-9][0-9_]*$/,\n    resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n    stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n    identify: intIdentify,\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'HEX',\n    test: /^[-+]?0x[0-9a-fA-F_]+$/,\n    resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n    stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n    constructor(schema) {\n        super(schema);\n        this.tag = YAMLSet.tag;\n    }\n    add(key) {\n        let pair;\n        if (identity.isPair(key))\n            pair = key;\n        else if (key &&\n            typeof key === 'object' &&\n            'key' in key &&\n            'value' in key &&\n            key.value === null)\n            pair = new Pair.Pair(key.key, null);\n        else\n            pair = new Pair.Pair(key, null);\n        const prev = YAMLMap.findPair(this.items, pair.key);\n        if (!prev)\n            this.items.push(pair);\n    }\n    /**\n     * If `keepPair` is `true`, returns the Pair matching `key`.\n     * Otherwise, returns the value of that Pair's key.\n     */\n    get(key, keepPair) {\n        const pair = YAMLMap.findPair(this.items, key);\n        return !keepPair && identity.isPair(pair)\n            ? identity.isScalar(pair.key)\n                ? pair.key.value\n                : pair.key\n            : pair;\n    }\n    set(key, value) {\n        if (typeof value !== 'boolean')\n            throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n        const prev = YAMLMap.findPair(this.items, key);\n        if (prev && !value) {\n            this.items.splice(this.items.indexOf(prev), 1);\n        }\n        else if (!prev && value) {\n            this.items.push(new Pair.Pair(key));\n        }\n    }\n    toJSON(_, ctx) {\n        return super.toJSON(_, ctx, Set);\n    }\n    toString(ctx, onComment, onChompKeep) {\n        if (!ctx)\n            return JSON.stringify(this);\n        if (this.hasAllNullValues(true))\n            return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n        else\n            throw new Error('Set items must all have null values');\n    }\n    static from(schema, iterable, ctx) {\n        const { replacer } = ctx;\n        const set = new this(schema);\n        if (iterable && Symbol.iterator in Object(iterable))\n            for (let value of iterable) {\n                if (typeof replacer === 'function')\n                    value = replacer.call(iterable, value, value);\n                set.items.push(Pair.createPair(value, null, ctx));\n            }\n        return set;\n    }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n    collection: 'map',\n    identify: value => value instanceof Set,\n    nodeClass: YAMLSet,\n    default: false,\n    tag: 'tag:yaml.org,2002:set',\n    createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n    resolve(map, onError) {\n        if (identity.isMap(map)) {\n            if (map.hasAllNullValues(true))\n                return Object.assign(new YAMLSet(), map);\n            else\n                onError('Set items must all have null values');\n        }\n        else\n            onError('Expected a mapping for this tag');\n        return map;\n    }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n    const sign = str[0];\n    const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n    const num = (n) => asBigInt ? BigInt(n) : Number(n);\n    const res = parts\n        .replace(/_/g, '')\n        .split(':')\n        .reduce((res, p) => res * num(60) + num(p), num(0));\n    return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n    let { value } = node;\n    let num = (n) => n;\n    if (typeof value === 'bigint')\n        num = n => BigInt(n);\n    else if (isNaN(value) || !isFinite(value))\n        return stringifyNumber.stringifyNumber(node);\n    let sign = '';\n    if (value < 0) {\n        sign = '-';\n        value *= num(-1);\n    }\n    const _60 = num(60);\n    const parts = [value % _60]; // seconds, including ms\n    if (value < 60) {\n        parts.unshift(0); // at least one : is required\n    }\n    else {\n        value = (value - parts[0]) / _60;\n        parts.unshift(value % _60); // minutes\n        if (value >= 60) {\n            value = (value - parts[0]) / _60;\n            parts.unshift(value); // hours\n        }\n    }\n    return (sign +\n        parts\n            .map(n => String(n).padStart(2, '0'))\n            .join(':')\n            .replace(/000000\\d*$/, '') // % 60 may introduce error\n    );\n}\nconst intTime = {\n    identify: value => typeof value === 'bigint' || Number.isInteger(value),\n    default: true,\n    tag: 'tag:yaml.org,2002:int',\n    format: 'TIME',\n    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n    resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n    stringify: stringifySexagesimal\n};\nconst floatTime = {\n    identify: value => typeof value === 'number',\n    default: true,\n    tag: 'tag:yaml.org,2002:float',\n    format: 'TIME',\n    test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n    resolve: str => parseSexagesimal(str, false),\n    stringify: stringifySexagesimal\n};\nconst timestamp = {\n    identify: value => value instanceof Date,\n    default: true,\n    tag: 'tag:yaml.org,2002:timestamp',\n    // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n    // may be omitted altogether, resulting in a date format. In such a case, the time part is\n    // assumed to be 00:00:00Z (start of day, UTC).\n    test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n        '(?:' + // time is optional\n        '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n        '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n        '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n        ')?$'),\n    resolve(str) {\n        const match = str.match(timestamp.test);\n        if (!match)\n            throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n        const [, year, month, day, hour, minute, second] = match.map(Number);\n        const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n        let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n        const tz = match[8];\n        if (tz && tz !== 'Z') {\n            let d = parseSexagesimal(tz, false);\n            if (Math.abs(d) < 30)\n                d *= 60;\n            date -= 60000 * d;\n        }\n        return new Date(date);\n    },\n    stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n    map.map,\n    seq.seq,\n    string.string,\n    _null.nullTag,\n    bool.trueTag,\n    bool.falseTag,\n    int.intBin,\n    int.intOct,\n    int.int,\n    int.intHex,\n    float.floatNaN,\n    float.floatExp,\n    float.float,\n    binary.binary,\n    merge.merge,\n    omap.omap,\n    pairs.pairs,\n    set.set,\n    timestamp.intTime,\n    timestamp.floatTime,\n    timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n    ['core', schema.schema],\n    ['failsafe', [map.map, seq.seq, string.string]],\n    ['json', schema$1.schema],\n    ['yaml11', schema$2.schema],\n    ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n    binary: binary.binary,\n    bool: bool.boolTag,\n    float: float.float,\n    floatExp: float.floatExp,\n    floatNaN: float.floatNaN,\n    floatTime: timestamp.floatTime,\n    int: int.int,\n    intHex: int.intHex,\n    intOct: int.intOct,\n    intTime: timestamp.intTime,\n    map: map.map,\n    merge: merge.merge,\n    null: _null.nullTag,\n    omap: omap.omap,\n    pairs: pairs.pairs,\n    seq: seq.seq,\n    set: set.set,\n    timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n    'tag:yaml.org,2002:binary': binary.binary,\n    'tag:yaml.org,2002:merge': merge.merge,\n    'tag:yaml.org,2002:omap': omap.omap,\n    'tag:yaml.org,2002:pairs': pairs.pairs,\n    'tag:yaml.org,2002:set': set.set,\n    'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n    const schemaTags = schemas.get(schemaName);\n    if (schemaTags && !customTags) {\n        return addMergeTag && !schemaTags.includes(merge.merge)\n            ? schemaTags.concat(merge.merge)\n            : schemaTags.slice();\n    }\n    let tags = schemaTags;\n    if (!tags) {\n        if (Array.isArray(customTags))\n            tags = [];\n        else {\n            const keys = Array.from(schemas.keys())\n                .filter(key => key !== 'yaml11')\n                .map(key => JSON.stringify(key))\n                .join(', ');\n            throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n        }\n    }\n    if (Array.isArray(customTags)) {\n        for (const tag of customTags)\n            tags = tags.concat(tag);\n    }\n    else if (typeof customTags === 'function') {\n        tags = customTags(tags.slice());\n    }\n    if (addMergeTag)\n        tags = tags.concat(merge.merge);\n    return tags.reduce((tags, tag) => {\n        const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n        if (!tagObj) {\n            const tagName = JSON.stringify(tag);\n            const keys = Object.keys(tagsByName)\n                .map(key => JSON.stringify(key))\n                .join(', ');\n            throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n        }\n        if (!tags.includes(tagObj))\n            tags.push(tagObj);\n        return tags;\n    }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n    constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n        this.compat = Array.isArray(compat)\n            ? tags.getTags(compat, 'compat')\n            : compat\n                ? tags.getTags(null, compat)\n                : null;\n        this.name = (typeof schema === 'string' && schema) || 'core';\n        this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n        this.tags = tags.getTags(customTags, this.name, merge);\n        this.toStringOptions = toStringDefaults ?? null;\n        Object.defineProperty(this, identity.MAP, { value: map.map });\n        Object.defineProperty(this, identity.SCALAR, { value: string.string });\n        Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n        // Used by createMap()\n        this.sortMapEntries =\n            typeof sortMapEntries === 'function'\n                ? sortMapEntries\n                : sortMapEntries === true\n                    ? sortMapEntriesByKey\n                    : null;\n    }\n    clone() {\n        const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n        copy.tags = this.tags.slice();\n        return copy;\n    }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n    const lines = [];\n    let hasDirectives = options.directives === true;\n    if (options.directives !== false && doc.directives) {\n        const dir = doc.directives.toString(doc);\n        if (dir) {\n            lines.push(dir);\n            hasDirectives = true;\n        }\n        else if (doc.directives.docStart)\n            hasDirectives = true;\n    }\n    if (hasDirectives)\n        lines.push('---');\n    const ctx = stringify.createStringifyContext(doc, options);\n    const { commentString } = ctx.options;\n    if (doc.commentBefore) {\n        if (lines.length !== 1)\n            lines.unshift('');\n        const cs = commentString(doc.commentBefore);\n        lines.unshift(stringifyComment.indentComment(cs, ''));\n    }\n    let chompKeep = false;\n    let contentComment = null;\n    if (doc.contents) {\n        if (identity.isNode(doc.contents)) {\n            if (doc.contents.spaceBefore && hasDirectives)\n                lines.push('');\n            if (doc.contents.commentBefore) {\n                const cs = commentString(doc.contents.commentBefore);\n                lines.push(stringifyComment.indentComment(cs, ''));\n            }\n            // top-level block scalars need to be indented if followed by a comment\n            ctx.forceBlockIndent = !!doc.comment;\n            contentComment = doc.contents.comment;\n        }\n        const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n        let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n        if (contentComment)\n            body += stringifyComment.lineComment(body, '', commentString(contentComment));\n        if ((body[0] === '|' || body[0] === '>') &&\n            lines[lines.length - 1] === '---') {\n            // Top-level block scalars with a preceding doc marker ought to use the\n            // same line for their header.\n            lines[lines.length - 1] = `--- ${body}`;\n        }\n        else\n            lines.push(body);\n    }\n    else {\n        lines.push(stringify.stringify(doc.contents, ctx));\n    }\n    if (doc.directives?.docEnd) {\n        if (doc.comment) {\n            const cs = commentString(doc.comment);\n            if (cs.includes('\\n')) {\n                lines.push('...');\n                lines.push(stringifyComment.indentComment(cs, ''));\n            }\n            else {\n                lines.push(`... ${cs}`);\n            }\n        }\n        else {\n            lines.push('...');\n        }\n    }\n    else {\n        let dc = doc.comment;\n        if (dc && chompKeep)\n            dc = dc.replace(/^\\n+/, '');\n        if (dc) {\n            if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n                lines.push('');\n            lines.push(stringifyComment.indentComment(commentString(dc), ''));\n        }\n    }\n    return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n    constructor(value, replacer, options) {\n        /** A comment before this Document */\n        this.commentBefore = null;\n        /** A comment immediately after this Document */\n        this.comment = null;\n        /** Errors encountered during parsing. */\n        this.errors = [];\n        /** Warnings encountered during parsing. */\n        this.warnings = [];\n        Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n        let _replacer = null;\n        if (typeof replacer === 'function' || Array.isArray(replacer)) {\n            _replacer = replacer;\n        }\n        else if (options === undefined && replacer) {\n            options = replacer;\n            replacer = undefined;\n        }\n        const opt = Object.assign({\n            intAsBigInt: false,\n            keepSourceTokens: false,\n            logLevel: 'warn',\n            prettyErrors: true,\n            strict: true,\n            stringKeys: false,\n            uniqueKeys: true,\n            version: '1.2'\n        }, options);\n        this.options = opt;\n        let { version } = opt;\n        if (options?._directives) {\n            this.directives = options._directives.atDocument();\n            if (this.directives.yaml.explicit)\n                version = this.directives.yaml.version;\n        }\n        else\n            this.directives = new directives.Directives({ version });\n        this.setSchema(version, options);\n        // @ts-expect-error We can't really know that this matches Contents.\n        this.contents =\n            value === undefined ? null : this.createNode(value, _replacer, options);\n    }\n    /**\n     * Create a deep copy of this Document and its contents.\n     *\n     * Custom Node values that inherit from `Object` still refer to their original instances.\n     */\n    clone() {\n        const copy = Object.create(Document.prototype, {\n            [identity.NODE_TYPE]: { value: identity.DOC }\n        });\n        copy.commentBefore = this.commentBefore;\n        copy.comment = this.comment;\n        copy.errors = this.errors.slice();\n        copy.warnings = this.warnings.slice();\n        copy.options = Object.assign({}, this.options);\n        if (this.directives)\n            copy.directives = this.directives.clone();\n        copy.schema = this.schema.clone();\n        // @ts-expect-error We can't really know that this matches Contents.\n        copy.contents = identity.isNode(this.contents)\n            ? this.contents.clone(copy.schema)\n            : this.contents;\n        if (this.range)\n            copy.range = this.range.slice();\n        return copy;\n    }\n    /** Adds a value to the document. */\n    add(value) {\n        if (assertCollection(this.contents))\n            this.contents.add(value);\n    }\n    /** Adds a value to the document. */\n    addIn(path, value) {\n        if (assertCollection(this.contents))\n            this.contents.addIn(path, value);\n    }\n    /**\n     * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n     *\n     * If `node` already has an anchor, `name` is ignored.\n     * Otherwise, the `node.anchor` value will be set to `name`,\n     * or if an anchor with that name is already present in the document,\n     * `name` will be used as a prefix for a new unique anchor.\n     * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n     */\n    createAlias(node, name) {\n        if (!node.anchor) {\n            const prev = anchors.anchorNames(this);\n            node.anchor =\n                // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n                !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n        }\n        return new Alias.Alias(node.anchor);\n    }\n    createNode(value, replacer, options) {\n        let _replacer = undefined;\n        if (typeof replacer === 'function') {\n            value = replacer.call({ '': value }, '', value);\n            _replacer = replacer;\n        }\n        else if (Array.isArray(replacer)) {\n            const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n            const asStr = replacer.filter(keyToStr).map(String);\n            if (asStr.length > 0)\n                replacer = replacer.concat(asStr);\n            _replacer = replacer;\n        }\n        else if (options === undefined && replacer) {\n            options = replacer;\n            replacer = undefined;\n        }\n        const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n        const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n        anchorPrefix || 'a');\n        const ctx = {\n            aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n            keepUndefined: keepUndefined ?? false,\n            onAnchor,\n            onTagObj,\n            replacer: _replacer,\n            schema: this.schema,\n            sourceObjects\n        };\n        const node = createNode.createNode(value, tag, ctx);\n        if (flow && identity.isCollection(node))\n            node.flow = true;\n        setAnchors();\n        return node;\n    }\n    /**\n     * Convert a key and a value into a `Pair` using the current schema,\n     * recursively wrapping all values as `Scalar` or `Collection` nodes.\n     */\n    createPair(key, value, options = {}) {\n        const k = this.createNode(key, null, options);\n        const v = this.createNode(value, null, options);\n        return new Pair.Pair(k, v);\n    }\n    /**\n     * Removes a value from the document.\n     * @returns `true` if the item was found and removed.\n     */\n    delete(key) {\n        return assertCollection(this.contents) ? this.contents.delete(key) : false;\n    }\n    /**\n     * Removes a value from the document.\n     * @returns `true` if the item was found and removed.\n     */\n    deleteIn(path) {\n        if (Collection.isEmptyPath(path)) {\n            if (this.contents == null)\n                return false;\n            // @ts-expect-error Presumed impossible if Strict extends false\n            this.contents = null;\n            return true;\n        }\n        return assertCollection(this.contents)\n            ? this.contents.deleteIn(path)\n            : false;\n    }\n    /**\n     * Returns item at `key`, or `undefined` if not found. By default unwraps\n     * scalar values from their surrounding node; to disable set `keepScalar` to\n     * `true` (collections are always returned intact).\n     */\n    get(key, keepScalar) {\n        return identity.isCollection(this.contents)\n            ? this.contents.get(key, keepScalar)\n            : undefined;\n    }\n    /**\n     * Returns item at `path`, or `undefined` if not found. By default unwraps\n     * scalar values from their surrounding node; to disable set `keepScalar` to\n     * `true` (collections are always returned intact).\n     */\n    getIn(path, keepScalar) {\n        if (Collection.isEmptyPath(path))\n            return !keepScalar && identity.isScalar(this.contents)\n                ? this.contents.value\n                : this.contents;\n        return identity.isCollection(this.contents)\n            ? this.contents.getIn(path, keepScalar)\n            : undefined;\n    }\n    /**\n     * Checks if the document includes a value with the key `key`.\n     */\n    has(key) {\n        return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n    }\n    /**\n     * Checks if the document includes a value at `path`.\n     */\n    hasIn(path) {\n        if (Collection.isEmptyPath(path))\n            return this.contents !== undefined;\n        return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n    }\n    /**\n     * Sets a value in this document. For `!!set`, `value` needs to be a\n     * boolean to add/remove the item from the set.\n     */\n    set(key, value) {\n        if (this.contents == null) {\n            // @ts-expect-error We can't really know that this matches Contents.\n            this.contents = Collection.collectionFromPath(this.schema, [key], value);\n        }\n        else if (assertCollection(this.contents)) {\n            this.contents.set(key, value);\n        }\n    }\n    /**\n     * Sets a value in this document. For `!!set`, `value` needs to be a\n     * boolean to add/remove the item from the set.\n     */\n    setIn(path, value) {\n        if (Collection.isEmptyPath(path)) {\n            // @ts-expect-error We can't really know that this matches Contents.\n            this.contents = value;\n        }\n        else if (this.contents == null) {\n            // @ts-expect-error We can't really know that this matches Contents.\n            this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n        }\n        else if (assertCollection(this.contents)) {\n            this.contents.setIn(path, value);\n        }\n    }\n    /**\n     * Change the YAML version and schema used by the document.\n     * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n     * It also requires the `schema` option to be given as a `Schema` instance value.\n     *\n     * Overrides all previously set schema options.\n     */\n    setSchema(version, options = {}) {\n        if (typeof version === 'number')\n            version = String(version);\n        let opt;\n        switch (version) {\n            case '1.1':\n                if (this.directives)\n                    this.directives.yaml.version = '1.1';\n                else\n                    this.directives = new directives.Directives({ version: '1.1' });\n                opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n                break;\n            case '1.2':\n            case 'next':\n                if (this.directives)\n                    this.directives.yaml.version = version;\n                else\n                    this.directives = new directives.Directives({ version });\n                opt = { resolveKnownTags: true, schema: 'core' };\n                break;\n            case null:\n                if (this.directives)\n                    delete this.directives;\n                opt = null;\n                break;\n            default: {\n                const sv = JSON.stringify(version);\n                throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n            }\n        }\n        // Not using `instanceof Schema` to allow for duck typing\n        if (options.schema instanceof Object)\n            this.schema = options.schema;\n        else if (opt)\n            this.schema = new Schema.Schema(Object.assign(opt, options));\n        else\n            throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n    }\n    // json & jsonArg are only used from toJSON()\n    toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n        const ctx = {\n            anchors: new Map(),\n            doc: this,\n            keep: !json,\n            mapAsMap: mapAsMap === true,\n            mapKeyWarned: false,\n            maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n        };\n        const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n        if (typeof onAnchor === 'function')\n            for (const { count, res } of ctx.anchors.values())\n                onAnchor(res, count);\n        return typeof reviver === 'function'\n            ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n            : res;\n    }\n    /**\n     * A JSON representation of the document `contents`.\n     *\n     * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n     *   property name.\n     */\n    toJSON(jsonArg, onAnchor) {\n        return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n    }\n    /** A YAML representation of the document. */\n    toString(options = {}) {\n        if (this.errors.length > 0)\n            throw new Error('Document with errors cannot be stringified');\n        if ('indent' in options &&\n            (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n            const s = JSON.stringify(options.indent);\n            throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n        }\n        return stringifyDocument.stringifyDocument(this, options);\n    }\n}\nfunction assertCollection(contents) {\n    if (identity.isCollection(contents))\n        return true;\n    throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n    constructor(name, pos, code, message) {\n        super();\n        this.name = name;\n        this.code = code;\n        this.message = message;\n        this.pos = pos;\n    }\n}\nclass YAMLParseError extends YAMLError {\n    constructor(pos, code, message) {\n        super('YAMLParseError', pos, code, message);\n    }\n}\nclass YAMLWarning extends YAMLError {\n    constructor(pos, code, message) {\n        super('YAMLWarning', pos, code, message);\n    }\n}\nconst prettifyError = (src, lc) => (error) => {\n    if (error.pos[0] === -1)\n        return;\n    error.linePos = error.pos.map(pos => lc.linePos(pos));\n    const { line, col } = error.linePos[0];\n    error.message += ` at line ${line}, column ${col}`;\n    let ci = col - 1;\n    let lineStr = src\n        .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n        .replace(/[\\n\\r]+$/, '');\n    // Trim to max 80 chars, keeping col position near the middle\n    if (ci >= 60 && lineStr.length > 80) {\n        const trimStart = Math.min(ci - 39, lineStr.length - 79);\n        lineStr = '…' + lineStr.substring(trimStart);\n        ci -= trimStart - 1;\n    }\n    if (lineStr.length > 80)\n        lineStr = lineStr.substring(0, 79) + '…';\n    // Include previous line in context if pointing at line start\n    if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n        // Regexp won't match if start is trimmed\n        let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n        if (prev.length > 80)\n            prev = prev.substring(0, 79) + '…\\n';\n        lineStr = prev + lineStr;\n    }\n    if (/[^ ]/.test(lineStr)) {\n        let count = 1;\n        const end = error.linePos[1];\n        if (end?.line === line && end.col > col) {\n            count = Math.max(1, Math.min(end.col - col, 80 - ci));\n        }\n        const pointer = ' '.repeat(ci) + '^'.repeat(count);\n        error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n    }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n    let spaceBefore = false;\n    let atNewline = startOnNewline;\n    let hasSpace = startOnNewline;\n    let comment = '';\n    let commentSep = '';\n    let hasNewline = false;\n    let reqSpace = false;\n    let tab = null;\n    let anchor = null;\n    let tag = null;\n    let newlineAfterProp = null;\n    let comma = null;\n    let found = null;\n    let start = null;\n    for (const token of tokens) {\n        if (reqSpace) {\n            if (token.type !== 'space' &&\n                token.type !== 'newline' &&\n                token.type !== 'comma')\n                onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n            reqSpace = false;\n        }\n        if (tab) {\n            if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n                onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n            }\n            tab = null;\n        }\n        switch (token.type) {\n            case 'space':\n                // At the doc level, tabs at line start may be parsed\n                // as leading white space rather than indentation.\n                // In a flow collection, only the parser handles indent.\n                if (!flow &&\n                    (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n                    token.source.includes('\\t')) {\n                    tab = token;\n                }\n                hasSpace = true;\n                break;\n            case 'comment': {\n                if (!hasSpace)\n                    onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n                const cb = token.source.substring(1) || ' ';\n                if (!comment)\n                    comment = cb;\n                else\n                    comment += commentSep + cb;\n                commentSep = '';\n                atNewline = false;\n                break;\n            }\n            case 'newline':\n                if (atNewline) {\n                    if (comment)\n                        comment += token.source;\n                    else if (!found || indicator !== 'seq-item-ind')\n                        spaceBefore = true;\n                }\n                else\n                    commentSep += token.source;\n                atNewline = true;\n                hasNewline = true;\n                if (anchor || tag)\n                    newlineAfterProp = token;\n                hasSpace = true;\n                break;\n            case 'anchor':\n                if (anchor)\n                    onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n                if (token.source.endsWith(':'))\n                    onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n                anchor = token;\n                start ?? (start = token.offset);\n                atNewline = false;\n                hasSpace = false;\n                reqSpace = true;\n                break;\n            case 'tag': {\n                if (tag)\n                    onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n                tag = token;\n                start ?? (start = token.offset);\n                atNewline = false;\n                hasSpace = false;\n                reqSpace = true;\n                break;\n            }\n            case indicator:\n                // Could here handle preceding comments differently\n                if (anchor || tag)\n                    onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n                if (found)\n                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n                found = token;\n                atNewline =\n                    indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n                hasSpace = false;\n                break;\n            case 'comma':\n                if (flow) {\n                    if (comma)\n                        onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n                    comma = token;\n                    atNewline = false;\n                    hasSpace = false;\n                    break;\n                }\n            // else fallthrough\n            default:\n                onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n                atNewline = false;\n                hasSpace = false;\n        }\n    }\n    const last = tokens[tokens.length - 1];\n    const end = last ? last.offset + last.source.length : offset;\n    if (reqSpace &&\n        next &&\n        next.type !== 'space' &&\n        next.type !== 'newline' &&\n        next.type !== 'comma' &&\n        (next.type !== 'scalar' || next.source !== '')) {\n        onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n    }\n    if (tab &&\n        ((atNewline && tab.indent <= parentIndent) ||\n            next?.type === 'block-map' ||\n            next?.type === 'block-seq'))\n        onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n    return {\n        comma,\n        found,\n        spaceBefore,\n        comment,\n        hasNewline,\n        anchor,\n        tag,\n        newlineAfterProp,\n        end,\n        start: start ?? end\n    };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n    if (!key)\n        return null;\n    switch (key.type) {\n        case 'alias':\n        case 'scalar':\n        case 'double-quoted-scalar':\n        case 'single-quoted-scalar':\n            if (key.source.includes('\\n'))\n                return true;\n            if (key.end)\n                for (const st of key.end)\n                    if (st.type === 'newline')\n                        return true;\n            return false;\n        case 'flow-collection':\n            for (const it of key.items) {\n                for (const st of it.start)\n                    if (st.type === 'newline')\n                        return true;\n                if (it.sep)\n                    for (const st of it.sep)\n                        if (st.type === 'newline')\n                            return true;\n                if (containsNewline(it.key) || containsNewline(it.value))\n                    return true;\n            }\n            return false;\n        default:\n            return true;\n    }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n    if (fc?.type === 'flow-collection') {\n        const end = fc.end[0];\n        if (end.indent === indent &&\n            (end.source === ']' || end.source === '}') &&\n            utilContainsNewline.containsNewline(fc)) {\n            const msg = 'Flow end indicator should be more indented than parent';\n            onError(end, 'BAD_INDENT', msg, true);\n        }\n    }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n    const { uniqueKeys } = ctx.options;\n    if (uniqueKeys === false)\n        return false;\n    const isEqual = typeof uniqueKeys === 'function'\n        ? uniqueKeys\n        : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n    return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n    const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n    const map = new NodeClass(ctx.schema);\n    if (ctx.atRoot)\n        ctx.atRoot = false;\n    let offset = bm.offset;\n    let commentEnd = null;\n    for (const collItem of bm.items) {\n        const { start, key, sep, value } = collItem;\n        // key properties\n        const keyProps = resolveProps.resolveProps(start, {\n            indicator: 'explicit-key-ind',\n            next: key ?? sep?.[0],\n            offset,\n            onError,\n            parentIndent: bm.indent,\n            startOnNewline: true\n        });\n        const implicitKey = !keyProps.found;\n        if (implicitKey) {\n            if (key) {\n                if (key.type === 'block-seq')\n                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n                else if ('indent' in key && key.indent !== bm.indent)\n                    onError(offset, 'BAD_INDENT', startColMsg);\n            }\n            if (!keyProps.anchor && !keyProps.tag && !sep) {\n                commentEnd = keyProps.end;\n                if (keyProps.comment) {\n                    if (map.comment)\n                        map.comment += '\\n' + keyProps.comment;\n                    else\n                        map.comment = keyProps.comment;\n                }\n                continue;\n            }\n            if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n                onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n            }\n        }\n        else if (keyProps.found?.indent !== bm.indent) {\n            onError(offset, 'BAD_INDENT', startColMsg);\n        }\n        // key value\n        ctx.atKey = true;\n        const keyStart = keyProps.end;\n        const keyNode = key\n            ? composeNode(ctx, key, keyProps, onError)\n            : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n        if (ctx.schema.compat)\n            utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n        ctx.atKey = false;\n        if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n            onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n        // value properties\n        const valueProps = resolveProps.resolveProps(sep ?? [], {\n            indicator: 'map-value-ind',\n            next: value,\n            offset: keyNode.range[2],\n            onError,\n            parentIndent: bm.indent,\n            startOnNewline: !key || key.type === 'block-scalar'\n        });\n        offset = valueProps.end;\n        if (valueProps.found) {\n            if (implicitKey) {\n                if (value?.type === 'block-map' && !valueProps.hasNewline)\n                    onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n                if (ctx.options.strict &&\n                    keyProps.start < valueProps.found.offset - 1024)\n                    onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n            }\n            // value value\n            const valueNode = value\n                ? composeNode(ctx, value, valueProps, onError)\n                : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n            if (ctx.schema.compat)\n                utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n            offset = valueNode.range[2];\n            const pair = new Pair.Pair(keyNode, valueNode);\n            if (ctx.options.keepSourceTokens)\n                pair.srcToken = collItem;\n            map.items.push(pair);\n        }\n        else {\n            // key with no value\n            if (implicitKey)\n                onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n            if (valueProps.comment) {\n                if (keyNode.comment)\n                    keyNode.comment += '\\n' + valueProps.comment;\n                else\n                    keyNode.comment = valueProps.comment;\n            }\n            const pair = new Pair.Pair(keyNode);\n            if (ctx.options.keepSourceTokens)\n                pair.srcToken = collItem;\n            map.items.push(pair);\n        }\n    }\n    if (commentEnd && commentEnd < offset)\n        onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n    map.range = [bm.offset, offset, commentEnd ?? offset];\n    return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n    const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n    const seq = new NodeClass(ctx.schema);\n    if (ctx.atRoot)\n        ctx.atRoot = false;\n    if (ctx.atKey)\n        ctx.atKey = false;\n    let offset = bs.offset;\n    let commentEnd = null;\n    for (const { start, value } of bs.items) {\n        const props = resolveProps.resolveProps(start, {\n            indicator: 'seq-item-ind',\n            next: value,\n            offset,\n            onError,\n            parentIndent: bs.indent,\n            startOnNewline: true\n        });\n        if (!props.found) {\n            if (props.anchor || props.tag || value) {\n                if (value?.type === 'block-seq')\n                    onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n                else\n                    onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n            }\n            else {\n                commentEnd = props.end;\n                if (props.comment)\n                    seq.comment = props.comment;\n                continue;\n            }\n        }\n        const node = value\n            ? composeNode(ctx, value, props, onError)\n            : composeEmptyNode(ctx, props.end, start, null, props, onError);\n        if (ctx.schema.compat)\n            utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n        offset = node.range[2];\n        seq.items.push(node);\n    }\n    seq.range = [bs.offset, offset, commentEnd ?? offset];\n    return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n    let comment = '';\n    if (end) {\n        let hasSpace = false;\n        let sep = '';\n        for (const token of end) {\n            const { source, type } = token;\n            switch (type) {\n                case 'space':\n                    hasSpace = true;\n                    break;\n                case 'comment': {\n                    if (reqSpace && !hasSpace)\n                        onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n                    const cb = source.substring(1) || ' ';\n                    if (!comment)\n                        comment = cb;\n                    else\n                        comment += sep + cb;\n                    sep = '';\n                    break;\n                }\n                case 'newline':\n                    if (comment)\n                        sep += source;\n                    hasSpace = true;\n                    break;\n                default:\n                    onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n            }\n            offset += source.length;\n        }\n    }\n    return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n    const isMap = fc.start.source === '{';\n    const fcName = isMap ? 'flow map' : 'flow sequence';\n    const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n    const coll = new NodeClass(ctx.schema);\n    coll.flow = true;\n    const atRoot = ctx.atRoot;\n    if (atRoot)\n        ctx.atRoot = false;\n    if (ctx.atKey)\n        ctx.atKey = false;\n    let offset = fc.offset + fc.start.source.length;\n    for (let i = 0; i < fc.items.length; ++i) {\n        const collItem = fc.items[i];\n        const { start, key, sep, value } = collItem;\n        const props = resolveProps.resolveProps(start, {\n            flow: fcName,\n            indicator: 'explicit-key-ind',\n            next: key ?? sep?.[0],\n            offset,\n            onError,\n            parentIndent: fc.indent,\n            startOnNewline: false\n        });\n        if (!props.found) {\n            if (!props.anchor && !props.tag && !sep && !value) {\n                if (i === 0 && props.comma)\n                    onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n                else if (i < fc.items.length - 1)\n                    onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n                if (props.comment) {\n                    if (coll.comment)\n                        coll.comment += '\\n' + props.comment;\n                    else\n                        coll.comment = props.comment;\n                }\n                offset = props.end;\n                continue;\n            }\n            if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n                onError(key, // checked by containsNewline()\n                'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n        }\n        if (i === 0) {\n            if (props.comma)\n                onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n        }\n        else {\n            if (!props.comma)\n                onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n            if (props.comment) {\n                let prevItemComment = '';\n                loop: for (const st of start) {\n                    switch (st.type) {\n                        case 'comma':\n                        case 'space':\n                            break;\n                        case 'comment':\n                            prevItemComment = st.source.substring(1);\n                            break loop;\n                        default:\n                            break loop;\n                    }\n                }\n                if (prevItemComment) {\n                    let prev = coll.items[coll.items.length - 1];\n                    if (identity.isPair(prev))\n                        prev = prev.value ?? prev.key;\n                    if (prev.comment)\n                        prev.comment += '\\n' + prevItemComment;\n                    else\n                        prev.comment = prevItemComment;\n                    props.comment = props.comment.substring(prevItemComment.length + 1);\n                }\n            }\n        }\n        if (!isMap && !sep && !props.found) {\n            // item is a value in a seq\n            // → key & sep are empty, start does not include ? or :\n            const valueNode = value\n                ? composeNode(ctx, value, props, onError)\n                : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n            coll.items.push(valueNode);\n            offset = valueNode.range[2];\n            if (isBlock(value))\n                onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n        }\n        else {\n            // item is a key+value pair\n            // key value\n            ctx.atKey = true;\n            const keyStart = props.end;\n            const keyNode = key\n                ? composeNode(ctx, key, props, onError)\n                : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n            if (isBlock(key))\n                onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n            ctx.atKey = false;\n            // value properties\n            const valueProps = resolveProps.resolveProps(sep ?? [], {\n                flow: fcName,\n                indicator: 'map-value-ind',\n                next: value,\n                offset: keyNode.range[2],\n                onError,\n                parentIndent: fc.indent,\n                startOnNewline: false\n            });\n            if (valueProps.found) {\n                if (!isMap && !props.found && ctx.options.strict) {\n                    if (sep)\n                        for (const st of sep) {\n                            if (st === valueProps.found)\n                                break;\n                            if (st.type === 'newline') {\n                                onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n                                break;\n                            }\n                        }\n                    if (props.start < valueProps.found.offset - 1024)\n                        onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n                }\n            }\n            else if (value) {\n                if ('source' in value && value.source?.[0] === ':')\n                    onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n                else\n                    onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n            }\n            // value value\n            const valueNode = value\n                ? composeNode(ctx, value, valueProps, onError)\n                : valueProps.found\n                    ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n                    : null;\n            if (valueNode) {\n                if (isBlock(value))\n                    onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n            }\n            else if (valueProps.comment) {\n                if (keyNode.comment)\n                    keyNode.comment += '\\n' + valueProps.comment;\n                else\n                    keyNode.comment = valueProps.comment;\n            }\n            const pair = new Pair.Pair(keyNode, valueNode);\n            if (ctx.options.keepSourceTokens)\n                pair.srcToken = collItem;\n            if (isMap) {\n                const map = coll;\n                if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n                    onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n                map.items.push(pair);\n            }\n            else {\n                const map = new YAMLMap.YAMLMap(ctx.schema);\n                map.flow = true;\n                map.items.push(pair);\n                const endRange = (valueNode ?? keyNode).range;\n                map.range = [keyNode.range[0], endRange[1], endRange[2]];\n                coll.items.push(map);\n            }\n            offset = valueNode ? valueNode.range[2] : valueProps.end;\n        }\n    }\n    const expectedEnd = isMap ? '}' : ']';\n    const [ce, ...ee] = fc.end;\n    let cePos = offset;\n    if (ce?.source === expectedEnd)\n        cePos = ce.offset + ce.source.length;\n    else {\n        const name = fcName[0].toUpperCase() + fcName.substring(1);\n        const msg = atRoot\n            ? `${name} must end with a ${expectedEnd}`\n            : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n        onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n        if (ce && ce.source.length !== 1)\n            ee.unshift(ce);\n    }\n    if (ee.length > 0) {\n        const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n        if (end.comment) {\n            if (coll.comment)\n                coll.comment += '\\n' + end.comment;\n            else\n                coll.comment = end.comment;\n        }\n        coll.range = [fc.offset, cePos, end.offset];\n    }\n    else {\n        coll.range = [fc.offset, cePos, cePos];\n    }\n    return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n    const coll = token.type === 'block-map'\n        ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n        : token.type === 'block-seq'\n            ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n            : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n    const Coll = coll.constructor;\n    // If we got a tagName matching the class, or the tag name is '!',\n    // then use the tagName from the node class used to create it.\n    if (tagName === '!' || tagName === Coll.tagName) {\n        coll.tag = Coll.tagName;\n        return coll;\n    }\n    if (tagName)\n        coll.tag = tagName;\n    return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n    const tagToken = props.tag;\n    const tagName = !tagToken\n        ? null\n        : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n    if (token.type === 'block-seq') {\n        const { anchor, newlineAfterProp: nl } = props;\n        const lastProp = anchor && tagToken\n            ? anchor.offset > tagToken.offset\n                ? anchor\n                : tagToken\n            : (anchor ?? tagToken);\n        if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n            const message = 'Missing newline after block sequence props';\n            onError(lastProp, 'MISSING_CHAR', message);\n        }\n    }\n    const expType = token.type === 'block-map'\n        ? 'map'\n        : token.type === 'block-seq'\n            ? 'seq'\n            : token.start.source === '{'\n                ? 'map'\n                : 'seq';\n    // shortcut: check if it's a generic YAMLMap or YAMLSeq\n    // before jumping into the custom tag logic.\n    if (!tagToken ||\n        !tagName ||\n        tagName === '!' ||\n        (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n        (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n        return resolveCollection(CN, ctx, token, onError, tagName);\n    }\n    let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n    if (!tag) {\n        const kt = ctx.schema.knownTags[tagName];\n        if (kt?.collection === expType) {\n            ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n            tag = kt;\n        }\n        else {\n            if (kt) {\n                onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n            }\n            else {\n                onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n            }\n            return resolveCollection(CN, ctx, token, onError, tagName);\n        }\n    }\n    const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n    const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n    const node = identity.isNode(res)\n        ? res\n        : new Scalar.Scalar(res);\n    node.range = coll.range;\n    node.tag = tagName;\n    if (tag?.format)\n        node.format = tag.format;\n    return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n    const start = scalar.offset;\n    const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n    if (!header)\n        return { value: '', type: null, comment: '', range: [start, start, start] };\n    const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n    const lines = scalar.source ? splitLines(scalar.source) : [];\n    // determine the end of content & start of chomping\n    let chompStart = lines.length;\n    for (let i = lines.length - 1; i >= 0; --i) {\n        const content = lines[i][1];\n        if (content === '' || content === '\\r')\n            chompStart = i;\n        else\n            break;\n    }\n    // shortcut for empty contents\n    if (chompStart === 0) {\n        const value = header.chomp === '+' && lines.length > 0\n            ? '\\n'.repeat(Math.max(1, lines.length - 1))\n            : '';\n        let end = start + header.length;\n        if (scalar.source)\n            end += scalar.source.length;\n        return { value, type, comment: header.comment, range: [start, end, end] };\n    }\n    // find the indentation level to trim from start\n    let trimIndent = scalar.indent + header.indent;\n    let offset = scalar.offset + header.length;\n    let contentStart = 0;\n    for (let i = 0; i < chompStart; ++i) {\n        const [indent, content] = lines[i];\n        if (content === '' || content === '\\r') {\n            if (header.indent === 0 && indent.length > trimIndent)\n                trimIndent = indent.length;\n        }\n        else {\n            if (indent.length < trimIndent) {\n                const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n                onError(offset + indent.length, 'MISSING_CHAR', message);\n            }\n            if (header.indent === 0)\n                trimIndent = indent.length;\n            contentStart = i;\n            if (trimIndent === 0 && !ctx.atRoot) {\n                const message = 'Block scalar values in collections must be indented';\n                onError(offset, 'BAD_INDENT', message);\n            }\n            break;\n        }\n        offset += indent.length + content.length + 1;\n    }\n    // include trailing more-indented empty lines in content\n    for (let i = lines.length - 1; i >= chompStart; --i) {\n        if (lines[i][0].length > trimIndent)\n            chompStart = i + 1;\n    }\n    let value = '';\n    let sep = '';\n    let prevMoreIndented = false;\n    // leading whitespace is kept intact\n    for (let i = 0; i < contentStart; ++i)\n        value += lines[i][0].slice(trimIndent) + '\\n';\n    for (let i = contentStart; i < chompStart; ++i) {\n        let [indent, content] = lines[i];\n        offset += indent.length + content.length + 1;\n        const crlf = content[content.length - 1] === '\\r';\n        if (crlf)\n            content = content.slice(0, -1);\n        /* istanbul ignore if already caught in lexer */\n        if (content && indent.length < trimIndent) {\n            const src = header.indent\n                ? 'explicit indentation indicator'\n                : 'first line';\n            const message = `Block scalar lines must not be less indented than their ${src}`;\n            onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n            indent = '';\n        }\n        if (type === Scalar.Scalar.BLOCK_LITERAL) {\n            value += sep + indent.slice(trimIndent) + content;\n            sep = '\\n';\n        }\n        else if (indent.length > trimIndent || content[0] === '\\t') {\n            // more-indented content within a folded block\n            if (sep === ' ')\n                sep = '\\n';\n            else if (!prevMoreIndented && sep === '\\n')\n                sep = '\\n\\n';\n            value += sep + indent.slice(trimIndent) + content;\n            sep = '\\n';\n            prevMoreIndented = true;\n        }\n        else if (content === '') {\n            // empty line\n            if (sep === '\\n')\n                value += '\\n';\n            else\n                sep = '\\n';\n        }\n        else {\n            value += sep + content;\n            sep = ' ';\n            prevMoreIndented = false;\n        }\n    }\n    switch (header.chomp) {\n        case '-':\n            break;\n        case '+':\n            for (let i = chompStart; i < lines.length; ++i)\n                value += '\\n' + lines[i][0].slice(trimIndent);\n            if (value[value.length - 1] !== '\\n')\n                value += '\\n';\n            break;\n        default:\n            value += '\\n';\n    }\n    const end = start + header.length + scalar.source.length;\n    return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n    /* istanbul ignore if should not happen */\n    if (props[0].type !== 'block-scalar-header') {\n        onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n        return null;\n    }\n    const { source } = props[0];\n    const mode = source[0];\n    let indent = 0;\n    let chomp = '';\n    let error = -1;\n    for (let i = 1; i < source.length; ++i) {\n        const ch = source[i];\n        if (!chomp && (ch === '-' || ch === '+'))\n            chomp = ch;\n        else {\n            const n = Number(ch);\n            if (!indent && n)\n                indent = n;\n            else if (error === -1)\n                error = offset + i;\n        }\n    }\n    if (error !== -1)\n        onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n    let hasSpace = false;\n    let comment = '';\n    let length = source.length;\n    for (let i = 1; i < props.length; ++i) {\n        const token = props[i];\n        switch (token.type) {\n            case 'space':\n                hasSpace = true;\n            // fallthrough\n            case 'newline':\n                length += token.source.length;\n                break;\n            case 'comment':\n                if (strict && !hasSpace) {\n                    const message = 'Comments must be separated from other tokens by white space characters';\n                    onError(token, 'MISSING_CHAR', message);\n                }\n                length += token.source.length;\n                comment = token.source.substring(1);\n                break;\n            case 'error':\n                onError(token, 'UNEXPECTED_TOKEN', token.message);\n                length += token.source.length;\n                break;\n            /* istanbul ignore next should not happen */\n            default: {\n                const message = `Unexpected token in block scalar header: ${token.type}`;\n                onError(token, 'UNEXPECTED_TOKEN', message);\n                const ts = token.source;\n                if (ts && typeof ts === 'string')\n                    length += ts.length;\n            }\n        }\n    }\n    return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n    const split = source.split(/\\n( *)/);\n    const first = split[0];\n    const m = first.match(/^( *)/);\n    const line0 = m?.[1]\n        ? [m[1], first.slice(m[1].length)]\n        : ['', first];\n    const lines = [line0];\n    for (let i = 1; i < split.length; i += 2)\n        lines.push([split[i], split[i + 1]]);\n    return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n    const { offset, type, source, end } = scalar;\n    let _type;\n    let value;\n    const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n    switch (type) {\n        case 'scalar':\n            _type = Scalar.Scalar.PLAIN;\n            value = plainValue(source, _onError);\n            break;\n        case 'single-quoted-scalar':\n            _type = Scalar.Scalar.QUOTE_SINGLE;\n            value = singleQuotedValue(source, _onError);\n            break;\n        case 'double-quoted-scalar':\n            _type = Scalar.Scalar.QUOTE_DOUBLE;\n            value = doubleQuotedValue(source, _onError);\n            break;\n        /* istanbul ignore next should not happen */\n        default:\n            onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n            return {\n                value: '',\n                type: null,\n                comment: '',\n                range: [offset, offset + source.length, offset + source.length]\n            };\n    }\n    const valueEnd = offset + source.length;\n    const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n    return {\n        value,\n        type: _type,\n        comment: re.comment,\n        range: [offset, valueEnd, re.offset]\n    };\n}\nfunction plainValue(source, onError) {\n    let badChar = '';\n    switch (source[0]) {\n        /* istanbul ignore next should not happen */\n        case '\\t':\n            badChar = 'a tab character';\n            break;\n        case ',':\n            badChar = 'flow indicator character ,';\n            break;\n        case '%':\n            badChar = 'directive indicator character %';\n            break;\n        case '|':\n        case '>': {\n            badChar = `block scalar indicator ${source[0]}`;\n            break;\n        }\n        case '@':\n        case '`': {\n            badChar = `reserved character ${source[0]}`;\n            break;\n        }\n    }\n    if (badChar)\n        onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n    return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n    if (source[source.length - 1] !== \"'\" || source.length === 1)\n        onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n    return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n    /**\n     * The negative lookbehind here and in the `re` RegExp is to\n     * prevent causing a polynomial search time in certain cases.\n     *\n     * The try-catch is for Safari, which doesn't support this yet:\n     * https://caniuse.com/js-regexp-lookbehind\n     */\n    let first, line;\n    try {\n        first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n        line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n    }\n    catch {\n        first = /(.*?)[ \\t]*\\r?\\n/sy;\n        line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n    }\n    let match = first.exec(source);\n    if (!match)\n        return source;\n    let res = match[1];\n    let sep = ' ';\n    let pos = first.lastIndex;\n    line.lastIndex = pos;\n    while ((match = line.exec(source))) {\n        if (match[1] === '') {\n            if (sep === '\\n')\n                res += sep;\n            else\n                sep = '\\n';\n        }\n        else {\n            res += sep + match[1];\n            sep = ' ';\n        }\n        pos = line.lastIndex;\n    }\n    const last = /[ \\t]*(.*)/sy;\n    last.lastIndex = pos;\n    match = last.exec(source);\n    return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n    let res = '';\n    for (let i = 1; i < source.length - 1; ++i) {\n        const ch = source[i];\n        if (ch === '\\r' && source[i + 1] === '\\n')\n            continue;\n        if (ch === '\\n') {\n            const { fold, offset } = foldNewline(source, i);\n            res += fold;\n            i = offset;\n        }\n        else if (ch === '\\\\') {\n            let next = source[++i];\n            const cc = escapeCodes[next];\n            if (cc)\n                res += cc;\n            else if (next === '\\n') {\n                // skip escaped newlines, but still trim the following line\n                next = source[i + 1];\n                while (next === ' ' || next === '\\t')\n                    next = source[++i + 1];\n            }\n            else if (next === '\\r' && source[i + 1] === '\\n') {\n                // skip escaped CRLF newlines, but still trim the following line\n                next = source[++i + 1];\n                while (next === ' ' || next === '\\t')\n                    next = source[++i + 1];\n            }\n            else if (next === 'x' || next === 'u' || next === 'U') {\n                const length = next === 'x' ? 2 : next === 'u' ? 4 : 8;\n                res += parseCharCode(source, i + 1, length, onError);\n                i += length;\n            }\n            else {\n                const raw = source.substr(i - 1, 2);\n                onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n                res += raw;\n            }\n        }\n        else if (ch === ' ' || ch === '\\t') {\n            // trim trailing whitespace\n            const wsStart = i;\n            let next = source[i + 1];\n            while (next === ' ' || next === '\\t')\n                next = source[++i + 1];\n            if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n                res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n        }\n        else {\n            res += ch;\n        }\n    }\n    if (source[source.length - 1] !== '\"' || source.length === 1)\n        onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n    return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n    let fold = '';\n    let ch = source[offset + 1];\n    while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n        if (ch === '\\r' && source[offset + 2] !== '\\n')\n            break;\n        if (ch === '\\n')\n            fold += '\\n';\n        offset += 1;\n        ch = source[offset + 1];\n    }\n    if (!fold)\n        fold = ' ';\n    return { fold, offset };\n}\nconst escapeCodes = {\n    '0': '\\0', // null character\n    a: '\\x07', // bell character\n    b: '\\b', // backspace\n    e: '\\x1b', // escape character\n    f: '\\f', // form feed\n    n: '\\n', // line feed\n    r: '\\r', // carriage return\n    t: '\\t', // horizontal tab\n    v: '\\v', // vertical tab\n    N: '\\u0085', // Unicode next line\n    _: '\\u00a0', // Unicode non-breaking space\n    L: '\\u2028', // Unicode line separator\n    P: '\\u2029', // Unicode paragraph separator\n    ' ': ' ',\n    '\"': '\"',\n    '/': '/',\n    '\\\\': '\\\\',\n    '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n    const cc = source.substr(offset, length);\n    const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n    const code = ok ? parseInt(cc, 16) : NaN;\n    try {\n        return String.fromCodePoint(code);\n    }\n    catch {\n        const raw = source.substr(offset - 2, length + 2);\n        onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n        return raw;\n    }\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n    const { value, type, comment, range } = token.type === 'block-scalar'\n        ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n        : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n    const tagName = tagToken\n        ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n        : null;\n    let tag;\n    if (ctx.options.stringKeys && ctx.atKey) {\n        tag = ctx.schema[identity.SCALAR];\n    }\n    else if (tagName)\n        tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n    else if (token.type === 'scalar')\n        tag = findScalarTagByTest(ctx, value, token, onError);\n    else\n        tag = ctx.schema[identity.SCALAR];\n    let scalar;\n    try {\n        const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n        scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n    }\n    catch (error) {\n        const msg = error instanceof Error ? error.message : String(error);\n        onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n        scalar = new Scalar.Scalar(value);\n    }\n    scalar.range = range;\n    scalar.source = value;\n    if (type)\n        scalar.type = type;\n    if (tagName)\n        scalar.tag = tagName;\n    if (tag.format)\n        scalar.format = tag.format;\n    if (comment)\n        scalar.comment = comment;\n    return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n    if (tagName === '!')\n        return schema[identity.SCALAR]; // non-specific tag\n    const matchWithTest = [];\n    for (const tag of schema.tags) {\n        if (!tag.collection && tag.tag === tagName) {\n            if (tag.default && tag.test)\n                matchWithTest.push(tag);\n            else\n                return tag;\n        }\n    }\n    for (const tag of matchWithTest)\n        if (tag.test?.test(value))\n            return tag;\n    const kt = schema.knownTags[tagName];\n    if (kt && !kt.collection) {\n        // Ensure that the known tag is available for stringifying,\n        // but does not get used by default.\n        schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n        return kt;\n    }\n    onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n    return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n    const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n        tag.test?.test(value)) || schema[identity.SCALAR];\n    if (schema.compat) {\n        const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n            schema[identity.SCALAR];\n        if (tag.tag !== compat.tag) {\n            const ts = directives.tagString(tag.tag);\n            const cs = directives.tagString(compat.tag);\n            const msg = `Value may be parsed as either ${ts} or ${cs}`;\n            onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n        }\n    }\n    return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n    if (before) {\n        pos ?? (pos = before.length);\n        for (let i = pos - 1; i >= 0; --i) {\n            let st = before[i];\n            switch (st.type) {\n                case 'space':\n                case 'comment':\n                case 'newline':\n                    offset -= st.source.length;\n                    continue;\n            }\n            // Technically, an empty scalar is immediately after the last non-empty\n            // node, but it's more useful to place it after any whitespace.\n            st = before[++i];\n            while (st?.type === 'space') {\n                offset += st.source.length;\n                st = before[++i];\n            }\n            break;\n        }\n    }\n    return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n    const atKey = ctx.atKey;\n    const { spaceBefore, comment, anchor, tag } = props;\n    let node;\n    let isSrcToken = true;\n    switch (token.type) {\n        case 'alias':\n            node = composeAlias(ctx, token, onError);\n            if (anchor || tag)\n                onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n            break;\n        case 'scalar':\n        case 'single-quoted-scalar':\n        case 'double-quoted-scalar':\n        case 'block-scalar':\n            node = composeScalar.composeScalar(ctx, token, tag, onError);\n            if (anchor)\n                node.anchor = anchor.source.substring(1);\n            break;\n        case 'block-map':\n        case 'block-seq':\n        case 'flow-collection':\n            try {\n                node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n                if (anchor)\n                    node.anchor = anchor.source.substring(1);\n            }\n            catch (error) {\n                // Almost certainly here due to a stack overflow\n                const message = error instanceof Error ? error.message : String(error);\n                onError(token, 'RESOURCE_EXHAUSTION', message);\n            }\n            break;\n        default: {\n            const message = token.type === 'error'\n                ? token.message\n                : `Unsupported token (type: ${token.type})`;\n            onError(token, 'UNEXPECTED_TOKEN', message);\n            isSrcToken = false;\n        }\n    }\n    node ?? (node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError));\n    if (anchor && node.anchor === '')\n        onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n    if (atKey &&\n        ctx.options.stringKeys &&\n        (!identity.isScalar(node) ||\n            typeof node.value !== 'string' ||\n            (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n        const msg = 'With stringKeys, all keys must be strings';\n        onError(tag ?? token, 'NON_STRING_KEY', msg);\n    }\n    if (spaceBefore)\n        node.spaceBefore = true;\n    if (comment) {\n        if (token.type === 'scalar' && token.source === '')\n            node.comment = comment;\n        else\n            node.commentBefore = comment;\n    }\n    // @ts-expect-error Type checking misses meaning of isSrcToken\n    if (ctx.options.keepSourceTokens && isSrcToken)\n        node.srcToken = token;\n    return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n    const token = {\n        type: 'scalar',\n        offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n        indent: -1,\n        source: ''\n    };\n    const node = composeScalar.composeScalar(ctx, token, tag, onError);\n    if (anchor) {\n        node.anchor = anchor.source.substring(1);\n        if (node.anchor === '')\n            onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n    }\n    if (spaceBefore)\n        node.spaceBefore = true;\n    if (comment) {\n        node.comment = comment;\n        node.range[2] = end;\n    }\n    return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n    const alias = new Alias.Alias(source.substring(1));\n    if (alias.source === '')\n        onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n    if (alias.source.endsWith(':'))\n        onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n    const valueEnd = offset + source.length;\n    const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n    alias.range = [offset, valueEnd, re.offset];\n    if (re.comment)\n        alias.comment = re.comment;\n    return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n    const opts = Object.assign({ _directives: directives }, options);\n    const doc = new Document.Document(undefined, opts);\n    const ctx = {\n        atKey: false,\n        atRoot: true,\n        directives: doc.directives,\n        options: doc.options,\n        schema: doc.schema\n    };\n    const props = resolveProps.resolveProps(start, {\n        indicator: 'doc-start',\n        next: value ?? end?.[0],\n        offset,\n        onError,\n        parentIndent: 0,\n        startOnNewline: true\n    });\n    if (props.found) {\n        doc.directives.docStart = true;\n        if (value &&\n            (value.type === 'block-map' || value.type === 'block-seq') &&\n            !props.hasNewline)\n            onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n    }\n    // @ts-expect-error If Contents is set, let's trust the user\n    doc.contents = value\n        ? composeNode.composeNode(ctx, value, props, onError)\n        : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n    const contentEnd = doc.contents.range[2];\n    const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n    if (re.comment)\n        doc.comment = re.comment;\n    doc.range = [offset, contentEnd, re.offset];\n    return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n    if (typeof src === 'number')\n        return [src, src + 1];\n    if (Array.isArray(src))\n        return src.length === 2 ? src : [src[0], src[1]];\n    const { offset, source } = src;\n    return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n    let comment = '';\n    let atComment = false;\n    let afterEmptyLine = false;\n    for (let i = 0; i < prelude.length; ++i) {\n        const source = prelude[i];\n        switch (source[0]) {\n            case '#':\n                comment +=\n                    (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n                        (source.substring(1) || ' ');\n                atComment = true;\n                afterEmptyLine = false;\n                break;\n            case '%':\n                if (prelude[i + 1]?.[0] !== '#')\n                    i += 1;\n                atComment = false;\n                break;\n            default:\n                // This may be wrong after doc-end, but in that case it doesn't matter\n                if (!atComment)\n                    afterEmptyLine = true;\n                atComment = false;\n        }\n    }\n    return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n    constructor(options = {}) {\n        this.doc = null;\n        this.atDirectives = false;\n        this.prelude = [];\n        this.errors = [];\n        this.warnings = [];\n        this.onError = (source, code, message, warning) => {\n            const pos = getErrorPos(source);\n            if (warning)\n                this.warnings.push(new errors.YAMLWarning(pos, code, message));\n            else\n                this.errors.push(new errors.YAMLParseError(pos, code, message));\n        };\n        // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n        this.directives = new directives.Directives({ version: options.version || '1.2' });\n        this.options = options;\n    }\n    decorate(doc, afterDoc) {\n        const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n        //console.log({ dc: doc.comment, prelude, comment })\n        if (comment) {\n            const dc = doc.contents;\n            if (afterDoc) {\n                doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n            }\n            else if (afterEmptyLine || doc.directives.docStart || !dc) {\n                doc.commentBefore = comment;\n            }\n            else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n                let it = dc.items[0];\n                if (identity.isPair(it))\n                    it = it.key;\n                const cb = it.commentBefore;\n                it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n            }\n            else {\n                const cb = dc.commentBefore;\n                dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n            }\n        }\n        if (afterDoc) {\n            for (let i = 0; i < this.errors.length; ++i)\n                doc.errors.push(this.errors[i]);\n            for (let i = 0; i < this.warnings.length; ++i)\n                doc.warnings.push(this.warnings[i]);\n        }\n        else {\n            doc.errors = this.errors;\n            doc.warnings = this.warnings;\n        }\n        this.prelude = [];\n        this.errors = [];\n        this.warnings = [];\n    }\n    /**\n     * Current stream status information.\n     *\n     * Mostly useful at the end of input for an empty stream.\n     */\n    streamInfo() {\n        return {\n            comment: parsePrelude(this.prelude).comment,\n            directives: this.directives,\n            errors: this.errors,\n            warnings: this.warnings\n        };\n    }\n    /**\n     * Compose tokens into documents.\n     *\n     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n     */\n    *compose(tokens, forceDoc = false, endOffset = -1) {\n        for (const token of tokens)\n            yield* this.next(token);\n        yield* this.end(forceDoc, endOffset);\n    }\n    /** Advance the composer by one CST token. */\n    *next(token) {\n        if (node_process.env.LOG_STREAM)\n            console.dir(token, { depth: null });\n        switch (token.type) {\n            case 'directive':\n                this.directives.add(token.source, (offset, message, warning) => {\n                    const pos = getErrorPos(token);\n                    pos[0] += offset;\n                    this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n                });\n                this.prelude.push(token.source);\n                this.atDirectives = true;\n                break;\n            case 'document': {\n                const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n                if (this.atDirectives && !doc.directives.docStart)\n                    this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n                this.decorate(doc, false);\n                if (this.doc)\n                    yield this.doc;\n                this.doc = doc;\n                this.atDirectives = false;\n                break;\n            }\n            case 'byte-order-mark':\n            case 'space':\n                break;\n            case 'comment':\n            case 'newline':\n                this.prelude.push(token.source);\n                break;\n            case 'error': {\n                const msg = token.source\n                    ? `${token.message}: ${JSON.stringify(token.source)}`\n                    : token.message;\n                const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n                if (this.atDirectives || !this.doc)\n                    this.errors.push(error);\n                else\n                    this.doc.errors.push(error);\n                break;\n            }\n            case 'doc-end': {\n                if (!this.doc) {\n                    const msg = 'Unexpected doc-end without preceding document';\n                    this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n                    break;\n                }\n                this.doc.directives.docEnd = true;\n                const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n                this.decorate(this.doc, true);\n                if (end.comment) {\n                    const dc = this.doc.comment;\n                    this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n                }\n                this.doc.range[2] = end.offset;\n                break;\n            }\n            default:\n                this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n        }\n    }\n    /**\n     * Call at end of input to yield any remaining document.\n     *\n     * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n     * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n     */\n    *end(forceDoc = false, endOffset = -1) {\n        if (this.doc) {\n            this.decorate(this.doc, true);\n            yield this.doc;\n            this.doc = null;\n        }\n        else if (forceDoc) {\n            const opts = Object.assign({ _directives: this.directives }, this.options);\n            const doc = new Document.Document(undefined, opts);\n            if (this.atDirectives)\n                this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n            doc.range = [0, endOffset, endOffset];\n            this.decorate(doc, false);\n            yield doc;\n        }\n    }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n    if (token) {\n        const _onError = (pos, code, message) => {\n            const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n            if (onError)\n                onError(offset, code, message);\n            else\n                throw new errors.YAMLParseError([offset, offset + 1], code, message);\n        };\n        switch (token.type) {\n            case 'scalar':\n            case 'single-quoted-scalar':\n            case 'double-quoted-scalar':\n                return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n            case 'block-scalar':\n                return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n        }\n    }\n    return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n    const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n    const source = stringifyString.stringifyString({ type, value }, {\n        implicitKey,\n        indent: indent > 0 ? ' '.repeat(indent) : '',\n        inFlow,\n        options: { blockQuote: true, lineWidth: -1 }\n    });\n    const end = context.end ?? [\n        { type: 'newline', offset: -1, indent, source: '\\n' }\n    ];\n    switch (source[0]) {\n        case '|':\n        case '>': {\n            const he = source.indexOf('\\n');\n            const head = source.substring(0, he);\n            const body = source.substring(he + 1) + '\\n';\n            const props = [\n                { type: 'block-scalar-header', offset, indent, source: head }\n            ];\n            if (!addEndtoBlockProps(props, end))\n                props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n            return { type: 'block-scalar', offset, indent, props, source: body };\n        }\n        case '\"':\n            return { type: 'double-quoted-scalar', offset, indent, source, end };\n        case \"'\":\n            return { type: 'single-quoted-scalar', offset, indent, source, end };\n        default:\n            return { type: 'scalar', offset, indent, source, end };\n    }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n    let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n    let indent = 'indent' in token ? token.indent : null;\n    if (afterKey && typeof indent === 'number')\n        indent += 2;\n    if (!type)\n        switch (token.type) {\n            case 'single-quoted-scalar':\n                type = 'QUOTE_SINGLE';\n                break;\n            case 'double-quoted-scalar':\n                type = 'QUOTE_DOUBLE';\n                break;\n            case 'block-scalar': {\n                const header = token.props[0];\n                if (header.type !== 'block-scalar-header')\n                    throw new Error('Invalid block scalar header');\n                type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n                break;\n            }\n            default:\n                type = 'PLAIN';\n        }\n    const source = stringifyString.stringifyString({ type, value }, {\n        implicitKey: implicitKey || indent === null,\n        indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n        inFlow,\n        options: { blockQuote: true, lineWidth: -1 }\n    });\n    switch (source[0]) {\n        case '|':\n        case '>':\n            setBlockScalarValue(token, source);\n            break;\n        case '\"':\n            setFlowScalarValue(token, source, 'double-quoted-scalar');\n            break;\n        case \"'\":\n            setFlowScalarValue(token, source, 'single-quoted-scalar');\n            break;\n        default:\n            setFlowScalarValue(token, source, 'scalar');\n    }\n}\nfunction setBlockScalarValue(token, source) {\n    const he = source.indexOf('\\n');\n    const head = source.substring(0, he);\n    const body = source.substring(he + 1) + '\\n';\n    if (token.type === 'block-scalar') {\n        const header = token.props[0];\n        if (header.type !== 'block-scalar-header')\n            throw new Error('Invalid block scalar header');\n        header.source = head;\n        token.source = body;\n    }\n    else {\n        const { offset } = token;\n        const indent = 'indent' in token ? token.indent : -1;\n        const props = [\n            { type: 'block-scalar-header', offset, indent, source: head }\n        ];\n        if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n            props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n        for (const key of Object.keys(token))\n            if (key !== 'type' && key !== 'offset')\n                delete token[key];\n        Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n    }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n    if (end)\n        for (const st of end)\n            switch (st.type) {\n                case 'space':\n                case 'comment':\n                    props.push(st);\n                    break;\n                case 'newline':\n                    props.push(st);\n                    return true;\n            }\n    return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n    switch (token.type) {\n        case 'scalar':\n        case 'double-quoted-scalar':\n        case 'single-quoted-scalar':\n            token.type = type;\n            token.source = source;\n            break;\n        case 'block-scalar': {\n            const end = token.props.slice(1);\n            let oa = source.length;\n            if (token.props[0].type === 'block-scalar-header')\n                oa -= token.props[0].source.length;\n            for (const tok of end)\n                tok.offset += oa;\n            delete token.props;\n            Object.assign(token, { type, source, end });\n            break;\n        }\n        case 'block-map':\n        case 'block-seq': {\n            const offset = token.offset + source.length;\n            const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n            delete token.items;\n            Object.assign(token, { type, source, end: [nl] });\n            break;\n        }\n        default: {\n            const indent = 'indent' in token ? token.indent : -1;\n            const end = 'end' in token && Array.isArray(token.end)\n                ? token.end.filter(st => st.type === 'space' ||\n                    st.type === 'comment' ||\n                    st.type === 'newline')\n                : [];\n            for (const key of Object.keys(token))\n                if (key !== 'type' && key !== 'offset')\n                    delete token[key];\n            Object.assign(token, { type, indent, source, end });\n        }\n    }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n    switch (token.type) {\n        case 'block-scalar': {\n            let res = '';\n            for (const tok of token.props)\n                res += stringifyToken(tok);\n            return res + token.source;\n        }\n        case 'block-map':\n        case 'block-seq': {\n            let res = '';\n            for (const item of token.items)\n                res += stringifyItem(item);\n            return res;\n        }\n        case 'flow-collection': {\n            let res = token.start.source;\n            for (const item of token.items)\n                res += stringifyItem(item);\n            for (const st of token.end)\n                res += st.source;\n            return res;\n        }\n        case 'document': {\n            let res = stringifyItem(token);\n            if (token.end)\n                for (const st of token.end)\n                    res += st.source;\n            return res;\n        }\n        default: {\n            let res = token.source;\n            if ('end' in token && token.end)\n                for (const st of token.end)\n                    res += st.source;\n            return res;\n        }\n    }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n    let res = '';\n    for (const st of start)\n        res += st.source;\n    if (key)\n        res += stringifyToken(key);\n    if (sep)\n        for (const st of sep)\n            res += st.source;\n    if (value)\n        res += stringifyToken(value);\n    return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n *   - `item`: The current item, which included the following members:\n *     - `start: SourceToken[]` – Source tokens before the key or value,\n *       possibly including its anchor or tag.\n *     - `key?: Token | null` – Set for pair values. May then be `null`, if\n *       the key before the `:` separator is empty.\n *     - `sep?: SourceToken[]` – Source tokens between the key and the value,\n *       which should include the `:` map value indicator if `value` is set.\n *     - `value?: Token` – The value of a sequence item, or of a map pair.\n *   - `path`: The steps from the root to the current node, as an array of\n *     `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n *   - `undefined` (default): Do nothing and continue\n *   - `visit.SKIP`: Do not visit the children of this token, continue with\n *      next sibling\n *   - `visit.BREAK`: Terminate traversal completely\n *   - `visit.REMOVE`: Remove the current item, then continue with the next one\n *   - `number`: Set the index of the next step. This is useful especially if\n *     the index of the current token has changed.\n *   - `function`: Define the next visitor for this item. After the original\n *     visitor is called on item entry, next visitors are called after handling\n *     a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n    if ('type' in cst && cst.type === 'document')\n        cst = { start: cst.start, value: cst.value };\n    _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n    let item = cst;\n    for (const [field, index] of path) {\n        const tok = item?.[field];\n        if (tok && 'items' in tok) {\n            item = tok.items[index];\n        }\n        else\n            return undefined;\n    }\n    return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n    const parent = visit.itemAtPath(cst, path.slice(0, -1));\n    const field = path[path.length - 1][0];\n    const coll = parent?.[field];\n    if (coll && 'items' in coll)\n        return coll;\n    throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n    let ctrl = visitor(item, path);\n    if (typeof ctrl === 'symbol')\n        return ctrl;\n    for (const field of ['key', 'value']) {\n        const token = item[field];\n        if (token && 'items' in token) {\n            for (let i = 0; i < token.items.length; ++i) {\n                const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n                if (typeof ci === 'number')\n                    i = ci - 1;\n                else if (ci === BREAK)\n                    return BREAK;\n                else if (ci === REMOVE) {\n                    token.items.splice(i, 1);\n                    i -= 1;\n                }\n            }\n            if (typeof ctrl === 'function' && field === 'key')\n                ctrl = ctrl(item, path);\n        }\n    }\n    return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n    (token.type === 'scalar' ||\n        token.type === 'single-quoted-scalar' ||\n        token.type === 'double-quoted-scalar' ||\n        token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n    switch (token) {\n        case BOM:\n            return '<BOM>';\n        case DOCUMENT:\n            return '<DOC>';\n        case FLOW_END:\n            return '<FLOW_END>';\n        case SCALAR:\n            return '<SCALAR>';\n        default:\n            return JSON.stringify(token);\n    }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n    switch (source) {\n        case BOM:\n            return 'byte-order-mark';\n        case DOCUMENT:\n            return 'doc-mode';\n        case FLOW_END:\n            return 'flow-error-end';\n        case SCALAR:\n            return 'scalar';\n        case '---':\n            return 'doc-start';\n        case '...':\n            return 'doc-end';\n        case '':\n        case '\\n':\n        case '\\r\\n':\n            return 'newline';\n        case '-':\n            return 'seq-item-ind';\n        case '?':\n            return 'explicit-key-ind';\n        case ':':\n            return 'map-value-ind';\n        case '{':\n            return 'flow-map-start';\n        case '}':\n            return 'flow-map-end';\n        case '[':\n            return 'flow-seq-start';\n        case ']':\n            return 'flow-seq-end';\n        case ',':\n            return 'comma';\n    }\n    switch (source[0]) {\n        case ' ':\n        case '\\t':\n            return 'space';\n        case '#':\n            return 'comment';\n        case '%':\n            return 'directive-line';\n        case '*':\n            return 'alias';\n        case '&':\n            return 'anchor';\n        case '!':\n            return 'tag';\n        case \"'\":\n            return 'single-quoted-scalar';\n        case '\"':\n            return 'double-quoted-scalar';\n        case '|':\n        case '>':\n            return 'block-scalar-header';\n    }\n    return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n  directive -> line-end -> stream\n  indent + line-end -> stream\n  [else] -> line-start\n\nline-end\n  comment -> line-end\n  newline -> .\n  input-end -> END\n\nline-start\n  doc-start -> doc\n  doc-end -> stream\n  [else] -> indent -> block-start\n\nblock-start\n  seq-item-start -> block-start\n  explicit-key-start -> block-start\n  map-value-start -> block-start\n  [else] -> doc\n\ndoc\n  line-end -> line-start\n  spaces -> doc\n  anchor -> doc\n  tag -> doc\n  flow-start -> flow -> doc\n  flow-end -> error -> doc\n  seq-item-start -> error -> doc\n  explicit-key-start -> error -> doc\n  map-value-start -> doc\n  alias -> doc\n  quote-start -> quoted-scalar -> doc\n  block-scalar-header -> line-end -> block-scalar(min) -> line-start\n  [else] -> plain-scalar(false, min) -> doc\n\nflow\n  line-end -> flow\n  spaces -> flow\n  anchor -> flow\n  tag -> flow\n  flow-start -> flow -> flow\n  flow-end -> .\n  seq-item-start -> error -> flow\n  explicit-key-start -> flow\n  map-value-start -> flow\n  alias -> flow\n  quote-start -> quoted-scalar -> flow\n  comma -> flow\n  [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n  quote-end -> .\n  [else] -> quoted-scalar\n\nblock-scalar(min)\n  newline + peek(indent < min) -> .\n  [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n  scalar-end(is-flow) -> .\n  peek(newline + (indent < min)) -> .\n  [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n    switch (ch) {\n        case undefined:\n        case ' ':\n        case '\\n':\n        case '\\r':\n        case '\\t':\n            return true;\n        default:\n            return false;\n    }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n    constructor() {\n        /**\n         * Flag indicating whether the end of the current buffer marks the end of\n         * all input\n         */\n        this.atEnd = false;\n        /**\n         * Explicit indent set in block scalar header, as an offset from the current\n         * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n         * explicitly set.\n         */\n        this.blockScalarIndent = -1;\n        /**\n         * Block scalars that include a + (keep) chomping indicator in their header\n         * include trailing empty lines, which are otherwise excluded from the\n         * scalar's contents.\n         */\n        this.blockScalarKeep = false;\n        /** Current input */\n        this.buffer = '';\n        /**\n         * Flag noting whether the map value indicator : can immediately follow this\n         * node within a flow context.\n         */\n        this.flowKey = false;\n        /** Count of surrounding flow collection levels. */\n        this.flowLevel = 0;\n        /**\n         * Minimum level of indentation required for next lines to be parsed as a\n         * part of the current scalar value.\n         */\n        this.indentNext = 0;\n        /** Indentation level of the current line. */\n        this.indentValue = 0;\n        /** Position of the next \\n character. */\n        this.lineEndPos = null;\n        /** Stores the state of the lexer if reaching the end of incpomplete input */\n        this.next = null;\n        /** A pointer to `buffer`; the current position of the lexer. */\n        this.pos = 0;\n    }\n    /**\n     * Generate YAML tokens from the `source` string. If `incomplete`,\n     * a part of the last line may be left as a buffer for the next call.\n     *\n     * @returns A generator of lexical tokens\n     */\n    *lex(source, incomplete = false) {\n        if (source) {\n            if (typeof source !== 'string')\n                throw TypeError('source is not a string');\n            this.buffer = this.buffer ? this.buffer + source : source;\n            this.lineEndPos = null;\n        }\n        this.atEnd = !incomplete;\n        let next = this.next ?? 'stream';\n        while (next && (incomplete || this.hasChars(1)))\n            next = yield* this.parseNext(next);\n    }\n    atLineEnd() {\n        let i = this.pos;\n        let ch = this.buffer[i];\n        while (ch === ' ' || ch === '\\t')\n            ch = this.buffer[++i];\n        if (!ch || ch === '#' || ch === '\\n')\n            return true;\n        if (ch === '\\r')\n            return this.buffer[i + 1] === '\\n';\n        return false;\n    }\n    charAt(n) {\n        return this.buffer[this.pos + n];\n    }\n    continueScalar(offset) {\n        let ch = this.buffer[offset];\n        if (this.indentNext > 0) {\n            let indent = 0;\n            while (ch === ' ')\n                ch = this.buffer[++indent + offset];\n            if (ch === '\\r') {\n                const next = this.buffer[indent + offset + 1];\n                if (next === '\\n' || (!next && !this.atEnd))\n                    return offset + indent + 1;\n            }\n            return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n                ? offset + indent\n                : -1;\n        }\n        if (ch === '-' || ch === '.') {\n            const dt = this.buffer.substr(offset, 3);\n            if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n                return -1;\n        }\n        return offset;\n    }\n    getLine() {\n        let end = this.lineEndPos;\n        if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n            end = this.buffer.indexOf('\\n', this.pos);\n            this.lineEndPos = end;\n        }\n        if (end === -1)\n            return this.atEnd ? this.buffer.substring(this.pos) : null;\n        if (this.buffer[end - 1] === '\\r')\n            end -= 1;\n        return this.buffer.substring(this.pos, end);\n    }\n    hasChars(n) {\n        return this.pos + n <= this.buffer.length;\n    }\n    setNext(state) {\n        this.buffer = this.buffer.substring(this.pos);\n        this.pos = 0;\n        this.lineEndPos = null;\n        this.next = state;\n        return null;\n    }\n    peek(n) {\n        return this.buffer.substr(this.pos, n);\n    }\n    *parseNext(next) {\n        switch (next) {\n            case 'stream':\n                return yield* this.parseStream();\n            case 'line-start':\n                return yield* this.parseLineStart();\n            case 'block-start':\n                return yield* this.parseBlockStart();\n            case 'doc':\n                return yield* this.parseDocument();\n            case 'flow':\n                return yield* this.parseFlowCollection();\n            case 'quoted-scalar':\n                return yield* this.parseQuotedScalar();\n            case 'block-scalar':\n                return yield* this.parseBlockScalar();\n            case 'plain-scalar':\n                return yield* this.parsePlainScalar();\n        }\n    }\n    *parseStream() {\n        let line = this.getLine();\n        if (line === null)\n            return this.setNext('stream');\n        if (line[0] === cst.BOM) {\n            yield* this.pushCount(1);\n            line = line.substring(1);\n        }\n        if (line[0] === '%') {\n            let dirEnd = line.length;\n            let cs = line.indexOf('#');\n            while (cs !== -1) {\n                const ch = line[cs - 1];\n                if (ch === ' ' || ch === '\\t') {\n                    dirEnd = cs - 1;\n                    break;\n                }\n                else {\n                    cs = line.indexOf('#', cs + 1);\n                }\n            }\n            while (true) {\n                const ch = line[dirEnd - 1];\n                if (ch === ' ' || ch === '\\t')\n                    dirEnd -= 1;\n                else\n                    break;\n            }\n            const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n            yield* this.pushCount(line.length - n); // possible comment\n            this.pushNewline();\n            return 'stream';\n        }\n        if (this.atLineEnd()) {\n            const sp = yield* this.pushSpaces(true);\n            yield* this.pushCount(line.length - sp);\n            yield* this.pushNewline();\n            return 'stream';\n        }\n        yield cst.DOCUMENT;\n        return yield* this.parseLineStart();\n    }\n    *parseLineStart() {\n        const ch = this.charAt(0);\n        if (!ch && !this.atEnd)\n            return this.setNext('line-start');\n        if (ch === '-' || ch === '.') {\n            if (!this.atEnd && !this.hasChars(4))\n                return this.setNext('line-start');\n            const s = this.peek(3);\n            if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n                yield* this.pushCount(3);\n                this.indentValue = 0;\n                this.indentNext = 0;\n                return s === '---' ? 'doc' : 'stream';\n            }\n        }\n        this.indentValue = yield* this.pushSpaces(false);\n        if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n            this.indentNext = this.indentValue;\n        return yield* this.parseBlockStart();\n    }\n    *parseBlockStart() {\n        const [ch0, ch1] = this.peek(2);\n        if (!ch1 && !this.atEnd)\n            return this.setNext('block-start');\n        if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n            const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n            this.indentNext = this.indentValue + 1;\n            this.indentValue += n;\n            return 'block-start';\n        }\n        return 'doc';\n    }\n    *parseDocument() {\n        yield* this.pushSpaces(true);\n        const line = this.getLine();\n        if (line === null)\n            return this.setNext('doc');\n        let n = yield* this.pushIndicators();\n        switch (line[n]) {\n            case '#':\n                yield* this.pushCount(line.length - n);\n            // fallthrough\n            case undefined:\n                yield* this.pushNewline();\n                return yield* this.parseLineStart();\n            case '{':\n            case '[':\n                yield* this.pushCount(1);\n                this.flowKey = false;\n                this.flowLevel = 1;\n                return 'flow';\n            case '}':\n            case ']':\n                // this is an error\n                yield* this.pushCount(1);\n                return 'doc';\n            case '*':\n                yield* this.pushUntil(isNotAnchorChar);\n                return 'doc';\n            case '\"':\n            case \"'\":\n                return yield* this.parseQuotedScalar();\n            case '|':\n            case '>':\n                n += yield* this.parseBlockScalarHeader();\n                n += yield* this.pushSpaces(true);\n                yield* this.pushCount(line.length - n);\n                yield* this.pushNewline();\n                return yield* this.parseBlockScalar();\n            default:\n                return yield* this.parsePlainScalar();\n        }\n    }\n    *parseFlowCollection() {\n        let nl, sp;\n        let indent = -1;\n        do {\n            nl = yield* this.pushNewline();\n            if (nl > 0) {\n                sp = yield* this.pushSpaces(false);\n                this.indentValue = indent = sp;\n            }\n            else {\n                sp = 0;\n            }\n            sp += yield* this.pushSpaces(true);\n        } while (nl + sp > 0);\n        const line = this.getLine();\n        if (line === null)\n            return this.setNext('flow');\n        if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n            (indent === 0 &&\n                (line.startsWith('---') || line.startsWith('...')) &&\n                isEmpty(line[3]))) {\n            // Allowing for the terminal ] or } at the same (rather than greater)\n            // indent level as the initial [ or { is technically invalid, but\n            // failing here would be surprising to users.\n            const atFlowEndMarker = indent === this.indentNext - 1 &&\n                this.flowLevel === 1 &&\n                (line[0] === ']' || line[0] === '}');\n            if (!atFlowEndMarker) {\n                // this is an error\n                this.flowLevel = 0;\n                yield cst.FLOW_END;\n                return yield* this.parseLineStart();\n            }\n        }\n        let n = 0;\n        while (line[n] === ',') {\n            n += yield* this.pushCount(1);\n            n += yield* this.pushSpaces(true);\n            this.flowKey = false;\n        }\n        n += yield* this.pushIndicators();\n        switch (line[n]) {\n            case undefined:\n                return 'flow';\n            case '#':\n                yield* this.pushCount(line.length - n);\n                return 'flow';\n            case '{':\n            case '[':\n                yield* this.pushCount(1);\n                this.flowKey = false;\n                this.flowLevel += 1;\n                return 'flow';\n            case '}':\n            case ']':\n                yield* this.pushCount(1);\n                this.flowKey = true;\n                this.flowLevel -= 1;\n                return this.flowLevel ? 'flow' : 'doc';\n            case '*':\n                yield* this.pushUntil(isNotAnchorChar);\n                return 'flow';\n            case '\"':\n            case \"'\":\n                this.flowKey = true;\n                return yield* this.parseQuotedScalar();\n            case ':': {\n                const next = this.charAt(1);\n                if (this.flowKey || isEmpty(next) || next === ',') {\n                    this.flowKey = false;\n                    yield* this.pushCount(1);\n                    yield* this.pushSpaces(true);\n                    return 'flow';\n                }\n            }\n            // fallthrough\n            default:\n                this.flowKey = false;\n                return yield* this.parsePlainScalar();\n        }\n    }\n    *parseQuotedScalar() {\n        const quote = this.charAt(0);\n        let end = this.buffer.indexOf(quote, this.pos + 1);\n        if (quote === \"'\") {\n            while (end !== -1 && this.buffer[end + 1] === \"'\")\n                end = this.buffer.indexOf(\"'\", end + 2);\n        }\n        else {\n            // double-quote\n            while (end !== -1) {\n                let n = 0;\n                while (this.buffer[end - 1 - n] === '\\\\')\n                    n += 1;\n                if (n % 2 === 0)\n                    break;\n                end = this.buffer.indexOf('\"', end + 1);\n            }\n        }\n        // Only looking for newlines within the quotes\n        const qb = this.buffer.substring(0, end);\n        let nl = qb.indexOf('\\n', this.pos);\n        if (nl !== -1) {\n            while (nl !== -1) {\n                const cs = this.continueScalar(nl + 1);\n                if (cs === -1)\n                    break;\n                nl = qb.indexOf('\\n', cs);\n            }\n            if (nl !== -1) {\n                // this is an error caused by an unexpected unindent\n                end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n            }\n        }\n        if (end === -1) {\n            if (!this.atEnd)\n                return this.setNext('quoted-scalar');\n            end = this.buffer.length;\n        }\n        yield* this.pushToIndex(end + 1, false);\n        return this.flowLevel ? 'flow' : 'doc';\n    }\n    *parseBlockScalarHeader() {\n        this.blockScalarIndent = -1;\n        this.blockScalarKeep = false;\n        let i = this.pos;\n        while (true) {\n            const ch = this.buffer[++i];\n            if (ch === '+')\n                this.blockScalarKeep = true;\n            else if (ch > '0' && ch <= '9')\n                this.blockScalarIndent = Number(ch) - 1;\n            else if (ch !== '-')\n                break;\n        }\n        return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n    }\n    *parseBlockScalar() {\n        let nl = this.pos - 1; // may be -1 if this.pos === 0\n        let indent = 0;\n        let ch;\n        loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n            switch (ch) {\n                case ' ':\n                    indent += 1;\n                    break;\n                case '\\n':\n                    nl = i;\n                    indent = 0;\n                    break;\n                case '\\r': {\n                    const next = this.buffer[i + 1];\n                    if (!next && !this.atEnd)\n                        return this.setNext('block-scalar');\n                    if (next === '\\n')\n                        break;\n                } // fallthrough\n                default:\n                    break loop;\n            }\n        }\n        if (!ch && !this.atEnd)\n            return this.setNext('block-scalar');\n        if (indent >= this.indentNext) {\n            if (this.blockScalarIndent === -1)\n                this.indentNext = indent;\n            else {\n                this.indentNext =\n                    this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n            }\n            do {\n                const cs = this.continueScalar(nl + 1);\n                if (cs === -1)\n                    break;\n                nl = this.buffer.indexOf('\\n', cs);\n            } while (nl !== -1);\n            if (nl === -1) {\n                if (!this.atEnd)\n                    return this.setNext('block-scalar');\n                nl = this.buffer.length;\n            }\n        }\n        // Trailing insufficiently indented tabs are invalid.\n        // To catch that during parsing, we include them in the block scalar value.\n        let i = nl + 1;\n        ch = this.buffer[i];\n        while (ch === ' ')\n            ch = this.buffer[++i];\n        if (ch === '\\t') {\n            while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n                ch = this.buffer[++i];\n            nl = i - 1;\n        }\n        else if (!this.blockScalarKeep) {\n            do {\n                let i = nl - 1;\n                let ch = this.buffer[i];\n                if (ch === '\\r')\n                    ch = this.buffer[--i];\n                const lastChar = i; // Drop the line if last char not more indented\n                while (ch === ' ')\n                    ch = this.buffer[--i];\n                if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n                    nl = i;\n                else\n                    break;\n            } while (true);\n        }\n        yield cst.SCALAR;\n        yield* this.pushToIndex(nl + 1, true);\n        return yield* this.parseLineStart();\n    }\n    *parsePlainScalar() {\n        const inFlow = this.flowLevel > 0;\n        let end = this.pos - 1;\n        let i = this.pos - 1;\n        let ch;\n        while ((ch = this.buffer[++i])) {\n            if (ch === ':') {\n                const next = this.buffer[i + 1];\n                if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n                    break;\n                end = i;\n            }\n            else if (isEmpty(ch)) {\n                let next = this.buffer[i + 1];\n                if (ch === '\\r') {\n                    if (next === '\\n') {\n                        i += 1;\n                        ch = '\\n';\n                        next = this.buffer[i + 1];\n                    }\n                    else\n                        end = i;\n                }\n                if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n                    break;\n                if (ch === '\\n') {\n                    const cs = this.continueScalar(i + 1);\n                    if (cs === -1)\n                        break;\n                    i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n                }\n            }\n            else {\n                if (inFlow && flowIndicatorChars.has(ch))\n                    break;\n                end = i;\n            }\n        }\n        if (!ch && !this.atEnd)\n            return this.setNext('plain-scalar');\n        yield cst.SCALAR;\n        yield* this.pushToIndex(end + 1, true);\n        return inFlow ? 'flow' : 'doc';\n    }\n    *pushCount(n) {\n        if (n > 0) {\n            yield this.buffer.substr(this.pos, n);\n            this.pos += n;\n            return n;\n        }\n        return 0;\n    }\n    *pushToIndex(i, allowEmpty) {\n        const s = this.buffer.slice(this.pos, i);\n        if (s) {\n            yield s;\n            this.pos += s.length;\n            return s.length;\n        }\n        else if (allowEmpty)\n            yield '';\n        return 0;\n    }\n    *pushIndicators() {\n        let n = 0;\n        loop: while (true) {\n            switch (this.charAt(0)) {\n                case '!':\n                    n += yield* this.pushTag();\n                    n += yield* this.pushSpaces(true);\n                    continue loop;\n                case '&':\n                    n += yield* this.pushUntil(isNotAnchorChar);\n                    n += yield* this.pushSpaces(true);\n                    continue loop;\n                case '-': // this is an error\n                case '?': // this is an error outside flow collections\n                case ':': {\n                    const inFlow = this.flowLevel > 0;\n                    const ch1 = this.charAt(1);\n                    if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n                        if (!inFlow)\n                            this.indentNext = this.indentValue + 1;\n                        else if (this.flowKey)\n                            this.flowKey = false;\n                        n += yield* this.pushCount(1);\n                        n += yield* this.pushSpaces(true);\n                        continue loop;\n                    }\n                }\n            }\n            break loop;\n        }\n        return n;\n    }\n    *pushTag() {\n        if (this.charAt(1) === '<') {\n            let i = this.pos + 2;\n            let ch = this.buffer[i];\n            while (!isEmpty(ch) && ch !== '>')\n                ch = this.buffer[++i];\n            return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n        }\n        else {\n            let i = this.pos + 1;\n            let ch = this.buffer[i];\n            while (ch) {\n                if (tagChars.has(ch))\n                    ch = this.buffer[++i];\n                else if (ch === '%' &&\n                    hexDigits.has(this.buffer[i + 1]) &&\n                    hexDigits.has(this.buffer[i + 2])) {\n                    ch = this.buffer[(i += 3)];\n                }\n                else\n                    break;\n            }\n            return yield* this.pushToIndex(i, false);\n        }\n    }\n    *pushNewline() {\n        const ch = this.buffer[this.pos];\n        if (ch === '\\n')\n            return yield* this.pushCount(1);\n        else if (ch === '\\r' && this.charAt(1) === '\\n')\n            return yield* this.pushCount(2);\n        else\n            return 0;\n    }\n    *pushSpaces(allowTabs) {\n        let i = this.pos - 1;\n        let ch;\n        do {\n            ch = this.buffer[++i];\n        } while (ch === ' ' || (allowTabs && ch === '\\t'));\n        const n = i - this.pos;\n        if (n > 0) {\n            yield this.buffer.substr(this.pos, n);\n            this.pos = i;\n        }\n        return n;\n    }\n    *pushUntil(test) {\n        let i = this.pos;\n        let ch = this.buffer[i];\n        while (!test(ch))\n            ch = this.buffer[++i];\n        return yield* this.pushToIndex(i, false);\n    }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n    constructor() {\n        this.lineStarts = [];\n        /**\n         * Should be called in ascending order. Otherwise, call\n         * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n         */\n        this.addNewLine = (offset) => this.lineStarts.push(offset);\n        /**\n         * Performs a binary search and returns the 1-indexed { line, col }\n         * position of `offset`. If `line === 0`, `addNewLine` has never been\n         * called or `offset` is before the first known newline.\n         */\n        this.linePos = (offset) => {\n            let low = 0;\n            let high = this.lineStarts.length;\n            while (low < high) {\n                const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n                if (this.lineStarts[mid] < offset)\n                    low = mid + 1;\n                else\n                    high = mid;\n            }\n            if (this.lineStarts[low] === offset)\n                return { line: low + 1, col: 1 };\n            if (low === 0)\n                return { line: 0, col: offset };\n            const start = this.lineStarts[low - 1];\n            return { line: low, col: offset - start + 1 };\n        };\n    }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n    for (let i = 0; i < list.length; ++i)\n        if (list[i].type === type)\n            return true;\n    return false;\n}\nfunction findNonEmptyIndex(list) {\n    for (let i = 0; i < list.length; ++i) {\n        switch (list[i].type) {\n            case 'space':\n            case 'comment':\n            case 'newline':\n                break;\n            default:\n                return i;\n        }\n    }\n    return -1;\n}\nfunction isFlowToken(token) {\n    switch (token?.type) {\n        case 'alias':\n        case 'scalar':\n        case 'single-quoted-scalar':\n        case 'double-quoted-scalar':\n        case 'flow-collection':\n            return true;\n        default:\n            return false;\n    }\n}\nfunction getPrevProps(parent) {\n    switch (parent.type) {\n        case 'document':\n            return parent.start;\n        case 'block-map': {\n            const it = parent.items[parent.items.length - 1];\n            return it.sep ?? it.start;\n        }\n        case 'block-seq':\n            return parent.items[parent.items.length - 1].start;\n        /* istanbul ignore next should not happen */\n        default:\n            return [];\n    }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n    if (prev.length === 0)\n        return [];\n    let i = prev.length;\n    loop: while (--i >= 0) {\n        switch (prev[i].type) {\n            case 'doc-start':\n            case 'explicit-key-ind':\n            case 'map-value-ind':\n            case 'seq-item-ind':\n            case 'newline':\n                break loop;\n        }\n    }\n    while (prev[++i]?.type === 'space') {\n        /* loop */\n    }\n    return prev.splice(i, prev.length);\n}\nfunction arrayPushArray(target, source) {\n    // May exhaust call stack with large `source` array\n    if (source.length < 1e5)\n        Array.prototype.push.apply(target, source);\n    else\n        for (let i = 0; i < source.length; ++i)\n            target.push(source[i]);\n}\nfunction fixFlowSeqItems(fc) {\n    if (fc.start.type === 'flow-seq-start') {\n        for (const it of fc.items) {\n            if (it.sep &&\n                !it.value &&\n                !includesToken(it.start, 'explicit-key-ind') &&\n                !includesToken(it.sep, 'map-value-ind')) {\n                if (it.key)\n                    it.value = it.key;\n                delete it.key;\n                if (isFlowToken(it.value)) {\n                    if (it.value.end)\n                        arrayPushArray(it.value.end, it.sep);\n                    else\n                        it.value.end = it.sep;\n                }\n                else\n                    arrayPushArray(it.start, it.sep);\n                delete it.sep;\n            }\n        }\n    }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n *   // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n *   const parser = new Parser()\n *   for (const lexeme of lexer.lex(source))\n *     yield* parser.next(lexeme)\n *   yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n *   // token: Token\n * }\n * ```\n */\nclass Parser {\n    /**\n     * @param onNewLine - If defined, called separately with the start position of\n     *   each new line (in `parse()`, including the start of input).\n     */\n    constructor(onNewLine) {\n        /** If true, space and sequence indicators count as indentation */\n        this.atNewLine = true;\n        /** If true, next token is a scalar value */\n        this.atScalar = false;\n        /** Current indentation level */\n        this.indent = 0;\n        /** Current offset since the start of parsing */\n        this.offset = 0;\n        /** On the same line with a block map key */\n        this.onKeyLine = false;\n        /** Top indicates the node that's currently being built */\n        this.stack = [];\n        /** The source of the current token, set in parse() */\n        this.source = '';\n        /** The type of the current token, set in parse() */\n        this.type = '';\n        // Must be defined after `next()`\n        this.lexer = new lexer.Lexer();\n        this.onNewLine = onNewLine;\n    }\n    /**\n     * Parse `source` as a YAML stream.\n     * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n     *\n     * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n     *\n     * @returns A generator of tokens representing each directive, document, and other structure.\n     */\n    *parse(source, incomplete = false) {\n        if (this.onNewLine && this.offset === 0)\n            this.onNewLine(0);\n        for (const lexeme of this.lexer.lex(source, incomplete))\n            yield* this.next(lexeme);\n        if (!incomplete)\n            yield* this.end();\n    }\n    /**\n     * Advance the parser by the `source` of one lexical token.\n     */\n    *next(source) {\n        this.source = source;\n        if (node_process.env.LOG_TOKENS)\n            console.log('|', cst.prettyToken(source));\n        if (this.atScalar) {\n            this.atScalar = false;\n            yield* this.step();\n            this.offset += source.length;\n            return;\n        }\n        const type = cst.tokenType(source);\n        if (!type) {\n            const message = `Not a YAML token: ${source}`;\n            yield* this.pop({ type: 'error', offset: this.offset, message, source });\n            this.offset += source.length;\n        }\n        else if (type === 'scalar') {\n            this.atNewLine = false;\n            this.atScalar = true;\n            this.type = 'scalar';\n        }\n        else {\n            this.type = type;\n            yield* this.step();\n            switch (type) {\n                case 'newline':\n                    this.atNewLine = true;\n                    this.indent = 0;\n                    if (this.onNewLine)\n                        this.onNewLine(this.offset + source.length);\n                    break;\n                case 'space':\n                    if (this.atNewLine && source[0] === ' ')\n                        this.indent += source.length;\n                    break;\n                case 'explicit-key-ind':\n                case 'map-value-ind':\n                case 'seq-item-ind':\n                    if (this.atNewLine)\n                        this.indent += source.length;\n                    break;\n                case 'doc-mode':\n                case 'flow-error-end':\n                    return;\n                default:\n                    this.atNewLine = false;\n            }\n            this.offset += source.length;\n        }\n    }\n    /** Call at end of input to push out any remaining constructions */\n    *end() {\n        while (this.stack.length > 0)\n            yield* this.pop();\n    }\n    get sourceToken() {\n        const st = {\n            type: this.type,\n            offset: this.offset,\n            indent: this.indent,\n            source: this.source\n        };\n        return st;\n    }\n    *step() {\n        const top = this.peek(1);\n        if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n            while (this.stack.length > 0)\n                yield* this.pop();\n            this.stack.push({\n                type: 'doc-end',\n                offset: this.offset,\n                source: this.source\n            });\n            return;\n        }\n        if (!top)\n            return yield* this.stream();\n        switch (top.type) {\n            case 'document':\n                return yield* this.document(top);\n            case 'alias':\n            case 'scalar':\n            case 'single-quoted-scalar':\n            case 'double-quoted-scalar':\n                return yield* this.scalar(top);\n            case 'block-scalar':\n                return yield* this.blockScalar(top);\n            case 'block-map':\n                return yield* this.blockMap(top);\n            case 'block-seq':\n                return yield* this.blockSequence(top);\n            case 'flow-collection':\n                return yield* this.flowCollection(top);\n            case 'doc-end':\n                return yield* this.documentEnd(top);\n        }\n        /* istanbul ignore next should not happen */\n        yield* this.pop();\n    }\n    peek(n) {\n        return this.stack[this.stack.length - n];\n    }\n    *pop(error) {\n        const token = error ?? this.stack.pop();\n        /* istanbul ignore if should not happen */\n        if (!token) {\n            const message = 'Tried to pop an empty stack';\n            yield { type: 'error', offset: this.offset, source: '', message };\n        }\n        else if (this.stack.length === 0) {\n            yield token;\n        }\n        else {\n            const top = this.peek(1);\n            if (token.type === 'block-scalar') {\n                // Block scalars use their parent rather than header indent\n                token.indent = 'indent' in top ? top.indent : 0;\n            }\n            else if (token.type === 'flow-collection' && top.type === 'document') {\n                // Ignore all indent for top-level flow collections\n                token.indent = 0;\n            }\n            if (token.type === 'flow-collection')\n                fixFlowSeqItems(token);\n            switch (top.type) {\n                case 'document':\n                    top.value = token;\n                    break;\n                case 'block-scalar':\n                    top.props.push(token); // error\n                    break;\n                case 'block-map': {\n                    const it = top.items[top.items.length - 1];\n                    if (it.value) {\n                        top.items.push({ start: [], key: token, sep: [] });\n                        this.onKeyLine = true;\n                        return;\n                    }\n                    else if (it.sep) {\n                        it.value = token;\n                    }\n                    else {\n                        Object.assign(it, { key: token, sep: [] });\n                        this.onKeyLine = !it.explicitKey;\n                        return;\n                    }\n                    break;\n                }\n                case 'block-seq': {\n                    const it = top.items[top.items.length - 1];\n                    if (it.value)\n                        top.items.push({ start: [], value: token });\n                    else\n                        it.value = token;\n                    break;\n                }\n                case 'flow-collection': {\n                    const it = top.items[top.items.length - 1];\n                    if (!it || it.value)\n                        top.items.push({ start: [], key: token, sep: [] });\n                    else if (it.sep)\n                        it.value = token;\n                    else\n                        Object.assign(it, { key: token, sep: [] });\n                    return;\n                }\n                /* istanbul ignore next should not happen */\n                default:\n                    yield* this.pop();\n                    yield* this.pop(token);\n            }\n            if ((top.type === 'document' ||\n                top.type === 'block-map' ||\n                top.type === 'block-seq') &&\n                (token.type === 'block-map' || token.type === 'block-seq')) {\n                const last = token.items[token.items.length - 1];\n                if (last &&\n                    !last.sep &&\n                    !last.value &&\n                    last.start.length > 0 &&\n                    findNonEmptyIndex(last.start) === -1 &&\n                    (token.indent === 0 ||\n                        last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n                    if (top.type === 'document')\n                        top.end = last.start;\n                    else\n                        top.items.push({ start: last.start });\n                    token.items.splice(-1, 1);\n                }\n            }\n        }\n    }\n    *stream() {\n        switch (this.type) {\n            case 'directive-line':\n                yield { type: 'directive', offset: this.offset, source: this.source };\n                return;\n            case 'byte-order-mark':\n            case 'space':\n            case 'comment':\n            case 'newline':\n                yield this.sourceToken;\n                return;\n            case 'doc-mode':\n            case 'doc-start': {\n                const doc = {\n                    type: 'document',\n                    offset: this.offset,\n                    start: []\n                };\n                if (this.type === 'doc-start')\n                    doc.start.push(this.sourceToken);\n                this.stack.push(doc);\n                return;\n            }\n        }\n        yield {\n            type: 'error',\n            offset: this.offset,\n            message: `Unexpected ${this.type} token in YAML stream`,\n            source: this.source\n        };\n    }\n    *document(doc) {\n        if (doc.value)\n            return yield* this.lineEnd(doc);\n        switch (this.type) {\n            case 'doc-start': {\n                if (findNonEmptyIndex(doc.start) !== -1) {\n                    yield* this.pop();\n                    yield* this.step();\n                }\n                else\n                    doc.start.push(this.sourceToken);\n                return;\n            }\n            case 'anchor':\n            case 'tag':\n            case 'space':\n            case 'comment':\n            case 'newline':\n                doc.start.push(this.sourceToken);\n                return;\n        }\n        const bv = this.startBlockValue(doc);\n        if (bv)\n            this.stack.push(bv);\n        else {\n            yield {\n                type: 'error',\n                offset: this.offset,\n                message: `Unexpected ${this.type} token in YAML document`,\n                source: this.source\n            };\n        }\n    }\n    *scalar(scalar) {\n        if (this.type === 'map-value-ind') {\n            const prev = getPrevProps(this.peek(2));\n            const start = getFirstKeyStartProps(prev);\n            let sep;\n            if (scalar.end) {\n                sep = scalar.end;\n                sep.push(this.sourceToken);\n                delete scalar.end;\n            }\n            else\n                sep = [this.sourceToken];\n            const map = {\n                type: 'block-map',\n                offset: scalar.offset,\n                indent: scalar.indent,\n                items: [{ start, key: scalar, sep }]\n            };\n            this.onKeyLine = true;\n            this.stack[this.stack.length - 1] = map;\n        }\n        else\n            yield* this.lineEnd(scalar);\n    }\n    *blockScalar(scalar) {\n        switch (this.type) {\n            case 'space':\n            case 'comment':\n            case 'newline':\n                scalar.props.push(this.sourceToken);\n                return;\n            case 'scalar':\n                scalar.source = this.source;\n                // block-scalar source includes trailing newline\n                this.atNewLine = true;\n                this.indent = 0;\n                if (this.onNewLine) {\n                    let nl = this.source.indexOf('\\n') + 1;\n                    while (nl !== 0) {\n                        this.onNewLine(this.offset + nl);\n                        nl = this.source.indexOf('\\n', nl) + 1;\n                    }\n                }\n                yield* this.pop();\n                break;\n            /* istanbul ignore next should not happen */\n            default:\n                yield* this.pop();\n                yield* this.step();\n        }\n    }\n    *blockMap(map) {\n        const it = map.items[map.items.length - 1];\n        // it.sep is true-ish if pair already has key or : separator\n        switch (this.type) {\n            case 'newline':\n                this.onKeyLine = false;\n                if (it.value) {\n                    const end = 'end' in it.value ? it.value.end : undefined;\n                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n                    if (last?.type === 'comment')\n                        end?.push(this.sourceToken);\n                    else\n                        map.items.push({ start: [this.sourceToken] });\n                }\n                else if (it.sep) {\n                    it.sep.push(this.sourceToken);\n                }\n                else {\n                    it.start.push(this.sourceToken);\n                }\n                return;\n            case 'space':\n            case 'comment':\n                if (it.value) {\n                    map.items.push({ start: [this.sourceToken] });\n                }\n                else if (it.sep) {\n                    it.sep.push(this.sourceToken);\n                }\n                else {\n                    if (this.atIndentedComment(it.start, map.indent)) {\n                        const prev = map.items[map.items.length - 2];\n                        const end = prev?.value?.end;\n                        if (Array.isArray(end)) {\n                            arrayPushArray(end, it.start);\n                            end.push(this.sourceToken);\n                            map.items.pop();\n                            return;\n                        }\n                    }\n                    it.start.push(this.sourceToken);\n                }\n                return;\n        }\n        if (this.indent >= map.indent) {\n            const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n            const atNextItem = atMapIndent &&\n                (it.sep || it.explicitKey) &&\n                this.type !== 'seq-item-ind';\n            // For empty nodes, assign newline-separated not indented empty tokens to following node\n            let start = [];\n            if (atNextItem && it.sep && !it.value) {\n                const nl = [];\n                for (let i = 0; i < it.sep.length; ++i) {\n                    const st = it.sep[i];\n                    switch (st.type) {\n                        case 'newline':\n                            nl.push(i);\n                            break;\n                        case 'space':\n                            break;\n                        case 'comment':\n                            if (st.indent > map.indent)\n                                nl.length = 0;\n                            break;\n                        default:\n                            nl.length = 0;\n                    }\n                }\n                if (nl.length >= 2)\n                    start = it.sep.splice(nl[1]);\n            }\n            switch (this.type) {\n                case 'anchor':\n                case 'tag':\n                    if (atNextItem || it.value) {\n                        start.push(this.sourceToken);\n                        map.items.push({ start });\n                        this.onKeyLine = true;\n                    }\n                    else if (it.sep) {\n                        it.sep.push(this.sourceToken);\n                    }\n                    else {\n                        it.start.push(this.sourceToken);\n                    }\n                    return;\n                case 'explicit-key-ind':\n                    if (!it.sep && !it.explicitKey) {\n                        it.start.push(this.sourceToken);\n                        it.explicitKey = true;\n                    }\n                    else if (atNextItem || it.value) {\n                        start.push(this.sourceToken);\n                        map.items.push({ start, explicitKey: true });\n                    }\n                    else {\n                        this.stack.push({\n                            type: 'block-map',\n                            offset: this.offset,\n                            indent: this.indent,\n                            items: [{ start: [this.sourceToken], explicitKey: true }]\n                        });\n                    }\n                    this.onKeyLine = true;\n                    return;\n                case 'map-value-ind':\n                    if (it.explicitKey) {\n                        if (!it.sep) {\n                            if (includesToken(it.start, 'newline')) {\n                                Object.assign(it, { key: null, sep: [this.sourceToken] });\n                            }\n                            else {\n                                const start = getFirstKeyStartProps(it.start);\n                                this.stack.push({\n                                    type: 'block-map',\n                                    offset: this.offset,\n                                    indent: this.indent,\n                                    items: [{ start, key: null, sep: [this.sourceToken] }]\n                                });\n                            }\n                        }\n                        else if (it.value) {\n                            map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n                        }\n                        else if (includesToken(it.sep, 'map-value-ind')) {\n                            this.stack.push({\n                                type: 'block-map',\n                                offset: this.offset,\n                                indent: this.indent,\n                                items: [{ start, key: null, sep: [this.sourceToken] }]\n                            });\n                        }\n                        else if (isFlowToken(it.key) &&\n                            !includesToken(it.sep, 'newline')) {\n                            const start = getFirstKeyStartProps(it.start);\n                            const key = it.key;\n                            const sep = it.sep;\n                            sep.push(this.sourceToken);\n                            // @ts-expect-error type guard is wrong here\n                            delete it.key;\n                            // @ts-expect-error type guard is wrong here\n                            delete it.sep;\n                            this.stack.push({\n                                type: 'block-map',\n                                offset: this.offset,\n                                indent: this.indent,\n                                items: [{ start, key, sep }]\n                            });\n                        }\n                        else if (start.length > 0) {\n                            // Not actually at next item\n                            it.sep = it.sep.concat(start, this.sourceToken);\n                        }\n                        else {\n                            it.sep.push(this.sourceToken);\n                        }\n                    }\n                    else {\n                        if (!it.sep) {\n                            Object.assign(it, { key: null, sep: [this.sourceToken] });\n                        }\n                        else if (it.value || atNextItem) {\n                            map.items.push({ start, key: null, sep: [this.sourceToken] });\n                        }\n                        else if (includesToken(it.sep, 'map-value-ind')) {\n                            this.stack.push({\n                                type: 'block-map',\n                                offset: this.offset,\n                                indent: this.indent,\n                                items: [{ start: [], key: null, sep: [this.sourceToken] }]\n                            });\n                        }\n                        else {\n                            it.sep.push(this.sourceToken);\n                        }\n                    }\n                    this.onKeyLine = true;\n                    return;\n                case 'alias':\n                case 'scalar':\n                case 'single-quoted-scalar':\n                case 'double-quoted-scalar': {\n                    const fs = this.flowScalar(this.type);\n                    if (atNextItem || it.value) {\n                        map.items.push({ start, key: fs, sep: [] });\n                        this.onKeyLine = true;\n                    }\n                    else if (it.sep) {\n                        this.stack.push(fs);\n                    }\n                    else {\n                        Object.assign(it, { key: fs, sep: [] });\n                        this.onKeyLine = true;\n                    }\n                    return;\n                }\n                default: {\n                    const bv = this.startBlockValue(map);\n                    if (bv) {\n                        if (bv.type === 'block-seq') {\n                            if (!it.explicitKey &&\n                                it.sep &&\n                                !includesToken(it.sep, 'newline')) {\n                                yield* this.pop({\n                                    type: 'error',\n                                    offset: this.offset,\n                                    message: 'Unexpected block-seq-ind on same line with key',\n                                    source: this.source\n                                });\n                                return;\n                            }\n                        }\n                        else if (atMapIndent) {\n                            map.items.push({ start });\n                        }\n                        this.stack.push(bv);\n                        return;\n                    }\n                }\n            }\n        }\n        yield* this.pop();\n        yield* this.step();\n    }\n    *blockSequence(seq) {\n        const it = seq.items[seq.items.length - 1];\n        switch (this.type) {\n            case 'newline':\n                if (it.value) {\n                    const end = 'end' in it.value ? it.value.end : undefined;\n                    const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n                    if (last?.type === 'comment')\n                        end?.push(this.sourceToken);\n                    else\n                        seq.items.push({ start: [this.sourceToken] });\n                }\n                else\n                    it.start.push(this.sourceToken);\n                return;\n            case 'space':\n            case 'comment':\n                if (it.value)\n                    seq.items.push({ start: [this.sourceToken] });\n                else {\n                    if (this.atIndentedComment(it.start, seq.indent)) {\n                        const prev = seq.items[seq.items.length - 2];\n                        const end = prev?.value?.end;\n                        if (Array.isArray(end)) {\n                            arrayPushArray(end, it.start);\n                            end.push(this.sourceToken);\n                            seq.items.pop();\n                            return;\n                        }\n                    }\n                    it.start.push(this.sourceToken);\n                }\n                return;\n            case 'anchor':\n            case 'tag':\n                if (it.value || this.indent <= seq.indent)\n                    break;\n                it.start.push(this.sourceToken);\n                return;\n            case 'seq-item-ind':\n                if (this.indent !== seq.indent)\n                    break;\n                if (it.value || includesToken(it.start, 'seq-item-ind'))\n                    seq.items.push({ start: [this.sourceToken] });\n                else\n                    it.start.push(this.sourceToken);\n                return;\n        }\n        if (this.indent > seq.indent) {\n            const bv = this.startBlockValue(seq);\n            if (bv) {\n                this.stack.push(bv);\n                return;\n            }\n        }\n        yield* this.pop();\n        yield* this.step();\n    }\n    *flowCollection(fc) {\n        const it = fc.items[fc.items.length - 1];\n        if (this.type === 'flow-error-end') {\n            let top;\n            do {\n                yield* this.pop();\n                top = this.peek(1);\n            } while (top?.type === 'flow-collection');\n        }\n        else if (fc.end.length === 0) {\n            switch (this.type) {\n                case 'comma':\n                case 'explicit-key-ind':\n                    if (!it || it.sep)\n                        fc.items.push({ start: [this.sourceToken] });\n                    else\n                        it.start.push(this.sourceToken);\n                    return;\n                case 'map-value-ind':\n                    if (!it || it.value)\n                        fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n                    else if (it.sep)\n                        it.sep.push(this.sourceToken);\n                    else\n                        Object.assign(it, { key: null, sep: [this.sourceToken] });\n                    return;\n                case 'space':\n                case 'comment':\n                case 'newline':\n                case 'anchor':\n                case 'tag':\n                    if (!it || it.value)\n                        fc.items.push({ start: [this.sourceToken] });\n                    else if (it.sep)\n                        it.sep.push(this.sourceToken);\n                    else\n                        it.start.push(this.sourceToken);\n                    return;\n                case 'alias':\n                case 'scalar':\n                case 'single-quoted-scalar':\n                case 'double-quoted-scalar': {\n                    const fs = this.flowScalar(this.type);\n                    if (!it || it.value)\n                        fc.items.push({ start: [], key: fs, sep: [] });\n                    else if (it.sep)\n                        this.stack.push(fs);\n                    else\n                        Object.assign(it, { key: fs, sep: [] });\n                    return;\n                }\n                case 'flow-map-end':\n                case 'flow-seq-end':\n                    fc.end.push(this.sourceToken);\n                    return;\n            }\n            const bv = this.startBlockValue(fc);\n            /* istanbul ignore else should not happen */\n            if (bv)\n                this.stack.push(bv);\n            else {\n                yield* this.pop();\n                yield* this.step();\n            }\n        }\n        else {\n            const parent = this.peek(2);\n            if (parent.type === 'block-map' &&\n                ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n                    (this.type === 'newline' &&\n                        !parent.items[parent.items.length - 1].sep))) {\n                yield* this.pop();\n                yield* this.step();\n            }\n            else if (this.type === 'map-value-ind' &&\n                parent.type !== 'flow-collection') {\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                fixFlowSeqItems(fc);\n                const sep = fc.end.splice(1, fc.end.length);\n                sep.push(this.sourceToken);\n                const map = {\n                    type: 'block-map',\n                    offset: fc.offset,\n                    indent: fc.indent,\n                    items: [{ start, key: fc, sep }]\n                };\n                this.onKeyLine = true;\n                this.stack[this.stack.length - 1] = map;\n            }\n            else {\n                yield* this.lineEnd(fc);\n            }\n        }\n    }\n    flowScalar(type) {\n        if (this.onNewLine) {\n            let nl = this.source.indexOf('\\n') + 1;\n            while (nl !== 0) {\n                this.onNewLine(this.offset + nl);\n                nl = this.source.indexOf('\\n', nl) + 1;\n            }\n        }\n        return {\n            type,\n            offset: this.offset,\n            indent: this.indent,\n            source: this.source\n        };\n    }\n    startBlockValue(parent) {\n        switch (this.type) {\n            case 'alias':\n            case 'scalar':\n            case 'single-quoted-scalar':\n            case 'double-quoted-scalar':\n                return this.flowScalar(this.type);\n            case 'block-scalar-header':\n                return {\n                    type: 'block-scalar',\n                    offset: this.offset,\n                    indent: this.indent,\n                    props: [this.sourceToken],\n                    source: ''\n                };\n            case 'flow-map-start':\n            case 'flow-seq-start':\n                return {\n                    type: 'flow-collection',\n                    offset: this.offset,\n                    indent: this.indent,\n                    start: this.sourceToken,\n                    items: [],\n                    end: []\n                };\n            case 'seq-item-ind':\n                return {\n                    type: 'block-seq',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start: [this.sourceToken] }]\n                };\n            case 'explicit-key-ind': {\n                this.onKeyLine = true;\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                start.push(this.sourceToken);\n                return {\n                    type: 'block-map',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start, explicitKey: true }]\n                };\n            }\n            case 'map-value-ind': {\n                this.onKeyLine = true;\n                const prev = getPrevProps(parent);\n                const start = getFirstKeyStartProps(prev);\n                return {\n                    type: 'block-map',\n                    offset: this.offset,\n                    indent: this.indent,\n                    items: [{ start, key: null, sep: [this.sourceToken] }]\n                };\n            }\n        }\n        return null;\n    }\n    atIndentedComment(start, indent) {\n        if (this.type !== 'comment')\n            return false;\n        if (this.indent <= indent)\n            return false;\n        return start.every(st => st.type === 'newline' || st.type === 'space');\n    }\n    *documentEnd(docEnd) {\n        if (this.type !== 'doc-mode') {\n            if (docEnd.end)\n                docEnd.end.push(this.sourceToken);\n            else\n                docEnd.end = [this.sourceToken];\n            if (this.type === 'newline')\n                yield* this.pop();\n        }\n    }\n    *lineEnd(token) {\n        switch (this.type) {\n            case 'comma':\n            case 'doc-start':\n            case 'doc-end':\n            case 'flow-seq-end':\n            case 'flow-map-end':\n            case 'map-value-ind':\n                yield* this.pop();\n                yield* this.step();\n                break;\n            case 'newline':\n                this.onKeyLine = false;\n            // fallthrough\n            case 'space':\n            case 'comment':\n            default:\n                // all other values are errors\n                if (token.end)\n                    token.end.push(this.sourceToken);\n                else\n                    token.end = [this.sourceToken];\n                if (this.type === 'newline')\n                    yield* this.pop();\n        }\n    }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n    const prettyErrors = options.prettyErrors !== false;\n    const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n    return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n *   EmptyStream and contain additional stream information. In\n *   TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n    const { lineCounter, prettyErrors } = parseOptions(options);\n    const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n    const composer$1 = new composer.Composer(options);\n    const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n    if (prettyErrors && lineCounter)\n        for (const doc of docs) {\n            doc.errors.forEach(errors.prettifyError(source, lineCounter));\n            doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n        }\n    if (docs.length > 0)\n        return docs;\n    return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n    const { lineCounter, prettyErrors } = parseOptions(options);\n    const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n    const composer$1 = new composer.Composer(options);\n    // `doc` is always set by compose.end(true) at the very latest\n    let doc = null;\n    for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n        if (!doc)\n            doc = _doc;\n        else if (doc.options.logLevel !== 'silent') {\n            doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n            break;\n        }\n    }\n    if (prettyErrors && lineCounter) {\n        doc.errors.forEach(errors.prettifyError(source, lineCounter));\n        doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n    }\n    return doc;\n}\nfunction parse(src, reviver, options) {\n    let _reviver = undefined;\n    if (typeof reviver === 'function') {\n        _reviver = reviver;\n    }\n    else if (options === undefined && reviver && typeof reviver === 'object') {\n        options = reviver;\n    }\n    const doc = parseDocument(src, options);\n    if (!doc)\n        return null;\n    doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n    if (doc.errors.length > 0) {\n        if (doc.options.logLevel !== 'silent')\n            throw doc.errors[0];\n        else\n            doc.errors = [];\n    }\n    return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n    let _replacer = null;\n    if (typeof replacer === 'function' || Array.isArray(replacer)) {\n        _replacer = replacer;\n    }\n    else if (options === undefined && replacer) {\n        options = replacer;\n    }\n    if (typeof options === 'string')\n        options = options.length;\n    if (typeof options === 'number') {\n        const indent = Math.round(options);\n        options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n    }\n    if (value === undefined) {\n        const { keepUndefined } = options ?? replacer ?? {};\n        if (!keepUndefined)\n            return undefined;\n    }\n    if (identity.isDocument(value) && !_replacer)\n        return value.toString(options);\n    return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","(function webpackUniversalModuleDefinition(root, factory) {\n/* istanbul ignore next */\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n/* istanbul ignore next */\n\telse if(typeof exports === 'object')\n\t\texports[\"esprima\"] = factory();\n\telse\n\t\troot[\"esprima\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/* istanbul ignore if */\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t/*\n\t  Copyright JS Foundation and other contributors, https://js.foundation/\n\n\t  Redistribution and use in source and binary forms, with or without\n\t  modification, are permitted provided that the following conditions are met:\n\n\t    * Redistributions of source code must retain the above copyright\n\t      notice, this list of conditions and the following disclaimer.\n\t    * Redistributions in binary form must reproduce the above copyright\n\t      notice, this list of conditions and the following disclaimer in the\n\t      documentation and/or other materials provided with the distribution.\n\n\t  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n\t  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n\t  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY\n\t  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n\t  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n\t  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n\t  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n\t  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar comment_handler_1 = __webpack_require__(1);\n\tvar jsx_parser_1 = __webpack_require__(3);\n\tvar parser_1 = __webpack_require__(8);\n\tvar tokenizer_1 = __webpack_require__(15);\n\tfunction parse(code, options, delegate) {\n\t    var commentHandler = null;\n\t    var proxyDelegate = function (node, metadata) {\n\t        if (delegate) {\n\t            delegate(node, metadata);\n\t        }\n\t        if (commentHandler) {\n\t            commentHandler.visit(node, metadata);\n\t        }\n\t    };\n\t    var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;\n\t    var collectComment = false;\n\t    if (options) {\n\t        collectComment = (typeof options.comment === 'boolean' && options.comment);\n\t        var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);\n\t        if (collectComment || attachComment) {\n\t            commentHandler = new comment_handler_1.CommentHandler();\n\t            commentHandler.attach = attachComment;\n\t            options.comment = true;\n\t            parserDelegate = proxyDelegate;\n\t        }\n\t    }\n\t    var isModule = false;\n\t    if (options && typeof options.sourceType === 'string') {\n\t        isModule = (options.sourceType === 'module');\n\t    }\n\t    var parser;\n\t    if (options && typeof options.jsx === 'boolean' && options.jsx) {\n\t        parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);\n\t    }\n\t    else {\n\t        parser = new parser_1.Parser(code, options, parserDelegate);\n\t    }\n\t    var program = isModule ? parser.parseModule() : parser.parseScript();\n\t    var ast = program;\n\t    if (collectComment && commentHandler) {\n\t        ast.comments = commentHandler.comments;\n\t    }\n\t    if (parser.config.tokens) {\n\t        ast.tokens = parser.tokens;\n\t    }\n\t    if (parser.config.tolerant) {\n\t        ast.errors = parser.errorHandler.errors;\n\t    }\n\t    return ast;\n\t}\n\texports.parse = parse;\n\tfunction parseModule(code, options, delegate) {\n\t    var parsingOptions = options || {};\n\t    parsingOptions.sourceType = 'module';\n\t    return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseModule = parseModule;\n\tfunction parseScript(code, options, delegate) {\n\t    var parsingOptions = options || {};\n\t    parsingOptions.sourceType = 'script';\n\t    return parse(code, parsingOptions, delegate);\n\t}\n\texports.parseScript = parseScript;\n\tfunction tokenize(code, options, delegate) {\n\t    var tokenizer = new tokenizer_1.Tokenizer(code, options);\n\t    var tokens;\n\t    tokens = [];\n\t    try {\n\t        while (true) {\n\t            var token = tokenizer.getNextToken();\n\t            if (!token) {\n\t                break;\n\t            }\n\t            if (delegate) {\n\t                token = delegate(token);\n\t            }\n\t            tokens.push(token);\n\t        }\n\t    }\n\t    catch (e) {\n\t        tokenizer.errorHandler.tolerate(e);\n\t    }\n\t    if (tokenizer.errorHandler.tolerant) {\n\t        tokens.errors = tokenizer.errors();\n\t    }\n\t    return tokens;\n\t}\n\texports.tokenize = tokenize;\n\tvar syntax_1 = __webpack_require__(2);\n\texports.Syntax = syntax_1.Syntax;\n\t// Sync with *.json manifests.\n\texports.version = '4.0.1';\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\tvar CommentHandler = (function () {\n\t    function CommentHandler() {\n\t        this.attach = false;\n\t        this.comments = [];\n\t        this.stack = [];\n\t        this.leading = [];\n\t        this.trailing = [];\n\t    }\n\t    CommentHandler.prototype.insertInnerComments = function (node, metadata) {\n\t        //  innnerComments for properties empty block\n\t        //  `function a() {/** comments **\\/}`\n\t        if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {\n\t            var innerComments = [];\n\t            for (var i = this.leading.length - 1; i >= 0; --i) {\n\t                var entry = this.leading[i];\n\t                if (metadata.end.offset >= entry.start) {\n\t                    innerComments.unshift(entry.comment);\n\t                    this.leading.splice(i, 1);\n\t                    this.trailing.splice(i, 1);\n\t                }\n\t            }\n\t            if (innerComments.length) {\n\t                node.innerComments = innerComments;\n\t            }\n\t        }\n\t    };\n\t    CommentHandler.prototype.findTrailingComments = function (metadata) {\n\t        var trailingComments = [];\n\t        if (this.trailing.length > 0) {\n\t            for (var i = this.trailing.length - 1; i >= 0; --i) {\n\t                var entry_1 = this.trailing[i];\n\t                if (entry_1.start >= metadata.end.offset) {\n\t                    trailingComments.unshift(entry_1.comment);\n\t                }\n\t            }\n\t            this.trailing.length = 0;\n\t            return trailingComments;\n\t        }\n\t        var entry = this.stack[this.stack.length - 1];\n\t        if (entry && entry.node.trailingComments) {\n\t            var firstComment = entry.node.trailingComments[0];\n\t            if (firstComment && firstComment.range[0] >= metadata.end.offset) {\n\t                trailingComments = entry.node.trailingComments;\n\t                delete entry.node.trailingComments;\n\t            }\n\t        }\n\t        return trailingComments;\n\t    };\n\t    CommentHandler.prototype.findLeadingComments = function (metadata) {\n\t        var leadingComments = [];\n\t        var target;\n\t        while (this.stack.length > 0) {\n\t            var entry = this.stack[this.stack.length - 1];\n\t            if (entry && entry.start >= metadata.start.offset) {\n\t                target = entry.node;\n\t                this.stack.pop();\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        if (target) {\n\t            var count = target.leadingComments ? target.leadingComments.length : 0;\n\t            for (var i = count - 1; i >= 0; --i) {\n\t                var comment = target.leadingComments[i];\n\t                if (comment.range[1] <= metadata.start.offset) {\n\t                    leadingComments.unshift(comment);\n\t                    target.leadingComments.splice(i, 1);\n\t                }\n\t            }\n\t            if (target.leadingComments && target.leadingComments.length === 0) {\n\t                delete target.leadingComments;\n\t            }\n\t            return leadingComments;\n\t        }\n\t        for (var i = this.leading.length - 1; i >= 0; --i) {\n\t            var entry = this.leading[i];\n\t            if (entry.start <= metadata.start.offset) {\n\t                leadingComments.unshift(entry.comment);\n\t                this.leading.splice(i, 1);\n\t            }\n\t        }\n\t        return leadingComments;\n\t    };\n\t    CommentHandler.prototype.visitNode = function (node, metadata) {\n\t        if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {\n\t            return;\n\t        }\n\t        this.insertInnerComments(node, metadata);\n\t        var trailingComments = this.findTrailingComments(metadata);\n\t        var leadingComments = this.findLeadingComments(metadata);\n\t        if (leadingComments.length > 0) {\n\t            node.leadingComments = leadingComments;\n\t        }\n\t        if (trailingComments.length > 0) {\n\t            node.trailingComments = trailingComments;\n\t        }\n\t        this.stack.push({\n\t            node: node,\n\t            start: metadata.start.offset\n\t        });\n\t    };\n\t    CommentHandler.prototype.visitComment = function (node, metadata) {\n\t        var type = (node.type[0] === 'L') ? 'Line' : 'Block';\n\t        var comment = {\n\t            type: type,\n\t            value: node.value\n\t        };\n\t        if (node.range) {\n\t            comment.range = node.range;\n\t        }\n\t        if (node.loc) {\n\t            comment.loc = node.loc;\n\t        }\n\t        this.comments.push(comment);\n\t        if (this.attach) {\n\t            var entry = {\n\t                comment: {\n\t                    type: type,\n\t                    value: node.value,\n\t                    range: [metadata.start.offset, metadata.end.offset]\n\t                },\n\t                start: metadata.start.offset\n\t            };\n\t            if (node.loc) {\n\t                entry.comment.loc = node.loc;\n\t            }\n\t            node.type = type;\n\t            this.leading.push(entry);\n\t            this.trailing.push(entry);\n\t        }\n\t    };\n\t    CommentHandler.prototype.visit = function (node, metadata) {\n\t        if (node.type === 'LineComment') {\n\t            this.visitComment(node, metadata);\n\t        }\n\t        else if (node.type === 'BlockComment') {\n\t            this.visitComment(node, metadata);\n\t        }\n\t        else if (this.attach) {\n\t            this.visitNode(node, metadata);\n\t        }\n\t    };\n\t    return CommentHandler;\n\t}());\n\texports.CommentHandler = CommentHandler;\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.Syntax = {\n\t    AssignmentExpression: 'AssignmentExpression',\n\t    AssignmentPattern: 'AssignmentPattern',\n\t    ArrayExpression: 'ArrayExpression',\n\t    ArrayPattern: 'ArrayPattern',\n\t    ArrowFunctionExpression: 'ArrowFunctionExpression',\n\t    AwaitExpression: 'AwaitExpression',\n\t    BlockStatement: 'BlockStatement',\n\t    BinaryExpression: 'BinaryExpression',\n\t    BreakStatement: 'BreakStatement',\n\t    CallExpression: 'CallExpression',\n\t    CatchClause: 'CatchClause',\n\t    ClassBody: 'ClassBody',\n\t    ClassDeclaration: 'ClassDeclaration',\n\t    ClassExpression: 'ClassExpression',\n\t    ConditionalExpression: 'ConditionalExpression',\n\t    ContinueStatement: 'ContinueStatement',\n\t    DoWhileStatement: 'DoWhileStatement',\n\t    DebuggerStatement: 'DebuggerStatement',\n\t    EmptyStatement: 'EmptyStatement',\n\t    ExportAllDeclaration: 'ExportAllDeclaration',\n\t    ExportDefaultDeclaration: 'ExportDefaultDeclaration',\n\t    ExportNamedDeclaration: 'ExportNamedDeclaration',\n\t    ExportSpecifier: 'ExportSpecifier',\n\t    ExpressionStatement: 'ExpressionStatement',\n\t    ForStatement: 'ForStatement',\n\t    ForOfStatement: 'ForOfStatement',\n\t    ForInStatement: 'ForInStatement',\n\t    FunctionDeclaration: 'FunctionDeclaration',\n\t    FunctionExpression: 'FunctionExpression',\n\t    Identifier: 'Identifier',\n\t    IfStatement: 'IfStatement',\n\t    ImportDeclaration: 'ImportDeclaration',\n\t    ImportDefaultSpecifier: 'ImportDefaultSpecifier',\n\t    ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',\n\t    ImportSpecifier: 'ImportSpecifier',\n\t    Literal: 'Literal',\n\t    LabeledStatement: 'LabeledStatement',\n\t    LogicalExpression: 'LogicalExpression',\n\t    MemberExpression: 'MemberExpression',\n\t    MetaProperty: 'MetaProperty',\n\t    MethodDefinition: 'MethodDefinition',\n\t    NewExpression: 'NewExpression',\n\t    ObjectExpression: 'ObjectExpression',\n\t    ObjectPattern: 'ObjectPattern',\n\t    Program: 'Program',\n\t    Property: 'Property',\n\t    RestElement: 'RestElement',\n\t    ReturnStatement: 'ReturnStatement',\n\t    SequenceExpression: 'SequenceExpression',\n\t    SpreadElement: 'SpreadElement',\n\t    Super: 'Super',\n\t    SwitchCase: 'SwitchCase',\n\t    SwitchStatement: 'SwitchStatement',\n\t    TaggedTemplateExpression: 'TaggedTemplateExpression',\n\t    TemplateElement: 'TemplateElement',\n\t    TemplateLiteral: 'TemplateLiteral',\n\t    ThisExpression: 'ThisExpression',\n\t    ThrowStatement: 'ThrowStatement',\n\t    TryStatement: 'TryStatement',\n\t    UnaryExpression: 'UnaryExpression',\n\t    UpdateExpression: 'UpdateExpression',\n\t    VariableDeclaration: 'VariableDeclaration',\n\t    VariableDeclarator: 'VariableDeclarator',\n\t    WhileStatement: 'WhileStatement',\n\t    WithStatement: 'WithStatement',\n\t    YieldExpression: 'YieldExpression'\n\t};\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n/* istanbul ignore next */\n\tvar __extends = (this && this.__extends) || (function () {\n\t    var extendStatics = Object.setPrototypeOf ||\n\t        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n\t        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n\t    return function (d, b) {\n\t        extendStatics(d, b);\n\t        function __() { this.constructor = d; }\n\t        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t    };\n\t})();\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar character_1 = __webpack_require__(4);\n\tvar JSXNode = __webpack_require__(5);\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\tvar Node = __webpack_require__(7);\n\tvar parser_1 = __webpack_require__(8);\n\tvar token_1 = __webpack_require__(13);\n\tvar xhtml_entities_1 = __webpack_require__(14);\n\ttoken_1.TokenName[100 /* Identifier */] = 'JSXIdentifier';\n\ttoken_1.TokenName[101 /* Text */] = 'JSXText';\n\t// Fully qualified element name, e.g. <svg:path> returns \"svg:path\"\n\tfunction getQualifiedElementName(elementName) {\n\t    var qualifiedName;\n\t    switch (elementName.type) {\n\t        case jsx_syntax_1.JSXSyntax.JSXIdentifier:\n\t            var id = elementName;\n\t            qualifiedName = id.name;\n\t            break;\n\t        case jsx_syntax_1.JSXSyntax.JSXNamespacedName:\n\t            var ns = elementName;\n\t            qualifiedName = getQualifiedElementName(ns.namespace) + ':' +\n\t                getQualifiedElementName(ns.name);\n\t            break;\n\t        case jsx_syntax_1.JSXSyntax.JSXMemberExpression:\n\t            var expr = elementName;\n\t            qualifiedName = getQualifiedElementName(expr.object) + '.' +\n\t                getQualifiedElementName(expr.property);\n\t            break;\n\t        /* istanbul ignore next */\n\t        default:\n\t            break;\n\t    }\n\t    return qualifiedName;\n\t}\n\tvar JSXParser = (function (_super) {\n\t    __extends(JSXParser, _super);\n\t    function JSXParser(code, options, delegate) {\n\t        return _super.call(this, code, options, delegate) || this;\n\t    }\n\t    JSXParser.prototype.parsePrimaryExpression = function () {\n\t        return this.match('<') ? this.parseJSXRoot() : _super.prototype.parsePrimaryExpression.call(this);\n\t    };\n\t    JSXParser.prototype.startJSX = function () {\n\t        // Unwind the scanner before the lookahead token.\n\t        this.scanner.index = this.startMarker.index;\n\t        this.scanner.lineNumber = this.startMarker.line;\n\t        this.scanner.lineStart = this.startMarker.index - this.startMarker.column;\n\t    };\n\t    JSXParser.prototype.finishJSX = function () {\n\t        // Prime the next lookahead.\n\t        this.nextToken();\n\t    };\n\t    JSXParser.prototype.reenterJSX = function () {\n\t        this.startJSX();\n\t        this.expectJSX('}');\n\t        // Pop the closing '}' added from the lookahead.\n\t        if (this.config.tokens) {\n\t            this.tokens.pop();\n\t        }\n\t    };\n\t    JSXParser.prototype.createJSXNode = function () {\n\t        this.collectComments();\n\t        return {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    };\n\t    JSXParser.prototype.createJSXChildNode = function () {\n\t        return {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    };\n\t    JSXParser.prototype.scanXHTMLEntity = function (quote) {\n\t        var result = '&';\n\t        var valid = true;\n\t        var terminated = false;\n\t        var numeric = false;\n\t        var hex = false;\n\t        while (!this.scanner.eof() && valid && !terminated) {\n\t            var ch = this.scanner.source[this.scanner.index];\n\t            if (ch === quote) {\n\t                break;\n\t            }\n\t            terminated = (ch === ';');\n\t            result += ch;\n\t            ++this.scanner.index;\n\t            if (!terminated) {\n\t                switch (result.length) {\n\t                    case 2:\n\t                        // e.g. '&#123;'\n\t                        numeric = (ch === '#');\n\t                        break;\n\t                    case 3:\n\t                        if (numeric) {\n\t                            // e.g. '&#x41;'\n\t                            hex = (ch === 'x');\n\t                            valid = hex || character_1.Character.isDecimalDigit(ch.charCodeAt(0));\n\t                            numeric = numeric && !hex;\n\t                        }\n\t                        break;\n\t                    default:\n\t                        valid = valid && !(numeric && !character_1.Character.isDecimalDigit(ch.charCodeAt(0)));\n\t                        valid = valid && !(hex && !character_1.Character.isHexDigit(ch.charCodeAt(0)));\n\t                        break;\n\t                }\n\t            }\n\t        }\n\t        if (valid && terminated && result.length > 2) {\n\t            // e.g. '&#x41;' becomes just '#x41'\n\t            var str = result.substr(1, result.length - 2);\n\t            if (numeric && str.length > 1) {\n\t                result = String.fromCharCode(parseInt(str.substr(1), 10));\n\t            }\n\t            else if (hex && str.length > 2) {\n\t                result = String.fromCharCode(parseInt('0' + str.substr(1), 16));\n\t            }\n\t            else if (!numeric && !hex && xhtml_entities_1.XHTMLEntities[str]) {\n\t                result = xhtml_entities_1.XHTMLEntities[str];\n\t            }\n\t        }\n\t        return result;\n\t    };\n\t    // Scan the next JSX token. This replaces Scanner#lex when in JSX mode.\n\t    JSXParser.prototype.lexJSX = function () {\n\t        var cp = this.scanner.source.charCodeAt(this.scanner.index);\n\t        // < > / : = { }\n\t        if (cp === 60 || cp === 62 || cp === 47 || cp === 58 || cp === 61 || cp === 123 || cp === 125) {\n\t            var value = this.scanner.source[this.scanner.index++];\n\t            return {\n\t                type: 7 /* Punctuator */,\n\t                value: value,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: this.scanner.index - 1,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // \" '\n\t        if (cp === 34 || cp === 39) {\n\t            var start = this.scanner.index;\n\t            var quote = this.scanner.source[this.scanner.index++];\n\t            var str = '';\n\t            while (!this.scanner.eof()) {\n\t                var ch = this.scanner.source[this.scanner.index++];\n\t                if (ch === quote) {\n\t                    break;\n\t                }\n\t                else if (ch === '&') {\n\t                    str += this.scanXHTMLEntity(quote);\n\t                }\n\t                else {\n\t                    str += ch;\n\t                }\n\t            }\n\t            return {\n\t                type: 8 /* StringLiteral */,\n\t                value: str,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // ... or .\n\t        if (cp === 46) {\n\t            var n1 = this.scanner.source.charCodeAt(this.scanner.index + 1);\n\t            var n2 = this.scanner.source.charCodeAt(this.scanner.index + 2);\n\t            var value = (n1 === 46 && n2 === 46) ? '...' : '.';\n\t            var start = this.scanner.index;\n\t            this.scanner.index += value.length;\n\t            return {\n\t                type: 7 /* Punctuator */,\n\t                value: value,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // `\n\t        if (cp === 96) {\n\t            // Only placeholder, since it will be rescanned as a real assignment expression.\n\t            return {\n\t                type: 10 /* Template */,\n\t                value: '',\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: this.scanner.index,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        // Identifer can not contain backslash (char code 92).\n\t        if (character_1.Character.isIdentifierStart(cp) && (cp !== 92)) {\n\t            var start = this.scanner.index;\n\t            ++this.scanner.index;\n\t            while (!this.scanner.eof()) {\n\t                var ch = this.scanner.source.charCodeAt(this.scanner.index);\n\t                if (character_1.Character.isIdentifierPart(ch) && (ch !== 92)) {\n\t                    ++this.scanner.index;\n\t                }\n\t                else if (ch === 45) {\n\t                    // Hyphen (char code 45) can be part of an identifier.\n\t                    ++this.scanner.index;\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            var id = this.scanner.source.slice(start, this.scanner.index);\n\t            return {\n\t                type: 100 /* Identifier */,\n\t                value: id,\n\t                lineNumber: this.scanner.lineNumber,\n\t                lineStart: this.scanner.lineStart,\n\t                start: start,\n\t                end: this.scanner.index\n\t            };\n\t        }\n\t        return this.scanner.lex();\n\t    };\n\t    JSXParser.prototype.nextJSXToken = function () {\n\t        this.collectComments();\n\t        this.startMarker.index = this.scanner.index;\n\t        this.startMarker.line = this.scanner.lineNumber;\n\t        this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var token = this.lexJSX();\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        if (this.config.tokens) {\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        return token;\n\t    };\n\t    JSXParser.prototype.nextJSXText = function () {\n\t        this.startMarker.index = this.scanner.index;\n\t        this.startMarker.line = this.scanner.lineNumber;\n\t        this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var start = this.scanner.index;\n\t        var text = '';\n\t        while (!this.scanner.eof()) {\n\t            var ch = this.scanner.source[this.scanner.index];\n\t            if (ch === '{' || ch === '<') {\n\t                break;\n\t            }\n\t            ++this.scanner.index;\n\t            text += ch;\n\t            if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                ++this.scanner.lineNumber;\n\t                if (ch === '\\r' && this.scanner.source[this.scanner.index] === '\\n') {\n\t                    ++this.scanner.index;\n\t                }\n\t                this.scanner.lineStart = this.scanner.index;\n\t            }\n\t        }\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        var token = {\n\t            type: 101 /* Text */,\n\t            value: text,\n\t            lineNumber: this.scanner.lineNumber,\n\t            lineStart: this.scanner.lineStart,\n\t            start: start,\n\t            end: this.scanner.index\n\t        };\n\t        if ((text.length > 0) && this.config.tokens) {\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        return token;\n\t    };\n\t    JSXParser.prototype.peekJSXToken = function () {\n\t        var state = this.scanner.saveState();\n\t        this.scanner.scanComments();\n\t        var next = this.lexJSX();\n\t        this.scanner.restoreState(state);\n\t        return next;\n\t    };\n\t    // Expect the next JSX token to match the specified punctuator.\n\t    // If not, an exception will be thrown.\n\t    JSXParser.prototype.expectJSX = function (value) {\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Return true if the next JSX token matches the specified punctuator.\n\t    JSXParser.prototype.matchJSX = function (value) {\n\t        var next = this.peekJSXToken();\n\t        return next.type === 7 /* Punctuator */ && next.value === value;\n\t    };\n\t    JSXParser.prototype.parseJSXIdentifier = function () {\n\t        var node = this.createJSXNode();\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 100 /* Identifier */) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXIdentifier(token.value));\n\t    };\n\t    JSXParser.prototype.parseJSXElementName = function () {\n\t        var node = this.createJSXNode();\n\t        var elementName = this.parseJSXIdentifier();\n\t        if (this.matchJSX(':')) {\n\t            var namespace = elementName;\n\t            this.expectJSX(':');\n\t            var name_1 = this.parseJSXIdentifier();\n\t            elementName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_1));\n\t        }\n\t        else if (this.matchJSX('.')) {\n\t            while (this.matchJSX('.')) {\n\t                var object = elementName;\n\t                this.expectJSX('.');\n\t                var property = this.parseJSXIdentifier();\n\t                elementName = this.finalize(node, new JSXNode.JSXMemberExpression(object, property));\n\t            }\n\t        }\n\t        return elementName;\n\t    };\n\t    JSXParser.prototype.parseJSXAttributeName = function () {\n\t        var node = this.createJSXNode();\n\t        var attributeName;\n\t        var identifier = this.parseJSXIdentifier();\n\t        if (this.matchJSX(':')) {\n\t            var namespace = identifier;\n\t            this.expectJSX(':');\n\t            var name_2 = this.parseJSXIdentifier();\n\t            attributeName = this.finalize(node, new JSXNode.JSXNamespacedName(namespace, name_2));\n\t        }\n\t        else {\n\t            attributeName = identifier;\n\t        }\n\t        return attributeName;\n\t    };\n\t    JSXParser.prototype.parseJSXStringLiteralAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        var token = this.nextJSXToken();\n\t        if (token.type !== 8 /* StringLiteral */) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        var raw = this.getTokenRaw(token);\n\t        return this.finalize(node, new Node.Literal(token.value, raw));\n\t    };\n\t    JSXParser.prototype.parseJSXExpressionAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        this.finishJSX();\n\t        if (this.match('}')) {\n\t            this.tolerateError('JSX attributes must only be assigned a non-empty expression');\n\t        }\n\t        var expression = this.parseAssignmentExpression();\n\t        this.reenterJSX();\n\t        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t    };\n\t    JSXParser.prototype.parseJSXAttributeValue = function () {\n\t        return this.matchJSX('{') ? this.parseJSXExpressionAttribute() :\n\t            this.matchJSX('<') ? this.parseJSXElement() : this.parseJSXStringLiteralAttribute();\n\t    };\n\t    JSXParser.prototype.parseJSXNameValueAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        var name = this.parseJSXAttributeName();\n\t        var value = null;\n\t        if (this.matchJSX('=')) {\n\t            this.expectJSX('=');\n\t            value = this.parseJSXAttributeValue();\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXAttribute(name, value));\n\t    };\n\t    JSXParser.prototype.parseJSXSpreadAttribute = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        this.expectJSX('...');\n\t        this.finishJSX();\n\t        var argument = this.parseAssignmentExpression();\n\t        this.reenterJSX();\n\t        return this.finalize(node, new JSXNode.JSXSpreadAttribute(argument));\n\t    };\n\t    JSXParser.prototype.parseJSXAttributes = function () {\n\t        var attributes = [];\n\t        while (!this.matchJSX('/') && !this.matchJSX('>')) {\n\t            var attribute = this.matchJSX('{') ? this.parseJSXSpreadAttribute() :\n\t                this.parseJSXNameValueAttribute();\n\t            attributes.push(attribute);\n\t        }\n\t        return attributes;\n\t    };\n\t    JSXParser.prototype.parseJSXOpeningElement = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('<');\n\t        var name = this.parseJSXElementName();\n\t        var attributes = this.parseJSXAttributes();\n\t        var selfClosing = this.matchJSX('/');\n\t        if (selfClosing) {\n\t            this.expectJSX('/');\n\t        }\n\t        this.expectJSX('>');\n\t        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t    };\n\t    JSXParser.prototype.parseJSXBoundaryElement = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('<');\n\t        if (this.matchJSX('/')) {\n\t            this.expectJSX('/');\n\t            var name_3 = this.parseJSXElementName();\n\t            this.expectJSX('>');\n\t            return this.finalize(node, new JSXNode.JSXClosingElement(name_3));\n\t        }\n\t        var name = this.parseJSXElementName();\n\t        var attributes = this.parseJSXAttributes();\n\t        var selfClosing = this.matchJSX('/');\n\t        if (selfClosing) {\n\t            this.expectJSX('/');\n\t        }\n\t        this.expectJSX('>');\n\t        return this.finalize(node, new JSXNode.JSXOpeningElement(name, selfClosing, attributes));\n\t    };\n\t    JSXParser.prototype.parseJSXEmptyExpression = function () {\n\t        var node = this.createJSXChildNode();\n\t        this.collectComments();\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        return this.finalize(node, new JSXNode.JSXEmptyExpression());\n\t    };\n\t    JSXParser.prototype.parseJSXExpressionContainer = function () {\n\t        var node = this.createJSXNode();\n\t        this.expectJSX('{');\n\t        var expression;\n\t        if (this.matchJSX('}')) {\n\t            expression = this.parseJSXEmptyExpression();\n\t            this.expectJSX('}');\n\t        }\n\t        else {\n\t            this.finishJSX();\n\t            expression = this.parseAssignmentExpression();\n\t            this.reenterJSX();\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXExpressionContainer(expression));\n\t    };\n\t    JSXParser.prototype.parseJSXChildren = function () {\n\t        var children = [];\n\t        while (!this.scanner.eof()) {\n\t            var node = this.createJSXChildNode();\n\t            var token = this.nextJSXText();\n\t            if (token.start < token.end) {\n\t                var raw = this.getTokenRaw(token);\n\t                var child = this.finalize(node, new JSXNode.JSXText(token.value, raw));\n\t                children.push(child);\n\t            }\n\t            if (this.scanner.source[this.scanner.index] === '{') {\n\t                var container = this.parseJSXExpressionContainer();\n\t                children.push(container);\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return children;\n\t    };\n\t    JSXParser.prototype.parseComplexJSXElement = function (el) {\n\t        var stack = [];\n\t        while (!this.scanner.eof()) {\n\t            el.children = el.children.concat(this.parseJSXChildren());\n\t            var node = this.createJSXChildNode();\n\t            var element = this.parseJSXBoundaryElement();\n\t            if (element.type === jsx_syntax_1.JSXSyntax.JSXOpeningElement) {\n\t                var opening = element;\n\t                if (opening.selfClosing) {\n\t                    var child = this.finalize(node, new JSXNode.JSXElement(opening, [], null));\n\t                    el.children.push(child);\n\t                }\n\t                else {\n\t                    stack.push(el);\n\t                    el = { node: node, opening: opening, closing: null, children: [] };\n\t                }\n\t            }\n\t            if (element.type === jsx_syntax_1.JSXSyntax.JSXClosingElement) {\n\t                el.closing = element;\n\t                var open_1 = getQualifiedElementName(el.opening.name);\n\t                var close_1 = getQualifiedElementName(el.closing.name);\n\t                if (open_1 !== close_1) {\n\t                    this.tolerateError('Expected corresponding JSX closing tag for %0', open_1);\n\t                }\n\t                if (stack.length > 0) {\n\t                    var child = this.finalize(el.node, new JSXNode.JSXElement(el.opening, el.children, el.closing));\n\t                    el = stack[stack.length - 1];\n\t                    el.children.push(child);\n\t                    stack.pop();\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        return el;\n\t    };\n\t    JSXParser.prototype.parseJSXElement = function () {\n\t        var node = this.createJSXNode();\n\t        var opening = this.parseJSXOpeningElement();\n\t        var children = [];\n\t        var closing = null;\n\t        if (!opening.selfClosing) {\n\t            var el = this.parseComplexJSXElement({ node: node, opening: opening, closing: closing, children: children });\n\t            children = el.children;\n\t            closing = el.closing;\n\t        }\n\t        return this.finalize(node, new JSXNode.JSXElement(opening, children, closing));\n\t    };\n\t    JSXParser.prototype.parseJSXRoot = function () {\n\t        // Pop the opening '<' added from the lookahead.\n\t        if (this.config.tokens) {\n\t            this.tokens.pop();\n\t        }\n\t        this.startJSX();\n\t        var element = this.parseJSXElement();\n\t        this.finishJSX();\n\t        return element;\n\t    };\n\t    JSXParser.prototype.isStartOfExpression = function () {\n\t        return _super.prototype.isStartOfExpression.call(this) || this.match('<');\n\t    };\n\t    return JSXParser;\n\t}(parser_1.Parser));\n\texports.JSXParser = JSXParser;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// See also tools/generate-unicode-regex.js.\n\tvar Regex = {\n\t    // Unicode v8.0.0 NonAsciiIdentifierStart:\n\t    NonAsciiIdentifierStart: /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]/,\n\t    // Unicode v8.0.0 NonAsciiIdentifierPart:\n\t    NonAsciiIdentifierPart: /[\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u08A0-\\u08B4\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C81-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D01-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1CD0-\\u1CD2\\u1CD4-\\u1CF6\\u1CF8\\u1CF9\\u1D00-\\u1DF5\\u1DFC-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AD\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C4\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF30-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDEC0-\\uDEF8]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]|\\uD82C[\\uDC00\\uDC01]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/\n\t};\n\texports.Character = {\n\t    /* tslint:disable:no-bitwise */\n\t    fromCodePoint: function (cp) {\n\t        return (cp < 0x10000) ? String.fromCharCode(cp) :\n\t            String.fromCharCode(0xD800 + ((cp - 0x10000) >> 10)) +\n\t                String.fromCharCode(0xDC00 + ((cp - 0x10000) & 1023));\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-white-space\n\t    isWhiteSpace: function (cp) {\n\t        return (cp === 0x20) || (cp === 0x09) || (cp === 0x0B) || (cp === 0x0C) || (cp === 0xA0) ||\n\t            (cp >= 0x1680 && [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF].indexOf(cp) >= 0);\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-line-terminators\n\t    isLineTerminator: function (cp) {\n\t        return (cp === 0x0A) || (cp === 0x0D) || (cp === 0x2028) || (cp === 0x2029);\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t    isIdentifierStart: function (cp) {\n\t        return (cp === 0x24) || (cp === 0x5F) ||\n\t            (cp >= 0x41 && cp <= 0x5A) ||\n\t            (cp >= 0x61 && cp <= 0x7A) ||\n\t            (cp === 0x5C) ||\n\t            ((cp >= 0x80) && Regex.NonAsciiIdentifierStart.test(exports.Character.fromCodePoint(cp)));\n\t    },\n\t    isIdentifierPart: function (cp) {\n\t        return (cp === 0x24) || (cp === 0x5F) ||\n\t            (cp >= 0x41 && cp <= 0x5A) ||\n\t            (cp >= 0x61 && cp <= 0x7A) ||\n\t            (cp >= 0x30 && cp <= 0x39) ||\n\t            (cp === 0x5C) ||\n\t            ((cp >= 0x80) && Regex.NonAsciiIdentifierPart.test(exports.Character.fromCodePoint(cp)));\n\t    },\n\t    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t    isDecimalDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x39); // 0..9\n\t    },\n\t    isHexDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x39) ||\n\t            (cp >= 0x41 && cp <= 0x46) ||\n\t            (cp >= 0x61 && cp <= 0x66); // a..f\n\t    },\n\t    isOctalDigit: function (cp) {\n\t        return (cp >= 0x30 && cp <= 0x37); // 0..7\n\t    }\n\t};\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar jsx_syntax_1 = __webpack_require__(6);\n\t/* tslint:disable:max-classes-per-file */\n\tvar JSXClosingElement = (function () {\n\t    function JSXClosingElement(name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXClosingElement;\n\t        this.name = name;\n\t    }\n\t    return JSXClosingElement;\n\t}());\n\texports.JSXClosingElement = JSXClosingElement;\n\tvar JSXElement = (function () {\n\t    function JSXElement(openingElement, children, closingElement) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXElement;\n\t        this.openingElement = openingElement;\n\t        this.children = children;\n\t        this.closingElement = closingElement;\n\t    }\n\t    return JSXElement;\n\t}());\n\texports.JSXElement = JSXElement;\n\tvar JSXEmptyExpression = (function () {\n\t    function JSXEmptyExpression() {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXEmptyExpression;\n\t    }\n\t    return JSXEmptyExpression;\n\t}());\n\texports.JSXEmptyExpression = JSXEmptyExpression;\n\tvar JSXExpressionContainer = (function () {\n\t    function JSXExpressionContainer(expression) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXExpressionContainer;\n\t        this.expression = expression;\n\t    }\n\t    return JSXExpressionContainer;\n\t}());\n\texports.JSXExpressionContainer = JSXExpressionContainer;\n\tvar JSXIdentifier = (function () {\n\t    function JSXIdentifier(name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXIdentifier;\n\t        this.name = name;\n\t    }\n\t    return JSXIdentifier;\n\t}());\n\texports.JSXIdentifier = JSXIdentifier;\n\tvar JSXMemberExpression = (function () {\n\t    function JSXMemberExpression(object, property) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXMemberExpression;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return JSXMemberExpression;\n\t}());\n\texports.JSXMemberExpression = JSXMemberExpression;\n\tvar JSXAttribute = (function () {\n\t    function JSXAttribute(name, value) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXAttribute;\n\t        this.name = name;\n\t        this.value = value;\n\t    }\n\t    return JSXAttribute;\n\t}());\n\texports.JSXAttribute = JSXAttribute;\n\tvar JSXNamespacedName = (function () {\n\t    function JSXNamespacedName(namespace, name) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXNamespacedName;\n\t        this.namespace = namespace;\n\t        this.name = name;\n\t    }\n\t    return JSXNamespacedName;\n\t}());\n\texports.JSXNamespacedName = JSXNamespacedName;\n\tvar JSXOpeningElement = (function () {\n\t    function JSXOpeningElement(name, selfClosing, attributes) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXOpeningElement;\n\t        this.name = name;\n\t        this.selfClosing = selfClosing;\n\t        this.attributes = attributes;\n\t    }\n\t    return JSXOpeningElement;\n\t}());\n\texports.JSXOpeningElement = JSXOpeningElement;\n\tvar JSXSpreadAttribute = (function () {\n\t    function JSXSpreadAttribute(argument) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXSpreadAttribute;\n\t        this.argument = argument;\n\t    }\n\t    return JSXSpreadAttribute;\n\t}());\n\texports.JSXSpreadAttribute = JSXSpreadAttribute;\n\tvar JSXText = (function () {\n\t    function JSXText(value, raw) {\n\t        this.type = jsx_syntax_1.JSXSyntax.JSXText;\n\t        this.value = value;\n\t        this.raw = raw;\n\t    }\n\t    return JSXText;\n\t}());\n\texports.JSXText = JSXText;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.JSXSyntax = {\n\t    JSXAttribute: 'JSXAttribute',\n\t    JSXClosingElement: 'JSXClosingElement',\n\t    JSXElement: 'JSXElement',\n\t    JSXEmptyExpression: 'JSXEmptyExpression',\n\t    JSXExpressionContainer: 'JSXExpressionContainer',\n\t    JSXIdentifier: 'JSXIdentifier',\n\t    JSXMemberExpression: 'JSXMemberExpression',\n\t    JSXNamespacedName: 'JSXNamespacedName',\n\t    JSXOpeningElement: 'JSXOpeningElement',\n\t    JSXSpreadAttribute: 'JSXSpreadAttribute',\n\t    JSXText: 'JSXText'\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar syntax_1 = __webpack_require__(2);\n\t/* tslint:disable:max-classes-per-file */\n\tvar ArrayExpression = (function () {\n\t    function ArrayExpression(elements) {\n\t        this.type = syntax_1.Syntax.ArrayExpression;\n\t        this.elements = elements;\n\t    }\n\t    return ArrayExpression;\n\t}());\n\texports.ArrayExpression = ArrayExpression;\n\tvar ArrayPattern = (function () {\n\t    function ArrayPattern(elements) {\n\t        this.type = syntax_1.Syntax.ArrayPattern;\n\t        this.elements = elements;\n\t    }\n\t    return ArrayPattern;\n\t}());\n\texports.ArrayPattern = ArrayPattern;\n\tvar ArrowFunctionExpression = (function () {\n\t    function ArrowFunctionExpression(params, body, expression) {\n\t        this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t        this.id = null;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = expression;\n\t        this.async = false;\n\t    }\n\t    return ArrowFunctionExpression;\n\t}());\n\texports.ArrowFunctionExpression = ArrowFunctionExpression;\n\tvar AssignmentExpression = (function () {\n\t    function AssignmentExpression(operator, left, right) {\n\t        this.type = syntax_1.Syntax.AssignmentExpression;\n\t        this.operator = operator;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return AssignmentExpression;\n\t}());\n\texports.AssignmentExpression = AssignmentExpression;\n\tvar AssignmentPattern = (function () {\n\t    function AssignmentPattern(left, right) {\n\t        this.type = syntax_1.Syntax.AssignmentPattern;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return AssignmentPattern;\n\t}());\n\texports.AssignmentPattern = AssignmentPattern;\n\tvar AsyncArrowFunctionExpression = (function () {\n\t    function AsyncArrowFunctionExpression(params, body, expression) {\n\t        this.type = syntax_1.Syntax.ArrowFunctionExpression;\n\t        this.id = null;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = expression;\n\t        this.async = true;\n\t    }\n\t    return AsyncArrowFunctionExpression;\n\t}());\n\texports.AsyncArrowFunctionExpression = AsyncArrowFunctionExpression;\n\tvar AsyncFunctionDeclaration = (function () {\n\t    function AsyncFunctionDeclaration(id, params, body) {\n\t        this.type = syntax_1.Syntax.FunctionDeclaration;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = false;\n\t        this.async = true;\n\t    }\n\t    return AsyncFunctionDeclaration;\n\t}());\n\texports.AsyncFunctionDeclaration = AsyncFunctionDeclaration;\n\tvar AsyncFunctionExpression = (function () {\n\t    function AsyncFunctionExpression(id, params, body) {\n\t        this.type = syntax_1.Syntax.FunctionExpression;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = false;\n\t        this.expression = false;\n\t        this.async = true;\n\t    }\n\t    return AsyncFunctionExpression;\n\t}());\n\texports.AsyncFunctionExpression = AsyncFunctionExpression;\n\tvar AwaitExpression = (function () {\n\t    function AwaitExpression(argument) {\n\t        this.type = syntax_1.Syntax.AwaitExpression;\n\t        this.argument = argument;\n\t    }\n\t    return AwaitExpression;\n\t}());\n\texports.AwaitExpression = AwaitExpression;\n\tvar BinaryExpression = (function () {\n\t    function BinaryExpression(operator, left, right) {\n\t        var logical = (operator === '||' || operator === '&&');\n\t        this.type = logical ? syntax_1.Syntax.LogicalExpression : syntax_1.Syntax.BinaryExpression;\n\t        this.operator = operator;\n\t        this.left = left;\n\t        this.right = right;\n\t    }\n\t    return BinaryExpression;\n\t}());\n\texports.BinaryExpression = BinaryExpression;\n\tvar BlockStatement = (function () {\n\t    function BlockStatement(body) {\n\t        this.type = syntax_1.Syntax.BlockStatement;\n\t        this.body = body;\n\t    }\n\t    return BlockStatement;\n\t}());\n\texports.BlockStatement = BlockStatement;\n\tvar BreakStatement = (function () {\n\t    function BreakStatement(label) {\n\t        this.type = syntax_1.Syntax.BreakStatement;\n\t        this.label = label;\n\t    }\n\t    return BreakStatement;\n\t}());\n\texports.BreakStatement = BreakStatement;\n\tvar CallExpression = (function () {\n\t    function CallExpression(callee, args) {\n\t        this.type = syntax_1.Syntax.CallExpression;\n\t        this.callee = callee;\n\t        this.arguments = args;\n\t    }\n\t    return CallExpression;\n\t}());\n\texports.CallExpression = CallExpression;\n\tvar CatchClause = (function () {\n\t    function CatchClause(param, body) {\n\t        this.type = syntax_1.Syntax.CatchClause;\n\t        this.param = param;\n\t        this.body = body;\n\t    }\n\t    return CatchClause;\n\t}());\n\texports.CatchClause = CatchClause;\n\tvar ClassBody = (function () {\n\t    function ClassBody(body) {\n\t        this.type = syntax_1.Syntax.ClassBody;\n\t        this.body = body;\n\t    }\n\t    return ClassBody;\n\t}());\n\texports.ClassBody = ClassBody;\n\tvar ClassDeclaration = (function () {\n\t    function ClassDeclaration(id, superClass, body) {\n\t        this.type = syntax_1.Syntax.ClassDeclaration;\n\t        this.id = id;\n\t        this.superClass = superClass;\n\t        this.body = body;\n\t    }\n\t    return ClassDeclaration;\n\t}());\n\texports.ClassDeclaration = ClassDeclaration;\n\tvar ClassExpression = (function () {\n\t    function ClassExpression(id, superClass, body) {\n\t        this.type = syntax_1.Syntax.ClassExpression;\n\t        this.id = id;\n\t        this.superClass = superClass;\n\t        this.body = body;\n\t    }\n\t    return ClassExpression;\n\t}());\n\texports.ClassExpression = ClassExpression;\n\tvar ComputedMemberExpression = (function () {\n\t    function ComputedMemberExpression(object, property) {\n\t        this.type = syntax_1.Syntax.MemberExpression;\n\t        this.computed = true;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return ComputedMemberExpression;\n\t}());\n\texports.ComputedMemberExpression = ComputedMemberExpression;\n\tvar ConditionalExpression = (function () {\n\t    function ConditionalExpression(test, consequent, alternate) {\n\t        this.type = syntax_1.Syntax.ConditionalExpression;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t        this.alternate = alternate;\n\t    }\n\t    return ConditionalExpression;\n\t}());\n\texports.ConditionalExpression = ConditionalExpression;\n\tvar ContinueStatement = (function () {\n\t    function ContinueStatement(label) {\n\t        this.type = syntax_1.Syntax.ContinueStatement;\n\t        this.label = label;\n\t    }\n\t    return ContinueStatement;\n\t}());\n\texports.ContinueStatement = ContinueStatement;\n\tvar DebuggerStatement = (function () {\n\t    function DebuggerStatement() {\n\t        this.type = syntax_1.Syntax.DebuggerStatement;\n\t    }\n\t    return DebuggerStatement;\n\t}());\n\texports.DebuggerStatement = DebuggerStatement;\n\tvar Directive = (function () {\n\t    function Directive(expression, directive) {\n\t        this.type = syntax_1.Syntax.ExpressionStatement;\n\t        this.expression = expression;\n\t        this.directive = directive;\n\t    }\n\t    return Directive;\n\t}());\n\texports.Directive = Directive;\n\tvar DoWhileStatement = (function () {\n\t    function DoWhileStatement(body, test) {\n\t        this.type = syntax_1.Syntax.DoWhileStatement;\n\t        this.body = body;\n\t        this.test = test;\n\t    }\n\t    return DoWhileStatement;\n\t}());\n\texports.DoWhileStatement = DoWhileStatement;\n\tvar EmptyStatement = (function () {\n\t    function EmptyStatement() {\n\t        this.type = syntax_1.Syntax.EmptyStatement;\n\t    }\n\t    return EmptyStatement;\n\t}());\n\texports.EmptyStatement = EmptyStatement;\n\tvar ExportAllDeclaration = (function () {\n\t    function ExportAllDeclaration(source) {\n\t        this.type = syntax_1.Syntax.ExportAllDeclaration;\n\t        this.source = source;\n\t    }\n\t    return ExportAllDeclaration;\n\t}());\n\texports.ExportAllDeclaration = ExportAllDeclaration;\n\tvar ExportDefaultDeclaration = (function () {\n\t    function ExportDefaultDeclaration(declaration) {\n\t        this.type = syntax_1.Syntax.ExportDefaultDeclaration;\n\t        this.declaration = declaration;\n\t    }\n\t    return ExportDefaultDeclaration;\n\t}());\n\texports.ExportDefaultDeclaration = ExportDefaultDeclaration;\n\tvar ExportNamedDeclaration = (function () {\n\t    function ExportNamedDeclaration(declaration, specifiers, source) {\n\t        this.type = syntax_1.Syntax.ExportNamedDeclaration;\n\t        this.declaration = declaration;\n\t        this.specifiers = specifiers;\n\t        this.source = source;\n\t    }\n\t    return ExportNamedDeclaration;\n\t}());\n\texports.ExportNamedDeclaration = ExportNamedDeclaration;\n\tvar ExportSpecifier = (function () {\n\t    function ExportSpecifier(local, exported) {\n\t        this.type = syntax_1.Syntax.ExportSpecifier;\n\t        this.exported = exported;\n\t        this.local = local;\n\t    }\n\t    return ExportSpecifier;\n\t}());\n\texports.ExportSpecifier = ExportSpecifier;\n\tvar ExpressionStatement = (function () {\n\t    function ExpressionStatement(expression) {\n\t        this.type = syntax_1.Syntax.ExpressionStatement;\n\t        this.expression = expression;\n\t    }\n\t    return ExpressionStatement;\n\t}());\n\texports.ExpressionStatement = ExpressionStatement;\n\tvar ForInStatement = (function () {\n\t    function ForInStatement(left, right, body) {\n\t        this.type = syntax_1.Syntax.ForInStatement;\n\t        this.left = left;\n\t        this.right = right;\n\t        this.body = body;\n\t        this.each = false;\n\t    }\n\t    return ForInStatement;\n\t}());\n\texports.ForInStatement = ForInStatement;\n\tvar ForOfStatement = (function () {\n\t    function ForOfStatement(left, right, body) {\n\t        this.type = syntax_1.Syntax.ForOfStatement;\n\t        this.left = left;\n\t        this.right = right;\n\t        this.body = body;\n\t    }\n\t    return ForOfStatement;\n\t}());\n\texports.ForOfStatement = ForOfStatement;\n\tvar ForStatement = (function () {\n\t    function ForStatement(init, test, update, body) {\n\t        this.type = syntax_1.Syntax.ForStatement;\n\t        this.init = init;\n\t        this.test = test;\n\t        this.update = update;\n\t        this.body = body;\n\t    }\n\t    return ForStatement;\n\t}());\n\texports.ForStatement = ForStatement;\n\tvar FunctionDeclaration = (function () {\n\t    function FunctionDeclaration(id, params, body, generator) {\n\t        this.type = syntax_1.Syntax.FunctionDeclaration;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = generator;\n\t        this.expression = false;\n\t        this.async = false;\n\t    }\n\t    return FunctionDeclaration;\n\t}());\n\texports.FunctionDeclaration = FunctionDeclaration;\n\tvar FunctionExpression = (function () {\n\t    function FunctionExpression(id, params, body, generator) {\n\t        this.type = syntax_1.Syntax.FunctionExpression;\n\t        this.id = id;\n\t        this.params = params;\n\t        this.body = body;\n\t        this.generator = generator;\n\t        this.expression = false;\n\t        this.async = false;\n\t    }\n\t    return FunctionExpression;\n\t}());\n\texports.FunctionExpression = FunctionExpression;\n\tvar Identifier = (function () {\n\t    function Identifier(name) {\n\t        this.type = syntax_1.Syntax.Identifier;\n\t        this.name = name;\n\t    }\n\t    return Identifier;\n\t}());\n\texports.Identifier = Identifier;\n\tvar IfStatement = (function () {\n\t    function IfStatement(test, consequent, alternate) {\n\t        this.type = syntax_1.Syntax.IfStatement;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t        this.alternate = alternate;\n\t    }\n\t    return IfStatement;\n\t}());\n\texports.IfStatement = IfStatement;\n\tvar ImportDeclaration = (function () {\n\t    function ImportDeclaration(specifiers, source) {\n\t        this.type = syntax_1.Syntax.ImportDeclaration;\n\t        this.specifiers = specifiers;\n\t        this.source = source;\n\t    }\n\t    return ImportDeclaration;\n\t}());\n\texports.ImportDeclaration = ImportDeclaration;\n\tvar ImportDefaultSpecifier = (function () {\n\t    function ImportDefaultSpecifier(local) {\n\t        this.type = syntax_1.Syntax.ImportDefaultSpecifier;\n\t        this.local = local;\n\t    }\n\t    return ImportDefaultSpecifier;\n\t}());\n\texports.ImportDefaultSpecifier = ImportDefaultSpecifier;\n\tvar ImportNamespaceSpecifier = (function () {\n\t    function ImportNamespaceSpecifier(local) {\n\t        this.type = syntax_1.Syntax.ImportNamespaceSpecifier;\n\t        this.local = local;\n\t    }\n\t    return ImportNamespaceSpecifier;\n\t}());\n\texports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;\n\tvar ImportSpecifier = (function () {\n\t    function ImportSpecifier(local, imported) {\n\t        this.type = syntax_1.Syntax.ImportSpecifier;\n\t        this.local = local;\n\t        this.imported = imported;\n\t    }\n\t    return ImportSpecifier;\n\t}());\n\texports.ImportSpecifier = ImportSpecifier;\n\tvar LabeledStatement = (function () {\n\t    function LabeledStatement(label, body) {\n\t        this.type = syntax_1.Syntax.LabeledStatement;\n\t        this.label = label;\n\t        this.body = body;\n\t    }\n\t    return LabeledStatement;\n\t}());\n\texports.LabeledStatement = LabeledStatement;\n\tvar Literal = (function () {\n\t    function Literal(value, raw) {\n\t        this.type = syntax_1.Syntax.Literal;\n\t        this.value = value;\n\t        this.raw = raw;\n\t    }\n\t    return Literal;\n\t}());\n\texports.Literal = Literal;\n\tvar MetaProperty = (function () {\n\t    function MetaProperty(meta, property) {\n\t        this.type = syntax_1.Syntax.MetaProperty;\n\t        this.meta = meta;\n\t        this.property = property;\n\t    }\n\t    return MetaProperty;\n\t}());\n\texports.MetaProperty = MetaProperty;\n\tvar MethodDefinition = (function () {\n\t    function MethodDefinition(key, computed, value, kind, isStatic) {\n\t        this.type = syntax_1.Syntax.MethodDefinition;\n\t        this.key = key;\n\t        this.computed = computed;\n\t        this.value = value;\n\t        this.kind = kind;\n\t        this.static = isStatic;\n\t    }\n\t    return MethodDefinition;\n\t}());\n\texports.MethodDefinition = MethodDefinition;\n\tvar Module = (function () {\n\t    function Module(body) {\n\t        this.type = syntax_1.Syntax.Program;\n\t        this.body = body;\n\t        this.sourceType = 'module';\n\t    }\n\t    return Module;\n\t}());\n\texports.Module = Module;\n\tvar NewExpression = (function () {\n\t    function NewExpression(callee, args) {\n\t        this.type = syntax_1.Syntax.NewExpression;\n\t        this.callee = callee;\n\t        this.arguments = args;\n\t    }\n\t    return NewExpression;\n\t}());\n\texports.NewExpression = NewExpression;\n\tvar ObjectExpression = (function () {\n\t    function ObjectExpression(properties) {\n\t        this.type = syntax_1.Syntax.ObjectExpression;\n\t        this.properties = properties;\n\t    }\n\t    return ObjectExpression;\n\t}());\n\texports.ObjectExpression = ObjectExpression;\n\tvar ObjectPattern = (function () {\n\t    function ObjectPattern(properties) {\n\t        this.type = syntax_1.Syntax.ObjectPattern;\n\t        this.properties = properties;\n\t    }\n\t    return ObjectPattern;\n\t}());\n\texports.ObjectPattern = ObjectPattern;\n\tvar Property = (function () {\n\t    function Property(kind, key, computed, value, method, shorthand) {\n\t        this.type = syntax_1.Syntax.Property;\n\t        this.key = key;\n\t        this.computed = computed;\n\t        this.value = value;\n\t        this.kind = kind;\n\t        this.method = method;\n\t        this.shorthand = shorthand;\n\t    }\n\t    return Property;\n\t}());\n\texports.Property = Property;\n\tvar RegexLiteral = (function () {\n\t    function RegexLiteral(value, raw, pattern, flags) {\n\t        this.type = syntax_1.Syntax.Literal;\n\t        this.value = value;\n\t        this.raw = raw;\n\t        this.regex = { pattern: pattern, flags: flags };\n\t    }\n\t    return RegexLiteral;\n\t}());\n\texports.RegexLiteral = RegexLiteral;\n\tvar RestElement = (function () {\n\t    function RestElement(argument) {\n\t        this.type = syntax_1.Syntax.RestElement;\n\t        this.argument = argument;\n\t    }\n\t    return RestElement;\n\t}());\n\texports.RestElement = RestElement;\n\tvar ReturnStatement = (function () {\n\t    function ReturnStatement(argument) {\n\t        this.type = syntax_1.Syntax.ReturnStatement;\n\t        this.argument = argument;\n\t    }\n\t    return ReturnStatement;\n\t}());\n\texports.ReturnStatement = ReturnStatement;\n\tvar Script = (function () {\n\t    function Script(body) {\n\t        this.type = syntax_1.Syntax.Program;\n\t        this.body = body;\n\t        this.sourceType = 'script';\n\t    }\n\t    return Script;\n\t}());\n\texports.Script = Script;\n\tvar SequenceExpression = (function () {\n\t    function SequenceExpression(expressions) {\n\t        this.type = syntax_1.Syntax.SequenceExpression;\n\t        this.expressions = expressions;\n\t    }\n\t    return SequenceExpression;\n\t}());\n\texports.SequenceExpression = SequenceExpression;\n\tvar SpreadElement = (function () {\n\t    function SpreadElement(argument) {\n\t        this.type = syntax_1.Syntax.SpreadElement;\n\t        this.argument = argument;\n\t    }\n\t    return SpreadElement;\n\t}());\n\texports.SpreadElement = SpreadElement;\n\tvar StaticMemberExpression = (function () {\n\t    function StaticMemberExpression(object, property) {\n\t        this.type = syntax_1.Syntax.MemberExpression;\n\t        this.computed = false;\n\t        this.object = object;\n\t        this.property = property;\n\t    }\n\t    return StaticMemberExpression;\n\t}());\n\texports.StaticMemberExpression = StaticMemberExpression;\n\tvar Super = (function () {\n\t    function Super() {\n\t        this.type = syntax_1.Syntax.Super;\n\t    }\n\t    return Super;\n\t}());\n\texports.Super = Super;\n\tvar SwitchCase = (function () {\n\t    function SwitchCase(test, consequent) {\n\t        this.type = syntax_1.Syntax.SwitchCase;\n\t        this.test = test;\n\t        this.consequent = consequent;\n\t    }\n\t    return SwitchCase;\n\t}());\n\texports.SwitchCase = SwitchCase;\n\tvar SwitchStatement = (function () {\n\t    function SwitchStatement(discriminant, cases) {\n\t        this.type = syntax_1.Syntax.SwitchStatement;\n\t        this.discriminant = discriminant;\n\t        this.cases = cases;\n\t    }\n\t    return SwitchStatement;\n\t}());\n\texports.SwitchStatement = SwitchStatement;\n\tvar TaggedTemplateExpression = (function () {\n\t    function TaggedTemplateExpression(tag, quasi) {\n\t        this.type = syntax_1.Syntax.TaggedTemplateExpression;\n\t        this.tag = tag;\n\t        this.quasi = quasi;\n\t    }\n\t    return TaggedTemplateExpression;\n\t}());\n\texports.TaggedTemplateExpression = TaggedTemplateExpression;\n\tvar TemplateElement = (function () {\n\t    function TemplateElement(value, tail) {\n\t        this.type = syntax_1.Syntax.TemplateElement;\n\t        this.value = value;\n\t        this.tail = tail;\n\t    }\n\t    return TemplateElement;\n\t}());\n\texports.TemplateElement = TemplateElement;\n\tvar TemplateLiteral = (function () {\n\t    function TemplateLiteral(quasis, expressions) {\n\t        this.type = syntax_1.Syntax.TemplateLiteral;\n\t        this.quasis = quasis;\n\t        this.expressions = expressions;\n\t    }\n\t    return TemplateLiteral;\n\t}());\n\texports.TemplateLiteral = TemplateLiteral;\n\tvar ThisExpression = (function () {\n\t    function ThisExpression() {\n\t        this.type = syntax_1.Syntax.ThisExpression;\n\t    }\n\t    return ThisExpression;\n\t}());\n\texports.ThisExpression = ThisExpression;\n\tvar ThrowStatement = (function () {\n\t    function ThrowStatement(argument) {\n\t        this.type = syntax_1.Syntax.ThrowStatement;\n\t        this.argument = argument;\n\t    }\n\t    return ThrowStatement;\n\t}());\n\texports.ThrowStatement = ThrowStatement;\n\tvar TryStatement = (function () {\n\t    function TryStatement(block, handler, finalizer) {\n\t        this.type = syntax_1.Syntax.TryStatement;\n\t        this.block = block;\n\t        this.handler = handler;\n\t        this.finalizer = finalizer;\n\t    }\n\t    return TryStatement;\n\t}());\n\texports.TryStatement = TryStatement;\n\tvar UnaryExpression = (function () {\n\t    function UnaryExpression(operator, argument) {\n\t        this.type = syntax_1.Syntax.UnaryExpression;\n\t        this.operator = operator;\n\t        this.argument = argument;\n\t        this.prefix = true;\n\t    }\n\t    return UnaryExpression;\n\t}());\n\texports.UnaryExpression = UnaryExpression;\n\tvar UpdateExpression = (function () {\n\t    function UpdateExpression(operator, argument, prefix) {\n\t        this.type = syntax_1.Syntax.UpdateExpression;\n\t        this.operator = operator;\n\t        this.argument = argument;\n\t        this.prefix = prefix;\n\t    }\n\t    return UpdateExpression;\n\t}());\n\texports.UpdateExpression = UpdateExpression;\n\tvar VariableDeclaration = (function () {\n\t    function VariableDeclaration(declarations, kind) {\n\t        this.type = syntax_1.Syntax.VariableDeclaration;\n\t        this.declarations = declarations;\n\t        this.kind = kind;\n\t    }\n\t    return VariableDeclaration;\n\t}());\n\texports.VariableDeclaration = VariableDeclaration;\n\tvar VariableDeclarator = (function () {\n\t    function VariableDeclarator(id, init) {\n\t        this.type = syntax_1.Syntax.VariableDeclarator;\n\t        this.id = id;\n\t        this.init = init;\n\t    }\n\t    return VariableDeclarator;\n\t}());\n\texports.VariableDeclarator = VariableDeclarator;\n\tvar WhileStatement = (function () {\n\t    function WhileStatement(test, body) {\n\t        this.type = syntax_1.Syntax.WhileStatement;\n\t        this.test = test;\n\t        this.body = body;\n\t    }\n\t    return WhileStatement;\n\t}());\n\texports.WhileStatement = WhileStatement;\n\tvar WithStatement = (function () {\n\t    function WithStatement(object, body) {\n\t        this.type = syntax_1.Syntax.WithStatement;\n\t        this.object = object;\n\t        this.body = body;\n\t    }\n\t    return WithStatement;\n\t}());\n\texports.WithStatement = WithStatement;\n\tvar YieldExpression = (function () {\n\t    function YieldExpression(argument, delegate) {\n\t        this.type = syntax_1.Syntax.YieldExpression;\n\t        this.argument = argument;\n\t        this.delegate = delegate;\n\t    }\n\t    return YieldExpression;\n\t}());\n\texports.YieldExpression = YieldExpression;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar messages_1 = __webpack_require__(11);\n\tvar Node = __webpack_require__(7);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar syntax_1 = __webpack_require__(2);\n\tvar token_1 = __webpack_require__(13);\n\tvar ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';\n\tvar Parser = (function () {\n\t    function Parser(code, options, delegate) {\n\t        if (options === void 0) { options = {}; }\n\t        this.config = {\n\t            range: (typeof options.range === 'boolean') && options.range,\n\t            loc: (typeof options.loc === 'boolean') && options.loc,\n\t            source: null,\n\t            tokens: (typeof options.tokens === 'boolean') && options.tokens,\n\t            comment: (typeof options.comment === 'boolean') && options.comment,\n\t            tolerant: (typeof options.tolerant === 'boolean') && options.tolerant\n\t        };\n\t        if (this.config.loc && options.source && options.source !== null) {\n\t            this.config.source = String(options.source);\n\t        }\n\t        this.delegate = delegate;\n\t        this.errorHandler = new error_handler_1.ErrorHandler();\n\t        this.errorHandler.tolerant = this.config.tolerant;\n\t        this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t        this.scanner.trackComment = this.config.comment;\n\t        this.operatorPrecedence = {\n\t            ')': 0,\n\t            ';': 0,\n\t            ',': 0,\n\t            '=': 0,\n\t            ']': 0,\n\t            '||': 1,\n\t            '&&': 2,\n\t            '|': 3,\n\t            '^': 4,\n\t            '&': 5,\n\t            '==': 6,\n\t            '!=': 6,\n\t            '===': 6,\n\t            '!==': 6,\n\t            '<': 7,\n\t            '>': 7,\n\t            '<=': 7,\n\t            '>=': 7,\n\t            '<<': 8,\n\t            '>>': 8,\n\t            '>>>': 8,\n\t            '+': 9,\n\t            '-': 9,\n\t            '*': 11,\n\t            '/': 11,\n\t            '%': 11\n\t        };\n\t        this.lookahead = {\n\t            type: 2 /* EOF */,\n\t            value: '',\n\t            lineNumber: this.scanner.lineNumber,\n\t            lineStart: 0,\n\t            start: 0,\n\t            end: 0\n\t        };\n\t        this.hasLineTerminator = false;\n\t        this.context = {\n\t            isModule: false,\n\t            await: false,\n\t            allowIn: true,\n\t            allowStrictDirective: true,\n\t            allowYield: true,\n\t            firstCoverInitializedNameError: null,\n\t            isAssignmentTarget: false,\n\t            isBindingElement: false,\n\t            inFunctionBody: false,\n\t            inIteration: false,\n\t            inSwitch: false,\n\t            labelSet: {},\n\t            strict: false\n\t        };\n\t        this.tokens = [];\n\t        this.startMarker = {\n\t            index: 0,\n\t            line: this.scanner.lineNumber,\n\t            column: 0\n\t        };\n\t        this.lastMarker = {\n\t            index: 0,\n\t            line: this.scanner.lineNumber,\n\t            column: 0\n\t        };\n\t        this.nextToken();\n\t        this.lastMarker = {\n\t            index: this.scanner.index,\n\t            line: this.scanner.lineNumber,\n\t            column: this.scanner.index - this.scanner.lineStart\n\t        };\n\t    }\n\t    Parser.prototype.throwError = function (messageFormat) {\n\t        var values = [];\n\t        for (var _i = 1; _i < arguments.length; _i++) {\n\t            values[_i - 1] = arguments[_i];\n\t        }\n\t        var args = Array.prototype.slice.call(arguments, 1);\n\t        var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t            assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t            return args[idx];\n\t        });\n\t        var index = this.lastMarker.index;\n\t        var line = this.lastMarker.line;\n\t        var column = this.lastMarker.column + 1;\n\t        throw this.errorHandler.createError(index, line, column, msg);\n\t    };\n\t    Parser.prototype.tolerateError = function (messageFormat) {\n\t        var values = [];\n\t        for (var _i = 1; _i < arguments.length; _i++) {\n\t            values[_i - 1] = arguments[_i];\n\t        }\n\t        var args = Array.prototype.slice.call(arguments, 1);\n\t        var msg = messageFormat.replace(/%(\\d)/g, function (whole, idx) {\n\t            assert_1.assert(idx < args.length, 'Message reference must be in range');\n\t            return args[idx];\n\t        });\n\t        var index = this.lastMarker.index;\n\t        var line = this.scanner.lineNumber;\n\t        var column = this.lastMarker.column + 1;\n\t        this.errorHandler.tolerateError(index, line, column, msg);\n\t    };\n\t    // Throw an exception because of the token.\n\t    Parser.prototype.unexpectedTokenError = function (token, message) {\n\t        var msg = message || messages_1.Messages.UnexpectedToken;\n\t        var value;\n\t        if (token) {\n\t            if (!message) {\n\t                msg = (token.type === 2 /* EOF */) ? messages_1.Messages.UnexpectedEOS :\n\t                    (token.type === 3 /* Identifier */) ? messages_1.Messages.UnexpectedIdentifier :\n\t                        (token.type === 6 /* NumericLiteral */) ? messages_1.Messages.UnexpectedNumber :\n\t                            (token.type === 8 /* StringLiteral */) ? messages_1.Messages.UnexpectedString :\n\t                                (token.type === 10 /* Template */) ? messages_1.Messages.UnexpectedTemplate :\n\t                                    messages_1.Messages.UnexpectedToken;\n\t                if (token.type === 4 /* Keyword */) {\n\t                    if (this.scanner.isFutureReservedWord(token.value)) {\n\t                        msg = messages_1.Messages.UnexpectedReserved;\n\t                    }\n\t                    else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {\n\t                        msg = messages_1.Messages.StrictReservedWord;\n\t                    }\n\t                }\n\t            }\n\t            value = token.value;\n\t        }\n\t        else {\n\t            value = 'ILLEGAL';\n\t        }\n\t        msg = msg.replace('%0', value);\n\t        if (token && typeof token.lineNumber === 'number') {\n\t            var index = token.start;\n\t            var line = token.lineNumber;\n\t            var lastMarkerLineStart = this.lastMarker.index - this.lastMarker.column;\n\t            var column = token.start - lastMarkerLineStart + 1;\n\t            return this.errorHandler.createError(index, line, column, msg);\n\t        }\n\t        else {\n\t            var index = this.lastMarker.index;\n\t            var line = this.lastMarker.line;\n\t            var column = this.lastMarker.column + 1;\n\t            return this.errorHandler.createError(index, line, column, msg);\n\t        }\n\t    };\n\t    Parser.prototype.throwUnexpectedToken = function (token, message) {\n\t        throw this.unexpectedTokenError(token, message);\n\t    };\n\t    Parser.prototype.tolerateUnexpectedToken = function (token, message) {\n\t        this.errorHandler.tolerate(this.unexpectedTokenError(token, message));\n\t    };\n\t    Parser.prototype.collectComments = function () {\n\t        if (!this.config.comment) {\n\t            this.scanner.scanComments();\n\t        }\n\t        else {\n\t            var comments = this.scanner.scanComments();\n\t            if (comments.length > 0 && this.delegate) {\n\t                for (var i = 0; i < comments.length; ++i) {\n\t                    var e = comments[i];\n\t                    var node = void 0;\n\t                    node = {\n\t                        type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t                        value: this.scanner.source.slice(e.slice[0], e.slice[1])\n\t                    };\n\t                    if (this.config.range) {\n\t                        node.range = e.range;\n\t                    }\n\t                    if (this.config.loc) {\n\t                        node.loc = e.loc;\n\t                    }\n\t                    var metadata = {\n\t                        start: {\n\t                            line: e.loc.start.line,\n\t                            column: e.loc.start.column,\n\t                            offset: e.range[0]\n\t                        },\n\t                        end: {\n\t                            line: e.loc.end.line,\n\t                            column: e.loc.end.column,\n\t                            offset: e.range[1]\n\t                        }\n\t                    };\n\t                    this.delegate(node, metadata);\n\t                }\n\t            }\n\t        }\n\t    };\n\t    // From internal representation to an external structure\n\t    Parser.prototype.getTokenRaw = function (token) {\n\t        return this.scanner.source.slice(token.start, token.end);\n\t    };\n\t    Parser.prototype.convertToken = function (token) {\n\t        var t = {\n\t            type: token_1.TokenName[token.type],\n\t            value: this.getTokenRaw(token)\n\t        };\n\t        if (this.config.range) {\n\t            t.range = [token.start, token.end];\n\t        }\n\t        if (this.config.loc) {\n\t            t.loc = {\n\t                start: {\n\t                    line: this.startMarker.line,\n\t                    column: this.startMarker.column\n\t                },\n\t                end: {\n\t                    line: this.scanner.lineNumber,\n\t                    column: this.scanner.index - this.scanner.lineStart\n\t                }\n\t            };\n\t        }\n\t        if (token.type === 9 /* RegularExpression */) {\n\t            var pattern = token.pattern;\n\t            var flags = token.flags;\n\t            t.regex = { pattern: pattern, flags: flags };\n\t        }\n\t        return t;\n\t    };\n\t    Parser.prototype.nextToken = function () {\n\t        var token = this.lookahead;\n\t        this.lastMarker.index = this.scanner.index;\n\t        this.lastMarker.line = this.scanner.lineNumber;\n\t        this.lastMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        this.collectComments();\n\t        if (this.scanner.index !== this.startMarker.index) {\n\t            this.startMarker.index = this.scanner.index;\n\t            this.startMarker.line = this.scanner.lineNumber;\n\t            this.startMarker.column = this.scanner.index - this.scanner.lineStart;\n\t        }\n\t        var next = this.scanner.lex();\n\t        this.hasLineTerminator = (token.lineNumber !== next.lineNumber);\n\t        if (next && this.context.strict && next.type === 3 /* Identifier */) {\n\t            if (this.scanner.isStrictModeReservedWord(next.value)) {\n\t                next.type = 4 /* Keyword */;\n\t            }\n\t        }\n\t        this.lookahead = next;\n\t        if (this.config.tokens && next.type !== 2 /* EOF */) {\n\t            this.tokens.push(this.convertToken(next));\n\t        }\n\t        return token;\n\t    };\n\t    Parser.prototype.nextRegexToken = function () {\n\t        this.collectComments();\n\t        var token = this.scanner.scanRegExp();\n\t        if (this.config.tokens) {\n\t            // Pop the previous token, '/' or '/='\n\t            // This is added from the lookahead token.\n\t            this.tokens.pop();\n\t            this.tokens.push(this.convertToken(token));\n\t        }\n\t        // Prime the next lookahead.\n\t        this.lookahead = token;\n\t        this.nextToken();\n\t        return token;\n\t    };\n\t    Parser.prototype.createNode = function () {\n\t        return {\n\t            index: this.startMarker.index,\n\t            line: this.startMarker.line,\n\t            column: this.startMarker.column\n\t        };\n\t    };\n\t    Parser.prototype.startNode = function (token, lastLineStart) {\n\t        if (lastLineStart === void 0) { lastLineStart = 0; }\n\t        var column = token.start - token.lineStart;\n\t        var line = token.lineNumber;\n\t        if (column < 0) {\n\t            column += lastLineStart;\n\t            line--;\n\t        }\n\t        return {\n\t            index: token.start,\n\t            line: line,\n\t            column: column\n\t        };\n\t    };\n\t    Parser.prototype.finalize = function (marker, node) {\n\t        if (this.config.range) {\n\t            node.range = [marker.index, this.lastMarker.index];\n\t        }\n\t        if (this.config.loc) {\n\t            node.loc = {\n\t                start: {\n\t                    line: marker.line,\n\t                    column: marker.column,\n\t                },\n\t                end: {\n\t                    line: this.lastMarker.line,\n\t                    column: this.lastMarker.column\n\t                }\n\t            };\n\t            if (this.config.source) {\n\t                node.loc.source = this.config.source;\n\t            }\n\t        }\n\t        if (this.delegate) {\n\t            var metadata = {\n\t                start: {\n\t                    line: marker.line,\n\t                    column: marker.column,\n\t                    offset: marker.index\n\t                },\n\t                end: {\n\t                    line: this.lastMarker.line,\n\t                    column: this.lastMarker.column,\n\t                    offset: this.lastMarker.index\n\t                }\n\t            };\n\t            this.delegate(node, metadata);\n\t        }\n\t        return node;\n\t    };\n\t    // Expect the next token to match the specified punctuator.\n\t    // If not, an exception will be thrown.\n\t    Parser.prototype.expect = function (value) {\n\t        var token = this.nextToken();\n\t        if (token.type !== 7 /* Punctuator */ || token.value !== value) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().\n\t    Parser.prototype.expectCommaSeparator = function () {\n\t        if (this.config.tolerant) {\n\t            var token = this.lookahead;\n\t            if (token.type === 7 /* Punctuator */ && token.value === ',') {\n\t                this.nextToken();\n\t            }\n\t            else if (token.type === 7 /* Punctuator */ && token.value === ';') {\n\t                this.nextToken();\n\t                this.tolerateUnexpectedToken(token);\n\t            }\n\t            else {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);\n\t            }\n\t        }\n\t        else {\n\t            this.expect(',');\n\t        }\n\t    };\n\t    // Expect the next token to match the specified keyword.\n\t    // If not, an exception will be thrown.\n\t    Parser.prototype.expectKeyword = function (keyword) {\n\t        var token = this.nextToken();\n\t        if (token.type !== 4 /* Keyword */ || token.value !== keyword) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t    };\n\t    // Return true if the next token matches the specified punctuator.\n\t    Parser.prototype.match = function (value) {\n\t        return this.lookahead.type === 7 /* Punctuator */ && this.lookahead.value === value;\n\t    };\n\t    // Return true if the next token matches the specified keyword\n\t    Parser.prototype.matchKeyword = function (keyword) {\n\t        return this.lookahead.type === 4 /* Keyword */ && this.lookahead.value === keyword;\n\t    };\n\t    // Return true if the next token matches the specified contextual keyword\n\t    // (where an identifier is sometimes a keyword depending on the context)\n\t    Parser.prototype.matchContextualKeyword = function (keyword) {\n\t        return this.lookahead.type === 3 /* Identifier */ && this.lookahead.value === keyword;\n\t    };\n\t    // Return true if the next token is an assignment operator\n\t    Parser.prototype.matchAssign = function () {\n\t        if (this.lookahead.type !== 7 /* Punctuator */) {\n\t            return false;\n\t        }\n\t        var op = this.lookahead.value;\n\t        return op === '=' ||\n\t            op === '*=' ||\n\t            op === '**=' ||\n\t            op === '/=' ||\n\t            op === '%=' ||\n\t            op === '+=' ||\n\t            op === '-=' ||\n\t            op === '<<=' ||\n\t            op === '>>=' ||\n\t            op === '>>>=' ||\n\t            op === '&=' ||\n\t            op === '^=' ||\n\t            op === '|=';\n\t    };\n\t    // Cover grammar support.\n\t    //\n\t    // When an assignment expression position starts with an left parenthesis, the determination of the type\n\t    // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)\n\t    // or the first comma. This situation also defers the determination of all the expressions nested in the pair.\n\t    //\n\t    // There are three productions that can be parsed in a parentheses pair that needs to be determined\n\t    // after the outermost pair is closed. They are:\n\t    //\n\t    //   1. AssignmentExpression\n\t    //   2. BindingElements\n\t    //   3. AssignmentTargets\n\t    //\n\t    // In order to avoid exponential backtracking, we use two flags to denote if the production can be\n\t    // binding element or assignment target.\n\t    //\n\t    // The three productions have the relationship:\n\t    //\n\t    //   BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression\n\t    //\n\t    // with a single exception that CoverInitializedName when used directly in an Expression, generates\n\t    // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the\n\t    // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.\n\t    //\n\t    // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not\n\t    // effect the current flags. This means the production the parser parses is only used as an expression. Therefore\n\t    // the CoverInitializedName check is conducted.\n\t    //\n\t    // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates\n\t    // the flags outside of the parser. This means the production the parser parses is used as a part of a potential\n\t    // pattern. The CoverInitializedName check is deferred.\n\t    Parser.prototype.isolateCoverGrammar = function (parseFunction) {\n\t        var previousIsBindingElement = this.context.isBindingElement;\n\t        var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t        this.context.isBindingElement = true;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.firstCoverInitializedNameError = null;\n\t        var result = parseFunction.call(this);\n\t        if (this.context.firstCoverInitializedNameError !== null) {\n\t            this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);\n\t        }\n\t        this.context.isBindingElement = previousIsBindingElement;\n\t        this.context.isAssignmentTarget = previousIsAssignmentTarget;\n\t        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;\n\t        return result;\n\t    };\n\t    Parser.prototype.inheritCoverGrammar = function (parseFunction) {\n\t        var previousIsBindingElement = this.context.isBindingElement;\n\t        var previousIsAssignmentTarget = this.context.isAssignmentTarget;\n\t        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;\n\t        this.context.isBindingElement = true;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.firstCoverInitializedNameError = null;\n\t        var result = parseFunction.call(this);\n\t        this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;\n\t        this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;\n\t        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;\n\t        return result;\n\t    };\n\t    Parser.prototype.consumeSemicolon = function () {\n\t        if (this.match(';')) {\n\t            this.nextToken();\n\t        }\n\t        else if (!this.hasLineTerminator) {\n\t            if (this.lookahead.type !== 2 /* EOF */ && !this.match('}')) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            this.lastMarker.index = this.startMarker.index;\n\t            this.lastMarker.line = this.startMarker.line;\n\t            this.lastMarker.column = this.startMarker.column;\n\t        }\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-primary-expression\n\t    Parser.prototype.parsePrimaryExpression = function () {\n\t        var node = this.createNode();\n\t        var expr;\n\t        var token, raw;\n\t        switch (this.lookahead.type) {\n\t            case 3 /* Identifier */:\n\t                if ((this.context.isModule || this.context.await) && this.lookahead.value === 'await') {\n\t                    this.tolerateUnexpectedToken(this.lookahead);\n\t                }\n\t                expr = this.matchAsyncFunction() ? this.parseFunctionExpression() : this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t                break;\n\t            case 6 /* NumericLiteral */:\n\t            case 8 /* StringLiteral */:\n\t                if (this.context.strict && this.lookahead.octal) {\n\t                    this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(token.value, raw));\n\t                break;\n\t            case 1 /* BooleanLiteral */:\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(token.value === 'true', raw));\n\t                break;\n\t            case 5 /* NullLiteral */:\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                token = this.nextToken();\n\t                raw = this.getTokenRaw(token);\n\t                expr = this.finalize(node, new Node.Literal(null, raw));\n\t                break;\n\t            case 10 /* Template */:\n\t                expr = this.parseTemplateLiteral();\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                switch (this.lookahead.value) {\n\t                    case '(':\n\t                        this.context.isBindingElement = false;\n\t                        expr = this.inheritCoverGrammar(this.parseGroupExpression);\n\t                        break;\n\t                    case '[':\n\t                        expr = this.inheritCoverGrammar(this.parseArrayInitializer);\n\t                        break;\n\t                    case '{':\n\t                        expr = this.inheritCoverGrammar(this.parseObjectInitializer);\n\t                        break;\n\t                    case '/':\n\t                    case '/=':\n\t                        this.context.isAssignmentTarget = false;\n\t                        this.context.isBindingElement = false;\n\t                        this.scanner.index = this.startMarker.index;\n\t                        token = this.nextRegexToken();\n\t                        raw = this.getTokenRaw(token);\n\t                        expr = this.finalize(node, new Node.RegexLiteral(token.regex, raw, token.pattern, token.flags));\n\t                        break;\n\t                    default:\n\t                        expr = this.throwUnexpectedToken(this.nextToken());\n\t                }\n\t                break;\n\t            case 4 /* Keyword */:\n\t                if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {\n\t                    expr = this.parseIdentifierName();\n\t                }\n\t                else if (!this.context.strict && this.matchKeyword('let')) {\n\t                    expr = this.finalize(node, new Node.Identifier(this.nextToken().value));\n\t                }\n\t                else {\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    if (this.matchKeyword('function')) {\n\t                        expr = this.parseFunctionExpression();\n\t                    }\n\t                    else if (this.matchKeyword('this')) {\n\t                        this.nextToken();\n\t                        expr = this.finalize(node, new Node.ThisExpression());\n\t                    }\n\t                    else if (this.matchKeyword('class')) {\n\t                        expr = this.parseClassExpression();\n\t                    }\n\t                    else {\n\t                        expr = this.throwUnexpectedToken(this.nextToken());\n\t                    }\n\t                }\n\t                break;\n\t            default:\n\t                expr = this.throwUnexpectedToken(this.nextToken());\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-array-initializer\n\t    Parser.prototype.parseSpreadElement = function () {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t        return this.finalize(node, new Node.SpreadElement(arg));\n\t    };\n\t    Parser.prototype.parseArrayInitializer = function () {\n\t        var node = this.createNode();\n\t        var elements = [];\n\t        this.expect('[');\n\t        while (!this.match(']')) {\n\t            if (this.match(',')) {\n\t                this.nextToken();\n\t                elements.push(null);\n\t            }\n\t            else if (this.match('...')) {\n\t                var element = this.parseSpreadElement();\n\t                if (!this.match(']')) {\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    this.expect(',');\n\t                }\n\t                elements.push(element);\n\t            }\n\t            else {\n\t                elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t                if (!this.match(']')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t        }\n\t        this.expect(']');\n\t        return this.finalize(node, new Node.ArrayExpression(elements));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-object-initializer\n\t    Parser.prototype.parsePropertyMethod = function (params) {\n\t        this.context.isAssignmentTarget = false;\n\t        this.context.isBindingElement = false;\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = params.simple;\n\t        var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);\n\t        if (this.context.strict && params.firstRestricted) {\n\t            this.tolerateUnexpectedToken(params.firstRestricted, params.message);\n\t        }\n\t        if (this.context.strict && params.stricted) {\n\t            this.tolerateUnexpectedToken(params.stricted, params.message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        return body;\n\t    };\n\t    Parser.prototype.parsePropertyMethodFunction = function () {\n\t        var isGenerator = false;\n\t        var node = this.createNode();\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = true;\n\t        var params = this.parseFormalParameters();\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parsePropertyMethodAsyncFunction = function () {\n\t        var node = this.createNode();\n\t        var previousAllowYield = this.context.allowYield;\n\t        var previousAwait = this.context.await;\n\t        this.context.allowYield = false;\n\t        this.context.await = true;\n\t        var params = this.parseFormalParameters();\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        this.context.await = previousAwait;\n\t        return this.finalize(node, new Node.AsyncFunctionExpression(null, params.params, method));\n\t    };\n\t    Parser.prototype.parseObjectPropertyKey = function () {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var key;\n\t        switch (token.type) {\n\t            case 8 /* StringLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t                if (this.context.strict && token.octal) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                var raw = this.getTokenRaw(token);\n\t                key = this.finalize(node, new Node.Literal(token.value, raw));\n\t                break;\n\t            case 3 /* Identifier */:\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 4 /* Keyword */:\n\t                key = this.finalize(node, new Node.Identifier(token.value));\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                if (token.value === '[') {\n\t                    key = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    this.expect(']');\n\t                }\n\t                else {\n\t                    key = this.throwUnexpectedToken(token);\n\t                }\n\t                break;\n\t            default:\n\t                key = this.throwUnexpectedToken(token);\n\t        }\n\t        return key;\n\t    };\n\t    Parser.prototype.isPropertyKey = function (key, value) {\n\t        return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||\n\t            (key.type === syntax_1.Syntax.Literal && key.value === value);\n\t    };\n\t    Parser.prototype.parseObjectProperty = function (hasProto) {\n\t        var node = this.createNode();\n\t        var token = this.lookahead;\n\t        var kind;\n\t        var key = null;\n\t        var value = null;\n\t        var computed = false;\n\t        var method = false;\n\t        var shorthand = false;\n\t        var isAsync = false;\n\t        if (token.type === 3 /* Identifier */) {\n\t            var id = token.value;\n\t            this.nextToken();\n\t            computed = this.match('[');\n\t            isAsync = !this.hasLineTerminator && (id === 'async') &&\n\t                !this.match(':') && !this.match('(') && !this.match('*') && !this.match(',');\n\t            key = isAsync ? this.parseObjectPropertyKey() : this.finalize(node, new Node.Identifier(id));\n\t        }\n\t        else if (this.match('*')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t        }\n\t        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t        if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'get' && lookaheadPropertyKey) {\n\t            kind = 'get';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            this.context.allowYield = false;\n\t            value = this.parseGetterMethod();\n\t        }\n\t        else if (token.type === 3 /* Identifier */ && !isAsync && token.value === 'set' && lookaheadPropertyKey) {\n\t            kind = 'set';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseSetterMethod();\n\t        }\n\t        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t            kind = 'init';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseGeneratorMethod();\n\t            method = true;\n\t        }\n\t        else {\n\t            if (!key) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            kind = 'init';\n\t            if (this.match(':') && !isAsync) {\n\t                if (!computed && this.isPropertyKey(key, '__proto__')) {\n\t                    if (hasProto.value) {\n\t                        this.tolerateError(messages_1.Messages.DuplicateProtoProperty);\n\t                    }\n\t                    hasProto.value = true;\n\t                }\n\t                this.nextToken();\n\t                value = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t            }\n\t            else if (this.match('(')) {\n\t                value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t                method = true;\n\t            }\n\t            else if (token.type === 3 /* Identifier */) {\n\t                var id = this.finalize(node, new Node.Identifier(token.value));\n\t                if (this.match('=')) {\n\t                    this.context.firstCoverInitializedNameError = this.lookahead;\n\t                    this.nextToken();\n\t                    shorthand = true;\n\t                    var init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    value = this.finalize(node, new Node.AssignmentPattern(id, init));\n\t                }\n\t                else {\n\t                    shorthand = true;\n\t                    value = id;\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));\n\t    };\n\t    Parser.prototype.parseObjectInitializer = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var properties = [];\n\t        var hasProto = { value: false };\n\t        while (!this.match('}')) {\n\t            properties.push(this.parseObjectProperty(hasProto));\n\t            if (!this.match('}')) {\n\t                this.expectCommaSeparator();\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.ObjectExpression(properties));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-template-literals\n\t    Parser.prototype.parseTemplateHead = function () {\n\t        assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var raw = token.value;\n\t        var cooked = token.cooked;\n\t        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t    };\n\t    Parser.prototype.parseTemplateElement = function () {\n\t        if (this.lookahead.type !== 10 /* Template */) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        var raw = token.value;\n\t        var cooked = token.cooked;\n\t        return this.finalize(node, new Node.TemplateElement({ raw: raw, cooked: cooked }, token.tail));\n\t    };\n\t    Parser.prototype.parseTemplateLiteral = function () {\n\t        var node = this.createNode();\n\t        var expressions = [];\n\t        var quasis = [];\n\t        var quasi = this.parseTemplateHead();\n\t        quasis.push(quasi);\n\t        while (!quasi.tail) {\n\t            expressions.push(this.parseExpression());\n\t            quasi = this.parseTemplateElement();\n\t            quasis.push(quasi);\n\t        }\n\t        return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-grouping-operator\n\t    Parser.prototype.reinterpretExpressionAsPattern = function (expr) {\n\t        switch (expr.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t            case syntax_1.Syntax.MemberExpression:\n\t            case syntax_1.Syntax.RestElement:\n\t            case syntax_1.Syntax.AssignmentPattern:\n\t                break;\n\t            case syntax_1.Syntax.SpreadElement:\n\t                expr.type = syntax_1.Syntax.RestElement;\n\t                this.reinterpretExpressionAsPattern(expr.argument);\n\t                break;\n\t            case syntax_1.Syntax.ArrayExpression:\n\t                expr.type = syntax_1.Syntax.ArrayPattern;\n\t                for (var i = 0; i < expr.elements.length; i++) {\n\t                    if (expr.elements[i] !== null) {\n\t                        this.reinterpretExpressionAsPattern(expr.elements[i]);\n\t                    }\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.ObjectExpression:\n\t                expr.type = syntax_1.Syntax.ObjectPattern;\n\t                for (var i = 0; i < expr.properties.length; i++) {\n\t                    this.reinterpretExpressionAsPattern(expr.properties[i].value);\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.AssignmentExpression:\n\t                expr.type = syntax_1.Syntax.AssignmentPattern;\n\t                delete expr.operator;\n\t                this.reinterpretExpressionAsPattern(expr.left);\n\t                break;\n\t            default:\n\t                // Allow other node type for tolerant parsing.\n\t                break;\n\t        }\n\t    };\n\t    Parser.prototype.parseGroupExpression = function () {\n\t        var expr;\n\t        this.expect('(');\n\t        if (this.match(')')) {\n\t            this.nextToken();\n\t            if (!this.match('=>')) {\n\t                this.expect('=>');\n\t            }\n\t            expr = {\n\t                type: ArrowParameterPlaceHolder,\n\t                params: [],\n\t                async: false\n\t            };\n\t        }\n\t        else {\n\t            var startToken = this.lookahead;\n\t            var params = [];\n\t            if (this.match('...')) {\n\t                expr = this.parseRestElement(params);\n\t                this.expect(')');\n\t                if (!this.match('=>')) {\n\t                    this.expect('=>');\n\t                }\n\t                expr = {\n\t                    type: ArrowParameterPlaceHolder,\n\t                    params: [expr],\n\t                    async: false\n\t                };\n\t            }\n\t            else {\n\t                var arrow = false;\n\t                this.context.isBindingElement = true;\n\t                expr = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t                if (this.match(',')) {\n\t                    var expressions = [];\n\t                    this.context.isAssignmentTarget = false;\n\t                    expressions.push(expr);\n\t                    while (this.lookahead.type !== 2 /* EOF */) {\n\t                        if (!this.match(',')) {\n\t                            break;\n\t                        }\n\t                        this.nextToken();\n\t                        if (this.match(')')) {\n\t                            this.nextToken();\n\t                            for (var i = 0; i < expressions.length; i++) {\n\t                                this.reinterpretExpressionAsPattern(expressions[i]);\n\t                            }\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: expressions,\n\t                                async: false\n\t                            };\n\t                        }\n\t                        else if (this.match('...')) {\n\t                            if (!this.context.isBindingElement) {\n\t                                this.throwUnexpectedToken(this.lookahead);\n\t                            }\n\t                            expressions.push(this.parseRestElement(params));\n\t                            this.expect(')');\n\t                            if (!this.match('=>')) {\n\t                                this.expect('=>');\n\t                            }\n\t                            this.context.isBindingElement = false;\n\t                            for (var i = 0; i < expressions.length; i++) {\n\t                                this.reinterpretExpressionAsPattern(expressions[i]);\n\t                            }\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: expressions,\n\t                                async: false\n\t                            };\n\t                        }\n\t                        else {\n\t                            expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));\n\t                        }\n\t                        if (arrow) {\n\t                            break;\n\t                        }\n\t                    }\n\t                    if (!arrow) {\n\t                        expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t                    }\n\t                }\n\t                if (!arrow) {\n\t                    this.expect(')');\n\t                    if (this.match('=>')) {\n\t                        if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {\n\t                            arrow = true;\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: [expr],\n\t                                async: false\n\t                            };\n\t                        }\n\t                        if (!arrow) {\n\t                            if (!this.context.isBindingElement) {\n\t                                this.throwUnexpectedToken(this.lookahead);\n\t                            }\n\t                            if (expr.type === syntax_1.Syntax.SequenceExpression) {\n\t                                for (var i = 0; i < expr.expressions.length; i++) {\n\t                                    this.reinterpretExpressionAsPattern(expr.expressions[i]);\n\t                                }\n\t                            }\n\t                            else {\n\t                                this.reinterpretExpressionAsPattern(expr);\n\t                            }\n\t                            var parameters = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);\n\t                            expr = {\n\t                                type: ArrowParameterPlaceHolder,\n\t                                params: parameters,\n\t                                async: false\n\t                            };\n\t                        }\n\t                    }\n\t                    this.context.isBindingElement = false;\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-left-hand-side-expressions\n\t    Parser.prototype.parseArguments = function () {\n\t        this.expect('(');\n\t        var args = [];\n\t        if (!this.match(')')) {\n\t            while (true) {\n\t                var expr = this.match('...') ? this.parseSpreadElement() :\n\t                    this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                args.push(expr);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expectCommaSeparator();\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return args;\n\t    };\n\t    Parser.prototype.isIdentifierName = function (token) {\n\t        return token.type === 3 /* Identifier */ ||\n\t            token.type === 4 /* Keyword */ ||\n\t            token.type === 1 /* BooleanLiteral */ ||\n\t            token.type === 5 /* NullLiteral */;\n\t    };\n\t    Parser.prototype.parseIdentifierName = function () {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        if (!this.isIdentifierName(token)) {\n\t            this.throwUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new Node.Identifier(token.value));\n\t    };\n\t    Parser.prototype.parseNewExpression = function () {\n\t        var node = this.createNode();\n\t        var id = this.parseIdentifierName();\n\t        assert_1.assert(id.name === 'new', 'New expression must start with `new`');\n\t        var expr;\n\t        if (this.match('.')) {\n\t            this.nextToken();\n\t            if (this.lookahead.type === 3 /* Identifier */ && this.context.inFunctionBody && this.lookahead.value === 'target') {\n\t                var property = this.parseIdentifierName();\n\t                expr = new Node.MetaProperty(id, property);\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t        }\n\t        else {\n\t            var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);\n\t            var args = this.match('(') ? this.parseArguments() : [];\n\t            expr = new Node.NewExpression(callee, args);\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        return this.finalize(node, expr);\n\t    };\n\t    Parser.prototype.parseAsyncArgument = function () {\n\t        var arg = this.parseAssignmentExpression();\n\t        this.context.firstCoverInitializedNameError = null;\n\t        return arg;\n\t    };\n\t    Parser.prototype.parseAsyncArguments = function () {\n\t        this.expect('(');\n\t        var args = [];\n\t        if (!this.match(')')) {\n\t            while (true) {\n\t                var expr = this.match('...') ? this.parseSpreadElement() :\n\t                    this.isolateCoverGrammar(this.parseAsyncArgument);\n\t                args.push(expr);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expectCommaSeparator();\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return args;\n\t    };\n\t    Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {\n\t        var startToken = this.lookahead;\n\t        var maybeAsync = this.matchContextualKeyword('async');\n\t        var previousAllowIn = this.context.allowIn;\n\t        this.context.allowIn = true;\n\t        var expr;\n\t        if (this.matchKeyword('super') && this.context.inFunctionBody) {\n\t            expr = this.createNode();\n\t            this.nextToken();\n\t            expr = this.finalize(expr, new Node.Super());\n\t            if (!this.match('(') && !this.match('.') && !this.match('[')) {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t        }\n\t        else {\n\t            expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t        }\n\t        while (true) {\n\t            if (this.match('.')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('.');\n\t                var property = this.parseIdentifierName();\n\t                expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));\n\t            }\n\t            else if (this.match('(')) {\n\t                var asyncArrow = maybeAsync && (startToken.lineNumber === this.lookahead.lineNumber);\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = false;\n\t                var args = asyncArrow ? this.parseAsyncArguments() : this.parseArguments();\n\t                expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));\n\t                if (asyncArrow && this.match('=>')) {\n\t                    for (var i = 0; i < args.length; ++i) {\n\t                        this.reinterpretExpressionAsPattern(args[i]);\n\t                    }\n\t                    expr = {\n\t                        type: ArrowParameterPlaceHolder,\n\t                        params: args,\n\t                        async: true\n\t                    };\n\t                }\n\t            }\n\t            else if (this.match('[')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('[');\n\t                var property = this.isolateCoverGrammar(this.parseExpression);\n\t                this.expect(']');\n\t                expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));\n\t            }\n\t            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t                var quasi = this.parseTemplateLiteral();\n\t                expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        this.context.allowIn = previousAllowIn;\n\t        return expr;\n\t    };\n\t    Parser.prototype.parseSuper = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('super');\n\t        if (!this.match('[') && !this.match('.')) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        return this.finalize(node, new Node.Super());\n\t    };\n\t    Parser.prototype.parseLeftHandSideExpression = function () {\n\t        assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');\n\t        var node = this.startNode(this.lookahead);\n\t        var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :\n\t            this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);\n\t        while (true) {\n\t            if (this.match('[')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('[');\n\t                var property = this.isolateCoverGrammar(this.parseExpression);\n\t                this.expect(']');\n\t                expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));\n\t            }\n\t            else if (this.match('.')) {\n\t                this.context.isBindingElement = false;\n\t                this.context.isAssignmentTarget = true;\n\t                this.expect('.');\n\t                var property = this.parseIdentifierName();\n\t                expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));\n\t            }\n\t            else if (this.lookahead.type === 10 /* Template */ && this.lookahead.head) {\n\t                var quasi = this.parseTemplateLiteral();\n\t                expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-update-expressions\n\t    Parser.prototype.parseUpdateExpression = function () {\n\t        var expr;\n\t        var startToken = this.lookahead;\n\t        if (this.match('++') || this.match('--')) {\n\t            var node = this.startNode(startToken);\n\t            var token = this.nextToken();\n\t            expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t            if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictLHSPrefix);\n\t            }\n\t            if (!this.context.isAssignmentTarget) {\n\t                this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t            }\n\t            var prefix = true;\n\t            expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        else {\n\t            expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t            if (!this.hasLineTerminator && this.lookahead.type === 7 /* Punctuator */) {\n\t                if (this.match('++') || this.match('--')) {\n\t                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {\n\t                        this.tolerateError(messages_1.Messages.StrictLHSPostfix);\n\t                    }\n\t                    if (!this.context.isAssignmentTarget) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t                    }\n\t                    this.context.isAssignmentTarget = false;\n\t                    this.context.isBindingElement = false;\n\t                    var operator = this.nextToken().value;\n\t                    var prefix = false;\n\t                    expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-unary-operators\n\t    Parser.prototype.parseAwaitExpression = function () {\n\t        var node = this.createNode();\n\t        this.nextToken();\n\t        var argument = this.parseUnaryExpression();\n\t        return this.finalize(node, new Node.AwaitExpression(argument));\n\t    };\n\t    Parser.prototype.parseUnaryExpression = function () {\n\t        var expr;\n\t        if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||\n\t            this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {\n\t            var node = this.startNode(this.lookahead);\n\t            var token = this.nextToken();\n\t            expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t            expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));\n\t            if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {\n\t                this.tolerateError(messages_1.Messages.StrictDelete);\n\t            }\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        else if (this.context.await && this.matchContextualKeyword('await')) {\n\t            expr = this.parseAwaitExpression();\n\t        }\n\t        else {\n\t            expr = this.parseUpdateExpression();\n\t        }\n\t        return expr;\n\t    };\n\t    Parser.prototype.parseExponentiationExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseUnaryExpression);\n\t        if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {\n\t            this.nextToken();\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t            var left = expr;\n\t            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t            expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-exp-operator\n\t    // https://tc39.github.io/ecma262/#sec-multiplicative-operators\n\t    // https://tc39.github.io/ecma262/#sec-additive-operators\n\t    // https://tc39.github.io/ecma262/#sec-bitwise-shift-operators\n\t    // https://tc39.github.io/ecma262/#sec-relational-operators\n\t    // https://tc39.github.io/ecma262/#sec-equality-operators\n\t    // https://tc39.github.io/ecma262/#sec-binary-bitwise-operators\n\t    // https://tc39.github.io/ecma262/#sec-binary-logical-operators\n\t    Parser.prototype.binaryPrecedence = function (token) {\n\t        var op = token.value;\n\t        var precedence;\n\t        if (token.type === 7 /* Punctuator */) {\n\t            precedence = this.operatorPrecedence[op] || 0;\n\t        }\n\t        else if (token.type === 4 /* Keyword */) {\n\t            precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;\n\t        }\n\t        else {\n\t            precedence = 0;\n\t        }\n\t        return precedence;\n\t    };\n\t    Parser.prototype.parseBinaryExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);\n\t        var token = this.lookahead;\n\t        var prec = this.binaryPrecedence(token);\n\t        if (prec > 0) {\n\t            this.nextToken();\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t            var markers = [startToken, this.lookahead];\n\t            var left = expr;\n\t            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);\n\t            var stack = [left, token.value, right];\n\t            var precedences = [prec];\n\t            while (true) {\n\t                prec = this.binaryPrecedence(this.lookahead);\n\t                if (prec <= 0) {\n\t                    break;\n\t                }\n\t                // Reduce: make a binary expression from the three topmost entries.\n\t                while ((stack.length > 2) && (prec <= precedences[precedences.length - 1])) {\n\t                    right = stack.pop();\n\t                    var operator = stack.pop();\n\t                    precedences.pop();\n\t                    left = stack.pop();\n\t                    markers.pop();\n\t                    var node = this.startNode(markers[markers.length - 1]);\n\t                    stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));\n\t                }\n\t                // Shift.\n\t                stack.push(this.nextToken().value);\n\t                precedences.push(prec);\n\t                markers.push(this.lookahead);\n\t                stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));\n\t            }\n\t            // Final reduce to clean-up the stack.\n\t            var i = stack.length - 1;\n\t            expr = stack[i];\n\t            var lastMarker = markers.pop();\n\t            while (i > 1) {\n\t                var marker = markers.pop();\n\t                var lastLineStart = lastMarker && lastMarker.lineStart;\n\t                var node = this.startNode(marker, lastLineStart);\n\t                var operator = stack[i - 1];\n\t                expr = this.finalize(node, new Node.BinaryExpression(operator, stack[i - 2], expr));\n\t                i -= 2;\n\t                lastMarker = marker;\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-conditional-operator\n\t    Parser.prototype.parseConditionalExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.inheritCoverGrammar(this.parseBinaryExpression);\n\t        if (this.match('?')) {\n\t            this.nextToken();\n\t            var previousAllowIn = this.context.allowIn;\n\t            this.context.allowIn = true;\n\t            var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            this.context.allowIn = previousAllowIn;\n\t            this.expect(':');\n\t            var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));\n\t            this.context.isAssignmentTarget = false;\n\t            this.context.isBindingElement = false;\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-assignment-operators\n\t    Parser.prototype.checkPatternParam = function (options, param) {\n\t        switch (param.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t                this.validateParam(options, param, param.name);\n\t                break;\n\t            case syntax_1.Syntax.RestElement:\n\t                this.checkPatternParam(options, param.argument);\n\t                break;\n\t            case syntax_1.Syntax.AssignmentPattern:\n\t                this.checkPatternParam(options, param.left);\n\t                break;\n\t            case syntax_1.Syntax.ArrayPattern:\n\t                for (var i = 0; i < param.elements.length; i++) {\n\t                    if (param.elements[i] !== null) {\n\t                        this.checkPatternParam(options, param.elements[i]);\n\t                    }\n\t                }\n\t                break;\n\t            case syntax_1.Syntax.ObjectPattern:\n\t                for (var i = 0; i < param.properties.length; i++) {\n\t                    this.checkPatternParam(options, param.properties[i].value);\n\t                }\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        options.simple = options.simple && (param instanceof Node.Identifier);\n\t    };\n\t    Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {\n\t        var params = [expr];\n\t        var options;\n\t        var asyncArrow = false;\n\t        switch (expr.type) {\n\t            case syntax_1.Syntax.Identifier:\n\t                break;\n\t            case ArrowParameterPlaceHolder:\n\t                params = expr.params;\n\t                asyncArrow = expr.async;\n\t                break;\n\t            default:\n\t                return null;\n\t        }\n\t        options = {\n\t            simple: true,\n\t            paramSet: {}\n\t        };\n\t        for (var i = 0; i < params.length; ++i) {\n\t            var param = params[i];\n\t            if (param.type === syntax_1.Syntax.AssignmentPattern) {\n\t                if (param.right.type === syntax_1.Syntax.YieldExpression) {\n\t                    if (param.right.argument) {\n\t                        this.throwUnexpectedToken(this.lookahead);\n\t                    }\n\t                    param.right.type = syntax_1.Syntax.Identifier;\n\t                    param.right.name = 'yield';\n\t                    delete param.right.argument;\n\t                    delete param.right.delegate;\n\t                }\n\t            }\n\t            else if (asyncArrow && param.type === syntax_1.Syntax.Identifier && param.name === 'await') {\n\t                this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            this.checkPatternParam(options, param);\n\t            params[i] = param;\n\t        }\n\t        if (this.context.strict || !this.context.allowYield) {\n\t            for (var i = 0; i < params.length; ++i) {\n\t                var param = params[i];\n\t                if (param.type === syntax_1.Syntax.YieldExpression) {\n\t                    this.throwUnexpectedToken(this.lookahead);\n\t                }\n\t            }\n\t        }\n\t        if (options.message === messages_1.Messages.StrictParamDupe) {\n\t            var token = this.context.strict ? options.stricted : options.firstRestricted;\n\t            this.throwUnexpectedToken(token, options.message);\n\t        }\n\t        return {\n\t            simple: options.simple,\n\t            params: params,\n\t            stricted: options.stricted,\n\t            firstRestricted: options.firstRestricted,\n\t            message: options.message\n\t        };\n\t    };\n\t    Parser.prototype.parseAssignmentExpression = function () {\n\t        var expr;\n\t        if (!this.context.allowYield && this.matchKeyword('yield')) {\n\t            expr = this.parseYieldExpression();\n\t        }\n\t        else {\n\t            var startToken = this.lookahead;\n\t            var token = startToken;\n\t            expr = this.parseConditionalExpression();\n\t            if (token.type === 3 /* Identifier */ && (token.lineNumber === this.lookahead.lineNumber) && token.value === 'async') {\n\t                if (this.lookahead.type === 3 /* Identifier */ || this.matchKeyword('yield')) {\n\t                    var arg = this.parsePrimaryExpression();\n\t                    this.reinterpretExpressionAsPattern(arg);\n\t                    expr = {\n\t                        type: ArrowParameterPlaceHolder,\n\t                        params: [arg],\n\t                        async: true\n\t                    };\n\t                }\n\t            }\n\t            if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {\n\t                // https://tc39.github.io/ecma262/#sec-arrow-function-definitions\n\t                this.context.isAssignmentTarget = false;\n\t                this.context.isBindingElement = false;\n\t                var isAsync = expr.async;\n\t                var list = this.reinterpretAsCoverFormalsList(expr);\n\t                if (list) {\n\t                    if (this.hasLineTerminator) {\n\t                        this.tolerateUnexpectedToken(this.lookahead);\n\t                    }\n\t                    this.context.firstCoverInitializedNameError = null;\n\t                    var previousStrict = this.context.strict;\n\t                    var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t                    this.context.allowStrictDirective = list.simple;\n\t                    var previousAllowYield = this.context.allowYield;\n\t                    var previousAwait = this.context.await;\n\t                    this.context.allowYield = true;\n\t                    this.context.await = isAsync;\n\t                    var node = this.startNode(startToken);\n\t                    this.expect('=>');\n\t                    var body = void 0;\n\t                    if (this.match('{')) {\n\t                        var previousAllowIn = this.context.allowIn;\n\t                        this.context.allowIn = true;\n\t                        body = this.parseFunctionSourceElements();\n\t                        this.context.allowIn = previousAllowIn;\n\t                    }\n\t                    else {\n\t                        body = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    }\n\t                    var expression = body.type !== syntax_1.Syntax.BlockStatement;\n\t                    if (this.context.strict && list.firstRestricted) {\n\t                        this.throwUnexpectedToken(list.firstRestricted, list.message);\n\t                    }\n\t                    if (this.context.strict && list.stricted) {\n\t                        this.tolerateUnexpectedToken(list.stricted, list.message);\n\t                    }\n\t                    expr = isAsync ? this.finalize(node, new Node.AsyncArrowFunctionExpression(list.params, body, expression)) :\n\t                        this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));\n\t                    this.context.strict = previousStrict;\n\t                    this.context.allowStrictDirective = previousAllowStrictDirective;\n\t                    this.context.allowYield = previousAllowYield;\n\t                    this.context.await = previousAwait;\n\t                }\n\t            }\n\t            else {\n\t                if (this.matchAssign()) {\n\t                    if (!this.context.isAssignmentTarget) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);\n\t                    }\n\t                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {\n\t                        var id = expr;\n\t                        if (this.scanner.isRestrictedWord(id.name)) {\n\t                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);\n\t                        }\n\t                        if (this.scanner.isStrictModeReservedWord(id.name)) {\n\t                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t                        }\n\t                    }\n\t                    if (!this.match('=')) {\n\t                        this.context.isAssignmentTarget = false;\n\t                        this.context.isBindingElement = false;\n\t                    }\n\t                    else {\n\t                        this.reinterpretExpressionAsPattern(expr);\n\t                    }\n\t                    token = this.nextToken();\n\t                    var operator = token.value;\n\t                    var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                    expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(operator, expr, right));\n\t                    this.context.firstCoverInitializedNameError = null;\n\t                }\n\t            }\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-comma-operator\n\t    Parser.prototype.parseExpression = function () {\n\t        var startToken = this.lookahead;\n\t        var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        if (this.match(',')) {\n\t            var expressions = [];\n\t            expressions.push(expr);\n\t            while (this.lookahead.type !== 2 /* EOF */) {\n\t                if (!this.match(',')) {\n\t                    break;\n\t                }\n\t                this.nextToken();\n\t                expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t            }\n\t            expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));\n\t        }\n\t        return expr;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-block\n\t    Parser.prototype.parseStatementListItem = function () {\n\t        var statement;\n\t        this.context.isAssignmentTarget = true;\n\t        this.context.isBindingElement = true;\n\t        if (this.lookahead.type === 4 /* Keyword */) {\n\t            switch (this.lookahead.value) {\n\t                case 'export':\n\t                    if (!this.context.isModule) {\n\t                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);\n\t                    }\n\t                    statement = this.parseExportDeclaration();\n\t                    break;\n\t                case 'import':\n\t                    if (!this.context.isModule) {\n\t                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);\n\t                    }\n\t                    statement = this.parseImportDeclaration();\n\t                    break;\n\t                case 'const':\n\t                    statement = this.parseLexicalDeclaration({ inFor: false });\n\t                    break;\n\t                case 'function':\n\t                    statement = this.parseFunctionDeclaration();\n\t                    break;\n\t                case 'class':\n\t                    statement = this.parseClassDeclaration();\n\t                    break;\n\t                case 'let':\n\t                    statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();\n\t                    break;\n\t                default:\n\t                    statement = this.parseStatement();\n\t                    break;\n\t            }\n\t        }\n\t        else {\n\t            statement = this.parseStatement();\n\t        }\n\t        return statement;\n\t    };\n\t    Parser.prototype.parseBlock = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var block = [];\n\t        while (true) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            block.push(this.parseStatementListItem());\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.BlockStatement(block));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-let-and-const-declarations\n\t    Parser.prototype.parseLexicalBinding = function (kind, options) {\n\t        var node = this.createNode();\n\t        var params = [];\n\t        var id = this.parsePattern(params, kind);\n\t        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(id.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictVarName);\n\t            }\n\t        }\n\t        var init = null;\n\t        if (kind === 'const') {\n\t            if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {\n\t                if (this.match('=')) {\n\t                    this.nextToken();\n\t                    init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t                }\n\t                else {\n\t                    this.throwError(messages_1.Messages.DeclarationMissingInitializer, 'const');\n\t                }\n\t            }\n\t        }\n\t        else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {\n\t            this.expect('=');\n\t            init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        }\n\t        return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t    };\n\t    Parser.prototype.parseBindingList = function (kind, options) {\n\t        var list = [this.parseLexicalBinding(kind, options)];\n\t        while (this.match(',')) {\n\t            this.nextToken();\n\t            list.push(this.parseLexicalBinding(kind, options));\n\t        }\n\t        return list;\n\t    };\n\t    Parser.prototype.isLexicalDeclaration = function () {\n\t        var state = this.scanner.saveState();\n\t        this.scanner.scanComments();\n\t        var next = this.scanner.lex();\n\t        this.scanner.restoreState(state);\n\t        return (next.type === 3 /* Identifier */) ||\n\t            (next.type === 7 /* Punctuator */ && next.value === '[') ||\n\t            (next.type === 7 /* Punctuator */ && next.value === '{') ||\n\t            (next.type === 4 /* Keyword */ && next.value === 'let') ||\n\t            (next.type === 4 /* Keyword */ && next.value === 'yield');\n\t    };\n\t    Parser.prototype.parseLexicalDeclaration = function (options) {\n\t        var node = this.createNode();\n\t        var kind = this.nextToken().value;\n\t        assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');\n\t        var declarations = this.parseBindingList(kind, options);\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.VariableDeclaration(declarations, kind));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-destructuring-binding-patterns\n\t    Parser.prototype.parseBindingRestElement = function (params, kind) {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.parsePattern(params, kind);\n\t        return this.finalize(node, new Node.RestElement(arg));\n\t    };\n\t    Parser.prototype.parseArrayPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        this.expect('[');\n\t        var elements = [];\n\t        while (!this.match(']')) {\n\t            if (this.match(',')) {\n\t                this.nextToken();\n\t                elements.push(null);\n\t            }\n\t            else {\n\t                if (this.match('...')) {\n\t                    elements.push(this.parseBindingRestElement(params, kind));\n\t                    break;\n\t                }\n\t                else {\n\t                    elements.push(this.parsePatternWithDefault(params, kind));\n\t                }\n\t                if (!this.match(']')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t        }\n\t        this.expect(']');\n\t        return this.finalize(node, new Node.ArrayPattern(elements));\n\t    };\n\t    Parser.prototype.parsePropertyPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        var computed = false;\n\t        var shorthand = false;\n\t        var method = false;\n\t        var key;\n\t        var value;\n\t        if (this.lookahead.type === 3 /* Identifier */) {\n\t            var keyToken = this.lookahead;\n\t            key = this.parseVariableIdentifier();\n\t            var init = this.finalize(node, new Node.Identifier(keyToken.value));\n\t            if (this.match('=')) {\n\t                params.push(keyToken);\n\t                shorthand = true;\n\t                this.nextToken();\n\t                var expr = this.parseAssignmentExpression();\n\t                value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));\n\t            }\n\t            else if (!this.match(':')) {\n\t                params.push(keyToken);\n\t                shorthand = true;\n\t                value = init;\n\t            }\n\t            else {\n\t                this.expect(':');\n\t                value = this.parsePatternWithDefault(params, kind);\n\t            }\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            this.expect(':');\n\t            value = this.parsePatternWithDefault(params, kind);\n\t        }\n\t        return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));\n\t    };\n\t    Parser.prototype.parseObjectPattern = function (params, kind) {\n\t        var node = this.createNode();\n\t        var properties = [];\n\t        this.expect('{');\n\t        while (!this.match('}')) {\n\t            properties.push(this.parsePropertyPattern(params, kind));\n\t            if (!this.match('}')) {\n\t                this.expect(',');\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return this.finalize(node, new Node.ObjectPattern(properties));\n\t    };\n\t    Parser.prototype.parsePattern = function (params, kind) {\n\t        var pattern;\n\t        if (this.match('[')) {\n\t            pattern = this.parseArrayPattern(params, kind);\n\t        }\n\t        else if (this.match('{')) {\n\t            pattern = this.parseObjectPattern(params, kind);\n\t        }\n\t        else {\n\t            if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {\n\t                this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.LetInLexicalBinding);\n\t            }\n\t            params.push(this.lookahead);\n\t            pattern = this.parseVariableIdentifier(kind);\n\t        }\n\t        return pattern;\n\t    };\n\t    Parser.prototype.parsePatternWithDefault = function (params, kind) {\n\t        var startToken = this.lookahead;\n\t        var pattern = this.parsePattern(params, kind);\n\t        if (this.match('=')) {\n\t            this.nextToken();\n\t            var previousAllowYield = this.context.allowYield;\n\t            this.context.allowYield = true;\n\t            var right = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t            this.context.allowYield = previousAllowYield;\n\t            pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));\n\t        }\n\t        return pattern;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-variable-statement\n\t    Parser.prototype.parseVariableIdentifier = function (kind) {\n\t        var node = this.createNode();\n\t        var token = this.nextToken();\n\t        if (token.type === 4 /* Keyword */ && token.value === 'yield') {\n\t            if (this.context.strict) {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t            }\n\t            else if (!this.context.allowYield) {\n\t                this.throwUnexpectedToken(token);\n\t            }\n\t        }\n\t        else if (token.type !== 3 /* Identifier */) {\n\t            if (this.context.strict && token.type === 4 /* Keyword */ && this.scanner.isStrictModeReservedWord(token.value)) {\n\t                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);\n\t            }\n\t            else {\n\t                if (this.context.strict || token.value !== 'let' || kind !== 'var') {\n\t                    this.throwUnexpectedToken(token);\n\t                }\n\t            }\n\t        }\n\t        else if ((this.context.isModule || this.context.await) && token.type === 3 /* Identifier */ && token.value === 'await') {\n\t            this.tolerateUnexpectedToken(token);\n\t        }\n\t        return this.finalize(node, new Node.Identifier(token.value));\n\t    };\n\t    Parser.prototype.parseVariableDeclaration = function (options) {\n\t        var node = this.createNode();\n\t        var params = [];\n\t        var id = this.parsePattern(params, 'var');\n\t        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(id.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictVarName);\n\t            }\n\t        }\n\t        var init = null;\n\t        if (this.match('=')) {\n\t            this.nextToken();\n\t            init = this.isolateCoverGrammar(this.parseAssignmentExpression);\n\t        }\n\t        else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {\n\t            this.expect('=');\n\t        }\n\t        return this.finalize(node, new Node.VariableDeclarator(id, init));\n\t    };\n\t    Parser.prototype.parseVariableDeclarationList = function (options) {\n\t        var opt = { inFor: options.inFor };\n\t        var list = [];\n\t        list.push(this.parseVariableDeclaration(opt));\n\t        while (this.match(',')) {\n\t            this.nextToken();\n\t            list.push(this.parseVariableDeclaration(opt));\n\t        }\n\t        return list;\n\t    };\n\t    Parser.prototype.parseVariableStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('var');\n\t        var declarations = this.parseVariableDeclarationList({ inFor: false });\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-empty-statement\n\t    Parser.prototype.parseEmptyStatement = function () {\n\t        var node = this.createNode();\n\t        this.expect(';');\n\t        return this.finalize(node, new Node.EmptyStatement());\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-expression-statement\n\t    Parser.prototype.parseExpressionStatement = function () {\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ExpressionStatement(expr));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-if-statement\n\t    Parser.prototype.parseIfClause = function () {\n\t        if (this.context.strict && this.matchKeyword('function')) {\n\t            this.tolerateError(messages_1.Messages.StrictFunction);\n\t        }\n\t        return this.parseStatement();\n\t    };\n\t    Parser.prototype.parseIfStatement = function () {\n\t        var node = this.createNode();\n\t        var consequent;\n\t        var alternate = null;\n\t        this.expectKeyword('if');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            consequent = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            consequent = this.parseIfClause();\n\t            if (this.matchKeyword('else')) {\n\t                this.nextToken();\n\t                alternate = this.parseIfClause();\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.IfStatement(test, consequent, alternate));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-do-while-statement\n\t    Parser.prototype.parseDoWhileStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('do');\n\t        var previousInIteration = this.context.inIteration;\n\t        this.context.inIteration = true;\n\t        var body = this.parseStatement();\n\t        this.context.inIteration = previousInIteration;\n\t        this.expectKeyword('while');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            if (this.match(';')) {\n\t                this.nextToken();\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.DoWhileStatement(body, test));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-while-statement\n\t    Parser.prototype.parseWhileStatement = function () {\n\t        var node = this.createNode();\n\t        var body;\n\t        this.expectKeyword('while');\n\t        this.expect('(');\n\t        var test = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            var previousInIteration = this.context.inIteration;\n\t            this.context.inIteration = true;\n\t            body = this.parseStatement();\n\t            this.context.inIteration = previousInIteration;\n\t        }\n\t        return this.finalize(node, new Node.WhileStatement(test, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-for-statement\n\t    // https://tc39.github.io/ecma262/#sec-for-in-and-for-of-statements\n\t    Parser.prototype.parseForStatement = function () {\n\t        var init = null;\n\t        var test = null;\n\t        var update = null;\n\t        var forIn = true;\n\t        var left, right;\n\t        var node = this.createNode();\n\t        this.expectKeyword('for');\n\t        this.expect('(');\n\t        if (this.match(';')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            if (this.matchKeyword('var')) {\n\t                init = this.createNode();\n\t                this.nextToken();\n\t                var previousAllowIn = this.context.allowIn;\n\t                this.context.allowIn = false;\n\t                var declarations = this.parseVariableDeclarationList({ inFor: true });\n\t                this.context.allowIn = previousAllowIn;\n\t                if (declarations.length === 1 && this.matchKeyword('in')) {\n\t                    var decl = declarations[0];\n\t                    if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {\n\t                        this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');\n\t                    }\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseAssignmentExpression();\n\t                    init = null;\n\t                    forIn = false;\n\t                }\n\t                else {\n\t                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));\n\t                    this.expect(';');\n\t                }\n\t            }\n\t            else if (this.matchKeyword('const') || this.matchKeyword('let')) {\n\t                init = this.createNode();\n\t                var kind = this.nextToken().value;\n\t                if (!this.context.strict && this.lookahead.value === 'in') {\n\t                    init = this.finalize(init, new Node.Identifier(kind));\n\t                    this.nextToken();\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else {\n\t                    var previousAllowIn = this.context.allowIn;\n\t                    this.context.allowIn = false;\n\t                    var declarations = this.parseBindingList(kind, { inFor: true });\n\t                    this.context.allowIn = previousAllowIn;\n\t                    if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                        this.nextToken();\n\t                        left = init;\n\t                        right = this.parseExpression();\n\t                        init = null;\n\t                    }\n\t                    else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                        this.nextToken();\n\t                        left = init;\n\t                        right = this.parseAssignmentExpression();\n\t                        init = null;\n\t                        forIn = false;\n\t                    }\n\t                    else {\n\t                        this.consumeSemicolon();\n\t                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));\n\t                    }\n\t                }\n\t            }\n\t            else {\n\t                var initStartToken = this.lookahead;\n\t                var previousAllowIn = this.context.allowIn;\n\t                this.context.allowIn = false;\n\t                init = this.inheritCoverGrammar(this.parseAssignmentExpression);\n\t                this.context.allowIn = previousAllowIn;\n\t                if (this.matchKeyword('in')) {\n\t                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInForIn);\n\t                    }\n\t                    this.nextToken();\n\t                    this.reinterpretExpressionAsPattern(init);\n\t                    left = init;\n\t                    right = this.parseExpression();\n\t                    init = null;\n\t                }\n\t                else if (this.matchContextualKeyword('of')) {\n\t                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {\n\t                        this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);\n\t                    }\n\t                    this.nextToken();\n\t                    this.reinterpretExpressionAsPattern(init);\n\t                    left = init;\n\t                    right = this.parseAssignmentExpression();\n\t                    init = null;\n\t                    forIn = false;\n\t                }\n\t                else {\n\t                    if (this.match(',')) {\n\t                        var initSeq = [init];\n\t                        while (this.match(',')) {\n\t                            this.nextToken();\n\t                            initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));\n\t                        }\n\t                        init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));\n\t                    }\n\t                    this.expect(';');\n\t                }\n\t            }\n\t        }\n\t        if (typeof left === 'undefined') {\n\t            if (!this.match(';')) {\n\t                test = this.parseExpression();\n\t            }\n\t            this.expect(';');\n\t            if (!this.match(')')) {\n\t                update = this.parseExpression();\n\t            }\n\t        }\n\t        var body;\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            var previousInIteration = this.context.inIteration;\n\t            this.context.inIteration = true;\n\t            body = this.isolateCoverGrammar(this.parseStatement);\n\t            this.context.inIteration = previousInIteration;\n\t        }\n\t        return (typeof left === 'undefined') ?\n\t            this.finalize(node, new Node.ForStatement(init, test, update, body)) :\n\t            forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :\n\t                this.finalize(node, new Node.ForOfStatement(left, right, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-continue-statement\n\t    Parser.prototype.parseContinueStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('continue');\n\t        var label = null;\n\t        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t            var id = this.parseVariableIdentifier();\n\t            label = id;\n\t            var key = '$' + id.name;\n\t            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t            }\n\t        }\n\t        this.consumeSemicolon();\n\t        if (label === null && !this.context.inIteration) {\n\t            this.throwError(messages_1.Messages.IllegalContinue);\n\t        }\n\t        return this.finalize(node, new Node.ContinueStatement(label));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-break-statement\n\t    Parser.prototype.parseBreakStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('break');\n\t        var label = null;\n\t        if (this.lookahead.type === 3 /* Identifier */ && !this.hasLineTerminator) {\n\t            var id = this.parseVariableIdentifier();\n\t            var key = '$' + id.name;\n\t            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.UnknownLabel, id.name);\n\t            }\n\t            label = id;\n\t        }\n\t        this.consumeSemicolon();\n\t        if (label === null && !this.context.inIteration && !this.context.inSwitch) {\n\t            this.throwError(messages_1.Messages.IllegalBreak);\n\t        }\n\t        return this.finalize(node, new Node.BreakStatement(label));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-return-statement\n\t    Parser.prototype.parseReturnStatement = function () {\n\t        if (!this.context.inFunctionBody) {\n\t            this.tolerateError(messages_1.Messages.IllegalReturn);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('return');\n\t        var hasArgument = (!this.match(';') && !this.match('}') &&\n\t            !this.hasLineTerminator && this.lookahead.type !== 2 /* EOF */) ||\n\t            this.lookahead.type === 8 /* StringLiteral */ ||\n\t            this.lookahead.type === 10 /* Template */;\n\t        var argument = hasArgument ? this.parseExpression() : null;\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ReturnStatement(argument));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-with-statement\n\t    Parser.prototype.parseWithStatement = function () {\n\t        if (this.context.strict) {\n\t            this.tolerateError(messages_1.Messages.StrictModeWith);\n\t        }\n\t        var node = this.createNode();\n\t        var body;\n\t        this.expectKeyword('with');\n\t        this.expect('(');\n\t        var object = this.parseExpression();\n\t        if (!this.match(')') && this.config.tolerant) {\n\t            this.tolerateUnexpectedToken(this.nextToken());\n\t            body = this.finalize(this.createNode(), new Node.EmptyStatement());\n\t        }\n\t        else {\n\t            this.expect(')');\n\t            body = this.parseStatement();\n\t        }\n\t        return this.finalize(node, new Node.WithStatement(object, body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-switch-statement\n\t    Parser.prototype.parseSwitchCase = function () {\n\t        var node = this.createNode();\n\t        var test;\n\t        if (this.matchKeyword('default')) {\n\t            this.nextToken();\n\t            test = null;\n\t        }\n\t        else {\n\t            this.expectKeyword('case');\n\t            test = this.parseExpression();\n\t        }\n\t        this.expect(':');\n\t        var consequent = [];\n\t        while (true) {\n\t            if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {\n\t                break;\n\t            }\n\t            consequent.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.SwitchCase(test, consequent));\n\t    };\n\t    Parser.prototype.parseSwitchStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('switch');\n\t        this.expect('(');\n\t        var discriminant = this.parseExpression();\n\t        this.expect(')');\n\t        var previousInSwitch = this.context.inSwitch;\n\t        this.context.inSwitch = true;\n\t        var cases = [];\n\t        var defaultFound = false;\n\t        this.expect('{');\n\t        while (true) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            var clause = this.parseSwitchCase();\n\t            if (clause.test === null) {\n\t                if (defaultFound) {\n\t                    this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);\n\t                }\n\t                defaultFound = true;\n\t            }\n\t            cases.push(clause);\n\t        }\n\t        this.expect('}');\n\t        this.context.inSwitch = previousInSwitch;\n\t        return this.finalize(node, new Node.SwitchStatement(discriminant, cases));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-labelled-statements\n\t    Parser.prototype.parseLabelledStatement = function () {\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        var statement;\n\t        if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {\n\t            this.nextToken();\n\t            var id = expr;\n\t            var key = '$' + id.name;\n\t            if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {\n\t                this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);\n\t            }\n\t            this.context.labelSet[key] = true;\n\t            var body = void 0;\n\t            if (this.matchKeyword('class')) {\n\t                this.tolerateUnexpectedToken(this.lookahead);\n\t                body = this.parseClassDeclaration();\n\t            }\n\t            else if (this.matchKeyword('function')) {\n\t                var token = this.lookahead;\n\t                var declaration = this.parseFunctionDeclaration();\n\t                if (this.context.strict) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunction);\n\t                }\n\t                else if (declaration.generator) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.GeneratorInLegacyContext);\n\t                }\n\t                body = declaration;\n\t            }\n\t            else {\n\t                body = this.parseStatement();\n\t            }\n\t            delete this.context.labelSet[key];\n\t            statement = new Node.LabeledStatement(id, body);\n\t        }\n\t        else {\n\t            this.consumeSemicolon();\n\t            statement = new Node.ExpressionStatement(expr);\n\t        }\n\t        return this.finalize(node, statement);\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-throw-statement\n\t    Parser.prototype.parseThrowStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('throw');\n\t        if (this.hasLineTerminator) {\n\t            this.throwError(messages_1.Messages.NewlineAfterThrow);\n\t        }\n\t        var argument = this.parseExpression();\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ThrowStatement(argument));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-try-statement\n\t    Parser.prototype.parseCatchClause = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('catch');\n\t        this.expect('(');\n\t        if (this.match(')')) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        var params = [];\n\t        var param = this.parsePattern(params);\n\t        var paramMap = {};\n\t        for (var i = 0; i < params.length; i++) {\n\t            var key = '$' + params[i].value;\n\t            if (Object.prototype.hasOwnProperty.call(paramMap, key)) {\n\t                this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);\n\t            }\n\t            paramMap[key] = true;\n\t        }\n\t        if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {\n\t            if (this.scanner.isRestrictedWord(param.name)) {\n\t                this.tolerateError(messages_1.Messages.StrictCatchVariable);\n\t            }\n\t        }\n\t        this.expect(')');\n\t        var body = this.parseBlock();\n\t        return this.finalize(node, new Node.CatchClause(param, body));\n\t    };\n\t    Parser.prototype.parseFinallyClause = function () {\n\t        this.expectKeyword('finally');\n\t        return this.parseBlock();\n\t    };\n\t    Parser.prototype.parseTryStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('try');\n\t        var block = this.parseBlock();\n\t        var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;\n\t        var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;\n\t        if (!handler && !finalizer) {\n\t            this.throwError(messages_1.Messages.NoCatchOrFinally);\n\t        }\n\t        return this.finalize(node, new Node.TryStatement(block, handler, finalizer));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-debugger-statement\n\t    Parser.prototype.parseDebuggerStatement = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('debugger');\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.DebuggerStatement());\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-ecmascript-language-statements-and-declarations\n\t    Parser.prototype.parseStatement = function () {\n\t        var statement;\n\t        switch (this.lookahead.type) {\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t            case 8 /* StringLiteral */:\n\t            case 10 /* Template */:\n\t            case 9 /* RegularExpression */:\n\t                statement = this.parseExpressionStatement();\n\t                break;\n\t            case 7 /* Punctuator */:\n\t                var value = this.lookahead.value;\n\t                if (value === '{') {\n\t                    statement = this.parseBlock();\n\t                }\n\t                else if (value === '(') {\n\t                    statement = this.parseExpressionStatement();\n\t                }\n\t                else if (value === ';') {\n\t                    statement = this.parseEmptyStatement();\n\t                }\n\t                else {\n\t                    statement = this.parseExpressionStatement();\n\t                }\n\t                break;\n\t            case 3 /* Identifier */:\n\t                statement = this.matchAsyncFunction() ? this.parseFunctionDeclaration() : this.parseLabelledStatement();\n\t                break;\n\t            case 4 /* Keyword */:\n\t                switch (this.lookahead.value) {\n\t                    case 'break':\n\t                        statement = this.parseBreakStatement();\n\t                        break;\n\t                    case 'continue':\n\t                        statement = this.parseContinueStatement();\n\t                        break;\n\t                    case 'debugger':\n\t                        statement = this.parseDebuggerStatement();\n\t                        break;\n\t                    case 'do':\n\t                        statement = this.parseDoWhileStatement();\n\t                        break;\n\t                    case 'for':\n\t                        statement = this.parseForStatement();\n\t                        break;\n\t                    case 'function':\n\t                        statement = this.parseFunctionDeclaration();\n\t                        break;\n\t                    case 'if':\n\t                        statement = this.parseIfStatement();\n\t                        break;\n\t                    case 'return':\n\t                        statement = this.parseReturnStatement();\n\t                        break;\n\t                    case 'switch':\n\t                        statement = this.parseSwitchStatement();\n\t                        break;\n\t                    case 'throw':\n\t                        statement = this.parseThrowStatement();\n\t                        break;\n\t                    case 'try':\n\t                        statement = this.parseTryStatement();\n\t                        break;\n\t                    case 'var':\n\t                        statement = this.parseVariableStatement();\n\t                        break;\n\t                    case 'while':\n\t                        statement = this.parseWhileStatement();\n\t                        break;\n\t                    case 'with':\n\t                        statement = this.parseWithStatement();\n\t                        break;\n\t                    default:\n\t                        statement = this.parseExpressionStatement();\n\t                        break;\n\t                }\n\t                break;\n\t            default:\n\t                statement = this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        return statement;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-function-definitions\n\t    Parser.prototype.parseFunctionSourceElements = function () {\n\t        var node = this.createNode();\n\t        this.expect('{');\n\t        var body = this.parseDirectivePrologues();\n\t        var previousLabelSet = this.context.labelSet;\n\t        var previousInIteration = this.context.inIteration;\n\t        var previousInSwitch = this.context.inSwitch;\n\t        var previousInFunctionBody = this.context.inFunctionBody;\n\t        this.context.labelSet = {};\n\t        this.context.inIteration = false;\n\t        this.context.inSwitch = false;\n\t        this.context.inFunctionBody = true;\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            if (this.match('}')) {\n\t                break;\n\t            }\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        this.expect('}');\n\t        this.context.labelSet = previousLabelSet;\n\t        this.context.inIteration = previousInIteration;\n\t        this.context.inSwitch = previousInSwitch;\n\t        this.context.inFunctionBody = previousInFunctionBody;\n\t        return this.finalize(node, new Node.BlockStatement(body));\n\t    };\n\t    Parser.prototype.validateParam = function (options, param, name) {\n\t        var key = '$' + name;\n\t        if (this.context.strict) {\n\t            if (this.scanner.isRestrictedWord(name)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamName;\n\t            }\n\t            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamDupe;\n\t            }\n\t        }\n\t        else if (!options.firstRestricted) {\n\t            if (this.scanner.isRestrictedWord(name)) {\n\t                options.firstRestricted = param;\n\t                options.message = messages_1.Messages.StrictParamName;\n\t            }\n\t            else if (this.scanner.isStrictModeReservedWord(name)) {\n\t                options.firstRestricted = param;\n\t                options.message = messages_1.Messages.StrictReservedWord;\n\t            }\n\t            else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {\n\t                options.stricted = param;\n\t                options.message = messages_1.Messages.StrictParamDupe;\n\t            }\n\t        }\n\t        /* istanbul ignore next */\n\t        if (typeof Object.defineProperty === 'function') {\n\t            Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });\n\t        }\n\t        else {\n\t            options.paramSet[key] = true;\n\t        }\n\t    };\n\t    Parser.prototype.parseRestElement = function (params) {\n\t        var node = this.createNode();\n\t        this.expect('...');\n\t        var arg = this.parsePattern(params);\n\t        if (this.match('=')) {\n\t            this.throwError(messages_1.Messages.DefaultRestParameter);\n\t        }\n\t        if (!this.match(')')) {\n\t            this.throwError(messages_1.Messages.ParameterAfterRestParameter);\n\t        }\n\t        return this.finalize(node, new Node.RestElement(arg));\n\t    };\n\t    Parser.prototype.parseFormalParameter = function (options) {\n\t        var params = [];\n\t        var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);\n\t        for (var i = 0; i < params.length; i++) {\n\t            this.validateParam(options, params[i], params[i].value);\n\t        }\n\t        options.simple = options.simple && (param instanceof Node.Identifier);\n\t        options.params.push(param);\n\t    };\n\t    Parser.prototype.parseFormalParameters = function (firstRestricted) {\n\t        var options;\n\t        options = {\n\t            simple: true,\n\t            params: [],\n\t            firstRestricted: firstRestricted\n\t        };\n\t        this.expect('(');\n\t        if (!this.match(')')) {\n\t            options.paramSet = {};\n\t            while (this.lookahead.type !== 2 /* EOF */) {\n\t                this.parseFormalParameter(options);\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t                this.expect(',');\n\t                if (this.match(')')) {\n\t                    break;\n\t                }\n\t            }\n\t        }\n\t        this.expect(')');\n\t        return {\n\t            simple: options.simple,\n\t            params: options.params,\n\t            stricted: options.stricted,\n\t            firstRestricted: options.firstRestricted,\n\t            message: options.message\n\t        };\n\t    };\n\t    Parser.prototype.matchAsyncFunction = function () {\n\t        var match = this.matchContextualKeyword('async');\n\t        if (match) {\n\t            var state = this.scanner.saveState();\n\t            this.scanner.scanComments();\n\t            var next = this.scanner.lex();\n\t            this.scanner.restoreState(state);\n\t            match = (state.lineNumber === next.lineNumber) && (next.type === 4 /* Keyword */) && (next.value === 'function');\n\t        }\n\t        return match;\n\t    };\n\t    Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {\n\t        var node = this.createNode();\n\t        var isAsync = this.matchContextualKeyword('async');\n\t        if (isAsync) {\n\t            this.nextToken();\n\t        }\n\t        this.expectKeyword('function');\n\t        var isGenerator = isAsync ? false : this.match('*');\n\t        if (isGenerator) {\n\t            this.nextToken();\n\t        }\n\t        var message;\n\t        var id = null;\n\t        var firstRestricted = null;\n\t        if (!identifierIsOptional || !this.match('(')) {\n\t            var token = this.lookahead;\n\t            id = this.parseVariableIdentifier();\n\t            if (this.context.strict) {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t                }\n\t            }\n\t            else {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictFunctionName;\n\t                }\n\t                else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictReservedWord;\n\t                }\n\t            }\n\t        }\n\t        var previousAllowAwait = this.context.await;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.await = isAsync;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters(firstRestricted);\n\t        var params = formalParameters.params;\n\t        var stricted = formalParameters.stricted;\n\t        firstRestricted = formalParameters.firstRestricted;\n\t        if (formalParameters.message) {\n\t            message = formalParameters.message;\n\t        }\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = formalParameters.simple;\n\t        var body = this.parseFunctionSourceElements();\n\t        if (this.context.strict && firstRestricted) {\n\t            this.throwUnexpectedToken(firstRestricted, message);\n\t        }\n\t        if (this.context.strict && stricted) {\n\t            this.tolerateUnexpectedToken(stricted, message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        this.context.await = previousAllowAwait;\n\t        this.context.allowYield = previousAllowYield;\n\t        return isAsync ? this.finalize(node, new Node.AsyncFunctionDeclaration(id, params, body)) :\n\t            this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));\n\t    };\n\t    Parser.prototype.parseFunctionExpression = function () {\n\t        var node = this.createNode();\n\t        var isAsync = this.matchContextualKeyword('async');\n\t        if (isAsync) {\n\t            this.nextToken();\n\t        }\n\t        this.expectKeyword('function');\n\t        var isGenerator = isAsync ? false : this.match('*');\n\t        if (isGenerator) {\n\t            this.nextToken();\n\t        }\n\t        var message;\n\t        var id = null;\n\t        var firstRestricted;\n\t        var previousAllowAwait = this.context.await;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.await = isAsync;\n\t        this.context.allowYield = !isGenerator;\n\t        if (!this.match('(')) {\n\t            var token = this.lookahead;\n\t            id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();\n\t            if (this.context.strict) {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);\n\t                }\n\t            }\n\t            else {\n\t                if (this.scanner.isRestrictedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictFunctionName;\n\t                }\n\t                else if (this.scanner.isStrictModeReservedWord(token.value)) {\n\t                    firstRestricted = token;\n\t                    message = messages_1.Messages.StrictReservedWord;\n\t                }\n\t            }\n\t        }\n\t        var formalParameters = this.parseFormalParameters(firstRestricted);\n\t        var params = formalParameters.params;\n\t        var stricted = formalParameters.stricted;\n\t        firstRestricted = formalParameters.firstRestricted;\n\t        if (formalParameters.message) {\n\t            message = formalParameters.message;\n\t        }\n\t        var previousStrict = this.context.strict;\n\t        var previousAllowStrictDirective = this.context.allowStrictDirective;\n\t        this.context.allowStrictDirective = formalParameters.simple;\n\t        var body = this.parseFunctionSourceElements();\n\t        if (this.context.strict && firstRestricted) {\n\t            this.throwUnexpectedToken(firstRestricted, message);\n\t        }\n\t        if (this.context.strict && stricted) {\n\t            this.tolerateUnexpectedToken(stricted, message);\n\t        }\n\t        this.context.strict = previousStrict;\n\t        this.context.allowStrictDirective = previousAllowStrictDirective;\n\t        this.context.await = previousAllowAwait;\n\t        this.context.allowYield = previousAllowYield;\n\t        return isAsync ? this.finalize(node, new Node.AsyncFunctionExpression(id, params, body)) :\n\t            this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-directive-prologues-and-the-use-strict-directive\n\t    Parser.prototype.parseDirective = function () {\n\t        var token = this.lookahead;\n\t        var node = this.createNode();\n\t        var expr = this.parseExpression();\n\t        var directive = (expr.type === syntax_1.Syntax.Literal) ? this.getTokenRaw(token).slice(1, -1) : null;\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, directive ? new Node.Directive(expr, directive) : new Node.ExpressionStatement(expr));\n\t    };\n\t    Parser.prototype.parseDirectivePrologues = function () {\n\t        var firstRestricted = null;\n\t        var body = [];\n\t        while (true) {\n\t            var token = this.lookahead;\n\t            if (token.type !== 8 /* StringLiteral */) {\n\t                break;\n\t            }\n\t            var statement = this.parseDirective();\n\t            body.push(statement);\n\t            var directive = statement.directive;\n\t            if (typeof directive !== 'string') {\n\t                break;\n\t            }\n\t            if (directive === 'use strict') {\n\t                this.context.strict = true;\n\t                if (firstRestricted) {\n\t                    this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);\n\t                }\n\t                if (!this.context.allowStrictDirective) {\n\t                    this.tolerateUnexpectedToken(token, messages_1.Messages.IllegalLanguageModeDirective);\n\t                }\n\t            }\n\t            else {\n\t                if (!firstRestricted && token.octal) {\n\t                    firstRestricted = token;\n\t                }\n\t            }\n\t        }\n\t        return body;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-method-definitions\n\t    Parser.prototype.qualifiedPropertyName = function (token) {\n\t        switch (token.type) {\n\t            case 3 /* Identifier */:\n\t            case 8 /* StringLiteral */:\n\t            case 1 /* BooleanLiteral */:\n\t            case 5 /* NullLiteral */:\n\t            case 6 /* NumericLiteral */:\n\t            case 4 /* Keyword */:\n\t                return true;\n\t            case 7 /* Punctuator */:\n\t                return token.value === '[';\n\t            default:\n\t                break;\n\t        }\n\t        return false;\n\t    };\n\t    Parser.prototype.parseGetterMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = false;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters();\n\t        if (formalParameters.params.length > 0) {\n\t            this.tolerateError(messages_1.Messages.BadGetterArity);\n\t        }\n\t        var method = this.parsePropertyMethod(formalParameters);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parseSetterMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = false;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = !isGenerator;\n\t        var formalParameters = this.parseFormalParameters();\n\t        if (formalParameters.params.length !== 1) {\n\t            this.tolerateError(messages_1.Messages.BadSetterArity);\n\t        }\n\t        else if (formalParameters.params[0] instanceof Node.RestElement) {\n\t            this.tolerateError(messages_1.Messages.BadSetterRestParameter);\n\t        }\n\t        var method = this.parsePropertyMethod(formalParameters);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, formalParameters.params, method, isGenerator));\n\t    };\n\t    Parser.prototype.parseGeneratorMethod = function () {\n\t        var node = this.createNode();\n\t        var isGenerator = true;\n\t        var previousAllowYield = this.context.allowYield;\n\t        this.context.allowYield = true;\n\t        var params = this.parseFormalParameters();\n\t        this.context.allowYield = false;\n\t        var method = this.parsePropertyMethod(params);\n\t        this.context.allowYield = previousAllowYield;\n\t        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-generator-function-definitions\n\t    Parser.prototype.isStartOfExpression = function () {\n\t        var start = true;\n\t        var value = this.lookahead.value;\n\t        switch (this.lookahead.type) {\n\t            case 7 /* Punctuator */:\n\t                start = (value === '[') || (value === '(') || (value === '{') ||\n\t                    (value === '+') || (value === '-') ||\n\t                    (value === '!') || (value === '~') ||\n\t                    (value === '++') || (value === '--') ||\n\t                    (value === '/') || (value === '/='); // regular expression literal\n\t                break;\n\t            case 4 /* Keyword */:\n\t                start = (value === 'class') || (value === 'delete') ||\n\t                    (value === 'function') || (value === 'let') || (value === 'new') ||\n\t                    (value === 'super') || (value === 'this') || (value === 'typeof') ||\n\t                    (value === 'void') || (value === 'yield');\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        return start;\n\t    };\n\t    Parser.prototype.parseYieldExpression = function () {\n\t        var node = this.createNode();\n\t        this.expectKeyword('yield');\n\t        var argument = null;\n\t        var delegate = false;\n\t        if (!this.hasLineTerminator) {\n\t            var previousAllowYield = this.context.allowYield;\n\t            this.context.allowYield = false;\n\t            delegate = this.match('*');\n\t            if (delegate) {\n\t                this.nextToken();\n\t                argument = this.parseAssignmentExpression();\n\t            }\n\t            else if (this.isStartOfExpression()) {\n\t                argument = this.parseAssignmentExpression();\n\t            }\n\t            this.context.allowYield = previousAllowYield;\n\t        }\n\t        return this.finalize(node, new Node.YieldExpression(argument, delegate));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-class-definitions\n\t    Parser.prototype.parseClassElement = function (hasConstructor) {\n\t        var token = this.lookahead;\n\t        var node = this.createNode();\n\t        var kind = '';\n\t        var key = null;\n\t        var value = null;\n\t        var computed = false;\n\t        var method = false;\n\t        var isStatic = false;\n\t        var isAsync = false;\n\t        if (this.match('*')) {\n\t            this.nextToken();\n\t        }\n\t        else {\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            var id = key;\n\t            if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {\n\t                token = this.lookahead;\n\t                isStatic = true;\n\t                computed = this.match('[');\n\t                if (this.match('*')) {\n\t                    this.nextToken();\n\t                }\n\t                else {\n\t                    key = this.parseObjectPropertyKey();\n\t                }\n\t            }\n\t            if ((token.type === 3 /* Identifier */) && !this.hasLineTerminator && (token.value === 'async')) {\n\t                var punctuator = this.lookahead.value;\n\t                if (punctuator !== ':' && punctuator !== '(' && punctuator !== '*') {\n\t                    isAsync = true;\n\t                    token = this.lookahead;\n\t                    key = this.parseObjectPropertyKey();\n\t                    if (token.type === 3 /* Identifier */ && token.value === 'constructor') {\n\t                        this.tolerateUnexpectedToken(token, messages_1.Messages.ConstructorIsAsync);\n\t                    }\n\t                }\n\t            }\n\t        }\n\t        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);\n\t        if (token.type === 3 /* Identifier */) {\n\t            if (token.value === 'get' && lookaheadPropertyKey) {\n\t                kind = 'get';\n\t                computed = this.match('[');\n\t                key = this.parseObjectPropertyKey();\n\t                this.context.allowYield = false;\n\t                value = this.parseGetterMethod();\n\t            }\n\t            else if (token.value === 'set' && lookaheadPropertyKey) {\n\t                kind = 'set';\n\t                computed = this.match('[');\n\t                key = this.parseObjectPropertyKey();\n\t                value = this.parseSetterMethod();\n\t            }\n\t        }\n\t        else if (token.type === 7 /* Punctuator */ && token.value === '*' && lookaheadPropertyKey) {\n\t            kind = 'init';\n\t            computed = this.match('[');\n\t            key = this.parseObjectPropertyKey();\n\t            value = this.parseGeneratorMethod();\n\t            method = true;\n\t        }\n\t        if (!kind && key && this.match('(')) {\n\t            kind = 'init';\n\t            value = isAsync ? this.parsePropertyMethodAsyncFunction() : this.parsePropertyMethodFunction();\n\t            method = true;\n\t        }\n\t        if (!kind) {\n\t            this.throwUnexpectedToken(this.lookahead);\n\t        }\n\t        if (kind === 'init') {\n\t            kind = 'method';\n\t        }\n\t        if (!computed) {\n\t            if (isStatic && this.isPropertyKey(key, 'prototype')) {\n\t                this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);\n\t            }\n\t            if (!isStatic && this.isPropertyKey(key, 'constructor')) {\n\t                if (kind !== 'method' || !method || (value && value.generator)) {\n\t                    this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);\n\t                }\n\t                if (hasConstructor.value) {\n\t                    this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);\n\t                }\n\t                else {\n\t                    hasConstructor.value = true;\n\t                }\n\t                kind = 'constructor';\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));\n\t    };\n\t    Parser.prototype.parseClassElementList = function () {\n\t        var body = [];\n\t        var hasConstructor = { value: false };\n\t        this.expect('{');\n\t        while (!this.match('}')) {\n\t            if (this.match(';')) {\n\t                this.nextToken();\n\t            }\n\t            else {\n\t                body.push(this.parseClassElement(hasConstructor));\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return body;\n\t    };\n\t    Parser.prototype.parseClassBody = function () {\n\t        var node = this.createNode();\n\t        var elementList = this.parseClassElementList();\n\t        return this.finalize(node, new Node.ClassBody(elementList));\n\t    };\n\t    Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {\n\t        var node = this.createNode();\n\t        var previousStrict = this.context.strict;\n\t        this.context.strict = true;\n\t        this.expectKeyword('class');\n\t        var id = (identifierIsOptional && (this.lookahead.type !== 3 /* Identifier */)) ? null : this.parseVariableIdentifier();\n\t        var superClass = null;\n\t        if (this.matchKeyword('extends')) {\n\t            this.nextToken();\n\t            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t        }\n\t        var classBody = this.parseClassBody();\n\t        this.context.strict = previousStrict;\n\t        return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));\n\t    };\n\t    Parser.prototype.parseClassExpression = function () {\n\t        var node = this.createNode();\n\t        var previousStrict = this.context.strict;\n\t        this.context.strict = true;\n\t        this.expectKeyword('class');\n\t        var id = (this.lookahead.type === 3 /* Identifier */) ? this.parseVariableIdentifier() : null;\n\t        var superClass = null;\n\t        if (this.matchKeyword('extends')) {\n\t            this.nextToken();\n\t            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);\n\t        }\n\t        var classBody = this.parseClassBody();\n\t        this.context.strict = previousStrict;\n\t        return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-scripts\n\t    // https://tc39.github.io/ecma262/#sec-modules\n\t    Parser.prototype.parseModule = function () {\n\t        this.context.strict = true;\n\t        this.context.isModule = true;\n\t        this.scanner.isModule = true;\n\t        var node = this.createNode();\n\t        var body = this.parseDirectivePrologues();\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.Module(body));\n\t    };\n\t    Parser.prototype.parseScript = function () {\n\t        var node = this.createNode();\n\t        var body = this.parseDirectivePrologues();\n\t        while (this.lookahead.type !== 2 /* EOF */) {\n\t            body.push(this.parseStatementListItem());\n\t        }\n\t        return this.finalize(node, new Node.Script(body));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-imports\n\t    Parser.prototype.parseModuleSpecifier = function () {\n\t        var node = this.createNode();\n\t        if (this.lookahead.type !== 8 /* StringLiteral */) {\n\t            this.throwError(messages_1.Messages.InvalidModuleSpecifier);\n\t        }\n\t        var token = this.nextToken();\n\t        var raw = this.getTokenRaw(token);\n\t        return this.finalize(node, new Node.Literal(token.value, raw));\n\t    };\n\t    // import {<foo as bar>} ...;\n\t    Parser.prototype.parseImportSpecifier = function () {\n\t        var node = this.createNode();\n\t        var imported;\n\t        var local;\n\t        if (this.lookahead.type === 3 /* Identifier */) {\n\t            imported = this.parseVariableIdentifier();\n\t            local = imported;\n\t            if (this.matchContextualKeyword('as')) {\n\t                this.nextToken();\n\t                local = this.parseVariableIdentifier();\n\t            }\n\t        }\n\t        else {\n\t            imported = this.parseIdentifierName();\n\t            local = imported;\n\t            if (this.matchContextualKeyword('as')) {\n\t                this.nextToken();\n\t                local = this.parseVariableIdentifier();\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t        }\n\t        return this.finalize(node, new Node.ImportSpecifier(local, imported));\n\t    };\n\t    // {foo, bar as bas}\n\t    Parser.prototype.parseNamedImports = function () {\n\t        this.expect('{');\n\t        var specifiers = [];\n\t        while (!this.match('}')) {\n\t            specifiers.push(this.parseImportSpecifier());\n\t            if (!this.match('}')) {\n\t                this.expect(',');\n\t            }\n\t        }\n\t        this.expect('}');\n\t        return specifiers;\n\t    };\n\t    // import <foo> ...;\n\t    Parser.prototype.parseImportDefaultSpecifier = function () {\n\t        var node = this.createNode();\n\t        var local = this.parseIdentifierName();\n\t        return this.finalize(node, new Node.ImportDefaultSpecifier(local));\n\t    };\n\t    // import <* as foo> ...;\n\t    Parser.prototype.parseImportNamespaceSpecifier = function () {\n\t        var node = this.createNode();\n\t        this.expect('*');\n\t        if (!this.matchContextualKeyword('as')) {\n\t            this.throwError(messages_1.Messages.NoAsAfterImportNamespace);\n\t        }\n\t        this.nextToken();\n\t        var local = this.parseIdentifierName();\n\t        return this.finalize(node, new Node.ImportNamespaceSpecifier(local));\n\t    };\n\t    Parser.prototype.parseImportDeclaration = function () {\n\t        if (this.context.inFunctionBody) {\n\t            this.throwError(messages_1.Messages.IllegalImportDeclaration);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('import');\n\t        var src;\n\t        var specifiers = [];\n\t        if (this.lookahead.type === 8 /* StringLiteral */) {\n\t            // import 'foo';\n\t            src = this.parseModuleSpecifier();\n\t        }\n\t        else {\n\t            if (this.match('{')) {\n\t                // import {bar}\n\t                specifiers = specifiers.concat(this.parseNamedImports());\n\t            }\n\t            else if (this.match('*')) {\n\t                // import * as foo\n\t                specifiers.push(this.parseImportNamespaceSpecifier());\n\t            }\n\t            else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {\n\t                // import foo\n\t                specifiers.push(this.parseImportDefaultSpecifier());\n\t                if (this.match(',')) {\n\t                    this.nextToken();\n\t                    if (this.match('*')) {\n\t                        // import foo, * as foo\n\t                        specifiers.push(this.parseImportNamespaceSpecifier());\n\t                    }\n\t                    else if (this.match('{')) {\n\t                        // import foo, {bar}\n\t                        specifiers = specifiers.concat(this.parseNamedImports());\n\t                    }\n\t                    else {\n\t                        this.throwUnexpectedToken(this.lookahead);\n\t                    }\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken(this.nextToken());\n\t            }\n\t            if (!this.matchContextualKeyword('from')) {\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            this.nextToken();\n\t            src = this.parseModuleSpecifier();\n\t        }\n\t        this.consumeSemicolon();\n\t        return this.finalize(node, new Node.ImportDeclaration(specifiers, src));\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-exports\n\t    Parser.prototype.parseExportSpecifier = function () {\n\t        var node = this.createNode();\n\t        var local = this.parseIdentifierName();\n\t        var exported = local;\n\t        if (this.matchContextualKeyword('as')) {\n\t            this.nextToken();\n\t            exported = this.parseIdentifierName();\n\t        }\n\t        return this.finalize(node, new Node.ExportSpecifier(local, exported));\n\t    };\n\t    Parser.prototype.parseExportDeclaration = function () {\n\t        if (this.context.inFunctionBody) {\n\t            this.throwError(messages_1.Messages.IllegalExportDeclaration);\n\t        }\n\t        var node = this.createNode();\n\t        this.expectKeyword('export');\n\t        var exportDeclaration;\n\t        if (this.matchKeyword('default')) {\n\t            // export default ...\n\t            this.nextToken();\n\t            if (this.matchKeyword('function')) {\n\t                // export default function foo () {}\n\t                // export default function () {}\n\t                var declaration = this.parseFunctionDeclaration(true);\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else if (this.matchKeyword('class')) {\n\t                // export default class foo {}\n\t                var declaration = this.parseClassDeclaration(true);\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else if (this.matchContextualKeyword('async')) {\n\t                // export default async function f () {}\n\t                // export default async function () {}\n\t                // export default async x => x\n\t                var declaration = this.matchAsyncFunction() ? this.parseFunctionDeclaration(true) : this.parseAssignmentExpression();\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t            else {\n\t                if (this.matchContextualKeyword('from')) {\n\t                    this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);\n\t                }\n\t                // export default {};\n\t                // export default [];\n\t                // export default (1 + 2);\n\t                var declaration = this.match('{') ? this.parseObjectInitializer() :\n\t                    this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();\n\t                this.consumeSemicolon();\n\t                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));\n\t            }\n\t        }\n\t        else if (this.match('*')) {\n\t            // export * from 'foo';\n\t            this.nextToken();\n\t            if (!this.matchContextualKeyword('from')) {\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            this.nextToken();\n\t            var src = this.parseModuleSpecifier();\n\t            this.consumeSemicolon();\n\t            exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));\n\t        }\n\t        else if (this.lookahead.type === 4 /* Keyword */) {\n\t            // export var f = 1;\n\t            var declaration = void 0;\n\t            switch (this.lookahead.value) {\n\t                case 'let':\n\t                case 'const':\n\t                    declaration = this.parseLexicalDeclaration({ inFor: false });\n\t                    break;\n\t                case 'var':\n\t                case 'class':\n\t                case 'function':\n\t                    declaration = this.parseStatementListItem();\n\t                    break;\n\t                default:\n\t                    this.throwUnexpectedToken(this.lookahead);\n\t            }\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t        }\n\t        else if (this.matchAsyncFunction()) {\n\t            var declaration = this.parseFunctionDeclaration();\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));\n\t        }\n\t        else {\n\t            var specifiers = [];\n\t            var source = null;\n\t            var isExportFromIdentifier = false;\n\t            this.expect('{');\n\t            while (!this.match('}')) {\n\t                isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');\n\t                specifiers.push(this.parseExportSpecifier());\n\t                if (!this.match('}')) {\n\t                    this.expect(',');\n\t                }\n\t            }\n\t            this.expect('}');\n\t            if (this.matchContextualKeyword('from')) {\n\t                // export {default} from 'foo';\n\t                // export {foo} from 'foo';\n\t                this.nextToken();\n\t                source = this.parseModuleSpecifier();\n\t                this.consumeSemicolon();\n\t            }\n\t            else if (isExportFromIdentifier) {\n\t                // export {default}; // missing fromClause\n\t                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;\n\t                this.throwError(message, this.lookahead.value);\n\t            }\n\t            else {\n\t                // export {foo};\n\t                this.consumeSemicolon();\n\t            }\n\t            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));\n\t        }\n\t        return exportDeclaration;\n\t    };\n\t    return Parser;\n\t}());\n\texports.Parser = Parser;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Ensure the condition is true, otherwise throw an error.\n\t// This is only to have a better contract semantic, i.e. another safety net\n\t// to catch a logic error. The condition shall be fulfilled in normal case.\n\t// Do NOT use this to enforce a certain condition on any user input.\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tfunction assert(condition, message) {\n\t    /* istanbul ignore if */\n\t    if (!condition) {\n\t        throw new Error('ASSERT: ' + message);\n\t    }\n\t}\n\texports.assert = assert;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t/* tslint:disable:max-classes-per-file */\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar ErrorHandler = (function () {\n\t    function ErrorHandler() {\n\t        this.errors = [];\n\t        this.tolerant = false;\n\t    }\n\t    ErrorHandler.prototype.recordError = function (error) {\n\t        this.errors.push(error);\n\t    };\n\t    ErrorHandler.prototype.tolerate = function (error) {\n\t        if (this.tolerant) {\n\t            this.recordError(error);\n\t        }\n\t        else {\n\t            throw error;\n\t        }\n\t    };\n\t    ErrorHandler.prototype.constructError = function (msg, column) {\n\t        var error = new Error(msg);\n\t        try {\n\t            throw error;\n\t        }\n\t        catch (base) {\n\t            /* istanbul ignore else */\n\t            if (Object.create && Object.defineProperty) {\n\t                error = Object.create(base);\n\t                Object.defineProperty(error, 'column', { value: column });\n\t            }\n\t        }\n\t        /* istanbul ignore next */\n\t        return error;\n\t    };\n\t    ErrorHandler.prototype.createError = function (index, line, col, description) {\n\t        var msg = 'Line ' + line + ': ' + description;\n\t        var error = this.constructError(msg, col);\n\t        error.index = index;\n\t        error.lineNumber = line;\n\t        error.description = description;\n\t        return error;\n\t    };\n\t    ErrorHandler.prototype.throwError = function (index, line, col, description) {\n\t        throw this.createError(index, line, col, description);\n\t    };\n\t    ErrorHandler.prototype.tolerateError = function (index, line, col, description) {\n\t        var error = this.createError(index, line, col, description);\n\t        if (this.tolerant) {\n\t            this.recordError(error);\n\t        }\n\t        else {\n\t            throw error;\n\t        }\n\t    };\n\t    return ErrorHandler;\n\t}());\n\texports.ErrorHandler = ErrorHandler;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\t// Error messages should be identical to V8.\n\texports.Messages = {\n\t    BadGetterArity: 'Getter must not have any formal parameters',\n\t    BadSetterArity: 'Setter must have exactly one formal parameter',\n\t    BadSetterRestParameter: 'Setter function argument must not be a rest parameter',\n\t    ConstructorIsAsync: 'Class constructor may not be an async method',\n\t    ConstructorSpecialMethod: 'Class constructor may not be an accessor',\n\t    DeclarationMissingInitializer: 'Missing initializer in %0 declaration',\n\t    DefaultRestParameter: 'Unexpected token =',\n\t    DuplicateBinding: 'Duplicate binding %0',\n\t    DuplicateConstructor: 'A class may only have one constructor',\n\t    DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',\n\t    ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer',\n\t    GeneratorInLegacyContext: 'Generator declarations are not allowed in legacy contexts',\n\t    IllegalBreak: 'Illegal break statement',\n\t    IllegalContinue: 'Illegal continue statement',\n\t    IllegalExportDeclaration: 'Unexpected token',\n\t    IllegalImportDeclaration: 'Unexpected token',\n\t    IllegalLanguageModeDirective: 'Illegal \\'use strict\\' directive in function with non-simple parameter list',\n\t    IllegalReturn: 'Illegal return statement',\n\t    InvalidEscapedReservedWord: 'Keyword must not contain escaped characters',\n\t    InvalidHexEscapeSequence: 'Invalid hexadecimal escape sequence',\n\t    InvalidLHSInAssignment: 'Invalid left-hand side in assignment',\n\t    InvalidLHSInForIn: 'Invalid left-hand side in for-in',\n\t    InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',\n\t    InvalidModuleSpecifier: 'Unexpected token',\n\t    InvalidRegExp: 'Invalid regular expression',\n\t    LetInLexicalBinding: 'let is disallowed as a lexically bound name',\n\t    MissingFromClause: 'Unexpected token',\n\t    MultipleDefaultsInSwitch: 'More than one default clause in switch statement',\n\t    NewlineAfterThrow: 'Illegal newline after throw',\n\t    NoAsAfterImportNamespace: 'Unexpected token',\n\t    NoCatchOrFinally: 'Missing catch or finally after try',\n\t    ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',\n\t    Redeclaration: '%0 \\'%1\\' has already been declared',\n\t    StaticPrototype: 'Classes may not have static property named prototype',\n\t    StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',\n\t    StrictDelete: 'Delete of an unqualified identifier in strict mode.',\n\t    StrictFunction: 'In strict mode code, functions can only be declared at top level or inside a block',\n\t    StrictFunctionName: 'Function name may not be eval or arguments in strict mode',\n\t    StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',\n\t    StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',\n\t    StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',\n\t    StrictModeWith: 'Strict mode code may not include a with statement',\n\t    StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',\n\t    StrictParamDupe: 'Strict mode function may not have duplicate parameter names',\n\t    StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',\n\t    StrictReservedWord: 'Use of future reserved word in strict mode',\n\t    StrictVarName: 'Variable name may not be eval or arguments in strict mode',\n\t    TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',\n\t    UnexpectedEOS: 'Unexpected end of input',\n\t    UnexpectedIdentifier: 'Unexpected identifier',\n\t    UnexpectedNumber: 'Unexpected number',\n\t    UnexpectedReserved: 'Unexpected reserved word',\n\t    UnexpectedString: 'Unexpected string',\n\t    UnexpectedTemplate: 'Unexpected quasi %0',\n\t    UnexpectedToken: 'Unexpected token %0',\n\t    UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',\n\t    UnknownLabel: 'Undefined label \\'%0\\'',\n\t    UnterminatedRegExp: 'Invalid regular expression: missing /'\n\t};\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar assert_1 = __webpack_require__(9);\n\tvar character_1 = __webpack_require__(4);\n\tvar messages_1 = __webpack_require__(11);\n\tfunction hexValue(ch) {\n\t    return '0123456789abcdef'.indexOf(ch.toLowerCase());\n\t}\n\tfunction octalValue(ch) {\n\t    return '01234567'.indexOf(ch);\n\t}\n\tvar Scanner = (function () {\n\t    function Scanner(code, handler) {\n\t        this.source = code;\n\t        this.errorHandler = handler;\n\t        this.trackComment = false;\n\t        this.isModule = false;\n\t        this.length = code.length;\n\t        this.index = 0;\n\t        this.lineNumber = (code.length > 0) ? 1 : 0;\n\t        this.lineStart = 0;\n\t        this.curlyStack = [];\n\t    }\n\t    Scanner.prototype.saveState = function () {\n\t        return {\n\t            index: this.index,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart\n\t        };\n\t    };\n\t    Scanner.prototype.restoreState = function (state) {\n\t        this.index = state.index;\n\t        this.lineNumber = state.lineNumber;\n\t        this.lineStart = state.lineStart;\n\t    };\n\t    Scanner.prototype.eof = function () {\n\t        return this.index >= this.length;\n\t    };\n\t    Scanner.prototype.throwUnexpectedToken = function (message) {\n\t        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t        return this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t    };\n\t    Scanner.prototype.tolerateUnexpectedToken = function (message) {\n\t        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }\n\t        this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-comments\n\t    Scanner.prototype.skipSingleLineComment = function (offset) {\n\t        var comments = [];\n\t        var start, loc;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t            start = this.index - offset;\n\t            loc = {\n\t                start: {\n\t                    line: this.lineNumber,\n\t                    column: this.index - this.lineStart - offset\n\t                },\n\t                end: {}\n\t            };\n\t        }\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            ++this.index;\n\t            if (character_1.Character.isLineTerminator(ch)) {\n\t                if (this.trackComment) {\n\t                    loc.end = {\n\t                        line: this.lineNumber,\n\t                        column: this.index - this.lineStart - 1\n\t                    };\n\t                    var entry = {\n\t                        multiLine: false,\n\t                        slice: [start + offset, this.index - 1],\n\t                        range: [start, this.index - 1],\n\t                        loc: loc\n\t                    };\n\t                    comments.push(entry);\n\t                }\n\t                if (ch === 13 && this.source.charCodeAt(this.index) === 10) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                this.lineStart = this.index;\n\t                return comments;\n\t            }\n\t        }\n\t        if (this.trackComment) {\n\t            loc.end = {\n\t                line: this.lineNumber,\n\t                column: this.index - this.lineStart\n\t            };\n\t            var entry = {\n\t                multiLine: false,\n\t                slice: [start + offset, this.index],\n\t                range: [start, this.index],\n\t                loc: loc\n\t            };\n\t            comments.push(entry);\n\t        }\n\t        return comments;\n\t    };\n\t    Scanner.prototype.skipMultiLineComment = function () {\n\t        var comments = [];\n\t        var start, loc;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t            start = this.index - 2;\n\t            loc = {\n\t                start: {\n\t                    line: this.lineNumber,\n\t                    column: this.index - this.lineStart - 2\n\t                },\n\t                end: {}\n\t            };\n\t        }\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (character_1.Character.isLineTerminator(ch)) {\n\t                if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                ++this.index;\n\t                this.lineStart = this.index;\n\t            }\n\t            else if (ch === 0x2A) {\n\t                // Block comment ends with '*/'.\n\t                if (this.source.charCodeAt(this.index + 1) === 0x2F) {\n\t                    this.index += 2;\n\t                    if (this.trackComment) {\n\t                        loc.end = {\n\t                            line: this.lineNumber,\n\t                            column: this.index - this.lineStart\n\t                        };\n\t                        var entry = {\n\t                            multiLine: true,\n\t                            slice: [start + 2, this.index - 2],\n\t                            range: [start, this.index],\n\t                            loc: loc\n\t                        };\n\t                        comments.push(entry);\n\t                    }\n\t                    return comments;\n\t                }\n\t                ++this.index;\n\t            }\n\t            else {\n\t                ++this.index;\n\t            }\n\t        }\n\t        // Ran off the end of the file - the whole thing is a comment\n\t        if (this.trackComment) {\n\t            loc.end = {\n\t                line: this.lineNumber,\n\t                column: this.index - this.lineStart\n\t            };\n\t            var entry = {\n\t                multiLine: true,\n\t                slice: [start + 2, this.index],\n\t                range: [start, this.index],\n\t                loc: loc\n\t            };\n\t            comments.push(entry);\n\t        }\n\t        this.tolerateUnexpectedToken();\n\t        return comments;\n\t    };\n\t    Scanner.prototype.scanComments = function () {\n\t        var comments;\n\t        if (this.trackComment) {\n\t            comments = [];\n\t        }\n\t        var start = (this.index === 0);\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (character_1.Character.isWhiteSpace(ch)) {\n\t                ++this.index;\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch)) {\n\t                ++this.index;\n\t                if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {\n\t                    ++this.index;\n\t                }\n\t                ++this.lineNumber;\n\t                this.lineStart = this.index;\n\t                start = true;\n\t            }\n\t            else if (ch === 0x2F) {\n\t                ch = this.source.charCodeAt(this.index + 1);\n\t                if (ch === 0x2F) {\n\t                    this.index += 2;\n\t                    var comment = this.skipSingleLineComment(2);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                    start = true;\n\t                }\n\t                else if (ch === 0x2A) {\n\t                    this.index += 2;\n\t                    var comment = this.skipMultiLineComment();\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else if (start && ch === 0x2D) {\n\t                // U+003E is '>'\n\t                if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {\n\t                    // '-->' is a single-line comment\n\t                    this.index += 3;\n\t                    var comment = this.skipSingleLineComment(3);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else if (ch === 0x3C && !this.isModule) {\n\t                if (this.source.slice(this.index + 1, this.index + 4) === '!--') {\n\t                    this.index += 4; // `<!--`\n\t                    var comment = this.skipSingleLineComment(4);\n\t                    if (this.trackComment) {\n\t                        comments = comments.concat(comment);\n\t                    }\n\t                }\n\t                else {\n\t                    break;\n\t                }\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return comments;\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-future-reserved-words\n\t    Scanner.prototype.isFutureReservedWord = function (id) {\n\t        switch (id) {\n\t            case 'enum':\n\t            case 'export':\n\t            case 'import':\n\t            case 'super':\n\t                return true;\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.isStrictModeReservedWord = function (id) {\n\t        switch (id) {\n\t            case 'implements':\n\t            case 'interface':\n\t            case 'package':\n\t            case 'private':\n\t            case 'protected':\n\t            case 'public':\n\t            case 'static':\n\t            case 'yield':\n\t            case 'let':\n\t                return true;\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.isRestrictedWord = function (id) {\n\t        return id === 'eval' || id === 'arguments';\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-keywords\n\t    Scanner.prototype.isKeyword = function (id) {\n\t        switch (id.length) {\n\t            case 2:\n\t                return (id === 'if') || (id === 'in') || (id === 'do');\n\t            case 3:\n\t                return (id === 'var') || (id === 'for') || (id === 'new') ||\n\t                    (id === 'try') || (id === 'let');\n\t            case 4:\n\t                return (id === 'this') || (id === 'else') || (id === 'case') ||\n\t                    (id === 'void') || (id === 'with') || (id === 'enum');\n\t            case 5:\n\t                return (id === 'while') || (id === 'break') || (id === 'catch') ||\n\t                    (id === 'throw') || (id === 'const') || (id === 'yield') ||\n\t                    (id === 'class') || (id === 'super');\n\t            case 6:\n\t                return (id === 'return') || (id === 'typeof') || (id === 'delete') ||\n\t                    (id === 'switch') || (id === 'export') || (id === 'import');\n\t            case 7:\n\t                return (id === 'default') || (id === 'finally') || (id === 'extends');\n\t            case 8:\n\t                return (id === 'function') || (id === 'continue') || (id === 'debugger');\n\t            case 10:\n\t                return (id === 'instanceof');\n\t            default:\n\t                return false;\n\t        }\n\t    };\n\t    Scanner.prototype.codePointAt = function (i) {\n\t        var cp = this.source.charCodeAt(i);\n\t        if (cp >= 0xD800 && cp <= 0xDBFF) {\n\t            var second = this.source.charCodeAt(i + 1);\n\t            if (second >= 0xDC00 && second <= 0xDFFF) {\n\t                var first = cp;\n\t                cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t            }\n\t        }\n\t        return cp;\n\t    };\n\t    Scanner.prototype.scanHexEscape = function (prefix) {\n\t        var len = (prefix === 'u') ? 4 : 2;\n\t        var code = 0;\n\t        for (var i = 0; i < len; ++i) {\n\t            if (!this.eof() && character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t                code = code * 16 + hexValue(this.source[this.index++]);\n\t            }\n\t            else {\n\t                return null;\n\t            }\n\t        }\n\t        return String.fromCharCode(code);\n\t    };\n\t    Scanner.prototype.scanUnicodeCodePointEscape = function () {\n\t        var ch = this.source[this.index];\n\t        var code = 0;\n\t        // At least, one hex digit is required.\n\t        if (ch === '}') {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index++];\n\t            if (!character_1.Character.isHexDigit(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            code = code * 16 + hexValue(ch);\n\t        }\n\t        if (code > 0x10FFFF || ch !== '}') {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return character_1.Character.fromCodePoint(code);\n\t    };\n\t    Scanner.prototype.getIdentifier = function () {\n\t        var start = this.index++;\n\t        while (!this.eof()) {\n\t            var ch = this.source.charCodeAt(this.index);\n\t            if (ch === 0x5C) {\n\t                // Blackslash (U+005C) marks Unicode escape sequence.\n\t                this.index = start;\n\t                return this.getComplexIdentifier();\n\t            }\n\t            else if (ch >= 0xD800 && ch < 0xDFFF) {\n\t                // Need to handle surrogate pairs.\n\t                this.index = start;\n\t                return this.getComplexIdentifier();\n\t            }\n\t            if (character_1.Character.isIdentifierPart(ch)) {\n\t                ++this.index;\n\t            }\n\t            else {\n\t                break;\n\t            }\n\t        }\n\t        return this.source.slice(start, this.index);\n\t    };\n\t    Scanner.prototype.getComplexIdentifier = function () {\n\t        var cp = this.codePointAt(this.index);\n\t        var id = character_1.Character.fromCodePoint(cp);\n\t        this.index += id.length;\n\t        // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t        var ch;\n\t        if (cp === 0x5C) {\n\t            if (this.source.charCodeAt(this.index) !== 0x75) {\n\t                this.throwUnexpectedToken();\n\t            }\n\t            ++this.index;\n\t            if (this.source[this.index] === '{') {\n\t                ++this.index;\n\t                ch = this.scanUnicodeCodePointEscape();\n\t            }\n\t            else {\n\t                ch = this.scanHexEscape('u');\n\t                if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierStart(ch.charCodeAt(0))) {\n\t                    this.throwUnexpectedToken();\n\t                }\n\t            }\n\t            id = ch;\n\t        }\n\t        while (!this.eof()) {\n\t            cp = this.codePointAt(this.index);\n\t            if (!character_1.Character.isIdentifierPart(cp)) {\n\t                break;\n\t            }\n\t            ch = character_1.Character.fromCodePoint(cp);\n\t            id += ch;\n\t            this.index += ch.length;\n\t            // '\\u' (U+005C, U+0075) denotes an escaped character.\n\t            if (cp === 0x5C) {\n\t                id = id.substr(0, id.length - 1);\n\t                if (this.source.charCodeAt(this.index) !== 0x75) {\n\t                    this.throwUnexpectedToken();\n\t                }\n\t                ++this.index;\n\t                if (this.source[this.index] === '{') {\n\t                    ++this.index;\n\t                    ch = this.scanUnicodeCodePointEscape();\n\t                }\n\t                else {\n\t                    ch = this.scanHexEscape('u');\n\t                    if (ch === null || ch === '\\\\' || !character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t                        this.throwUnexpectedToken();\n\t                    }\n\t                }\n\t                id += ch;\n\t            }\n\t        }\n\t        return id;\n\t    };\n\t    Scanner.prototype.octalToDecimal = function (ch) {\n\t        // \\0 is not octal escape sequence\n\t        var octal = (ch !== '0');\n\t        var code = octalValue(ch);\n\t        if (!this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t            octal = true;\n\t            code = code * 8 + octalValue(this.source[this.index++]);\n\t            // 3 digits are only allowed when string starts\n\t            // with 0, 1, 2, 3\n\t            if ('0123'.indexOf(ch) >= 0 && !this.eof() && character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t                code = code * 8 + octalValue(this.source[this.index++]);\n\t            }\n\t        }\n\t        return {\n\t            code: code,\n\t            octal: octal\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-names-and-keywords\n\t    Scanner.prototype.scanIdentifier = function () {\n\t        var type;\n\t        var start = this.index;\n\t        // Backslash (U+005C) starts an escaped character.\n\t        var id = (this.source.charCodeAt(start) === 0x5C) ? this.getComplexIdentifier() : this.getIdentifier();\n\t        // There is no keyword or literal with only one character.\n\t        // Thus, it must be an identifier.\n\t        if (id.length === 1) {\n\t            type = 3 /* Identifier */;\n\t        }\n\t        else if (this.isKeyword(id)) {\n\t            type = 4 /* Keyword */;\n\t        }\n\t        else if (id === 'null') {\n\t            type = 5 /* NullLiteral */;\n\t        }\n\t        else if (id === 'true' || id === 'false') {\n\t            type = 1 /* BooleanLiteral */;\n\t        }\n\t        else {\n\t            type = 3 /* Identifier */;\n\t        }\n\t        if (type !== 3 /* Identifier */ && (start + id.length !== this.index)) {\n\t            var restore = this.index;\n\t            this.index = start;\n\t            this.tolerateUnexpectedToken(messages_1.Messages.InvalidEscapedReservedWord);\n\t            this.index = restore;\n\t        }\n\t        return {\n\t            type: type,\n\t            value: id,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-punctuators\n\t    Scanner.prototype.scanPunctuator = function () {\n\t        var start = this.index;\n\t        // Check for most common single-character punctuators.\n\t        var str = this.source[this.index];\n\t        switch (str) {\n\t            case '(':\n\t            case '{':\n\t                if (str === '{') {\n\t                    this.curlyStack.push('{');\n\t                }\n\t                ++this.index;\n\t                break;\n\t            case '.':\n\t                ++this.index;\n\t                if (this.source[this.index] === '.' && this.source[this.index + 1] === '.') {\n\t                    // Spread operator: ...\n\t                    this.index += 2;\n\t                    str = '...';\n\t                }\n\t                break;\n\t            case '}':\n\t                ++this.index;\n\t                this.curlyStack.pop();\n\t                break;\n\t            case ')':\n\t            case ';':\n\t            case ',':\n\t            case '[':\n\t            case ']':\n\t            case ':':\n\t            case '?':\n\t            case '~':\n\t                ++this.index;\n\t                break;\n\t            default:\n\t                // 4-character punctuator.\n\t                str = this.source.substr(this.index, 4);\n\t                if (str === '>>>=') {\n\t                    this.index += 4;\n\t                }\n\t                else {\n\t                    // 3-character punctuators.\n\t                    str = str.substr(0, 3);\n\t                    if (str === '===' || str === '!==' || str === '>>>' ||\n\t                        str === '<<=' || str === '>>=' || str === '**=') {\n\t                        this.index += 3;\n\t                    }\n\t                    else {\n\t                        // 2-character punctuators.\n\t                        str = str.substr(0, 2);\n\t                        if (str === '&&' || str === '||' || str === '==' || str === '!=' ||\n\t                            str === '+=' || str === '-=' || str === '*=' || str === '/=' ||\n\t                            str === '++' || str === '--' || str === '<<' || str === '>>' ||\n\t                            str === '&=' || str === '|=' || str === '^=' || str === '%=' ||\n\t                            str === '<=' || str === '>=' || str === '=>' || str === '**') {\n\t                            this.index += 2;\n\t                        }\n\t                        else {\n\t                            // 1-character punctuators.\n\t                            str = this.source[this.index];\n\t                            if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {\n\t                                ++this.index;\n\t                            }\n\t                        }\n\t                    }\n\t                }\n\t        }\n\t        if (this.index === start) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 7 /* Punctuator */,\n\t            value: str,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-numeric-literals\n\t    Scanner.prototype.scanHexLiteral = function (start) {\n\t        var num = '';\n\t        while (!this.eof()) {\n\t            if (!character_1.Character.isHexDigit(this.source.charCodeAt(this.index))) {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (num.length === 0) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt('0x' + num, 16),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.scanBinaryLiteral = function (start) {\n\t        var num = '';\n\t        var ch;\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index];\n\t            if (ch !== '0' && ch !== '1') {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (num.length === 0) {\n\t            // only 0b or 0B\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (!this.eof()) {\n\t            ch = this.source.charCodeAt(this.index);\n\t            /* istanbul ignore else */\n\t            if (character_1.Character.isIdentifierStart(ch) || character_1.Character.isDecimalDigit(ch)) {\n\t                this.throwUnexpectedToken();\n\t            }\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt(num, 2),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.scanOctalLiteral = function (prefix, start) {\n\t        var num = '';\n\t        var octal = false;\n\t        if (character_1.Character.isOctalDigit(prefix.charCodeAt(0))) {\n\t            octal = true;\n\t            num = '0' + this.source[this.index++];\n\t        }\n\t        else {\n\t            ++this.index;\n\t        }\n\t        while (!this.eof()) {\n\t            if (!character_1.Character.isOctalDigit(this.source.charCodeAt(this.index))) {\n\t                break;\n\t            }\n\t            num += this.source[this.index++];\n\t        }\n\t        if (!octal && num.length === 0) {\n\t            // only 0o or 0O\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index)) || character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseInt(num, 8),\n\t            octal: octal,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.isImplicitOctalLiteral = function () {\n\t        // Implicit octal, unless there is a non-octal digit.\n\t        // (Annex B.1.1 on Numeric Literals)\n\t        for (var i = this.index + 1; i < this.length; ++i) {\n\t            var ch = this.source[i];\n\t            if (ch === '8' || ch === '9') {\n\t                return false;\n\t            }\n\t            if (!character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                return true;\n\t            }\n\t        }\n\t        return true;\n\t    };\n\t    Scanner.prototype.scanNumericLiteral = function () {\n\t        var start = this.index;\n\t        var ch = this.source[start];\n\t        assert_1.assert(character_1.Character.isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'), 'Numeric literal must start with a decimal digit or a decimal point');\n\t        var num = '';\n\t        if (ch !== '.') {\n\t            num = this.source[this.index++];\n\t            ch = this.source[this.index];\n\t            // Hex number starts with '0x'.\n\t            // Octal number starts with '0'.\n\t            // Octal number in ES6 starts with '0o'.\n\t            // Binary number in ES6 starts with '0b'.\n\t            if (num === '0') {\n\t                if (ch === 'x' || ch === 'X') {\n\t                    ++this.index;\n\t                    return this.scanHexLiteral(start);\n\t                }\n\t                if (ch === 'b' || ch === 'B') {\n\t                    ++this.index;\n\t                    return this.scanBinaryLiteral(start);\n\t                }\n\t                if (ch === 'o' || ch === 'O') {\n\t                    return this.scanOctalLiteral(ch, start);\n\t                }\n\t                if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                    if (this.isImplicitOctalLiteral()) {\n\t                        return this.scanOctalLiteral(ch, start);\n\t                    }\n\t                }\n\t            }\n\t            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                num += this.source[this.index++];\n\t            }\n\t            ch = this.source[this.index];\n\t        }\n\t        if (ch === '.') {\n\t            num += this.source[this.index++];\n\t            while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                num += this.source[this.index++];\n\t            }\n\t            ch = this.source[this.index];\n\t        }\n\t        if (ch === 'e' || ch === 'E') {\n\t            num += this.source[this.index++];\n\t            ch = this.source[this.index];\n\t            if (ch === '+' || ch === '-') {\n\t                num += this.source[this.index++];\n\t            }\n\t            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                while (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                    num += this.source[this.index++];\n\t                }\n\t            }\n\t            else {\n\t                this.throwUnexpectedToken();\n\t            }\n\t        }\n\t        if (character_1.Character.isIdentifierStart(this.source.charCodeAt(this.index))) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 6 /* NumericLiteral */,\n\t            value: parseFloat(num),\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-string-literals\n\t    Scanner.prototype.scanStringLiteral = function () {\n\t        var start = this.index;\n\t        var quote = this.source[start];\n\t        assert_1.assert((quote === '\\'' || quote === '\"'), 'String literal must starts with a quote');\n\t        ++this.index;\n\t        var octal = false;\n\t        var str = '';\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index++];\n\t            if (ch === quote) {\n\t                quote = '';\n\t                break;\n\t            }\n\t            else if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                if (!ch || !character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    switch (ch) {\n\t                        case 'u':\n\t                            if (this.source[this.index] === '{') {\n\t                                ++this.index;\n\t                                str += this.scanUnicodeCodePointEscape();\n\t                            }\n\t                            else {\n\t                                var unescaped_1 = this.scanHexEscape(ch);\n\t                                if (unescaped_1 === null) {\n\t                                    this.throwUnexpectedToken();\n\t                                }\n\t                                str += unescaped_1;\n\t                            }\n\t                            break;\n\t                        case 'x':\n\t                            var unescaped = this.scanHexEscape(ch);\n\t                            if (unescaped === null) {\n\t                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t                            }\n\t                            str += unescaped;\n\t                            break;\n\t                        case 'n':\n\t                            str += '\\n';\n\t                            break;\n\t                        case 'r':\n\t                            str += '\\r';\n\t                            break;\n\t                        case 't':\n\t                            str += '\\t';\n\t                            break;\n\t                        case 'b':\n\t                            str += '\\b';\n\t                            break;\n\t                        case 'f':\n\t                            str += '\\f';\n\t                            break;\n\t                        case 'v':\n\t                            str += '\\x0B';\n\t                            break;\n\t                        case '8':\n\t                        case '9':\n\t                            str += ch;\n\t                            this.tolerateUnexpectedToken();\n\t                            break;\n\t                        default:\n\t                            if (ch && character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                                var octToDec = this.octalToDecimal(ch);\n\t                                octal = octToDec.octal || octal;\n\t                                str += String.fromCharCode(octToDec.code);\n\t                            }\n\t                            else {\n\t                                str += ch;\n\t                            }\n\t                            break;\n\t                    }\n\t                }\n\t                else {\n\t                    ++this.lineNumber;\n\t                    if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                        ++this.index;\n\t                    }\n\t                    this.lineStart = this.index;\n\t                }\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            else {\n\t                str += ch;\n\t            }\n\t        }\n\t        if (quote !== '') {\n\t            this.index = start;\n\t            this.throwUnexpectedToken();\n\t        }\n\t        return {\n\t            type: 8 /* StringLiteral */,\n\t            value: str,\n\t            octal: octal,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-template-literal-lexical-components\n\t    Scanner.prototype.scanTemplate = function () {\n\t        var cooked = '';\n\t        var terminated = false;\n\t        var start = this.index;\n\t        var head = (this.source[start] === '`');\n\t        var tail = false;\n\t        var rawOffset = 2;\n\t        ++this.index;\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index++];\n\t            if (ch === '`') {\n\t                rawOffset = 1;\n\t                tail = true;\n\t                terminated = true;\n\t                break;\n\t            }\n\t            else if (ch === '$') {\n\t                if (this.source[this.index] === '{') {\n\t                    this.curlyStack.push('${');\n\t                    ++this.index;\n\t                    terminated = true;\n\t                    break;\n\t                }\n\t                cooked += ch;\n\t            }\n\t            else if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                if (!character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    switch (ch) {\n\t                        case 'n':\n\t                            cooked += '\\n';\n\t                            break;\n\t                        case 'r':\n\t                            cooked += '\\r';\n\t                            break;\n\t                        case 't':\n\t                            cooked += '\\t';\n\t                            break;\n\t                        case 'u':\n\t                            if (this.source[this.index] === '{') {\n\t                                ++this.index;\n\t                                cooked += this.scanUnicodeCodePointEscape();\n\t                            }\n\t                            else {\n\t                                var restore = this.index;\n\t                                var unescaped_2 = this.scanHexEscape(ch);\n\t                                if (unescaped_2 !== null) {\n\t                                    cooked += unescaped_2;\n\t                                }\n\t                                else {\n\t                                    this.index = restore;\n\t                                    cooked += ch;\n\t                                }\n\t                            }\n\t                            break;\n\t                        case 'x':\n\t                            var unescaped = this.scanHexEscape(ch);\n\t                            if (unescaped === null) {\n\t                                this.throwUnexpectedToken(messages_1.Messages.InvalidHexEscapeSequence);\n\t                            }\n\t                            cooked += unescaped;\n\t                            break;\n\t                        case 'b':\n\t                            cooked += '\\b';\n\t                            break;\n\t                        case 'f':\n\t                            cooked += '\\f';\n\t                            break;\n\t                        case 'v':\n\t                            cooked += '\\v';\n\t                            break;\n\t                        default:\n\t                            if (ch === '0') {\n\t                                if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index))) {\n\t                                    // Illegal: \\01 \\02 and so on\n\t                                    this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t                                }\n\t                                cooked += '\\0';\n\t                            }\n\t                            else if (character_1.Character.isOctalDigit(ch.charCodeAt(0))) {\n\t                                // Illegal: \\1 \\2\n\t                                this.throwUnexpectedToken(messages_1.Messages.TemplateOctalLiteral);\n\t                            }\n\t                            else {\n\t                                cooked += ch;\n\t                            }\n\t                            break;\n\t                    }\n\t                }\n\t                else {\n\t                    ++this.lineNumber;\n\t                    if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                        ++this.index;\n\t                    }\n\t                    this.lineStart = this.index;\n\t                }\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                ++this.lineNumber;\n\t                if (ch === '\\r' && this.source[this.index] === '\\n') {\n\t                    ++this.index;\n\t                }\n\t                this.lineStart = this.index;\n\t                cooked += '\\n';\n\t            }\n\t            else {\n\t                cooked += ch;\n\t            }\n\t        }\n\t        if (!terminated) {\n\t            this.throwUnexpectedToken();\n\t        }\n\t        if (!head) {\n\t            this.curlyStack.pop();\n\t        }\n\t        return {\n\t            type: 10 /* Template */,\n\t            value: this.source.slice(start + 1, this.index - rawOffset),\n\t            cooked: cooked,\n\t            head: head,\n\t            tail: tail,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t    Scanner.prototype.testRegExp = function (pattern, flags) {\n\t        // The BMP character to use as a replacement for astral symbols when\n\t        // translating an ES6 \"u\"-flagged pattern to an ES5-compatible\n\t        // approximation.\n\t        // Note: replacing with '\\uFFFF' enables false positives in unlikely\n\t        // scenarios. For example, `[\\u{1044f}-\\u{10440}]` is an invalid\n\t        // pattern that would not be detected by this substitution.\n\t        var astralSubstitute = '\\uFFFF';\n\t        var tmp = pattern;\n\t        var self = this;\n\t        if (flags.indexOf('u') >= 0) {\n\t            tmp = tmp\n\t                .replace(/\\\\u\\{([0-9a-fA-F]+)\\}|\\\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {\n\t                var codePoint = parseInt($1 || $2, 16);\n\t                if (codePoint > 0x10FFFF) {\n\t                    self.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t                }\n\t                if (codePoint <= 0xFFFF) {\n\t                    return String.fromCharCode(codePoint);\n\t                }\n\t                return astralSubstitute;\n\t            })\n\t                .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, astralSubstitute);\n\t        }\n\t        // First, detect invalid regular expressions.\n\t        try {\n\t            RegExp(tmp);\n\t        }\n\t        catch (e) {\n\t            this.throwUnexpectedToken(messages_1.Messages.InvalidRegExp);\n\t        }\n\t        // Return a regular expression object for this pattern-flag pair, or\n\t        // `null` in case the current environment doesn't support the flags it\n\t        // uses.\n\t        try {\n\t            return new RegExp(pattern, flags);\n\t        }\n\t        catch (exception) {\n\t            /* istanbul ignore next */\n\t            return null;\n\t        }\n\t    };\n\t    Scanner.prototype.scanRegExpBody = function () {\n\t        var ch = this.source[this.index];\n\t        assert_1.assert(ch === '/', 'Regular expression literal must start with a slash');\n\t        var str = this.source[this.index++];\n\t        var classMarker = false;\n\t        var terminated = false;\n\t        while (!this.eof()) {\n\t            ch = this.source[this.index++];\n\t            str += ch;\n\t            if (ch === '\\\\') {\n\t                ch = this.source[this.index++];\n\t                // https://tc39.github.io/ecma262/#sec-literals-regular-expression-literals\n\t                if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                    this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t                }\n\t                str += ch;\n\t            }\n\t            else if (character_1.Character.isLineTerminator(ch.charCodeAt(0))) {\n\t                this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t            }\n\t            else if (classMarker) {\n\t                if (ch === ']') {\n\t                    classMarker = false;\n\t                }\n\t            }\n\t            else {\n\t                if (ch === '/') {\n\t                    terminated = true;\n\t                    break;\n\t                }\n\t                else if (ch === '[') {\n\t                    classMarker = true;\n\t                }\n\t            }\n\t        }\n\t        if (!terminated) {\n\t            this.throwUnexpectedToken(messages_1.Messages.UnterminatedRegExp);\n\t        }\n\t        // Exclude leading and trailing slash.\n\t        return str.substr(1, str.length - 2);\n\t    };\n\t    Scanner.prototype.scanRegExpFlags = function () {\n\t        var str = '';\n\t        var flags = '';\n\t        while (!this.eof()) {\n\t            var ch = this.source[this.index];\n\t            if (!character_1.Character.isIdentifierPart(ch.charCodeAt(0))) {\n\t                break;\n\t            }\n\t            ++this.index;\n\t            if (ch === '\\\\' && !this.eof()) {\n\t                ch = this.source[this.index];\n\t                if (ch === 'u') {\n\t                    ++this.index;\n\t                    var restore = this.index;\n\t                    var char = this.scanHexEscape('u');\n\t                    if (char !== null) {\n\t                        flags += char;\n\t                        for (str += '\\\\u'; restore < this.index; ++restore) {\n\t                            str += this.source[restore];\n\t                        }\n\t                    }\n\t                    else {\n\t                        this.index = restore;\n\t                        flags += 'u';\n\t                        str += '\\\\u';\n\t                    }\n\t                    this.tolerateUnexpectedToken();\n\t                }\n\t                else {\n\t                    str += '\\\\';\n\t                    this.tolerateUnexpectedToken();\n\t                }\n\t            }\n\t            else {\n\t                flags += ch;\n\t                str += ch;\n\t            }\n\t        }\n\t        return flags;\n\t    };\n\t    Scanner.prototype.scanRegExp = function () {\n\t        var start = this.index;\n\t        var pattern = this.scanRegExpBody();\n\t        var flags = this.scanRegExpFlags();\n\t        var value = this.testRegExp(pattern, flags);\n\t        return {\n\t            type: 9 /* RegularExpression */,\n\t            value: '',\n\t            pattern: pattern,\n\t            flags: flags,\n\t            regex: value,\n\t            lineNumber: this.lineNumber,\n\t            lineStart: this.lineStart,\n\t            start: start,\n\t            end: this.index\n\t        };\n\t    };\n\t    Scanner.prototype.lex = function () {\n\t        if (this.eof()) {\n\t            return {\n\t                type: 2 /* EOF */,\n\t                value: '',\n\t                lineNumber: this.lineNumber,\n\t                lineStart: this.lineStart,\n\t                start: this.index,\n\t                end: this.index\n\t            };\n\t        }\n\t        var cp = this.source.charCodeAt(this.index);\n\t        if (character_1.Character.isIdentifierStart(cp)) {\n\t            return this.scanIdentifier();\n\t        }\n\t        // Very common: ( and ) and ;\n\t        if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {\n\t            return this.scanPunctuator();\n\t        }\n\t        // String literal starts with single quote (U+0027) or double quote (U+0022).\n\t        if (cp === 0x27 || cp === 0x22) {\n\t            return this.scanStringLiteral();\n\t        }\n\t        // Dot (.) U+002E can also start a floating-point number, hence the need\n\t        // to check the next character.\n\t        if (cp === 0x2E) {\n\t            if (character_1.Character.isDecimalDigit(this.source.charCodeAt(this.index + 1))) {\n\t                return this.scanNumericLiteral();\n\t            }\n\t            return this.scanPunctuator();\n\t        }\n\t        if (character_1.Character.isDecimalDigit(cp)) {\n\t            return this.scanNumericLiteral();\n\t        }\n\t        // Template literals start with ` (U+0060) for template head\n\t        // or } (U+007D) for template middle or template tail.\n\t        if (cp === 0x60 || (cp === 0x7D && this.curlyStack[this.curlyStack.length - 1] === '${')) {\n\t            return this.scanTemplate();\n\t        }\n\t        // Possible identifier start in a surrogate pair.\n\t        if (cp >= 0xD800 && cp < 0xDFFF) {\n\t            if (character_1.Character.isIdentifierStart(this.codePointAt(this.index))) {\n\t                return this.scanIdentifier();\n\t            }\n\t        }\n\t        return this.scanPunctuator();\n\t    };\n\t    return Scanner;\n\t}());\n\texports.Scanner = Scanner;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.TokenName = {};\n\texports.TokenName[1 /* BooleanLiteral */] = 'Boolean';\n\texports.TokenName[2 /* EOF */] = '<end>';\n\texports.TokenName[3 /* Identifier */] = 'Identifier';\n\texports.TokenName[4 /* Keyword */] = 'Keyword';\n\texports.TokenName[5 /* NullLiteral */] = 'Null';\n\texports.TokenName[6 /* NumericLiteral */] = 'Numeric';\n\texports.TokenName[7 /* Punctuator */] = 'Punctuator';\n\texports.TokenName[8 /* StringLiteral */] = 'String';\n\texports.TokenName[9 /* RegularExpression */] = 'RegularExpression';\n\texports.TokenName[10 /* Template */] = 'Template';\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t// Generated by generate-xhtml-entities.js. DO NOT MODIFY!\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.XHTMLEntities = {\n\t    quot: '\\u0022',\n\t    amp: '\\u0026',\n\t    apos: '\\u0027',\n\t    gt: '\\u003E',\n\t    nbsp: '\\u00A0',\n\t    iexcl: '\\u00A1',\n\t    cent: '\\u00A2',\n\t    pound: '\\u00A3',\n\t    curren: '\\u00A4',\n\t    yen: '\\u00A5',\n\t    brvbar: '\\u00A6',\n\t    sect: '\\u00A7',\n\t    uml: '\\u00A8',\n\t    copy: '\\u00A9',\n\t    ordf: '\\u00AA',\n\t    laquo: '\\u00AB',\n\t    not: '\\u00AC',\n\t    shy: '\\u00AD',\n\t    reg: '\\u00AE',\n\t    macr: '\\u00AF',\n\t    deg: '\\u00B0',\n\t    plusmn: '\\u00B1',\n\t    sup2: '\\u00B2',\n\t    sup3: '\\u00B3',\n\t    acute: '\\u00B4',\n\t    micro: '\\u00B5',\n\t    para: '\\u00B6',\n\t    middot: '\\u00B7',\n\t    cedil: '\\u00B8',\n\t    sup1: '\\u00B9',\n\t    ordm: '\\u00BA',\n\t    raquo: '\\u00BB',\n\t    frac14: '\\u00BC',\n\t    frac12: '\\u00BD',\n\t    frac34: '\\u00BE',\n\t    iquest: '\\u00BF',\n\t    Agrave: '\\u00C0',\n\t    Aacute: '\\u00C1',\n\t    Acirc: '\\u00C2',\n\t    Atilde: '\\u00C3',\n\t    Auml: '\\u00C4',\n\t    Aring: '\\u00C5',\n\t    AElig: '\\u00C6',\n\t    Ccedil: '\\u00C7',\n\t    Egrave: '\\u00C8',\n\t    Eacute: '\\u00C9',\n\t    Ecirc: '\\u00CA',\n\t    Euml: '\\u00CB',\n\t    Igrave: '\\u00CC',\n\t    Iacute: '\\u00CD',\n\t    Icirc: '\\u00CE',\n\t    Iuml: '\\u00CF',\n\t    ETH: '\\u00D0',\n\t    Ntilde: '\\u00D1',\n\t    Ograve: '\\u00D2',\n\t    Oacute: '\\u00D3',\n\t    Ocirc: '\\u00D4',\n\t    Otilde: '\\u00D5',\n\t    Ouml: '\\u00D6',\n\t    times: '\\u00D7',\n\t    Oslash: '\\u00D8',\n\t    Ugrave: '\\u00D9',\n\t    Uacute: '\\u00DA',\n\t    Ucirc: '\\u00DB',\n\t    Uuml: '\\u00DC',\n\t    Yacute: '\\u00DD',\n\t    THORN: '\\u00DE',\n\t    szlig: '\\u00DF',\n\t    agrave: '\\u00E0',\n\t    aacute: '\\u00E1',\n\t    acirc: '\\u00E2',\n\t    atilde: '\\u00E3',\n\t    auml: '\\u00E4',\n\t    aring: '\\u00E5',\n\t    aelig: '\\u00E6',\n\t    ccedil: '\\u00E7',\n\t    egrave: '\\u00E8',\n\t    eacute: '\\u00E9',\n\t    ecirc: '\\u00EA',\n\t    euml: '\\u00EB',\n\t    igrave: '\\u00EC',\n\t    iacute: '\\u00ED',\n\t    icirc: '\\u00EE',\n\t    iuml: '\\u00EF',\n\t    eth: '\\u00F0',\n\t    ntilde: '\\u00F1',\n\t    ograve: '\\u00F2',\n\t    oacute: '\\u00F3',\n\t    ocirc: '\\u00F4',\n\t    otilde: '\\u00F5',\n\t    ouml: '\\u00F6',\n\t    divide: '\\u00F7',\n\t    oslash: '\\u00F8',\n\t    ugrave: '\\u00F9',\n\t    uacute: '\\u00FA',\n\t    ucirc: '\\u00FB',\n\t    uuml: '\\u00FC',\n\t    yacute: '\\u00FD',\n\t    thorn: '\\u00FE',\n\t    yuml: '\\u00FF',\n\t    OElig: '\\u0152',\n\t    oelig: '\\u0153',\n\t    Scaron: '\\u0160',\n\t    scaron: '\\u0161',\n\t    Yuml: '\\u0178',\n\t    fnof: '\\u0192',\n\t    circ: '\\u02C6',\n\t    tilde: '\\u02DC',\n\t    Alpha: '\\u0391',\n\t    Beta: '\\u0392',\n\t    Gamma: '\\u0393',\n\t    Delta: '\\u0394',\n\t    Epsilon: '\\u0395',\n\t    Zeta: '\\u0396',\n\t    Eta: '\\u0397',\n\t    Theta: '\\u0398',\n\t    Iota: '\\u0399',\n\t    Kappa: '\\u039A',\n\t    Lambda: '\\u039B',\n\t    Mu: '\\u039C',\n\t    Nu: '\\u039D',\n\t    Xi: '\\u039E',\n\t    Omicron: '\\u039F',\n\t    Pi: '\\u03A0',\n\t    Rho: '\\u03A1',\n\t    Sigma: '\\u03A3',\n\t    Tau: '\\u03A4',\n\t    Upsilon: '\\u03A5',\n\t    Phi: '\\u03A6',\n\t    Chi: '\\u03A7',\n\t    Psi: '\\u03A8',\n\t    Omega: '\\u03A9',\n\t    alpha: '\\u03B1',\n\t    beta: '\\u03B2',\n\t    gamma: '\\u03B3',\n\t    delta: '\\u03B4',\n\t    epsilon: '\\u03B5',\n\t    zeta: '\\u03B6',\n\t    eta: '\\u03B7',\n\t    theta: '\\u03B8',\n\t    iota: '\\u03B9',\n\t    kappa: '\\u03BA',\n\t    lambda: '\\u03BB',\n\t    mu: '\\u03BC',\n\t    nu: '\\u03BD',\n\t    xi: '\\u03BE',\n\t    omicron: '\\u03BF',\n\t    pi: '\\u03C0',\n\t    rho: '\\u03C1',\n\t    sigmaf: '\\u03C2',\n\t    sigma: '\\u03C3',\n\t    tau: '\\u03C4',\n\t    upsilon: '\\u03C5',\n\t    phi: '\\u03C6',\n\t    chi: '\\u03C7',\n\t    psi: '\\u03C8',\n\t    omega: '\\u03C9',\n\t    thetasym: '\\u03D1',\n\t    upsih: '\\u03D2',\n\t    piv: '\\u03D6',\n\t    ensp: '\\u2002',\n\t    emsp: '\\u2003',\n\t    thinsp: '\\u2009',\n\t    zwnj: '\\u200C',\n\t    zwj: '\\u200D',\n\t    lrm: '\\u200E',\n\t    rlm: '\\u200F',\n\t    ndash: '\\u2013',\n\t    mdash: '\\u2014',\n\t    lsquo: '\\u2018',\n\t    rsquo: '\\u2019',\n\t    sbquo: '\\u201A',\n\t    ldquo: '\\u201C',\n\t    rdquo: '\\u201D',\n\t    bdquo: '\\u201E',\n\t    dagger: '\\u2020',\n\t    Dagger: '\\u2021',\n\t    bull: '\\u2022',\n\t    hellip: '\\u2026',\n\t    permil: '\\u2030',\n\t    prime: '\\u2032',\n\t    Prime: '\\u2033',\n\t    lsaquo: '\\u2039',\n\t    rsaquo: '\\u203A',\n\t    oline: '\\u203E',\n\t    frasl: '\\u2044',\n\t    euro: '\\u20AC',\n\t    image: '\\u2111',\n\t    weierp: '\\u2118',\n\t    real: '\\u211C',\n\t    trade: '\\u2122',\n\t    alefsym: '\\u2135',\n\t    larr: '\\u2190',\n\t    uarr: '\\u2191',\n\t    rarr: '\\u2192',\n\t    darr: '\\u2193',\n\t    harr: '\\u2194',\n\t    crarr: '\\u21B5',\n\t    lArr: '\\u21D0',\n\t    uArr: '\\u21D1',\n\t    rArr: '\\u21D2',\n\t    dArr: '\\u21D3',\n\t    hArr: '\\u21D4',\n\t    forall: '\\u2200',\n\t    part: '\\u2202',\n\t    exist: '\\u2203',\n\t    empty: '\\u2205',\n\t    nabla: '\\u2207',\n\t    isin: '\\u2208',\n\t    notin: '\\u2209',\n\t    ni: '\\u220B',\n\t    prod: '\\u220F',\n\t    sum: '\\u2211',\n\t    minus: '\\u2212',\n\t    lowast: '\\u2217',\n\t    radic: '\\u221A',\n\t    prop: '\\u221D',\n\t    infin: '\\u221E',\n\t    ang: '\\u2220',\n\t    and: '\\u2227',\n\t    or: '\\u2228',\n\t    cap: '\\u2229',\n\t    cup: '\\u222A',\n\t    int: '\\u222B',\n\t    there4: '\\u2234',\n\t    sim: '\\u223C',\n\t    cong: '\\u2245',\n\t    asymp: '\\u2248',\n\t    ne: '\\u2260',\n\t    equiv: '\\u2261',\n\t    le: '\\u2264',\n\t    ge: '\\u2265',\n\t    sub: '\\u2282',\n\t    sup: '\\u2283',\n\t    nsub: '\\u2284',\n\t    sube: '\\u2286',\n\t    supe: '\\u2287',\n\t    oplus: '\\u2295',\n\t    otimes: '\\u2297',\n\t    perp: '\\u22A5',\n\t    sdot: '\\u22C5',\n\t    lceil: '\\u2308',\n\t    rceil: '\\u2309',\n\t    lfloor: '\\u230A',\n\t    rfloor: '\\u230B',\n\t    loz: '\\u25CA',\n\t    spades: '\\u2660',\n\t    clubs: '\\u2663',\n\t    hearts: '\\u2665',\n\t    diams: '\\u2666',\n\t    lang: '\\u27E8',\n\t    rang: '\\u27E9'\n\t};\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\tvar error_handler_1 = __webpack_require__(10);\n\tvar scanner_1 = __webpack_require__(12);\n\tvar token_1 = __webpack_require__(13);\n\tvar Reader = (function () {\n\t    function Reader() {\n\t        this.values = [];\n\t        this.curly = this.paren = -1;\n\t    }\n\t    // A function following one of those tokens is an expression.\n\t    Reader.prototype.beforeFunctionExpression = function (t) {\n\t        return ['(', '{', '[', 'in', 'typeof', 'instanceof', 'new',\n\t            'return', 'case', 'delete', 'throw', 'void',\n\t            // assignment operators\n\t            '=', '+=', '-=', '*=', '**=', '/=', '%=', '<<=', '>>=', '>>>=',\n\t            '&=', '|=', '^=', ',',\n\t            // binary/unary operators\n\t            '+', '-', '*', '**', '/', '%', '++', '--', '<<', '>>', '>>>', '&',\n\t            '|', '^', '!', '~', '&&', '||', '?', ':', '===', '==', '>=',\n\t            '<=', '<', '>', '!=', '!=='].indexOf(t) >= 0;\n\t    };\n\t    // Determine if forward slash (/) is an operator or part of a regular expression\n\t    // https://github.com/mozilla/sweet.js/wiki/design\n\t    Reader.prototype.isRegexStart = function () {\n\t        var previous = this.values[this.values.length - 1];\n\t        var regex = (previous !== null);\n\t        switch (previous) {\n\t            case 'this':\n\t            case ']':\n\t                regex = false;\n\t                break;\n\t            case ')':\n\t                var keyword = this.values[this.paren - 1];\n\t                regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');\n\t                break;\n\t            case '}':\n\t                // Dividing a function by anything makes little sense,\n\t                // but we have to check for that.\n\t                regex = false;\n\t                if (this.values[this.curly - 3] === 'function') {\n\t                    // Anonymous function, e.g. function(){} /42\n\t                    var check = this.values[this.curly - 4];\n\t                    regex = check ? !this.beforeFunctionExpression(check) : false;\n\t                }\n\t                else if (this.values[this.curly - 4] === 'function') {\n\t                    // Named function, e.g. function f(){} /42/\n\t                    var check = this.values[this.curly - 5];\n\t                    regex = check ? !this.beforeFunctionExpression(check) : true;\n\t                }\n\t                break;\n\t            default:\n\t                break;\n\t        }\n\t        return regex;\n\t    };\n\t    Reader.prototype.push = function (token) {\n\t        if (token.type === 7 /* Punctuator */ || token.type === 4 /* Keyword */) {\n\t            if (token.value === '{') {\n\t                this.curly = this.values.length;\n\t            }\n\t            else if (token.value === '(') {\n\t                this.paren = this.values.length;\n\t            }\n\t            this.values.push(token.value);\n\t        }\n\t        else {\n\t            this.values.push(null);\n\t        }\n\t    };\n\t    return Reader;\n\t}());\n\tvar Tokenizer = (function () {\n\t    function Tokenizer(code, config) {\n\t        this.errorHandler = new error_handler_1.ErrorHandler();\n\t        this.errorHandler.tolerant = config ? (typeof config.tolerant === 'boolean' && config.tolerant) : false;\n\t        this.scanner = new scanner_1.Scanner(code, this.errorHandler);\n\t        this.scanner.trackComment = config ? (typeof config.comment === 'boolean' && config.comment) : false;\n\t        this.trackRange = config ? (typeof config.range === 'boolean' && config.range) : false;\n\t        this.trackLoc = config ? (typeof config.loc === 'boolean' && config.loc) : false;\n\t        this.buffer = [];\n\t        this.reader = new Reader();\n\t    }\n\t    Tokenizer.prototype.errors = function () {\n\t        return this.errorHandler.errors;\n\t    };\n\t    Tokenizer.prototype.getNextToken = function () {\n\t        if (this.buffer.length === 0) {\n\t            var comments = this.scanner.scanComments();\n\t            if (this.scanner.trackComment) {\n\t                for (var i = 0; i < comments.length; ++i) {\n\t                    var e = comments[i];\n\t                    var value = this.scanner.source.slice(e.slice[0], e.slice[1]);\n\t                    var comment = {\n\t                        type: e.multiLine ? 'BlockComment' : 'LineComment',\n\t                        value: value\n\t                    };\n\t                    if (this.trackRange) {\n\t                        comment.range = e.range;\n\t                    }\n\t                    if (this.trackLoc) {\n\t                        comment.loc = e.loc;\n\t                    }\n\t                    this.buffer.push(comment);\n\t                }\n\t            }\n\t            if (!this.scanner.eof()) {\n\t                var loc = void 0;\n\t                if (this.trackLoc) {\n\t                    loc = {\n\t                        start: {\n\t                            line: this.scanner.lineNumber,\n\t                            column: this.scanner.index - this.scanner.lineStart\n\t                        },\n\t                        end: {}\n\t                    };\n\t                }\n\t                var startRegex = (this.scanner.source[this.scanner.index] === '/') && this.reader.isRegexStart();\n\t                var token = startRegex ? this.scanner.scanRegExp() : this.scanner.lex();\n\t                this.reader.push(token);\n\t                var entry = {\n\t                    type: token_1.TokenName[token.type],\n\t                    value: this.scanner.source.slice(token.start, token.end)\n\t                };\n\t                if (this.trackRange) {\n\t                    entry.range = [token.start, token.end];\n\t                }\n\t                if (this.trackLoc) {\n\t                    loc.end = {\n\t                        line: this.scanner.lineNumber,\n\t                        column: this.scanner.index - this.scanner.lineStart\n\t                    };\n\t                    entry.loc = loc;\n\t                }\n\t                if (token.type === 9 /* RegularExpression */) {\n\t                    var pattern = token.pattern;\n\t                    var flags = token.flags;\n\t                    entry.regex = { pattern: pattern, flags: flags };\n\t                }\n\t                this.buffer.push(entry);\n\t            }\n\t        }\n\t        return this.buffer.shift();\n\t    };\n\t    return Tokenizer;\n\t}());\n\texports.Tokenizer = Tokenizer;\n\n\n/***/ }\n/******/ ])\n});\n;","/**\n * Default minimum size of a run.\n */\nconst DEFAULT_MIN_MERGE = 32\n\n/**\n * Minimum ordered subsequece required to do galloping.\n */\nconst DEFAULT_MIN_GALLOPING = 7\n\n/**\n * Default tmp storage length. Can increase depending on the size of the\n * smallest run to merge.\n */\nconst DEFAULT_TMP_STORAGE_LENGTH = 256\n\n/**\n * Pre-computed powers of 10 for efficient lexicographic comparison of\n * small integers.\n */\nconst POWERS_OF_TEN = [1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9]\n\nlet results\n\n/**\n * Estimate the logarithm base 10 of a small integer.\n *\n * @param {number} x - The integer to estimate the logarithm of.\n * @return {number} - The estimated logarithm of the integer.\n */\nconst log10 = x => x < 1e5\n  ? x < 1e2\n    ? x < 1e1\n      ? 0\n      : 1\n    : x < 1e4\n      ? x < 1e3\n        ? 2\n        : 3\n      : 4\n  : x < 1e7\n    ? x < 1e6\n      ? 5\n      : 6\n    : x < 1e9\n      ? x < 1e8\n        ? 7\n        : 8\n      : 9\n\n/**\n * Default alphabetical comparison of items.\n *\n * @param {string|object|number} a - First element to compare.\n * @param {string|object|number} b - Second element to compare.\n * @return {number} - A positive number if a.toString() > b.toString(), a\n * negative number if .toString() < b.toString(), 0 otherwise.\n */\nfunction alphabeticalCompare (a, b) {\n  if (a === b) {\n    return 0\n  }\n\n  if (~ ~ a === a && ~ ~ b === b) {\n    if (a === 0 || b === 0) {\n      return a < b ? - 1 : 1\n    }\n\n    if (a < 0 || b < 0) {\n      if (b >= 0) {\n        return - 1\n      }\n\n      if (a >= 0) {\n        return 1\n      }\n\n      a = - a\n      b = - b\n    }\n\n    const al = log10(a)\n    const bl = log10(b)\n\n    let t = 0\n\n    if (al < bl) {\n      a *= POWERS_OF_TEN[bl - al - 1]\n      b /= 10\n      t = - 1\n    } else if (al > bl) {\n      b *= POWERS_OF_TEN[al - bl - 1]\n      a /= 10\n      t = 1\n    }\n\n    if (a === b) {\n      return t\n    }\n\n    return a < b ? - 1 : 1\n  }\n\n  const aStr = String(a)\n  const bStr = String(b)\n\n  if (aStr === bStr) {\n    return 0\n  }\n\n  return aStr < bStr ? - 1 : 1\n}\n\n/**\n * Compute minimum run length for TimSort\n *\n * @param {number} n - The size of the array to sort.\n */\nfunction minRunLength (n) {\n  let r = 0\n\n  while (n >= DEFAULT_MIN_MERGE) {\n    r |= (n & 1)\n    n >>= 1\n  }\n\n  return n + r\n}\n\n/**\n * Counts the length of a monotonically ascending or strictly monotonically\n * descending sequence (run) starting at array[lo] in the range [lo, hi). If\n * the run is descending it is made ascending.\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {function} compare - Item comparison function.\n * @return {number} - The length of the run.\n */\nfunction makeAscendingRun (array, lo, hi, compare) {\n  let runHi = lo + 1\n\n  if (runHi === hi) {\n    return 1\n  }\n\n  // Descending\n  if (compare(array[runHi ++], array[lo]) < 0) {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n      runHi ++\n    }\n\n    reverseRun(array, lo, runHi)\n    reverseRun(results, lo, runHi)\n    // Ascending\n  } else {\n    while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n      runHi ++\n    }\n  }\n\n  return runHi - lo\n}\n\n/**\n * Reverse an array in the range [lo, hi).\n *\n * @param {array} array - The array to reverse.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n */\nfunction reverseRun (array, lo, hi) {\n  hi --\n\n  while (lo < hi) {\n    const t = array[lo]\n    array[lo ++] = array[hi]\n    array[hi --] = t\n  }\n}\n\n/**\n * Perform the binary sort of the array in the range [lo, hi) where start is\n * the first element possibly out of order.\n *\n * @param {array} array - The array to sort.\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n * @param {number} start - First element possibly out of order.\n * @param {function} compare - Item comparison function.\n */\nfunction binaryInsertionSort (array, lo, hi, start, compare) {\n  if (start === lo) {\n    start ++\n  }\n\n  for (; start < hi; start ++) {\n    const pivot = array[start]\n    const pivotIndex = results[start]\n\n    // Ranges of the array where pivot belongs\n    let left = lo\n    let right = start\n\n    /*\n     *   pivot >= array[i] for i in [lo, left)\n     *   pivot <  array[i] for i in  in [right, start)\n     */\n    while (left < right) {\n      const mid = (left + right) >>> 1\n\n      if (compare(pivot, array[mid]) < 0) {\n        right = mid\n      } else {\n        left = mid + 1\n      }\n    }\n\n    /*\n     * Move elements right to make room for the pivot. If there are elements\n     * equal to pivot, left points to the first slot after them: this is also\n     * a reason for which TimSort is stable\n     */\n    let n = start - left\n    // Switch is just an optimization for small arrays\n    switch (n) {\n    case 3:\n      array[left + 3] = array[left + 2]\n      results[left + 3] = results[left + 2]\n      /* falls through */\n    case 2:\n      array[left + 2] = array[left + 1]\n      results[left + 2] = results[left + 1]\n      /* falls through */\n    case 1:\n      array[left + 1] = array[left]\n      results[left + 1] = results[left]\n      break\n    default:\n      while (n > 0) {\n        array[left + n] = array[left + n - 1]\n        results[left + n] = results[left + n - 1]\n        n --\n      }\n    }\n\n    array[left] = pivot\n    results[left] = pivotIndex\n  }\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the leftmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopLeft (value, array, start, length, hint, compare) {\n  let lastOffset = 0\n  let maxOffset = 0\n  let offset = 1\n\n  if (compare(value, array[start + hint]) > 0) {\n    maxOffset = length - hint\n\n    while (\n      offset < maxOffset\n      && compare(value, array[start + hint + offset]) > 0\n    ) {\n      lastOffset = offset\n      offset = (offset << 1) + 1\n\n      if (offset <= 0) {\n        offset = maxOffset\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset\n    }\n\n    // Make offsets relative to start\n    lastOffset += hint\n    offset += hint\n\n    // value <= array[start + hint]\n  } else {\n    maxOffset = hint + 1\n    while (\n      offset < maxOffset\n      && compare(value, array[start + hint - offset]) <= 0\n    ) {\n      lastOffset = offset\n      offset = (offset << 1) + 1\n\n      if (offset <= 0) {\n        offset = maxOffset\n      }\n    }\n    if (offset > maxOffset) {\n      offset = maxOffset\n    }\n\n    // Make offsets relative to start\n    const tmp = lastOffset\n    lastOffset = hint - offset\n    offset = hint - tmp\n  }\n\n  /*\n   * Now array[start+lastOffset] < value <= array[start+offset], so value\n   * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n   * binary search, with invariant array[start + lastOffset - 1] < value <=\n   * array[start + offset].\n   */\n  lastOffset ++\n  while (lastOffset < offset) {\n    const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n    if (compare(value, array[start + m]) > 0) {\n      lastOffset = m + 1\n    } else {\n      offset = m\n    }\n  }\n  return offset\n}\n\n/**\n * Find the position at which to insert a value in a sorted range. If the range\n * contains elements equal to the value the rightmost element index is returned\n * (for stability).\n *\n * @param {number} value - Value to insert.\n * @param {array} array - The array in which to insert value.\n * @param {number} start - First element in the range.\n * @param {number} length - Length of the range.\n * @param {number} hint - The index at which to begin the search.\n * @param {function} compare - Item comparison function.\n * @return {number} - The index where to insert value.\n */\nfunction gallopRight (value, array, start, length, hint, compare) {\n  let lastOffset = 0\n  let maxOffset = 0\n  let offset = 1\n\n  if (compare(value, array[start + hint]) < 0) {\n    maxOffset = hint + 1\n\n    while (\n      offset < maxOffset\n      && compare(value, array[start + hint - offset]) < 0\n    ) {\n      lastOffset = offset\n      offset = (offset << 1) + 1\n\n      if (offset <= 0) {\n        offset = maxOffset\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset\n    }\n\n    // Make offsets relative to start\n    const tmp = lastOffset\n    lastOffset = hint - offset\n    offset = hint - tmp\n\n    // value >= array[start + hint]\n  } else {\n    maxOffset = length - hint\n\n    while (\n      offset < maxOffset\n      && compare(value, array[start + hint + offset]) >= 0\n    ) {\n      lastOffset = offset\n      offset = (offset << 1) + 1\n\n      if (offset <= 0) {\n        offset = maxOffset\n      }\n    }\n\n    if (offset > maxOffset) {\n      offset = maxOffset\n    }\n\n    // Make offsets relative to start\n    lastOffset += hint\n    offset += hint\n  }\n\n  /*\n   * Now array[start+lastOffset] < value <= array[start+offset], so value\n   * belongs somewhere in the range (start + lastOffset, start + offset]. Do a\n   * binary search, with invariant array[start + lastOffset - 1] < value <=\n   * array[start + offset].\n   */\n  lastOffset ++\n\n  while (lastOffset < offset) {\n    const m = lastOffset + ((offset - lastOffset) >>> 1)\n\n    if (compare(value, array[start + m]) < 0) {\n      offset = m\n    } else {\n      lastOffset = m + 1\n    }\n  }\n\n  return offset\n}\n\nclass TimSort {\n  constructor (array, compare) {\n    this.array = array\n    this.compare = compare\n\n    const {length} = array\n\n    this.length = length\n    this.minGallop = DEFAULT_MIN_GALLOPING\n\n    this.tmpStorageLength = length < 2 * DEFAULT_TMP_STORAGE_LENGTH\n      ? length >>> 1\n      : DEFAULT_TMP_STORAGE_LENGTH\n\n    this.tmp = new Array(this.tmpStorageLength)\n    this.tmpIndex = new Array(this.tmpStorageLength)\n\n    this.stackLength = length < 120\n      ? 5\n      : length < 1542\n        ? 10\n        : length < 119151\n          ? 19\n          : 40\n\n    this.runStart = new Array(this.stackLength)\n    this.runLength = new Array(this.stackLength)\n\n    this.stackSize = 0\n  }\n\n  /**\n   * Push a new run on TimSort's stack.\n   *\n   * @param {number} runStart - Start index of the run in the original array.\n   * @param {number} runLength - Length of the run;\n   */\n  pushRun (runStart, runLength) {\n    this.runStart[this.stackSize] = runStart\n    this.runLength[this.stackSize] = runLength\n    this.stackSize += 1\n  }\n\n  /**\n   * Merge runs on TimSort's stack so that the following holds for all i:\n   * 1) runLength[i - 3] > runLength[i - 2] + runLength[i - 1]\n   * 2) runLength[i - 2] > runLength[i - 1]\n   */\n  mergeRuns () {\n    while (this.stackSize > 1) {\n      let n = this.stackSize - 2\n\n      if (\n        (\n          n >= 1\n          && this.runLength[n - 1] <= this.runLength[n] + this.runLength[n + 1]\n        )\n        || (\n          n >= 2\n          && this.runLength[n - 2] <= this.runLength[n] + this.runLength[n - 1]\n        )\n      ) {\n        if (this.runLength[n - 1] < this.runLength[n + 1]) {\n          n --\n        }\n      } else if (this.runLength[n] > this.runLength[n + 1]) {\n        break\n      }\n      this.mergeAt(n)\n    }\n  }\n\n  /**\n   * Merge all runs on TimSort's stack until only one remains.\n   */\n  forceMergeRuns () {\n    while (this.stackSize > 1) {\n      let n = this.stackSize - 2\n\n      if (n > 0 && this.runLength[n - 1] < this.runLength[n + 1]) {\n        n --\n      }\n\n      this.mergeAt(n)\n    }\n  }\n\n  /**\n   * Merge the runs on the stack at positions i and i+1. Must be always be called\n   * with i=stackSize-2 or i=stackSize-3 (that is, we merge on top of the stack).\n   *\n   * @param {number} i - Index of the run to merge in TimSort's stack.\n   */\n  mergeAt (i) {\n    const {compare} = this\n    const {array} = this\n\n    let start1 = this.runStart[i]\n    let length1 = this.runLength[i]\n    const start2 = this.runStart[i + 1]\n    let length2 = this.runLength[i + 1]\n\n    this.runLength[i] = length1 + length2\n\n    if (i === this.stackSize - 3) {\n      this.runStart[i + 1] = this.runStart[i + 2]\n      this.runLength[i + 1] = this.runLength[i + 2]\n    }\n\n    this.stackSize --\n\n    /*\n     * Find where the first element in the second run goes in run1. Previous\n     * elements in run1 are already in place\n     */\n    const k = gallopRight(array[start2], array, start1, length1, 0, compare)\n    start1 += k\n    length1 -= k\n\n    if (length1 === 0) {\n      return\n    }\n\n    /*\n     * Find where the last element in the first run goes in run2. Next elements\n     * in run2 are already in place\n     */\n    length2 = gallopLeft(\n      array[start1 + length1 - 1],\n      array,\n      start2,\n      length2,\n      length2 - 1,\n      compare\n    )\n\n    if (length2 === 0) {\n      return\n    }\n\n    /*\n     * Merge remaining runs. A tmp array with length = min(length1, length2) is\n     * used\n     */\n    if (length1 <= length2) {\n      this.mergeLow(start1, length1, start2, length2)\n    } else {\n      this.mergeHigh(start1, length1, start2, length2)\n    }\n  }\n\n  /**\n   * Merge two adjacent runs in a stable way. The runs must be such that the\n   * first element of run1 is bigger than the first element in run2 and the\n   * last element of run1 is greater than all the elements in run2.\n   * The method should be called when run1.length <= run2.length as it uses\n   * TimSort temporary array to store run1. Use mergeHigh if run1.length >\n   * run2.length.\n   *\n   * @param {number} start1 - First element in run1.\n   * @param {number} length1 - Length of run1.\n   * @param {number} start2 - First element in run2.\n   * @param {number} length2 - Length of run2.\n   */\n  mergeLow (start1, length1, start2, length2) {\n    const {compare} = this\n    const {array} = this\n    const {tmp} = this\n    const {tmpIndex} = this\n    let i = 0\n\n    for (i = 0; i < length1; i ++) {\n      tmp[i] = array[start1 + i]\n      tmpIndex[i] = results[start1 + i]\n    }\n\n    let cursor1 = 0\n    let cursor2 = start2\n    let dest = start1\n\n    array[dest] = array[cursor2]\n    results[dest] = results[cursor2]\n\n    dest ++\n    cursor2 ++\n\n    if (-- length2 === 0) {\n      for (i = 0; i < length1; i ++) {\n        array[dest + i] = tmp[cursor1 + i]\n        results[dest + i] = tmpIndex[cursor1 + i]\n      }\n      return\n    }\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i ++) {\n        array[dest + i] = array[cursor2 + i]\n        results[dest + i] = results[cursor2 + i]\n      }\n      array[dest + length2] = tmp[cursor1]\n      results[dest + length2] = tmpIndex[cursor1]\n      return\n    }\n\n    let {minGallop} = this\n\n    while (true) {\n      let count1 = 0\n      let count2 = 0\n      let exit = false\n\n      do {\n        if (compare(array[cursor2], tmp[cursor1]) < 0) {\n          array[dest] = array[cursor2]\n          results[dest] = results[cursor2]\n          dest ++\n          cursor2 ++\n          count2 ++\n          count1 = 0\n\n          if (-- length2 === 0) {\n            exit = true\n            break\n          }\n        } else {\n          array[dest] = tmp[cursor1]\n          results[dest] = tmpIndex[cursor1]\n          dest ++\n          cursor1 ++\n          count1 ++\n          count2 = 0\n          if (-- length1 === 1) {\n            exit = true\n            break\n          }\n        }\n      } while ((count1 | count2) < minGallop)\n\n      if (exit) {\n        break\n      }\n\n      do {\n        count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare)\n\n        if (count1 !== 0) {\n          for (i = 0; i < count1; i ++) {\n            array[dest + i] = tmp[cursor1 + i]\n            results[dest + i] = tmpIndex[cursor1 + i]\n          }\n\n          dest += count1\n          cursor1 += count1\n          length1 -= count1\n          if (length1 <= 1) {\n            exit = true\n            break\n          }\n        }\n\n        array[dest] = array[cursor2]\n        results[dest] = results[cursor2]\n\n        dest ++\n        cursor2 ++\n\n        if (-- length2 === 0) {\n          exit = true\n          break\n        }\n\n        count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare)\n\n        if (count2 !== 0) {\n          for (i = 0; i < count2; i ++) {\n            array[dest + i] = array[cursor2 + i]\n            results[dest + i] = results[cursor2 + i]\n          }\n\n          dest += count2\n          cursor2 += count2\n          length2 -= count2\n\n          if (length2 === 0) {\n            exit = true\n            break\n          }\n        }\n        array[dest] = tmp[cursor1]\n        results[dest] = tmpIndex[cursor1]\n        dest ++\n        cursor1 ++\n\n        if (-- length1 === 1) {\n          exit = true\n          break\n        }\n\n        minGallop --\n      } while (\n        count1 >= DEFAULT_MIN_GALLOPING\n        || count2 >= DEFAULT_MIN_GALLOPING\n      )\n\n      if (exit) {\n        break\n      }\n\n      if (minGallop < 0) {\n        minGallop = 0\n      }\n\n      minGallop += 2\n    }\n\n    this.minGallop = minGallop\n\n    if (minGallop < 1) {\n      this.minGallop = 1\n    }\n\n    if (length1 === 1) {\n      for (i = 0; i < length2; i ++) {\n        array[dest + i] = array[cursor2 + i]\n        results[dest + i] = results[cursor2 + i]\n      }\n      array[dest + length2] = tmp[cursor1]\n      results[dest + length2] = tmpIndex[cursor1]\n    } else if (length1 === 0) {\n      throw new Error('mergeLow preconditions were not respected')\n    } else {\n      for (i = 0; i < length1; i ++) {\n        array[dest + i] = tmp[cursor1 + i]\n        results[dest + i] = tmpIndex[cursor1 + i]\n      }\n    }\n  }\n\n  /**\n   * Merge two adjacent runs in a stable way. The runs must be such that the\n   * first element of run1 is bigger than the first element in run2 and the\n   * last element of run1 is greater than all the elements in run2.\n   * The method should be called when run1.length > run2.length as it uses\n   * TimSort temporary array to store run2. Use mergeLow if run1.length <=\n   * run2.length.\n   *\n   * @param {number} start1 - First element in run1.\n   * @param {number} length1 - Length of run1.\n   * @param {number} start2 - First element in run2.\n   * @param {number} length2 - Length of run2.\n   */\n  mergeHigh (start1, length1, start2, length2) {\n    const {compare} = this\n    const {array} = this\n    const {tmp} = this\n    const {tmpIndex} = this\n    let i = 0\n\n    for (i = 0; i < length2; i ++) {\n      tmp[i] = array[start2 + i]\n      tmpIndex[i] = results[start2 + i]\n    }\n\n    let cursor1 = start1 + length1 - 1\n    let cursor2 = length2 - 1\n    let dest = start2 + length2 - 1\n    let customCursor = 0\n    let customDest = 0\n\n    array[dest] = array[cursor1]\n    results[dest] = results[cursor1]\n\n    dest --\n    cursor1 --\n\n    if (-- length1 === 0) {\n      customCursor = dest - (length2 - 1)\n\n      for (i = 0; i < length2; i ++) {\n        array[customCursor + i] = tmp[i]\n        results[customCursor + i] = tmpIndex[i]\n      }\n\n      return\n    }\n\n    if (length2 === 1) {\n      dest -= length1\n      cursor1 -= length1\n      customDest = dest + 1\n      customCursor = cursor1 + 1\n\n      for (i = length1 - 1; i >= 0; i --) {\n        array[customDest + i] = array[customCursor + i]\n        results[customDest + i] = results[customCursor + i]\n      }\n\n      array[dest] = tmp[cursor2]\n      results[dest] = tmpIndex[cursor2]\n      return\n    }\n\n    let {minGallop} = this\n\n    while (true) {\n      let count1 = 0\n      let count2 = 0\n      let exit = false\n\n      do {\n        if (compare(tmp[cursor2], array[cursor1]) < 0) {\n          array[dest] = array[cursor1]\n          results[dest] = results[cursor1]\n          dest --\n          cursor1 --\n          count1 ++\n          count2 = 0\n          if (-- length1 === 0) {\n            exit = true\n            break\n          }\n        } else {\n          array[dest] = tmp[cursor2]\n          results[dest] = tmpIndex[cursor2]\n          dest --\n          cursor2 --\n          count2 ++\n          count1 = 0\n          if (-- length2 === 1) {\n            exit = true\n            break\n          }\n        }\n      } while ((count1 | count2) < minGallop)\n\n      if (exit) {\n        break\n      }\n\n      do {\n        count1 = length1 - gallopRight(\n          tmp[cursor2],\n          array,\n          start1,\n          length1,\n          length1 - 1,\n          compare\n        )\n\n        if (count1 !== 0) {\n          dest -= count1\n          cursor1 -= count1\n          length1 -= count1\n          customDest = dest + 1\n          customCursor = cursor1 + 1\n\n          for (i = count1 - 1; i >= 0; i --) {\n            array[customDest + i] = array[customCursor + i]\n            results[customDest + i] = results[customCursor + i]\n          }\n\n          if (length1 === 0) {\n            exit = true\n            break\n          }\n        }\n\n        array[dest] = tmp[cursor2]\n        results[dest] = tmpIndex[cursor2]\n        dest --\n        cursor2 --\n\n        if (-- length2 === 1) {\n          exit = true\n          break\n        }\n\n        count2 = length2 - gallopLeft(\n          array[cursor1],\n          tmp,\n          0,\n          length2,\n          length2 - 1,\n          compare\n        )\n\n        if (count2 !== 0) {\n          dest -= count2\n          cursor2 -= count2\n          length2 -= count2\n          customDest = dest + 1\n          customCursor = cursor2 + 1\n\n          for (i = 0; i < count2; i ++) {\n            array[customDest + i] = tmp[customCursor + i]\n            results[customDest + i] = tmpIndex[customCursor + i]\n          }\n\n          if (length2 <= 1) {\n            exit = true\n            break\n          }\n        }\n\n        array[dest] = array[cursor1]\n        results[dest] = results[cursor1]\n        dest --\n        cursor1 --\n\n        if (-- length1 === 0) {\n          exit = true\n          break\n        }\n\n        minGallop --\n      } while (\n        count1 >= DEFAULT_MIN_GALLOPING\n        || count2 >= DEFAULT_MIN_GALLOPING\n      )\n\n      if (exit) {\n        break\n      }\n\n      if (minGallop < 0) {\n        minGallop = 0\n      }\n\n      minGallop += 2\n    }\n\n    this.minGallop = minGallop\n\n    if (minGallop < 1) {\n      this.minGallop = 1\n    }\n\n    if (length2 === 1) {\n      dest -= length1\n      cursor1 -= length1\n      customDest = dest + 1\n      customCursor = cursor1 + 1\n\n      for (i = length1 - 1; i >= 0; i --) {\n        array[customDest + i] = array[customCursor + i]\n        results[customDest + i] = results[customCursor + i]\n      }\n\n      array[dest] = tmp[cursor2]\n      results[dest] = tmpIndex[cursor2]\n    } else if (length2 === 0) {\n      throw new Error('mergeHigh preconditions were not respected')\n    } else {\n      customCursor = dest - (length2 - 1)\n      for (i = 0; i < length2; i ++) {\n        array[customCursor + i] = tmp[i]\n        results[customCursor + i] = tmpIndex[i]\n      }\n    }\n  }\n}\n\n/**\n * Sort an array in the range [lo, hi) using TimSort.\n *\n * @param {array} array - The array to sort.\n * @param {function=} compare - Item comparison function. Default is\n *     alphabetical\n * @param {number} lo - First element in the range (inclusive).\n * @param {number} hi - Last element in the range.\n *     comparator.\n */\nfunction sort (array, compare, lo, hi) {\n  if (!Array.isArray(array)) {\n    throw new TypeError(\n      `The \"array\" argument must be an array. Received ${array}`\n    )\n  }\n\n  results = []\n\n  const {length} = array\n\n  let i = 0\n\n  while (i < length) {\n    results[i] = i ++\n  }\n\n  /*\n   * Handle the case where a comparison function is not provided. We do\n   * lexicographic sorting\n   */\n  if (!compare) {\n    compare = alphabeticalCompare\n  } else if (typeof compare !== 'function') {\n    hi = lo\n    lo = compare\n    compare = alphabeticalCompare\n  }\n\n  if (!lo) {\n    lo = 0\n  }\n  if (!hi) {\n    hi = length\n  }\n\n  let remaining = hi - lo\n\n  // The array is already sorted\n  if (remaining < 2) {\n    return results\n  }\n\n  let runLength = 0\n  // On small arrays binary sort can be used directly\n  if (remaining < DEFAULT_MIN_MERGE) {\n    runLength = makeAscendingRun(array, lo, hi, compare)\n    binaryInsertionSort(array, lo, hi, lo + runLength, compare)\n    return results\n  }\n\n  const ts = new TimSort(array, compare)\n\n  const minRun = minRunLength(remaining)\n\n  do {\n    runLength = makeAscendingRun(array, lo, hi, compare)\n    if (runLength < minRun) {\n      let force = remaining\n      if (force > minRun) {\n        force = minRun\n      }\n\n      binaryInsertionSort(array, lo, lo + force, lo + runLength, compare)\n      runLength = force\n    }\n    // Push new run and merge if necessary\n    ts.pushRun(lo, runLength)\n    ts.mergeRuns()\n\n    // Go find next run\n    remaining -= runLength\n    lo += runLength\n  } while (remaining !== 0)\n\n  // Force merging of remaining runs\n  ts.forceMergeRuns()\n\n  return results\n}\n\nmodule.exports = {\n  sort\n}\n","const PREFIX_BEFORE = 'before'\nconst PREFIX_AFTER_PROP = 'after-prop'\nconst PREFIX_AFTER_COLON = 'after-colon'\nconst PREFIX_AFTER_VALUE = 'after-value'\nconst PREFIX_AFTER = 'after'\n\nconst PREFIX_BEFORE_ALL = 'before-all'\nconst PREFIX_AFTER_ALL = 'after-all'\n\nconst BRACKET_OPEN = '['\nconst BRACKET_CLOSE = ']'\nconst CURLY_BRACKET_OPEN = '{'\nconst CURLY_BRACKET_CLOSE = '}'\nconst COMMA = ','\nconst EMPTY = ''\nconst MINUS = '-'\n\nconst PROP_SYMBOL_PREFIXES = [\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER\n]\n\nconst NON_PROP_SYMBOL_PREFIXES = [\n  PREFIX_BEFORE,\n  PREFIX_AFTER,\n  PREFIX_BEFORE_ALL,\n  PREFIX_AFTER_ALL\n]\n\nconst NON_PROP_SYMBOL_KEYS = NON_PROP_SYMBOL_PREFIXES.map(Symbol.for)\n\nconst COLON = ':'\nconst UNDEFINED = undefined\n\nconst LINE_BREAKS_BEFORE = new WeakMap()\nconst LINE_BREAKS_AFTER = new WeakMap()\nconst RAW_STRING_LITERALS = new WeakMap()\n\nconst is_string = subject => typeof subject === 'string'\nconst is_number = subject => typeof subject === 'number'\n/**\n * @param {unknown} v\n * @returns {v is NonNullable<object>}\n */\nconst is_object = v => typeof v === 'object' && v !== null\n\nconst normalize_key = key => is_string(key) || is_number(key)\n  ? String(key)\n  : null\n\nconst set_raw_string_literal = (host, key, raw) => {\n  if (!is_object(host) || !is_string(raw)) {\n    return\n  }\n\n  const normalized = normalize_key(key)\n  if (normalized === null) {\n    return\n  }\n\n  let map = RAW_STRING_LITERALS.get(host)\n  if (!map) {\n    map = new Map()\n    RAW_STRING_LITERALS.set(host, map)\n  }\n\n  map.set(normalized, raw)\n}\n\nconst get_raw_string_literal = (host, key) => {\n  if (!is_object(host)) {\n    return\n  }\n\n  const normalized = normalize_key(key)\n  if (normalized === null) {\n    return\n  }\n\n  const map = RAW_STRING_LITERALS.get(host)\n  return map\n    ? map.get(normalized)\n    : undefined\n}\n\nconst symbol = (prefix, key) => Symbol.for(prefix + COLON + key)\nconst symbol_checked = (prefix, key) => {\n  if (key) {\n    if (PROP_SYMBOL_PREFIXES.includes(prefix)) {\n      return symbol(prefix, key)\n    }\n\n    throw new RangeError(\n      `Unsupported comment position ${prefix} with key ${key}`\n    )\n  }\n\n  if (NON_PROP_SYMBOL_PREFIXES.includes(prefix)) {\n    return Symbol.for(prefix)\n  }\n\n  throw new RangeError(`Unsupported comment position ${prefix}`)\n}\n\nconst define = (target, key, value) => Object.defineProperty(target, key, {\n  value,\n  writable: true,\n  configurable: true\n})\n\nconst copy_comments_by_kind = (\n  target, source, target_key, source_key, prefix, remove_source\n) => {\n  const source_prop = symbol(prefix, source_key)\n  if (!Object.hasOwn(source, source_prop)) {\n    return\n  }\n\n  const target_prop = target_key === source_key\n    ? source_prop\n    : symbol(prefix, target_key)\n\n  define(target, target_prop, source[source_prop])\n\n  if (remove_source) {\n    delete source[source_prop]\n  }\n}\n\nconst copy_comments = (\n  target, source, target_key, source_key, remove_source\n) => {\n  PROP_SYMBOL_PREFIXES.forEach(prefix => {\n    copy_comments_by_kind(\n      target, source, target_key, source_key, prefix, remove_source\n    )\n  })\n}\n\nconst swap_comments = (array, from, to) => {\n  if (from === to) {\n    return\n  }\n\n  PROP_SYMBOL_PREFIXES.forEach(prefix => {\n    const target_prop = symbol(prefix, to)\n    if (!Object.hasOwn(array, target_prop)) {\n      copy_comments_by_kind(array, array, to, from, prefix, true)\n      return\n    }\n\n    const comments = array[target_prop]\n    delete array[target_prop]\n\n    copy_comments_by_kind(array, array, to, from, prefix, true)\n    define(array, symbol(prefix, from), comments)\n  })\n}\n\nconst assign_non_prop_comments = (target, source) => {\n  NON_PROP_SYMBOL_KEYS.forEach(key => {\n    const comments = source[key]\n\n    if (comments) {\n      define(target, key, comments)\n    }\n  })\n}\n\n// Assign keys and comments\nconst assign = (target, source, keys) => {\n  keys.forEach(key => {\n    if (typeof key !== 'string' && typeof key !== 'number') {\n      return\n    }\n\n    if (!Object.hasOwn(source, key)) {\n      return\n    }\n\n    target[key] = source[key]\n    copy_comments(target, source, key, key)\n  })\n\n  return target\n}\n\nconst is_raw_json = typeof JSON.isRawJSON === 'function'\n  // For backward compatibility,\n  // since JSON.isRawJSON is not supported in node < 21\n  ? JSON.isRawJSON\n  // istanbul ignore next\n  : () => false\n\nconst set_comment_line_breaks = (comment, before, after) => {\n  if (is_number(before) && before >= 0) {\n    LINE_BREAKS_BEFORE.set(comment, before)\n  }\n\n  if (is_number(after) && after >= 0) {\n    LINE_BREAKS_AFTER.set(comment, after)\n  }\n}\n\nconst get_comment_line_breaks_before = comment => LINE_BREAKS_BEFORE.get(comment)\nconst get_comment_line_breaks_after = comment => LINE_BREAKS_AFTER.get(comment)\n\nmodule.exports = {\n  PROP_SYMBOL_PREFIXES,\n\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER,\n\n  PREFIX_BEFORE_ALL,\n  PREFIX_AFTER_ALL,\n\n  BRACKET_OPEN,\n  BRACKET_CLOSE,\n  CURLY_BRACKET_OPEN,\n  CURLY_BRACKET_CLOSE,\n\n  COLON,\n  COMMA,\n  MINUS,\n  EMPTY,\n\n  UNDEFINED,\n\n  symbol,\n  define,\n  copy_comments,\n  swap_comments,\n  assign_non_prop_comments,\n\n  is_string,\n  is_number,\n  is_object,\n\n  is_raw_json,\n  set_raw_string_literal,\n  get_raw_string_literal,\n  set_comment_line_breaks,\n  get_comment_line_breaks_before,\n  get_comment_line_breaks_after,\n\n  /**\n   * Assign properties and comments from source to target object.\n   *\n   * @param {Object} target The target object to assign properties and comments\n   *   to.\n   * @param {Object} source The source object to copy properties and comments\n   *   from.\n   * @param {Array<string|number>} [keys] Optional array of keys to assign. If\n   *   not provided, all keys and non-property comments are assigned. If empty\n   *   array, only non-property comments are assigned.\n   * @returns {Object} The target object with assigned properties and comments.\n   *\n   * @throws {TypeError} If target cannot be converted to object or keys is not\n   *   array or undefined.\n   *\n   * @example\n   * const source = parse('{\"a\": 1 // comment a, \"b\": 2 // comment b}')\n   * const target = {}\n   *\n   * // Copy all properties and comments\n   * assign(target, source)\n   *\n   * // Copy only specific properties and their comments\n   * assign(target, source, ['a'])\n   *\n   * // Copy only non-property comments\n   * assign(target, source, [])\n   */\n  assign (target, source, keys) {\n    if (!is_object(target)) {\n      throw new TypeError('Cannot convert undefined or null to object')\n    }\n\n    if (!is_object(source)) {\n      return target\n    }\n\n    if (keys === UNDEFINED) {\n      // Copy all comments from source to target, including:\n      // - non-property comments\n      // - property comments\n\n      keys = Object.keys(source)\n      // We assign non-property comments\n      // if argument `keys` is not specified\n      assign_non_prop_comments(target, source)\n    } else if (!Array.isArray(keys)) {\n      throw new TypeError('keys must be array or undefined')\n    } else if (keys.length === 0) {\n      // Copy all non-property comments from source to target\n\n      // Or argument `keys` is an empty array\n      assign_non_prop_comments(target, source)\n    }\n\n    // Copy specified property comments from source to target\n    return assign(target, source, keys)\n  },\n\n  /**\n   * Move comments from one location to another within objects.\n   *\n   * @param {Object} source The source object containing comments to move.\n   * @param {Object} [target] The target object to move comments to. If not\n   *   provided, defaults to source (move within same object).\n   * @param {Object} from The source comment location.\n   * @param {string} from.where The comment position (e.g., 'before',\n   *   'after', 'before-all', etc.).\n   * @param {string} [from.key] The property key for property-specific comments.\n   *   Omit for non-property comments.\n   * @param {Object} to The target comment location.\n   * @param {string} to.where The comment position (e.g., 'before',\n   *   'after', 'before-all', etc.).\n   * @param {string} [to.key] The property key for property-specific comments.\n   *   Omit for non-property comments.\n   * @param {boolean} [override=false] Whether to override existing comments at\n   *   the target location. If false, comments will be appended.\n   *\n   * @throws {TypeError} If source is not an object.\n   * @throws {RangeError} If where parameter is invalid or incompatible with key.\n   *\n   * @example\n   * const obj = parse('{\"a\": 1 // comment on a}')\n   *\n   * // Move comment from after 'a' to before 'a'\n   * moveComments(obj, obj,\n   *   { where: 'after', key: 'a' },\n   *   { where: 'before', key: 'a' }\n   * )\n   *\n   * @example\n   * // Move non-property comment\n   * moveComments(obj, obj,\n   *   { where: 'before-all' },\n   *   { where: 'after-all' }\n   * )\n   */\n  moveComments (source, target, {\n    where: from_where,\n    key: from_key\n  }, {\n    where: to_where,\n    key: to_key\n  }, override = false) {\n    if (!is_object(source)) {\n      throw new TypeError('source must be an object')\n    }\n\n    if (!target) {\n      target = source\n    }\n\n    if (!is_object(target)) {\n      // No target to move to\n      return\n    }\n\n    const from_prop = symbol_checked(from_where, from_key)\n    const to_prop = symbol_checked(to_where, to_key)\n\n    if (!Object.hasOwn(source, from_prop)) {\n      return\n    }\n\n    const source_comments = source[from_prop]\n    delete source[from_prop]\n\n    if (override || !Object.hasOwn(target, to_prop)) {\n      // Override\n      // or the target has no existing comments\n      define(target, to_prop, source_comments)\n      return\n    }\n\n    const target_comments = target[to_prop]\n    if (target_comments) {\n      target_comments.push(...source_comments)\n    }\n  },\n\n  /**\n   * Remove comments from a specific location within an object.\n   *\n   * @param {Object} target The target object to remove comments from.\n   * @param {Object} location The comment location to remove.\n   * @param {string} location.where The comment position (e.g., 'before',\n   *   'after', 'before-all', etc.).\n   * @param {string} [location.key] The property key for property-specific\n   *   comments. Omit for non-property comments.\n   *\n   * @throws {TypeError} If target is not an object.\n   * @throws {RangeError} If where parameter is invalid or incompatible with key.\n   *\n   * @example\n   * const obj = parse('{\"a\": 1 // comment on a}')\n   *\n   * // Remove comment after 'a'\n   * removeComments(obj, { where: 'after', key: 'a' })\n   *\n   * @example\n   * // Remove non-property comment\n   * removeComments(obj, { where: 'before-all' })\n   */\n  removeComments (target, {\n    where,\n    key\n  }) {\n    if (!is_object(target)) {\n      throw new TypeError('target must be an object')\n    }\n\n    const prop = symbol_checked(where, key)\n    if (!Object.hasOwn(target, prop)) {\n      return\n    }\n\n    delete target[prop]\n  }\n}\n","const {sort} = require('array-timsort')\n\nconst {\n  PROP_SYMBOL_PREFIXES,\n\n  UNDEFINED,\n\n  symbol,\n  copy_comments,\n  swap_comments\n} = require('./common')\n\nconst reverse_comments = array => {\n  const {length} = array\n  let i = 0\n  const max = length / 2\n\n  for (; i < max; i ++) {\n    swap_comments(array, i, length - i - 1)\n  }\n}\n\nconst move_comment = (target, source, i, offset, remove) => {\n  copy_comments(target, source, i + offset, i, remove)\n}\n\nconst move_comments = (\n  // `Array` target array\n  target,\n  // `Array` source array\n  source,\n  // `number` start index\n  start,\n  // `number` number of indexes to move\n  count,\n  // `number` offset to move\n  offset,\n  // `boolean` whether should remove the comments from source\n  remove\n) => {\n  if (offset > 0) {\n    let i = count\n    //         |   count   | offset |\n    // source: -------------\n    // target:          -------------\n    //         | remove |\n    // => remove === offset\n\n    // From [count - 1, 0]\n    while (i -- > 0) {\n      move_comment(target, source, start + i, offset, remove)\n    }\n    return\n  }\n\n  let i = 0\n  // | remove  |  count    |\n  //           -------------\n  // -------------\n  //             | offset  |\n\n  // From [0, count - 1]\n  while (i < count) {\n    const ii = i ++\n    move_comment(target, source, start + ii, offset, remove)\n  }\n}\n\nconst remove_comments = (array, key) => {\n  PROP_SYMBOL_PREFIXES.forEach(prefix => {\n    const prop = symbol(prefix, key)\n    delete array[prop]\n  })\n}\n\nconst get_mapped = (map, key) => {\n  let mapped = key\n\n  while (mapped in map) {\n    mapped = map[mapped]\n  }\n\n  return mapped\n}\n\n/**\n * An Array subclass that preserves comments when array operations are performed.\n *\n * CommentArray extends the native Array class and automatically handles comment\n * preservation during array mutations like splice, slice, push, pop, etc.\n * Comments are stored as symbol properties and are moved/copied appropriately\n * when the array structure changes.\n *\n * @extends Array\n *\n * @example\n * const arr = parse('[1, 2, 3]') // with comments\n * // arr is a CommentArray instance\n * arr.splice(1, 1) // Comments are preserved and repositioned correctly\n */\nclass CommentArray extends Array {\n  // - deleteCount + items.length\n\n  // We should avoid `splice(begin, deleteCount, ...items)`,\n  // because `splice(0, undefined)` is not equivalent to `splice(0)`,\n  // as well as:\n  // - slice\n  /**\n   * Changes the contents of an array by removing or replacing existing\n   *   elements and/or adding new elements in place.\n   * Comments are automatically preserved and repositioned during the operation.\n   *\n   * @param {...*} args Arguments passed to Array.prototype.splice\n   * @returns {CommentArray} A new CommentArray containing the deleted elements.\n   */\n  splice (...args) {\n    const {length} = this\n    const ret = super.splice(...args)\n\n    // #16\n    // If no element removed, we might still need to move comments,\n    //   because splice could add new items\n\n    // if (!ret.length) {\n    //   return ret\n    // }\n\n    // JavaScript syntax is silly\n    // eslint-disable-next-line prefer-const\n    let [begin, deleteCount, ...items] = args\n\n    if (begin < 0) {\n      begin += length\n    }\n\n    if (arguments.length === 1) {\n      deleteCount = length - begin\n    } else {\n      deleteCount = Math.min(length - begin, deleteCount)\n    }\n\n    const {\n      length: item_length\n    } = items\n\n    // itemsToDelete: -\n    // itemsToAdd: +\n    //        |    dc      |  count   |\n    // =======-------------============\n    // =======++++++============\n    //        | il |\n    const offset = item_length - deleteCount\n    const start = begin + deleteCount\n    const count = length - start\n\n    move_comments(this, this, start, count, offset, true)\n\n    return ret\n  }\n\n  /**\n   * Returns a shallow copy of a portion of an array into a new CommentArray object.\n   * Comments are copied to the appropriate positions in the new array.\n   *\n   * @param {...*} args Arguments passed to Array.prototype.slice\n   * @returns {CommentArray} A new CommentArray containing the extracted\n   *   elements with their comments.\n   */\n  slice (...args) {\n    const {length} = this\n    const array = super.slice(...args)\n    if (!array.length) {\n      return new CommentArray()\n    }\n\n    let [begin, before] = args\n\n    // Ref:\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice\n    if (before === UNDEFINED) {\n      before = length\n    } else if (before < 0) {\n      before += length\n    }\n\n    if (begin < 0) {\n      begin += length\n    } else if (begin === UNDEFINED) {\n      begin = 0\n    }\n\n    move_comments(array, this, begin, before - begin, - begin)\n\n    return array\n  }\n\n  unshift (...items) {\n    const {length} = this\n    const ret = super.unshift(...items)\n    const {\n      length: items_length\n    } = items\n\n    if (items_length > 0) {\n      move_comments(this, this, 0, length, items_length, true)\n    }\n\n    return ret\n  }\n\n  shift () {\n    const ret = super.shift()\n    const {length} = this\n\n    remove_comments(this, 0)\n    move_comments(this, this, 1, length, - 1, true)\n\n    return ret\n  }\n\n  reverse () {\n    super.reverse()\n\n    reverse_comments(this)\n\n    return this\n  }\n\n  pop () {\n    const ret = super.pop()\n\n    // Removes comments\n    remove_comments(this, this.length)\n\n    return ret\n  }\n\n  concat (...items) {\n    let {length} = this\n    const ret = super.concat(...items)\n\n    if (!items.length) {\n      return ret\n    }\n\n    move_comments(ret, this, 0, this.length, 0)\n\n    items.forEach(item => {\n      const prev = length\n      length += Array.isArray(item)\n        ? item.length\n        : 1\n\n      if (!(item instanceof CommentArray)) {\n        return\n      }\n\n      move_comments(ret, item, 0, item.length, prev)\n    })\n\n    return ret\n  }\n\n  sort (...args) {\n    const result = sort(\n      this,\n      // Make sure there is no more than one argument\n      ...args.slice(0, 1)\n    )\n\n    // For example,\n    // if we sort ['b', 'd', 'c', 'a'],\n    // then `result` will be [3, 0, 2, 1], and the array is ['a', 'b', 'c', 'd']\n\n    // First, we swap index 0 (b) and index 3 (a), then the array comments are\n    // ['a.comments', 'd.comments', 'c.comments', 'b.comments']\n    // index 0 is finalized\n    // index 3 is actually mapped to original index 0, we present as 0 -> 3\n\n    // Then swap index 1 (d) and index 0 (-> 3, b)\n    // 1 (index) -> 0 (new index) -> 3 (real_index)\n    // ['d.comments', 'b.comments', 'c.comments', 'd.comments']\n    // index 1 is finalized\n    // index 3 is contains the item of original index 1\n    // - we present as 1 -> 3\n    // - it is ok that we don't remove mapping 0 -> 3\n\n    // Then index 2 should be skipped\n\n    // Then swap index 3 (d) and index 1 (-> 3, b), skipped\n\n    const map = Object.create(null)\n\n    result.forEach((source_index, index) => {\n      if (source_index === index) {\n        return\n      }\n\n      const real_source_index = get_mapped(map, source_index)\n\n      if (real_source_index === index) {\n        return\n      }\n\n      // The item of index `index` gets the final value\n      // delete map[index]\n      map[index] = real_source_index\n\n      swap_comments(this, index, real_source_index)\n    })\n\n    return this\n  }\n}\n\nmodule.exports = {\n  CommentArray\n}\n","// JSON formatting\n\nconst esprima = require('esprima')\n\nconst {\n  CommentArray,\n} = require('./array')\n\nconst {\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER,\n\n  PREFIX_BEFORE_ALL,\n  PREFIX_AFTER_ALL,\n\n  BRACKET_OPEN,\n  BRACKET_CLOSE,\n  CURLY_BRACKET_OPEN,\n  CURLY_BRACKET_CLOSE,\n\n  COLON,\n  COMMA,\n  MINUS,\n  EMPTY,\n\n  UNDEFINED,\n\n  is_object,\n  define,\n  set_raw_string_literal,\n  set_comment_line_breaks,\n  assign_non_prop_comments\n} = require('./common')\n\n/**\n * Tokenize JSON string with comments into an array of tokens.\n *\n * @param {string} code The JSON string with comments to tokenize.\n * @returns {Array} Array of token objects containing type, value, and location\n *   information.\n *\n * @example\n * const tokens = tokenize('{\"a\": 1 // comment}')\n * // Returns array of tokens including comment tokens\n */\nconst tokenize = code => esprima.tokenize(code, {\n  comment: true,\n  loc: true\n})\n\nlet current_code\nconst previous_hosts = []\nlet comments_host = null\nlet unassigned_comments = null\n\nconst previous_props = []\nlet last_prop\n\nlet remove_comments = false\nlet inline = false\nlet tokens = null\nlet last = null\nlet current = null\nlet index\nlet reviver = null\n\nconst clean = () => {\n  current_code = UNDEFINED\n  previous_props.length =\n  previous_hosts.length = 0\n\n  last = null\n  last_prop = UNDEFINED\n}\n\nconst free = () => {\n  clean()\n\n  tokens.length = 0\n\n  unassigned_comments =\n  comments_host =\n  tokens =\n  last =\n  current =\n  reviver = null\n\n  current_code = UNDEFINED\n}\n\nconst symbolFor = prefix => Symbol.for(\n  last_prop !== UNDEFINED\n    ? prefix + COLON + last_prop\n    : prefix\n)\n\nconst transform = (k, {value, context = {}}) => reviver\n  ? reviver(k, value, context)\n  : value\n\nconst unexpected = () => {\n  const error = new SyntaxError(`Unexpected token '${current.value.slice(0, 1)}', \"${current_code}\" is not valid JSON`)\n  Object.assign(error, current.loc.start)\n\n  free()\n\n  throw error\n}\n\nconst unexpected_end = () => {\n  const error = new SyntaxError('Unexpected end of JSON input')\n  Object.assign(error, last\n    ? last.loc.end\n    // Empty string\n    : {\n      line: 1,\n      column: 0\n    })\n\n  free()\n\n  throw error\n}\n\n// Move the reader to the next\nconst next = () => {\n  const new_token = tokens[++ index]\n  inline = current\n    && new_token\n    && current.loc.end.line === new_token.loc.start.line\n    || false\n\n  last = current\n  current = new_token\n}\n\nconst type = () => {\n  if (!current) {\n    unexpected_end()\n  }\n\n  return current.type === 'Punctuator'\n    ? current.value\n    : current.type\n}\n\nconst is = t => type() === t\n\nconst expect = a => {\n  if (!is(a)) {\n    unexpected()\n  }\n}\n\nconst set_comments_host = new_host => {\n  previous_hosts.push(comments_host)\n  comments_host = new_host\n}\n\nconst restore_comments_host = () => {\n  comments_host = previous_hosts.pop()\n}\n\nconst assign_after_comments = () => {\n  if (!unassigned_comments) {\n    return\n  }\n\n  const after_comments = []\n\n  for (const comment of unassigned_comments) {\n    // If the comment is inline, then it is an after-comma comment\n    if (comment.inline) {\n      after_comments.push(comment)\n    // Otherwise, all comments are before:<next-prop> comment\n    } else {\n      break\n    }\n  }\n\n  const {length} = after_comments\n  if (!length) {\n    return\n  }\n\n  if (length === unassigned_comments.length) {\n    // If unassigned_comments are all consumed\n    unassigned_comments = null\n  } else {\n    unassigned_comments.splice(0, length)\n  }\n\n  define(comments_host, symbolFor(PREFIX_AFTER), after_comments)\n}\n\nconst assign_comments = prefix => {\n  if (!unassigned_comments) {\n    return\n  }\n\n  define(comments_host, symbolFor(prefix), unassigned_comments)\n\n  unassigned_comments = null\n}\n\nconst parse_comments = prefix => {\n  const comments = []\n\n  while (\n    current\n    && (\n      is('LineComment')\n      || is('BlockComment')\n    )\n  ) {\n    const comment = {\n      ...current,\n      inline\n    }\n\n    const previous_line = last\n      ? last.loc.end.line\n      : 1\n\n    set_comment_line_breaks(\n      comment,\n      Math.max(0, comment.loc.start.line - previous_line)\n    )\n\n    // delete comment.loc\n    comments.push(comment)\n\n    next()\n  }\n\n  const {length} = comments\n\n  if (length) {\n    const comment = comments[length - 1]\n    const current_line = current\n      ? current.loc.start.line\n      : comment.loc.end.line\n\n    set_comment_line_breaks(\n      comment,\n      undefined,\n      Math.max(0, current_line - comment.loc.end.line)\n    )\n  }\n\n  if (remove_comments) {\n    return\n  }\n\n  if (!length) {\n    return\n  }\n\n  if (prefix) {\n    define(comments_host, symbolFor(prefix), comments)\n    return\n  }\n\n  unassigned_comments = comments\n}\n\nconst set_prop = (prop, push) => {\n  if (push) {\n    previous_props.push(last_prop)\n  }\n\n  last_prop = prop\n}\n\nconst restore_prop = () => {\n  last_prop = previous_props.pop()\n}\n\nconst parse_object = () => {\n  const obj = {}\n  set_comments_host(obj)\n  set_prop(UNDEFINED, true)\n\n  let started = false\n  let name\n\n  parse_comments()\n\n  while (!is(CURLY_BRACKET_CLOSE)) {\n    if (started) {\n      assign_comments(PREFIX_AFTER_VALUE)\n\n      // key-value pair delimiter\n      expect(COMMA)\n      next()\n      parse_comments()\n\n      assign_after_comments()\n\n      // If there is a trailing comma, we might reach the end\n      // ```\n      // {\n      //   \"a\": 1,\n      // }\n      // ```\n      if (is(CURLY_BRACKET_CLOSE)) {\n        break\n      }\n    }\n\n    started = true\n    expect('String')\n    name = JSON.parse(current.value)\n\n    set_prop(name)\n    assign_comments(PREFIX_BEFORE)\n\n    next()\n    parse_comments(PREFIX_AFTER_PROP)\n\n    expect(COLON)\n\n    next()\n    parse_comments(PREFIX_AFTER_COLON)\n\n    obj[name] = transform(name, walk())\n    parse_comments()\n  }\n\n  if (started) {\n    // If there are properties,\n    // then the unassigned comments are after comments\n    assign_comments(PREFIX_AFTER)\n  }\n\n  // bypass }\n  next()\n  last_prop = undefined\n\n  if (!started) {\n    // Otherwise, they are before comments\n    assign_comments(PREFIX_BEFORE)\n  }\n\n  restore_comments_host()\n  restore_prop()\n\n  return obj\n}\n\nconst parse_array = () => {\n  const array = new CommentArray()\n  set_comments_host(array)\n  set_prop(UNDEFINED, true)\n\n  let started = false\n  let i = 0\n\n  parse_comments()\n\n  while (!is(BRACKET_CLOSE)) {\n    if (started) {\n      assign_comments(PREFIX_AFTER_VALUE)\n      expect(COMMA)\n      next()\n      parse_comments()\n\n      assign_after_comments()\n\n      if (is(BRACKET_CLOSE)) {\n        break\n      }\n    }\n\n    started = true\n\n    set_prop(i)\n    assign_comments(PREFIX_BEFORE)\n\n    array[i] = transform(i, walk())\n    i ++\n\n    parse_comments()\n  }\n\n  if (started) {\n    assign_comments(PREFIX_AFTER)\n  }\n\n  next()\n  last_prop = undefined\n\n  if (!started) {\n    assign_comments(PREFIX_BEFORE)\n  }\n\n  restore_comments_host()\n  restore_prop()\n\n  return array\n}\n\nfunction walk () {\n  let tt = type()\n\n  if (tt === CURLY_BRACKET_OPEN) {\n    next()\n    return {\n      value: parse_object()\n    }\n  }\n\n  if (tt === BRACKET_OPEN) {\n    next()\n    return {\n      value: parse_array()\n    }\n  }\n\n  let negative = EMPTY\n\n  // -1\n  if (tt === MINUS) {\n    next()\n    tt = type()\n    negative = MINUS\n  }\n\n  let v\n  let source\n\n  switch (tt) {\n  case 'String':\n    set_raw_string_literal(comments_host, last_prop, current.value)\n    // falls through\n  case 'Boolean':\n  case 'Null':\n  case 'Numeric':\n    v = current.value\n    next()\n\n    source = negative + v\n    return {\n      value: JSON.parse(source),\n      context: {\n        source\n      }\n    }\n  default:\n    // => unexpected token\n    return {}\n  }\n}\n\n/**\n * Converts a JavaScript Object Notation (JSON) string with comments into an\n * object.\n *\n * @param {string} code A valid JSON string with comments.\n * @param {function} [rev] A function that transforms the results. This function\n *   is called for each member of the object. If a member contains nested\n *   objects, the nested objects are transformed before the parent object is.\n * @param {boolean} [no_comments=false] If true, the comments won't be\n *   maintained, which is often used when we want to get a clean object.\n * @returns {*} The JavaScript object corresponding to the given JSON text with\n *   comments preserved as symbol properties.\n *\n * @example\n * const result = parse('{\"a\": 1 // This is a comment}')\n * // result.a === 1\n * // Comments are stored in symbol properties\n *\n * @example\n * // With reviver function\n * const result = parse('{\"a\": \"1\"}', (key, value) => {\n *   return typeof value === 'string' ? parseInt(value) : value\n * })\n *\n * @example\n * // Without comments\n * const clean = parse('{\"a\": 1 // comment}', null, true)\n * // Returns clean object without comment symbols\n */\nconst parse = (code, rev, no_comments) => {\n  // Clean variables in closure\n  clean()\n\n  current_code = code\n  tokens = tokenize(code)\n  reviver = rev\n  remove_comments = no_comments\n\n  if (!tokens.length) {\n    unexpected_end()\n  }\n\n  index = - 1\n  next()\n\n  set_comments_host({})\n\n  parse_comments(PREFIX_BEFORE_ALL)\n\n  const final = walk()\n\n  parse_comments(PREFIX_AFTER_ALL)\n\n  if (current) {\n    unexpected()\n  }\n\n  // reviver\n  let result = transform('', final)\n\n  // We should run reviver before the checks below,\n  // otherwise the comment info will be lost\n  if (!no_comments && result !== null) {\n    if (!is_object(result)) {\n      // 1 -> new Number(1)\n      // true -> new Boolean(1)\n      // \"foo\" -> new String(\"foo\")\n\n      // eslint-disable-next-line no-new-object\n      result = new Object(result)\n    }\n\n    assign_non_prop_comments(result, comments_host)\n  }\n\n  restore_comments_host()\n\n  free()\n\n  return result\n}\n\nmodule.exports = {\n  parse,\n  tokenize\n}\n","const {\n  PREFIX_BEFORE_ALL,\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER,\n  PREFIX_AFTER_ALL,\n\n  BRACKET_OPEN,\n  BRACKET_CLOSE,\n  CURLY_BRACKET_OPEN,\n  CURLY_BRACKET_CLOSE,\n  COLON,\n  COMMA,\n  EMPTY,\n\n  UNDEFINED,\n\n  is_string,\n  is_number,\n  is_object,\n\n  get_raw_string_literal,\n  get_comment_line_breaks_before,\n  get_comment_line_breaks_after,\n\n  is_raw_json\n} = require('./common')\n\n// String constants\nconst SPACE = ' '\nconst LF = '\\n'\nconst STR_NULL = 'null'\n\n// Symbol tags\nconst BEFORE = prop => `${PREFIX_BEFORE}:${prop}`\nconst AFTER_PROP = prop => `${PREFIX_AFTER_PROP}:${prop}`\nconst AFTER_COLON = prop => `${PREFIX_AFTER_COLON}:${prop}`\nconst AFTER_VALUE = prop => `${PREFIX_AFTER_VALUE}:${prop}`\nconst AFTER = prop => `${PREFIX_AFTER}:${prop}`\n\nconst quote = JSON.stringify\nconst comment_stringify = (value, line) => line\n  ? `//${value}`\n  : `/*${value}*/`\nconst repeat_line_breaks = (line_breaks, gap) => (LF + gap).repeat(line_breaks)\nconst read_line_breaks = line_breaks => is_number(line_breaks) && line_breaks >= 0\n  ? line_breaks\n  : null\nconst read_line_breaks_from_loc = (previous_comment, comment) => {\n  if (\n    !previous_comment\n    || !previous_comment.loc\n    || !comment.loc\n  ) {\n    return null\n  }\n\n  const {end} = previous_comment.loc\n  const {start} = comment.loc\n\n  if (\n    !end\n    || !start\n    || !is_number(end.line)\n    || !is_number(start.line)\n  ) {\n    return null\n  }\n\n  const line_breaks = start.line - end.line\n\n  return line_breaks >= 0\n    ? line_breaks\n    : null\n}\nconst count_trailing_line_breaks = (str, gap) => {\n  const unit = LF + gap\n  const {length} = unit\n  let i = str.length\n  let count = 0\n\n  while (i >= length && str.slice(i - length, i) === unit) {\n    i -= length\n    count ++\n  }\n\n  return count\n}\n\n// display_block `boolean` whether the\n//   WHOLE block of comments is always a block group\nconst process_comments = (host, symbol_tag, deeper_gap, display_block) => {\n  const comments = host[Symbol.for(symbol_tag)]\n  if (!comments || !comments.length) {\n    return EMPTY\n  }\n\n  let str = EMPTY\n  let last_comment = null\n\n  comments.forEach((comment, i) => {\n    const {\n      inline,\n      type,\n      value\n    } = comment\n\n    let line_breaks_before = read_line_breaks(\n      get_comment_line_breaks_before(comment)\n    )\n\n    if (line_breaks_before === null) {\n      line_breaks_before = read_line_breaks_from_loc(last_comment, comment)\n    }\n\n    if (line_breaks_before === null) {\n      line_breaks_before = inline\n        ? 0\n        : 1\n    }\n\n    const delimiter = line_breaks_before > 0\n      ? repeat_line_breaks(line_breaks_before, deeper_gap)\n      : inline\n        ? SPACE\n        // The first comment at the very beginning of the source.\n        : i === 0\n          ? EMPTY\n          : LF + deeper_gap\n\n    const is_line_comment = type === 'LineComment'\n\n    str += delimiter + comment_stringify(value, is_line_comment)\n\n    last_comment = comment\n  })\n\n  const default_line_breaks_after = display_block\n    // line comment should always end with a LF\n    || last_comment.type === 'LineComment'\n    ? 1\n    : 0\n\n  const line_breaks_after = Math.max(\n    default_line_breaks_after,\n    read_line_breaks(get_comment_line_breaks_after(last_comment)) || 0\n  )\n\n  return str + repeat_line_breaks(line_breaks_after, deeper_gap)\n}\n\nlet replacer = null\nlet indent = EMPTY\n\nconst clean = () => {\n  replacer = null\n  indent = EMPTY\n}\n\nconst join = (one, two, gap) =>\n  one\n    ? two\n      // Symbol.for('before') and Symbol.for('before:prop')\n      // might both exist if user mannually add comments to the object\n      // and make a mistake.\n      // SO, we are not to only trimRight but trim for both sides\n      ? one + two.trim() + LF + gap\n      : one.trimRight() + repeat_line_breaks(\n        Math.max(1, count_trailing_line_breaks(one, gap)),\n        gap\n      )\n    : two\n      ? two.trimRight() + repeat_line_breaks(\n        Math.max(1, count_trailing_line_breaks(two, gap)),\n        gap\n      )\n      : EMPTY\n\nconst join_content = (inside, value, gap) => {\n  const comment = process_comments(value, PREFIX_BEFORE, gap + indent, true)\n\n  return join(comment, inside, gap)\n}\n\nconst stringify_string = (holder, key, value) => {\n  const raw = get_raw_string_literal(holder, key)\n  if (is_string(raw)) {\n    try {\n      if (JSON.parse(raw) === value) {\n        return raw\n      }\n    } catch (e) {\n      // ignore invalid raw string literals and fallback to native behavior\n    }\n  }\n\n  return quote(value)\n}\n\n// | deeper_gap   |\n// | gap | indent |\n//       [\n//                \"foo\",\n//                \"bar\"\n//       ]\nconst array_stringify = (value, gap) => {\n  const deeper_gap = gap + indent\n\n  const {length} = value\n\n  // From the item to before close\n  let inside = EMPTY\n  let after_comma = EMPTY\n\n  // Never use Array.prototype.forEach,\n  // that we should iterate all items\n  for (let i = 0; i < length; i ++) {\n    if (i !== 0) {\n      inside += COMMA\n    }\n\n    const before = join(\n      after_comma,\n      process_comments(value, BEFORE(i), deeper_gap),\n      deeper_gap\n    )\n\n    inside += before || (LF + deeper_gap)\n\n    // JSON.stringify([undefined])  => [null]\n    inside += stringify(i, value, deeper_gap) || STR_NULL\n\n    inside += process_comments(value, AFTER_VALUE(i), deeper_gap)\n\n    after_comma = process_comments(value, AFTER(i), deeper_gap)\n  }\n\n  inside += join(\n    after_comma,\n    process_comments(value, PREFIX_AFTER, deeper_gap),\n    deeper_gap\n  )\n\n  return BRACKET_OPEN\n   + join_content(inside, value, gap)\n   + BRACKET_CLOSE\n}\n\n// | deeper_gap   |\n// | gap | indent |\n//       {\n//                \"foo\": 1,\n//                \"bar\": 2\n//       }\nconst object_stringify = (value, gap) => {\n  // Due to a specification blunder in ECMAScript, typeof null is 'object',\n  // so watch out for that case.\n  if (!value) {\n    return 'null'\n  }\n\n  const deeper_gap = gap + indent\n\n  // From the first element to before close\n  let inside = EMPTY\n  let after_comma = EMPTY\n  let first = true\n\n  const keys = Array.isArray(replacer)\n    ? replacer\n    : Object.keys(value)\n\n  const iteratee = key => {\n    // Stringified value\n    const sv = stringify(key, value, deeper_gap)\n\n    // If a value is undefined, then the key-value pair should be ignored\n    if (sv === UNDEFINED) {\n      return\n    }\n\n    // The treat ment\n    if (!first) {\n      inside += COMMA\n    }\n\n    first = false\n\n    const before = join(\n      after_comma,\n      process_comments(value, BEFORE(key), deeper_gap),\n      deeper_gap\n    )\n\n    inside += before || (LF + deeper_gap)\n\n    inside += quote(key)\n    + process_comments(value, AFTER_PROP(key), deeper_gap)\n    + COLON\n    + process_comments(value, AFTER_COLON(key), deeper_gap)\n    + SPACE\n    + sv\n    + process_comments(value, AFTER_VALUE(key), deeper_gap)\n\n    after_comma = process_comments(value, AFTER(key), deeper_gap)\n  }\n\n  keys.forEach(iteratee)\n\n  // if (after_comma) {\n  //   inside += COMMA\n  // }\n\n  inside += join(\n    after_comma,\n    process_comments(value, PREFIX_AFTER, deeper_gap),\n    deeper_gap\n  )\n\n  return CURLY_BRACKET_OPEN\n  + join_content(inside, value, gap)\n  + CURLY_BRACKET_CLOSE\n}\n\n// @param {string} key\n// @param {Object} holder\n// @param {function()|Array} replacer\n// @param {string} indent\n// @param {string} gap\nfunction stringify (key, holder, gap) {\n  let value = holder[key]\n\n  // If the value has a toJSON method, call it to obtain a replacement value.\n  if (is_object(value) && typeof value.toJSON === 'function') {\n    value = value.toJSON(key)\n  }\n\n  // If we were called with a replacer function, then call the replacer to\n  // obtain a replacement value.\n  if (typeof replacer === 'function') {\n    value = replacer.call(holder, key, value)\n  }\n\n  switch (typeof value) {\n  case 'string':\n    return stringify_string(holder, key, value)\n\n  case 'number':\n    // JSON numbers must be finite. Encode non-finite numbers as null.\n    return Number.isFinite(value) ? String(value) : STR_NULL\n\n  case 'boolean':\n  case 'null':\n\n    // If the value is a boolean or null, convert it to a string. Note:\n    // typeof null does not produce 'null'. The case is included here in\n    // the remote chance that this gets fixed someday.\n    return String(value)\n\n  // If the type is 'object', we might be dealing with an object or an array or\n  // null.\n  case 'object':\n    if (is_raw_json(value)) {\n      return value.rawJSON\n    }\n\n    return Array.isArray(value)\n      ? array_stringify(value, gap)\n      : object_stringify(value, gap)\n\n  // undefined\n  default:\n    // JSON.stringify(undefined) === undefined\n    // JSON.stringify('foo', () => undefined) === undefined\n  }\n}\n\nconst get_indent = space => typeof space === 'string'\n  // If the space parameter is a string, it will be used as the indent string.\n  ? space\n  : typeof space === 'number'\n    ? SPACE.repeat(space)\n    : EMPTY\n\nconst {toString} = Object.prototype\nconst PRIMITIVE_OBJECT_TYPES = [\n  '[object Number]',\n  '[object String]',\n  '[object Boolean]'\n]\n\nconst is_primitive_object = subject => {\n  if (typeof subject !== 'object') {\n    return false\n  }\n\n  const str = toString.call(subject)\n  return PRIMITIVE_OBJECT_TYPES.includes(str)\n}\n\n/**\n * Converts a JavaScript value to a JavaScript Object Notation (JSON) string\n * with comments preserved.\n *\n * @param {*} value A JavaScript value, usually an object or array, to be\n *   converted.\n * @param {function|Array|null} [replacer_] A function that transforms the\n *   results or an array of strings and numbers that acts as an approved list\n *   for selecting the object properties that will be stringified.\n * @param {string|number} [space] Adds indentation, white space, and line\n *   break characters to the return-value JSON text to make it easier to read.\n * @returns {string} A JSON string representing the given value with comments\n *   preserved.\n *\n * @example\n * const obj = parse('{\"a\": 1 // comment}')\n * stringify(obj, null, 2)\n * // Returns: '{\\n  \"a\": 1 // comment\\n}'\n *\n * @example\n * // With replacer function\n * stringify(obj, (key, value) => typeof value === 'number' ? value * 2 : value)\n *\n * @example\n * // With replacer array\n * stringify(obj, ['a', 'b']) // Only include 'a' and 'b' properties\n */\nmodule.exports = (value, replacer_, space) => {\n  // The stringify method takes a value and an optional replacer, and an optional\n  // space parameter, and returns a JSON text. The replacer can be a function\n  // that can replace values, or an array of strings that will select the keys.\n  // A default replacer method can be provided. Use of the space parameter can\n  // produce text that is more easily readable.\n\n  // If the space parameter is a number, make an indent string containing that\n  // many spaces.\n  const indent_ = get_indent(space)\n\n  if (!indent_) {\n    return JSON.stringify(value, replacer_)\n  }\n\n  // vanilla `JSON.parse` allow invalid replacer\n  if (typeof replacer_ !== 'function' && !Array.isArray(replacer_)) {\n    replacer_ = null\n  }\n\n  replacer = replacer_\n  indent = indent_\n\n  const str = is_primitive_object(value)\n    ? JSON.stringify(value)\n    : stringify('', {'': value}, EMPTY)\n\n  clean()\n\n  return is_object(value)\n    ? process_comments(value, PREFIX_BEFORE_ALL, EMPTY, true).trimLeft()\n      + str\n      + process_comments(value, PREFIX_AFTER_ALL, EMPTY).trimRight()\n    : str\n}\n","const {parse, tokenize} = require('./parse')\nconst stringify = require('./stringify')\nconst {CommentArray} = require('./array')\nconst {\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER,\n\n  PREFIX_BEFORE_ALL,\n  PREFIX_AFTER_ALL,\n\n  assign,\n  moveComments,\n  removeComments\n} = require('./common')\n\nmodule.exports = {\n  PREFIX_BEFORE,\n  PREFIX_AFTER_PROP,\n  PREFIX_AFTER_COLON,\n  PREFIX_AFTER_VALUE,\n  PREFIX_AFTER,\n\n  PREFIX_BEFORE_ALL,\n  PREFIX_AFTER_ALL,\n\n  parse,\n  stringify,\n  tokenize,\n\n  CommentArray,\n  assign,\n  moveComments,\n  removeComments\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import process from 'node:process';\nimport os from 'node:os';\nimport tty from 'node:tty';\n\n// From: https://github.com/sindresorhus/has-flag/blob/main/index.js\n/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) {\nfunction hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n}\n\nconst {env} = process;\n\nlet flagForceColor;\nif (\n\thasFlag('no-color')\n\t|| hasFlag('no-colors')\n\t|| hasFlag('color=false')\n\t|| hasFlag('color=never')\n) {\n\tflagForceColor = 0;\n} else if (\n\thasFlag('color')\n\t|| hasFlag('colors')\n\t|| hasFlag('color=true')\n\t|| hasFlag('color=always')\n) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3,\n\t};\n}\n\nfunction _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m')\n\t\t\t|| hasFlag('color=full')\n\t\t\t|| hasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\t// Check for Azure DevOps pipelines.\n\t// Has to be above the `!streamIsTTY` check.\n\tif ('TF_BUILD' in env && 'AGENT_NAME' in env) {\n\t\treturn 1;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10\n\t\t\t&& Number(osRelease[2]) >= 10_586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14_931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['GITHUB_ACTIONS', 'GITEA_ACTIONS', 'CIRCLECI'].some(key => key in env)) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (['TRAVIS', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-kitty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'xterm-ghostty') {\n\t\treturn 3;\n\t}\n\n\tif (env.TERM === 'wezterm') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app': {\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\t}\n\n\t\t\tcase 'Apple_Terminal': {\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nexport function createSupportsColor(stream, options = {}) {\n\tconst level = _supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options,\n\t});\n\n\treturn translateLevel(level);\n}\n\nconst supportsColor = {\n\tstdout: createSupportsColor({isTTY: tty.isatty(1)}),\n\tstderr: createSupportsColor({isTTY: tty.isatty(2)}),\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\n\t// OSC sequences only: ESC ] ... ST (non-greedy until the first ST)\n\tconst osc = `(?:\\\\u001B\\\\][\\\\s\\\\S]*?${ST})`;\n\n\t// CSI and related: ESC/C1, optional intermediates, optional params (supports ; and :) then final byte\n\tconst csi = '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:\\\\d{1,4}(?:[;:]\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]';\n\n\tconst pattern = `${osc}|${csi}`;\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Fast path: ANSI codes require ESC (7-bit) or CSI (8-bit) introducer\n\tif (!string.includes('\\u001B') && !string.includes('\\u009B')) {\n\t\treturn string;\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","// Generated by scripts/build.js\n\n// prettier-ignore\nconst ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];\n\n// prettier-ignore\nconst fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];\n\n// prettier-ignore\nconst halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];\n\n// prettier-ignore\nconst narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];\n\n// prettier-ignore\nconst wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];\n\nexport {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};\n","/**\nBinary search on a sorted flat array of [start, end] pairs.\n\n@param {number[]} ranges - Flat array of inclusive [start, end] range pairs, e.g. [0, 5, 10, 20].\n@param {number} codePoint - The value to search for.\n@returns {boolean} Whether the value falls within any of the ranges.\n*/\nexport const isInRange = (ranges, codePoint) => {\n\tlet low = 0;\n\tlet high = Math.floor(ranges.length / 2) - 1;\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst i = mid * 2;\n\t\tif (codePoint < ranges[i]) {\n\t\t\thigh = mid - 1;\n\t\t} else if (codePoint > ranges[i + 1]) {\n\t\t\tlow = mid + 1;\n\t\t} else {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {\n\tambiguousRanges,\n\tfullwidthRanges,\n\thalfwidthRanges,\n\tnarrowRanges,\n\twideRanges,\n} from './lookup-data.js';\nimport {isInRange} from './utilities.js';\n\nconst minimumAmbiguousCodePoint = ambiguousRanges[0];\nconst maximumAmbiguousCodePoint = ambiguousRanges.at(-1);\nconst minimumFullWidthCodePoint = fullwidthRanges[0];\nconst maximumFullWidthCodePoint = fullwidthRanges.at(-1);\nconst minimumHalfWidthCodePoint = halfwidthRanges[0];\nconst maximumHalfWidthCodePoint = halfwidthRanges.at(-1);\nconst minimumNarrowCodePoint = narrowRanges[0];\nconst maximumNarrowCodePoint = narrowRanges.at(-1);\nconst minimumWideCodePoint = wideRanges[0];\nconst maximumWideCodePoint = wideRanges.at(-1);\n\nconst commonCjkCodePoint = 0x4E_00;\nconst [wideFastPathStart, wideFastPathEnd] = findWideFastPathRange(wideRanges);\n\n// Use a hot-path range so common `isWide` calls can skip binary search.\n// The range containing U+4E00 covers common CJK ideographs;\n// fallback to the largest range for resilience to Unicode table changes.\nfunction findWideFastPathRange(ranges) {\n\tlet fastPathStart = ranges[0];\n\tlet fastPathEnd = ranges[1];\n\n\tfor (let index = 0; index < ranges.length; index += 2) {\n\t\tconst start = ranges[index];\n\t\tconst end = ranges[index + 1];\n\n\t\tif (\n\t\t\tcommonCjkCodePoint >= start\n\t\t\t&& commonCjkCodePoint <= end\n\t\t) {\n\t\t\treturn [start, end];\n\t\t}\n\n\t\tif ((end - start) > (fastPathEnd - fastPathStart)) {\n\t\t\tfastPathStart = start;\n\t\t\tfastPathEnd = end;\n\t\t}\n\t}\n\n\treturn [fastPathStart, fastPathEnd];\n}\n\nexport const isAmbiguous = codePoint => {\n\tif (\n\t\tcodePoint < minimumAmbiguousCodePoint\n\t\t|| codePoint > maximumAmbiguousCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(ambiguousRanges, codePoint);\n};\n\nexport const isFullWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumFullWidthCodePoint\n\t\t|| codePoint > maximumFullWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(fullwidthRanges, codePoint);\n};\n\nconst isHalfWidth = codePoint => {\n\tif (\n\t\tcodePoint < minimumHalfWidthCodePoint\n\t\t|| codePoint > maximumHalfWidthCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(halfwidthRanges, codePoint);\n};\n\nconst isNarrow = codePoint => {\n\tif (\n\t\tcodePoint < minimumNarrowCodePoint\n\t\t|| codePoint > maximumNarrowCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(narrowRanges, codePoint);\n};\n\nexport const isWide = codePoint => {\n\tif (\n\t\tcodePoint >= wideFastPathStart\n\t\t&& codePoint <= wideFastPathEnd\n\t) {\n\t\treturn true;\n\t}\n\n\tif (\n\t\tcodePoint < minimumWideCodePoint\n\t\t|| codePoint > maximumWideCodePoint\n\t) {\n\t\treturn false;\n\t}\n\n\treturn isInRange(wideRanges, codePoint);\n};\n\nexport function getCategory(codePoint) {\n\tif (isAmbiguous(codePoint)) {\n\t\treturn 'ambiguous';\n\t}\n\n\tif (isFullWidth(codePoint)) {\n\t\treturn 'fullwidth';\n\t}\n\n\tif (isHalfWidth(codePoint)) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (isNarrow(codePoint)) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(codePoint)) {\n\t\treturn 'wide';\n\t}\n\n\treturn 'neutral';\n}\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point\nexport {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';\n","{\n  \"name\": \"dotenv\",\n  \"version\": \"16.6.1\",\n  \"description\": \"Loads environment variables from .env file\",\n  \"main\": \"lib/main.js\",\n  \"types\": \"lib/main.d.ts\",\n  \"exports\": {\n    \".\": {\n      \"types\": \"./lib/main.d.ts\",\n      \"require\": \"./lib/main.js\",\n      \"default\": \"./lib/main.js\"\n    },\n    \"./config\": \"./config.js\",\n    \"./config.js\": \"./config.js\",\n    \"./lib/env-options\": \"./lib/env-options.js\",\n    \"./lib/env-options.js\": \"./lib/env-options.js\",\n    \"./lib/cli-options\": \"./lib/cli-options.js\",\n    \"./lib/cli-options.js\": \"./lib/cli-options.js\",\n    \"./package.json\": \"./package.json\"\n  },\n  \"scripts\": {\n    \"dts-check\": \"tsc --project tests/types/tsconfig.json\",\n    \"lint\": \"standard\",\n    \"pretest\": \"npm run lint && npm run dts-check\",\n    \"test\": \"tap run --allow-empty-coverage --disable-coverage --timeout=60000\",\n    \"test:coverage\": \"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov\",\n    \"prerelease\": \"npm test\",\n    \"release\": \"standard-version\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git://github.com/motdotla/dotenv.git\"\n  },\n  \"homepage\": \"https://github.com/motdotla/dotenv#readme\",\n  \"funding\": \"https://dotenvx.com\",\n  \"keywords\": [\n    \"dotenv\",\n    \"env\",\n    \".env\",\n    \"environment\",\n    \"variables\",\n    \"config\",\n    \"settings\"\n  ],\n  \"readmeFilename\": \"README.md\",\n  \"license\": \"BSD-2-Clause\",\n  \"devDependencies\": {\n    \"@types/node\": \"^18.11.3\",\n    \"decache\": \"^4.6.2\",\n    \"sinon\": \"^14.0.1\",\n    \"standard\": \"^17.0.0\",\n    \"standard-version\": \"^9.5.0\",\n    \"tap\": \"^19.2.0\",\n    \"typescript\": \"^4.8.4\"\n  },\n  \"engines\": {\n    \"node\": \">=12\"\n  },\n  \"browser\": {\n    \"fs\": false\n  }\n}\n","const fs = require('fs')\nconst path = require('path')\nconst os = require('os')\nconst crypto = require('crypto')\nconst packageJson = require('../package.json')\n\nconst version = packageJson.version\n\nconst LINE = /(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg\n\n// Parse src into an Object\nfunction parse (src) {\n  const obj = {}\n\n  // Convert buffer to string\n  let lines = src.toString()\n\n  // Convert line breaks to same format\n  lines = lines.replace(/\\r\\n?/mg, '\\n')\n\n  let match\n  while ((match = LINE.exec(lines)) != null) {\n    const key = match[1]\n\n    // Default undefined or null to empty string\n    let value = (match[2] || '')\n\n    // Remove whitespace\n    value = value.trim()\n\n    // Check if double quoted\n    const maybeQuote = value[0]\n\n    // Remove surrounding quotes\n    value = value.replace(/^(['\"`])([\\s\\S]*)\\1$/mg, '$2')\n\n    // Expand newlines if double quoted\n    if (maybeQuote === '\"') {\n      value = value.replace(/\\\\n/g, '\\n')\n      value = value.replace(/\\\\r/g, '\\r')\n    }\n\n    // Add to object\n    obj[key] = value\n  }\n\n  return obj\n}\n\nfunction _parseVault (options) {\n  options = options || {}\n\n  const vaultPath = _vaultPath(options)\n  options.path = vaultPath // parse .env.vault\n  const result = DotenvModule.configDotenv(options)\n  if (!result.parsed) {\n    const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`)\n    err.code = 'MISSING_DATA'\n    throw err\n  }\n\n  // handle scenario for comma separated keys - for use with key rotation\n  // example: DOTENV_KEY=\"dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=prod,dotenv://:key_7890@dotenvx.com/vault/.env.vault?environment=prod\"\n  const keys = _dotenvKey(options).split(',')\n  const length = keys.length\n\n  let decrypted\n  for (let i = 0; i < length; i++) {\n    try {\n      // Get full key\n      const key = keys[i].trim()\n\n      // Get instructions for decrypt\n      const attrs = _instructions(result, key)\n\n      // Decrypt\n      decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key)\n\n      break\n    } catch (error) {\n      // last key\n      if (i + 1 >= length) {\n        throw error\n      }\n      // try next key\n    }\n  }\n\n  // Parse decrypted .env string\n  return DotenvModule.parse(decrypted)\n}\n\nfunction _warn (message) {\n  console.log(`[dotenv@${version}][WARN] ${message}`)\n}\n\nfunction _debug (message) {\n  console.log(`[dotenv@${version}][DEBUG] ${message}`)\n}\n\nfunction _log (message) {\n  console.log(`[dotenv@${version}] ${message}`)\n}\n\nfunction _dotenvKey (options) {\n  // prioritize developer directly setting options.DOTENV_KEY\n  if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {\n    return options.DOTENV_KEY\n  }\n\n  // secondary infra already contains a DOTENV_KEY environment variable\n  if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {\n    return process.env.DOTENV_KEY\n  }\n\n  // fallback to empty string\n  return ''\n}\n\nfunction _instructions (result, dotenvKey) {\n  // Parse DOTENV_KEY. Format is a URI\n  let uri\n  try {\n    uri = new URL(dotenvKey)\n  } catch (error) {\n    if (error.code === 'ERR_INVALID_URL') {\n      const err = new Error('INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development')\n      err.code = 'INVALID_DOTENV_KEY'\n      throw err\n    }\n\n    throw error\n  }\n\n  // Get decrypt key\n  const key = uri.password\n  if (!key) {\n    const err = new Error('INVALID_DOTENV_KEY: Missing key part')\n    err.code = 'INVALID_DOTENV_KEY'\n    throw err\n  }\n\n  // Get environment\n  const environment = uri.searchParams.get('environment')\n  if (!environment) {\n    const err = new Error('INVALID_DOTENV_KEY: Missing environment part')\n    err.code = 'INVALID_DOTENV_KEY'\n    throw err\n  }\n\n  // Get ciphertext payload\n  const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`\n  const ciphertext = result.parsed[environmentKey] // DOTENV_VAULT_PRODUCTION\n  if (!ciphertext) {\n    const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`)\n    err.code = 'NOT_FOUND_DOTENV_ENVIRONMENT'\n    throw err\n  }\n\n  return { ciphertext, key }\n}\n\nfunction _vaultPath (options) {\n  let possibleVaultPath = null\n\n  if (options && options.path && options.path.length > 0) {\n    if (Array.isArray(options.path)) {\n      for (const filepath of options.path) {\n        if (fs.existsSync(filepath)) {\n          possibleVaultPath = filepath.endsWith('.vault') ? filepath : `${filepath}.vault`\n        }\n      }\n    } else {\n      possibleVaultPath = options.path.endsWith('.vault') ? options.path : `${options.path}.vault`\n    }\n  } else {\n    possibleVaultPath = path.resolve(process.cwd(), '.env.vault')\n  }\n\n  if (fs.existsSync(possibleVaultPath)) {\n    return possibleVaultPath\n  }\n\n  return null\n}\n\nfunction _resolveHome (envPath) {\n  return envPath[0] === '~' ? path.join(os.homedir(), envPath.slice(1)) : envPath\n}\n\nfunction _configVault (options) {\n  const debug = Boolean(options && options.debug)\n  const quiet = options && 'quiet' in options ? options.quiet : true\n\n  if (debug || !quiet) {\n    _log('Loading env from encrypted .env.vault')\n  }\n\n  const parsed = DotenvModule._parseVault(options)\n\n  let processEnv = process.env\n  if (options && options.processEnv != null) {\n    processEnv = options.processEnv\n  }\n\n  DotenvModule.populate(processEnv, parsed, options)\n\n  return { parsed }\n}\n\nfunction configDotenv (options) {\n  const dotenvPath = path.resolve(process.cwd(), '.env')\n  let encoding = 'utf8'\n  const debug = Boolean(options && options.debug)\n  const quiet = options && 'quiet' in options ? options.quiet : true\n\n  if (options && options.encoding) {\n    encoding = options.encoding\n  } else {\n    if (debug) {\n      _debug('No encoding is specified. UTF-8 is used by default')\n    }\n  }\n\n  let optionPaths = [dotenvPath] // default, look for .env\n  if (options && options.path) {\n    if (!Array.isArray(options.path)) {\n      optionPaths = [_resolveHome(options.path)]\n    } else {\n      optionPaths = [] // reset default\n      for (const filepath of options.path) {\n        optionPaths.push(_resolveHome(filepath))\n      }\n    }\n  }\n\n  // Build the parsed data in a temporary object (because we need to return it).  Once we have the final\n  // parsed data, we will combine it with process.env (or options.processEnv if provided).\n  let lastError\n  const parsedAll = {}\n  for (const path of optionPaths) {\n    try {\n      // Specifying an encoding returns a string instead of a buffer\n      const parsed = DotenvModule.parse(fs.readFileSync(path, { encoding }))\n\n      DotenvModule.populate(parsedAll, parsed, options)\n    } catch (e) {\n      if (debug) {\n        _debug(`Failed to load ${path} ${e.message}`)\n      }\n      lastError = e\n    }\n  }\n\n  let processEnv = process.env\n  if (options && options.processEnv != null) {\n    processEnv = options.processEnv\n  }\n\n  DotenvModule.populate(processEnv, parsedAll, options)\n\n  if (debug || !quiet) {\n    const keysCount = Object.keys(parsedAll).length\n    const shortPaths = []\n    for (const filePath of optionPaths) {\n      try {\n        const relative = path.relative(process.cwd(), filePath)\n        shortPaths.push(relative)\n      } catch (e) {\n        if (debug) {\n          _debug(`Failed to load ${filePath} ${e.message}`)\n        }\n        lastError = e\n      }\n    }\n\n    _log(`injecting env (${keysCount}) from ${shortPaths.join(',')}`)\n  }\n\n  if (lastError) {\n    return { parsed: parsedAll, error: lastError }\n  } else {\n    return { parsed: parsedAll }\n  }\n}\n\n// Populates process.env from .env file\nfunction config (options) {\n  // fallback to original dotenv if DOTENV_KEY is not set\n  if (_dotenvKey(options).length === 0) {\n    return DotenvModule.configDotenv(options)\n  }\n\n  const vaultPath = _vaultPath(options)\n\n  // dotenvKey exists but .env.vault file does not exist\n  if (!vaultPath) {\n    _warn(`You set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}. Did you forget to build it?`)\n\n    return DotenvModule.configDotenv(options)\n  }\n\n  return DotenvModule._configVault(options)\n}\n\nfunction decrypt (encrypted, keyStr) {\n  const key = Buffer.from(keyStr.slice(-64), 'hex')\n  let ciphertext = Buffer.from(encrypted, 'base64')\n\n  const nonce = ciphertext.subarray(0, 12)\n  const authTag = ciphertext.subarray(-16)\n  ciphertext = ciphertext.subarray(12, -16)\n\n  try {\n    const aesgcm = crypto.createDecipheriv('aes-256-gcm', key, nonce)\n    aesgcm.setAuthTag(authTag)\n    return `${aesgcm.update(ciphertext)}${aesgcm.final()}`\n  } catch (error) {\n    const isRange = error instanceof RangeError\n    const invalidKeyLength = error.message === 'Invalid key length'\n    const decryptionFailed = error.message === 'Unsupported state or unable to authenticate data'\n\n    if (isRange || invalidKeyLength) {\n      const err = new Error('INVALID_DOTENV_KEY: It must be 64 characters long (or more)')\n      err.code = 'INVALID_DOTENV_KEY'\n      throw err\n    } else if (decryptionFailed) {\n      const err = new Error('DECRYPTION_FAILED: Please check your DOTENV_KEY')\n      err.code = 'DECRYPTION_FAILED'\n      throw err\n    } else {\n      throw error\n    }\n  }\n}\n\n// Populate process.env with parsed values\nfunction populate (processEnv, parsed, options = {}) {\n  const debug = Boolean(options && options.debug)\n  const override = Boolean(options && options.override)\n\n  if (typeof parsed !== 'object') {\n    const err = new Error('OBJECT_REQUIRED: Please check the processEnv argument being passed to populate')\n    err.code = 'OBJECT_REQUIRED'\n    throw err\n  }\n\n  // Set process.env\n  for (const key of Object.keys(parsed)) {\n    if (Object.prototype.hasOwnProperty.call(processEnv, key)) {\n      if (override === true) {\n        processEnv[key] = parsed[key]\n      }\n\n      if (debug) {\n        if (override === true) {\n          _debug(`\"${key}\" is already defined and WAS overwritten`)\n        } else {\n          _debug(`\"${key}\" is already defined and was NOT overwritten`)\n        }\n      }\n    } else {\n      processEnv[key] = parsed[key]\n    }\n  }\n}\n\nconst DotenvModule = {\n  configDotenv,\n  _configVault,\n  _parseVault,\n  config,\n  decrypt,\n  parse,\n  populate\n}\n\nmodule.exports.configDotenv = DotenvModule.configDotenv\nmodule.exports._configVault = DotenvModule._configVault\nmodule.exports._parseVault = DotenvModule._parseVault\nmodule.exports.config = DotenvModule.config\nmodule.exports.decrypt = DotenvModule.decrypt\nmodule.exports.parse = DotenvModule.parse\nmodule.exports.populate = DotenvModule.populate\n\nmodule.exports = DotenvModule\n","let messages = [];\nlet level = 0;\n\nconst debug = (msg, min) => {\n  if (level >= min) {\n    messages.push(msg);\n  }\n};\n\ndebug.WARN = 1;\ndebug.INFO = 2;\ndebug.DEBUG = 3;\n\ndebug.reset = () => {\n  messages = [];\n};\n\ndebug.setDebugLevel = (v) => {\n  level = v;\n};\n\ndebug.warn = (msg) => debug(msg, debug.WARN);\ndebug.info = (msg) => debug(msg, debug.INFO);\ndebug.debug = (msg) => debug(msg, debug.DEBUG);\n\ndebug.debugMessages = () => messages;\n\nmodule.exports = debug;\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","\"use strict\";\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), '  ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","const stringWidth = require('string-width');\n\nfunction codeRegex(capture) {\n  return capture ? /\\u001b\\[((?:\\d*;){0,5}\\d*)m/g : /\\u001b\\[(?:\\d*;){0,5}\\d*m/g;\n}\n\nfunction strlen(str) {\n  let code = codeRegex();\n  let stripped = ('' + str).replace(code, '');\n  let split = stripped.split('\\n');\n  return split.reduce(function (memo, s) {\n    return stringWidth(s) > memo ? stringWidth(s) : memo;\n  }, 0);\n}\n\nfunction repeat(str, times) {\n  return Array(times + 1).join(str);\n}\n\nfunction pad(str, len, pad, dir) {\n  let length = strlen(str);\n  if (len + 1 >= length) {\n    let padlen = len - length;\n    switch (dir) {\n      case 'right': {\n        str = repeat(pad, padlen) + str;\n        break;\n      }\n      case 'center': {\n        let right = Math.ceil(padlen / 2);\n        let left = padlen - right;\n        str = repeat(pad, left) + str + repeat(pad, right);\n        break;\n      }\n      default: {\n        str = str + repeat(pad, padlen);\n        break;\n      }\n    }\n  }\n  return str;\n}\n\nlet codeCache = {};\n\nfunction addToCodeCache(name, on, off) {\n  on = '\\u001b[' + on + 'm';\n  off = '\\u001b[' + off + 'm';\n  codeCache[on] = { set: name, to: true };\n  codeCache[off] = { set: name, to: false };\n  codeCache[name] = { on: on, off: off };\n}\n\n//https://github.com/Marak/colors.js/blob/master/lib/styles.js\naddToCodeCache('bold', 1, 22);\naddToCodeCache('italics', 3, 23);\naddToCodeCache('underline', 4, 24);\naddToCodeCache('inverse', 7, 27);\naddToCodeCache('strikethrough', 9, 29);\n\nfunction updateState(state, controlChars) {\n  let controlCode = controlChars[1] ? parseInt(controlChars[1].split(';')[0]) : 0;\n  if ((controlCode >= 30 && controlCode <= 39) || (controlCode >= 90 && controlCode <= 97)) {\n    state.lastForegroundAdded = controlChars[0];\n    return;\n  }\n  if ((controlCode >= 40 && controlCode <= 49) || (controlCode >= 100 && controlCode <= 107)) {\n    state.lastBackgroundAdded = controlChars[0];\n    return;\n  }\n  if (controlCode === 0) {\n    for (let i in state) {\n      /* istanbul ignore else */\n      if (Object.prototype.hasOwnProperty.call(state, i)) {\n        delete state[i];\n      }\n    }\n    return;\n  }\n  let info = codeCache[controlChars[0]];\n  if (info) {\n    state[info.set] = info.to;\n  }\n}\n\nfunction readState(line) {\n  let code = codeRegex(true);\n  let controlChars = code.exec(line);\n  let state = {};\n  while (controlChars !== null) {\n    updateState(state, controlChars);\n    controlChars = code.exec(line);\n  }\n  return state;\n}\n\nfunction unwindState(state, ret) {\n  let lastBackgroundAdded = state.lastBackgroundAdded;\n  let lastForegroundAdded = state.lastForegroundAdded;\n\n  delete state.lastBackgroundAdded;\n  delete state.lastForegroundAdded;\n\n  Object.keys(state).forEach(function (key) {\n    if (state[key]) {\n      ret += codeCache[key].off;\n    }\n  });\n\n  if (lastBackgroundAdded && lastBackgroundAdded != '\\u001b[49m') {\n    ret += '\\u001b[49m';\n  }\n  if (lastForegroundAdded && lastForegroundAdded != '\\u001b[39m') {\n    ret += '\\u001b[39m';\n  }\n\n  return ret;\n}\n\nfunction rewindState(state, ret) {\n  let lastBackgroundAdded = state.lastBackgroundAdded;\n  let lastForegroundAdded = state.lastForegroundAdded;\n\n  delete state.lastBackgroundAdded;\n  delete state.lastForegroundAdded;\n\n  Object.keys(state).forEach(function (key) {\n    if (state[key]) {\n      ret = codeCache[key].on + ret;\n    }\n  });\n\n  if (lastBackgroundAdded && lastBackgroundAdded != '\\u001b[49m') {\n    ret = lastBackgroundAdded + ret;\n  }\n  if (lastForegroundAdded && lastForegroundAdded != '\\u001b[39m') {\n    ret = lastForegroundAdded + ret;\n  }\n\n  return ret;\n}\n\nfunction truncateWidth(str, desiredLength) {\n  if (str.length === strlen(str)) {\n    return str.substr(0, desiredLength);\n  }\n\n  while (strlen(str) > desiredLength) {\n    str = str.slice(0, -1);\n  }\n\n  return str;\n}\n\nfunction truncateWidthWithAnsi(str, desiredLength) {\n  let code = codeRegex(true);\n  let split = str.split(codeRegex());\n  let splitIndex = 0;\n  let retLen = 0;\n  let ret = '';\n  let myArray;\n  let state = {};\n\n  while (retLen < desiredLength) {\n    myArray = code.exec(str);\n    let toAdd = split[splitIndex];\n    splitIndex++;\n    if (retLen + strlen(toAdd) > desiredLength) {\n      toAdd = truncateWidth(toAdd, desiredLength - retLen);\n    }\n    ret += toAdd;\n    retLen += strlen(toAdd);\n\n    if (retLen < desiredLength) {\n      if (!myArray) {\n        break;\n      } // full-width chars may cause a whitespace which cannot be filled\n      ret += myArray[0];\n      updateState(state, myArray);\n    }\n  }\n\n  return unwindState(state, ret);\n}\n\nfunction truncate(str, desiredLength, truncateChar) {\n  truncateChar = truncateChar || '…';\n  let lengthOfStr = strlen(str);\n  if (lengthOfStr <= desiredLength) {\n    return str;\n  }\n  desiredLength -= strlen(truncateChar);\n\n  let ret = truncateWidthWithAnsi(str, desiredLength);\n\n  ret += truncateChar;\n\n  const hrefTag = '\\x1B]8;;\\x07';\n\n  if (str.includes(hrefTag) && !ret.includes(hrefTag)) {\n    ret += hrefTag;\n  }\n\n  return ret;\n}\n\nfunction defaultOptions() {\n  return {\n    chars: {\n      top: '─',\n      'top-mid': '┬',\n      'top-left': '┌',\n      'top-right': '┐',\n      bottom: '─',\n      'bottom-mid': '┴',\n      'bottom-left': '└',\n      'bottom-right': '┘',\n      left: '│',\n      'left-mid': '├',\n      mid: '─',\n      'mid-mid': '┼',\n      right: '│',\n      'right-mid': '┤',\n      middle: '│',\n    },\n    truncate: '…',\n    colWidths: [],\n    rowHeights: [],\n    colAligns: [],\n    rowAligns: [],\n    style: {\n      'padding-left': 1,\n      'padding-right': 1,\n      head: ['red'],\n      border: ['grey'],\n      compact: false,\n    },\n    head: [],\n  };\n}\n\nfunction mergeOptions(options, defaults) {\n  options = options || {};\n  defaults = defaults || defaultOptions();\n  let ret = Object.assign({}, defaults, options);\n  ret.chars = Object.assign({}, defaults.chars, options.chars);\n  ret.style = Object.assign({}, defaults.style, options.style);\n  return ret;\n}\n\n// Wrap on word boundary\nfunction wordWrap(maxLength, input) {\n  let lines = [];\n  let split = input.split(/(\\s+)/g);\n  let line = [];\n  let lineLength = 0;\n  let whitespace;\n  for (let i = 0; i < split.length; i += 2) {\n    let word = split[i];\n    let newLength = lineLength + strlen(word);\n    if (lineLength > 0 && whitespace) {\n      newLength += whitespace.length;\n    }\n    if (newLength > maxLength) {\n      if (lineLength !== 0) {\n        lines.push(line.join(''));\n      }\n      line = [word];\n      lineLength = strlen(word);\n    } else {\n      line.push(whitespace || '', word);\n      lineLength = newLength;\n    }\n    whitespace = split[i + 1];\n  }\n  if (lineLength) {\n    lines.push(line.join(''));\n  }\n  return lines;\n}\n\n// Wrap text (ignoring word boundaries)\nfunction textWrap(maxLength, input) {\n  let lines = [];\n  let line = '';\n  function pushLine(str, ws) {\n    if (line.length && ws) line += ws;\n    line += str;\n    while (line.length > maxLength) {\n      lines.push(line.slice(0, maxLength));\n      line = line.slice(maxLength);\n    }\n  }\n  let split = input.split(/(\\s+)/g);\n  for (let i = 0; i < split.length; i += 2) {\n    pushLine(split[i], i && split[i - 1]);\n  }\n  if (line.length) lines.push(line);\n  return lines;\n}\n\nfunction multiLineWordWrap(maxLength, input, wrapOnWordBoundary = true) {\n  let output = [];\n  input = input.split('\\n');\n  const handler = wrapOnWordBoundary ? wordWrap : textWrap;\n  for (let i = 0; i < input.length; i++) {\n    output.push.apply(output, handler(maxLength, input[i]));\n  }\n  return output;\n}\n\nfunction colorizeLines(input) {\n  let state = {};\n  let output = [];\n  for (let i = 0; i < input.length; i++) {\n    let line = rewindState(state, input[i]);\n    state = readState(line);\n    let temp = Object.assign({}, state);\n    output.push(unwindState(temp, line));\n  }\n  return output;\n}\n\n/**\n * Credit: Matheus Sampaio https://github.com/matheussampaio\n */\nfunction hyperlink(url, text) {\n  const OSC = '\\u001B]';\n  const BEL = '\\u0007';\n  const SEP = ';';\n\n  return [OSC, '8', SEP, SEP, url || text, BEL, text, OSC, '8', SEP, SEP, BEL].join('');\n}\n\nmodule.exports = {\n  strlen: strlen,\n  repeat: repeat,\n  pad: pad,\n  truncate: truncate,\n  mergeOptions: mergeOptions,\n  wordWrap: multiLineWordWrap,\n  colorizeLines: colorizeLines,\n  hyperlink,\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar styles = {};\nmodule['exports'] = styles;\n\nvar codes = {\n  reset: [0, 0],\n\n  bold: [1, 22],\n  dim: [2, 22],\n  italic: [3, 23],\n  underline: [4, 24],\n  inverse: [7, 27],\n  hidden: [8, 28],\n  strikethrough: [9, 29],\n\n  black: [30, 39],\n  red: [31, 39],\n  green: [32, 39],\n  yellow: [33, 39],\n  blue: [34, 39],\n  magenta: [35, 39],\n  cyan: [36, 39],\n  white: [37, 39],\n  gray: [90, 39],\n  grey: [90, 39],\n\n  brightRed: [91, 39],\n  brightGreen: [92, 39],\n  brightYellow: [93, 39],\n  brightBlue: [94, 39],\n  brightMagenta: [95, 39],\n  brightCyan: [96, 39],\n  brightWhite: [97, 39],\n\n  bgBlack: [40, 49],\n  bgRed: [41, 49],\n  bgGreen: [42, 49],\n  bgYellow: [43, 49],\n  bgBlue: [44, 49],\n  bgMagenta: [45, 49],\n  bgCyan: [46, 49],\n  bgWhite: [47, 49],\n  bgGray: [100, 49],\n  bgGrey: [100, 49],\n\n  bgBrightRed: [101, 49],\n  bgBrightGreen: [102, 49],\n  bgBrightYellow: [103, 49],\n  bgBrightBlue: [104, 49],\n  bgBrightMagenta: [105, 49],\n  bgBrightCyan: [106, 49],\n  bgBrightWhite: [107, 49],\n\n  // legacy styles for colors pre v1.0.0\n  blackBG: [40, 49],\n  redBG: [41, 49],\n  greenBG: [42, 49],\n  yellowBG: [43, 49],\n  blueBG: [44, 49],\n  magentaBG: [45, 49],\n  cyanBG: [46, 49],\n  whiteBG: [47, 49],\n\n};\n\nObject.keys(codes).forEach(function(key) {\n  var val = codes[key];\n  var style = styles[key] = [];\n  style.open = '\\u001b[' + val[0] + 'm';\n  style.close = '\\u001b[' + val[1] + 'm';\n});\n","/*\nMIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n'use strict';\n\nmodule.exports = function(flag, argv) {\n  argv = argv || process.argv;\n\n  var terminatorPos = argv.indexOf('--');\n  var prefix = /^-{1,2}/.test(flag) ? '' : '--';\n  var pos = argv.indexOf(prefix + flag);\n\n  return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n","/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\n'use strict';\n\nvar os = require('os');\nvar hasFlag = require('./has-flag.js');\n\nvar env = process.env;\n\nvar forceColor = void 0;\nif (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {\n  forceColor = false;\n} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')\n           || hasFlag('color=always')) {\n  forceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n  forceColor = env.FORCE_COLOR.length === 0\n    || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n  if (level === 0) {\n    return false;\n  }\n\n  return {\n    level: level,\n    hasBasic: true,\n    has256: level >= 2,\n    has16m: level >= 3,\n  };\n}\n\nfunction supportsColor(stream) {\n  if (forceColor === false) {\n    return 0;\n  }\n\n  if (hasFlag('color=16m') || hasFlag('color=full')\n      || hasFlag('color=truecolor')) {\n    return 3;\n  }\n\n  if (hasFlag('color=256')) {\n    return 2;\n  }\n\n  if (stream && !stream.isTTY && forceColor !== true) {\n    return 0;\n  }\n\n  var min = forceColor ? 1 : 0;\n\n  if (process.platform === 'win32') {\n    // Node.js 7.5.0 is the first version of Node.js to include a patch to\n    // libuv that enables 256 color output on Windows. Anything earlier and it\n    // won't work. However, here we target Node.js 8 at minimum as it is an LTS\n    // release, and Node.js 7 is not. Windows 10 build 10586 is the first\n    // Windows release that supports 256 colors. Windows 10 build 14931 is the\n    // first release that supports 16m/TrueColor.\n    var osRelease = os.release().split('.');\n    if (Number(process.versions.node.split('.')[0]) >= 8\n        && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {\n      return Number(osRelease[2]) >= 14931 ? 3 : 2;\n    }\n\n    return 1;\n  }\n\n  if ('CI' in env) {\n    if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {\n      return sign in env;\n    }) || env.CI_NAME === 'codeship') {\n      return 1;\n    }\n\n    return min;\n  }\n\n  if ('TEAMCITY_VERSION' in env) {\n    return (/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0\n    );\n  }\n\n  if ('TERM_PROGRAM' in env) {\n    var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n    switch (env.TERM_PROGRAM) {\n      case 'iTerm.app':\n        return version >= 3 ? 3 : 2;\n      case 'Hyper':\n        return 3;\n      case 'Apple_Terminal':\n        return 2;\n      // No default\n    }\n  }\n\n  if (/-256(color)?$/i.test(env.TERM)) {\n    return 2;\n  }\n\n  if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n    return 1;\n  }\n\n  if ('COLORTERM' in env) {\n    return 1;\n  }\n\n  if (env.TERM === 'dumb') {\n    return min;\n  }\n\n  return min;\n}\n\nfunction getSupportLevel(stream) {\n  var level = supportsColor(stream);\n  return translateLevel(level);\n}\n\nmodule.exports = {\n  supportsColor: getSupportLevel,\n  stdout: getSupportLevel(process.stdout),\n  stderr: getSupportLevel(process.stderr),\n};\n","module['exports'] = function runTheTrap(text, options) {\n  var result = '';\n  text = text || 'Run the trap, drop the bass';\n  text = text.split('');\n  var trap = {\n    a: ['\\u0040', '\\u0104', '\\u023a', '\\u0245', '\\u0394', '\\u039b', '\\u0414'],\n    b: ['\\u00df', '\\u0181', '\\u0243', '\\u026e', '\\u03b2', '\\u0e3f'],\n    c: ['\\u00a9', '\\u023b', '\\u03fe'],\n    d: ['\\u00d0', '\\u018a', '\\u0500', '\\u0501', '\\u0502', '\\u0503'],\n    e: ['\\u00cb', '\\u0115', '\\u018e', '\\u0258', '\\u03a3', '\\u03be', '\\u04bc',\n      '\\u0a6c'],\n    f: ['\\u04fa'],\n    g: ['\\u0262'],\n    h: ['\\u0126', '\\u0195', '\\u04a2', '\\u04ba', '\\u04c7', '\\u050a'],\n    i: ['\\u0f0f'],\n    j: ['\\u0134'],\n    k: ['\\u0138', '\\u04a0', '\\u04c3', '\\u051e'],\n    l: ['\\u0139'],\n    m: ['\\u028d', '\\u04cd', '\\u04ce', '\\u0520', '\\u0521', '\\u0d69'],\n    n: ['\\u00d1', '\\u014b', '\\u019d', '\\u0376', '\\u03a0', '\\u048a'],\n    o: ['\\u00d8', '\\u00f5', '\\u00f8', '\\u01fe', '\\u0298', '\\u047a', '\\u05dd',\n      '\\u06dd', '\\u0e4f'],\n    p: ['\\u01f7', '\\u048e'],\n    q: ['\\u09cd'],\n    r: ['\\u00ae', '\\u01a6', '\\u0210', '\\u024c', '\\u0280', '\\u042f'],\n    s: ['\\u00a7', '\\u03de', '\\u03df', '\\u03e8'],\n    t: ['\\u0141', '\\u0166', '\\u0373'],\n    u: ['\\u01b1', '\\u054d'],\n    v: ['\\u05d8'],\n    w: ['\\u0428', '\\u0460', '\\u047c', '\\u0d70'],\n    x: ['\\u04b2', '\\u04fe', '\\u04fc', '\\u04fd'],\n    y: ['\\u00a5', '\\u04b0', '\\u04cb'],\n    z: ['\\u01b5', '\\u0240'],\n  };\n  text.forEach(function(c) {\n    c = c.toLowerCase();\n    var chars = trap[c] || [' '];\n    var rand = Math.floor(Math.random() * chars.length);\n    if (typeof trap[c] !== 'undefined') {\n      result += trap[c][rand];\n    } else {\n      result += c;\n    }\n  });\n  return result;\n};\n","// please no\nmodule['exports'] = function zalgo(text, options) {\n  text = text || '   he is here   ';\n  var soul = {\n    'up': [\n      '̍', '̎', '̄', '̅',\n      '̿', '̑', '̆', '̐',\n      '͒', '͗', '͑', '̇',\n      '̈', '̊', '͂', '̓',\n      '̈', '͊', '͋', '͌',\n      '̃', '̂', '̌', '͐',\n      '̀', '́', '̋', '̏',\n      '̒', '̓', '̔', '̽',\n      '̉', 'ͣ', 'ͤ', 'ͥ',\n      'ͦ', 'ͧ', 'ͨ', 'ͩ',\n      'ͪ', 'ͫ', 'ͬ', 'ͭ',\n      'ͮ', 'ͯ', '̾', '͛',\n      '͆', '̚',\n    ],\n    'down': [\n      '̖', '̗', '̘', '̙',\n      '̜', '̝', '̞', '̟',\n      '̠', '̤', '̥', '̦',\n      '̩', '̪', '̫', '̬',\n      '̭', '̮', '̯', '̰',\n      '̱', '̲', '̳', '̹',\n      '̺', '̻', '̼', 'ͅ',\n      '͇', '͈', '͉', '͍',\n      '͎', '͓', '͔', '͕',\n      '͖', '͙', '͚', '̣',\n    ],\n    'mid': [\n      '̕', '̛', '̀', '́',\n      '͘', '̡', '̢', '̧',\n      '̨', '̴', '̵', '̶',\n      '͜', '͝', '͞',\n      '͟', '͠', '͢', '̸',\n      '̷', '͡', ' ҉',\n    ],\n  };\n  var all = [].concat(soul.up, soul.down, soul.mid);\n\n  function randomNumber(range) {\n    var r = Math.floor(Math.random() * range);\n    return r;\n  }\n\n  function isChar(character) {\n    var bool = false;\n    all.filter(function(i) {\n      bool = (i === character);\n    });\n    return bool;\n  }\n\n\n  function heComes(text, options) {\n    var result = '';\n    var counts;\n    var l;\n    options = options || {};\n    options['up'] =\n      typeof options['up'] !== 'undefined' ? options['up'] : true;\n    options['mid'] =\n      typeof options['mid'] !== 'undefined' ? options['mid'] : true;\n    options['down'] =\n      typeof options['down'] !== 'undefined' ? options['down'] : true;\n    options['size'] =\n      typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';\n    text = text.split('');\n    for (l in text) {\n      if (isChar(l)) {\n        continue;\n      }\n      result = result + text[l];\n      counts = {'up': 0, 'down': 0, 'mid': 0};\n      switch (options.size) {\n        case 'mini':\n          counts.up = randomNumber(8);\n          counts.mid = randomNumber(2);\n          counts.down = randomNumber(8);\n          break;\n        case 'maxi':\n          counts.up = randomNumber(16) + 3;\n          counts.mid = randomNumber(4) + 1;\n          counts.down = randomNumber(64) + 3;\n          break;\n        default:\n          counts.up = randomNumber(8) + 1;\n          counts.mid = randomNumber(6) / 2;\n          counts.down = randomNumber(8) + 1;\n          break;\n      }\n\n      var arr = ['up', 'mid', 'down'];\n      for (var d in arr) {\n        var index = arr[d];\n        for (var i = 0; i <= counts[index]; i++) {\n          if (options[index]) {\n            result = result + soul[index][randomNumber(soul[index].length)];\n          }\n        }\n      }\n    }\n    return result;\n  }\n  // don't summon him\n  return heComes(text, options);\n};\n\n","module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    if (letter === ' ') return letter;\n    switch (i%3) {\n      case 0: return colors.red(letter);\n      case 1: return colors.white(letter);\n      case 2: return colors.blue(letter);\n    }\n  };\n};\n","module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    return i % 2 === 0 ? letter : colors.inverse(letter);\n  };\n};\n","module['exports'] = function(colors) {\n  // RoY G BiV\n  var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];\n  return function(letter, i, exploded) {\n    if (letter === ' ') {\n      return letter;\n    } else {\n      return colors[rainbowColors[i++ % rainbowColors.length]](letter);\n    }\n  };\n};\n\n","module['exports'] = function(colors) {\n  var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',\n    'blue', 'white', 'cyan', 'magenta', 'brightYellow', 'brightRed',\n    'brightGreen', 'brightBlue', 'brightWhite', 'brightCyan', 'brightMagenta'];\n  return function(letter, i, exploded) {\n    return letter === ' ' ? letter :\n      colors[\n          available[Math.round(Math.random() * (available.length - 2))]\n      ](letter);\n  };\n};\n","/*\n\nThe MIT License (MIT)\n\nOriginal Library\n  - Copyright (c) Marak Squires\n\nAdditional functionality\n - Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar colors = {};\nmodule['exports'] = colors;\n\ncolors.themes = {};\n\nvar util = require('util');\nvar ansiStyles = colors.styles = require('./styles');\nvar defineProps = Object.defineProperties;\nvar newLineRegex = new RegExp(/[\\r\\n]+/g);\n\ncolors.supportsColor = require('./system/supports-colors').supportsColor;\n\nif (typeof colors.enabled === 'undefined') {\n  colors.enabled = colors.supportsColor() !== false;\n}\n\ncolors.enable = function() {\n  colors.enabled = true;\n};\n\ncolors.disable = function() {\n  colors.enabled = false;\n};\n\ncolors.stripColors = colors.strip = function(str) {\n  return ('' + str).replace(/\\x1B\\[\\d+m/g, '');\n};\n\n// eslint-disable-next-line no-unused-vars\nvar stylize = colors.stylize = function stylize(str, style) {\n  if (!colors.enabled) {\n    return str+'';\n  }\n\n  var styleMap = ansiStyles[style];\n\n  // Stylize should work for non-ANSI styles, too\n  if (!styleMap && style in colors) {\n    // Style maps like trap operate as functions on strings;\n    // they don't have properties like open or close.\n    return colors[style](str);\n  }\n\n  return styleMap.open + str + styleMap.close;\n};\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nvar escapeStringRegexp = function(str) {\n  if (typeof str !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n  return str.replace(matchOperatorsRe, '\\\\$&');\n};\n\nfunction build(_styles) {\n  var builder = function builder() {\n    return applyStyle.apply(builder, arguments);\n  };\n  builder._styles = _styles;\n  // __proto__ is used because we must return a function, but there is\n  // no way to create a function with a different prototype.\n  builder.__proto__ = proto;\n  return builder;\n}\n\nvar styles = (function() {\n  var ret = {};\n  ansiStyles.grey = ansiStyles.gray;\n  Object.keys(ansiStyles).forEach(function(key) {\n    ansiStyles[key].closeRe =\n      new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n    ret[key] = {\n      get: function() {\n        return build(this._styles.concat(key));\n      },\n    };\n  });\n  return ret;\n})();\n\nvar proto = defineProps(function colors() {}, styles);\n\nfunction applyStyle() {\n  var args = Array.prototype.slice.call(arguments);\n\n  var str = args.map(function(arg) {\n    // Use weak equality check so we can colorize null/undefined in safe mode\n    if (arg != null && arg.constructor === String) {\n      return arg;\n    } else {\n      return util.inspect(arg);\n    }\n  }).join(' ');\n\n  if (!colors.enabled || !str) {\n    return str;\n  }\n\n  var newLinesPresent = str.indexOf('\\n') != -1;\n\n  var nestedStyles = this._styles;\n\n  var i = nestedStyles.length;\n  while (i--) {\n    var code = ansiStyles[nestedStyles[i]];\n    str = code.open + str.replace(code.closeRe, code.open) + code.close;\n    if (newLinesPresent) {\n      str = str.replace(newLineRegex, function(match) {\n        return code.close + match + code.open;\n      });\n    }\n  }\n\n  return str;\n}\n\ncolors.setTheme = function(theme) {\n  if (typeof theme === 'string') {\n    console.log('colors.setTheme now only accepts an object, not a string.  ' +\n      'If you are trying to set a theme from a file, it is now your (the ' +\n      'caller\\'s) responsibility to require the file.  The old syntax ' +\n      'looked like colors.setTheme(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'); The new syntax looks like '+\n      'colors.setTheme(require(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'));');\n    return;\n  }\n  for (var style in theme) {\n    (function(style) {\n      colors[style] = function(str) {\n        if (typeof theme[style] === 'object') {\n          var out = str;\n          for (var i in theme[style]) {\n            out = colors[theme[style][i]](out);\n          }\n          return out;\n        }\n        return colors[theme[style]](str);\n      };\n    })(style);\n  }\n};\n\nfunction init() {\n  var ret = {};\n  Object.keys(styles).forEach(function(name) {\n    ret[name] = {\n      get: function() {\n        return build([name]);\n      },\n    };\n  });\n  return ret;\n}\n\nvar sequencer = function sequencer(map, str) {\n  var exploded = str.split('');\n  exploded = exploded.map(map);\n  return exploded.join('');\n};\n\n// custom formatter methods\ncolors.trap = require('./custom/trap');\ncolors.zalgo = require('./custom/zalgo');\n\n// maps\ncolors.maps = {};\ncolors.maps.america = require('./maps/america')(colors);\ncolors.maps.zebra = require('./maps/zebra')(colors);\ncolors.maps.rainbow = require('./maps/rainbow')(colors);\ncolors.maps.random = require('./maps/random')(colors);\n\nfor (var map in colors.maps) {\n  (function(map) {\n    colors[map] = function(str) {\n      return sequencer(colors.maps[map], str);\n    };\n  })(map);\n}\n\ndefineProps(colors, init());\n","//\n// Remark: Requiring this file will use the \"safe\" colors API,\n// which will not touch String.prototype.\n//\n//   var colors = require('colors/safe');\n//   colors.red(\"foo\")\n//\n//\nvar colors = require('./lib/colors');\nmodule['exports'] = colors;\n","const { info, debug } = require('./debug');\nconst utils = require('./utils');\n\nclass Cell {\n  /**\n   * A representation of a cell within the table.\n   * Implementations must have `init` and `draw` methods,\n   * as well as `colSpan`, `rowSpan`, `desiredHeight` and `desiredWidth` properties.\n   * @param options\n   * @constructor\n   */\n  constructor(options) {\n    this.setOptions(options);\n\n    /**\n     * Each cell will have it's `x` and `y` values set by the `layout-manager` prior to\n     * `init` being called;\n     * @type {Number}\n     */\n    this.x = null;\n    this.y = null;\n  }\n\n  setOptions(options) {\n    if (['boolean', 'number', 'bigint', 'string'].indexOf(typeof options) !== -1) {\n      options = { content: '' + options };\n    }\n    options = options || {};\n    this.options = options;\n    let content = options.content;\n    if (['boolean', 'number', 'bigint', 'string'].indexOf(typeof content) !== -1) {\n      this.content = String(content);\n    } else if (!content) {\n      this.content = this.options.href || '';\n    } else {\n      throw new Error('Content needs to be a primitive, got: ' + typeof content);\n    }\n    this.colSpan = options.colSpan || 1;\n    this.rowSpan = options.rowSpan || 1;\n    if (this.options.href) {\n      Object.defineProperty(this, 'href', {\n        get() {\n          return this.options.href;\n        },\n      });\n    }\n  }\n\n  mergeTableOptions(tableOptions, cells) {\n    this.cells = cells;\n\n    let optionsChars = this.options.chars || {};\n    let tableChars = tableOptions.chars;\n    let chars = (this.chars = {});\n    CHAR_NAMES.forEach(function (name) {\n      setOption(optionsChars, tableChars, name, chars);\n    });\n\n    this.truncate = this.options.truncate || tableOptions.truncate;\n\n    let style = (this.options.style = this.options.style || {});\n    let tableStyle = tableOptions.style;\n    setOption(style, tableStyle, 'padding-left', this);\n    setOption(style, tableStyle, 'padding-right', this);\n    this.head = style.head || tableStyle.head;\n    this.border = style.border || tableStyle.border;\n\n    this.fixedWidth = tableOptions.colWidths[this.x];\n    this.lines = this.computeLines(tableOptions);\n\n    this.desiredWidth = utils.strlen(this.content) + this.paddingLeft + this.paddingRight;\n    this.desiredHeight = this.lines.length;\n  }\n\n  computeLines(tableOptions) {\n    const tableWordWrap = tableOptions.wordWrap || tableOptions.textWrap;\n    const { wordWrap = tableWordWrap } = this.options;\n    if (this.fixedWidth && wordWrap) {\n      this.fixedWidth -= this.paddingLeft + this.paddingRight;\n      if (this.colSpan) {\n        let i = 1;\n        while (i < this.colSpan) {\n          this.fixedWidth += tableOptions.colWidths[this.x + i];\n          i++;\n        }\n      }\n      const { wrapOnWordBoundary: tableWrapOnWordBoundary = true } = tableOptions;\n      const { wrapOnWordBoundary = tableWrapOnWordBoundary } = this.options;\n      return this.wrapLines(utils.wordWrap(this.fixedWidth, this.content, wrapOnWordBoundary));\n    }\n    return this.wrapLines(this.content.split('\\n'));\n  }\n\n  wrapLines(computedLines) {\n    const lines = utils.colorizeLines(computedLines);\n    if (this.href) {\n      return lines.map((line) => utils.hyperlink(this.href, line));\n    }\n    return lines;\n  }\n\n  /**\n   * Initializes the Cells data structure.\n   *\n   * @param tableOptions - A fully populated set of tableOptions.\n   * In addition to the standard default values, tableOptions must have fully populated the\n   * `colWidths` and `rowWidths` arrays. Those arrays must have lengths equal to the number\n   * of columns or rows (respectively) in this table, and each array item must be a Number.\n   *\n   */\n  init(tableOptions) {\n    let x = this.x;\n    let y = this.y;\n    this.widths = tableOptions.colWidths.slice(x, x + this.colSpan);\n    this.heights = tableOptions.rowHeights.slice(y, y + this.rowSpan);\n    this.width = this.widths.reduce(sumPlusOne, -1);\n    this.height = this.heights.reduce(sumPlusOne, -1);\n\n    this.hAlign = this.options.hAlign || tableOptions.colAligns[x];\n    this.vAlign = this.options.vAlign || tableOptions.rowAligns[y];\n\n    this.drawRight = x + this.colSpan == tableOptions.colWidths.length;\n  }\n\n  /**\n   * Draws the given line of the cell.\n   * This default implementation defers to methods `drawTop`, `drawBottom`, `drawLine` and `drawEmpty`.\n   * @param lineNum - can be `top`, `bottom` or a numerical line number.\n   * @param spanningCell - will be a number if being called from a RowSpanCell, and will represent how\n   * many rows below it's being called from. Otherwise it's undefined.\n   * @returns {String} The representation of this line.\n   */\n  draw(lineNum, spanningCell) {\n    if (lineNum == 'top') return this.drawTop(this.drawRight);\n    if (lineNum == 'bottom') return this.drawBottom(this.drawRight);\n    let content = utils.truncate(this.content, 10, this.truncate);\n    if (!lineNum) {\n      info(`${this.y}-${this.x}: ${this.rowSpan - lineNum}x${this.colSpan} Cell ${content}`);\n    } else {\n      // debug(`${lineNum}-${this.x}: 1x${this.colSpan} RowSpanCell ${content}`);\n    }\n    let padLen = Math.max(this.height - this.lines.length, 0);\n    let padTop;\n    switch (this.vAlign) {\n      case 'center':\n        padTop = Math.ceil(padLen / 2);\n        break;\n      case 'bottom':\n        padTop = padLen;\n        break;\n      default:\n        padTop = 0;\n    }\n    if (lineNum < padTop || lineNum >= padTop + this.lines.length) {\n      return this.drawEmpty(this.drawRight, spanningCell);\n    }\n    let forceTruncation = this.lines.length > this.height && lineNum + 1 >= this.height;\n    return this.drawLine(lineNum - padTop, this.drawRight, forceTruncation, spanningCell);\n  }\n\n  /**\n   * Renders the top line of the cell.\n   * @param drawRight - true if this method should render the right edge of the cell.\n   * @returns {String}\n   */\n  drawTop(drawRight) {\n    let content = [];\n    if (this.cells) {\n      //TODO: cells should always exist - some tests don't fill it in though\n      this.widths.forEach(function (width, index) {\n        content.push(this._topLeftChar(index));\n        content.push(utils.repeat(this.chars[this.y == 0 ? 'top' : 'mid'], width));\n      }, this);\n    } else {\n      content.push(this._topLeftChar(0));\n      content.push(utils.repeat(this.chars[this.y == 0 ? 'top' : 'mid'], this.width));\n    }\n    if (drawRight) {\n      content.push(this.chars[this.y == 0 ? 'topRight' : 'rightMid']);\n    }\n    return this.wrapWithStyleColors('border', content.join(''));\n  }\n\n  _topLeftChar(offset) {\n    let x = this.x + offset;\n    let leftChar;\n    if (this.y == 0) {\n      leftChar = x == 0 ? 'topLeft' : offset == 0 ? 'topMid' : 'top';\n    } else {\n      if (x == 0) {\n        leftChar = 'leftMid';\n      } else {\n        leftChar = offset == 0 ? 'midMid' : 'bottomMid';\n        if (this.cells) {\n          //TODO: cells should always exist - some tests don't fill it in though\n          let spanAbove = this.cells[this.y - 1][x] instanceof Cell.ColSpanCell;\n          if (spanAbove) {\n            leftChar = offset == 0 ? 'topMid' : 'mid';\n          }\n          if (offset == 0) {\n            let i = 1;\n            while (this.cells[this.y][x - i] instanceof Cell.ColSpanCell) {\n              i++;\n            }\n            if (this.cells[this.y][x - i] instanceof Cell.RowSpanCell) {\n              leftChar = 'leftMid';\n            }\n          }\n        }\n      }\n    }\n    return this.chars[leftChar];\n  }\n\n  wrapWithStyleColors(styleProperty, content) {\n    if (this[styleProperty] && this[styleProperty].length) {\n      try {\n        let colors = require('@colors/colors/safe');\n        for (let i = this[styleProperty].length - 1; i >= 0; i--) {\n          colors = colors[this[styleProperty][i]];\n        }\n        return colors(content);\n      } catch (e) {\n        return content;\n      }\n    } else {\n      return content;\n    }\n  }\n\n  /**\n   * Renders a line of text.\n   * @param lineNum - Which line of text to render. This is not necessarily the line within the cell.\n   * There may be top-padding above the first line of text.\n   * @param drawRight - true if this method should render the right edge of the cell.\n   * @param forceTruncationSymbol - `true` if the rendered text should end with the truncation symbol even\n   * if the text fits. This is used when the cell is vertically truncated. If `false` the text should\n   * only include the truncation symbol if the text will not fit horizontally within the cell width.\n   * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined.\n   * @returns {String}\n   */\n  drawLine(lineNum, drawRight, forceTruncationSymbol, spanningCell) {\n    let left = this.chars[this.x == 0 ? 'left' : 'middle'];\n    if (this.x && spanningCell && this.cells) {\n      let cellLeft = this.cells[this.y + spanningCell][this.x - 1];\n      while (cellLeft instanceof ColSpanCell) {\n        cellLeft = this.cells[cellLeft.y][cellLeft.x - 1];\n      }\n      if (!(cellLeft instanceof RowSpanCell)) {\n        left = this.chars['rightMid'];\n      }\n    }\n    let leftPadding = utils.repeat(' ', this.paddingLeft);\n    let right = drawRight ? this.chars['right'] : '';\n    let rightPadding = utils.repeat(' ', this.paddingRight);\n    let line = this.lines[lineNum];\n    let len = this.width - (this.paddingLeft + this.paddingRight);\n    if (forceTruncationSymbol) line += this.truncate || '…';\n    let content = utils.truncate(line, len, this.truncate);\n    content = utils.pad(content, len, ' ', this.hAlign);\n    content = leftPadding + content + rightPadding;\n    return this.stylizeLine(left, content, right);\n  }\n\n  stylizeLine(left, content, right) {\n    left = this.wrapWithStyleColors('border', left);\n    right = this.wrapWithStyleColors('border', right);\n    if (this.y === 0) {\n      content = this.wrapWithStyleColors('head', content);\n    }\n    return left + content + right;\n  }\n\n  /**\n   * Renders the bottom line of the cell.\n   * @param drawRight - true if this method should render the right edge of the cell.\n   * @returns {String}\n   */\n  drawBottom(drawRight) {\n    let left = this.chars[this.x == 0 ? 'bottomLeft' : 'bottomMid'];\n    let content = utils.repeat(this.chars.bottom, this.width);\n    let right = drawRight ? this.chars['bottomRight'] : '';\n    return this.wrapWithStyleColors('border', left + content + right);\n  }\n\n  /**\n   * Renders a blank line of text within the cell. Used for top and/or bottom padding.\n   * @param drawRight - true if this method should render the right edge of the cell.\n   * @param spanningCell - a number of if being called from a RowSpanCell. (how many rows below). otherwise undefined.\n   * @returns {String}\n   */\n  drawEmpty(drawRight, spanningCell) {\n    let left = this.chars[this.x == 0 ? 'left' : 'middle'];\n    if (this.x && spanningCell && this.cells) {\n      let cellLeft = this.cells[this.y + spanningCell][this.x - 1];\n      while (cellLeft instanceof ColSpanCell) {\n        cellLeft = this.cells[cellLeft.y][cellLeft.x - 1];\n      }\n      if (!(cellLeft instanceof RowSpanCell)) {\n        left = this.chars['rightMid'];\n      }\n    }\n    let right = drawRight ? this.chars['right'] : '';\n    let content = utils.repeat(' ', this.width);\n    return this.stylizeLine(left, content, right);\n  }\n}\n\nclass ColSpanCell {\n  /**\n   * A Cell that doesn't do anything. It just draws empty lines.\n   * Used as a placeholder in column spanning.\n   * @constructor\n   */\n  constructor() {}\n\n  draw(lineNum) {\n    if (typeof lineNum === 'number') {\n      debug(`${this.y}-${this.x}: 1x1 ColSpanCell`);\n    }\n    return '';\n  }\n\n  init() {}\n\n  mergeTableOptions() {}\n}\n\nclass RowSpanCell {\n  /**\n   * A placeholder Cell for a Cell that spans multiple rows.\n   * It delegates rendering to the original cell, but adds the appropriate offset.\n   * @param originalCell\n   * @constructor\n   */\n  constructor(originalCell) {\n    this.originalCell = originalCell;\n  }\n\n  init(tableOptions) {\n    let y = this.y;\n    let originalY = this.originalCell.y;\n    this.cellOffset = y - originalY;\n    this.offset = findDimension(tableOptions.rowHeights, originalY, this.cellOffset);\n  }\n\n  draw(lineNum) {\n    if (lineNum == 'top') {\n      return this.originalCell.draw(this.offset, this.cellOffset);\n    }\n    if (lineNum == 'bottom') {\n      return this.originalCell.draw('bottom');\n    }\n    debug(`${this.y}-${this.x}: 1x${this.colSpan} RowSpanCell for ${this.originalCell.content}`);\n    return this.originalCell.draw(this.offset + 1 + lineNum);\n  }\n\n  mergeTableOptions() {}\n}\n\nfunction firstDefined(...args) {\n  return args.filter((v) => v !== undefined && v !== null).shift();\n}\n\n// HELPER FUNCTIONS\nfunction setOption(objA, objB, nameB, targetObj) {\n  let nameA = nameB.split('-');\n  if (nameA.length > 1) {\n    nameA[1] = nameA[1].charAt(0).toUpperCase() + nameA[1].substr(1);\n    nameA = nameA.join('');\n    targetObj[nameA] = firstDefined(objA[nameA], objA[nameB], objB[nameA], objB[nameB]);\n  } else {\n    targetObj[nameB] = firstDefined(objA[nameB], objB[nameB]);\n  }\n}\n\nfunction findDimension(dimensionTable, startingIndex, span) {\n  let ret = dimensionTable[startingIndex];\n  for (let i = 1; i < span; i++) {\n    ret += 1 + dimensionTable[startingIndex + i];\n  }\n  return ret;\n}\n\nfunction sumPlusOne(a, b) {\n  return a + b + 1;\n}\n\nlet CHAR_NAMES = [\n  'top',\n  'top-mid',\n  'top-left',\n  'top-right',\n  'bottom',\n  'bottom-mid',\n  'bottom-left',\n  'bottom-right',\n  'left',\n  'left-mid',\n  'mid',\n  'mid-mid',\n  'right',\n  'right-mid',\n  'middle',\n];\n\nmodule.exports = Cell;\nmodule.exports.ColSpanCell = ColSpanCell;\nmodule.exports.RowSpanCell = RowSpanCell;\n","const { warn, debug } = require('./debug');\nconst Cell = require('./cell');\nconst { ColSpanCell, RowSpanCell } = Cell;\n\n(function () {\n  function next(alloc, col) {\n    if (alloc[col] > 0) {\n      return next(alloc, col + 1);\n    }\n    return col;\n  }\n\n  function layoutTable(table) {\n    let alloc = {};\n    table.forEach(function (row, rowIndex) {\n      let col = 0;\n      row.forEach(function (cell) {\n        cell.y = rowIndex;\n        // Avoid erroneous call to next() on first row\n        cell.x = rowIndex ? next(alloc, col) : col;\n        const rowSpan = cell.rowSpan || 1;\n        const colSpan = cell.colSpan || 1;\n        if (rowSpan > 1) {\n          for (let cs = 0; cs < colSpan; cs++) {\n            alloc[cell.x + cs] = rowSpan;\n          }\n        }\n        col = cell.x + colSpan;\n      });\n      Object.keys(alloc).forEach((idx) => {\n        alloc[idx]--;\n        if (alloc[idx] < 1) delete alloc[idx];\n      });\n    });\n  }\n\n  function maxWidth(table) {\n    let mw = 0;\n    table.forEach(function (row) {\n      row.forEach(function (cell) {\n        mw = Math.max(mw, cell.x + (cell.colSpan || 1));\n      });\n    });\n    return mw;\n  }\n\n  function maxHeight(table) {\n    return table.length;\n  }\n\n  function cellsConflict(cell1, cell2) {\n    let yMin1 = cell1.y;\n    let yMax1 = cell1.y - 1 + (cell1.rowSpan || 1);\n    let yMin2 = cell2.y;\n    let yMax2 = cell2.y - 1 + (cell2.rowSpan || 1);\n    let yConflict = !(yMin1 > yMax2 || yMin2 > yMax1);\n\n    let xMin1 = cell1.x;\n    let xMax1 = cell1.x - 1 + (cell1.colSpan || 1);\n    let xMin2 = cell2.x;\n    let xMax2 = cell2.x - 1 + (cell2.colSpan || 1);\n    let xConflict = !(xMin1 > xMax2 || xMin2 > xMax1);\n\n    return yConflict && xConflict;\n  }\n\n  function conflictExists(rows, x, y) {\n    let i_max = Math.min(rows.length - 1, y);\n    let cell = { x: x, y: y };\n    for (let i = 0; i <= i_max; i++) {\n      let row = rows[i];\n      for (let j = 0; j < row.length; j++) {\n        if (cellsConflict(cell, row[j])) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  function allBlank(rows, y, xMin, xMax) {\n    for (let x = xMin; x < xMax; x++) {\n      if (conflictExists(rows, x, y)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  function addRowSpanCells(table) {\n    table.forEach(function (row, rowIndex) {\n      row.forEach(function (cell) {\n        for (let i = 1; i < cell.rowSpan; i++) {\n          let rowSpanCell = new RowSpanCell(cell);\n          rowSpanCell.x = cell.x;\n          rowSpanCell.y = cell.y + i;\n          rowSpanCell.colSpan = cell.colSpan;\n          insertCell(rowSpanCell, table[rowIndex + i]);\n        }\n      });\n    });\n  }\n\n  function addColSpanCells(cellRows) {\n    for (let rowIndex = cellRows.length - 1; rowIndex >= 0; rowIndex--) {\n      let cellColumns = cellRows[rowIndex];\n      for (let columnIndex = 0; columnIndex < cellColumns.length; columnIndex++) {\n        let cell = cellColumns[columnIndex];\n        for (let k = 1; k < cell.colSpan; k++) {\n          let colSpanCell = new ColSpanCell();\n          colSpanCell.x = cell.x + k;\n          colSpanCell.y = cell.y;\n          cellColumns.splice(columnIndex + 1, 0, colSpanCell);\n        }\n      }\n    }\n  }\n\n  function insertCell(cell, row) {\n    let x = 0;\n    while (x < row.length && row[x].x < cell.x) {\n      x++;\n    }\n    row.splice(x, 0, cell);\n  }\n\n  function fillInTable(table) {\n    let h_max = maxHeight(table);\n    let w_max = maxWidth(table);\n    debug(`Max rows: ${h_max}; Max cols: ${w_max}`);\n    for (let y = 0; y < h_max; y++) {\n      for (let x = 0; x < w_max; x++) {\n        if (!conflictExists(table, x, y)) {\n          let opts = { x: x, y: y, colSpan: 1, rowSpan: 1 };\n          x++;\n          while (x < w_max && !conflictExists(table, x, y)) {\n            opts.colSpan++;\n            x++;\n          }\n          let y2 = y + 1;\n          while (y2 < h_max && allBlank(table, y2, opts.x, opts.x + opts.colSpan)) {\n            opts.rowSpan++;\n            y2++;\n          }\n          let cell = new Cell(opts);\n          cell.x = opts.x;\n          cell.y = opts.y;\n          warn(`Missing cell at ${cell.y}-${cell.x}.`);\n          insertCell(cell, table[y]);\n        }\n      }\n    }\n  }\n\n  function generateCells(rows) {\n    return rows.map(function (row) {\n      if (!Array.isArray(row)) {\n        let key = Object.keys(row)[0];\n        row = row[key];\n        if (Array.isArray(row)) {\n          row = row.slice();\n          row.unshift(key);\n        } else {\n          row = [key, row];\n        }\n      }\n      return row.map(function (cell) {\n        return new Cell(cell);\n      });\n    });\n  }\n\n  function makeTableLayout(rows) {\n    let cellRows = generateCells(rows);\n    layoutTable(cellRows);\n    fillInTable(cellRows);\n    addRowSpanCells(cellRows);\n    addColSpanCells(cellRows);\n    return cellRows;\n  }\n\n  module.exports = {\n    makeTableLayout: makeTableLayout,\n    layoutTable: layoutTable,\n    addRowSpanCells: addRowSpanCells,\n    maxWidth: maxWidth,\n    fillInTable: fillInTable,\n    computeWidths: makeComputeWidths('colSpan', 'desiredWidth', 'x', 1),\n    computeHeights: makeComputeWidths('rowSpan', 'desiredHeight', 'y', 1),\n  };\n})();\n\nfunction makeComputeWidths(colSpan, desiredWidth, x, forcedMin) {\n  return function (vals, table) {\n    let result = [];\n    let spanners = [];\n    let auto = {};\n    table.forEach(function (row) {\n      row.forEach(function (cell) {\n        if ((cell[colSpan] || 1) > 1) {\n          spanners.push(cell);\n        } else {\n          result[cell[x]] = Math.max(result[cell[x]] || 0, cell[desiredWidth] || 0, forcedMin);\n        }\n      });\n    });\n\n    vals.forEach(function (val, index) {\n      if (typeof val === 'number') {\n        result[index] = val;\n      }\n    });\n\n    //spanners.forEach(function(cell){\n    for (let k = spanners.length - 1; k >= 0; k--) {\n      let cell = spanners[k];\n      let span = cell[colSpan];\n      let col = cell[x];\n      let existingWidth = result[col];\n      let editableCols = typeof vals[col] === 'number' ? 0 : 1;\n      if (typeof existingWidth === 'number') {\n        for (let i = 1; i < span; i++) {\n          existingWidth += 1 + result[col + i];\n          if (typeof vals[col + i] !== 'number') {\n            editableCols++;\n          }\n        }\n      } else {\n        existingWidth = desiredWidth === 'desiredWidth' ? cell.desiredWidth - 1 : 1;\n        if (!auto[col] || auto[col] < existingWidth) {\n          auto[col] = existingWidth;\n        }\n      }\n\n      if (cell[desiredWidth] > existingWidth) {\n        let i = 0;\n        while (editableCols > 0 && cell[desiredWidth] > existingWidth) {\n          if (typeof vals[col + i] !== 'number') {\n            let dif = Math.round((cell[desiredWidth] - existingWidth) / editableCols);\n            existingWidth += dif;\n            result[col + i] += dif;\n            editableCols--;\n          }\n          i++;\n        }\n      }\n    }\n\n    Object.assign(vals, result, auto);\n    for (let j = 0; j < vals.length; j++) {\n      vals[j] = Math.max(forcedMin, vals[j] || 0);\n    }\n  };\n}\n","const debug = require('./debug');\nconst utils = require('./utils');\nconst tableLayout = require('./layout-manager');\n\nclass Table extends Array {\n  constructor(opts) {\n    super();\n\n    const options = utils.mergeOptions(opts);\n    Object.defineProperty(this, 'options', {\n      value: options,\n      enumerable: options.debug,\n    });\n\n    if (options.debug) {\n      switch (typeof options.debug) {\n        case 'boolean':\n          debug.setDebugLevel(debug.WARN);\n          break;\n        case 'number':\n          debug.setDebugLevel(options.debug);\n          break;\n        case 'string':\n          debug.setDebugLevel(parseInt(options.debug, 10));\n          break;\n        default:\n          debug.setDebugLevel(debug.WARN);\n          debug.warn(`Debug option is expected to be boolean, number, or string. Received a ${typeof options.debug}`);\n      }\n      Object.defineProperty(this, 'messages', {\n        get() {\n          return debug.debugMessages();\n        },\n      });\n    }\n  }\n\n  toString() {\n    let array = this;\n    let headersPresent = this.options.head && this.options.head.length;\n    if (headersPresent) {\n      array = [this.options.head];\n      if (this.length) {\n        array.push.apply(array, this);\n      }\n    } else {\n      this.options.style.head = [];\n    }\n\n    let cells = tableLayout.makeTableLayout(array);\n\n    cells.forEach(function (row) {\n      row.forEach(function (cell) {\n        cell.mergeTableOptions(this.options, cells);\n      }, this);\n    }, this);\n\n    tableLayout.computeWidths(this.options.colWidths, cells);\n    tableLayout.computeHeights(this.options.rowHeights, cells);\n\n    cells.forEach(function (row) {\n      row.forEach(function (cell) {\n        cell.init(this.options);\n      }, this);\n    }, this);\n\n    let result = [];\n\n    for (let rowIndex = 0; rowIndex < cells.length; rowIndex++) {\n      let row = cells[rowIndex];\n      let heightOfRow = this.options.rowHeights[rowIndex];\n\n      if (rowIndex === 0 || !this.options.style.compact || (rowIndex == 1 && headersPresent)) {\n        doDraw(row, 'top', result);\n      }\n\n      for (let lineNum = 0; lineNum < heightOfRow; lineNum++) {\n        doDraw(row, lineNum, result);\n      }\n\n      if (rowIndex + 1 == cells.length) {\n        doDraw(row, 'bottom', result);\n      }\n    }\n\n    return result.join('\\n');\n  }\n\n  get width() {\n    let str = this.toString().split('\\n');\n    return str[0].length;\n  }\n}\n\nTable.reset = () => debug.reset();\n\nfunction doDraw(row, lineNum, result) {\n  let line = [];\n  row.forEach(function (cell) {\n    line.push(cell.draw(lineNum));\n  });\n  let str = line.join('');\n  if (str.length) result.push(str);\n}\n\nmodule.exports = Table;\n","module.exports = require('./src/table');","export default () => {\n\t// https://mths.be/emoji\n\treturn /[#*0-9]\\uFE0F?\\u20E3|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26AA\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C8\\u26CF\\u26D1\\u26E9\\u26F0-\\u26F5\\u26F7\\u26F8\\u26FA\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B55\\u3030\\u303D\\u3297\\u3299]\\uFE0F?|[\\u261D\\u270C\\u270D](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\u270A\\u270B](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u2693\\u26A1\\u26AB\\u26C5\\u26CE\\u26D4\\u26EA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2795-\\u2797\\u27B0\\u27BF\\u2B50]|\\u26D3\\uFE0F?(?:\\u200D\\uD83D\\uDCA5)?|\\u26F9(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\u2764\\uFE0F?(?:\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79))?|\\uD83C(?:[\\uDC04\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]\\uFE0F?|[\\uDF85\\uDFC2\\uDFC7](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDFC4\\uDFCA](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDFCB\\uDFCC](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF43\\uDF45-\\uDF4A\\uDF4C-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uDDE6\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF]|\\uDDE7\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF]|\\uDDE8\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF7\\uDDFA-\\uDDFF]|\\uDDE9\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF]|\\uDDEA\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA]|\\uDDEB\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7]|\\uDDEC\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE]|\\uDDED\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA]|\\uDDEE\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9]|\\uDDEF\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5]|\\uDDF0\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF]|\\uDDF1\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE]|\\uDDF2\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF]|\\uDDF3\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF]|\\uDDF4\\uD83C\\uDDF2|\\uDDF5\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE]|\\uDDF6\\uD83C\\uDDE6|\\uDDF7\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC]|\\uDDF8\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF]|\\uDDF9\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF]|\\uDDFA\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF]|\\uDDFB\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA]|\\uDDFC\\uD83C[\\uDDEB\\uDDF8]|\\uDDFD\\uD83C\\uDDF0|\\uDDFE\\uD83C[\\uDDEA\\uDDF9]|\\uDDFF\\uD83C[\\uDDE6\\uDDF2\\uDDFC]|\\uDF44(?:\\u200D\\uD83D\\uDFEB)?|\\uDF4B(?:\\u200D\\uD83D\\uDFE9)?|\\uDFC3(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDFF3\\uFE0F?(?:\\u200D(?:\\u26A7\\uFE0F?|\\uD83C\\uDF08))?|\\uDFF4(?:\\u200D\\u2620\\uFE0F?|\\uDB40\\uDC67\\uDB40\\uDC62\\uDB40(?:\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F)?)|\\uD83D(?:[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3]\\uFE0F?|[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDC6E-\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4\\uDEB5](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD74\\uDD90](?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?|[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC25\\uDC27-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE41\\uDE43\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED8\\uDEDC-\\uDEDF\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB\\uDFF0]|\\uDC08(?:\\u200D\\u2B1B)?|\\uDC15(?:\\u200D\\uD83E\\uDDBA)?|\\uDC26(?:\\u200D(?:\\u2B1B|\\uD83D\\uDD25))?|\\uDC3B(?:\\u200D\\u2744\\uFE0F?)?|\\uDC41\\uFE0F?(?:\\u200D\\uD83D\\uDDE8\\uFE0F?)?|\\uDC68(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDC68\\uDC69]\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?)|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFC-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?\\uDC68\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDD1D\\uDEEF]\\u200D\\uD83D\\uDC68\\uD83C[\\uDFFB-\\uDFFE]|[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3])))?))?|\\uDC69(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:\\uDC8B\\u200D\\uD83D)?[\\uDC68\\uDC69]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?|\\uDC69\\u200D\\uD83D(?:\\uDC66(?:\\u200D\\uD83D\\uDC66)?|\\uDC67(?:\\u200D\\uD83D[\\uDC66\\uDC67])?))|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFC-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D\\uD83D(?:[\\uDC68\\uDC69]|\\uDC8B\\u200D\\uD83D[\\uDC68\\uDC69])\\uD83C[\\uDFFB-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3]|\\uDD1D\\u200D\\uD83D[\\uDC68\\uDC69]\\uD83C[\\uDFFB-\\uDFFE]|\\uDEEF\\u200D\\uD83D\\uDC69\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDD75(?:\\uD83C[\\uDFFB-\\uDFFF]|\\uFE0F)?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|\\uDE2E(?:\\u200D\\uD83D\\uDCA8)?|\\uDE35(?:\\u200D\\uD83D\\uDCAB)?|\\uDE36(?:\\u200D\\uD83C\\uDF2B\\uFE0F?)?|\\uDE42(?:\\u200D[\\u2194\\u2195]\\uFE0F?)?|\\uDEB6(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?)|\\uD83E(?:[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5\\uDEC3-\\uDEC5\\uDEF0\\uDEF2-\\uDEF8](?:\\uD83C[\\uDFFB-\\uDFFF])?|[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3C-\\uDD3E\\uDDB8\\uDDB9\\uDDCD\\uDDCF\\uDDD4\\uDDD6-\\uDDDD](?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDDDE\\uDDDF](?:\\u200D[\\u2640\\u2642]\\uFE0F?)?|[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCC\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC2\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF]|\\uDDCE(?:\\uD83C[\\uDFFB-\\uDFFF])?(?:\\u200D(?:[\\u2640\\u2642]\\uFE0F?(?:\\u200D\\u27A1\\uFE0F?)?|\\u27A1\\uFE0F?))?|\\uDDD1(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1|\\uDDD1\\u200D\\uD83E\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?|\\uDDD2(?:\\u200D\\uD83E\\uDDD2)?))|\\uD83C(?:\\uDFFB(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFC-\\uDFFF])))?|\\uDFFC(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])))?|\\uDFFD(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])))?|\\uDFFE(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])))?|\\uDFFF(?:\\u200D(?:[\\u2695\\u2696\\u2708]\\uFE0F?|\\u2764\\uFE0F?\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE]|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D(?:[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uDC30\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])|\\uD83E(?:[\\uDDAF\\uDDBC\\uDDBD](?:\\u200D\\u27A1\\uFE0F?)?|[\\uDDB0-\\uDDB3\\uDE70]|\\uDD1D\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFF]|\\uDEEF\\u200D\\uD83E\\uDDD1\\uD83C[\\uDFFB-\\uDFFE])))?))?|\\uDEF1(?:\\uD83C(?:\\uDFFB(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFC-\\uDFFF])?|\\uDFFC(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])?|\\uDFFD(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])?|\\uDFFE(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])?|\\uDFFF(?:\\u200D\\uD83E\\uDEF2\\uD83C[\\uDFFB-\\uDFFE])?))?)/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport {eastAsianWidth} from 'get-east-asian-width';\nimport emojiRegex from 'emoji-regex';\n\nconst segmenter = new Intl.Segmenter();\n\nconst defaultIgnorableCodePointRegex = /^\\p{Default_Ignorable_Code_Point}$/u;\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tconst {\n\t\tambiguousIsNarrow = true,\n\t\tcountAnsiEscapeCodes = false,\n\t} = options;\n\n\tif (!countAnsiEscapeCodes) {\n\t\tstring = stripAnsi(string);\n\t}\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tlet width = 0;\n\tconst eastAsianWidthOptions = {ambiguousAsWide: !ambiguousIsNarrow};\n\n\tfor (const {segment: character} of segmenter.segment(string)) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore zero-width characters\n\t\tif (\n\t\t\t(codePoint >= 0x20_0B && codePoint <= 0x20_0F) // Zero-width space, non-joiner, joiner, left-to-right mark, right-to-left mark\n\t\t\t|| codePoint === 0xFE_FF // Zero-width no-break space\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (\n\t\t\t(codePoint >= 0x3_00 && codePoint <= 0x3_6F) // Combining diacritical marks\n\t\t\t|| (codePoint >= 0x1A_B0 && codePoint <= 0x1A_FF) // Combining diacritical marks extended\n\t\t\t|| (codePoint >= 0x1D_C0 && codePoint <= 0x1D_FF) // Combining diacritical marks supplement\n\t\t\t|| (codePoint >= 0x20_D0 && codePoint <= 0x20_FF) // Combining diacritical marks for symbols\n\t\t\t|| (codePoint >= 0xFE_20 && codePoint <= 0xFE_2F) // Combining half marks\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore surrogate pairs\n\t\tif (codePoint >= 0xD8_00 && codePoint <= 0xDF_FF) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore variation selectors\n\t\tif (codePoint >= 0xFE_00 && codePoint <= 0xFE_0F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// This covers some of the above cases, but we still keep them for performance reasons.\n\t\tif (defaultIgnorableCodePointRegex.test(character)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// TODO: Use `/\\p{RGI_Emoji}/v` when targeting Node.js 20.\n\t\tif (emojiRegex().test(character)) {\n\t\t\twidth += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\twidth += eastAsianWidth(codePoint, eastAsianWidthOptions);\n\t}\n\n\treturn width;\n}\n","import stringWidth from 'string-width';\n\nexport default function widestLine(string) {\n\tlet lineWidth = 0;\n\n\tfor (const line of string.split('\\n')) {\n\t\tlineWidth = Math.max(lineWidth, stringWidth(line));\n\t}\n\n\treturn lineWidth;\n}\n","{\n\t\"single\": {\n\t\t\"topLeft\": \"┌\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"┐\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"┘\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"└\",\n\t\t\"left\": \"│\"\n\t},\n\t\"double\": {\n\t\t\"topLeft\": \"╔\",\n\t\t\"top\": \"═\",\n\t\t\"topRight\": \"╗\",\n\t\t\"right\": \"║\",\n\t\t\"bottomRight\": \"╝\",\n\t\t\"bottom\": \"═\",\n\t\t\"bottomLeft\": \"╚\",\n\t\t\"left\": \"║\"\n\t},\n\t\"round\": {\n\t\t\"topLeft\": \"╭\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"╮\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"╯\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"╰\",\n\t\t\"left\": \"│\"\n\t},\n\t\"bold\": {\n\t\t\"topLeft\": \"┏\",\n\t\t\"top\": \"━\",\n\t\t\"topRight\": \"┓\",\n\t\t\"right\": \"┃\",\n\t\t\"bottomRight\": \"┛\",\n\t\t\"bottom\": \"━\",\n\t\t\"bottomLeft\": \"┗\",\n\t\t\"left\": \"┃\"\n\t},\n\t\"singleDouble\": {\n\t\t\"topLeft\": \"╓\",\n\t\t\"top\": \"─\",\n\t\t\"topRight\": \"╖\",\n\t\t\"right\": \"║\",\n\t\t\"bottomRight\": \"╜\",\n\t\t\"bottom\": \"─\",\n\t\t\"bottomLeft\": \"╙\",\n\t\t\"left\": \"║\"\n\t},\n\t\"doubleSingle\": {\n\t\t\"topLeft\": \"╒\",\n\t\t\"top\": \"═\",\n\t\t\"topRight\": \"╕\",\n\t\t\"right\": \"│\",\n\t\t\"bottomRight\": \"╛\",\n\t\t\"bottom\": \"═\",\n\t\t\"bottomLeft\": \"╘\",\n\t\t\"left\": \"│\"\n\t},\n\t\"classic\": {\n\t\t\"topLeft\": \"+\",\n\t\t\"top\": \"-\",\n\t\t\"topRight\": \"+\",\n\t\t\"right\": \"|\",\n\t\t\"bottomRight\": \"+\",\n\t\t\"bottom\": \"-\",\n\t\t\"bottomLeft\": \"+\",\n\t\t\"left\": \"|\"\n\t},\n\t\"arrow\": {\n\t\t\"topLeft\": \"↘\",\n\t\t\"top\": \"↓\",\n\t\t\"topRight\": \"↙\",\n\t\t\"right\": \"←\",\n\t\t\"bottomRight\": \"↖\",\n\t\t\"bottom\": \"↑\",\n\t\t\"bottomLeft\": \"↗\",\n\t\t\"left\": \"→\"\n\t}\n}\n","'use strict';\nconst cliBoxes = require('./boxes.json');\n\nmodule.exports = cliBoxes;\n// TODO: Remove this for the next major release\nmodule.exports.default = cliBoxes;\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase)) {\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replaceAll(LEADING_CAPITAL, match => toLowerCase(match));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input\n\t\t.replaceAll(NUMBERS_AND_IDENTIFIER, (match, pattern, offset) => ['_', '-'].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match))\n\t\t.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier));\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\tinput = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n}\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","\"use strict\";\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), '  ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict'\n\nconst stringWidth = require('string-width')\n\nfunction ansiAlign (text, opts) {\n  if (!text) return text\n\n  opts = opts || {}\n  const align = opts.align || 'center'\n\n  // short-circuit `align: 'left'` as no-op\n  if (align === 'left') return text\n\n  const split = opts.split || '\\n'\n  const pad = opts.pad || ' '\n  const widthDiffFn = align !== 'right' ? halfDiff : fullDiff\n\n  let returnString = false\n  if (!Array.isArray(text)) {\n    returnString = true\n    text = String(text).split(split)\n  }\n\n  let width\n  let maxWidth = 0\n  text = text.map(function (str) {\n    str = String(str)\n    width = stringWidth(str)\n    maxWidth = Math.max(width, maxWidth)\n    return {\n      str,\n      width\n    }\n  }).map(function (obj) {\n    return new Array(widthDiffFn(maxWidth, obj.width) + 1).join(pad) + obj.str\n  })\n\n  return returnString ? text.join(split) : text\n}\n\nansiAlign.left = function left (text) {\n  return ansiAlign(text, { align: 'left' })\n}\n\nansiAlign.center = function center (text) {\n  return ansiAlign(text, { align: 'center' })\n}\n\nansiAlign.right = function right (text) {\n  return ansiAlign(text, { align: 'right' })\n}\n\nmodule.exports = ansiAlign\n\nfunction halfDiff (maxWidth, curWidth) {\n  return Math.floor((maxWidth - curWidth) / 2)\n}\n\nfunction fullDiff (maxWidth, curWidth) {\n  return maxWidth - curWidth\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = url => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows.at(-1)));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\n\t\t\tconst ansiEscapeLinkCandidate = characters.slice(index + 1, index + 1 + ANSI_ESCAPE_LINK.length).join('');\n\t\t\tisInsideLinkEscape = ansiEscapeLinkCandidate === ANSI_ESCAPE_LINK;\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows.at(-1).length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode.\n//\n// 'hard' will never allow a string to take up more than columns characters.\n//\n// 'soft' allows long words to expand past the column length.\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows.at(-1).trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows.at(-1));\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst preString = rows.join('\\n');\n\tconst pre = [...preString];\n\n\t// We need to keep a separate index as `String#slice()` works on Unicode code units, while `pre` is an array of codepoints.\n\tlet preStringIndex = 0;\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(preString.slice(preStringIndex)) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\n\t\tpreStringIndex += character.length;\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replaceAll('\\r\\n', '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","import process from 'node:process';\nimport stringWidth from 'string-width';\nimport chalk from 'chalk';\nimport widestLine from 'widest-line';\nimport cliBoxes from 'cli-boxes';\nimport camelCase from 'camelcase';\nimport ansiAlign from 'ansi-align';\nimport wrapAnsi from 'wrap-ansi';\n\nconst NEWLINE = '\\n';\nconst PAD = ' ';\nconst NONE = 'none';\n\nconst terminalColumns = () => {\n\tconst {env, stdout, stderr} = process;\n\n\tif (stdout?.columns) {\n\t\treturn stdout.columns;\n\t}\n\n\tif (stderr?.columns) {\n\t\treturn stderr.columns;\n\t}\n\n\tif (env.COLUMNS) {\n\t\treturn Number.parseInt(env.COLUMNS, 10);\n\t}\n\n\treturn 80;\n};\n\nconst getObject = detail => typeof detail === 'number' ? {\n\ttop: detail,\n\tright: detail * 3,\n\tbottom: detail,\n\tleft: detail * 3,\n} : {\n\ttop: 0,\n\tright: 0,\n\tbottom: 0,\n\tleft: 0,\n\t...detail,\n};\n\nconst getBorderWidth = borderStyle => borderStyle === NONE ? 0 : 2;\n\nconst getBorderChars = borderStyle => {\n\tconst sides = [\n\t\t'topLeft',\n\t\t'topRight',\n\t\t'bottomRight',\n\t\t'bottomLeft',\n\t\t'left',\n\t\t'right',\n\t\t'top',\n\t\t'bottom',\n\t];\n\n\tlet characters;\n\n\t// Create empty border style\n\tif (borderStyle === NONE) {\n\t\tborderStyle = {};\n\t\tfor (const side of sides) {\n\t\t\tborderStyle[side] = '';\n\t\t}\n\t}\n\n\tif (typeof borderStyle === 'string') {\n\t\tcharacters = cliBoxes[borderStyle];\n\n\t\tif (!characters) {\n\t\t\tthrow new TypeError(`Invalid border style: ${borderStyle}`);\n\t\t}\n\t} else {\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.vertical === 'string') {\n\t\t\tborderStyle.left = borderStyle.vertical;\n\t\t\tborderStyle.right = borderStyle.vertical;\n\t\t}\n\n\t\t// Ensure retro-compatibility\n\t\tif (typeof borderStyle?.horizontal === 'string') {\n\t\t\tborderStyle.top = borderStyle.horizontal;\n\t\t\tborderStyle.bottom = borderStyle.horizontal;\n\t\t}\n\n\t\tfor (const side of sides) {\n\t\t\tif (borderStyle[side] === null || typeof borderStyle[side] !== 'string') {\n\t\t\t\tthrow new TypeError(`Invalid border style: ${side}`);\n\t\t\t}\n\t\t}\n\n\t\tcharacters = borderStyle;\n\t}\n\n\treturn characters;\n};\n\nconst makeTitle = (text, horizontal, alignment) => {\n\tlet title = '';\n\n\tconst textWidth = stringWidth(text);\n\n\tswitch (alignment) {\n\t\tcase 'left': {\n\t\t\ttitle = text + horizontal.slice(textWidth);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'right': {\n\t\t\ttitle = horizontal.slice(textWidth) + text;\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\thorizontal = horizontal.slice(textWidth);\n\n\t\t\tif (horizontal.length % 2 === 1) { // This is needed in case the length is odd\n\t\t\t\thorizontal = horizontal.slice(Math.floor(horizontal.length / 2));\n\t\t\t\ttitle = horizontal.slice(1) + text + horizontal; // We reduce the left part of one character to avoid the bar to go beyond its limit\n\t\t\t} else {\n\t\t\t\thorizontal = horizontal.slice(horizontal.length / 2);\n\t\t\t\ttitle = horizontal + text + horizontal;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn title;\n};\n\nconst makeContentText = (text, {padding, width, textAlignment, height}) => {\n\ttext = ansiAlign(text, {align: textAlignment});\n\tlet lines = text.split(NEWLINE);\n\tconst textWidth = widestLine(text);\n\n\tconst max = width - padding.left - padding.right;\n\n\tif (textWidth > max) {\n\t\tconst newLines = [];\n\t\tfor (const line of lines) {\n\t\t\tconst createdLines = wrapAnsi(line, max, {hard: true});\n\t\t\tconst alignedLines = ansiAlign(createdLines, {align: textAlignment});\n\t\t\tconst alignedLinesArray = alignedLines.split('\\n');\n\t\t\tconst longestLength = Math.max(...alignedLinesArray.map(s => stringWidth(s)));\n\n\t\t\tfor (const alignedLine of alignedLinesArray) {\n\t\t\t\tlet paddedLine;\n\t\t\t\tswitch (textAlignment) {\n\t\t\t\t\tcase 'center': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat((max - longestLength) / 2) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcase 'right': {\n\t\t\t\t\t\tpaddedLine = PAD.repeat(max - longestLength) + alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tdefault: {\n\t\t\t\t\t\tpaddedLine = alignedLine;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tnewLines.push(paddedLine);\n\t\t\t}\n\t\t}\n\n\t\tlines = newLines;\n\t}\n\n\tif (textAlignment === 'center' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat((max - textWidth) / 2) + line);\n\t} else if (textAlignment === 'right' && textWidth < max) {\n\t\tlines = lines.map(line => PAD.repeat(max - textWidth) + line);\n\t}\n\n\tconst paddingLeft = PAD.repeat(padding.left);\n\tconst paddingRight = PAD.repeat(padding.right);\n\n\tlines = lines.map(line => {\n\t\tconst newLine = paddingLeft + line + paddingRight;\n\n\t\treturn newLine + PAD.repeat(width - stringWidth(newLine));\n\t});\n\n\tif (padding.top > 0) {\n\t\tlines = [...Array.from({length: padding.top}).fill(PAD.repeat(width)), ...lines];\n\t}\n\n\tif (padding.bottom > 0) {\n\t\tlines = [...lines, ...Array.from({length: padding.bottom}).fill(PAD.repeat(width))];\n\t}\n\n\tif (height && lines.length > height) {\n\t\tlines = lines.slice(0, height);\n\t} else if (height && lines.length < height) {\n\t\tlines = [...lines, ...Array.from({length: height - lines.length}).fill(PAD.repeat(width))];\n\t}\n\n\treturn lines.join(NEWLINE);\n};\n\nconst boxContent = (content, contentWidth, options) => {\n\tconst colorizeBorder = border => {\n\t\tconst newBorder = options.borderColor ? getColorFunction(options.borderColor)(border) : border;\n\t\treturn options.dimBorder ? chalk.dim(newBorder) : newBorder;\n\t};\n\n\tconst colorizeContent = content => options.backgroundColor ? getBGColorFunction(options.backgroundColor)(content) : content;\n\n\tconst chars = getBorderChars(options.borderStyle);\n\tconst columns = terminalColumns();\n\tlet marginLeft = PAD.repeat(options.margin.left);\n\n\tif (options.float === 'center') {\n\t\tconst marginWidth = Math.max((columns - contentWidth - getBorderWidth(options.borderStyle)) / 2, 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t} else if (options.float === 'right') {\n\t\tconst marginWidth = Math.max(columns - contentWidth - options.margin.right - getBorderWidth(options.borderStyle), 0);\n\t\tmarginLeft = PAD.repeat(marginWidth);\n\t}\n\n\tlet result = '';\n\n\tif (options.margin.top) {\n\t\tresult += NEWLINE.repeat(options.margin.top);\n\t}\n\n\tif (options.borderStyle !== NONE || options.title) {\n\t\tresult += colorizeBorder(marginLeft + chars.topLeft + (options.title ? makeTitle(options.title, chars.top.repeat(contentWidth), options.titleAlignment) : chars.top.repeat(contentWidth)) + chars.topRight) + NEWLINE;\n\t}\n\n\tconst lines = content.split(NEWLINE);\n\n\tresult += lines.map(line => marginLeft + colorizeBorder(chars.left) + colorizeContent(line) + colorizeBorder(chars.right)).join(NEWLINE);\n\n\tif (options.borderStyle !== NONE) {\n\t\tresult += NEWLINE + colorizeBorder(marginLeft + chars.bottomLeft + chars.bottom.repeat(contentWidth) + chars.bottomRight);\n\t}\n\n\tif (options.margin.bottom) {\n\t\tresult += NEWLINE.repeat(options.margin.bottom);\n\t}\n\n\treturn result;\n};\n\nconst sanitizeOptions = options => {\n\t// If fullscreen is enabled, max-out unspecified width/height\n\tif (options.fullscreen && process?.stdout) {\n\t\tlet newDimensions = [process.stdout.columns, process.stdout.rows];\n\n\t\tif (typeof options.fullscreen === 'function') {\n\t\t\tnewDimensions = options.fullscreen(...newDimensions);\n\t\t}\n\n\t\toptions.width ||= newDimensions[0];\n\n\t\toptions.height ||= newDimensions[1];\n\t}\n\n\t// If width is provided, make sure it's not below 1\n\toptions.width &&= Math.max(1, options.width - getBorderWidth(options.borderStyle));\n\n\t// If height is provided, make sure it's not below 1\n\toptions.height &&= Math.max(1, options.height - getBorderWidth(options.borderStyle));\n\n\treturn options;\n};\n\nconst formatTitle = (title, borderStyle) => borderStyle === NONE ? title : ` ${title} `;\n\nconst determineDimensions = (text, options) => {\n\toptions = sanitizeOptions(options);\n\tconst widthOverride = options.width !== undefined;\n\tconst columns = terminalColumns();\n\tconst borderWidth = getBorderWidth(options.borderStyle);\n\tconst maxWidth = columns - options.margin.left - options.margin.right - borderWidth;\n\n\tconst widest = widestLine(wrapAnsi(text, columns - borderWidth, {hard: true, trim: false})) + options.padding.left + options.padding.right;\n\n\t// If title and width are provided, title adheres to fixed width\n\tif (options.title && widthOverride) {\n\t\toptions.title = options.title.slice(0, Math.max(0, options.width - 2));\n\t\toptions.title &&= formatTitle(options.title, options.borderStyle);\n\t} else if (options.title) {\n\t\toptions.title = options.title.slice(0, Math.max(0, maxWidth - 2));\n\n\t\t// Recheck if title isn't empty now\n\t\tif (options.title) {\n\t\t\toptions.title = formatTitle(options.title, options.borderStyle);\n\t\t\t// If the title is larger than content, box adheres to title width\n\t\t\tif (stringWidth(options.title) > widest) {\n\t\t\t\toptions.width = stringWidth(options.title);\n\t\t\t}\n\t\t}\n\t}\n\n\t// If fixed width is provided, use it or content width as reference\n\toptions.width ||= widest;\n\n\tif (!widthOverride) {\n\t\tif ((options.margin.left && options.margin.right) && options.width > maxWidth) {\n\t\t\t// Let's assume we have margins: left = 3, right = 5, in total = 8\n\t\t\tconst spaceForMargins = columns - options.width - borderWidth;\n\t\t\t// Let's assume we have space = 4\n\t\t\tconst multiplier = spaceForMargins / (options.margin.left + options.margin.right);\n\t\t\t// Here: multiplier = 4/8 = 0.5\n\t\t\toptions.margin.left = Math.max(0, Math.floor(options.margin.left * multiplier));\n\t\t\toptions.margin.right = Math.max(0, Math.floor(options.margin.right * multiplier));\n\t\t\t// Left: 3 * 0.5 = 1.5 -> 1\n\t\t\t// Right: 6 * 0.5 = 3\n\t\t}\n\n\t\t// Re-cap width considering the margins after shrinking\n\t\toptions.width = Math.min(options.width, columns - borderWidth - options.margin.left - options.margin.right);\n\t}\n\n\t// Prevent padding overflow\n\tif (options.width - (options.padding.left + options.padding.right) <= 0) {\n\t\toptions.padding.left = 0;\n\t\toptions.padding.right = 0;\n\t}\n\n\tif (options.height && options.height - (options.padding.top + options.padding.bottom) <= 0) {\n\t\toptions.padding.top = 0;\n\t\toptions.padding.bottom = 0;\n\t}\n\n\treturn options;\n};\n\nconst isHex = color => color.match(/^#(?:[0-f]{3}){1,2}$/i);\nconst isColorValid = color => typeof color === 'string' && (chalk[color] ?? isHex(color));\nconst getColorFunction = color => isHex(color) ? chalk.hex(color) : chalk[color];\nconst getBGColorFunction = color => isHex(color) ? chalk.bgHex(color) : chalk[camelCase(['bg', color])];\n\nexport default function boxen(text, options) {\n\toptions = {\n\t\tpadding: 0,\n\t\tborderStyle: 'single',\n\t\tdimBorder: false,\n\t\ttextAlignment: 'left',\n\t\tfloat: 'left',\n\t\ttitleAlignment: 'left',\n\t\t...options,\n\t};\n\n\t// This option is deprecated\n\tif (options.align) {\n\t\toptions.textAlignment = options.align;\n\t}\n\n\tif (options.borderColor && !isColorValid(options.borderColor)) {\n\t\tthrow new Error(`${options.borderColor} is not a valid borderColor`);\n\t}\n\n\tif (options.backgroundColor && !isColorValid(options.backgroundColor)) {\n\t\tthrow new Error(`${options.backgroundColor} is not a valid backgroundColor`);\n\t}\n\n\toptions.padding = getObject(options.padding);\n\toptions.margin = getObject(options.margin);\n\n\toptions = determineDimensions(text, options);\n\n\ttext = makeContentText(text, options);\n\n\treturn boxContent(text, options.width, options);\n}\n\nexport {default as _borderStyles} from 'cli-boxes';\n","import fs from 'fs-extra';\nimport path from 'node:path';\n\nexport interface ApplyState {\n    schema: 'xt.spec.apply-state.v1';\n    spec_id: string;\n    spec_path: string;\n    planner_bead_id: string;\n    planner_job_id: string;\n    dispatched_at: string; // ISO8601\n    // .12 reconcile will append:\n    reconciled_at?: string;\n    epic_id?: string;\n    children?: string[];\n    test_issues?: string[];\n}\n\nexport function sidecarPath(specPath: string): string {\n    return path.join(path.dirname(specPath), '.apply-state.json');\n}\n\n/**\n * Atomic write: write to <sidecar>.tmp + rename(2). On any failure the partial\n * file is removed and the original (if any) is preserved.\n */\nexport async function writeApplyState(specPath: string, state: ApplyState): Promise<void> {\n    const finalPath = sidecarPath(specPath);\n    const tmpPath = `${finalPath}.tmp`;\n    const payload = JSON.stringify(state, null, 2) + '\\n';\n    await fs.writeFile(tmpPath, payload, 'utf8');\n    try {\n        await fs.rename(tmpPath, finalPath);\n    } catch (err) {\n        await fs.remove(tmpPath).catch(() => {});\n        throw err;\n    }\n}\n\nexport async function readApplyState(specPath: string): Promise<ApplyState | null> {\n    const p = sidecarPath(specPath);\n    if (!(await fs.pathExists(p))) return null;\n    const raw = await fs.readFile(p, 'utf8');\n    return JSON.parse(raw) as ApplyState;\n}\n","import { spawnSync } from 'node:child_process';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { parseDocument } from 'yaml';\nimport type { ApplyState } from './apply-state.js';\n\nexport interface PlannerResult {\n    epic_id: string;\n    children: string[];\n    test_issues: string[];\n    first_task?: string;\n}\n\nexport interface ReconcileResult {\n    ok: boolean;\n    planner_result?: PlannerResult;\n    error?: string;\n    orphan_ids?: string[];\n}\n\ninterface ReconcileOptions {\n    /** Override sp binary. */\n    spBinary?: string;\n    /** Override bd binary. */\n    bdBinary?: string;\n}\n\n/**\n * Read sp result for the planner job, validate every emitted id against bd,\n * write the resolved links back into spec.yaml in place (preserving comments\n * and key ordering), and append reconcile fields to the sidecar.\n *\n * Idempotent: a second run produces a byte-identical spec.yaml.\n */\nexport async function reconcile(\n    specPath: string,\n    state: ApplyState,\n    opts: ReconcileOptions = {},\n): Promise<ReconcileResult> {\n    const sp = opts.spBinary ?? process.env.XT_SPEC_SP_BINARY ?? 'sp';\n    const bd = opts.bdBinary ?? process.env.XT_SPEC_BD_BINARY ?? 'bd';\n\n    const r = spawnSync(sp, ['result', state.planner_job_id, '--json'], { encoding: 'utf8' });\n    if (r.status !== 0) {\n        return { ok: false, error: `sp result failed: ${r.stderr || r.stdout}` };\n    }\n    let parsed: unknown;\n    try {\n        parsed = JSON.parse(r.stdout);\n    } catch (err) {\n        return { ok: false, error: 'sp result returned non-JSON: ' + (err instanceof Error ? err.message : String(err)) };\n    }\n    const plannerResult = extractPlannerResult(parsed);\n    if (!plannerResult) {\n        return { ok: false, error: 'sp result missing required fields (epic_id, children, test_issues)' };\n    }\n\n    const orphans = await validateIdsExist([plannerResult.epic_id, ...plannerResult.children, ...plannerResult.test_issues], bd);\n    if (orphans.length > 0) {\n        return { ok: false, error: `reconcile_orphan_link: ${orphans.join(', ')}`, orphan_ids: orphans };\n    }\n\n    await writeLinksInPlace(specPath, {\n        parent_epic: null,\n        planner_bead: state.planner_bead_id,\n        epic: plannerResult.epic_id,\n        children: plannerResult.children,\n        test_issues: plannerResult.test_issues,\n    });\n\n    return { ok: true, planner_result: plannerResult };\n}\n\nfunction extractPlannerResult(parsed: unknown): PlannerResult | null {\n    if (!parsed || typeof parsed !== 'object') return null;\n    const obj = parsed as Record<string, unknown>;\n    const epicId = typeof obj.epic_id === 'string' ? obj.epic_id : null;\n    const children = Array.isArray(obj.children) && obj.children.every((c) => typeof c === 'string') ? (obj.children as string[]) : null;\n    const testIssues = Array.isArray(obj.test_issues) && obj.test_issues.every((c) => typeof c === 'string') ? (obj.test_issues as string[]) : null;\n    if (!epicId || !children || !testIssues) return null;\n    const firstTask = typeof obj.first_task === 'string' ? obj.first_task : undefined;\n    return { epic_id: epicId, children, test_issues: testIssues, first_task: firstTask };\n}\n\nasync function validateIdsExist(ids: string[], bdBin: string): Promise<string[]> {\n    const orphans: string[] = [];\n    for (const id of ids) {\n        const r = spawnSync(bdBin, ['show', id, '--json'], { encoding: 'utf8' });\n        if (r.status !== 0) orphans.push(id);\n    }\n    return orphans;\n}\n\ninterface LinksBlock {\n    parent_epic: string | null;\n    planner_bead: string;\n    epic: string;\n    children: string[];\n    test_issues: string[];\n}\n\nasync function writeLinksInPlace(specPath: string, links: LinksBlock): Promise<void> {\n    const raw = await fs.readFile(specPath, 'utf8');\n    const doc = parseDocument(raw);\n    doc.set('links', links);\n    doc.set('status', 'planned');\n    const out = String(doc);\n    const finalOut = out.endsWith('\\n') ? out : out + '\\n';\n\n    const tmpPath = `${specPath}.tmp`;\n    await fs.writeFile(tmpPath, finalOut, 'utf8');\n    try {\n        await fs.rename(tmpPath, specPath);\n    } catch (err) {\n        await fs.remove(tmpPath).catch(() => {});\n        throw err;\n    }\n}\n\n/** Exposed for tests: the relative sidecar location next to a spec. */\nexport function sidecarPathFromSpec(specPath: string): string {\n    return path.join(path.dirname(specPath), '.apply-state.json');\n}\n","import kleur from 'kleur';\n\nexport interface HandoffInputs {\n    plannerBeadId?: string;\n    plannerJobId?: string;\n    epicId?: string;\n    childrenCount?: number;\n    testIssuesCount?: number;\n}\n\n/**\n * Render the post-reconcile operator handoff.\n *\n * Deliberate non-feature: the composition gate (specialists-roadmap Opp 4)\n * is the operator's decision. xt spec emits a printed `sp chain review`\n * command and stops. Auto-approving or auto-claiming the first task is\n * out-of-band and blocked by the guard test under cli/src/tests/.\n */\nexport function renderReconcileHandoff(inputs: HandoffInputs): string {\n    const lines: string[] = [];\n    lines.push(kleur.green(`✓ reconciled: epic ${inputs.epicId} (${inputs.childrenCount} children, ${inputs.testIssuesCount} test issues)`));\n    lines.push(kleur.dim('  spec.yaml status → planned; links populated'));\n    lines.push('');\n    lines.push(kleur.bold('  next: ') + kleur.cyan(`sp chain review ${inputs.epicId}`));\n    lines.push(kleur.dim('    Composition gate: review the resolved chain shape and approve before any dispatch.'));\n    lines.push(kleur.dim('    xt spec apply does not auto-approve, auto-claim, or auto-dispatch step beads.'));\n    return lines.join('\\n');\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport { Command } from 'commander';\nimport kleur from 'kleur';\n\n// __dirname is available in CJS output (tsup target: cjs)\ndeclare const __dirname: string;\nlet version = '0.0.0';\ntry { version = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8')).version; } catch { /* fallback */ }\n\nimport { createClaudeCommand } from './commands/claude.js';\nimport { createPiCommand } from './commands/pi.js';\nimport { runProjectInit } from './commands/init.js';\nimport { createStatusCommand } from './commands/status.js';\nimport { createResetCommand } from './commands/reset.js';\nimport { createHelpCommand } from './commands/help.js';\nimport { createCleanCommand } from './commands/clean.js';\nimport { createEndCommand } from './commands/end.js';\nimport { createWorktreeCommand } from './commands/worktree.js';\nimport { createAttachCommand } from './commands/attach.js';\nimport { createDocsCommand } from './commands/docs.js';\nimport { createMemoryCommand } from './commands/memory.js';\nimport { createMergeCommand } from './commands/merge.js';\nimport { createDebugCommand } from './commands/debug.js';\nimport { createReportCommand } from './commands/report.js';\nimport { createSkillsCommand } from './commands/skills.js';\nimport { createClaudeSyncCommand } from './commands/claude-sync.js';\nimport { createDoctorCommand } from './commands/doctor.js';\nimport { createBootstrapCommand } from './commands/bootstrap.js';\nimport { createUpdateCommand } from './commands/update.js';\nimport { createReleaseCommand } from './commands/release.js';\nimport { createSpecCommand } from './commands/spec.js';\nimport { createMigrateCommand } from './commands/migrate.js';\nimport { printBanner } from './utils/banner.js';\n\nconst program = new Command();\n\nprogram\n    .name('xtrm')\n    .description('Agent infrastructure layer for runtimes, skills, hooks, extensions, and packages')\n    .version(version);\n\n// Add exit override for cleaner unknown command error\nprogram.exitOverride((err) => {\n    if (err.code === 'commander.unknownCommand') {\n        console.error(kleur.red(`\\n✗ Unknown command. Run 'xtrm --help'\\n`));\n        process.exit(1);\n    }\n    // Preserve exit code for help (0) and version (0); default to 1 for real errors\n    process.exit(err.exitCode ?? 1);\n});\n\n// Main commands\nprogram.addCommand(createClaudeCommand());\nprogram.addCommand(createPiCommand());\nprogram\n    .command('init')\n    .description('Bootstrap xtrm with phased installer: machine → Claude → Pi → project')\n    .option('--dry-run', 'Preview changes without making any modifications', false)\n    .option('-y, --yes', 'Skip confirmation prompts', false)\n    .option('--global', 'Install tooling to user-global scope instead of project-local', false)\n    .option('--prune', 'Remove plugin-era artifacts (Claude plugin cache, stale settings keys)', false)\n    .action(async (opts) => {\n        await runProjectInit(opts);\n    });\nprogram.addCommand(createStatusCommand());\nprogram.addCommand(createResetCommand());\nprogram.addCommand(createCleanCommand());\nprogram.addCommand(createEndCommand());\nprogram.addCommand(createWorktreeCommand());\nprogram.addCommand(createAttachCommand());\nprogram.addCommand(createDocsCommand());\nprogram.addCommand(createMemoryCommand());\nprogram.addCommand(createMergeCommand());\nprogram.addCommand(createDebugCommand());\nprogram.addCommand(createReportCommand());\nprogram.addCommand(createSkillsCommand());\nprogram.addCommand(createClaudeSyncCommand());\nprogram.addCommand(createDoctorCommand());\nprogram.addCommand(createBootstrapCommand());\nprogram.addCommand(createUpdateCommand());\nprogram.addCommand(createReleaseCommand());\nprogram.addCommand(createSpecCommand());\nprogram.addCommand(createMigrateCommand());\nprogram.addCommand(createHelpCommand());\n\n// Default action: show help\nprogram\n    .action(async () => {\n        program.help();\n    });\n\n// Global error handlers\nprocess.on('uncaughtException', (err) => {\n    if ((err as any).code?.startsWith('commander.')) {\n        return;\n    }\n    console.error(kleur.red(`\\n✗ ${err.message}\\n`));\n    process.exit(1);\n});\n\nprocess.on('unhandledRejection', (reason) => {\n    console.error(kleur.red(`\\n✗ ${String(reason)}\\n`));\n    process.exit(1);\n});\n\n// Show banner for setup commands (never for help/version output)\nconst isHelpOrVersion = process.argv.some(a => a === '--help' || a === '-h' || a === '--version' || a === '-V');\nconst isSetupCommand = ['init', 'bootstrap'].includes(process.argv[2] ?? '');\n\n(async () => {\n    if (!isHelpOrVersion && isSetupCommand) {\n        await printBanner(version);\n    }\n    program.parseAsync(process.argv);\n})();\n","import commander from './index.js';\n\n// wrapper to provide named exports for ESM.\nexport const {\n  program,\n  createCommand,\n  createArgument,\n  createOption,\n  CommanderError,\n  InvalidArgumentError,\n  InvalidOptionArgumentError, // deprecated old name\n  Command,\n  Argument,\n  Option,\n  Help,\n} = commander;\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { execSync } from 'node:child_process';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { t } from '../utils/theme.js';\nimport { runClaudeRuntimeSyncPhase } from '../core/claude-runtime-sync.js';\nimport { launchWorktreeSession } from '../utils/worktree-session.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\nimport { inventoryDeps, renderBootstrapPlan } from '../core/machine-bootstrap.js';\n\nfunction getProjectSettingsPath(repoRoot: string): string {\n    return path.join(repoRoot, '.claude', 'settings.json');\n}\n\nfunction hasXtrmHookWiring(settingsPath: string): boolean {\n    if (!fs.existsSync(settingsPath)) return false;\n\n    try {\n        const data = fs.readJsonSync(settingsPath) as {\n            hooks?: Record<string, Array<{ hooks?: Array<{ command?: string }> }>>;\n        };\n\n        const groups = Object.values(data.hooks ?? {});\n        for (const wrappers of groups) {\n            for (const wrapper of wrappers) {\n                for (const hook of wrapper.hooks ?? []) {\n                    if (typeof hook.command === 'string' && hook.command.includes('.xtrm/hooks/')) {\n                        return true;\n                    }\n                }\n            }\n        }\n        return false;\n    } catch {\n        return false;\n    }\n}\n\nexport function createClaudeCommand(): Command {\n    const cmd = new Command('claude')\n        .description('Launch a Claude session in a sandboxed worktree, or manage Claude hook wiring')\n        .argument('[name]', 'Optional session name — used as xt/<name> branch (random if omitted)')\n        .option('--role <name>', 'Launch claude as a specialist role (resolved via `sp view <name>`); mirrors xt pi --role — creates a tmux session (or runs in current pane inside $TMUX) with @agent_task metadata')\n        .option('--bead <id>', 'Attach bead id to the tmux pane via @agent_bead; also appended to the session name slug')\n        .option('--no-attach', 'Create tmux session detached; print `session_name:pane_id` on stdout and exit (default: attach)')\n        .option('--model <name>', 'With --role: forward `--model <name>` to claude (overrides specialist.execution.model)')\n        .option('--thinking <level>', 'With --role: warn-and-drop — claude has no --thinking flag; set thinking on the underlying model config instead')\n        .option('--new-session', 'With --role inside $TMUX: force a fresh tmux session instead of running in the current pane (default outside $TMUX)')\n        .option('--ns', 'Alias for --new-session')\n        .option('--parent <target>', 'With --role: override @agent_parent_session on the target pane (target = tmux session name, id, or #{session_id})')\n        .option('--child', 'With --role: explicit form of the auto-behavior — @agent_parent_session = current pane\\'s session_id')\n        .option('--reuse', 'With --role + --new-session (or outside $TMUX): if a session named role-<slug>[-<bead>] already exists, attach to it instead of auto-suffixing a fresh one')\n        .allowUnknownOption(true)\n        .addHelpText('after', `\nPassthrough:\n  Everything after \\`--\\` is forwarded verbatim to the claude runtime — the\n  primary escape hatch for any claude flag not first-classed here. xt-owned\n  flags (--session-dir, --name, --system-prompt, --append-system-prompt)\n  are rejected; batch-mode flags (--print, --list-models, --export,\n  --mode) are dropped with a warning.\n\nExamples:\n  $ xt claude --role reviewer --bead xyz -- --add-dir ~/notes\n  $ xt claude --role chain-coordinator --model claude-opus-4-8\n`)\n        .action(async (name: string | undefined, opts: {\n            role?: string;\n            bead?: string;\n            attach?: boolean;\n            model?: string;\n            thinking?: string;\n            newSession?: boolean;\n            ns?: boolean;\n            parent?: string;\n            child?: boolean;\n            reuse?: boolean;\n        }) => {\n            // claude has no --thinking flag; if the operator was explicit,\n            // warn and continue (specialist.execution.thinking_level from\n            // sp view is silently dropped for claude in buildRoleTmuxPlan).\n            if (opts.thinking) {\n                console.error(kleur.yellow(\n                    `  ⚠ xt claude --thinking: claude has no --thinking flag; ignoring '${opts.thinking}'. Configure thinking on the model itself.`,\n                ));\n            }\n            const dashIdx = process.argv.indexOf('--');\n            const passthrough = dashIdx >= 0 ? process.argv.slice(dashIdx + 1) : [];\n            await launchWorktreeSession({\n                runtime: 'claude',\n                name,\n                role: opts.role,\n                bead: opts.bead,\n                attach: opts.attach,\n                model: opts.model,\n                thinking: opts.thinking,\n                newSession: Boolean(opts.newSession || opts.ns),\n                parent: opts.parent,\n                child: Boolean(opts.child),\n                reuse: Boolean(opts.reuse),\n                passthrough,\n            });\n        });\n\n    cmd.command('install')\n        .description('Install/refresh Claude settings hook wiring from .xtrm/config/hooks.json')\n        .option('--dry-run', 'Preview without making changes', false)\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .action(async (opts: { dryRun: boolean; yes: boolean }) => {\n            if (!opts.dryRun) {\n                const confirmed = await confirmDestructiveAction({\n                    yes: opts.yes,\n                    message: 'Sync Claude hooks into settings.json?',\n                    initial: true,\n                });\n                if (!confirmed) {\n                    console.log(kleur.dim('  Cancelled\\n'));\n                    return;\n                }\n            }\n\n            const repoRoot = await findRepoRoot();\n            await runClaudeRuntimeSyncPhase({ repoRoot, dryRun: opts.dryRun, isGlobal: false });\n        });\n\n    cmd.command('reload')\n        .alias('reinstall')\n        .description('Re-sync Claude settings hook wiring from the current repo')\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .action(async (opts: { yes: boolean }) => {\n            const confirmed = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: 'Re-sync Claude hooks into settings.json?',\n                initial: true,\n            });\n            if (!confirmed) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            const repoRoot = await findRepoRoot();\n            await runClaudeRuntimeSyncPhase({ repoRoot, dryRun: false, isGlobal: false });\n        });\n\n    cmd.command('status')\n        .description('Show Claude CLI version and .xtrm hook wiring status')\n        .action(async () => {\n            console.log(t.bold('\\n  Claude Code Status\\n'));\n\n            try {\n                const version = execSync('claude --version', { encoding: 'utf8', stdio: 'pipe' }).trim();\n                console.log(t.success(`  ✓ claude CLI: ${version}`));\n            } catch {\n                console.log(kleur.red('  ✗ claude CLI not found'));\n                console.log('');\n                return;\n            }\n\n            const repoRoot = await findRepoRoot();\n            const settingsPath = getProjectSettingsPath(repoRoot);\n            if (hasXtrmHookWiring(settingsPath)) {\n                console.log(t.success(`  ✓ Claude hooks wired (${settingsPath})`));\n            } else {\n                console.log(kleur.yellow('  ⚠ .xtrm hook wiring missing — run: xt claude install'));\n            }\n\n            try {\n                execSync('bd --version', { stdio: 'ignore' });\n                console.log(t.success('  ✓ beads (bd) available'));\n            } catch {\n                console.log(kleur.dim('  ○ beads (bd) not installed'));\n            }\n\n            console.log('');\n        });\n\n    cmd.command('doctor')\n        .description('Run diagnostic checks on Claude Code setup')\n        .action(async () => {\n            console.log(t.bold('\\n  Claude Code Doctor\\n'));\n\n            let allOk = true;\n\n            try {\n                execSync('claude --version', { stdio: 'ignore' });\n                console.log(t.success('  ✓ claude CLI available'));\n            } catch {\n                console.log(kleur.red('  ✗ claude CLI not found — install Claude Code'));\n                allOk = false;\n            }\n\n            const repoRoot = await findRepoRoot();\n            const settingsPath = getProjectSettingsPath(repoRoot);\n            if (hasXtrmHookWiring(settingsPath)) {\n                console.log(t.success('  ✓ .xtrm hooks are wired in .claude/settings.json'));\n            } else {\n                console.log(kleur.yellow('  ⚠ .xtrm hooks not wired — run: xt claude install'));\n                allOk = false;\n            }\n\n            // Managed dependencies — unified inventory\n            const plan = inventoryDeps();\n            renderBootstrapPlan(plan);\n\n            if (!plan.allRequiredPresent) allOk = false;\n\n            console.log('');\n            if (allOk) {\n                console.log(t.boldGreen('  ✓ All checks passed\\n'));\n            } else {\n                console.log(kleur.yellow('  ⚠ Some checks failed — see above\\n'));\n            }\n        });\n\n    return cmd;\n}\n","import fs from 'fs-extra';\nimport path from 'path';\nimport { spawnSync } from 'child_process';\n\ndeclare const __dirname: string;\n\nasync function walkUp(startDir: string, predicate: (dir: string) => Promise<boolean>): Promise<string | null> {\n  let dir = path.resolve(startDir);\n\n  while (true) {\n    if (await predicate(dir)) {\n      return dir;\n    }\n\n    const parent = path.dirname(dir);\n    if (parent === dir) {\n      return null;\n    }\n\n    dir = parent;\n  }\n}\n\nfunction resolveBundleRootFromRuntime(): string | null {\n  const candidates = [\n    path.resolve(__dirname, '../..'),\n    path.resolve(__dirname, '../../..'),\n  ];\n\n  for (const candidate of candidates) {\n    if (fs.existsSync(path.join(candidate, '.xtrm', 'registry.json'))) {\n      return candidate;\n    }\n  }\n\n  return null;\n}\n\nasync function hasSafePackagedMarkers(dir: string): Promise<boolean> {\n  const registryPath = path.join(dir, '.xtrm', 'registry.json');\n  const managedSkillsPath = path.join(dir, '.xtrm', 'skills');\n\n  const [registryStat, skillsStat] = await Promise.all([\n    fs.lstat(registryPath).catch(() => null),\n    fs.lstat(managedSkillsPath).catch(() => null),\n  ]);\n  if (!registryStat || !skillsStat || registryStat.isSymbolicLink() || skillsStat.isSymbolicLink()) {\n    return false;\n  }\n\n  const [registryReal, skillsReal, dirReal] = await Promise.all([\n    fs.realpath(registryPath).catch(() => null),\n    fs.realpath(managedSkillsPath).catch(() => null),\n    fs.realpath(dir).catch(() => null),\n  ]);\n\n  if (!registryReal || !skillsReal || !dirReal) {\n    return false;\n  }\n\n  const rootPrefix = `${dirReal}${path.sep}`;\n  return registryReal.startsWith(rootPrefix) && skillsReal.startsWith(rootPrefix);\n}\n\nasync function isSourceRepoRoot(dir: string): Promise<boolean> {\n  const legacySkillsPath = path.join(dir, 'skills');\n  const legacyHooksPath = path.join(dir, 'hooks');\n  if ((await fs.pathExists(legacySkillsPath)) && (await fs.pathExists(legacyHooksPath))) {\n    return true;\n  }\n\n  return hasSafePackagedMarkers(dir);\n}\n\nasync function isProjectRoot(dir: string): Promise<boolean> {\n  const xtrmPath = path.join(dir, '.xtrm');\n  const gitPath = path.join(dir, '.git');\n  return (await fs.pathExists(xtrmPath)) || (await fs.pathExists(gitPath));\n}\n\n/**\n * Finds the xtrm-tools source repository root (bundle root).\n */\nexport async function findRepoRoot(): Promise<string> {\n  const bundleRoot = resolveBundleRootFromRuntime();\n  if (bundleRoot && await isSourceRepoRoot(bundleRoot)) {\n    return bundleRoot;\n  }\n\n  const fromCwd = await walkUp(process.cwd(), isSourceRepoRoot);\n  if (fromCwd) {\n    return fromCwd;\n  }\n\n  throw new Error(\n    'Could not locate xtrm-tools source repo root from current runtime.\\n' +\n      'Expected one of: .xtrm/registry.json + .xtrm/skills (packaged) or skills/ + hooks/ (source repo). ' +\n      'Reinstall xtrm-tools package or run from cloned repository.',\n  );\n}\n\n/**\n * Finds the current project root for local operations.\n *\n * Resolution order:\n * 1. Nearest ancestor containing `.xtrm/`\n * 2. Nearest ancestor containing `.git/`\n * 3. Fallback to the current working directory\n */\nexport async function findProjectRoot(): Promise<string> {\n  const fromCwd = await walkUp(process.cwd(), isProjectRoot);\n  if (fromCwd) {\n    return fromCwd;\n  }\n\n  return process.cwd();\n}\n\n/**\n * Resolves the MAIN checkout root for `xt install` / `xt update` / `xt claude`\n * defaults — never the worktree dir, even when invoked from one (xtrm-6ofgm).\n *\n * `git rev-parse --git-common-dir` returns the path to the shared `.git`\n * directory: in a normal checkout it points at `<root>/.git`; in a linked\n * worktree it points at `<main>/.git`. The main checkout is therefore the\n * parent of the common dir.\n *\n * Without this, `xt update --apply` run from `.xtrm/worktrees/<name>/`\n * resolves cwd → worktree path → bakes the worktree path into hook command\n * strings in `.claude/settings.json`. Worktrees are ephemeral; their paths\n * vanish and every hook then crashes with MODULE_NOT_FOUND when Claude\n * opens from the main checkout.\n *\n * Falls back to `git rev-parse --show-toplevel` (correct for non-worktree\n * checkouts) and finally to `cwd` if not inside a git repo at all.\n */\nexport function resolveMainProjectRoot(cwd: string = process.cwd()): string {\n  const commonRaw = spawnSync('git', ['rev-parse', '--git-common-dir'], {\n    cwd, encoding: 'utf8', stdio: 'pipe',\n  });\n  if (commonRaw.status === 0) {\n    const commonDir = (commonRaw.stdout ?? '').trim();\n    if (commonDir) {\n      // commonDir is `git rev-parse --git-common-dir` output (trusted git CLI),\n      // not user input.\n      // nosemgrep\n      const absCommon = path.isAbsolute(commonDir) ? commonDir : path.join(cwd, commonDir);\n      // <main>/.git → parent is <main>. Walk one level up regardless of trailing slash.\n      return path.dirname(absCommon);\n    }\n  }\n  const top = spawnSync('git', ['rev-parse', '--show-toplevel'], {\n    cwd, encoding: 'utf8', stdio: 'pipe',\n  });\n  if (top.status === 0) {\n    const topDir = (top.stdout ?? '').trim();\n    if (topDir) return topDir;\n  }\n  return cwd;\n}\n","import kleur from 'kleur';\n\n/** Semantic color tokens */\nexport const t = {\n    // Status\n    success:   (s: string) => kleur.green(s),\n    error:     (s: string) => kleur.red(s),\n    warning:   (s: string) => kleur.yellow(s),\n    info:      (s: string) => kleur.cyan(s),       // was blue — unreadable on dark terminals\n\n    // Hierarchy (3-tier weight system)\n    header:    (s: string) => kleur.bold().white(s),  // section headers\n    label:     (s: string) => kleur.dim(s),           // metadata labels\n    muted:     (s: string) => kleur.gray(s),\n    accent:    (s: string) => kleur.cyan(s),\n    bold:      (s: string) => kleur.bold(s),\n    dim:       (s: string) => kleur.dim(s),\n\n    // Compound\n    boldGreen: (s: string) => kleur.bold().green(s),\n    boldRed:   (s: string) => kleur.bold().red(s),\n};\n\n/** Status symbols with colour baked in */\nexport const sym = {\n    ok:       kleur.green('✓'),\n    fail:     kleur.red('✗'),\n    warn:     kleur.yellow('⚠'),\n\n    // File change states — directional metaphor\n    missing:  kleur.green('+'),\n    outdated: kleur.yellow('↑'),\n    drifted:  kleur.magenta('≠'),    // was red '!' — magenta = conflict/divergence\n\n    arrow:    kleur.gray('→'),\n    bullet:   kleur.gray('•'),\n};\n","import crypto from 'node:crypto';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport fsSync from 'node:fs';\nimport os from 'os';\nimport path from 'path';\nimport { spawnSync } from 'child_process';\nimport { t } from '../utils/theme.js';\nimport { appendHookLog, hashValue, resolveGlobalHooksConfigPath, resolveGlobalHooksRoot } from './global-hooks-bootstrap.js';\nimport { shouldUseGlobalHooks } from './global-hooks-flag.js';\nimport { writeJsonAtomic } from '../utils/atomic-write.js';\n\ndeclare const __dirname: string;\n\ninterface NativeHooksConfig {\n    hooks: Record<string, HookWrapper[]>;\n    statusLine?: {\n        script?: string;\n    };\n}\n\ninterface CommandHook {\n    type: 'command';\n    command: string;\n    timeout?: number;\n    _source?: string;\n    _xtrm?: HookOwnershipMetadata;\n}\n\ninterface HookOwnershipMetadata {\n    version: string;\n    hash: string;\n}\n\ninterface HookWrapper {\n    matcher?: string;\n    hooks: CommandHook[];\n    _source?: string;\n    _xtrm?: HookOwnershipMetadata;\n}\n\nexport interface HookRuntimeSettingsShape {\n    hooks?: Record<string, HookWrapper[]>;\n    statusLine?: {\n        type: 'command';\n        command: string;\n    };\n    [key: string]: unknown;\n}\n\ninterface ClaudeSettings extends HookRuntimeSettingsShape {\n    permissions?: {\n        allow?: string[];\n        defaultMode?: string;\n    };\n    model?: string;\n    skillSuggestions?: {\n        enabled?: boolean;\n    };\n}\n\nexport interface ClaudeRuntimeSyncOptions {\n    repoRoot: string;\n    dryRun?: boolean;\n    isGlobal?: boolean;\n    prune?: boolean;\n}\n\nexport interface ClaudeRuntimeSyncResult {\n    settingsPath: string;\n    hooksEventsWritten: number;\n    hooksEntriesWritten: number;\n    wroteSettings: boolean;\n}\n\nexport interface ReconcileProjectHooksResult {\n    settingsPath: string;\n    changed: boolean;\n    hooksEntries: number;\n}\n\nexport interface ReconcileGlobalClaudeHooksResult {\n    settingsPath: string;\n    changed: boolean;\n    hooksEntries: number;\n}\n\ninterface SafeMergeResult {\n    readonly settings: HookRuntimeSettingsShape;\n    readonly changed: boolean;\n    readonly hooksEntries: number;\n}\n\nconst XTRM_GLOBAL_SOURCE = 'xtrm-global';\n\nexport function renderClaudeRuntimePlanSummary(): void {\n    console.log(kleur.bold('\\n  Claude Runtime Sync'));\n    console.log(`${kleur.cyan('  •')}  read canonical hooks: .xtrm/config/hooks.json`);\n    console.log(`${kleur.cyan('  •')}  resolve project hooks dir: <project>/.xtrm/hooks`);\n    console.log(`${kleur.cyan('  •')}  write generated hooks into Claude settings.json`);\n    console.log(`${kleur.cyan('  •')}  preserve existing settings (permissions/model/skillSuggestions)`);\n}\n\nexport async function runClaudeRuntimeSyncPhase(opts: ClaudeRuntimeSyncOptions): Promise<ClaudeRuntimeSyncResult> {\n    const { repoRoot, dryRun = false, isGlobal = false, prune = false } = opts;\n\n    console.log(t.bold('\\n  ⚙  xtrm-tools  (Claude hooks wiring)'));\n    warnIfOutdated();\n\n    if (isGlobal) {\n        const settingsPath = path.join(os.homedir(), '.claude', 'settings.json');\n        if (shouldUseGlobalHooks()) {\n            const hookResult = await reconcileGlobalClaudeHooks({ dryRun });\n            return {\n                settingsPath: hookResult.settingsPath,\n                hooksEventsWritten: hookResult.changed ? 1 : 0,\n                hooksEntriesWritten: hookResult.hooksEntries,\n                wroteSettings: hookResult.changed,\n            };\n        }\n\n        console.log(t.muted('  ↻ Global install: skipping hook sync (project .claude/settings.json owns hooks)'));\n        console.log(t.label(`  • global settings preserved: ${settingsPath}`));\n        await ensureGlobalStatusLine();\n        return {\n            settingsPath,\n            hooksEventsWritten: 0,\n            hooksEntriesWritten: 0,\n            wroteSettings: false,\n        };\n    }\n\n    const packageRoot = await resolvePackageRoot();\n    const hooksConfigPath = path.join(packageRoot, '.xtrm', 'config', 'hooks.json');\n    const settingsTemplatePath = path.join(packageRoot, '.xtrm', 'config', 'settings.json');\n    const hooksConfig = await fs.readJson(hooksConfigPath) as NativeHooksConfig;\n    const projectHooksDir = path.join(repoRoot, '.xtrm', 'hooks');\n    const generatedHooks = resolveHooksForProjectRuntime(hooksConfig.hooks ?? {}, projectHooksDir);\n    const generatedStatusLine = resolveStatusLineForProjectRuntime(hooksConfig.statusLine, projectHooksDir);\n    const settingsPath = path.join(repoRoot, '.claude', 'settings.json');\n\n    const hasExistingSettings = await fs.pathExists(settingsPath);\n    const baseSettings = await readBaseSettings(settingsTemplatePath);\n    const existingSettings = hasExistingSettings ? await readSettings(settingsPath) : {};\n    const filteredHooks = shouldUseGlobalHooks()\n        ? filterGlobalOwnedProjectHooks(existingSettings.hooks ?? {}, generatedHooks)\n        : generatedHooks;\n\n    const mergedSettings: ClaudeSettings = hasExistingSettings\n        ? { ...existingSettings, hooks: filteredHooks }\n        : { ...baseSettings, hooks: filteredHooks };\n\n    if (generatedStatusLine) {\n        mergedSettings.statusLine = generatedStatusLine;\n    }\n\n    if (prune) {\n        delete mergedSettings.enabledPlugins;\n        delete mergedSettings.extraKnownMarketplaces;\n    }\n\n    const hooksEventsWritten = Object.keys(filteredHooks).length;\n    const hooksEntriesWritten = countHookEntries(filteredHooks);\n\n    if (dryRun) {\n        return { settingsPath, hooksEventsWritten, hooksEntriesWritten, wroteSettings: false };\n    }\n\n    const existingSerialized = hasExistingSettings ? JSON.stringify(existingSettings) : '';\n    const mergedSerialized = JSON.stringify(mergedSettings);\n    if (existingSerialized === mergedSerialized) {\n        await ensureGlobalStatusLine();\n        return { settingsPath, hooksEventsWritten, hooksEntriesWritten, wroteSettings: false };\n    }\n\n    await writeJsonAtomic(settingsPath, mergedSettings);\n    await ensureGlobalStatusLine();\n\n    return { settingsPath, hooksEventsWritten, hooksEntriesWritten, wroteSettings: true };\n}\n\nexport async function reconcileProjectClaudeHooks(\n    repoRoot: string,\n    opts: { dryRun?: boolean } = {},\n): Promise<ReconcileProjectHooksResult> {\n    const { dryRun = false } = opts;\n    const packageRoot = await resolvePackageRoot();\n    const hooksConfigPath = path.join(packageRoot, '.xtrm', 'config', 'hooks.json');\n    const settingsTemplatePath = path.join(packageRoot, '.xtrm', 'config', 'settings.json');\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    const settingsPath = path.join(repoRoot, '.claude', 'settings.json');\n\n    const hooksConfig = await fs.readJson(hooksConfigPath) as NativeHooksConfig;\n    const projectHooksDir = path.join(repoRoot, '.xtrm', 'hooks');\n    const generatedHooks = resolveHooksForProjectRuntime(hooksConfig.hooks ?? {}, projectHooksDir);\n    const generatedStatusLine = resolveStatusLineForProjectRuntime(hooksConfig.statusLine, projectHooksDir);\n    const hooksToWrite = shouldUseGlobalHooks()\n        ? filterGlobalOwnedProjectHooks(await readExistingHooks(settingsPath), generatedHooks)\n        : generatedHooks;\n    const hooksEntries = countHookEntries(hooksToWrite);\n\n    const hasExistingSettings = await fs.pathExists(settingsPath);\n    const existingSettings = hasExistingSettings ? await readSettings(settingsPath) : {};\n    const baseSettings = hasExistingSettings ? existingSettings : await readBaseSettings(settingsTemplatePath);\n    const nextSettings: ClaudeSettings = { ...baseSettings, hooks: hooksToWrite };\n    if (generatedStatusLine && !nextSettings.statusLine) {\n        nextSettings.statusLine = generatedStatusLine;\n    }\n\n    if (JSON.stringify(existingSettings) === JSON.stringify(nextSettings)) {\n        return { settingsPath, changed: false, hooksEntries };\n    }\n\n    if (dryRun) {\n        return { settingsPath, changed: true, hooksEntries };\n    }\n\n    await writeJsonAtomic(settingsPath, nextSettings);\n    return { settingsPath, changed: true, hooksEntries };\n}\n\nexport async function reconcileGlobalClaudeHooks(opts: { dryRun?: boolean } = {}): Promise<ReconcileGlobalClaudeHooksResult> {\n    const { dryRun = false } = opts;\n    const startedAt = Date.now();\n    const settingsPath = path.join(os.homedir(), '.claude', 'settings.json');\n    const hooksConfig = await readGlobalHooksConfig(resolveGlobalHooksConfigPath());\n    const generatedHooks = resolveHooksForGlobalRuntime(hooksConfig.hooks ?? {}, resolveGlobalHooksRoot());\n\n    await appendHookLog({\n        timestamp: new Date().toISOString(),\n        component: 'hooks-migration',\n        event: 'hook.reconcile.start',\n        source: hashValue(settingsPath),\n        action: 'claude',\n        outcome: 'ok',\n        durationMs: 0,\n    });\n\n    const currentSettings = await readSettings(settingsPath);\n    const mergeResult = await safeMergeOwnedHookSettings(currentSettings, generatedHooks, { dryRun });\n    if (!mergeResult.changed) {\n        await ensureGlobalStatusLine();\n        await appendHookLog({\n            timestamp: new Date().toISOString(),\n            component: 'hooks-migration',\n            event: 'hook.reconcile.ok',\n            source: hashValue(settingsPath),\n            action: 'claude',\n            outcome: 'skipped',\n            durationMs: Date.now() - startedAt,\n        });\n        return { settingsPath, changed: false, hooksEntries: mergeResult.hooksEntries };\n    }\n\n    if (!dryRun) {\n        await writeJsonAtomic(settingsPath, mergeResult.settings);\n    }\n\n    await ensureGlobalStatusLine();\n    await appendHookLog({\n        timestamp: new Date().toISOString(),\n        component: 'hooks-migration',\n        event: 'hook.reconcile.ok',\n        source: hashValue(settingsPath),\n        action: 'claude',\n        outcome: 'ok',\n        durationMs: Date.now() - startedAt,\n    });\n    return { settingsPath, changed: !dryRun, hooksEntries: mergeResult.hooksEntries };\n}\n\nasync function ensureGlobalStatusLine(): Promise<void> {\n    const homeDir = os.homedir();\n    const statuslineHookPath = path.join(homeDir, '.xtrm', 'hooks', 'statusline.mjs');\n    const globalSettingsPath = path.join(homeDir, '.claude', 'settings.json');\n    if (!await fs.pathExists(statuslineHookPath)) {\n        return;\n    }\n\n    const settings = await readSettings(globalSettingsPath);\n    const expectedCommand = `node \"${statuslineHookPath}\"`;\n    const currentCommand = (settings.statusLine as { command?: string } | undefined)?.command;\n    if (currentCommand === expectedCommand) {\n        return;\n    }\n\n    settings.statusLine = { type: 'command', command: expectedCommand };\n    await writeJsonAtomic(globalSettingsPath, settings);\n}\n\nexport async function readGlobalHooksConfig(hooksConfigPath: string): Promise<NativeHooksConfig> {\n    return await fs.readJson(hooksConfigPath) as NativeHooksConfig;\n}\n\nexport function resolveHooksForGlobalRuntime(hooks: Record<string, HookWrapper[]>, globalHooksDir: string): Record<string, HookWrapper[]> {\n    const normalizedHooksDir = normalizeHookCommandPath(globalHooksDir);\n    return resolveHooksForRuntime(hooks, normalizedHooksDir);\n}\n\nfunction resolveHooksForProjectRuntime(hooks: Record<string, HookWrapper[]>, projectHooksDir: string): Record<string, HookWrapper[]> {\n    const normalizedHooksDir = normalizeHookCommandPath(projectHooksDir);\n    return resolveHooksForRuntime(hooks, normalizedHooksDir);\n}\n\nfunction resolveHooksForRuntime(hooks: Record<string, HookWrapper[]>, hooksDir: string): Record<string, HookWrapper[]> {\n    const rewrittenHooks: Record<string, HookWrapper[]> = {};\n    for (const [eventName, wrappers] of Object.entries(hooks)) {\n        const wrapperList = Array.isArray(wrappers) ? wrappers : [wrappers as HookWrapper];\n        rewrittenHooks[eventName] = wrapperList.map((wrapper) => ({\n            ...wrapper,\n            hooks: wrapper.hooks.map((hook) => hook.type !== 'command'\n                ? hook\n                : { ...hook, command: rewritePluginRootCommandToProjectHookPath(hook.command, hooksDir) }),\n        }));\n    }\n    return rewrittenHooks;\n}\n\nfunction resolveStatusLineForProjectRuntime(statusLineConfig: NativeHooksConfig['statusLine'], projectHooksDir: string): ClaudeSettings['statusLine'] | undefined {\n    if (!statusLineConfig?.script) {\n        return undefined;\n    }\n\n    const normalizedHooksDir = normalizeHookCommandPath(projectHooksDir);\n    const resolvedScriptPath = resolveStatusLineScriptPath(statusLineConfig.script, normalizedHooksDir);\n\n    return {\n        type: 'command',\n        command: buildScriptCommand(statusLineConfig.script, resolvedScriptPath),\n    };\n}\n\nfunction resolveStatusLineScriptPath(script: string, normalizedHooksDir: string): string {\n    const pluginRootPattern = /^(?:\\$\\{CLAUDE_PLUGIN_ROOT\\}|\\$CLAUDE_PLUGIN_ROOT)\\/hooks\\/(.+)$/;\n    const pluginRootMatch = script.match(pluginRootPattern);\n    if (pluginRootMatch?.[1]) {\n        return normalizeHookCommandPath(path.join(normalizedHooksDir, pluginRootMatch[1]));\n    }\n\n    return normalizeHookCommandPath(path.join(normalizedHooksDir, script));\n}\n\nfunction buildScriptCommand(scriptName: string, resolvedPath: string): string {\n    const ext = path.extname(scriptName).toLowerCase();\n    if (ext === '.js' || ext === '.cjs' || ext === '.mjs') {\n        return `node \"${resolvedPath}\"`;\n    }\n    if (ext === '.sh') {\n        return `bash \"${resolvedPath}\"`;\n    }\n\n    const pythonBin = process.platform === 'win32' ? 'python' : 'python3';\n    return `${pythonBin} \"${resolvedPath}\"`;\n}\n\nfunction rewritePluginRootCommandToProjectHookPath(command: string, normalizedHooksDir: string): string {\n    const pluginRootPatterns = [\n        /\\$\\{CLAUDE_PLUGIN_ROOT\\}\\/hooks\\/([^\\s\"']+)/g,\n        /\\$CLAUDE_PLUGIN_ROOT\\/hooks\\/([^\\s\"']+)/g,\n    ];\n\n    let rewrittenCommand = command;\n    for (const pattern of pluginRootPatterns) {\n        rewrittenCommand = rewrittenCommand.replace(pattern, (_match, relativePath: string) => {\n            const normalizedRelativePath = relativePath.replace(/\\\\/g, '/');\n            const absoluteHookPath = path.join(normalizedHooksDir, normalizedRelativePath);\n            return `\"${normalizeHookCommandPath(absoluteHookPath)}\"`;\n        });\n    }\n\n    return rewrittenCommand;\n}\n\nfunction normalizeHookCommandPath(targetPath: string): string {\n    return targetPath.replace(/\\\\/g, '/');\n}\n\nfunction countHookEntries(hooks: Record<string, HookWrapper[]>): number {\n    return Object.values(hooks).reduce((count, wrappers) => count + wrappers.length, 0);\n}\n\nfunction stableHookHash(wrapper: HookWrapper): string {\n    const canonical = {\n        matcher: wrapper.matcher ?? null,\n        hooks: wrapper.hooks.map((hook) => ({ type: hook.type, command: hook.command, timeout: hook.timeout ?? null })),\n    };\n    return crypto.createHash('sha256').update(JSON.stringify(canonical)).digest('hex');\n}\n\nfunction tagOwnedWrapper(\n    wrapper: HookWrapper,\n    installedVersion: string,\n    _existingWrapper?: HookWrapper,\n): HookWrapper {\n    return {\n        ...wrapper,\n        _source: XTRM_GLOBAL_SOURCE,\n        _xtrm: {\n            version: installedVersion,\n            hash: stableHookHash(wrapper),\n        },\n        hooks: wrapper.hooks.map((hook) => ({ ...hook })),\n    };\n}\n\nfunction hasSameCanonicalHooks(left?: HookWrapper, right?: HookWrapper): boolean {\n    if (!left || !right) {\n        return false;\n    }\n\n    return stableHookHash(left) === stableHookHash(right);\n}\n\nfunction isOwnedWrapper(wrapper: HookWrapper, canonicalHashes: Set<string>): boolean {\n    if (wrapper._source === XTRM_GLOBAL_SOURCE) {\n        return true;\n    }\n\n    const wrapperHash = wrapper._xtrm?.hash ?? stableHookHash(wrapper);\n    return canonicalHashes.has(wrapperHash);\n}\n\nfunction filterGlobalOwnedProjectHooks(existingHooks: Record<string, HookWrapper[]>, generatedHooks: Record<string, HookWrapper[]>): Record<string, HookWrapper[]> {\n    const canonicalHashes = new Set(Object.values(generatedHooks).flat().map((wrapper) => stableHookHash(wrapper)));\n    const filtered: Record<string, HookWrapper[]> = {};\n\n    for (const [eventName, wrappers] of Object.entries(existingHooks)) {\n        const kept = wrappers.filter((wrapper) => !isOwnedWrapper(wrapper, canonicalHashes));\n        if (kept.length > 0) {\n            filtered[eventName] = kept;\n        }\n    }\n\n    for (const [eventName, wrappers] of Object.entries(generatedHooks)) {\n        filtered[eventName] = filtered[eventName] ? [...wrappers, ...filtered[eventName]] : wrappers;\n    }\n\n    return filtered;\n}\n\nexport async function safeMergeOwnedHookSettings(\n    currentSettings: HookRuntimeSettingsShape,\n    generatedHooks: Record<string, HookWrapper[]>,\n    opts: { dryRun?: boolean } = {},\n): Promise<SafeMergeResult> {\n    const installedVersion = await readInstalledVersion();\n    const currentHooks = currentSettings.hooks ?? {};\n    const taggedHooks = Object.fromEntries(\n        Object.entries(generatedHooks).map(([eventName, wrappers]) => {\n            const existingWrappers = currentHooks[eventName] ?? [];\n            return [\n                eventName,\n                wrappers.map((wrapper) => tagOwnedWrapper(\n                    wrapper,\n                    installedVersion,\n                    existingWrappers.find((existingWrapper) => hasSameCanonicalHooks(existingWrapper, wrapper)),\n                )),\n            ];\n        }),\n    ) as Record<string, HookWrapper[]>;\n    const canonicalHashes = new Set(Object.values(taggedHooks).flat().map((wrapper) => wrapper._xtrm?.hash ?? stableHookHash(wrapper)));\n    const mergedHooks: Record<string, HookWrapper[]> = {};\n    const globalHooksRoot = path.resolve(os.homedir(), '.xtrm', 'hooks');\n\n    for (const [eventName, wrappers] of Object.entries(taggedHooks)) {\n        mergedHooks[eventName] = [...wrappers];\n    }\n\n    for (const [eventName, wrappers] of Object.entries(currentHooks)) {\n        const mergedWrappers = mergedHooks[eventName] ?? [];\n        for (const wrapper of wrappers) {\n            const entryHash = stableHookHash(wrapper);\n            if (wrapper._source === XTRM_GLOBAL_SOURCE || canonicalHashes.has(entryHash) || canonicalHashes.has(wrapper._xtrm?.hash ?? '')) {\n                await appendHookLog({ timestamp: new Date().toISOString(), component: 'hooks-migration', event: 'hook.entry.owned-replaced', entryKey: eventName, source: hashValue(entryHash), action: 'replace', outcome: 'ok', durationMs: 0 });\n                continue;\n            }\n\n            if (conflictsWithCanonical(wrapper, globalHooksRoot)) {\n                console.warn(`[hook.entry.foreign] ${eventName} ${hashValue(entryHash)}`);\n                await appendHookLog({ timestamp: new Date().toISOString(), component: 'hooks-migration', event: 'hook.entry.foreign-preserved', entryKey: eventName, source: hashValue(entryHash), action: 'preserve', outcome: 'ok', durationMs: 0 });\n            }\n\n            mergedWrappers.push(wrapper);\n        }\n\n        if (mergedWrappers.length > 0) {\n            mergedHooks[eventName] = mergedWrappers;\n        }\n    }\n\n    for (const [eventName, wrappers] of Object.entries(taggedHooks)) {\n        for (const wrapper of wrappers) {\n            await appendHookLog({ timestamp: new Date().toISOString(), component: 'hooks-migration', event: 'hook.entry.new-added', entryKey: eventName, source: hashValue(wrapper._xtrm?.hash ?? stableHookHash(wrapper)), action: 'add', outcome: 'ok', durationMs: 0 });\n        }\n    }\n\n    const nextSettings: HookRuntimeSettingsShape = { ...currentSettings, hooks: mergedHooks };\n    const changed = JSON.stringify(currentSettings) !== JSON.stringify(nextSettings);\n    return { settings: nextSettings, changed: changed && !opts.dryRun, hooksEntries: countHookEntries(taggedHooks) };\n}\n\nfunction conflictsWithCanonical(wrapper: HookWrapper, globalHooksRoot: string): boolean {\n    if (wrapper._source === XTRM_GLOBAL_SOURCE) {\n        return true;\n    }\n\n    if (!Array.isArray(wrapper.hooks)) {\n        return false;\n    }\n\n    return wrapper.hooks.some((hook) => typeof hook.command === 'string' && commandTargetsGlobalHook(hook.command, globalHooksRoot));\n}\n\nfunction commandTargetsGlobalHook(command: string, globalHooksRoot: string): boolean {\n    let realRoot: string;\n    try {\n        realRoot = fsSync.realpathSync(globalHooksRoot);\n    } catch {\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        realRoot = path.resolve(globalHooksRoot);\n    }\n\n    for (const token of extractCommandPathTokens(command)) {\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        const resolvedTokenPath = path.resolve(expandTilde(token));\n        let realTokenPath: string;\n        try {\n            realTokenPath = fsSync.realpathSync(resolvedTokenPath);\n        } catch {\n            // Missing file — treat lexical path as authoritative for containment;\n            // a canonical hook path that resolves cleanly is trustworthy even if\n            // the file has not been materialised yet.\n            realTokenPath = resolvedTokenPath;\n        }\n\n        const relativePath = path.relative(realRoot, realTokenPath);\n        if (relativePath !== '' && !relativePath.startsWith('..') && !path.isAbsolute(relativePath)) {\n            return true;\n        }\n    }\n\n    return false;\n}\n\nfunction extractCommandPathTokens(command: string): string[] {\n    const matches = command.match(/\"([^\"]+)\"|'([^']+)'|([^\\s]+)/g) ?? [];\n    return matches\n        .map((match) => match.replace(/^['\"]|['\"]$/g, ''))\n        .filter((token) => token.includes('.xtrm/hooks/'));\n}\n\nfunction expandTilde(targetPath: string): string {\n    if (!targetPath.startsWith('~/')) {\n        return targetPath;\n    }\n\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    return path.join(os.homedir(), targetPath.slice(2));\n}\n\nasync function readExistingHooks(settingsPath: string): Promise<Record<string, HookWrapper[]>> {\n    const settings = await readSettings(settingsPath);\n    return settings.hooks ?? {};\n}\n\nasync function readInstalledVersion(): Promise<string> {\n    const packageRoot = await resolvePackageRoot();\n    const pkg = await fs.readJson(path.join(packageRoot, 'package.json')) as { version?: string };\n    return pkg.version ?? '0.0.0';\n}\n\nasync function readSettings(settingsPath: string): Promise<ClaudeSettings> {\n    try {\n        return await fs.readJson(settingsPath) as ClaudeSettings;\n    } catch {\n        return {};\n    }\n}\n\nasync function readBaseSettings(settingsTemplatePath: string): Promise<ClaudeSettings> {\n    try {\n        return await fs.readJson(settingsTemplatePath) as ClaudeSettings;\n    } catch {\n        return { permissions: { allow: [], defaultMode: 'default' }, skillSuggestions: { enabled: true } };\n    }\n}\n\nasync function resolvePackageRoot(): Promise<string> {\n    const candidates = [path.resolve(__dirname, '../..'), path.resolve(__dirname, '../../..')];\n    for (const candidate of candidates) {\n        const hooksConfigPath = path.join(candidate, '.xtrm', 'config', 'hooks.json');\n        if (await fs.pathExists(hooksConfigPath)) {\n            return candidate;\n        }\n    }\n\n    throw new Error('Failed to locate xtrm-tools package root (.xtrm/config/hooks.json not found).');\n}\n\nfunction warnIfOutdated(): void {\n    try {\n        const localPkg = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../package.json'), 'utf8'));\n        const result = spawnSync('npm', ['show', 'xtrm-tools', 'version', '--json'], { encoding: 'utf8', stdio: 'pipe', timeout: 5000 });\n        if (result.status !== 0 || !result.stdout) return;\n\n        const npmVersion: string = JSON.parse(result.stdout.trim());\n        const parse = (value: string) => value.split('.').map(Number);\n        const [lMaj, lMin, lPat] = parse(localPkg.version);\n        const [rMaj, rMin, rPat] = parse(npmVersion);\n        const isNewer = rMaj > lMaj || (rMaj === lMaj && rMin > lMin) || (rMaj === lMaj && rMin === lMin && rPat > lPat);\n        if (isNewer) {\n            console.log(t.warning(`  ⚠  npm has a newer version (${npmVersion} > ${localPkg.version})`));\n            console.log(t.label('     Run: npm install -g xtrm-tools@latest'));\n        }\n    } catch {\n        // network failure or parse error — silently skip\n    }\n}\n","import crypto from 'node:crypto';\nimport fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { writeJsonAtomic } from '../utils/atomic-write.js';\n\ninterface GlobalHooksBootstrapOptions {\n  readonly force?: boolean;\n}\n\ninterface GlobalHooksBootstrapResult {\n  readonly installedVersion: string;\n  readonly changed: boolean;\n}\n\ninterface HookLogEvent {\n  readonly timestamp: string;\n  readonly component: 'hooks-migration';\n  readonly event: string;\n  readonly source?: string;\n  readonly entryKey?: string;\n  readonly action?: string;\n  readonly outcome?: 'ok' | 'skipped' | 'error';\n  readonly durationMs?: number;\n}\n\nconst COPY_FILTER = (sourcePath: string): boolean => !sourcePath.endsWith('__pycache__');\n\nfunction hashValue(value: string): string {\n  return crypto.createHash('sha256').update(value).digest('hex');\n}\n\nfunction resolveGlobalHooksRoot(): string {\n  return path.join(os.homedir(), '.xtrm', 'hooks');\n}\n\nfunction resolveGlobalHooksConfigPath(): string {\n  return path.join(os.homedir(), '.xtrm', 'config', 'hooks.json');\n}\n\nfunction resolveStatePath(): string {\n  return path.join(resolveGlobalHooksRoot(), 'state.json');\n}\n\nfunction resolveLogPath(): string {\n  return path.join(os.homedir(), '.xtrm', 'logs', 'skills-migration.jsonl');\n}\n\nasync function appendHookLog(event: HookLogEvent): Promise<void> {\n  const logPath = resolveLogPath();\n  await fs.ensureDir(path.dirname(logPath));\n  await fs.appendFile(logPath, `${JSON.stringify(event)}\\n`);\n}\n\nasync function readInstalledVersion(): Promise<string | null> {\n  const statePath = resolveStatePath();\n  if (!await fs.pathExists(statePath)) {\n    return null;\n  }\n\n  const state = await fs.readJson(statePath) as { installedVersion?: string };\n  return typeof state.installedVersion === 'string' ? state.installedVersion : null;\n}\n\nexport async function ensureGlobalHooksBootstrapped(pkgRoot: string, opts: GlobalHooksBootstrapOptions = {}): Promise<GlobalHooksBootstrapResult> {\n  const startedAt = Date.now();\n  const packageJsonPath = path.join(pkgRoot, 'package.json');\n  const packageJson = await fs.readJson(packageJsonPath) as { version?: string };\n  const installedVersion = packageJson.version;\n\n  if (!installedVersion) {\n    throw new Error(`Failed to read package version from ${packageJsonPath}.`);\n  }\n\n  const sourceHooksRoot = path.join(pkgRoot, '.xtrm', 'hooks');\n  const sourceHooksConfigPath = path.join(pkgRoot, '.xtrm', 'config', 'hooks.json');\n  const targetHooksRoot = resolveGlobalHooksRoot();\n  const targetHooksConfigPath = resolveGlobalHooksConfigPath();\n  const statePath = resolveStatePath();\n\n  await appendHookLog({\n    timestamp: new Date().toISOString(),\n    component: 'hooks-migration',\n    event: 'hook.bootstrap.start',\n    source: hashValue(sourceHooksRoot),\n    outcome: 'ok',\n    durationMs: 0,\n  });\n\n  const currentVersion = await readInstalledVersion();\n  if (!opts.force && currentVersion === installedVersion && await fs.pathExists(targetHooksRoot) && await fs.pathExists(targetHooksConfigPath)) {\n    await appendHookLog({\n      timestamp: new Date().toISOString(),\n      component: 'hooks-migration',\n      event: 'hook.bootstrap.ok',\n      source: hashValue(targetHooksRoot),\n      action: 'noop',\n      outcome: 'skipped',\n      durationMs: Date.now() - startedAt,\n    });\n    return { installedVersion, changed: false };\n  }\n\n  try {\n    await fs.remove(targetHooksRoot);\n    await fs.copy(sourceHooksRoot, targetHooksRoot, { filter: COPY_FILTER });\n    await fs.ensureDir(path.dirname(targetHooksConfigPath));\n    await fs.copy(sourceHooksConfigPath, targetHooksConfigPath);\n    await writeJsonAtomic(statePath, {\n      installedVersion,\n      installedFrom: pkgRoot,\n    }, { expectedRoot: targetHooksRoot });\n\n    await appendHookLog({\n      timestamp: new Date().toISOString(),\n      component: 'hooks-migration',\n      event: 'hook.bootstrap.ok',\n      source: hashValue(targetHooksRoot),\n      action: 'copy',\n      outcome: 'ok',\n      durationMs: Date.now() - startedAt,\n    });\n\n    return { installedVersion, changed: true };\n  } catch (error) {\n    await appendHookLog({\n      timestamp: new Date().toISOString(),\n      component: 'hooks-migration',\n      event: 'hook.bootstrap.ok',\n      source: hashValue(targetHooksRoot),\n      action: 'copy',\n      outcome: 'error',\n      durationMs: Date.now() - startedAt,\n    });\n    throw error;\n  }\n}\n\nexport { appendHookLog, hashValue, resolveGlobalHooksConfigPath, resolveGlobalHooksRoot };\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport crypto from 'node:crypto';\n\n/**\n * Atomically write JSON to a target path.\n * - Rejects if targetPath's parent dir is a symlink pointing outside its expected root.\n * - Writes to a same-directory temp file, then rename (POSIX-atomic on same filesystem).\n * - Trailing newline is written as part of the same buffer, not a separate append.\n *\n * expectedRoot (optional): if provided, the realpath of dirname(targetPath) must be a\n * descendant of the realpath of expectedRoot. Missing parents are created before the\n * check; the check runs after parent creation so a freshly-ensured tree is valid.\n */\nexport async function writeJsonAtomic(\n    targetPath: string,\n    data: unknown,\n    opts: { spaces?: number; expectedRoot?: string } = {},\n): Promise<void> {\n    const { spaces = 2, expectedRoot } = opts;\n    const parentDir = path.dirname(targetPath);\n\n    await fs.ensureDir(parentDir);\n\n    if (expectedRoot) {\n        const [realParent, realRoot] = await Promise.all([\n            fs.realpath(parentDir),\n            fs.realpath(expectedRoot).catch(() => null),\n        ]);\n        if (realRoot === null) {\n            throw new Error(`Refusing to write ${targetPath}: expectedRoot ${expectedRoot} does not exist`);\n        }\n        const rel = path.relative(realRoot, realParent);\n        if (rel !== '' && (rel.startsWith('..') || path.isAbsolute(rel))) {\n            throw new Error(\n                `Refusing to write ${targetPath}: resolved parent ${realParent} escapes expectedRoot ${realRoot}`,\n            );\n        }\n    }\n\n    const suffix = `.tmp-${process.pid}-${crypto.randomBytes(4).toString('hex')}`;\n    const tmpPath = `${targetPath}${suffix}`;\n    const payload = `${JSON.stringify(data, null, spaces)}\\n`;\n\n    try {\n        await fs.writeFile(tmpPath, payload, 'utf8');\n        await fs.rename(tmpPath, targetPath);\n    } catch (err) {\n        await fs.remove(tmpPath).catch(() => undefined);\n        throw err;\n    }\n}\n","export function shouldUseGlobalHooks(): boolean {\n  return process.env.XTRM_GLOBAL_HOOKS === '1';\n}\n","import kleur from 'kleur';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport { mkdirSync, writeFileSync, readFileSync, existsSync, symlinkSync, unlinkSync, lstatSync, readlinkSync, rmSync, readdirSync } from 'node:fs';\n\nimport { shouldUseGlobalSkills } from '../core/global-skills-flag.js';\nimport { ensureAgentsSkillsSymlink } from '../core/skills-scaffold.js';\nimport { runPiLaunchPreflight } from '../core/pi-runtime.js';\n\nexport interface WorktreeSessionOptions {\n    runtime: 'claude' | 'pi';\n    name?: string;\n    role?: string;\n    bead?: string;\n    attach?: boolean;\n    /** Explicit --model override for pi role sessions; wins over specialist default. */\n    model?: string;\n    /** Explicit --thinking level override for pi role sessions; wins over specialist default. */\n    thinking?: string;\n    /** With --role: force a new tmux session even when inside $TMUX. Outside $TMUX this is the (unchanged) default. */\n    newSession?: boolean;\n    /** With --role: override @agent_parent_session on the target pane (tmux session name, id, or #{session_id}). */\n    parent?: string;\n    /** With --role: explicit form of the auto-behavior — @agent_parent_session = current pane's #{session_id}. --parent wins over --child when both set. */\n    child?: boolean;\n    /** When --new-session (or outside $TMUX) hits a session-name collision, attach to the existing session instead of auto-suffixing. */\n    reuse?: boolean;\n    /** Raw argv after `--` on the xt pi command; forwarded verbatim to pi. */\n    passthrough?: string[];\n}\n\nfunction worktreeHasProjectUserPacks(worktreePath: string): boolean {\n    const userPacksRoot = path.join(worktreePath, '.xtrm', 'skills', 'user', 'packs');\n    if (!existsSync(userPacksRoot)) {\n        return false;\n    }\n\n    return readdirSync(userPacksRoot).length > 0;\n}\n\nfunction verifyGlobalPointer(): void {\n    const pointerPath = path.join(os.homedir(), '.claude', 'skills');\n    const stat = lstatSync(pointerPath);\n    if (!stat.isSymbolicLink()) {\n        throw new Error(`global skills pointer is not a symlink: ${pointerPath}`);\n    }\n\n    const targetPath = readlinkSync(pointerPath);\n    const resolvedTarget = path.resolve(path.dirname(pointerPath), targetPath);\n    if (!existsSync(resolvedTarget)) {\n        throw new Error(`global skills pointer target missing: ${resolvedTarget}`);\n    }\n}\n\nexport interface ResolvedRole {\n    name: string;\n    systemPrompt: string;\n    skillPaths: string[];\n    /** specialist.execution.model — default pi --model for role. */\n    model?: string;\n    /** specialist.execution.thinking_level — default pi --thinking for role. */\n    thinkingLevel?: string;\n    /** specialist.execution.extensions — per-role opt-in/opt-out map. */\n    extensions?: Record<string, boolean>;\n}\n\n// xt-owned flags a passthrough must not clobber. Reject with a clear error if\n// the user tries to pass any of these after `--`. Session naming, prompt, and\n// session-dir are set by the launcher and re-passing them silently would break\n// address routing or duplicate state.\nconst ROLE_GUARDED_PI_FLAGS: readonly string[] = [\n    '--session-dir',\n    '--name',\n    '--system-prompt',\n    '--append-system-prompt',\n] as const;\n\n// Pi flags that contradict interactive coordination or invoke pi as a batch\n// tool. Warn but drop rather than fail — the caller may have tried to reuse a\n// script.\nconst ROLE_SKIPPED_PI_FLAGS: readonly string[] = [\n    '--print',\n    '--list-models',\n    '--export',\n    '--mode',\n] as const;\n\nexport interface PiArgvGuardResult {\n    guardedError?: string;\n    warnings: string[];\n    filteredArgs: string[];\n}\n\n// Pure — no I/O. Split so tests can drive it directly.\nexport function guardRolePassthrough(passthrough: string[]): PiArgvGuardResult {\n    const warnings: string[] = [];\n    const filteredArgs: string[] = [];\n    for (let i = 0; i < passthrough.length; i++) {\n        const arg = passthrough[i];\n        const bare = arg.split('=', 1)[0];\n        if (ROLE_GUARDED_PI_FLAGS.includes(bare)) {\n            return {\n                guardedError: `xt pi --role: ${bare} is set by the launcher and cannot be passed after --`,\n                warnings,\n                filteredArgs: [],\n            };\n        }\n        if (ROLE_SKIPPED_PI_FLAGS.includes(bare)) {\n            warnings.push(`xt pi --role: ignoring ${bare} — incompatible with interactive coordination`);\n            // consume value if next arg is not another flag\n            if (!arg.includes('=') && i + 1 < passthrough.length && !passthrough[i + 1].startsWith('-')) {\n                i += 1;\n            }\n            continue;\n        }\n        filteredArgs.push(arg);\n    }\n    return { warnings, filteredArgs };\n}\n\n// Resolve a specialist.skills.paths entry to an absolute file path.\n//\n// Precedence, matching the operator's mental model \"try local override,\n// else canonical global\":\n//   1. absolute or ~-prefixed → use verbatim (author knows what they want)\n//   2. relative + exists at mainRepoRoot → repo-local override\n//   3. relative + exists at $HOME → canonical global (post-migration home)\n//   4. otherwise → return the repo-resolved path so pi produces the loud\n//      \"skill not found\" error at the exact absolute location the operator\n//      can then fix\n//\n// Rationale: after xtrm-bq7yd's global-skills migration, canonical skills\n// live at ~/.xtrm/skills/active/... The repo's .xtrm/skills/active/ often has\n// only a subset (or partial symlinks from an in-flight migration). Resolving\n// exclusively against mainRepoRoot silently sends pi at a path that doesn't\n// exist. Falling back to $HOME picks up the canonical global. See xtmux-1rn.\n// Post-y0tdg the layout flattens further and resolution can simplify to\n// querying pi's own settings.json chain, but that's follow-up work.\n// Exported for unit testing.\nexport function resolveSkillPath(mainRepoRoot: string, rawPath: string): string {\n    if (path.isAbsolute(rawPath)) return rawPath;\n    if (rawPath === '~') return os.homedir();\n    if (rawPath.startsWith('~/')) return path.join(os.homedir(), rawPath.slice(2));\n    const repoResolved = path.resolve(mainRepoRoot, rawPath);\n    if (existsSync(repoResolved)) return repoResolved;\n    const homeResolved = path.resolve(os.homedir(), rawPath);\n    if (existsSync(homeResolved)) return homeResolved;\n    return repoResolved;\n}\n\n// Exposed for unit testing. sp view <name> --raw is the source of truth for\n// specialist resolution — do not reimplement its .specialists/user + installed\n// package precedence here.\nexport function parseSpecialistJson(name: string, raw: string, mainRepoRoot: string = process.cwd()): ResolvedRole {\n    let parsed: unknown;\n    try {\n        parsed = JSON.parse(raw);\n    } catch {\n        throw new Error(`sp view ${name} --raw did not return JSON`);\n    }\n    const spec = (parsed as { specialist?: Record<string, unknown> } | null)?.specialist;\n    if (!spec || typeof spec !== 'object') {\n        throw new Error(`role '${name}': missing 'specialist' key in sp output`);\n    }\n    const promptSection = (spec as { prompt?: unknown }).prompt as { system?: unknown } | undefined;\n    const systemPrompt = promptSection?.system;\n    if (typeof systemPrompt !== 'string' || !systemPrompt.trim()) {\n        throw new Error(`role '${name}': specialist.prompt.system is empty`);\n    }\n    const skillsSection = (spec as { skills?: unknown }).skills as { paths?: unknown } | undefined;\n    const rawPaths = skillsSection?.paths;\n    const skillPaths = Array.isArray(rawPaths)\n        ? rawPaths\n            .filter((p): p is string => typeof p === 'string' && p.length > 0)\n            .map((skillPath) => resolveSkillPath(mainRepoRoot, skillPath))\n        : [];\n    const mode = (spec as { system_prompt_mode?: unknown }).system_prompt_mode;\n    if (mode === 'replace') {\n        // Interactive pi must keep AGENTS.md + coding base. Warn and force append.\n        process.stderr.write(kleur.yellow(\n            `  ⚠ role '${name}': system_prompt_mode=replace ignored; forcing append\\n`,\n        ));\n    }\n\n    // execution.{model,thinking_level,extensions} — all optional. CLI flags win\n    // over these at launch time; specialists set them as sensible defaults.\n    const execution = (spec as { execution?: unknown }).execution as\n        | { model?: unknown; thinking_level?: unknown; extensions?: unknown }\n        | undefined;\n    const model = typeof execution?.model === 'string' && execution.model ? execution.model : undefined;\n    const thinkingLevel = typeof execution?.thinking_level === 'string' && execution.thinking_level ? execution.thinking_level : undefined;\n    let extensions: Record<string, boolean> | undefined;\n    if (execution?.extensions && typeof execution.extensions === 'object' && !Array.isArray(execution.extensions)) {\n        const map: Record<string, boolean> = {};\n        for (const [k, v] of Object.entries(execution.extensions as Record<string, unknown>)) {\n            if (typeof v === 'boolean') map[k] = v;\n        }\n        if (Object.keys(map).length > 0) extensions = map;\n    }\n    return { name, systemPrompt, skillPaths, model, thinkingLevel, extensions };\n}\n\nexport function resolveRole(name: string, mainRepoRoot: string = process.cwd()): ResolvedRole {\n    const r = spawnSync('sp', ['view', name, '--raw'], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n    });\n    if (r.status !== 0) {\n        const stderr = (r.stderr ?? '').trim() || 'unknown error';\n        throw new Error(`role '${name}' not found via sp view (${stderr})`);\n    }\n    return parseSpecialistJson(name, r.stdout ?? '', mainRepoRoot);\n}\n\nfunction slugifyForSession(input: string): string {\n    const s = input.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n    return s.slice(0, 32) || 'x';\n}\n\nfunction shellQuote(s: string): string {\n    return `'${s.replace(/'/g, `'\\\\''`)}'`;\n}\n\nexport interface RoleTmuxPlan {\n    sessionName: string;\n    /** Runtime binary — 'pi' or 'claude'. */\n    runtimeCmd: 'pi' | 'claude';\n    /** Argv passed to the runtime binary (excluding the binary itself). */\n    runtimeArgs: string[];\n    /** Shell-quoted command line for `tmux new-session ...` (includes the binary). */\n    runtimeCmdString: string;\n    paneOptions: Array<{ key: string; value: string }>;\n}\n\n// Pure — no I/O. Exported for unit testing.\nexport function chooseAttachCommand(sessionName: string, insideTmux: boolean): string[] {\n    return insideTmux\n        ? ['switch-client', '-t', sessionName]\n        : ['attach-session', '-t', sessionName];\n}\n\nexport function buildRoleTmuxPlan(args: {\n    /** Which runtime binary this plan targets. */\n    runtime: 'pi' | 'claude';\n    role: ResolvedRole;\n    bead?: string;\n    parentSessionId: string;\n    promptFile: string;\n    /** Verbatim system prompt content, needed for the claude runtime which\n     * takes `--append-system-prompt <prompt>` (a string), not a file path. */\n    systemPrompt: string;\n    /** CLI --model override; wins over role.model. */\n    modelOverride?: string;\n    /** CLI --thinking override; wins over role.thinkingLevel. Silently dropped\n     * for claude (no --thinking flag) — caller warns at CLI level if the user\n     * explicitly passed --thinking to xt claude. */\n    thinkingOverride?: string;\n    /** Argv after `--` on the xt command line, already guard-checked. */\n    passthrough?: string[];\n}): RoleTmuxPlan {\n    const { runtime, role, bead, parentSessionId, promptFile, systemPrompt, modelOverride, thinkingOverride, passthrough } = args;\n    const roleSlug = slugifyForSession(role.name);\n    // Include runtime in the session name so xt pi --role X --bead Y and\n    // xt claude --role X --bead Y produce distinguishable sessions\n    // (role-pi-X-Y vs role-claude-X-Y) instead of colliding on role-X-Y and\n    // relying on xtmux-1lb.6's auto-suffix. Operator's mental model is one\n    // pi + one claude flavor of the same specialist, not \"the second one\n    // gets a random hex\". See xtmux-3h8.\n    const sessionName = bead\n        ? `role-${runtime}-${roleSlug}-${slugifyForSession(bead)}`\n        : `role-${runtime}-${roleSlug}`;\n\n    const runtimeArgs: string[] = [];\n\n    if (runtime === 'pi') {\n        // Pi: file-based system prompt (--append-system-prompt <file>);\n        // repo-native --skill <path> for each of the role's skills.\n        runtimeArgs.push('--append-system-prompt', promptFile);\n        for (const skill of role.skillPaths) {\n            runtimeArgs.push('--skill', skill);\n        }\n        // Extensions: trust pi's own discovery (~/.pi/agent/settings.json plus\n        // any per-repo settings). Previously (PR #365) the launcher emitted\n        // `--no-extensions -e <name>...` from a curated allow-list, but `pi -e`\n        // takes a **filesystem path**, not a registry name — the launcher was\n        // silently crashing pi on startup. Drop the policy; trust discovery.\n        // See xtmux-3rs.\n    } else {\n        // Claude: string-based system prompt (--append-system-prompt <prompt>);\n        // skills are resolved from cwd's .claude/skills/ (the worktree scaffold\n        // already symlinks that at launch), so no CLI flag needed. Skip the\n        // permission gate — sandboxed worktrees are the trust boundary.\n        runtimeArgs.push('--append-system-prompt', systemPrompt);\n        runtimeArgs.push('--dangerously-skip-permissions');\n    }\n\n    // Model: CLI override wins over specialist default. Both runtimes accept\n    // --model <name>; pi and claude resolve their own defaults when unset.\n    const model = modelOverride ?? role.model;\n    if (model) runtimeArgs.push('--model', model);\n\n    // Thinking: pi-only. Claude has no --thinking flag; silently drop when\n    // the target is claude (caller warns at CLI-level if user was explicit).\n    if (runtime === 'pi') {\n        const thinking = thinkingOverride ?? role.thinkingLevel;\n        if (thinking) runtimeArgs.push('--thinking', thinking);\n    }\n\n    // Passthrough: append verbatim (caller must have run guardRolePassthrough\n    // first to reject xt-owned flags and drop batch-mode incompatibles).\n    if (passthrough && passthrough.length > 0) {\n        runtimeArgs.push(...passthrough);\n    }\n\n    const runtimeCmdString = [runtime, ...runtimeArgs].map(shellQuote).join(' ');\n\n    // Pane metadata written on the target pane at launch time. Picker + safe-\n    // send-pointer + handoff read these. @agent_state=idle so the picker sees\n    // the pane immediately (the runtime's own agent-state hook won't fire\n    // until the first turn). @agent_prompt_file lets the picker preview show\n    // which role is running.\n    const paneOptions: Array<{ key: string; value: string }> = [\n        { key: '@agent_parent_session', value: parentSessionId },\n        { key: '@agent_task', value: `role:${role.name}` },\n        { key: '@agent_state', value: 'idle' },\n        { key: '@agent_prompt_file', value: promptFile },\n    ];\n    if (bead) paneOptions.push({ key: '@agent_bead', value: bead });\n\n    return { sessionName, runtimeCmd: runtime, runtimeArgs, runtimeCmdString, paneOptions };\n}\n\n/**\n * Environment variables exported to the pi child process so scripts/agent-\n * state.sh (and the picker's own reads) can find the metadata without an\n * extra tmux query. Redundant with paneOptions on purpose — the launcher\n * writes options once at spawn (state=idle etc.), and env vars survive re-\n * execs the way pane options do not. xtmux-1lb.5.1.\n */\nexport function buildAgentEnv(args: {\n    bead?: string;\n    role: string;\n    promptFile: string;\n    parentSessionId: string;\n}): Record<string, string> {\n    const { bead, role, promptFile, parentSessionId } = args;\n    const env: Record<string, string> = {\n        XTMUX_AGENT_TASK: `role:${role}`,\n        XTMUX_AGENT_PROMPT_FILE: promptFile,\n        XTMUX_AGENT_PARENT_SESSION: parentSessionId,\n    };\n    if (bead) env.XTMUX_AGENT_BEAD = bead;\n    return env;\n}\n\nfunction currentTmuxSessionId(): string {\n    if (!process.env.TMUX) return '';\n    const r = spawnSync('tmux', ['display-message', '-p', '-F', '#{session_id}'], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n    });\n    return r.status === 0 ? (r.stdout ?? '').trim() : '';\n}\n\nfunction randomSlug(len: number = 4): string {\n    return Math.random().toString(36).slice(2, 2 + len);\n}\n\nfunction gitRepoRoot(cwd: string): string | null {\n    const r = spawnSync('git', ['rev-parse', '--show-toplevel'], {\n        cwd, stdio: 'pipe', encoding: 'utf8',\n    });\n    return r.status === 0 ? (r.stdout ?? '').trim() : null;\n}\n\nfunction gitMainRepoRoot(cwd: string): string | null {\n    const common = spawnSync('git', ['rev-parse', '--git-common-dir'], {\n        cwd,\n        stdio: 'pipe',\n        encoding: 'utf8',\n    });\n\n    if (common.status !== 0) return null;\n\n    const raw = (common.stdout ?? '').trim();\n    if (!raw) return null;\n    const commonDir = path.isAbsolute(raw) ? raw : path.resolve(cwd, raw);\n    return commonDir.endsWith('/.git') || commonDir.endsWith('\\\\.git')\n        ? path.dirname(commonDir)\n        : commonDir;\n}\n\nfunction resolveStatuslineScript(worktreePath: string): string | null {\n    const localStatusline = path.join(worktreePath, '.xtrm', 'hooks', 'statusline.mjs');\n    if (existsSync(localStatusline)) return localStatusline;\n\n    const repoStatusline = path.join(worktreePath, 'hooks', 'statusline.mjs');\n    if (existsSync(repoStatusline)) return repoStatusline;\n\n    return null;\n}\n\nfunction ensureWorktreeSpecialists(worktreePath: string, mainRepoPath: string): void {\n    const worktreeSpecialistsRoot = path.join(worktreePath, '.specialists');\n    mkdirSync(worktreeSpecialistsRoot, { recursive: true });\n\n    const specialistDirs = ['default', 'user'] as const;\n    for (const dirName of specialistDirs) {\n        const sourceDir = path.join(mainRepoPath, '.specialists', dirName);\n        if (!existsSync(sourceDir)) continue;\n\n        const targetDir = path.join(worktreeSpecialistsRoot, dirName);\n        const symlinkTarget = path.relative(path.dirname(targetDir), sourceDir);\n\n        try {\n            const existing = lstatSync(targetDir);\n            if (existing.isSymbolicLink() && readlinkSync(targetDir) === symlinkTarget) {\n                continue;\n            }\n            rmSync(targetDir, { recursive: true, force: true });\n        } catch {\n            // target does not exist\n        }\n\n        symlinkSync(symlinkTarget, targetDir, 'dir');\n    }\n\n    // Mask the dir->symlink swap from git: skip-worktree on tracked\n    // .specialists/{default,user}/* paths so checkpoint commits don't capture\n    // phantom deletions or stage the symlink itself with mode 120000.\n    // Same merge-hazard pattern fixed for .beads in xtrm-cbjo — without this\n    // a chain-branch squash-merge would wipe the parent's .specialists/user/\n    // (see infra repo PR #39 for the equivalent .beads incident). xtrm-6jd2.\n    markPathSkipWorktree(worktreePath, '.specialists/default');\n    markPathSkipWorktree(worktreePath, '.specialists/user');\n}\n\n/**\n * Normalize the parent repo's `core.hooksPath` to an absolute path if it is\n * currently a relative `.beads/hooks` reference. Older bd installs stored a\n * relative path which would resolve against the worktree's cwd in a worktree\n * — i.e., against the (now-missing) worktree-local `.beads/hooks/`. The fix\n * is idempotent: only rewrites the exact relative `.beads/hooks` form, never\n * touches absolute paths, project-style `.githooks` chains, or unset values.\n *\n * No-op for the vast majority of repos surveyed 2026-05-12 — but cheap\n * insurance so a fresh-install on an older bd binary cannot resurface the\n * \"hooks fire from missing path\" failure mode after xtrm-cbjo lands.\n */\nfunction normalizeParentHooksPath(mainRepoRoot: string): void {\n    try {\n        const result = spawnSync('git', ['-C', mainRepoRoot, 'config', '--get', 'core.hooksPath'], {\n            stdio: 'pipe',\n            encoding: 'utf8',\n        });\n        if (result.status !== 0) return;\n        const current = (result.stdout ?? '').trim();\n        if (!current) return;\n        if (path.isAbsolute(current)) return;\n        // Only rewrite the canonical bd default. Leave `.githooks` chains and\n        // other project conventions alone — those are intentional.\n        if (current !== '.beads/hooks' && current !== './.beads/hooks') return;\n        const absolute = path.join(mainRepoRoot, '.beads', 'hooks');\n        spawnSync('git', ['-C', mainRepoRoot, 'config', 'core.hooksPath', absolute], { stdio: 'pipe' });\n    } catch {\n        // non-fatal\n    }\n}\n\n/**\n * Mark all tracked files under `<worktree>/<pathspec>` as skip-worktree so\n * that index/worktree differences for those paths do not surface in\n * `git status` or checkpoint diffs.\n *\n * Used for runtime-only directories that are either rm'd (`.beads`) or\n * dir->symlink-swapped (`.specialists/{default,user}`) inside a worktree\n * but should never be committed back to the chain branch — preventing the\n * `.beads`-style squash-merge wipe hazard (real incident: projects/infra\n * PR #39 for `.beads`; same shape applies to `.specialists/user/*`).\n */\nfunction markPathSkipWorktree(worktreePath: string, pathspec: string): void {\n    try {\n        const trackedResult = spawnSync('git', ['-C', worktreePath, 'ls-files', '--', pathspec], {\n            cwd: worktreePath,\n            stdio: 'pipe',\n            encoding: 'utf8',\n        });\n        if (trackedResult.status !== 0) return;\n\n        const trackedPaths = (trackedResult.stdout ?? '')\n            .split(/\\r?\\n/)\n            .map((line) => line.trim())\n            .filter(Boolean);\n        if (trackedPaths.length === 0) return;\n\n        spawnSync('git', ['-C', worktreePath, 'update-index', '--skip-worktree', '--', ...trackedPaths], {\n            cwd: worktreePath,\n            stdio: 'pipe',\n            encoding: 'utf8',\n        });\n    } catch {\n        // non-fatal\n    }\n}\n\nexport interface SessionMeta {\n    runtime: 'claude' | 'pi';\n    launchedAt: string;\n}\n\n// Write to .xtrm/ (gitignored) to prevent the file from ever being committed.\nfunction sessionMetaPath(worktreePath: string): string {\n    return path.join(worktreePath, '.xtrm', 'session-meta.json');\n}\n\nexport function writeSessionMeta(worktreePath: string, runtime: 'claude' | 'pi'): void {\n    try {\n        const meta: SessionMeta = { runtime, launchedAt: new Date().toISOString() };\n        const dest = sessionMetaPath(worktreePath);\n        mkdirSync(path.dirname(dest), { recursive: true });\n        writeFileSync(dest, JSON.stringify(meta, null, 2));\n    } catch {\n        // non-fatal\n    }\n}\n\nexport function readSessionMeta(worktreePath: string): SessionMeta | null {\n    try {\n        // Try new location first (.xtrm/session-meta.json), fall back to old root location.\n        const newPath = sessionMetaPath(worktreePath);\n        const oldPath = path.join(worktreePath, '.session-meta.json');\n        const filePath = existsSync(newPath) ? newPath : oldPath;\n        const raw = readFileSync(filePath, 'utf8');\n        return JSON.parse(raw) as SessionMeta;\n    } catch {\n        return null;\n    }\n}\n\nexport function unregisterPluginsForWorktree(worktreePath: string): void {\n    const localSettingsPath = path.join(worktreePath, '.claude', 'settings.local.json');\n\n    try {\n        if (existsSync(localSettingsPath)) {\n            unlinkSync(localSettingsPath);\n        }\n    } catch {\n        // non-fatal\n    }\n}\n\nexport async function launchWorktreeSession(opts: WorktreeSessionOptions): Promise<void> {\n    const { runtime, name, role: roleName, bead, attach = true, model, thinking } = opts;\n    const cwd = process.cwd();\n\n    // Resolve role up-front so we fail fast on an unknown role name before\n    // creating a worktree (which would otherwise leak on a bad --role typo).\n    let resolvedRole: ResolvedRole | null = null;\n    if (roleName) {\n        try {\n            resolvedRole = resolveRole(roleName, cwd);\n        } catch (err) {\n            const msg = err instanceof Error ? err.message : String(err);\n            console.error(kleur.red(`\\n  ✗ ${msg}\\n`));\n            process.exit(1);\n        }\n    } else if (model || thinking || (opts.passthrough && opts.passthrough.length > 0)) {\n        console.error(kleur.red('\\n  ✗ --model / --thinking / -- passthrough require --role\\n'));\n        process.exit(1);\n    }\n\n    // Guard passthrough up-front — refuse xt-owned flags before we build any\n    // worktree state. Skip-flags produce warnings but continue.\n    let guardedPassthrough: string[] = [];\n    if (resolvedRole && opts.passthrough && opts.passthrough.length > 0) {\n        const guard = guardRolePassthrough(opts.passthrough);\n        if (guard.guardedError) {\n            console.error(kleur.red(`\\n  ✗ ${guard.guardedError}\\n`));\n            process.exit(1);\n        }\n        for (const w of guard.warnings) {\n            process.stderr.write(kleur.yellow(`  ⚠ ${w}\\n`));\n        }\n        guardedPassthrough = guard.filteredArgs;\n    }\n\n    // Use git to find both current checkout root and common/main repo root.\n    const currentRepoRoot = gitRepoRoot(cwd);\n    const mainRepoRoot = gitMainRepoRoot(cwd);\n    if (!currentRepoRoot || !mainRepoRoot) {\n        console.error(kleur.red('\\n  ✗ Not inside a git repository\\n'));\n        process.exit(1);\n    }\n\n    // Guardrail: never create a worktree from inside another worktree.\n    if (currentRepoRoot !== mainRepoRoot) {\n        console.error(kleur.red('\\n  ✗ Refusing to create nested worktree from inside an existing worktree.\\n'));\n        console.error(kleur.dim(`  current worktree: ${currentRepoRoot}`));\n        console.error(kleur.dim(`  main repo root:  ${mainRepoRoot}`));\n        console.error(kleur.dim('\\n  Remediation:'));\n        console.error(kleur.dim('    1) cd to the main repo checkout'));\n        console.error(kleur.dim('    2) run xt claude|pi there (or use xt attach to resume this session)'));\n        console.error(kleur.dim('    3) run xt worktree doctor to inspect stale/nested entries\\n'));\n        process.exit(1);\n    }\n\n    const cwdBasename = path.basename(mainRepoRoot);\n\n    // Resolve slug — shared by both branch and worktree path so they're linked\n    const slug = name ?? randomSlug(4);\n\n    // Worktree path: inside repo under .xtrm/worktrees/\n    const worktreeName = `${cwdBasename}-xt-${runtime}-${slug}`;\n    const worktreePath = path.join(mainRepoRoot, '.xtrm', 'worktrees', worktreeName);\n\n    // Branch name\n    const branchName = `xt/${slug}`;\n\n    console.log(kleur.bold(`\\n  Launching ${runtime} session`));\n    console.log(kleur.dim(`  worktree: ${worktreePath}`));\n    console.log(kleur.dim(`  branch:   ${branchName}\\n`));\n\n    // Use bd worktree create — sets up git worktree + canonical .beads/redirect in one step.\n    // Falls back to plain git worktree add if bd is unavailable or the project has no .beads/.\n    if (existsSync(worktreePath)) {\n        console.error(kleur.red('\\n  ✗ Worktree path already exists. Refusing to reuse stale directory.\\n'));\n        console.error(kleur.dim(`  path: ${worktreePath}`));\n        console.error(kleur.dim('\\n  Remediation:'));\n        console.error(kleur.dim('    xt worktree doctor'));\n        console.error(kleur.dim('    xt worktree clean --orphans --yes\\n'));\n        process.exit(1);\n    }\n\n    const bdResult = spawnSync('bd', ['worktree', 'create', worktreePath, '--branch', branchName], {\n        cwd: mainRepoRoot, stdio: 'inherit',\n    });\n\n    if (bdResult.error || bdResult.status !== 0) {\n        // Fall back to plain git worktree add (bd not found or no .beads/ in project)\n        if (bdResult.status !== 0 && !bdResult.error) {\n            console.log(kleur.dim('  beads: no database found, creating worktree without redirect'));\n        }\n        const branchExists = spawnSync('git', ['rev-parse', '--verify', branchName], {\n            cwd: mainRepoRoot, stdio: 'pipe',\n        }).status === 0;\n\n        const gitArgs = branchExists\n            ? ['worktree', 'add', worktreePath, branchName]\n            : ['worktree', 'add', '-b', branchName, worktreePath];\n\n        const gitResult = spawnSync('git', gitArgs, { cwd: mainRepoRoot, stdio: 'inherit' });\n        if (gitResult.status !== 0) {\n            console.error(kleur.red(`\\n  ✗ Failed to create worktree at ${worktreePath}\\n`));\n            process.exit(1);\n        }\n    }\n\n    // Normalize parent's core.hooksPath to absolute if it's still the bd\n    // relative default — safety net for older bd installs (see xtrm-2s44).\n    normalizeParentHooksPath(mainRepoRoot);\n\n    // Remove worktree-local .beads/ entirely. bd inside the worktree resolves\n    // its DB via git common-dir discovery (shared-server mode + absolute\n    // core.hooksPath at the parent's .beads/hooks/), so no on-disk .beads/ is\n    // needed. The previous dir->symlink approach made bd happy but caused a\n    // serious merge hazard: any commit/PR carrying the .beads symlink (mode\n    // 120000) wipes the parent's .beads/ on squash-merge (see infra repo PR\n    // #39, 2026-05-12). With the directory gone, the tracked .beads/* paths\n    // are masked via skip-worktree so the index/worktree delta does not\n    // surface in `git status` or checkpoint diffs.\n    // See xtrm-cbjo (this fix) supersedes xtrm-as7d / xtrm-nsca / unitAI-u08e8.\n    try {\n        rmSync(path.join(worktreePath, '.beads'), { recursive: true, force: true });\n        markPathSkipWorktree(worktreePath, '.beads');\n    } catch {\n        // Non-fatal: bd will recover via git common-dir resolution regardless.\n    }\n\n    writeSessionMeta(worktreePath, runtime);\n    console.log(kleur.green(`\\n  ✓ Worktree ready — launching ${runtime}...\\n`));\n    console.log(kleur.dim('  note: clean git worktrees do not include ignored dependency dirs like node_modules/ or .venv/'));\n    console.log(kleur.dim('        if lint/tests need them, run this repo\\'s normal bootstrap inside the worktree (make bootstrap, just setup, npm ci, uv sync, etc.)\\n'));\n\n    // Pi runtime bootstrap is handled globally. Project dependency setup is still repo-owned.\n    // - Extensions: globally linked (~/.pi/agent/extensions/ → repo)\n    // - Packages: installed globally at ~/.pi/agent/npm/\n    // Worktree inherits both from global locations.\n\n    // Claude-only scaffold. Pi role sessions now receive absolute --skill\n    // paths from resolveRole(), so they no longer need worktree-local\n    // .specialists/ or .xtrm/skills/active scaffolds.\n    if (runtime === 'claude') {\n        const claudeDir = path.join(worktreePath, '.claude');\n\n        // 1. Rebuild generated runtime skills view and pointer inside worktree.\n        try {\n            if (shouldUseGlobalSkills() && !worktreeHasProjectUserPacks(worktreePath)) {\n                verifyGlobalPointer();\n            } else {\n                await ensureAgentsSkillsSymlink(worktreePath);\n            }\n        } catch (error) {\n            const message = error instanceof Error ? error.message : String(error);\n            console.log(kleur.dim(`  warning: could not reconcile runtime skills (${message})`));\n        }\n\n        // 2. Symlink specialist definition directories into worktree so\n        //    SpecialistLoader can resolve .specialists/default|user from cwd.\n        try {\n            ensureWorktreeSpecialists(worktreePath, mainRepoRoot);\n        } catch (error) {\n            const message = error instanceof Error ? error.message : String(error);\n            console.log(kleur.dim(`  warning: could not provision specialist definitions (${message})`));\n        }\n\n        // 3. Write settings.local.json with statusLine bound to this worktree's\n        //    hook script path so runtime UI stays available in sandbox sessions.\n        const localSettings: Record<string, unknown> = {};\n        const statuslinePath = resolveStatuslineScript(worktreePath);\n        if (statuslinePath) {\n            localSettings.statusLine = {\n                type: 'command',\n                command: `node ${JSON.stringify(statuslinePath)}`,\n                padding: 1,\n            };\n        }\n\n        const localSettingsPath = path.join(claudeDir, 'settings.local.json');\n        if (Object.keys(localSettings).length > 0) {\n            try {\n                mkdirSync(claudeDir, { recursive: true });\n                writeFileSync(localSettingsPath, JSON.stringify(localSettings, null, 2));\n            } catch { /* non-fatal */ }\n        }\n    }\n\n    if (runtime === 'pi') {\n        await runPiLaunchPreflight(worktreePath, false);\n    }\n\n    // Role mode: launch pi inside a named tmux session with agent metadata\n    // set on the pane. --no-attach → print `session:pane` to stdout for\n    // orchestrator capture. All chatter above went to console.log — headless\n    // callers should capture stdout only after seeing that final line.\n    if (resolvedRole) {\n        await launchRoleTmuxSession({\n            runtime,\n            role: resolvedRole,\n            bead,\n            attach,\n            worktreePath,\n            modelOverride: model,\n            thinkingOverride: thinking,\n            passthrough: guardedPassthrough,\n            newSession: opts.newSession,\n            reuse: opts.reuse,\n            parent: opts.parent,\n            child: opts.child,\n        });\n        return; // launchRoleTmuxSession never returns (calls process.exit)\n    }\n\n    // Launch the runtime in the worktree\n    const runtimeCmd = runtime === 'claude' ? 'claude' : 'pi';\n    const runtimeArgs = runtime === 'claude' ? ['--dangerously-skip-permissions'] : [];\n    const launchResult = spawnSync(runtimeCmd, runtimeArgs, {\n        cwd: worktreePath,\n        stdio: 'inherit',\n    });\n\n    process.exit(launchResult.status ?? 0);\n}\n\n/**\n * Resolve a --parent target (session name, id, or `#{session_id}` string) to\n * a concrete tmux session id via `tmux display-message`. Returns null on\n * failure so the launcher can print a clear error before spawning pi.\n * xtmux-1lb.5.1.\n */\nfunction resolveParentSession(target: string): string | null {\n    if (/^\\$\\d+$/.test(target)) return target; // already a sid\n    const r = spawnSync('tmux', ['display-message', '-p', '-t', target, '#{session_id}'], {\n        stdio: 'pipe', encoding: 'utf8',\n    });\n    if (r.status !== 0) return null;\n    const sid = (r.stdout ?? '').trim();\n    return sid || null;\n}\n\n/**\n * Fire-and-forget log emission via tmux-session-picker. Non-fatal if the\n * picker binary is missing — the launcher must not fail the user's launch on\n * observability. xtmux-1lb.5.1.\n */\nfunction emitAgentRoleLaunched(fields: Record<string, string>): void {\n    const picker = process.env.XTMUX_PICKER\n        || path.join(os.homedir(), '.local', 'bin', 'tmux-session-picker');\n    if (!existsSync(picker)) return;\n    const kvArgs = Object.entries(fields)\n        .filter(([, v]) => v !== '' && v != null)\n        .map(([k, v]) => `${k}=${v}`);\n    spawnSync(picker, ['log', 'emit', 'agent.role.launched', ...kvArgs], {\n        stdio: 'ignore',\n    });\n}\n\nasync function launchRoleTmuxSession(args: {\n    runtime: 'pi' | 'claude';\n    role: ResolvedRole;\n    bead?: string;\n    attach: boolean;\n    worktreePath: string;\n    modelOverride?: string;\n    thinkingOverride?: string;\n    passthrough?: string[];\n    newSession?: boolean;\n    parent?: string;\n    child?: boolean;\n    reuse?: boolean;\n}): Promise<never> {\n    const {\n        runtime, role, bead, attach, worktreePath, modelOverride, thinkingOverride, passthrough,\n        newSession, parent, child, reuse,\n    } = args;\n\n    const insideTmux = Boolean(process.env.TMUX);\n    // Current-pane mode: inside $TMUX with no explicit --new-session. This is\n    // the new default — matches operator intent \"if i'm in tmux and want a\n    // role, launch it in this pane and that's that.\" Outside $TMUX the only\n    // sensible thing is still `tmux new-session`, so mode collapses to\n    // new-session there regardless of --new-session. xtmux-1lb.5.1.\n    const currentPaneMode = insideTmux && !newSession;\n\n    // Guard: --no-attach only makes sense when we're actually creating a\n    // session that could be attached-to later. In current-pane mode there IS\n    // no separate session, so --no-attach has nowhere to go.\n    if (currentPaneMode && !attach) {\n        process.stderr.write(kleur.red(\n            `\\n  ✗ --no-attach requires --new-session (or exit tmux first)\\n`,\n        ));\n        process.exit(1);\n    }\n\n    // Resolve parent session id. Precedence: --parent wins over --child\n    // wins over auto (current session).\n    let parentSessionId: string;\n    if (parent) {\n        const resolved = resolveParentSession(parent);\n        if (!resolved) {\n            process.stderr.write(kleur.red(\n                `\\n  ✗ --parent '${parent}': tmux session not found\\n`,\n            ));\n            process.exit(1);\n        }\n        parentSessionId = resolved;\n    } else if (child) {\n        // Explicit form of the auto-behavior. Kept as an opt-in so a future\n        // default flip (to 'no auto-parent') doesn't break scripts.\n        parentSessionId = currentTmuxSessionId();\n    } else {\n        parentSessionId = currentTmuxSessionId();\n    }\n\n    // Transport file for the system prompt. `.xtrm/` is gitignored so this\n    // never rides a checkpoint commit.\n    const promptFile = path.join(\n        worktreePath,\n        '.xtrm',\n        `role-${slugifyForSession(role.name)}-prompt.md`,\n    );\n    mkdirSync(path.dirname(promptFile), { recursive: true });\n    writeFileSync(promptFile, role.systemPrompt);\n\n    const plan = buildRoleTmuxPlan({\n        runtime,\n        role,\n        bead,\n        parentSessionId,\n        promptFile,\n        systemPrompt: role.systemPrompt,\n        modelOverride,\n        thinkingOverride,\n        passthrough,\n    });\n\n    const agentEnv = buildAgentEnv({ bead, role: role.name, promptFile, parentSessionId });\n\n    if (currentPaneMode) {\n        // Resolve the current pane id (the pane the launcher was invoked\n        // from). All @agent_* pane options get written here; pi then runs\n        // in this same pane with stdio inherited.\n        const paneQuery = spawnSync('tmux', ['display-message', '-p', '#{pane_id}'], {\n            stdio: 'pipe', encoding: 'utf8',\n        });\n        const paneId = (paneQuery.stdout ?? '').trim();\n        if (!paneId) {\n            process.stderr.write(kleur.red('\\n  ✗ Could not resolve current pane id\\n'));\n            process.exit(1);\n        }\n\n        for (const { key, value } of plan.paneOptions) {\n            spawnSync('tmux', ['set-option', '-p', '-t', paneId, key, value], { stdio: 'pipe' });\n        }\n\n        emitAgentRoleLaunched({\n            pane: paneId,\n            session: currentTmuxSessionId(),\n            bead: bead ?? '',\n            role: role.name,\n            parent: parentSessionId,\n            worktree: worktreePath,\n        });\n\n        const piResult = spawnSync(plan.runtimeCmd, plan.runtimeArgs, {\n            cwd: worktreePath,\n            stdio: 'inherit',\n            env: { ...process.env, ...agentEnv },\n        });\n        process.exit(piResult.status ?? 0);\n    }\n\n    // New-session path (default outside $TMUX, or --new-session inside).\n    // On session-name collision two operator-friendly outcomes replace the\n    // pre-xtmux-1lb.6 hard-refuse:\n    //   --reuse         attach to the existing session (no new worktree work)\n    //   default         auto-suffix `-<hex>` and create a fresh sibling\n    // The worktree naming already generates unique hex suffixes; session\n    // naming now mirrors that so `xt pi --role X` twice in a row does the\n    // sane thing.\n    const sessionExists = (name: string): boolean => {\n        const r = spawnSync('tmux', ['has-session', '-t', `=${name}`], { stdio: 'pipe' });\n        return r.status === 0;\n    };\n    if (sessionExists(plan.sessionName)) {\n        if (reuse) {\n            // Attach to the existing session (or --no-attach: print its\n            // first-pane coordinates). Do NOT emit agent.role.launched —\n            // the session isn't ours and metadata isn't guaranteed.\n            const paneQuery = spawnSync('tmux', [\n                'list-panes', '-t', plan.sessionName, '-F', '#{pane_id}',\n            ], { stdio: 'pipe', encoding: 'utf8' });\n            const existingPane = (paneQuery.stdout ?? '').trim().split('\\n')[0] ?? '';\n            if (!attach) {\n                process.stdout.write(`${plan.sessionName}:${existingPane}\\n`);\n                process.exit(0);\n            }\n            const attachCmd = chooseAttachCommand(plan.sessionName, insideTmux);\n            const attachResult = spawnSync('tmux', attachCmd, { stdio: 'inherit' });\n            process.exit(attachResult.status ?? 0);\n        }\n        // Auto-suffix. Try a handful of random slugs — collisions on\n        // 4-hex-char slugs are astronomically unlikely, but bail loudly if\n        // the operator has genuinely tens of sessions all sharing a prefix.\n        let suffixed = plan.sessionName;\n        let found = false;\n        for (let i = 0; i < 10; i++) {\n            const candidate = `${plan.sessionName}-${randomSlug(4)}`;\n            if (!sessionExists(candidate)) {\n                suffixed = candidate;\n                found = true;\n                break;\n            }\n        }\n        if (!found) {\n            process.stderr.write(kleur.red(\n                `\\n  ✗ Could not find a free session name variant for '${plan.sessionName}' — kill some or pass --reuse\\n`,\n            ));\n            process.exit(1);\n        }\n        plan.sessionName = suffixed;\n    }\n\n    // Pass XTMUX_AGENT_* through to the new session's environment via -e so\n    // scripts/agent-state.sh (running inside the new pane) can pick them up.\n    const envArgs: string[] = [];\n    for (const [k, v] of Object.entries(agentEnv)) {\n        envArgs.push('-e', `${k}=${v}`);\n    }\n\n    const newSess = spawnSync('tmux', [\n        'new-session', '-d',\n        '-s', plan.sessionName,\n        '-c', worktreePath,\n        ...envArgs,\n        plan.runtimeCmdString,\n    ], { stdio: 'pipe', encoding: 'utf8' });\n    if (newSess.status !== 0) {\n        const stderr = (newSess.stderr ?? '').trim() || 'unknown error';\n        process.stderr.write(kleur.red(`\\n  ✗ tmux new-session failed: ${stderr}\\n`));\n        process.exit(1);\n    }\n\n    const paneQuery = spawnSync('tmux', [\n        'list-panes', '-t', plan.sessionName, '-F', '#{pane_id}',\n    ], { stdio: 'pipe', encoding: 'utf8' });\n    const paneId = (paneQuery.stdout ?? '').trim().split('\\n')[0] ?? '';\n    if (!paneId) {\n        process.stderr.write(kleur.red('\\n  ✗ Could not resolve pane id for new session\\n'));\n        process.exit(1);\n    }\n\n    for (const { key, value } of plan.paneOptions) {\n        spawnSync('tmux', ['set-option', '-p', '-t', paneId, key, value], { stdio: 'pipe' });\n    }\n\n    emitAgentRoleLaunched({\n        pane: paneId,\n        session: plan.sessionName,\n        bead: bead ?? '',\n        role: role.name,\n        parent: parentSessionId,\n        worktree: worktreePath,\n    });\n\n    if (!attach) {\n        // Contract: exactly one line on stdout, session_name:pane_id\n        process.stdout.write(`${plan.sessionName}:${paneId}\\n`);\n        process.exit(0);\n    }\n\n    const attachCmd = chooseAttachCommand(plan.sessionName, insideTmux);\n    const attachResult = spawnSync('tmux', attachCmd, {\n        stdio: 'inherit',\n    });\n    process.exit(attachResult.status ?? 0);\n}\n","import path from 'node:path';\nimport { resolveGlobalSkillsRoot } from './skills-layout.js';\n\nexport function shouldUseGlobalSkills(): boolean {\n    return process.env.XTRM_GLOBAL_SKILLS === '1';\n}\n\nexport function getGlobalSkillsOverrideRoots(): Record<string, string> | undefined {\n    if (!shouldUseGlobalSkills()) {\n        return undefined;\n    }\n\n    const globalSkillsRoot = resolveGlobalSkillsRoot();\n    return {\n        skills: path.join(globalSkillsRoot, 'default'),\n        skills_optional: path.join(globalSkillsRoot, 'optional'),\n    };\n}\n","import os from 'node:os';\nimport path from 'node:path';\n\nexport const SKILLS_STATE_SCHEMA_VERSION = '2' as const;\n\nexport const SKILLS_RUNTIMES = ['claude', 'pi'] as const;\nexport type SkillsRuntime = typeof SKILLS_RUNTIMES[number];\n\nexport const SKILLS_TIERS = ['default', 'optional', 'user'] as const;\nexport type SkillsTier = typeof SKILLS_TIERS[number];\n\nexport const RUNTIME_ROOT_MARKERS = ['.claude', '.agents', '.pi'] as const;\n\nexport const SKILL_FILE_NAME = 'SKILL.md';\nexport const PACK_FILE_NAME = 'PACK.json';\n/** Reserved top-level names during v1 shim window. */\nexport const RESERVED_PACK_NAMES = new Set([\n  'default',\n  'optional',\n  'user',\n  'active',\n  'local-legacy',\n]);\n\nexport const STATE_FILE_NAME = 'state.json';\n\nexport function resolveSkillsRoot(scopeRoot: string): string {\n  return path.join(scopeRoot, '.xtrm', 'skills');\n}\n\nexport function resolveGlobalSkillsRoot(): string {\n  return path.join(os.homedir(), '.xtrm', 'skills');\n}\n\nexport function resolveDefaultTierRoot(skillsRoot: string): string {\n  return path.join(skillsRoot, 'default');\n}\n\nexport function resolveOptionalTierRoot(skillsRoot: string): string {\n  return path.join(skillsRoot, 'optional');\n}\n\n/** @deprecated Kept only for reading the v1 shim layout. */\nexport function resolveUserPacksRoot(skillsRoot: string): string {\n  return path.join(skillsRoot, 'user', 'packs');\n}\n\nexport function assertProjectPackName(packName: string): void {\n  if (!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(packName)) {\n    throw new Error(`Invalid pack name '${packName}'. Use lowercase alphanumerics and hyphens only.`);\n  }\n  if (RESERVED_PACK_NAMES.has(packName)) {\n    throw new Error(`Pack name '${packName}' is reserved by the skills layout.`);\n  }\n}\n\nexport function resolveRepoPackRoot(skillsRoot: string, packName: string): string {\n  assertProjectPackName(packName);\n  return path.join(skillsRoot, packName);\n}\n\nexport function resolveActiveRuntimeRoot(skillsRoot: string): string {\n  return path.join(skillsRoot, 'active');\n}\n\nexport function resolveStateFilePath(skillsRoot: string): string {\n  return path.join(skillsRoot, STATE_FILE_NAME);\n}\n","import os from 'node:os';\nimport path from 'node:path';\nimport fs from 'fs-extra';\nimport { resolveGlobalSkillsRoot, resolveSkillsRoot, resolveDefaultTierRoot } from './skills-layout.js';\nimport { discoverTierPacks, validateSkillsInvariants } from './skill-discovery.js';\nimport { readSkillsState } from './skills-state.js';\nimport { reconcileRuntimeLinks } from './skills-runtime-reconcile.js';\n\nexport interface SkillsActivationResult {\n  readonly activatedClaudeSkills: number;\n  readonly activatedPiSkills: number;\n}\ninterface EnsureSkillsSymlinkOptions { readonly force?: boolean }\ntype PointerScope = 'global' | 'project';\n\nexport async function ensureSkillsSymlink(linkPath: string, symlinkTarget: string, label: string, _scope: PointerScope, _options: EnsureSkillsSymlinkOptions = {}): Promise<void> {\n  const existing = await fs.lstat(linkPath).catch(() => null);\n  if (existing?.isSymbolicLink() && await fs.readlink(linkPath) === symlinkTarget) return;\n  if (existing) {\n    throw new Error(`Refusing to replace existing ${label}; remove it or pass --force.`);\n  }\n  await fs.ensureDir(path.dirname(linkPath));\n  await fs.symlink(symlinkTarget, linkPath);\n}\n\nexport async function ensureUserAgentsSkillsSymlink(options: EnsureSkillsSymlinkOptions = {}): Promise<void> {\n  const target = resolveDefaultTierRoot(resolveGlobalSkillsRoot());\n  if (!await fs.pathExists(target)) throw new Error(`Global runtime skills root missing: ${target}`);\n  for (const [link, label] of [\n    [path.join(os.homedir(), '.claude', 'skills'), '~/.claude/skills'],\n    [path.join(os.homedir(), '.pi', 'agent', 'skills'), '~/.pi/agent/skills'],\n  ] as const) {\n    const existing = await fs.lstat(link).catch(() => null);\n    if (existing && !(existing.isSymbolicLink() && path.resolve(path.dirname(link), await fs.readlink(link)) === path.resolve(target))) {\n      if (!options.force) throw new Error(`Refusing to replace existing ${label}; pass --force.`);\n      await fs.remove(link);\n    }\n    if (!await fs.pathExists(link)) {\n      await fs.ensureDir(path.dirname(link));\n      await fs.symlink(target, link);\n    }\n  }\n}\n\nexport async function ensureAgentsSkillsSymlink(projectRoot: string, _options: EnsureSkillsSymlinkOptions = {}): Promise<SkillsActivationResult> {\n  const skillsRoot = resolveSkillsRoot(projectRoot);\n  const violations = await validateSkillsInvariants(skillsRoot);\n  if (violations.length > 0) throw new Error(`Skills invariants failed. ${violations.map((v) => `${v.code}: ${v.message}`).join('; ')}`);\n  const globalRoot = resolveGlobalSkillsRoot();\n  const packs = [\n    ...(await discoverTierPacks(globalRoot, 'optional')),\n    ...(await discoverTierPacks(globalRoot, 'user')),\n    ...(await discoverTierPacks(skillsRoot, 'optional')),\n    ...(await discoverTierPacks(skillsRoot, 'user')),\n  ];\n  const state = await readSkillsState(skillsRoot);\n  const results = [];\n  for (const runtime of ['claude', 'pi'] as const) {\n    results.push(await reconcileRuntimeLinks({\n      projectRoot,\n      state,\n      runtime,\n      discoveredPacks: packs,\n      globalDefaultRoot: resolveDefaultTierRoot(globalRoot),\n      globalOptionalRoot: path.join(globalRoot, 'optional'),\n    }));\n  }\n  return {\n    activatedClaudeSkills: Object.keys(results[0].desiredLinks).length,\n    activatedPiSkills: Object.keys(results[1].desiredLinks).length,\n  };\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport {\n  RUNTIME_ROOT_MARKERS,\n  SKILL_FILE_NAME,\n  type SkillsTier,\n  resolveDefaultTierRoot,\n  resolveOptionalTierRoot,\n  resolveUserPacksRoot,\n  RESERVED_PACK_NAMES,\n} from './skills-layout.js';\nimport { assertSafeRuntimeLinkName } from './skills-state.js';\nimport { diffPackMetadataSkills, readPackMetadata, type PackMetadataMismatch } from './pack-metadata.js';\n\nexport type DiscoveredSkill = {\n  /** Directory identity, or pack name for a root SKILL.md. */\n  readonly name: string;\n  /** Runtime skill name from SKILL.md frontmatter `name:`. */\n  readonly runtimeName: string;\n  readonly path: string;\n};\n\nexport type InvariantViolationCode =\n  | 'SKILL_AND_PACK_CONFLICT'\n  | 'NESTED_RUNTIME_ROOT'\n  | 'PACK_METADATA_MISMATCH'\n  | 'PACK_NAME_COLLISION';\n\nexport type InvariantViolation = {\n  readonly code: InvariantViolationCode;\n  readonly path: string;\n  readonly message: string;\n};\n\nexport type DiscoveredPack = {\n  readonly name: string;\n  readonly path: string;\n  readonly tier: Exclude<SkillsTier, 'default'>;\n  readonly skills: DiscoveredSkill[];\n  readonly metadataMismatch?: PackMetadataMismatch;\n};\n\nconst warnedMessages = new Set<string>();\n\nfunction warnOnce(key: string, message: string): void {\n  if (warnedMessages.has(key)) return;\n  warnedMessages.add(key);\n  console.warn(`[xtrm] Warning: ${message}`);\n}\n\nasync function listDirectChildDirectories(root: string): Promise<string[]> {\n  if (!await fs.pathExists(root)) return [];\n  const entries = await fs.readdir(root, { withFileTypes: true });\n  return entries\n    .filter(entry => entry.isDirectory())\n    .map(entry => entry.name)\n    .sort((a, b) => a.localeCompare(b));\n}\n\nasync function hasFile(dirPath: string, fileName: string): Promise<boolean> {\n  return fs.pathExists(path.join(dirPath, fileName));\n}\n\nasync function hasNestedRuntimeRoot(dirPath: string): Promise<boolean> {\n  for (const marker of RUNTIME_ROOT_MARKERS) {\n    if (await hasFile(dirPath, marker)) return true;\n  }\n  return false;\n}\n\nexport async function detectDirectChildSkill(dirPath: string): Promise<boolean> {\n  return hasFile(dirPath, SKILL_FILE_NAME);\n}\n\nasync function readSkillFrontmatterName(skillFilePath: string): Promise<string | null> {\n  let content: string;\n  try {\n    content = await fs.readFile(skillFilePath, 'utf8');\n  } catch {\n    return null;\n  }\n\n  const frontmatter = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/);\n  if (!frontmatter) return null;\n  const nameLine = frontmatter[1].split(/\\r?\\n/).find(line => /^name\\s*:/.test(line));\n  if (!nameLine) return null;\n  return nameLine.replace(/^name\\s*:/, '').trim().replace(/^[\"']|[\"']$/g, '').trim() || null;\n}\n\nasync function discoverSkill(skillPath: string, name: string): Promise<DiscoveredSkill> {\n  const frontmatterName = await readSkillFrontmatterName(path.join(skillPath, SKILL_FILE_NAME));\n  const runtimeName = frontmatterName ?? name;\n  assertSafeRuntimeLinkName(runtimeName);\n  return { name, runtimeName, path: skillPath };\n}\n\nexport async function discoverDirectSkills(root: string): Promise<DiscoveredSkill[]> {\n  const discoveredSkills: DiscoveredSkill[] = [];\n  for (const childDirectory of await listDirectChildDirectories(root)) {\n    const skillPath = path.join(root, childDirectory);\n    if (await detectDirectChildSkill(skillPath)) {\n      discoveredSkills.push(await discoverSkill(skillPath, childDirectory));\n    }\n  }\n  return discoveredSkills;\n}\n\nasync function discoverPackSkills(packPath: string, packName: string): Promise<DiscoveredSkill[]> {\n  const skills: DiscoveredSkill[] = [];\n  if (await hasFile(packPath, SKILL_FILE_NAME)) {\n    skills.push(await discoverSkill(packPath, packName));\n  }\n  skills.push(...await discoverDirectSkills(packPath));\n  return skills;\n}\n\nfunction isReservedPackName(name: string): boolean {\n  return RESERVED_PACK_NAMES.has(name);\n}\n\nasync function discoverPack(\n  packPath: string,\n  tier: Exclude<SkillsTier, 'default'>,\n  validateMetadata: boolean,\n): Promise<DiscoveredPack> {\n  const packName = path.basename(packPath);\n  const metadataPath = path.join(packPath, 'PACK.json');\n  const skills = await discoverPackSkills(packPath, packName);\n  let metadataMismatch: PackMetadataMismatch | undefined;\n\n  if (validateMetadata && await fs.pathExists(metadataPath)) {\n    const metadata = await readPackMetadata(packPath, tier);\n    metadataMismatch = diffPackMetadataSkills(metadata.skills, skills.map(skill => skill.name));\n  }\n  if (!validateMetadata && await fs.pathExists(metadataPath)) {\n    warnOnce(`pack-json:${path.resolve(packPath)}`, `${metadataPath} is ignored; PACK.json is retired in v2.`);\n  }\n\n  return { name: packName, path: packPath, tier, skills, metadataMismatch };\n}\n\nasync function discoverFlatPacks(skillsRoot: string): Promise<DiscoveredPack[]> {\n  const packs: DiscoveredPack[] = [];\n  for (const packName of await listDirectChildDirectories(skillsRoot)) {\n    if (isReservedPackName(packName)) continue;\n    packs.push(await discoverPack(path.join(skillsRoot, packName), 'user', false));\n  }\n  return packs;\n}\n\nasync function discoverLegacyPacks(skillsRoot: string): Promise<DiscoveredPack[]> {\n  const legacyRoot = resolveUserPacksRoot(skillsRoot);\n  const packs: DiscoveredPack[] = [];\n  for (const packName of await listDirectChildDirectories(legacyRoot)) {\n    if (isReservedPackName(packName)) continue;\n    packs.push(await discoverPack(path.join(legacyRoot, packName), 'user', true));\n  }\n  return packs;\n}\n\n/** Discover project packs from v2 flat layout, with v1 user/packs shim. */\nexport async function discoverRepoPacks(skillsRoot: string): Promise<DiscoveredPack[]> {\n  const flatPacks = await discoverFlatPacks(skillsRoot);\n  const legacyPacks = await discoverLegacyPacks(skillsRoot);\n  if (legacyPacks.length > 0) {\n    warnOnce(`legacy-root:${path.resolve(skillsRoot)}`, `v1 skills layout found under ${resolveUserPacksRoot(skillsRoot)}; migrate with xt migrate skills-layout --apply.`);\n  }\n\n  const flatNames = new Set(flatPacks.map(pack => pack.name));\n  for (const legacyPack of legacyPacks) {\n    if (flatNames.has(legacyPack.name)) {\n      warnOnce(\n        `collision:${path.resolve(skillsRoot)}:${legacyPack.name}`,\n        `v2 pack '${legacyPack.name}' at ${path.join(skillsRoot, legacyPack.name)} wins over v1 pack at ${legacyPack.path}.`,\n      );\n      continue;\n    }\n    flatPacks.push(legacyPack);\n  }\n  return flatPacks.sort((left, right) => left.name.localeCompare(right.name));\n}\n\n/** Compatibility entry point. User-tier discovery uses v2 repo packs; optional keeps global v1 tier support. */\nexport async function discoverTierPacks(\n  skillsRoot: string,\n  tier: Exclude<SkillsTier, 'default'>,\n): Promise<DiscoveredPack[]> {\n  if (tier === 'user') return discoverRepoPacks(skillsRoot);\n  const packs: DiscoveredPack[] = [];\n  for (const packName of await listDirectChildDirectories(resolveOptionalTierRoot(skillsRoot))) {\n    const packPath = path.join(resolveOptionalTierRoot(skillsRoot), packName);\n    if (!await fs.pathExists(path.join(packPath, 'PACK.json'))) continue;\n    packs.push(await discoverPack(packPath, 'optional', true));\n  }\n  return packs;\n}\n\nexport async function discoverDefaultSkills(skillsRoot: string): Promise<DiscoveredSkill[]> {\n  return discoverDirectSkills(resolveDefaultTierRoot(skillsRoot));\n}\n\nexport async function validateSkillsInvariants(skillsRoot: string): Promise<InvariantViolation[]> {\n  const violations: InvariantViolation[] = [];\n  const defaultSkills = await discoverDefaultSkills(skillsRoot);\n  for (const skill of defaultSkills) {\n    if (await hasNestedRuntimeRoot(skill.path)) {\n      violations.push({ code: 'NESTED_RUNTIME_ROOT', path: skill.path, message: `Skill '${skill.name}' contains a nested runtime root directory (.claude/.agents/.pi).` });\n    }\n  }\n\n  const packs = [\n    ...(await discoverTierPacks(skillsRoot, 'optional')),\n    ...(await discoverRepoPacks(skillsRoot)),\n  ];\n  const seenNames = new Map<string, string>();\n  for (const pack of packs) {\n    const existing = seenNames.get(pack.name);\n    if (existing) {\n      violations.push({ code: 'PACK_NAME_COLLISION', path: pack.path, message: `Pack '${pack.name}' collides with '${existing}'.` });\n    } else {\n      seenNames.set(pack.name, pack.path);\n    }\n    for (const skill of pack.skills) {\n      if (await hasNestedRuntimeRoot(skill.path)) {\n        violations.push({ code: 'NESTED_RUNTIME_ROOT', path: skill.path, message: `Pack skill '${pack.name}/${skill.name}' contains a nested runtime root directory (.claude/.agents/.pi).` });\n      }\n    }\n    const mismatch = pack.metadataMismatch;\n    if (mismatch && (mismatch.metadataOnlySkills.length > 0 || mismatch.filesystemOnlySkills.length > 0)) {\n      violations.push({\n        code: 'PACK_METADATA_MISMATCH',\n        path: pack.path,\n        message: `Pack '${pack.name}' metadata skills do not match filesystem (metadata-only: ${mismatch.metadataOnlySkills.join(', ') || 'none'}, filesystem-only: ${mismatch.filesystemOnlySkills.join(', ') || 'none'}).`,\n      });\n    }\n  }\n  return violations;\n}\n","import fs from 'fs-extra';\nimport { z } from 'zod';\nimport {\n  SKILLS_STATE_SCHEMA_VERSION,\n  type SkillsRuntime,\n  resolveDefaultTierRoot,\n  resolveOptionalTierRoot,\n  resolveStateFilePath,\n  resolveUserPacksRoot,\n} from './skills-layout.js';\n\nconst runtimeEnabledPacksSchema = z.object({\n  claude: z.array(z.string().min(1)).default([]),\n  pi: z.array(z.string().min(1)).default([]),\n});\n\nexport function isSafeRuntimeLinkName(name: string): boolean {\n  if (name.length === 0 || name.includes('\\0') || /[\\\\/]/.test(name)) return false;\n  return name !== '.' && name !== '..';\n}\n\nexport function assertSafeRuntimeLinkName(name: string): void {\n  if (!isSafeRuntimeLinkName(name)) {\n    throw new Error(`Unsafe runtime skill name '${name}': expected a single path basename.`);\n  }\n}\n\nconst managedLinksMapSchema = z.record(z.string(), z.string()).superRefine((links, context) => {\n  for (const name of Object.keys(links)) {\n    if (!isSafeRuntimeLinkName(name)) {\n      context.addIssue({\n        code: 'custom',\n        path: [name],\n        message: 'must be a single path basename without separators, dot segments, or NUL bytes',\n      });\n    }\n  }\n});\nconst managedLinksSchema = z.object({\n  claude: managedLinksMapSchema.default({}),\n  pi: managedLinksMapSchema.default({}),\n});\nconst skillsStateSchema = z.object({\n  schemaVersion: z.union([z.literal('1'), z.literal('2')]),\n  enabledPacks: runtimeEnabledPacksSchema,\n  managedLinks: managedLinksSchema.default({ claude: {}, pi: {} }),\n  installedVersion: z.string().min(1).optional(),\n  installedFrom: z.string().min(1).optional(),\n  installedAt: z.string().datetime().optional(),\n});\n\nexport type ManagedLinks = { claude: Record<string, string>; pi: Record<string, string> };\nexport type SkillsState = z.infer<typeof skillsStateSchema>;\n\nfunction normalizePackList(names: readonly string[]): string[] {\n  return [...new Set(names)].sort((a, b) => a.localeCompare(b));\n}\ntype SkillsStateInput = Omit<SkillsState, 'managedLinks'> & { managedLinks?: ManagedLinks };\n\nfunction normalizeState(state: SkillsStateInput): SkillsState {\n  return {\n    ...state,\n    schemaVersion: SKILLS_STATE_SCHEMA_VERSION,\n    enabledPacks: { claude: normalizePackList(state.enabledPacks.claude), pi: normalizePackList(state.enabledPacks.pi) },\n    managedLinks: { claude: { ...(state.managedLinks?.claude ?? {}) }, pi: { ...(state.managedLinks?.pi ?? {}) } },\n  };\n}\n\nexport function createDefaultSkillsState(): SkillsState {\n  return { schemaVersion: SKILLS_STATE_SCHEMA_VERSION, enabledPacks: { claude: [], pi: [] }, managedLinks: { claude: {}, pi: {} } };\n}\n\nexport async function ensureSkillsTreeStructure(skillsRoot: string): Promise<void> {\n  await fs.ensureDir(resolveDefaultTierRoot(skillsRoot));\n  await fs.ensureDir(resolveOptionalTierRoot(skillsRoot));\n}\n\nexport async function writeSkillsState(skillsRoot: string, state: SkillsStateInput): Promise<SkillsState> {\n  const validated = normalizeState(skillsStateSchema.parse(state));\n  await ensureSkillsTreeStructure(skillsRoot);\n  const statePath = resolveStateFilePath(skillsRoot);\n  await fs.writeJson(statePath, validated, { spaces: 2 });\n  await fs.appendFile(statePath, '\\n');\n  return validated;\n}\n\nexport async function readSkillsState(skillsRoot: string): Promise<SkillsState> {\n  const statePath = resolveStateFilePath(skillsRoot);\n  if (!await fs.pathExists(statePath)) return writeSkillsState(skillsRoot, createDefaultSkillsState());\n  const raw = await fs.readJson(statePath);\n  const parsed = skillsStateSchema.safeParse(raw);\n  if (parsed.success) {\n    await ensureSkillsTreeStructure(skillsRoot);\n    return normalizeState(parsed.data);\n  }\n  const hasManagedLinks = typeof raw === 'object' && raw !== null && Object.prototype.hasOwnProperty.call(raw, 'managedLinks');\n  const legacy = z.object({ schemaVersion: z.union([z.literal('1'), z.literal(SKILLS_STATE_SCHEMA_VERSION)]), enabledPacks: runtimeEnabledPacksSchema }).safeParse(raw);\n  if (hasManagedLinks || !legacy.success) throw new Error(`Invalid skills state at ${statePath}: ${parsed.error.message}`);\n  return writeSkillsState(skillsRoot, { schemaVersion: SKILLS_STATE_SCHEMA_VERSION, enabledPacks: legacy.data.enabledPacks, managedLinks: { claude: {}, pi: {} } });\n}\n\nexport async function setRuntimeEnabledPacks(skillsRoot: string, runtime: SkillsRuntime, packNames: readonly string[]): Promise<SkillsState> {\n  const state = await readSkillsState(skillsRoot);\n  return writeSkillsState(skillsRoot, { ...state, enabledPacks: { ...state.enabledPacks, [runtime]: normalizePackList(packNames) } });\n}\n","export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n","export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n","var _a;\n/** A special constant with type `never` */\nexport const NEVER = /*@__PURE__*/ Object.freeze({\n    status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n    function init(inst, def) {\n        if (!inst._zod) {\n            Object.defineProperty(inst, \"_zod\", {\n                value: {\n                    def,\n                    constr: _,\n                    traits: new Set(),\n                },\n                enumerable: false,\n            });\n        }\n        if (inst._zod.traits.has(name)) {\n            return;\n        }\n        inst._zod.traits.add(name);\n        initializer(inst, def);\n        // support prototype modifications\n        const proto = _.prototype;\n        const keys = Object.keys(proto);\n        for (let i = 0; i < keys.length; i++) {\n            const k = keys[i];\n            if (!(k in inst)) {\n                inst[k] = proto[k].bind(inst);\n            }\n        }\n    }\n    // doesn't work if Parent has a constructor with arguments\n    const Parent = params?.Parent ?? Object;\n    class Definition extends Parent {\n    }\n    Object.defineProperty(Definition, \"name\", { value: name });\n    function _(def) {\n        var _a;\n        const inst = params?.Parent ? new Definition() : this;\n        init(inst, def);\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        for (const fn of inst._zod.deferred) {\n            fn();\n        }\n        return inst;\n    }\n    Object.defineProperty(_, \"init\", { value: init });\n    Object.defineProperty(_, Symbol.hasInstance, {\n        value: (inst) => {\n            if (params?.Parent && inst instanceof params.Parent)\n                return true;\n            return inst?._zod?.traits?.has(name);\n        },\n    });\n    Object.defineProperty(_, \"name\", { value: name });\n    return _;\n}\n//////////////////////////////   UTILITIES   ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n    constructor() {\n        super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n    }\n}\nexport class $ZodEncodeError extends Error {\n    constructor(name) {\n        super(`Encountered unidirectional transform during encode: ${name}`);\n        this.name = \"ZodEncodeError\";\n    }\n}\n(_a = globalThis).__zod_globalConfig ?? (_a.__zod_globalConfig = {});\nexport const globalConfig = globalThis.__zod_globalConfig;\nexport function config(newConfig) {\n    if (newConfig)\n        Object.assign(globalConfig, newConfig);\n    return globalConfig;\n}\n","import { globalConfig } from \"./core.js\";\n// functions\nexport function assertEqual(val) {\n    return val;\n}\nexport function assertNotEqual(val) {\n    return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n    throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n    const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n    const values = Object.entries(entries)\n        .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n        .map(([_, v]) => v);\n    return values;\n}\nexport function joinValues(array, separator = \"|\") {\n    return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n    if (typeof value === \"bigint\")\n        return value.toString();\n    return value;\n}\nexport function cached(getter) {\n    const set = false;\n    return {\n        get value() {\n            if (!set) {\n                const value = getter();\n                Object.defineProperty(this, \"value\", { value });\n                return value;\n            }\n            throw new Error(\"cached value already set\");\n        },\n    };\n}\nexport function nullish(input) {\n    return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n    const start = source.startsWith(\"^\") ? 1 : 0;\n    const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n    return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n    const ratio = val / step;\n    const roundedRatio = Math.round(ratio);\n    // Use a relative epsilon scaled to the magnitude of the result\n    const tolerance = Number.EPSILON * Math.max(Math.abs(ratio), 1);\n    if (Math.abs(ratio - roundedRatio) < tolerance)\n        return 0;\n    return ratio - roundedRatio;\n}\nconst EVALUATING = /* @__PURE__*/ Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n    let value = undefined;\n    Object.defineProperty(object, key, {\n        get() {\n            if (value === EVALUATING) {\n                // Circular reference detected, return undefined to break the cycle\n                return undefined;\n            }\n            if (value === undefined) {\n                value = EVALUATING;\n                value = getter();\n            }\n            return value;\n        },\n        set(v) {\n            Object.defineProperty(object, key, {\n                value: v,\n                // configurable: true,\n            });\n            // object[key] = v;\n        },\n        configurable: true,\n    });\n}\nexport function objectClone(obj) {\n    return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n    Object.defineProperty(target, prop, {\n        value,\n        writable: true,\n        enumerable: true,\n        configurable: true,\n    });\n}\nexport function mergeDefs(...defs) {\n    const mergedDescriptors = {};\n    for (const def of defs) {\n        const descriptors = Object.getOwnPropertyDescriptors(def);\n        Object.assign(mergedDescriptors, descriptors);\n    }\n    return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n    return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n    if (!path)\n        return obj;\n    return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n    const keys = Object.keys(promisesObj);\n    const promises = keys.map((key) => promisesObj[key]);\n    return Promise.all(promises).then((results) => {\n        const resolvedObj = {};\n        for (let i = 0; i < keys.length; i++) {\n            resolvedObj[keys[i]] = results[i];\n        }\n        return resolvedObj;\n    });\n}\nexport function randomString(length = 10) {\n    const chars = \"abcdefghijklmnopqrstuvwxyz\";\n    let str = \"\";\n    for (let i = 0; i < length; i++) {\n        str += chars[Math.floor(Math.random() * chars.length)];\n    }\n    return str;\n}\nexport function esc(str) {\n    return JSON.stringify(str);\n}\nexport function slugify(input) {\n    return input\n        .toLowerCase()\n        .trim()\n        .replace(/[^\\w\\s-]/g, \"\")\n        .replace(/[\\s_-]+/g, \"-\")\n        .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n    return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = /* @__PURE__*/ cached(() => {\n    // Skip the probe under `jitless`: strict CSPs report the caught `new Function`\n    // as a `securitypolicyviolation` even though the throw is swallowed.\n    if (globalConfig.jitless) {\n        return false;\n    }\n    // @ts-ignore\n    if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n        return false;\n    }\n    try {\n        const F = Function;\n        new F(\"\");\n        return true;\n    }\n    catch (_) {\n        return false;\n    }\n});\nexport function isPlainObject(o) {\n    if (isObject(o) === false)\n        return false;\n    // modified constructor\n    const ctor = o.constructor;\n    if (ctor === undefined)\n        return true;\n    if (typeof ctor !== \"function\")\n        return true;\n    // modified prototype\n    const prot = ctor.prototype;\n    if (isObject(prot) === false)\n        return false;\n    // ctor doesn't have static `isPrototypeOf`\n    if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n        return false;\n    }\n    return true;\n}\nexport function shallowClone(o) {\n    if (isPlainObject(o))\n        return { ...o };\n    if (Array.isArray(o))\n        return [...o];\n    if (o instanceof Map)\n        return new Map(o);\n    if (o instanceof Set)\n        return new Set(o);\n    return o;\n}\nexport function numKeys(data) {\n    let keyCount = 0;\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            keyCount++;\n        }\n    }\n    return keyCount;\n}\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return \"undefined\";\n        case \"string\":\n            return \"string\";\n        case \"number\":\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        case \"boolean\":\n            return \"boolean\";\n        case \"function\":\n            return \"function\";\n        case \"bigint\":\n            return \"bigint\";\n        case \"symbol\":\n            return \"symbol\";\n        case \"object\":\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return \"promise\";\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return \"map\";\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return \"set\";\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return \"date\";\n            }\n            // @ts-ignore\n            if (typeof File !== \"undefined\" && data instanceof File) {\n                return \"file\";\n            }\n            return \"object\";\n        default:\n            throw new Error(`Unknown data type: ${t}`);\n    }\n};\nexport const propertyKeyTypes = /* @__PURE__*/ new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = /* @__PURE__*/ new Set([\n    \"string\",\n    \"number\",\n    \"bigint\",\n    \"boolean\",\n    \"symbol\",\n    \"undefined\",\n]);\nexport function escapeRegex(str) {\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n    const cl = new inst._zod.constr(def ?? inst._zod.def);\n    if (!def || params?.parent)\n        cl._zod.parent = inst;\n    return cl;\n}\nexport function normalizeParams(_params) {\n    const params = _params;\n    if (!params)\n        return {};\n    if (typeof params === \"string\")\n        return { error: () => params };\n    if (params?.message !== undefined) {\n        if (params?.error !== undefined)\n            throw new Error(\"Cannot specify both `message` and `error` params\");\n        params.error = params.message;\n    }\n    delete params.message;\n    if (typeof params.error === \"string\")\n        return { ...params, error: () => params.error };\n    return params;\n}\nexport function createTransparentProxy(getter) {\n    let target;\n    return new Proxy({}, {\n        get(_, prop, receiver) {\n            target ?? (target = getter());\n            return Reflect.get(target, prop, receiver);\n        },\n        set(_, prop, value, receiver) {\n            target ?? (target = getter());\n            return Reflect.set(target, prop, value, receiver);\n        },\n        has(_, prop) {\n            target ?? (target = getter());\n            return Reflect.has(target, prop);\n        },\n        deleteProperty(_, prop) {\n            target ?? (target = getter());\n            return Reflect.deleteProperty(target, prop);\n        },\n        ownKeys(_) {\n            target ?? (target = getter());\n            return Reflect.ownKeys(target);\n        },\n        getOwnPropertyDescriptor(_, prop) {\n            target ?? (target = getter());\n            return Reflect.getOwnPropertyDescriptor(target, prop);\n        },\n        defineProperty(_, prop, descriptor) {\n            target ?? (target = getter());\n            return Reflect.defineProperty(target, prop, descriptor);\n        },\n    });\n}\nexport function stringifyPrimitive(value) {\n    if (typeof value === \"bigint\")\n        return value.toString() + \"n\";\n    if (typeof value === \"string\")\n        return `\"${value}\"`;\n    return `${value}`;\n}\nexport function optionalKeys(shape) {\n    return Object.keys(shape).filter((k) => {\n        return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n    });\n}\nexport const NUMBER_FORMAT_RANGES = {\n    safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n    int32: [-2147483648, 2147483647],\n    uint32: [0, 4294967295],\n    float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n    float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n    int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n    uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const newShape = {};\n            for (const key in mask) {\n                if (!(key in currDef.shape)) {\n                    throw new Error(`Unrecognized key: \"${key}\"`);\n                }\n                if (!mask[key])\n                    continue;\n                newShape[key] = currDef.shape[key];\n            }\n            assignProp(this, \"shape\", newShape); // self-caching\n            return newShape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function omit(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const newShape = { ...schema._zod.def.shape };\n            for (const key in mask) {\n                if (!(key in currDef.shape)) {\n                    throw new Error(`Unrecognized key: \"${key}\"`);\n                }\n                if (!mask[key])\n                    continue;\n                delete newShape[key];\n            }\n            assignProp(this, \"shape\", newShape); // self-caching\n            return newShape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function extend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to extend: expected a plain object\");\n    }\n    const checks = schema._zod.def.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        // Only throw if new shape overlaps with existing shape\n        // Use getOwnPropertyDescriptor to check key existence without accessing values\n        const existingShape = schema._zod.def.shape;\n        for (const key in shape) {\n            if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n                throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n            }\n        }\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const _shape = { ...schema._zod.def.shape, ...shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n    });\n    return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const _shape = { ...schema._zod.def.shape, ...shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n    });\n    return clone(schema, def);\n}\nexport function merge(a, b) {\n    if (a._zod.def.checks?.length) {\n        throw new Error(\".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.\");\n    }\n    const def = mergeDefs(a._zod.def, {\n        get shape() {\n            const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n        get catchall() {\n            return b._zod.def.catchall;\n        },\n        checks: b._zod.def.checks ?? [],\n    });\n    return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const oldShape = schema._zod.def.shape;\n            const shape = { ...oldShape };\n            if (mask) {\n                for (const key in mask) {\n                    if (!(key in oldShape)) {\n                        throw new Error(`Unrecognized key: \"${key}\"`);\n                    }\n                    if (!mask[key])\n                        continue;\n                    // if (oldShape[key]!._zod.optin === \"optional\") continue;\n                    shape[key] = Class\n                        ? new Class({\n                            type: \"optional\",\n                            innerType: oldShape[key],\n                        })\n                        : oldShape[key];\n                }\n            }\n            else {\n                for (const key in oldShape) {\n                    // if (oldShape[key]!._zod.optin === \"optional\") continue;\n                    shape[key] = Class\n                        ? new Class({\n                            type: \"optional\",\n                            innerType: oldShape[key],\n                        })\n                        : oldShape[key];\n                }\n            }\n            assignProp(this, \"shape\", shape); // self-caching\n            return shape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const oldShape = schema._zod.def.shape;\n            const shape = { ...oldShape };\n            if (mask) {\n                for (const key in mask) {\n                    if (!(key in shape)) {\n                        throw new Error(`Unrecognized key: \"${key}\"`);\n                    }\n                    if (!mask[key])\n                        continue;\n                    // overwrite with non-optional\n                    shape[key] = new Class({\n                        type: \"nonoptional\",\n                        innerType: oldShape[key],\n                    });\n                }\n            }\n            else {\n                for (const key in oldShape) {\n                    // overwrite with non-optional\n                    shape[key] = new Class({\n                        type: \"nonoptional\",\n                        innerType: oldShape[key],\n                    });\n                }\n            }\n            assignProp(this, \"shape\", shape); // self-caching\n            return shape;\n        },\n    });\n    return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n    if (x.aborted === true)\n        return true;\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue !== true) {\n            return true;\n        }\n    }\n    return false;\n}\n// Checks for explicit abort (continue === false), as opposed to implicit abort (continue === undefined).\n// Used to respect `abort: true` in .refine() even for checks that have a `when` function.\nexport function explicitlyAborted(x, startIndex = 0) {\n    if (x.aborted === true)\n        return true;\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue === false) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function prefixIssues(path, issues) {\n    return issues.map((iss) => {\n        var _a;\n        (_a = iss).path ?? (_a.path = []);\n        iss.path.unshift(path);\n        return iss;\n    });\n}\nexport function unwrapMessage(message) {\n    return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n    const message = iss.message\n        ? iss.message\n        : (unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n            unwrapMessage(ctx?.error?.(iss)) ??\n            unwrapMessage(config.customError?.(iss)) ??\n            unwrapMessage(config.localeError?.(iss)) ??\n            \"Invalid input\");\n    const { inst: _inst, continue: _continue, input: _input, ...rest } = iss;\n    rest.path ?? (rest.path = []);\n    rest.message = message;\n    if (ctx?.reportInput) {\n        rest.input = _input;\n    }\n    return rest;\n}\nexport function getSizableOrigin(input) {\n    if (input instanceof Set)\n        return \"set\";\n    if (input instanceof Map)\n        return \"map\";\n    // @ts-ignore\n    if (input instanceof File)\n        return \"file\";\n    return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n    if (Array.isArray(input))\n        return \"array\";\n    if (typeof input === \"string\")\n        return \"string\";\n    return \"unknown\";\n}\nexport function parsedType(data) {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        }\n        case \"object\": {\n            if (data === null) {\n                return \"null\";\n            }\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            const obj = data;\n            if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n                return obj.constructor.name;\n            }\n        }\n    }\n    return t;\n}\nexport function issue(...args) {\n    const [iss, input, inst] = args;\n    if (typeof iss === \"string\") {\n        return {\n            message: iss,\n            code: \"custom\",\n            input,\n            inst,\n        };\n    }\n    return { ...iss };\n}\nexport function cleanEnum(obj) {\n    return Object.entries(obj)\n        .filter(([k, _]) => {\n        // return true if NaN, meaning it's not a number, thus a string key\n        return Number.isNaN(Number.parseInt(k, 10));\n    })\n        .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n    const binaryString = atob(base64);\n    const bytes = new Uint8Array(binaryString.length);\n    for (let i = 0; i < binaryString.length; i++) {\n        bytes[i] = binaryString.charCodeAt(i);\n    }\n    return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n    let binaryString = \"\";\n    for (let i = 0; i < bytes.length; i++) {\n        binaryString += String.fromCharCode(bytes[i]);\n    }\n    return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n    const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n    return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n    return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n    const cleanHex = hex.replace(/^0x/, \"\");\n    if (cleanHex.length % 2 !== 0) {\n        throw new Error(\"Invalid hex string length\");\n    }\n    const bytes = new Uint8Array(cleanHex.length / 2);\n    for (let i = 0; i < cleanHex.length; i += 2) {\n        bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n    }\n    return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n    return Array.from(bytes)\n        .map((b) => b.toString(16).padStart(2, \"0\"))\n        .join(\"\");\n}\n// instanceof\nexport class Class {\n    constructor(..._args) { }\n}\n","import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n    inst.name = \"$ZodError\";\n    Object.defineProperty(inst, \"_zod\", {\n        value: inst._zod,\n        enumerable: false,\n    });\n    Object.defineProperty(inst, \"issues\", {\n        value: def,\n        enumerable: false,\n    });\n    inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n    Object.defineProperty(inst, \"toString\", {\n        value: () => inst.message,\n        enumerable: false,\n    });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = {};\n    const formErrors = [];\n    for (const sub of error.issues) {\n        if (sub.path.length > 0) {\n            fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n            fieldErrors[sub.path[0]].push(mapper(sub));\n        }\n        else {\n            formErrors.push(mapper(sub));\n        }\n    }\n    return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = { _errors: [] };\n    const processError = (error, path = []) => {\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    fieldErrors._errors.push(mapper(issue));\n                }\n                else {\n                    let curr = fieldErrors;\n                    let i = 0;\n                    while (i < fullpath.length) {\n                        const el = fullpath[i];\n                        const terminal = i === fullpath.length - 1;\n                        if (!terminal) {\n                            curr[el] = curr[el] || { _errors: [] };\n                        }\n                        else {\n                            curr[el] = curr[el] || { _errors: [] };\n                            curr[el]._errors.push(mapper(issue));\n                        }\n                        curr = curr[el];\n                        i++;\n                    }\n                }\n            }\n        }\n    };\n    processError(error);\n    return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n    const result = { errors: [] };\n    const processError = (error, path = []) => {\n        var _a, _b;\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                // regular union error\n                issue.errors.map((issues) => processError({ issues }, [...path, ...issue.path]));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, [...path, ...issue.path]);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    result.errors.push(mapper(issue));\n                    continue;\n                }\n                let curr = result;\n                let i = 0;\n                while (i < fullpath.length) {\n                    const el = fullpath[i];\n                    const terminal = i === fullpath.length - 1;\n                    if (typeof el === \"string\") {\n                        curr.properties ?? (curr.properties = {});\n                        (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n                        curr = curr.properties[el];\n                    }\n                    else {\n                        curr.items ?? (curr.items = []);\n                        (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n                        curr = curr.items[el];\n                    }\n                    if (terminal) {\n                        curr.errors.push(mapper(issue));\n                    }\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n *   issues: [\n *     {\n *       expected: 'string',\n *       code: 'invalid_type',\n *       path: [ 'username' ],\n *       message: 'Invalid input: expected string'\n *     },\n *     {\n *       expected: 'number',\n *       code: 'invalid_type',\n *       path: [ 'favoriteNumbers', 1 ],\n *       message: 'Invalid input: expected number'\n *     }\n *   ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n *   ✖ Expected number, received string at \"username\n * favoriteNumbers[0]\n *   ✖ Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n    const segs = [];\n    const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n    for (const seg of path) {\n        if (typeof seg === \"number\")\n            segs.push(`[${seg}]`);\n        else if (typeof seg === \"symbol\")\n            segs.push(`[${JSON.stringify(String(seg))}]`);\n        else if (/[^\\w$]/.test(seg))\n            segs.push(`[${JSON.stringify(seg)}]`);\n        else {\n            if (segs.length)\n                segs.push(\".\");\n            segs.push(seg);\n        }\n    }\n    return segs.join(\"\");\n}\nexport function prettifyError(error) {\n    const lines = [];\n    // sort by path length\n    const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n    // Process each issue\n    for (const issue of issues) {\n        lines.push(`✖ ${issue.message}`);\n        if (issue.path?.length)\n            lines.push(`  → at ${toDotPath(issue.path)}`);\n    }\n    // Convert Map to formatted string\n    return lines.join(\"\\n\");\n}\n","import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n    const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    if (result.issues.length) {\n        const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, _params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n    const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    if (result.issues.length) {\n        const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    return result.issues.length\n        ? {\n            success: false,\n            error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: true } : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    return result.issues.length\n        ? {\n            success: false,\n            error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n    return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n    return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n    return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, direction: \"backward\" } : { direction: \"backward\" };\n    return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n    return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n","import * as util from \"./util.js\";\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const cuid = /^[cC][0-9a-z]{6,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n    if (!version)\n        return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n    return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[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/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[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// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n    return new RegExp(_emoji, \"u\");\n}\nexport const 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])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){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}|:))$/;\nexport const mac = (delimiter) => {\n    const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n    return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((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])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\nexport const httpProtocol = /^https?$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n    const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n    const regex = typeof args.precision === \"number\"\n        ? args.precision === -1\n            ? `${hhmm}`\n            : args.precision === 0\n                ? `${hhmm}:[0-5]\\\\d`\n                : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n        : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n    return regex;\n}\nexport function time(args) {\n    return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n    const time = timeSource({ precision: args.precision });\n    const opts = [\"Z\"];\n    if (args.local)\n        opts.push(\"\");\n    // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n    if (args.offset)\n        opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n    const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n    return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n    const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n    return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n    return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n    return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n","// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n    var _a;\n    inst._zod ?? (inst._zod = {});\n    inst._zod.def = def;\n    (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n    number: \"number\",\n    bigint: \"bigint\",\n    object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n        if (def.value < curr) {\n            if (def.inclusive)\n                bag.maximum = def.value;\n            else\n                bag.exclusiveMaximum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n        if (def.value > curr) {\n            if (def.inclusive)\n                bag.minimum = def.value;\n            else\n                bag.exclusiveMinimum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        var _a;\n        (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n    });\n    inst._zod.check = (payload) => {\n        if (typeof payload.value !== typeof def.value)\n            throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n        const isMultiple = typeof payload.value === \"bigint\"\n            ? payload.value % def.value === BigInt(0)\n            : util.floatSafeRemainder(payload.value, def.value) === 0;\n        if (isMultiple)\n            return;\n        payload.issues.push({\n            origin: typeof payload.value,\n            code: \"not_multiple_of\",\n            divisor: def.value,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    def.format = def.format || \"float64\";\n    const isInt = def.format?.includes(\"int\");\n    const origin = isInt ? \"int\" : \"number\";\n    const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n        if (isInt)\n            bag.pattern = regexes.integer;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (isInt) {\n            if (!Number.isInteger(input)) {\n                // invalid_format issue\n                // payload.issues.push({\n                //   expected: def.format,\n                //   format: def.format,\n                //   code: \"invalid_format\",\n                //   input,\n                //   inst,\n                // });\n                // invalid_type issue\n                payload.issues.push({\n                    expected: origin,\n                    format: def.format,\n                    code: \"invalid_type\",\n                    continue: false,\n                    input,\n                    inst,\n                });\n                return;\n                // not_multiple_of issue\n                // payload.issues.push({\n                //   code: \"not_multiple_of\",\n                //   origin: \"number\",\n                //   input,\n                //   inst,\n                //   divisor: 1,\n                // });\n            }\n            if (!Number.isSafeInteger(input)) {\n                if (input > 0) {\n                    // too_big\n                    payload.issues.push({\n                        input,\n                        code: \"too_big\",\n                        maximum: Number.MAX_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                else {\n                    // too_small\n                    payload.issues.push({\n                        input,\n                        code: \"too_small\",\n                        minimum: Number.MIN_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                return;\n            }\n        }\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_small\",\n                minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_small\",\n                minimum: minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size <= def.maximum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size >= def.minimum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.size;\n        bag.maximum = def.size;\n        bag.size = def.size;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size === def.size)\n            return;\n        const tooBig = size > def.size;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length <= def.maximum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length >= def.minimum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.length;\n        bag.maximum = def.length;\n        bag.length = def.length;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length === def.length)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        const tooBig = length > def.length;\n        payload.issues.push({\n            origin,\n            ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n    var _a, _b;\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        if (def.pattern) {\n            bag.patterns ?? (bag.patterns = new Set());\n            bag.patterns.add(def.pattern);\n        }\n    });\n    if (def.pattern)\n        (_a = inst._zod).check ?? (_a.check = (payload) => {\n            def.pattern.lastIndex = 0;\n            if (def.pattern.test(payload.value))\n                return;\n            payload.issues.push({\n                origin: \"string\",\n                code: \"invalid_format\",\n                format: def.format,\n                input: payload.value,\n                ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n                inst,\n                continue: !def.abort,\n            });\n        });\n    else\n        (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n    $ZodCheckStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        def.pattern.lastIndex = 0;\n        if (def.pattern.test(payload.value))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"regex\",\n            input: payload.value,\n            pattern: def.pattern.toString(),\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.lowercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.uppercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const escapedRegex = util.escapeRegex(def.includes);\n    const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n    def.pattern = pattern;\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.includes(def.includes, def.position))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"includes\",\n            includes: def.includes,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.startsWith(def.prefix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"starts_with\",\n            prefix: def.prefix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.endsWith(def.suffix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"ends_with\",\n            suffix: def.suffix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n///////////////////////////////////\n/////    $ZodCheckProperty    /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n    if (result.issues.length) {\n        payload.issues.push(...util.prefixIssues(property, result.issues));\n    }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        const result = def.schema._zod.run({\n            value: payload.value[def.property],\n            issues: [],\n        }, {});\n        if (result instanceof Promise) {\n            return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n        }\n        handleCheckPropertyResult(result, payload, def.property);\n        return;\n    };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const mimeSet = new Set(def.mime);\n    inst._zod.onattach.push((inst) => {\n        inst._zod.bag.mime = def.mime;\n    });\n    inst._zod.check = (payload) => {\n        if (mimeSet.has(payload.value.type))\n            return;\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.mime,\n            input: payload.value.type,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        payload.value = def.tx(payload.value);\n    };\n});\n","export class Doc {\n    constructor(args = []) {\n        this.content = [];\n        this.indent = 0;\n        if (this)\n            this.args = args;\n    }\n    indented(fn) {\n        this.indent += 1;\n        fn(this);\n        this.indent -= 1;\n    }\n    write(arg) {\n        if (typeof arg === \"function\") {\n            arg(this, { execution: \"sync\" });\n            arg(this, { execution: \"async\" });\n            return;\n        }\n        const content = arg;\n        const lines = content.split(\"\\n\").filter((x) => x);\n        const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n        const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n        for (const line of dedented) {\n            this.content.push(line);\n        }\n    }\n    compile() {\n        const F = Function;\n        const args = this?.args;\n        const content = this?.content ?? [``];\n        const lines = [...content.map((x) => `  ${x}`)];\n        // console.log(lines.join(\"\\n\"));\n        return new F(...args, lines.join(\"\\n\"));\n    }\n}\n","export const version = {\n    major: 4,\n    minor: 4,\n    patch: 3,\n};\n","import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n    var _a;\n    inst ?? (inst = {});\n    inst._zod.def = def; // set _def property\n    inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n    inst._zod.version = version;\n    const checks = [...(inst._zod.def.checks ?? [])];\n    // if inst is itself a checks.$ZodCheck, run it as a check\n    if (inst._zod.traits.has(\"$ZodCheck\")) {\n        checks.unshift(inst);\n    }\n    for (const ch of checks) {\n        for (const fn of ch._zod.onattach) {\n            fn(inst);\n        }\n    }\n    if (checks.length === 0) {\n        // deferred initializer\n        // inst._zod.parse is not yet defined\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred?.push(() => {\n            inst._zod.run = inst._zod.parse;\n        });\n    }\n    else {\n        const runChecks = (payload, checks, ctx) => {\n            let isAborted = util.aborted(payload);\n            let asyncResult;\n            for (const ch of checks) {\n                if (ch._zod.def.when) {\n                    if (util.explicitlyAborted(payload))\n                        continue;\n                    const shouldRun = ch._zod.def.when(payload);\n                    if (!shouldRun)\n                        continue;\n                }\n                else if (isAborted) {\n                    continue;\n                }\n                const currLen = payload.issues.length;\n                const _ = ch._zod.check(payload);\n                if (_ instanceof Promise && ctx?.async === false) {\n                    throw new core.$ZodAsyncError();\n                }\n                if (asyncResult || _ instanceof Promise) {\n                    asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n                        await _;\n                        const nextLen = payload.issues.length;\n                        if (nextLen === currLen)\n                            return;\n                        if (!isAborted)\n                            isAborted = util.aborted(payload, currLen);\n                    });\n                }\n                else {\n                    const nextLen = payload.issues.length;\n                    if (nextLen === currLen)\n                        continue;\n                    if (!isAborted)\n                        isAborted = util.aborted(payload, currLen);\n                }\n            }\n            if (asyncResult) {\n                return asyncResult.then(() => {\n                    return payload;\n                });\n            }\n            return payload;\n        };\n        const handleCanaryResult = (canary, payload, ctx) => {\n            // abort if the canary is aborted\n            if (util.aborted(canary)) {\n                canary.aborted = true;\n                return canary;\n            }\n            // run checks first, then\n            const checkResult = runChecks(payload, checks, ctx);\n            if (checkResult instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n            }\n            return inst._zod.parse(checkResult, ctx);\n        };\n        inst._zod.run = (payload, ctx) => {\n            if (ctx.skipChecks) {\n                return inst._zod.parse(payload, ctx);\n            }\n            if (ctx.direction === \"backward\") {\n                // run canary\n                // initial pass (no checks)\n                const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n                if (canary instanceof Promise) {\n                    return canary.then((canary) => {\n                        return handleCanaryResult(canary, payload, ctx);\n                    });\n                }\n                return handleCanaryResult(canary, payload, ctx);\n            }\n            // forward\n            const result = inst._zod.parse(payload, ctx);\n            if (result instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return result.then((result) => runChecks(result, checks, ctx));\n            }\n            return runChecks(result, checks, ctx);\n        };\n    }\n    // Lazy initialize ~standard to avoid creating objects for every schema\n    util.defineLazy(inst, \"~standard\", () => ({\n        validate: (value) => {\n            try {\n                const r = safeParse(inst, value);\n                return r.success ? { value: r.data } : { issues: r.error?.issues };\n            }\n            catch (_) {\n                return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n            }\n        },\n        vendor: \"zod\",\n        version: 1,\n    }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n    inst._zod.parse = (payload, _) => {\n        if (def.coerce)\n            try {\n                payload.value = String(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"string\")\n            return payload;\n        payload.issues.push({\n            expected: \"string\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n    // check initialization must come first\n    checks.$ZodCheckStringFormat.init(inst, def);\n    $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.guid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n    if (def.version) {\n        const versionMap = {\n            v1: 1,\n            v2: 2,\n            v3: 3,\n            v4: 4,\n            v5: 5,\n            v6: 6,\n            v7: 7,\n            v8: 8,\n        };\n        const v = versionMap[def.version];\n        if (v === undefined)\n            throw new Error(`Invalid UUID version: \"${def.version}\"`);\n        def.pattern ?? (def.pattern = regexes.uuid(v));\n    }\n    else\n        def.pattern ?? (def.pattern = regexes.uuid());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.email);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        try {\n            // Trim whitespace from input\n            const trimmed = payload.value.trim();\n            // When normalize is off, require :// for http/https URLs\n            // This prevents strings like \"http:example.com\" or \"https:/path\" from being silently accepted\n            if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source) {\n                if (!/^https?:\\/\\//i.test(trimmed)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid URL format\",\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                    return;\n                }\n            }\n            // @ts-ignore\n            const url = new URL(trimmed);\n            if (def.hostname) {\n                def.hostname.lastIndex = 0;\n                if (!def.hostname.test(url.hostname)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid hostname\",\n                        pattern: def.hostname.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            if (def.protocol) {\n                def.protocol.lastIndex = 0;\n                if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid protocol\",\n                        pattern: def.protocol.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            // Set the output value based on normalize flag\n            if (def.normalize) {\n                // Use normalized URL\n                payload.value = url.href;\n            }\n            else {\n                // Preserve the original input (trimmed)\n                payload.value = trimmed;\n            }\n            return;\n        }\n        catch (_) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"url\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.emoji());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.nanoid);\n    $ZodStringFormat.init(inst, def);\n});\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link $ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid2);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ulid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.xid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ksuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.datetime(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.date);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.time(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.duration);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv4);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv6);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `ipv6`;\n    inst._zod.check = (payload) => {\n        try {\n            // @ts-ignore\n            new URL(`http://[${payload.value}]`);\n            // return;\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"ipv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv4);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        const parts = payload.value.split(\"/\");\n        try {\n            if (parts.length !== 2)\n                throw new Error();\n            const [address, prefix] = parts;\n            if (!prefix)\n                throw new Error();\n            const prefixNum = Number(prefix);\n            if (`${prefixNum}` !== prefix)\n                throw new Error();\n            if (prefixNum < 0 || prefixNum > 128)\n                throw new Error();\n            // @ts-ignore\n            new URL(`http://[${address}]`);\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"cidrv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64(data) {\n    if (data === \"\")\n        return true;\n    // atob ignores whitespace, so reject it up front.\n    if (/\\s/.test(data))\n        return false;\n    if (data.length % 4 !== 0)\n        return false;\n    try {\n        // @ts-ignore\n        atob(data);\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.contentEncoding = \"base64\";\n    inst._zod.check = (payload) => {\n        if (isValidBase64(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64URL(data) {\n    if (!regexes.base64url.test(data))\n        return false;\n    const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n    const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n    return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64url);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.contentEncoding = \"base64url\";\n    inst._zod.check = (payload) => {\n        if (isValidBase64URL(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64url\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.e164);\n    $ZodStringFormat.init(inst, def);\n});\n//////////////////////////////   ZodJWT   //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n    try {\n        const tokensParts = token.split(\".\");\n        if (tokensParts.length !== 3)\n            return false;\n        const [header] = tokensParts;\n        if (!header)\n            return false;\n        // @ts-ignore\n        const parsedHeader = JSON.parse(atob(header));\n        if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n            return false;\n        if (!parsedHeader.alg)\n            return false;\n        if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidJWT(payload.value, def.alg))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"jwt\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (def.fn(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: def.format,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Number(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n            return payload;\n        }\n        const received = typeof input === \"number\"\n            ? Number.isNaN(input)\n                ? \"NaN\"\n                : !Number.isFinite(input)\n                    ? \"Infinity\"\n                    : undefined\n            : undefined;\n        payload.issues.push({\n            expected: \"number\",\n            code: \"invalid_type\",\n            input,\n            inst,\n            ...(received ? { received } : {}),\n        });\n        return payload;\n    };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n    checks.$ZodCheckNumberFormat.init(inst, def);\n    $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.boolean;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Boolean(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"boolean\")\n            return payload;\n        payload.issues.push({\n            expected: \"boolean\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.bigint;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = BigInt(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"bigint\")\n            return payload;\n        payload.issues.push({\n            expected: \"bigint\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n    checks.$ZodCheckBigIntFormat.init(inst, def);\n    $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"symbol\")\n            return payload;\n        payload.issues.push({\n            expected: \"symbol\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.undefined;\n    inst._zod.values = new Set([undefined]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"undefined\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.null;\n    inst._zod.values = new Set([null]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (input === null)\n            return payload;\n        payload.issues.push({\n            expected: \"null\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        payload.issues.push({\n            expected: \"never\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"void\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce) {\n            try {\n                payload.value = new Date(payload.value);\n            }\n            catch (_err) { }\n        }\n        const input = payload.value;\n        const isDate = input instanceof Date;\n        const isValidDate = isDate && !Number.isNaN(input.getTime());\n        if (isValidDate)\n            return payload;\n        payload.issues.push({\n            expected: \"date\",\n            code: \"invalid_type\",\n            input,\n            ...(isDate ? { received: \"Invalid Date\" } : {}),\n            inst,\n        });\n        return payload;\n    };\n});\nfunction handleArrayResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                expected: \"array\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = Array(input.length);\n        const proms = [];\n        for (let i = 0; i < input.length; i++) {\n            const item = input[i];\n            const result = def.element._zod.run({\n                value: item,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n            }\n            else {\n                handleArrayResult(result, payload, i);\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload; //handleArrayResultsAsync(parseResults, final);\n    };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalIn, isOptionalOut) {\n    const isPresent = key in input;\n    if (result.issues.length) {\n        // For optional-in/out schemas, ignore errors on absent keys.\n        if (isOptionalIn && isOptionalOut && !isPresent) {\n            return;\n        }\n        final.issues.push(...util.prefixIssues(key, result.issues));\n    }\n    if (!isPresent && !isOptionalIn) {\n        if (!result.issues.length) {\n            final.issues.push({\n                code: \"invalid_type\",\n                expected: \"nonoptional\",\n                input: undefined,\n                path: [key],\n            });\n        }\n        return;\n    }\n    if (result.value === undefined) {\n        if (isPresent) {\n            final.value[key] = undefined;\n        }\n    }\n    else {\n        final.value[key] = result.value;\n    }\n}\nfunction normalizeDef(def) {\n    const keys = Object.keys(def.shape);\n    for (const k of keys) {\n        if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n            throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n        }\n    }\n    const okeys = util.optionalKeys(def.shape);\n    return {\n        ...def,\n        keys,\n        keySet: new Set(keys),\n        numKeys: keys.length,\n        optionalKeys: new Set(okeys),\n    };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n    const unrecognized = [];\n    const keySet = def.keySet;\n    const _catchall = def.catchall._zod;\n    const t = _catchall.def.type;\n    const isOptionalIn = _catchall.optin === \"optional\";\n    const isOptionalOut = _catchall.optout === \"optional\";\n    for (const key in input) {\n        // skip __proto__ so it can't replace the result prototype via the\n        // assignment setter on the plain {} we build into\n        if (key === \"__proto__\")\n            continue;\n        if (keySet.has(key))\n            continue;\n        if (t === \"never\") {\n            unrecognized.push(key);\n            continue;\n        }\n        const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n        if (r instanceof Promise) {\n            proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n        }\n        else {\n            handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n        }\n    }\n    if (unrecognized.length) {\n        payload.issues.push({\n            code: \"unrecognized_keys\",\n            keys: unrecognized,\n            input,\n            inst,\n        });\n    }\n    if (!proms.length)\n        return payload;\n    return Promise.all(proms).then(() => {\n        return payload;\n    });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodType.init(inst, def);\n    // const sh = def.shape;\n    const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n    if (!desc?.get) {\n        const sh = def.shape;\n        Object.defineProperty(def, \"shape\", {\n            get: () => {\n                const newSh = { ...sh };\n                Object.defineProperty(def, \"shape\", {\n                    value: newSh,\n                });\n                return newSh;\n            },\n        });\n    }\n    const _normalized = util.cached(() => normalizeDef(def));\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const shape = def.shape;\n        const propValues = {};\n        for (const key in shape) {\n            const field = shape[key]._zod;\n            if (field.values) {\n                propValues[key] ?? (propValues[key] = new Set());\n                for (const v of field.values)\n                    propValues[key].add(v);\n            }\n        }\n        return propValues;\n    });\n    const isObject = util.isObject;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = {};\n        const proms = [];\n        const shape = value.shape;\n        for (const key of value.keys) {\n            const el = shape[key];\n            const isOptionalIn = el._zod.optin === \"optional\";\n            const isOptionalOut = el._zod.optout === \"optional\";\n            const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut)));\n            }\n            else {\n                handlePropertyResult(r, payload, key, input, isOptionalIn, isOptionalOut);\n            }\n        }\n        if (!catchall) {\n            return proms.length ? Promise.all(proms).then(() => payload) : payload;\n        }\n        return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n    };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodObject.init(inst, def);\n    const superParse = inst._zod.parse;\n    const _normalized = util.cached(() => normalizeDef(def));\n    const generateFastpass = (shape) => {\n        const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n        const normalized = _normalized.value;\n        const parseStr = (key) => {\n            const k = util.esc(key);\n            return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n        };\n        doc.write(`const input = payload.value;`);\n        const ids = Object.create(null);\n        let counter = 0;\n        for (const key of normalized.keys) {\n            ids[key] = `key_${counter++}`;\n        }\n        // A: preserve key order {\n        doc.write(`const newResult = {};`);\n        for (const key of normalized.keys) {\n            const id = ids[key];\n            const k = util.esc(key);\n            const schema = shape[key];\n            const isOptionalIn = schema?._zod?.optin === \"optional\";\n            const isOptionalOut = schema?._zod?.optout === \"optional\";\n            doc.write(`const ${id} = ${parseStr(key)};`);\n            if (isOptionalIn && isOptionalOut) {\n                // For optional-in/out schemas, ignore errors on absent keys\n                doc.write(`\n        if (${id}.issues.length) {\n          if (${k} in input) {\n            payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n              ...iss,\n              path: iss.path ? [${k}, ...iss.path] : [${k}]\n            })));\n          }\n        }\n        \n        if (${id}.value === undefined) {\n          if (${k} in input) {\n            newResult[${k}] = undefined;\n          }\n        } else {\n          newResult[${k}] = ${id}.value;\n        }\n        \n      `);\n            }\n            else if (!isOptionalIn) {\n                doc.write(`\n        const ${id}_present = ${k} in input;\n        if (${id}.issues.length) {\n          payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${k}, ...iss.path] : [${k}]\n          })));\n        }\n        if (!${id}_present && !${id}.issues.length) {\n          payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: undefined,\n            path: [${k}]\n          });\n        }\n\n        if (${id}_present) {\n          if (${id}.value === undefined) {\n            newResult[${k}] = undefined;\n          } else {\n            newResult[${k}] = ${id}.value;\n          }\n        }\n\n      `);\n            }\n            else {\n                doc.write(`\n        if (${id}.issues.length) {\n          payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${k}, ...iss.path] : [${k}]\n          })));\n        }\n        \n        if (${id}.value === undefined) {\n          if (${k} in input) {\n            newResult[${k}] = undefined;\n          }\n        } else {\n          newResult[${k}] = ${id}.value;\n        }\n        \n      `);\n            }\n        }\n        doc.write(`payload.value = newResult;`);\n        doc.write(`return payload;`);\n        const fn = doc.compile();\n        return (payload, ctx) => fn(shape, payload, ctx);\n    };\n    let fastpass;\n    const isObject = util.isObject;\n    const jit = !core.globalConfig.jitless;\n    const allowsEval = util.allowsEval;\n    const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n            // always synchronous\n            if (!fastpass)\n                fastpass = generateFastpass(def.shape);\n            payload = fastpass(payload, ctx);\n            if (!catchall)\n                return payload;\n            return handleCatchall([], input, payload, ctx, value, inst);\n        }\n        return superParse(payload, ctx);\n    };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n    for (const result of results) {\n        if (result.issues.length === 0) {\n            final.value = result.value;\n            return final;\n        }\n    }\n    const nonaborted = results.filter((r) => !util.aborted(r));\n    if (nonaborted.length === 1) {\n        final.value = nonaborted[0].value;\n        return nonaborted[0];\n    }\n    final.issues.push({\n        code: \"invalid_union\",\n        input: final.value,\n        inst,\n        errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n    });\n    return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"values\", () => {\n        if (def.options.every((o) => o._zod.values)) {\n            return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n        }\n        return undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        if (def.options.every((o) => o._zod.pattern)) {\n            const patterns = def.options.map((o) => o._zod.pattern);\n            return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n        }\n        return undefined;\n    });\n    const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n    inst._zod.parse = (payload, ctx) => {\n        if (first) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                if (result.issues.length === 0)\n                    return result;\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n    const successes = results.filter((r) => r.issues.length === 0);\n    if (successes.length === 1) {\n        final.value = successes[0].value;\n        return final;\n    }\n    if (successes.length === 0) {\n        // No matches - same as regular union\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        });\n    }\n    else {\n        // Multiple matches - exclusive union failure\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: [],\n            inclusive: false,\n        });\n    }\n    return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n    $ZodUnion.init(inst, def);\n    def.inclusive = false;\n    const first = def.options.length === 1 ? def.options[0]._zod.run : null;\n    inst._zod.parse = (payload, ctx) => {\n        if (first) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n    def.inclusive = false;\n    $ZodUnion.init(inst, def);\n    const _super = inst._zod.parse;\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const propValues = {};\n        for (const option of def.options) {\n            const pv = option._zod.propValues;\n            if (!pv || Object.keys(pv).length === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n            for (const [k, v] of Object.entries(pv)) {\n                if (!propValues[k])\n                    propValues[k] = new Set();\n                for (const val of v) {\n                    propValues[k].add(val);\n                }\n            }\n        }\n        return propValues;\n    });\n    const disc = util.cached(() => {\n        const opts = def.options;\n        const map = new Map();\n        for (const o of opts) {\n            const values = o._zod.propValues?.[def.discriminator];\n            if (!values || values.size === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n            for (const v of values) {\n                if (map.has(v)) {\n                    throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n                }\n                map.set(v, o);\n            }\n        }\n        return map;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isObject(input)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"object\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const opt = disc.value.get(input?.[def.discriminator]);\n        if (opt) {\n            return opt._zod.run(payload, ctx);\n        }\n        // Fall back to union matching when the fast discriminator path fails:\n        // - explicitly enabled via unionFallback, or\n        // - during backward direction (encode), since codec-based discriminators\n        //   have different values in forward vs backward directions\n        if (def.unionFallback || ctx.direction === \"backward\") {\n            return _super(payload, ctx);\n        }\n        // no matching discriminator\n        payload.issues.push({\n            code: \"invalid_union\",\n            errors: [],\n            note: \"No matching discriminator\",\n            discriminator: def.discriminator,\n            options: Array.from(disc.value.keys()),\n            input,\n            path: [def.discriminator],\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n        const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n        const async = left instanceof Promise || right instanceof Promise;\n        if (async) {\n            return Promise.all([left, right]).then(([left, right]) => {\n                return handleIntersectionResults(payload, left, right);\n            });\n        }\n        return handleIntersectionResults(payload, left, right);\n    };\n});\nfunction mergeValues(a, b) {\n    // const aType = parse.t(a);\n    // const bType = parse.t(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    if (a instanceof Date && b instanceof Date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    if (util.isPlainObject(a) && util.isPlainObject(b)) {\n        const bKeys = Object.keys(b);\n        const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    if (Array.isArray(a) && Array.isArray(b)) {\n        if (a.length !== b.length) {\n            return { valid: false, mergeErrorPath: [] };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n    // Track which side(s) report each key as unrecognized\n    const unrecKeys = new Map();\n    let unrecIssue;\n    for (const iss of left.issues) {\n        if (iss.code === \"unrecognized_keys\") {\n            unrecIssue ?? (unrecIssue = iss);\n            for (const k of iss.keys) {\n                if (!unrecKeys.has(k))\n                    unrecKeys.set(k, {});\n                unrecKeys.get(k).l = true;\n            }\n        }\n        else {\n            result.issues.push(iss);\n        }\n    }\n    for (const iss of right.issues) {\n        if (iss.code === \"unrecognized_keys\") {\n            for (const k of iss.keys) {\n                if (!unrecKeys.has(k))\n                    unrecKeys.set(k, {});\n                unrecKeys.get(k).r = true;\n            }\n        }\n        else {\n            result.issues.push(iss);\n        }\n    }\n    // Report only keys unrecognized by BOTH sides\n    const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n    if (bothKeys.length && unrecIssue) {\n        result.issues.push({ ...unrecIssue, keys: bothKeys });\n    }\n    if (util.aborted(result))\n        return result;\n    const merged = mergeValues(left.value, right.value);\n    if (!merged.valid) {\n        throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n    }\n    result.value = merged.data;\n    return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const items = def.items;\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"tuple\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        payload.value = [];\n        const proms = [];\n        const optinStart = getTupleOptStart(items, \"optin\");\n        const optoutStart = getTupleOptStart(items, \"optout\");\n        if (!def.rest) {\n            if (input.length < optinStart) {\n                payload.issues.push({\n                    code: \"too_small\",\n                    minimum: optinStart,\n                    inclusive: true,\n                    input,\n                    inst,\n                    origin: \"array\",\n                });\n                return payload;\n            }\n            if (input.length > items.length) {\n                payload.issues.push({\n                    code: \"too_big\",\n                    maximum: items.length,\n                    inclusive: true,\n                    input,\n                    inst,\n                    origin: \"array\",\n                });\n            }\n        }\n        // Run every item in parallel, collecting results into an indexed\n        // array. The post-processing in `handleTupleResults` walks them in\n        // order so it can decide whether an absent optional-output error can\n        // truncate the tail or must be reported to preserve required output.\n        const itemResults = new Array(items.length);\n        for (let i = 0; i < items.length; i++) {\n            const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((rr) => {\n                    itemResults[i] = rr;\n                }));\n            }\n            else {\n                itemResults[i] = r;\n            }\n        }\n        if (def.rest) {\n            let i = items.length - 1;\n            const rest = input.slice(items.length);\n            for (const el of rest) {\n                i++;\n                const result = def.rest._zod.run({ value: el, issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((r) => handleTupleResult(r, payload, i)));\n                }\n                else {\n                    handleTupleResult(result, payload, i);\n                }\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => handleTupleResults(itemResults, payload, items, input, optoutStart));\n        }\n        return handleTupleResults(itemResults, payload, items, input, optoutStart);\n    };\n});\nfunction getTupleOptStart(items, key) {\n    for (let i = items.length - 1; i >= 0; i--) {\n        if (items[i]._zod[key] !== \"optional\")\n            return i + 1;\n    }\n    return 0;\n}\nfunction handleTupleResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nfunction handleTupleResults(itemResults, final, items, input, optoutStart) {\n    // Walk results in order. Mirror $ZodObject's swallow-on-absent-optional\n    // rule, but only after `optoutStart`: the first index where the output\n    // tuple tail can be absent.\n    for (let i = 0; i < items.length; i++) {\n        const r = itemResults[i];\n        const isPresent = i < input.length;\n        if (r.issues.length) {\n            if (!isPresent && i >= optoutStart) {\n                final.value.length = i;\n                break;\n            }\n            final.issues.push(...util.prefixIssues(i, r.issues));\n        }\n        final.value[i] = r.value;\n    }\n    // Drop trailing slots that produced `undefined` for absent input\n    // (the array analog of an absent optional key on an object). The\n    // `i >= input.length` floor is critical: an explicit `undefined`\n    // *inside* the input must be preserved even when the schema is\n    // optional-out (e.g. `z.string().or(z.undefined())` accepting an\n    // explicit undefined value).\n    for (let i = final.value.length - 1; i >= input.length; i--) {\n        if (items[i]._zod.optout === \"optional\" && final.value[i] === undefined) {\n            final.value.length = i;\n        }\n        else {\n            break;\n        }\n    }\n    return final;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isPlainObject(input)) {\n            payload.issues.push({\n                expected: \"record\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        const values = def.keyType._zod.values;\n        if (values) {\n            payload.value = {};\n            const recordKeys = new Set();\n            for (const key of values) {\n                if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n                    recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n                    const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                    if (keyResult instanceof Promise) {\n                        throw new Error(\"Async schemas not supported in object keys currently\");\n                    }\n                    if (keyResult.issues.length) {\n                        payload.issues.push({\n                            code: \"invalid_key\",\n                            origin: \"record\",\n                            issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                            input: key,\n                            path: [key],\n                            inst,\n                        });\n                        continue;\n                    }\n                    const outKey = keyResult.value;\n                    const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                    if (result instanceof Promise) {\n                        proms.push(result.then((result) => {\n                            if (result.issues.length) {\n                                payload.issues.push(...util.prefixIssues(key, result.issues));\n                            }\n                            payload.value[outKey] = result.value;\n                        }));\n                    }\n                    else {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[outKey] = result.value;\n                    }\n                }\n            }\n            let unrecognized;\n            for (const key in input) {\n                if (!recordKeys.has(key)) {\n                    unrecognized = unrecognized ?? [];\n                    unrecognized.push(key);\n                }\n            }\n            if (unrecognized && unrecognized.length > 0) {\n                payload.issues.push({\n                    code: \"unrecognized_keys\",\n                    input,\n                    inst,\n                    keys: unrecognized,\n                });\n            }\n        }\n        else {\n            payload.value = {};\n            // Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()\n            for (const key of Reflect.ownKeys(input)) {\n                if (key === \"__proto__\")\n                    continue;\n                if (!Object.prototype.propertyIsEnumerable.call(input, key))\n                    continue;\n                let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                if (keyResult instanceof Promise) {\n                    throw new Error(\"Async schemas not supported in object keys currently\");\n                }\n                // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n                // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n                const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n                if (checkNumericKey) {\n                    const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n                    if (retryResult instanceof Promise) {\n                        throw new Error(\"Async schemas not supported in object keys currently\");\n                    }\n                    if (retryResult.issues.length === 0) {\n                        keyResult = retryResult;\n                    }\n                }\n                if (keyResult.issues.length) {\n                    if (def.mode === \"loose\") {\n                        // Pass through unchanged\n                        payload.value[key] = input[key];\n                    }\n                    else {\n                        // Default \"strict\" behavior: error on invalid key\n                        payload.issues.push({\n                            code: \"invalid_key\",\n                            origin: \"record\",\n                            issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                            input: key,\n                            path: [key],\n                            inst,\n                        });\n                    }\n                    continue;\n                }\n                const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[keyResult.value] = result.value;\n                    }));\n                }\n                else {\n                    if (result.issues.length) {\n                        payload.issues.push(...util.prefixIssues(key, result.issues));\n                    }\n                    payload.value[keyResult.value] = result.value;\n                }\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload;\n    };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Map)) {\n            payload.issues.push({\n                expected: \"map\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Map();\n        for (const [key, value] of input) {\n            const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n            const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n            if (keyResult instanceof Promise || valueResult instanceof Promise) {\n                proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n                    handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n                }));\n            }\n            else {\n                handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n    if (keyResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, keyResult.issues));\n        }\n        else {\n            final.issues.push({\n                code: \"invalid_key\",\n                origin: \"map\",\n                input,\n                inst,\n                issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    if (valueResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, valueResult.issues));\n        }\n        else {\n            final.issues.push({\n                origin: \"map\",\n                code: \"invalid_element\",\n                input,\n                inst,\n                key: key,\n                issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Set)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"set\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Set();\n        for (const item of input) {\n            const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleSetResult(result, payload)));\n            }\n            else\n                handleSetResult(result, payload);\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleSetResult(result, final) {\n    if (result.issues.length) {\n        final.issues.push(...result.issues);\n    }\n    final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const values = util.getEnumValues(def.entries);\n    const valuesSet = new Set(values);\n    inst._zod.values = valuesSet;\n    inst._zod.pattern = new RegExp(`^(${values\n        .filter((k) => util.propertyKeyTypes.has(typeof k))\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (valuesSet.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    if (def.values.length === 0) {\n        throw new Error(\"Cannot create literal schema with no valid values\");\n    }\n    const values = new Set(def.values);\n    inst._zod.values = values;\n    inst._zod.pattern = new RegExp(`^(${def.values\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (values.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        // @ts-ignore\n        if (input instanceof File)\n            return payload;\n        payload.issues.push({\n            expected: \"file\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        const _out = def.transform(payload.value, payload);\n        if (ctx.async) {\n            const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n            return output.then((output) => {\n                payload.value = output;\n                payload.fallback = true;\n                return payload;\n            });\n        }\n        if (_out instanceof Promise) {\n            throw new core.$ZodAsyncError();\n        }\n        payload.value = _out;\n        payload.fallback = true;\n        return payload;\n    };\n});\nfunction handleOptionalResult(result, input) {\n    if (input === undefined && (result.issues.length || result.fallback)) {\n        return { issues: [], value: undefined };\n    }\n    return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    inst._zod.optout = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        if (def.innerType._zod.optin === \"optional\") {\n            const input = payload.value;\n            const result = def.innerType._zod.run(payload, ctx);\n            if (result instanceof Promise)\n                return result.then((r) => handleOptionalResult(r, input));\n            return handleOptionalResult(result, input);\n        }\n        if (payload.value === undefined) {\n            return payload;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n    // Call parent init - inherits optin/optout = \"optional\"\n    $ZodOptional.init(inst, def);\n    // Override values/pattern to NOT add undefined\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n    // Override parse to just delegate (no undefined handling)\n    inst._zod.parse = (payload, ctx) => {\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n    });\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        // Forward direction (decode): allow null to pass through\n        if (payload.value === null)\n            return payload;\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // inst._zod.qin = \"true\";\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply defaults for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n            /**\n             * $ZodDefault returns the default value immediately in forward direction.\n             * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe.   */\n            return payload;\n        }\n        // Forward direction: continue with default handling\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleDefaultResult(result, def));\n        }\n        return handleDefaultResult(result, def);\n    };\n});\nfunction handleDefaultResult(payload, def) {\n    if (payload.value === undefined) {\n        payload.value = def.defaultValue;\n    }\n    return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply prefault for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => {\n        const v = def.innerType._zod.values;\n        return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleNonOptionalResult(result, inst));\n        }\n        return handleNonOptionalResult(result, inst);\n    };\n});\nfunction handleNonOptionalResult(payload, inst) {\n    if (!payload.issues.length && payload.value === undefined) {\n        payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: payload.value,\n            inst,\n        });\n    }\n    return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(\"ZodSuccess\");\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.issues.length === 0;\n                return payload;\n            });\n        }\n        payload.value = result.issues.length === 0;\n        return payload;\n    };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply catch logic\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.value;\n                if (result.issues.length) {\n                    payload.value = def.catchValue({\n                        ...payload,\n                        error: {\n                            issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                        },\n                        input: payload.value,\n                    });\n                    payload.issues = [];\n                    payload.fallback = true;\n                }\n                return payload;\n            });\n        }\n        payload.value = result.value;\n        if (result.issues.length) {\n            payload.value = def.catchValue({\n                ...payload,\n                error: {\n                    issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                },\n                input: payload.value,\n            });\n            payload.issues = [];\n            payload.fallback = true;\n        }\n        return payload;\n    };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"nan\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n    util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handlePipeResult(right, def.in, ctx));\n            }\n            return handlePipeResult(right, def.in, ctx);\n        }\n        const left = def.in._zod.run(payload, ctx);\n        if (left instanceof Promise) {\n            return left.then((left) => handlePipeResult(left, def.out, ctx));\n        }\n        return handlePipeResult(left, def.out, ctx);\n    };\n});\nfunction handlePipeResult(left, next, ctx) {\n    if (left.issues.length) {\n        // prevent further checks\n        left.aborted = true;\n        return left;\n    }\n    return next._zod.run({ value: left.value, issues: left.issues, fallback: left.fallback }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n    util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        const direction = ctx.direction || \"forward\";\n        if (direction === \"forward\") {\n            const left = def.in._zod.run(payload, ctx);\n            if (left instanceof Promise) {\n                return left.then((left) => handleCodecAResult(left, def, ctx));\n            }\n            return handleCodecAResult(left, def, ctx);\n        }\n        else {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handleCodecAResult(right, def, ctx));\n            }\n            return handleCodecAResult(right, def, ctx);\n        }\n    };\n});\nfunction handleCodecAResult(result, def, ctx) {\n    if (result.issues.length) {\n        // prevent further checks\n        result.aborted = true;\n        return result;\n    }\n    const direction = ctx.direction || \"forward\";\n    if (direction === \"forward\") {\n        const transformed = def.transform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.out, ctx);\n    }\n    else {\n        const transformed = def.reverseTransform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.in, ctx);\n    }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n    // Check if transform added any issues\n    if (left.issues.length) {\n        left.aborted = true;\n        return left;\n    }\n    return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodPreprocess = /*@__PURE__*/ core.$constructor(\"$ZodPreprocess\", (inst, def) => {\n    $ZodPipe.init(inst, def);\n});\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then(handleReadonlyResult);\n        }\n        return handleReadonlyResult(result);\n    };\n});\nfunction handleReadonlyResult(payload) {\n    payload.value = Object.freeze(payload.value);\n    return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const regexParts = [];\n    for (const part of def.parts) {\n        if (typeof part === \"object\" && part !== null) {\n            // is Zod schema\n            if (!part._zod.pattern) {\n                // if (!source)\n                throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n            }\n            const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n            if (!source)\n                throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n            const start = source.startsWith(\"^\") ? 1 : 0;\n            const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n            regexParts.push(source.slice(start, end));\n        }\n        else if (part === null || util.primitiveTypes.has(typeof part)) {\n            regexParts.push(util.escapeRegex(`${part}`));\n        }\n        else {\n            throw new Error(`Invalid template literal part: ${part}`);\n        }\n    }\n    inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"string\") {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"string\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        inst._zod.pattern.lastIndex = 0;\n        if (!inst._zod.pattern.test(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                code: \"invalid_format\",\n                format: def.format ?? \"template_literal\",\n                pattern: inst._zod.pattern.source,\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._def = def;\n    inst._zod.def = def;\n    inst.implement = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implement() must be called with a function\");\n        }\n        return function (...args) {\n            const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n            const result = Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return parse(inst._def.output, result);\n            }\n            return result;\n        };\n    };\n    inst.implementAsync = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implementAsync() must be called with a function\");\n        }\n        return async function (...args) {\n            const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n            const result = await Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return await parseAsync(inst._def.output, result);\n            }\n            return result;\n        };\n    };\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"function\") {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"function\",\n                input: payload.value,\n                inst,\n            });\n            return payload;\n        }\n        // Check if output is a promise type to determine if we should use async implementation\n        const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n        if (hasPromiseOutput) {\n            payload.value = inst.implementAsync(payload.value);\n        }\n        else {\n            payload.value = inst.implement(payload.value);\n        }\n        return payload;\n    };\n    inst.input = (...args) => {\n        const F = inst.constructor;\n        if (Array.isArray(args[0])) {\n            return new F({\n                type: \"function\",\n                input: new $ZodTuple({\n                    type: \"tuple\",\n                    items: args[0],\n                    rest: args[1],\n                }),\n                output: inst._def.output,\n            });\n        }\n        return new F({\n            type: \"function\",\n            input: args[0],\n            output: inst._def.output,\n        });\n    };\n    inst.output = (output) => {\n        const F = inst.constructor;\n        return new F({\n            type: \"function\",\n            input: inst._def.input,\n            output,\n        });\n    };\n    return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n    };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // Cache the resolved inner type on the shared `def` so all clones of this\n    // lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,\n    // preserving identity for cycle detection on recursive schemas.\n    util.defineLazy(inst._zod, \"innerType\", () => {\n        const d = def;\n        if (!d._cachedInner)\n            d._cachedInner = def.getter();\n        return d._cachedInner;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n    util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n    util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n    util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n    inst._zod.parse = (payload, ctx) => {\n        const inner = inst._zod.innerType;\n        return inner._zod.run(payload, ctx);\n    };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n    checks.$ZodCheck.init(inst, def);\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _) => {\n        return payload;\n    };\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const r = def.fn(input);\n        if (r instanceof Promise) {\n            return r.then((r) => handleRefineResult(r, payload, input, inst));\n        }\n        handleRefineResult(r, payload, input, inst);\n        return;\n    };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n    if (!result) {\n        const _iss = {\n            code: \"custom\",\n            input,\n            inst, // incorporates params.error into issue reporting\n            path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n            continue: !inst._zod.def.abort,\n            // params: inst._zod.def.params,\n        };\n        if (inst._zod.def.params)\n            _iss.params = inst._zod.def.params;\n        payload.issues.push(util.issue(_iss));\n    }\n}\n","export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as el } from \"./el.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hr } from \"./hr.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ro } from \"./ro.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"حرف\", verb: \"أن يحوي\" },\n        file: { unit: \"بايت\", verb: \"أن يحوي\" },\n        array: { unit: \"عنصر\", verb: \"أن يحوي\" },\n        set: { unit: \"عنصر\", verb: \"أن يحوي\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"مدخل\",\n        email: \"بريد إلكتروني\",\n        url: \"رابط\",\n        emoji: \"إيموجي\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"تاريخ ووقت بمعيار ISO\",\n        date: \"تاريخ بمعيار ISO\",\n        time: \"وقت بمعيار ISO\",\n        duration: \"مدة بمعيار ISO\",\n        ipv4: \"عنوان IPv4\",\n        ipv6: \"عنوان IPv6\",\n        cidrv4: \"مدى عناوين بصيغة IPv4\",\n        cidrv6: \"مدى عناوين بصيغة IPv6\",\n        base64: \"نَص بترميز base64-encoded\",\n        base64url: \"نَص بترميز base64url-encoded\",\n        json_string: \"نَص على هيئة JSON\",\n        e164: \"رقم هاتف بمعيار E.164\",\n        jwt: \"JWT\",\n        template_literal: \"مدخل\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `مدخلات غير مقبولة: يفترض إدخال instanceof ${issue.expected}، ولكن تم إدخال ${received}`;\n                }\n                return `مدخلات غير مقبولة: يفترض إدخال ${expected}، ولكن تم إدخال ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `مدخلات غير مقبولة: يفترض إدخال ${util.stringifyPrimitive(issue.values[0])}`;\n                return `اختيار غير مقبول: يتوقع انتقاء أحد هذه الخيارات: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return ` أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"}`;\n                return `أكبر من اللازم: يفترض أن تكون ${issue.origin ?? \"القيمة\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `أصغر من اللازم: يفترض لـ ${issue.origin} أن يكون ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `نَص غير مقبول: يجب أن يبدأ بـ \"${issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `نَص غير مقبول: يجب أن ينتهي بـ \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `نَص غير مقبول: يجب أن يتضمَّن \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `نَص غير مقبول: يجب أن يطابق النمط ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} غير مقبول`;\n            }\n            case \"not_multiple_of\":\n                return `رقم غير مقبول: يجب أن يكون من مضاعفات ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `معرف${issue.keys.length > 1 ? \"ات\" : \"\"} غريب${issue.keys.length > 1 ? \"ة\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n            case \"invalid_key\":\n                return `معرف غير مقبول في ${issue.origin}`;\n            case \"invalid_union\":\n                return \"مدخل غير مقبول\";\n            case \"invalid_element\":\n                return `مدخل غير مقبول في ${issue.origin}`;\n            default:\n                return \"مدخل غير مقبول\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"simvol\", verb: \"olmalıdır\" },\n        file: { unit: \"bayt\", verb: \"olmalıdır\" },\n        array: { unit: \"element\", verb: \"olmalıdır\" },\n        set: { unit: \"element\", verb: \"olmalıdır\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Yanlış dəyər: gözlənilən instanceof ${issue.expected}, daxil olan ${received}`;\n                }\n                return `Yanlış dəyər: gözlənilən ${expected}, daxil olan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Yanlış dəyər: gözlənilən ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Yanlış seçim: aşağıdakılardan biri olmalıdır: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                return `Çox böyük: gözlənilən ${issue.origin ?? \"dəyər\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `Çox kiçik: gözlənilən ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Yanlış mətn: \"${_issue.prefix}\" ilə başlamalıdır`;\n                if (_issue.format === \"ends_with\")\n                    return `Yanlış mətn: \"${_issue.suffix}\" ilə bitməlidir`;\n                if (_issue.format === \"includes\")\n                    return `Yanlış mətn: \"${_issue.includes}\" daxil olmalıdır`;\n                if (_issue.format === \"regex\")\n                    return `Yanlış mətn: ${_issue.pattern} şablonuna uyğun olmalıdır`;\n                return `Yanlış ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Yanlış ədəd: ${issue.divisor} ilə bölünə bilən olmalıdır`;\n            case \"unrecognized_keys\":\n                return `Tanınmayan açar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} daxilində yanlış açar`;\n            case \"invalid_union\":\n                return \"Yanlış dəyər\";\n            case \"invalid_element\":\n                return `${issue.origin} daxilində yanlış dəyər`;\n            default:\n                return `Yanlış dəyər`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"сімвал\",\n                few: \"сімвалы\",\n                many: \"сімвалаў\",\n            },\n            verb: \"мець\",\n        },\n        array: {\n            unit: {\n                one: \"элемент\",\n                few: \"элементы\",\n                many: \"элементаў\",\n            },\n            verb: \"мець\",\n        },\n        set: {\n            unit: {\n                one: \"элемент\",\n                few: \"элементы\",\n                many: \"элементаў\",\n            },\n            verb: \"мець\",\n        },\n        file: {\n            unit: {\n                one: \"байт\",\n                few: \"байты\",\n                many: \"байтаў\",\n            },\n            verb: \"мець\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"увод\",\n        email: \"email адрас\",\n        url: \"URL\",\n        emoji: \"эмодзі\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO дата і час\",\n        date: \"ISO дата\",\n        time: \"ISO час\",\n        duration: \"ISO працягласць\",\n        ipv4: \"IPv4 адрас\",\n        ipv6: \"IPv6 адрас\",\n        cidrv4: \"IPv4 дыяпазон\",\n        cidrv6: \"IPv6 дыяпазон\",\n        base64: \"радок у фармаце base64\",\n        base64url: \"радок у фармаце base64url\",\n        json_string: \"JSON радок\",\n        e164: \"нумар E.164\",\n        jwt: \"JWT\",\n        template_literal: \"увод\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"лік\",\n        array: \"масіў\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Няправільны ўвод: чакаўся instanceof ${issue.expected}, атрымана ${received}`;\n                }\n                return `Няправільны ўвод: чакаўся ${expected}, атрымана ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Няправільны ўвод: чакалася ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Няправільны варыянт: чакаўся адзін з ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `Занадта вялікі: чакалася, што ${issue.origin ?? \"значэнне\"} павінна быць ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `Занадта малы: чакалася, што ${issue.origin} павінна ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `Занадта малы: чакалася, што ${issue.origin} павінна быць ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Няправільны радок: павінен пачынацца з \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Няправільны радок: павінен заканчвацца на \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Няправільны радок: павінен змяшчаць \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Няправільны радок: павінен адпавядаць шаблону ${_issue.pattern}`;\n                return `Няправільны ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Няправільны лік: павінен быць кратным ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Нераспазнаны ${issue.keys.length > 1 ? \"ключы\" : \"ключ\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Няправільны ключ у ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Няправільны ўвод\";\n            case \"invalid_element\":\n                return `Няправільнае значэнне ў ${issue.origin}`;\n            default:\n                return `Няправільны ўвод`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"символа\", verb: \"да съдържа\" },\n        file: { unit: \"байта\", verb: \"да съдържа\" },\n        array: { unit: \"елемента\", verb: \"да съдържа\" },\n        set: { unit: \"елемента\", verb: \"да съдържа\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"вход\",\n        email: \"имейл адрес\",\n        url: \"URL\",\n        emoji: \"емоджи\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO време\",\n        date: \"ISO дата\",\n        time: \"ISO време\",\n        duration: \"ISO продължителност\",\n        ipv4: \"IPv4 адрес\",\n        ipv6: \"IPv6 адрес\",\n        cidrv4: \"IPv4 диапазон\",\n        cidrv6: \"IPv6 диапазон\",\n        base64: \"base64-кодиран низ\",\n        base64url: \"base64url-кодиран низ\",\n        json_string: \"JSON низ\",\n        e164: \"E.164 номер\",\n        jwt: \"JWT\",\n        template_literal: \"вход\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"число\",\n        array: \"масив\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Невалиден вход: очакван instanceof ${issue.expected}, получен ${received}`;\n                }\n                return `Невалиден вход: очакван ${expected}, получен ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елемента\"}`;\n                return `Твърде голямо: очаква се ${issue.origin ?? \"стойност\"} да бъде ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Невалиден низ: трябва да започва с \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Невалиден низ: трябва да завършва с \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Невалиден низ: трябва да включва \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;\n                let invalid_adj = \"Невалиден\";\n                if (_issue.format === \"emoji\")\n                    invalid_adj = \"Невалидно\";\n                if (_issue.format === \"datetime\")\n                    invalid_adj = \"Невалидно\";\n                if (_issue.format === \"date\")\n                    invalid_adj = \"Невалидна\";\n                if (_issue.format === \"time\")\n                    invalid_adj = \"Невалидно\";\n                if (_issue.format === \"duration\")\n                    invalid_adj = \"Невалидна\";\n                return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Неразпознат${issue.keys.length > 1 ? \"и\" : \"\"} ключ${issue.keys.length > 1 ? \"ове\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Невалиден ключ в ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Невалиден вход\";\n            case \"invalid_element\":\n                return `Невалидна стойност в ${issue.origin}`;\n            default:\n                return `Невалиден вход`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caràcters\", verb: \"contenir\" },\n        file: { unit: \"bytes\", verb: \"contenir\" },\n        array: { unit: \"elements\", verb: \"contenir\" },\n        set: { unit: \"elements\", verb: \"contenir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrada\",\n        email: \"adreça electrònica\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"durada ISO\",\n        ipv4: \"adreça IPv4\",\n        ipv6: \"adreça IPv6\",\n        cidrv4: \"rang IPv4\",\n        cidrv6: \"rang IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"cadena codificada en base64url\",\n        json_string: \"cadena JSON\",\n        e164: \"número E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Tipus invàlid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n                }\n                return `Tipus invàlid: s'esperava ${expected}, s'ha rebut ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Valor invàlid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opció invàlida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"com a màxim\" : \"menys de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingués ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"com a mínim\" : \"més de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Massa petit: s'esperava que ${issue.origin} contingués ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Format invàlid: ha de començar amb \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Format invàlid: ha d'acabar amb \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Format invàlid: ha d'incloure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Format invàlid: ha de coincidir amb el patró ${_issue.pattern}`;\n                return `Format invàlid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Número invàlid: ha de ser múltiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Clau invàlida a ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada invàlida\"; // Could also be \"Tipus d'unió invàlid\" but \"Entrada invàlida\" is more general\n            case \"invalid_element\":\n                return `Element invàlid a ${issue.origin}`;\n            default:\n                return `Entrada invàlida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znaků\", verb: \"mít\" },\n        file: { unit: \"bajtů\", verb: \"mít\" },\n        array: { unit: \"prvků\", verb: \"mít\" },\n        set: { unit: \"prvků\", verb: \"mít\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"regulární výraz\",\n        email: \"e-mailová adresa\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"datum a čas ve formátu ISO\",\n        date: \"datum ve formátu ISO\",\n        time: \"čas ve formátu ISO\",\n        duration: \"doba trvání ISO\",\n        ipv4: \"IPv4 adresa\",\n        ipv6: \"IPv6 adresa\",\n        cidrv4: \"rozsah IPv4\",\n        cidrv6: \"rozsah IPv6\",\n        base64: \"řetězec zakódovaný ve formátu base64\",\n        base64url: \"řetězec zakódovaný ve formátu base64url\",\n        json_string: \"řetězec ve formátu JSON\",\n        e164: \"číslo E.164\",\n        jwt: \"JWT\",\n        template_literal: \"vstup\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"číslo\",\n        string: \"řetězec\",\n        function: \"funkce\",\n        array: \"pole\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Neplatný vstup: očekáváno instanceof ${issue.expected}, obdrženo ${received}`;\n                }\n                return `Neplatný vstup: očekáváno ${expected}, obdrženo ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neplatný vstup: očekáváno ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neplatná možnost: očekávána jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvků\"}`;\n                }\n                return `Hodnota je příliš velká: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí mít ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvků\"}`;\n                }\n                return `Hodnota je příliš malá: ${issue.origin ?? \"hodnota\"} musí být ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Neplatný řetězec: musí začínat na \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Neplatný řetězec: musí končit na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neplatný řetězec: musí obsahovat \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neplatný řetězec: musí odpovídat vzoru ${_issue.pattern}`;\n                return `Neplatný formát ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neplatné číslo: musí být násobkem ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Neznámé klíče: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neplatný klíč v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neplatný vstup\";\n            case \"invalid_element\":\n                return `Neplatná hodnota v ${issue.origin}`;\n            default:\n                return `Neplatný vstup`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tegn\", verb: \"havde\" },\n        file: { unit: \"bytes\", verb: \"havde\" },\n        array: { unit: \"elementer\", verb: \"indeholdt\" },\n        set: { unit: \"elementer\", verb: \"indeholdt\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"e-mailadresse\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dato- og klokkeslæt\",\n        date: \"ISO-dato\",\n        time: \"ISO-klokkeslæt\",\n        duration: \"ISO-varighed\",\n        ipv4: \"IPv4-område\",\n        ipv6: \"IPv6-område\",\n        cidrv4: \"IPv4-spektrum\",\n        cidrv6: \"IPv6-spektrum\",\n        base64: \"base64-kodet streng\",\n        base64url: \"base64url-kodet streng\",\n        json_string: \"JSON-streng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"streng\",\n        number: \"tal\",\n        boolean: \"boolean\",\n        array: \"liste\",\n        object: \"objekt\",\n        set: \"sæt\",\n        file: \"fil\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n                }\n                return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ugyldig værdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ugyldigt valg: forventede en af følgende ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing)\n                    return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n                return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing) {\n                    return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ugyldig streng: skal matche mønsteret ${_issue.pattern}`;\n                return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ugyldigt tal: skal være deleligt med ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ukendte nøgler\" : \"Ukendt nøgle\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ugyldig nøgle i ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n            case \"invalid_element\":\n                return `Ugyldig værdi i ${issue.origin}`;\n            default:\n                return `Ugyldigt input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"Zeichen\", verb: \"zu haben\" },\n        file: { unit: \"Bytes\", verb: \"zu haben\" },\n        array: { unit: \"Elemente\", verb: \"zu haben\" },\n        set: { unit: \"Elemente\", verb: \"zu haben\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"Eingabe\",\n        email: \"E-Mail-Adresse\",\n        url: \"URL\",\n        emoji: \"Emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-Datum und -Uhrzeit\",\n        date: \"ISO-Datum\",\n        time: \"ISO-Uhrzeit\",\n        duration: \"ISO-Dauer\",\n        ipv4: \"IPv4-Adresse\",\n        ipv6: \"IPv6-Adresse\",\n        cidrv4: \"IPv4-Bereich\",\n        cidrv6: \"IPv6-Bereich\",\n        base64: \"Base64-codierter String\",\n        base64url: \"Base64-URL-codierter String\",\n        json_string: \"JSON-String\",\n        e164: \"E.164-Nummer\",\n        jwt: \"JWT\",\n        template_literal: \"Eingabe\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"Zahl\",\n        array: \"Array\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ungültige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n                }\n                return `Ungültige Eingabe: erwartet ${expected}, erhalten ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ungültige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ungültige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n                return `Zu groß: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n                }\n                return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ungültiger String: muss mit \"${_issue.prefix}\" beginnen`;\n                if (_issue.format === \"ends_with\")\n                    return `Ungültiger String: muss mit \"${_issue.suffix}\" enden`;\n                if (_issue.format === \"includes\")\n                    return `Ungültiger String: muss \"${_issue.includes}\" enthalten`;\n                if (_issue.format === \"regex\")\n                    return `Ungültiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n                return `Ungültig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ungültige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Unbekannte Schlüssel\" : \"Unbekannter Schlüssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ungültiger Schlüssel in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ungültige Eingabe\";\n            case \"invalid_element\":\n                return `Ungültiger Wert in ${issue.origin}`;\n            default:\n                return `Ungültige Eingabe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"χαρακτήρες\", verb: \"να έχει\" },\n        file: { unit: \"bytes\", verb: \"να έχει\" },\n        array: { unit: \"στοιχεία\", verb: \"να έχει\" },\n        set: { unit: \"στοιχεία\", verb: \"να έχει\" },\n        map: { unit: \"καταχωρήσεις\", verb: \"να έχει\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"είσοδος\",\n        email: \"διεύθυνση email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO ημερομηνία και ώρα\",\n        date: \"ISO ημερομηνία\",\n        time: \"ISO ώρα\",\n        duration: \"ISO διάρκεια\",\n        ipv4: \"διεύθυνση IPv4\",\n        ipv6: \"διεύθυνση IPv6\",\n        mac: \"διεύθυνση MAC\",\n        cidrv4: \"εύρος IPv4\",\n        cidrv6: \"εύρος IPv6\",\n        base64: \"συμβολοσειρά κωδικοποιημένη σε base64\",\n        base64url: \"συμβολοσειρά κωδικοποιημένη σε base64url\",\n        json_string: \"συμβολοσειρά JSON\",\n        e164: \"αριθμός E.164\",\n        jwt: \"JWT\",\n        template_literal: \"είσοδος\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (typeof issue.expected === \"string\" && /^[A-Z]/.test(issue.expected)) {\n                    return `Μη έγκυρη είσοδος: αναμενόταν instanceof ${issue.expected}, λήφθηκε ${received}`;\n                }\n                return `Μη έγκυρη είσοδος: αναμενόταν ${expected}, λήφθηκε ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Μη έγκυρη είσοδος: αναμενόταν ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Μη έγκυρη επιλογή: αναμενόταν ένα από ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να έχει ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"στοιχεία\"}`;\n                return `Πολύ μεγάλο: αναμενόταν ${issue.origin ?? \"τιμή\"} να είναι ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Πολύ μικρό: αναμενόταν ${issue.origin} να έχει ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Πολύ μικρό: αναμενόταν ${issue.origin} να είναι ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Μη έγκυρη συμβολοσειρά: πρέπει να ξεκινά με \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Μη έγκυρη συμβολοσειρά: πρέπει να τελειώνει με \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Μη έγκυρη συμβολοσειρά: πρέπει να περιέχει \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Μη έγκυρη συμβολοσειρά: πρέπει να ταιριάζει με το μοτίβο ${_issue.pattern}`;\n                return `Μη έγκυρο: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Μη έγκυρος αριθμός: πρέπει να είναι πολλαπλάσιο του ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Άγνωστ${issue.keys.length > 1 ? \"α\" : \"ο\"} κλειδ${issue.keys.length > 1 ? \"ιά\" : \"ί\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Μη έγκυρο κλειδί στο ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Μη έγκυρη είσοδος\";\n            case \"invalid_element\":\n                return `Μη έγκυρη τιμή στο ${issue.origin}`;\n            default:\n                return `Μη έγκυρη είσοδος`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"characters\", verb: \"to have\" },\n        file: { unit: \"bytes\", verb: \"to have\" },\n        array: { unit: \"items\", verb: \"to have\" },\n        set: { unit: \"items\", verb: \"to have\" },\n        map: { unit: \"entries\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        mac: \"MAC address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    // type names: missing keys = do not translate (use raw value via ?? fallback)\n    const TypeDictionary = {\n        // Compatibility: \"nan\" -> \"NaN\" for display\n        nan: \"NaN\",\n        // All other type names omitted - they fall back to raw values via ?? operator\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                return `Invalid input: expected ${expected}, received ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Invalid string: must start with \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Invalid string: must end with \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Invalid string: must include \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Invalid string: must match pattern ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Invalid number: must be a multiple of ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Invalid key in ${issue.origin}`;\n            case \"invalid_union\":\n                if (issue.options && Array.isArray(issue.options) && issue.options.length > 0) {\n                    const opts = issue.options.map((o) => `'${o}'`).join(\" | \");\n                    return `Invalid discriminator value. Expected ${opts}`;\n                }\n                return \"Invalid input\";\n            case \"invalid_element\":\n                return `Invalid value in ${issue.origin}`;\n            default:\n                return `Invalid input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karaktrojn\", verb: \"havi\" },\n        file: { unit: \"bajtojn\", verb: \"havi\" },\n        array: { unit: \"elementojn\", verb: \"havi\" },\n        set: { unit: \"elementojn\", verb: \"havi\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"enigo\",\n        email: \"retadreso\",\n        url: \"URL\",\n        emoji: \"emoĝio\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datotempo\",\n        date: \"ISO-dato\",\n        time: \"ISO-tempo\",\n        duration: \"ISO-daŭro\",\n        ipv4: \"IPv4-adreso\",\n        ipv6: \"IPv6-adreso\",\n        cidrv4: \"IPv4-rango\",\n        cidrv6: \"IPv6-rango\",\n        base64: \"64-ume kodita karaktraro\",\n        base64url: \"URL-64-ume kodita karaktraro\",\n        json_string: \"JSON-karaktraro\",\n        e164: \"E.164-nombro\",\n        jwt: \"JWT\",\n        template_literal: \"enigo\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nombro\",\n        array: \"tabelo\",\n        null: \"senvalora\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Nevalida enigo: atendiĝis instanceof ${issue.expected}, riceviĝis ${received}`;\n                }\n                return `Nevalida enigo: atendiĝis ${expected}, riceviĝis ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nevalida enigo: atendiĝis ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nevalida opcio: atendiĝis unu el ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n                return `Tro granda: atendiĝis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Tro malgranda: atendiĝis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Tro malgranda: atendiĝis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nevalida karaktraro: devas komenciĝi per \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nevalida karaktraro: devas finiĝi per \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n                return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} ŝlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nevalida ŝlosilo en ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nevalida enigo\";\n            case \"invalid_element\":\n                return `Nevalida valoro en ${issue.origin}`;\n            default:\n                return `Nevalida enigo`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"tener\" },\n        file: { unit: \"bytes\", verb: \"tener\" },\n        array: { unit: \"elementos\", verb: \"tener\" },\n        set: { unit: \"elementos\", verb: \"tener\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrada\",\n        email: \"dirección de correo electrónico\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"fecha y hora ISO\",\n        date: \"fecha ISO\",\n        time: \"hora ISO\",\n        duration: \"duración ISO\",\n        ipv4: \"dirección IPv4\",\n        ipv6: \"dirección IPv6\",\n        cidrv4: \"rango IPv4\",\n        cidrv6: \"rango IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"URL codificada en base64\",\n        json_string: \"cadena JSON\",\n        e164: \"número E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"texto\",\n        number: \"número\",\n        boolean: \"booleano\",\n        array: \"arreglo\",\n        object: \"objeto\",\n        set: \"conjunto\",\n        file: \"archivo\",\n        date: \"fecha\",\n        bigint: \"número grande\",\n        symbol: \"símbolo\",\n        undefined: \"indefinido\",\n        null: \"nulo\",\n        function: \"función\",\n        map: \"mapa\",\n        record: \"registro\",\n        tuple: \"tupla\",\n        enum: \"enumeración\",\n        union: \"unión\",\n        literal: \"literal\",\n        promise: \"promesa\",\n        void: \"vacío\",\n        never: \"nunca\",\n        unknown: \"desconocido\",\n        any: \"cualquiera\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entrada inválida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n                }\n                return `Entrada inválida: se esperaba ${expected}, recibido ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inválida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opción inválida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing)\n                    return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing) {\n                    return `Demasiado pequeño: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Demasiado pequeño: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Cadena inválida: debe comenzar con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Cadena inválida: debe terminar en \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cadena inválida: debe incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cadena inválida: debe coincidir con el patrón ${_issue.pattern}`;\n                return `Inválido ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Número inválido: debe ser múltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Llave inválida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inválida\";\n            case \"invalid_element\":\n                return `Valor inválido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            default:\n                return `Entrada inválida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"کاراکتر\", verb: \"داشته باشد\" },\n        file: { unit: \"بایت\", verb: \"داشته باشد\" },\n        array: { unit: \"آیتم\", verb: \"داشته باشد\" },\n        set: { unit: \"آیتم\", verb: \"داشته باشد\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ورودی\",\n        email: \"آدرس ایمیل\",\n        url: \"URL\",\n        emoji: \"ایموجی\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"تاریخ و زمان ایزو\",\n        date: \"تاریخ ایزو\",\n        time: \"زمان ایزو\",\n        duration: \"مدت زمان ایزو\",\n        ipv4: \"IPv4 آدرس\",\n        ipv6: \"IPv6 آدرس\",\n        cidrv4: \"IPv4 دامنه\",\n        cidrv6: \"IPv6 دامنه\",\n        base64: \"base64-encoded رشته\",\n        base64url: \"base64url-encoded رشته\",\n        json_string: \"JSON رشته\",\n        e164: \"E.164 عدد\",\n        jwt: \"JWT\",\n        template_literal: \"ورودی\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"عدد\",\n        array: \"آرایه\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `ورودی نامعتبر: می‌بایست instanceof ${issue.expected} می‌بود، ${received} دریافت شد`;\n                }\n                return `ورودی نامعتبر: می‌بایست ${expected} می‌بود، ${received} دریافت شد`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `ورودی نامعتبر: می‌بایست ${util.stringifyPrimitive(issue.values[0])} می‌بود`;\n                }\n                return `گزینه نامعتبر: می‌بایست یکی از ${util.joinValues(issue.values, \"|\")} می‌بود`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصر\"} باشد`;\n                }\n                return `خیلی بزرگ: ${issue.origin ?? \"مقدار\"} باید ${adj}${issue.maximum.toString()} باشد`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} باشد`;\n                }\n                return `خیلی کوچک: ${issue.origin} باید ${adj}${issue.minimum.toString()} باشد`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `رشته نامعتبر: باید با \"${_issue.prefix}\" شروع شود`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `رشته نامعتبر: باید با \"${_issue.suffix}\" تمام شود`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `رشته نامعتبر: باید شامل \"${_issue.includes}\" باشد`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `رشته نامعتبر: باید با الگوی ${_issue.pattern} مطابقت داشته باشد`;\n                }\n                return `${FormatDictionary[_issue.format] ?? issue.format} نامعتبر`;\n            }\n            case \"not_multiple_of\":\n                return `عدد نامعتبر: باید مضرب ${issue.divisor} باشد`;\n            case \"unrecognized_keys\":\n                return `کلید${issue.keys.length > 1 ? \"های\" : \"\"} ناشناس: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `کلید ناشناس در ${issue.origin}`;\n            case \"invalid_union\":\n                return `ورودی نامعتبر`;\n            case \"invalid_element\":\n                return `مقدار نامعتبر در ${issue.origin}`;\n            default:\n                return `ورودی نامعتبر`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"merkkiä\", subject: \"merkkijonon\" },\n        file: { unit: \"tavua\", subject: \"tiedoston\" },\n        array: { unit: \"alkiota\", subject: \"listan\" },\n        set: { unit: \"alkiota\", subject: \"joukon\" },\n        number: { unit: \"\", subject: \"luvun\" },\n        bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n        int: { unit: \"\", subject: \"kokonaisluvun\" },\n        date: { unit: \"\", subject: \"päivämäärän\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"säännöllinen lauseke\",\n        email: \"sähköpostiosoite\",\n        url: \"URL-osoite\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-aikaleima\",\n        date: \"ISO-päivämäärä\",\n        time: \"ISO-aika\",\n        duration: \"ISO-kesto\",\n        ipv4: \"IPv4-osoite\",\n        ipv6: \"IPv6-osoite\",\n        cidrv4: \"IPv4-alue\",\n        cidrv6: \"IPv6-alue\",\n        base64: \"base64-koodattu merkkijono\",\n        base64url: \"base64url-koodattu merkkijono\",\n        json_string: \"JSON-merkkijono\",\n        e164: \"E.164-luku\",\n        jwt: \"JWT\",\n        template_literal: \"templaattimerkkijono\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n                }\n                return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Virheellinen syöte: täytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Virheellinen valinta: täytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian suuri: ${sizing.subject} täytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian suuri: arvon täytyy olla ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian pieni: ${sizing.subject} täytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian pieni: arvon täytyy olla ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Virheellinen syöte: täytyy alkaa \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Virheellinen syöte: täytyy loppua \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Virheellinen syöte: täytyy sisältää \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\") {\n                    return `Virheellinen syöte: täytyy vastata säännöllistä lauseketta ${_issue.pattern}`;\n                }\n                return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Virheellinen luku: täytyy olla luvun ${issue.divisor} monikerta`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return \"Virheellinen avain tietueessa\";\n            case \"invalid_union\":\n                return \"Virheellinen unioni\";\n            case \"invalid_element\":\n                return \"Virheellinen arvo joukossa\";\n            default:\n                return `Virheellinen syöte`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caractères\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"éléments\", verb: \"avoir\" },\n        set: { unit: \"éléments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrée\",\n        email: \"adresse e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date et heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"durée ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"chaîne encodée en base64\",\n        base64url: \"chaîne encodée en base64url\",\n        json_string: \"chaîne JSON\",\n        e164: \"numéro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrée\",\n    };\n    const TypeDictionary = {\n        string: \"chaîne\",\n        number: \"nombre\",\n        int: \"entier\",\n        boolean: \"booléen\",\n        bigint: \"grand entier\",\n        symbol: \"symbole\",\n        undefined: \"indéfini\",\n        null: \"null\",\n        never: \"jamais\",\n        void: \"vide\",\n        date: \"date\",\n        array: \"tableau\",\n        object: \"objet\",\n        tuple: \"tuple\",\n        record: \"enregistrement\",\n        map: \"carte\",\n        set: \"ensemble\",\n        file: \"fichier\",\n        nonoptional: \"non-optionnel\",\n        nan: \"NaN\",\n        function: \"fonction\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entrée invalide : instanceof ${issue.expected} attendu, ${received} reçu`;\n                }\n                return `Entrée invalide : ${expected} attendu, ${received} reçu`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrée invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n                return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"élément(s)\"}`;\n                return `Trop grand : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `Trop petit : ${TypeDictionary[issue.origin] ?? \"valeur\"} doit être ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Chaîne invalide : doit correspondre au modèle ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Clé invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrée invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entrée invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caractères\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"éléments\", verb: \"avoir\" },\n        set: { unit: \"éléments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrée\",\n        email: \"adresse courriel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date-heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"durée ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"chaîne encodée en base64\",\n        base64url: \"chaîne encodée en base64url\",\n        json_string: \"chaîne JSON\",\n        e164: \"numéro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrée\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entrée invalide : attendu instanceof ${issue.expected}, reçu ${received}`;\n                }\n                return `Entrée invalide : attendu ${expected}, reçu ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrée invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"≤\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"≥\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Chaîne invalide : doit commencer par \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Chaîne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Chaîne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Chaîne invalide : doit correspondre au motif ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit être un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Clé${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Clé invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrée invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entrée invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    // Hebrew labels + grammatical gender\n    const TypeNames = {\n        string: { label: \"מחרוזת\", gender: \"f\" },\n        number: { label: \"מספר\", gender: \"m\" },\n        boolean: { label: \"ערך בוליאני\", gender: \"m\" },\n        bigint: { label: \"BigInt\", gender: \"m\" },\n        date: { label: \"תאריך\", gender: \"m\" },\n        array: { label: \"מערך\", gender: \"m\" },\n        object: { label: \"אובייקט\", gender: \"m\" },\n        null: { label: \"ערך ריק (null)\", gender: \"m\" },\n        undefined: { label: \"ערך לא מוגדר (undefined)\", gender: \"m\" },\n        symbol: { label: \"סימבול (Symbol)\", gender: \"m\" },\n        function: { label: \"פונקציה\", gender: \"f\" },\n        map: { label: \"מפה (Map)\", gender: \"f\" },\n        set: { label: \"קבוצה (Set)\", gender: \"f\" },\n        file: { label: \"קובץ\", gender: \"m\" },\n        promise: { label: \"Promise\", gender: \"m\" },\n        NaN: { label: \"NaN\", gender: \"m\" },\n        unknown: { label: \"ערך לא ידוע\", gender: \"m\" },\n        value: { label: \"ערך\", gender: \"m\" },\n    };\n    // Sizing units for size-related messages + localized origin labels\n    const Sizable = {\n        string: { unit: \"תווים\", shortLabel: \"קצר\", longLabel: \"ארוך\" },\n        file: { unit: \"בייטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n        array: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n        set: { unit: \"פריטים\", shortLabel: \"קטן\", longLabel: \"גדול\" },\n        number: { unit: \"\", shortLabel: \"קטן\", longLabel: \"גדול\" }, // no unit\n    };\n    // Helpers — labels, articles, and verbs\n    const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n    const typeLabel = (t) => {\n        const e = typeEntry(t);\n        if (e)\n            return e.label;\n        // fallback: show raw string if unknown\n        return t ?? TypeNames.unknown.label;\n    };\n    const withDefinite = (t) => `ה${typeLabel(t)}`;\n    const verbFor = (t) => {\n        const e = typeEntry(t);\n        const gender = e?.gender ?? \"m\";\n        return gender === \"f\" ? \"צריכה להיות\" : \"צריך להיות\";\n    };\n    const getSizing = (origin) => {\n        if (!origin)\n            return null;\n        return Sizable[origin] ?? null;\n    };\n    const FormatDictionary = {\n        regex: { label: \"קלט\", gender: \"m\" },\n        email: { label: \"כתובת אימייל\", gender: \"f\" },\n        url: { label: \"כתובת רשת\", gender: \"f\" },\n        emoji: { label: \"אימוג'י\", gender: \"m\" },\n        uuid: { label: \"UUID\", gender: \"m\" },\n        nanoid: { label: \"nanoid\", gender: \"m\" },\n        guid: { label: \"GUID\", gender: \"m\" },\n        cuid: { label: \"cuid\", gender: \"m\" },\n        cuid2: { label: \"cuid2\", gender: \"m\" },\n        ulid: { label: \"ULID\", gender: \"m\" },\n        xid: { label: \"XID\", gender: \"m\" },\n        ksuid: { label: \"KSUID\", gender: \"m\" },\n        datetime: { label: \"תאריך וזמן ISO\", gender: \"m\" },\n        date: { label: \"תאריך ISO\", gender: \"m\" },\n        time: { label: \"זמן ISO\", gender: \"m\" },\n        duration: { label: \"משך זמן ISO\", gender: \"m\" },\n        ipv4: { label: \"כתובת IPv4\", gender: \"f\" },\n        ipv6: { label: \"כתובת IPv6\", gender: \"f\" },\n        cidrv4: { label: \"טווח IPv4\", gender: \"m\" },\n        cidrv6: { label: \"טווח IPv6\", gender: \"m\" },\n        base64: { label: \"מחרוזת בבסיס 64\", gender: \"f\" },\n        base64url: { label: \"מחרוזת בבסיס 64 לכתובות רשת\", gender: \"f\" },\n        json_string: { label: \"מחרוזת JSON\", gender: \"f\" },\n        e164: { label: \"מספר E.164\", gender: \"m\" },\n        jwt: { label: \"JWT\", gender: \"m\" },\n        ends_with: { label: \"קלט\", gender: \"m\" },\n        includes: { label: \"קלט\", gender: \"m\" },\n        lowercase: { label: \"קלט\", gender: \"m\" },\n        starts_with: { label: \"קלט\", gender: \"m\" },\n        uppercase: { label: \"קלט\", gender: \"m\" },\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                // Expected type: show without definite article for clearer Hebrew\n                const expectedKey = issue.expected;\n                const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n                // Received: show localized label if known, otherwise constructor/raw\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `קלט לא תקין: צריך להיות instanceof ${issue.expected}, התקבל ${received}`;\n                }\n                return `קלט לא תקין: צריך להיות ${expected}, התקבל ${received}`;\n            }\n            case \"invalid_value\": {\n                if (issue.values.length === 1) {\n                    return `ערך לא תקין: הערך חייב להיות ${util.stringifyPrimitive(issue.values[0])}`;\n                }\n                // Join values with proper Hebrew formatting\n                const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n                if (issue.values.length === 2) {\n                    return `ערך לא תקין: האפשרויות המתאימות הן ${stringified[0]} או ${stringified[1]}`;\n                }\n                // For 3+ values: \"a\", \"b\" או \"c\"\n                const lastValue = stringified[stringified.length - 1];\n                const restValues = stringified.slice(0, -1).join(\", \");\n                return `ערך לא תקין: האפשרויות המתאימות הן ${restValues} או ${lastValue}`;\n            }\n            case \"too_big\": {\n                const sizing = getSizing(issue.origin);\n                const subject = withDefinite(issue.origin ?? \"value\");\n                if (issue.origin === \"string\") {\n                    // Special handling for strings - more natural Hebrew\n                    return `${sizing?.longLabel ?? \"ארוך\"} מדי: ${subject} צריכה להכיל ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או פחות\" : \"לכל היותר\"}`.trim();\n                }\n                if (issue.origin === \"number\") {\n                    // Natural Hebrew for numbers\n                    const comparison = issue.inclusive ? `קטן או שווה ל-${issue.maximum}` : `קטן מ-${issue.maximum}`;\n                    return `גדול מדי: ${subject} צריך להיות ${comparison}`;\n                }\n                if (issue.origin === \"array\" || issue.origin === \"set\") {\n                    // Natural Hebrew for arrays and sets\n                    const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n                    const comparison = issue.inclusive\n                        ? `${issue.maximum} ${sizing?.unit ?? \"\"} או פחות`\n                        : `פחות מ-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n                    return `גדול מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n                }\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const be = verbFor(issue.origin ?? \"value\");\n                if (sizing?.unit) {\n                    return `${sizing.longLabel} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                }\n                return `${sizing?.longLabel ?? \"גדול\"} מדי: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const sizing = getSizing(issue.origin);\n                const subject = withDefinite(issue.origin ?? \"value\");\n                if (issue.origin === \"string\") {\n                    // Special handling for strings - more natural Hebrew\n                    return `${sizing?.shortLabel ?? \"קצר\"} מדי: ${subject} צריכה להכיל ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"או יותר\" : \"לפחות\"}`.trim();\n                }\n                if (issue.origin === \"number\") {\n                    // Natural Hebrew for numbers\n                    const comparison = issue.inclusive ? `גדול או שווה ל-${issue.minimum}` : `גדול מ-${issue.minimum}`;\n                    return `קטן מדי: ${subject} צריך להיות ${comparison}`;\n                }\n                if (issue.origin === \"array\" || issue.origin === \"set\") {\n                    // Natural Hebrew for arrays and sets\n                    const verb = issue.origin === \"set\" ? \"צריכה\" : \"צריך\";\n                    // Special case for singular (minimum === 1)\n                    if (issue.minimum === 1 && issue.inclusive) {\n                        const singularPhrase = issue.origin === \"set\" ? \"לפחות פריט אחד\" : \"לפחות פריט אחד\";\n                        return `קטן מדי: ${subject} ${verb} להכיל ${singularPhrase}`;\n                    }\n                    const comparison = issue.inclusive\n                        ? `${issue.minimum} ${sizing?.unit ?? \"\"} או יותר`\n                        : `יותר מ-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n                    return `קטן מדי: ${subject} ${verb} להכיל ${comparison}`.trim();\n                }\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const be = verbFor(issue.origin ?? \"value\");\n                if (sizing?.unit) {\n                    return `${sizing.shortLabel} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `${sizing?.shortLabel ?? \"קטן\"} מדי: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                // These apply to strings — use feminine grammar + ה׳ הידיעה\n                if (_issue.format === \"starts_with\")\n                    return `המחרוזת חייבת להתחיל ב \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `המחרוזת חייבת להסתיים ב \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `המחרוזת חייבת לכלול \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `המחרוזת חייבת להתאים לתבנית ${_issue.pattern}`;\n                // Handle gender agreement for formats\n                const nounEntry = FormatDictionary[_issue.format];\n                const noun = nounEntry?.label ?? _issue.format;\n                const gender = nounEntry?.gender ?? \"m\";\n                const adjective = gender === \"f\" ? \"תקינה\" : \"תקין\";\n                return `${noun} לא ${adjective}`;\n            }\n            case \"not_multiple_of\":\n                return `מספר לא תקין: חייב להיות מכפלה של ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `מפתח${issue.keys.length > 1 ? \"ות\" : \"\"} לא מזוה${issue.keys.length > 1 ? \"ים\" : \"ה\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\": {\n                return `שדה לא תקין באובייקט`;\n            }\n            case \"invalid_union\":\n                return \"קלט לא תקין\";\n            case \"invalid_element\": {\n                const place = withDefinite(issue.origin ?? \"array\");\n                return `ערך לא תקין ב${place}`;\n            }\n            default:\n                return `קלט לא תקין`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znakova\", verb: \"imati\" },\n        file: { unit: \"bajtova\", verb: \"imati\" },\n        array: { unit: \"stavki\", verb: \"imati\" },\n        set: { unit: \"stavki\", verb: \"imati\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"unos\",\n        email: \"email adresa\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum i vrijeme\",\n        date: \"ISO datum\",\n        time: \"ISO vrijeme\",\n        duration: \"ISO trajanje\",\n        ipv4: \"IPv4 adresa\",\n        ipv6: \"IPv6 adresa\",\n        cidrv4: \"IPv4 raspon\",\n        cidrv6: \"IPv6 raspon\",\n        base64: \"base64 kodirani tekst\",\n        base64url: \"base64url kodirani tekst\",\n        json_string: \"JSON tekst\",\n        e164: \"E.164 broj\",\n        jwt: \"JWT\",\n        template_literal: \"unos\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"tekst\",\n        number: \"broj\",\n        boolean: \"boolean\",\n        array: \"niz\",\n        object: \"objekt\",\n        set: \"skup\",\n        file: \"datoteka\",\n        date: \"datum\",\n        bigint: \"bigint\",\n        symbol: \"simbol\",\n        undefined: \"undefined\",\n        null: \"null\",\n        function: \"funkcija\",\n        map: \"mapa\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Neispravan unos: očekuje se instanceof ${issue.expected}, a primljeno je ${received}`;\n                }\n                return `Neispravan unos: očekuje se ${expected}, a primljeno je ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neispravna vrijednost: očekivano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neispravna opcija: očekivano jedno od ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing)\n                    return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} ima ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemenata\"}`;\n                return `Preveliko: očekivano da ${origin ?? \"vrijednost\"} bude ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing) {\n                    return `Premalo: očekivano da ${origin} ima ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Premalo: očekivano da ${origin} bude ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Neispravan tekst: mora započinjati s \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Neispravan tekst: mora završavati s \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neispravan tekst: mora sadržavati \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neispravan tekst: mora odgovarati uzorku ${_issue.pattern}`;\n                return `Neispravna ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neispravan broj: mora biti višekratnik od ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Neprepoznat${issue.keys.length > 1 ? \"i ključevi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neispravan ključ u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            case \"invalid_union\":\n                return \"Neispravan unos\";\n            case \"invalid_element\":\n                return `Neispravna vrijednost u ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            default:\n                return `Neispravan unos`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"legyen\" },\n        file: { unit: \"byte\", verb: \"legyen\" },\n        array: { unit: \"elem\", verb: \"legyen\" },\n        set: { unit: \"elem\", verb: \"legyen\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"bemenet\",\n        email: \"email cím\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO időbélyeg\",\n        date: \"ISO dátum\",\n        time: \"ISO idő\",\n        duration: \"ISO időintervallum\",\n        ipv4: \"IPv4 cím\",\n        ipv6: \"IPv6 cím\",\n        cidrv4: \"IPv4 tartomány\",\n        cidrv6: \"IPv6 tartomány\",\n        base64: \"base64-kódolt string\",\n        base64url: \"base64url-kódolt string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 szám\",\n        jwt: \"JWT\",\n        template_literal: \"bemenet\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"szám\",\n        array: \"tömb\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Érvénytelen bemenet: a várt érték instanceof ${issue.expected}, a kapott érték ${received}`;\n                }\n                return `Érvénytelen bemenet: a várt érték ${expected}, a kapott érték ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Érvénytelen bemenet: a várt érték ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Érvénytelen opció: valamelyik érték várt ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Túl nagy: ${issue.origin ?? \"érték\"} mérete túl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n                return `Túl nagy: a bemeneti érték ${issue.origin ?? \"érték\"} túl nagy: ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Túl kicsi: a bemeneti érték ${issue.origin} mérete túl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Túl kicsi: a bemeneti érték ${issue.origin} túl kicsi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Érvénytelen string: \"${_issue.prefix}\" értékkel kell kezdődnie`;\n                if (_issue.format === \"ends_with\")\n                    return `Érvénytelen string: \"${_issue.suffix}\" értékkel kell végződnie`;\n                if (_issue.format === \"includes\")\n                    return `Érvénytelen string: \"${_issue.includes}\" értéket kell tartalmaznia`;\n                if (_issue.format === \"regex\")\n                    return `Érvénytelen string: ${_issue.pattern} mintának kell megfelelnie`;\n                return `Érvénytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Érvénytelen szám: ${issue.divisor} többszörösének kell lennie`;\n            case \"unrecognized_keys\":\n                return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Érvénytelen kulcs ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Érvénytelen bemenet\";\n            case \"invalid_element\":\n                return `Érvénytelen érték: ${issue.origin}`;\n            default:\n                return `Érvénytelen bemenet`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n    return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n    if (!word)\n        return \"\";\n    const vowels = [\"ա\", \"ե\", \"ը\", \"ի\", \"ո\", \"ու\", \"օ\"];\n    const lastChar = word[word.length - 1];\n    return word + (vowels.includes(lastChar) ? \"ն\" : \"ը\");\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"նշան\",\n                many: \"նշաններ\",\n            },\n            verb: \"ունենալ\",\n        },\n        file: {\n            unit: {\n                one: \"բայթ\",\n                many: \"բայթեր\",\n            },\n            verb: \"ունենալ\",\n        },\n        array: {\n            unit: {\n                one: \"տարր\",\n                many: \"տարրեր\",\n            },\n            verb: \"ունենալ\",\n        },\n        set: {\n            unit: {\n                one: \"տարր\",\n                many: \"տարրեր\",\n            },\n            verb: \"ունենալ\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"մուտք\",\n        email: \"էլ. հասցե\",\n        url: \"URL\",\n        emoji: \"էմոջի\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO ամսաթիվ և ժամ\",\n        date: \"ISO ամսաթիվ\",\n        time: \"ISO ժամ\",\n        duration: \"ISO տևողություն\",\n        ipv4: \"IPv4 հասցե\",\n        ipv6: \"IPv6 հասցե\",\n        cidrv4: \"IPv4 միջակայք\",\n        cidrv6: \"IPv6 միջակայք\",\n        base64: \"base64 ձևաչափով տող\",\n        base64url: \"base64url ձևաչափով տող\",\n        json_string: \"JSON տող\",\n        e164: \"E.164 համար\",\n        jwt: \"JWT\",\n        template_literal: \"մուտք\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"թիվ\",\n        array: \"զանգված\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Սխալ մուտքագրում․ սպասվում էր instanceof ${issue.expected}, ստացվել է ${received}`;\n                }\n                return `Սխալ մուտքագրում․ սպասվում էր ${expected}, ստացվել է ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Սխալ մուտքագրում․ սպասվում էր ${util.stringifyPrimitive(issue.values[1])}`;\n                return `Սխալ տարբերակ․ սպասվում էր հետևյալներից մեկը՝ ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n                    return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} կունենա ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `Չափազանց մեծ արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin ?? \"արժեք\")} լինի ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n                    return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} կունենա ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `Չափազանց փոքր արժեք․ սպասվում է, որ ${withDefiniteArticle(issue.origin)} լինի ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Սխալ տող․ պետք է սկսվի \"${_issue.prefix}\"-ով`;\n                if (_issue.format === \"ends_with\")\n                    return `Սխալ տող․ պետք է ավարտվի \"${_issue.suffix}\"-ով`;\n                if (_issue.format === \"includes\")\n                    return `Սխալ տող․ պետք է պարունակի \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Սխալ տող․ պետք է համապատասխանի ${_issue.pattern} ձևաչափին`;\n                return `Սխալ ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Սխալ թիվ․ պետք է բազմապատիկ լինի ${issue.divisor}-ի`;\n            case \"unrecognized_keys\":\n                return `Չճանաչված բանալի${issue.keys.length > 1 ? \"ներ\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Սխալ բանալի ${withDefiniteArticle(issue.origin)}-ում`;\n            case \"invalid_union\":\n                return \"Սխալ մուտքագրում\";\n            case \"invalid_element\":\n                return `Սխալ արժեք ${withDefiniteArticle(issue.origin)}-ում`;\n            default:\n                return `Սխալ մուտքագրում`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"memiliki\" },\n        file: { unit: \"byte\", verb: \"memiliki\" },\n        array: { unit: \"item\", verb: \"memiliki\" },\n        set: { unit: \"item\", verb: \"memiliki\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"alamat email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tanggal dan waktu format ISO\",\n        date: \"tanggal format ISO\",\n        time: \"jam format ISO\",\n        duration: \"durasi format ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"rentang alamat IPv4\",\n        cidrv6: \"rentang alamat IPv6\",\n        base64: \"string dengan enkode base64\",\n        base64url: \"string dengan enkode base64url\",\n        json_string: \"string JSON\",\n        e164: \"angka E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n                }\n                return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n            }\n            case \"not_multiple_of\":\n                return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak valid di ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak valid\";\n            case \"invalid_element\":\n                return `Nilai tidak valid di ${issue.origin}`;\n            default:\n                return `Input tidak valid`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"stafi\", verb: \"að hafa\" },\n        file: { unit: \"bæti\", verb: \"að hafa\" },\n        array: { unit: \"hluti\", verb: \"að hafa\" },\n        set: { unit: \"hluti\", verb: \"að hafa\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"gildi\",\n        email: \"netfang\",\n        url: \"vefslóð\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dagsetning og tími\",\n        date: \"ISO dagsetning\",\n        time: \"ISO tími\",\n        duration: \"ISO tímalengd\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded strengur\",\n        base64url: \"base64url-encoded strengur\",\n        json_string: \"JSON strengur\",\n        e164: \"E.164 tölugildi\",\n        jwt: \"JWT\",\n        template_literal: \"gildi\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"númer\",\n        array: \"fylki\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera instanceof ${issue.expected}`;\n                }\n                return `Rangt gildi: Þú slóst inn ${received} þar sem á að vera ${expected}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Rangt gildi: gert ráð fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ógilt val: má vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n                return `Of stórt: gert er ráð fyrir að ${issue.origin ?? \"gildi\"} sé ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Of lítið: gert er ráð fyrir að ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Of lítið: gert er ráð fyrir að ${issue.origin} sé ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ógildur strengur: verður að byrja á \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ógildur strengur: verður að enda á \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ógildur strengur: verður að innihalda \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ógildur strengur: verður að fylgja mynstri ${_issue.pattern}`;\n                return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Röng tala: verður að vera margfeldi af ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Óþekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Rangur lykill í ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Rangt gildi\";\n            case \"invalid_element\":\n                return `Rangt gildi í ${issue.origin}`;\n            default:\n                return `Rangt gildi`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caratteri\", verb: \"avere\" },\n        file: { unit: \"byte\", verb: \"avere\" },\n        array: { unit: \"elementi\", verb: \"avere\" },\n        set: { unit: \"elementi\", verb: \"avere\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"indirizzo email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e ora ISO\",\n        date: \"data ISO\",\n        time: \"ora ISO\",\n        duration: \"durata ISO\",\n        ipv4: \"indirizzo IPv4\",\n        ipv6: \"indirizzo IPv6\",\n        cidrv4: \"intervallo IPv4\",\n        cidrv6: \"intervallo IPv6\",\n        base64: \"stringa codificata in base64\",\n        base64url: \"URL codificata in base64\",\n        json_string: \"stringa JSON\",\n        e164: \"numero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"numero\",\n        array: \"vettore\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n                }\n                return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n                return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n                return `Input non valido: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chiave non valida in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input non valido\";\n            case \"invalid_element\":\n                return `Valore non valido in ${issue.origin}`;\n            default:\n                return `Input non valido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"文字\", verb: \"である\" },\n        file: { unit: \"バイト\", verb: \"である\" },\n        array: { unit: \"要素\", verb: \"である\" },\n        set: { unit: \"要素\", verb: \"である\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"入力値\",\n        email: \"メールアドレス\",\n        url: \"URL\",\n        emoji: \"絵文字\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO日時\",\n        date: \"ISO日付\",\n        time: \"ISO時刻\",\n        duration: \"ISO期間\",\n        ipv4: \"IPv4アドレス\",\n        ipv6: \"IPv6アドレス\",\n        cidrv4: \"IPv4範囲\",\n        cidrv6: \"IPv6範囲\",\n        base64: \"base64エンコード文字列\",\n        base64url: \"base64urlエンコード文字列\",\n        json_string: \"JSON文字列\",\n        e164: \"E.164番号\",\n        jwt: \"JWT\",\n        template_literal: \"入力値\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"数値\",\n        array: \"配列\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `無効な入力: instanceof ${issue.expected}が期待されましたが、${received}が入力されました`;\n                }\n                return `無効な入力: ${expected}が期待されましたが、${received}が入力されました`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `無効な入力: ${util.stringifyPrimitive(issue.values[0])}が期待されました`;\n                return `無効な選択: ${util.joinValues(issue.values, \"、\")}のいずれかである必要があります`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"以下である\" : \"より小さい\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${sizing.unit ?? \"要素\"}${adj}必要があります`;\n                return `大きすぎる値: ${issue.origin ?? \"値\"}は${issue.maximum.toString()}${adj}必要があります`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"以上である\" : \"より大きい\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${sizing.unit}${adj}必要があります`;\n                return `小さすぎる値: ${issue.origin}は${issue.minimum.toString()}${adj}必要があります`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `無効な文字列: \"${_issue.prefix}\"で始まる必要があります`;\n                if (_issue.format === \"ends_with\")\n                    return `無効な文字列: \"${_issue.suffix}\"で終わる必要があります`;\n                if (_issue.format === \"includes\")\n                    return `無効な文字列: \"${_issue.includes}\"を含む必要があります`;\n                if (_issue.format === \"regex\")\n                    return `無効な文字列: パターン${_issue.pattern}に一致する必要があります`;\n                return `無効な${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `無効な数値: ${issue.divisor}の倍数である必要があります`;\n            case \"unrecognized_keys\":\n                return `認識されていないキー${issue.keys.length > 1 ? \"群\" : \"\"}: ${util.joinValues(issue.keys, \"、\")}`;\n            case \"invalid_key\":\n                return `${issue.origin}内の無効なキー`;\n            case \"invalid_union\":\n                return \"無効な入力\";\n            case \"invalid_element\":\n                return `${issue.origin}内の無効な値`;\n            default:\n                return `無効な入力`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"სიმბოლო\", verb: \"უნდა შეიცავდეს\" },\n        file: { unit: \"ბაიტი\", verb: \"უნდა შეიცავდეს\" },\n        array: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n        set: { unit: \"ელემენტი\", verb: \"უნდა შეიცავდეს\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"შეყვანა\",\n        email: \"ელ-ფოსტის მისამართი\",\n        url: \"URL\",\n        emoji: \"ემოჯი\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"თარიღი-დრო\",\n        date: \"თარიღი\",\n        time: \"დრო\",\n        duration: \"ხანგრძლივობა\",\n        ipv4: \"IPv4 მისამართი\",\n        ipv6: \"IPv6 მისამართი\",\n        cidrv4: \"IPv4 დიაპაზონი\",\n        cidrv6: \"IPv6 დიაპაზონი\",\n        base64: \"base64-კოდირებული ველი\",\n        base64url: \"base64url-კოდირებული ველი\",\n        json_string: \"JSON ველი\",\n        e164: \"E.164 ნომერი\",\n        jwt: \"JWT\",\n        template_literal: \"შეყვანა\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"რიცხვი\",\n        string: \"ველი\",\n        boolean: \"ბულეანი\",\n        function: \"ფუნქცია\",\n        array: \"მასივი\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `არასწორი შეყვანა: მოსალოდნელი instanceof ${issue.expected}, მიღებული ${received}`;\n                }\n                return `არასწორი შეყვანა: მოსალოდნელი ${expected}, მიღებული ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `არასწორი შეყვანა: მოსალოდნელი ${util.stringifyPrimitive(issue.values[0])}`;\n                return `არასწორი ვარიანტი: მოსალოდნელია ერთ-ერთი ${util.joinValues(issue.values, \"|\")}-დან`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                return `ზედმეტად დიდი: მოსალოდნელი ${issue.origin ?? \"მნიშვნელობა\"} იყოს ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `ზედმეტად პატარა: მოსალოდნელი ${issue.origin} იყოს ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `არასწორი ველი: უნდა იწყებოდეს \"${_issue.prefix}\"-ით`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `არასწორი ველი: უნდა მთავრდებოდეს \"${_issue.suffix}\"-ით`;\n                if (_issue.format === \"includes\")\n                    return `არასწორი ველი: უნდა შეიცავდეს \"${_issue.includes}\"-ს`;\n                if (_issue.format === \"regex\")\n                    return `არასწორი ველი: უნდა შეესაბამებოდეს შაბლონს ${_issue.pattern}`;\n                return `არასწორი ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `არასწორი რიცხვი: უნდა იყოს ${issue.divisor}-ის ჯერადი`;\n            case \"unrecognized_keys\":\n                return `უცნობი გასაღებ${issue.keys.length > 1 ? \"ები\" : \"ი\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `არასწორი გასაღები ${issue.origin}-ში`;\n            case \"invalid_union\":\n                return \"არასწორი შეყვანა\";\n            case \"invalid_element\":\n                return `არასწორი მნიშვნელობა ${issue.origin}-ში`;\n            default:\n                return `არასწორი შეყვანა`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"តួអក្សរ\", verb: \"គួរមាន\" },\n        file: { unit: \"បៃ\", verb: \"គួរមាន\" },\n        array: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n        set: { unit: \"ធាតុ\", verb: \"គួរមាន\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ទិន្នន័យបញ្ចូល\",\n        email: \"អាសយដ្ឋានអ៊ីមែល\",\n        url: \"URL\",\n        emoji: \"សញ្ញាអារម្មណ៍\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"កាលបរិច្ឆេទ និងម៉ោង ISO\",\n        date: \"កាលបរិច្ឆេទ ISO\",\n        time: \"ម៉ោង ISO\",\n        duration: \"រយៈពេល ISO\",\n        ipv4: \"អាសយដ្ឋាន IPv4\",\n        ipv6: \"អាសយដ្ឋាន IPv6\",\n        cidrv4: \"ដែនអាសយដ្ឋាន IPv4\",\n        cidrv6: \"ដែនអាសយដ្ឋាន IPv6\",\n        base64: \"ខ្សែអក្សរអ៊ិកូដ base64\",\n        base64url: \"ខ្សែអក្សរអ៊ិកូដ base64url\",\n        json_string: \"ខ្សែអក្សរ JSON\",\n        e164: \"លេខ E.164\",\n        jwt: \"JWT\",\n        template_literal: \"ទិន្នន័យបញ្ចូល\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"លេខ\",\n        array: \"អារេ (Array)\",\n        null: \"គ្មានតម្លៃ (null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ instanceof ${issue.expected} ប៉ុន្តែទទួលបាន ${received}`;\n                }\n                return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${expected} ប៉ុន្តែទទួលបាន ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `ទិន្នន័យបញ្ចូលមិនត្រឹមត្រូវ៖ ត្រូវការ ${util.stringifyPrimitive(issue.values[0])}`;\n                return `ជម្រើសមិនត្រឹមត្រូវ៖ ត្រូវជាមួយក្នុងចំណោម ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"ធាតុ\"}`;\n                return `ធំពេក៖ ត្រូវការ ${issue.origin ?? \"តម្លៃ\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `តូចពេក៖ ត្រូវការ ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវចាប់ផ្តើមដោយ \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវបញ្ចប់ដោយ \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវមាន \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `ខ្សែអក្សរមិនត្រឹមត្រូវ៖ ត្រូវតែផ្គូផ្គងនឹងទម្រង់ដែលបានកំណត់ ${_issue.pattern}`;\n                return `មិនត្រឹមត្រូវ៖ ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `លេខមិនត្រឹមត្រូវ៖ ត្រូវតែជាពហុគុណនៃ ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `រកឃើញសោមិនស្គាល់៖ ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `សោមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n            case \"invalid_union\":\n                return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n            case \"invalid_element\":\n                return `ទិន្នន័យមិនត្រឹមត្រូវនៅក្នុង ${issue.origin}`;\n            default:\n                return `ទិន្នន័យមិនត្រឹមត្រូវ`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n    return km();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"문자\", verb: \"to have\" },\n        file: { unit: \"바이트\", verb: \"to have\" },\n        array: { unit: \"개\", verb: \"to have\" },\n        set: { unit: \"개\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"입력\",\n        email: \"이메일 주소\",\n        url: \"URL\",\n        emoji: \"이모지\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO 날짜시간\",\n        date: \"ISO 날짜\",\n        time: \"ISO 시간\",\n        duration: \"ISO 기간\",\n        ipv4: \"IPv4 주소\",\n        ipv6: \"IPv6 주소\",\n        cidrv4: \"IPv4 범위\",\n        cidrv6: \"IPv6 범위\",\n        base64: \"base64 인코딩 문자열\",\n        base64url: \"base64url 인코딩 문자열\",\n        json_string: \"JSON 문자열\",\n        e164: \"E.164 번호\",\n        jwt: \"JWT\",\n        template_literal: \"입력\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `잘못된 입력: 예상 타입은 instanceof ${issue.expected}, 받은 타입은 ${received}입니다`;\n                }\n                return `잘못된 입력: 예상 타입은 ${expected}, 받은 타입은 ${received}입니다`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `잘못된 입력: 값은 ${util.stringifyPrimitive(issue.values[0])} 이어야 합니다`;\n                return `잘못된 옵션: ${util.joinValues(issue.values, \"또는 \")} 중 하나여야 합니다`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"이하\" : \"미만\";\n                const suffix = adj === \"미만\" ? \"이어야 합니다\" : \"여야 합니다\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"요소\";\n                if (sizing)\n                    return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n                return `${issue.origin ?? \"값\"}이 너무 큽니다: ${issue.maximum.toString()} ${adj}${suffix}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"이상\" : \"초과\";\n                const suffix = adj === \"이상\" ? \"이어야 합니다\" : \"여야 합니다\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"요소\";\n                if (sizing) {\n                    return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n                }\n                return `${issue.origin ?? \"값\"}이 너무 작습니다: ${issue.minimum.toString()} ${adj}${suffix}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `잘못된 문자열: \"${_issue.prefix}\"(으)로 시작해야 합니다`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `잘못된 문자열: \"${_issue.suffix}\"(으)로 끝나야 합니다`;\n                if (_issue.format === \"includes\")\n                    return `잘못된 문자열: \"${_issue.includes}\"을(를) 포함해야 합니다`;\n                if (_issue.format === \"regex\")\n                    return `잘못된 문자열: 정규식 ${_issue.pattern} 패턴과 일치해야 합니다`;\n                return `잘못된 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `잘못된 숫자: ${issue.divisor}의 배수여야 합니다`;\n            case \"unrecognized_keys\":\n                return `인식할 수 없는 키: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `잘못된 키: ${issue.origin}`;\n            case \"invalid_union\":\n                return `잘못된 입력`;\n            case \"invalid_element\":\n                return `잘못된 값: ${issue.origin}`;\n            default:\n                return `잘못된 입력`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n    return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n    const abs = Math.abs(number);\n    const last = abs % 10;\n    const last2 = abs % 100;\n    if ((last2 >= 11 && last2 <= 19) || last === 0)\n        return \"many\";\n    if (last === 1)\n        return \"one\";\n    return \"few\";\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"simbolis\",\n                few: \"simboliai\",\n                many: \"simbolių\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi būti ne ilgesnė kaip\",\n                    notInclusive: \"turi būti trumpesnė kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi būti ne trumpesnė kaip\",\n                    notInclusive: \"turi būti ilgesnė kaip\",\n                },\n            },\n        },\n        file: {\n            unit: {\n                one: \"baitas\",\n                few: \"baitai\",\n                many: \"baitų\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi būti ne didesnis kaip\",\n                    notInclusive: \"turi būti mažesnis kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi būti ne mažesnis kaip\",\n                    notInclusive: \"turi būti didesnis kaip\",\n                },\n            },\n        },\n        array: {\n            unit: {\n                one: \"elementą\",\n                few: \"elementus\",\n                many: \"elementų\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi turėti ne daugiau kaip\",\n                    notInclusive: \"turi turėti mažiau kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi turėti ne mažiau kaip\",\n                    notInclusive: \"turi turėti daugiau kaip\",\n                },\n            },\n        },\n        set: {\n            unit: {\n                one: \"elementą\",\n                few: \"elementus\",\n                many: \"elementų\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi turėti ne daugiau kaip\",\n                    notInclusive: \"turi turėti mažiau kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi turėti ne mažiau kaip\",\n                    notInclusive: \"turi turėti daugiau kaip\",\n                },\n            },\n        },\n    };\n    function getSizing(origin, unitType, inclusive, targetShouldBe) {\n        const result = Sizable[origin] ?? null;\n        if (result === null)\n            return result;\n        return {\n            unit: result.unit[unitType],\n            verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n        };\n    }\n    const FormatDictionary = {\n        regex: \"įvestis\",\n        email: \"el. pašto adresas\",\n        url: \"URL\",\n        emoji: \"jaustukas\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO data ir laikas\",\n        date: \"ISO data\",\n        time: \"ISO laikas\",\n        duration: \"ISO trukmė\",\n        ipv4: \"IPv4 adresas\",\n        ipv6: \"IPv6 adresas\",\n        cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n        cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n        base64: \"base64 užkoduota eilutė\",\n        base64url: \"base64url užkoduota eilutė\",\n        json_string: \"JSON eilutė\",\n        e164: \"E.164 numeris\",\n        jwt: \"JWT\",\n        template_literal: \"įvestis\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"skaičius\",\n        bigint: \"sveikasis skaičius\",\n        string: \"eilutė\",\n        boolean: \"loginė reikšmė\",\n        undefined: \"neapibrėžta reikšmė\",\n        function: \"funkcija\",\n        symbol: \"simbolis\",\n        array: \"masyvas\",\n        object: \"objektas\",\n        null: \"nulinė reikšmė\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Gautas tipas ${received}, o tikėtasi - instanceof ${issue.expected}`;\n                }\n                return `Gautas tipas ${received}, o tikėtasi - ${expected}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Privalo būti ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Privalo būti vienas iš ${util.joinValues(issue.values, \"|\")} pasirinkimų`;\n            case \"too_big\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n                if (sizing?.verb)\n                    return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"elementų\"}`;\n                const adj = issue.inclusive ? \"ne didesnis kaip\" : \"mažesnis kaip\";\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n            }\n            case \"too_small\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n                if (sizing?.verb)\n                    return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"elementų\"}`;\n                const adj = issue.inclusive ? \"ne mažesnis kaip\" : \"didesnis kaip\";\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi būti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Eilutė privalo prasidėti \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Eilutė privalo pasibaigti \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Eilutė privalo įtraukti \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Eilutė privalo atitikti ${_issue.pattern}`;\n                return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Skaičius privalo būti ${issue.divisor} kartotinis.`;\n            case \"unrecognized_keys\":\n                return `Neatpažint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return \"Rastas klaidingas raktas\";\n            case \"invalid_union\":\n                return \"Klaidinga įvestis\";\n            case \"invalid_element\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reikšmė\")} turi klaidingą įvestį`;\n            }\n            default:\n                return \"Klaidinga įvestis\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"знаци\", verb: \"да имаат\" },\n        file: { unit: \"бајти\", verb: \"да имаат\" },\n        array: { unit: \"ставки\", verb: \"да имаат\" },\n        set: { unit: \"ставки\", verb: \"да имаат\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"внес\",\n        email: \"адреса на е-пошта\",\n        url: \"URL\",\n        emoji: \"емоџи\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO датум и време\",\n        date: \"ISO датум\",\n        time: \"ISO време\",\n        duration: \"ISO времетраење\",\n        ipv4: \"IPv4 адреса\",\n        ipv6: \"IPv6 адреса\",\n        cidrv4: \"IPv4 опсег\",\n        cidrv6: \"IPv6 опсег\",\n        base64: \"base64-енкодирана низа\",\n        base64url: \"base64url-енкодирана низа\",\n        json_string: \"JSON низа\",\n        e164: \"E.164 број\",\n        jwt: \"JWT\",\n        template_literal: \"внес\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"број\",\n        array: \"низа\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Грешен внес: се очекува instanceof ${issue.expected}, примено ${received}`;\n                }\n                return `Грешен внес: се очекува ${expected}, примено ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Грешана опција: се очекува една ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да има ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементи\"}`;\n                return `Премногу голем: се очекува ${issue.origin ?? \"вредноста\"} да биде ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Премногу мал: се очекува ${issue.origin} да има ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Премногу мал: се очекува ${issue.origin} да биде ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Неважечка низа: мора да започнува со \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Неважечка низа: мора да завршува со \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Неважечка низа: мора да вклучува \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Неважечка низа: мора да одгоара на патернот ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Грешен број: мора да биде делив со ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Непрепознаени клучеви\" : \"Непрепознаен клуч\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Грешен клуч во ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Грешен внес\";\n            case \"invalid_element\":\n                return `Грешна вредност во ${issue.origin}`;\n            default:\n                return `Грешен внес`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"aksara\", verb: \"mempunyai\" },\n        file: { unit: \"bait\", verb: \"mempunyai\" },\n        array: { unit: \"elemen\", verb: \"mempunyai\" },\n        set: { unit: \"elemen\", verb: \"mempunyai\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"alamat e-mel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tarikh masa ISO\",\n        date: \"tarikh ISO\",\n        time: \"masa ISO\",\n        duration: \"tempoh ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"julat IPv4\",\n        cidrv6: \"julat IPv6\",\n        base64: \"string dikodkan base64\",\n        base64url: \"string dikodkan base64url\",\n        json_string: \"string JSON\",\n        e164: \"nombor E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nombor\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n                }\n                return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n            }\n            case \"not_multiple_of\":\n                return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak sah dalam ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak sah\";\n            case \"invalid_element\":\n                return `Nilai tidak sah dalam ${issue.origin}`;\n            default:\n                return `Input tidak sah`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tekens\", verb: \"heeft\" },\n        file: { unit: \"bytes\", verb: \"heeft\" },\n        array: { unit: \"elementen\", verb: \"heeft\" },\n        set: { unit: \"elementen\", verb: \"heeft\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"invoer\",\n        email: \"emailadres\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum en tijd\",\n        date: \"ISO datum\",\n        time: \"ISO tijd\",\n        duration: \"ISO duur\",\n        ipv4: \"IPv4-adres\",\n        ipv6: \"IPv6-adres\",\n        cidrv4: \"IPv4-bereik\",\n        cidrv6: \"IPv6-bereik\",\n        base64: \"base64-gecodeerde tekst\",\n        base64url: \"base64 URL-gecodeerde tekst\",\n        json_string: \"JSON string\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"invoer\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"getal\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n                }\n                return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ongeldige optie: verwacht één van ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n                if (sizing)\n                    return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n                return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n                if (sizing) {\n                    return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n                }\n                return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n                if (_issue.format === \"includes\")\n                    return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n                if (_issue.format === \"regex\")\n                    return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n                return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n            case \"unrecognized_keys\":\n                return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ongeldige key in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ongeldige invoer\";\n            case \"invalid_element\":\n                return `Ongeldige waarde in ${issue.origin}`;\n            default:\n                return `Ongeldige invoer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tegn\", verb: \"å ha\" },\n        file: { unit: \"bytes\", verb: \"å ha\" },\n        array: { unit: \"elementer\", verb: \"å inneholde\" },\n        set: { unit: \"elementer\", verb: \"å inneholde\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"e-postadresse\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dato- og klokkeslett\",\n        date: \"ISO-dato\",\n        time: \"ISO-klokkeslett\",\n        duration: \"ISO-varighet\",\n        ipv4: \"IPv4-område\",\n        ipv6: \"IPv6-område\",\n        cidrv4: \"IPv4-spekter\",\n        cidrv6: \"IPv6-spekter\",\n        base64: \"base64-enkodet streng\",\n        base64url: \"base64url-enkodet streng\",\n        json_string: \"JSON-streng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"tall\",\n        array: \"liste\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n                }\n                return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n                return `For stor(t): forventet ${issue.origin ?? \"value\"} til å ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `For lite(n): forventet ${issue.origin} til å ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ugyldig streng: må starte med \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ugyldig streng: må ende med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ugyldig streng: må inneholde \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ugyldig streng: må matche mønsteret ${_issue.pattern}`;\n                return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ugyldig tall: må være et multiplum av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ukjente nøkler\" : \"Ukjent nøkkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ugyldig nøkkel i ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ugyldig input\";\n            case \"invalid_element\":\n                return `Ugyldig verdi i ${issue.origin}`;\n            default:\n                return `Ugyldig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"harf\", verb: \"olmalıdır\" },\n        file: { unit: \"bayt\", verb: \"olmalıdır\" },\n        array: { unit: \"unsur\", verb: \"olmalıdır\" },\n        set: { unit: \"unsur\", verb: \"olmalıdır\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"giren\",\n        email: \"epostagâh\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO hengâmı\",\n        date: \"ISO tarihi\",\n        time: \"ISO zamanı\",\n        duration: \"ISO müddeti\",\n        ipv4: \"IPv4 nişânı\",\n        ipv6: \"IPv6 nişânı\",\n        cidrv4: \"IPv4 menzili\",\n        cidrv6: \"IPv6 menzili\",\n        base64: \"base64-şifreli metin\",\n        base64url: \"base64url-şifreli metin\",\n        json_string: \"JSON metin\",\n        e164: \"E.164 sayısı\",\n        jwt: \"JWT\",\n        template_literal: \"giren\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"numara\",\n        array: \"saf\",\n        null: \"gayb\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Fâsit giren: umulan instanceof ${issue.expected}, alınan ${received}`;\n                }\n                return `Fâsit giren: umulan ${expected}, alınan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Fâsit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Fâsit tercih: mûteberler ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmalıydı.`;\n                return `Fazla büyük: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmalıydı.`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmalıydı.`;\n                }\n                return `Fazla küçük: ${issue.origin}, ${adj}${issue.minimum.toString()} olmalıydı.`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Fâsit metin: \"${_issue.prefix}\" ile başlamalı.`;\n                if (_issue.format === \"ends_with\")\n                    return `Fâsit metin: \"${_issue.suffix}\" ile bitmeli.`;\n                if (_issue.format === \"includes\")\n                    return `Fâsit metin: \"${_issue.includes}\" ihtivâ etmeli.`;\n                if (_issue.format === \"regex\")\n                    return `Fâsit metin: ${_issue.pattern} nakşına uymalı.`;\n                return `Fâsit ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Fâsit sayı: ${issue.divisor} katı olmalıydı.`;\n            case \"unrecognized_keys\":\n                return `Tanınmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} için tanınmayan anahtar var.`;\n            case \"invalid_union\":\n                return \"Giren tanınamadı.\";\n            case \"invalid_element\":\n                return `${issue.origin} için tanınmayan kıymet var.`;\n            default:\n                return `Kıymet tanınamadı.`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"توکي\", verb: \"ولري\" },\n        file: { unit: \"بایټس\", verb: \"ولري\" },\n        array: { unit: \"توکي\", verb: \"ولري\" },\n        set: { unit: \"توکي\", verb: \"ولري\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ورودي\",\n        email: \"بریښنالیک\",\n        url: \"یو آر ال\",\n        emoji: \"ایموجي\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"نیټه او وخت\",\n        date: \"نېټه\",\n        time: \"وخت\",\n        duration: \"موده\",\n        ipv4: \"د IPv4 پته\",\n        ipv6: \"د IPv6 پته\",\n        cidrv4: \"د IPv4 ساحه\",\n        cidrv6: \"د IPv6 ساحه\",\n        base64: \"base64-encoded متن\",\n        base64url: \"base64url-encoded متن\",\n        json_string: \"JSON متن\",\n        e164: \"د E.164 شمېره\",\n        jwt: \"JWT\",\n        template_literal: \"ورودي\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"عدد\",\n        array: \"ارې\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `ناسم ورودي: باید instanceof ${issue.expected} وای, مګر ${received} ترلاسه شو`;\n                }\n                return `ناسم ورودي: باید ${expected} وای, مګر ${received} ترلاسه شو`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `ناسم ورودي: باید ${util.stringifyPrimitive(issue.values[0])} وای`;\n                }\n                return `ناسم انتخاب: باید یو له ${util.joinValues(issue.values, \"|\")} څخه وای`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عنصرونه\"} ولري`;\n                }\n                return `ډیر لوی: ${issue.origin ?? \"ارزښت\"} باید ${adj}${issue.maximum.toString()} وي`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} ${sizing.unit} ولري`;\n                }\n                return `ډیر کوچنی: ${issue.origin} باید ${adj}${issue.minimum.toString()} وي`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `ناسم متن: باید د \"${_issue.prefix}\" سره پیل شي`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `ناسم متن: باید د \"${_issue.suffix}\" سره پای ته ورسيږي`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `ناسم متن: باید \"${_issue.includes}\" ولري`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `ناسم متن: باید د ${_issue.pattern} سره مطابقت ولري`;\n                }\n                return `${FormatDictionary[_issue.format] ?? issue.format} ناسم دی`;\n            }\n            case \"not_multiple_of\":\n                return `ناسم عدد: باید د ${issue.divisor} مضرب وي`;\n            case \"unrecognized_keys\":\n                return `ناسم ${issue.keys.length > 1 ? \"کلیډونه\" : \"کلیډ\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `ناسم کلیډ په ${issue.origin} کې`;\n            case \"invalid_union\":\n                return `ناسمه ورودي`;\n            case \"invalid_element\":\n                return `ناسم عنصر په ${issue.origin} کې`;\n            default:\n                return `ناسمه ورودي`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znaków\", verb: \"mieć\" },\n        file: { unit: \"bajtów\", verb: \"mieć\" },\n        array: { unit: \"elementów\", verb: \"mieć\" },\n        set: { unit: \"elementów\", verb: \"mieć\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"wyrażenie\",\n        email: \"adres email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i godzina w formacie ISO\",\n        date: \"data w formacie ISO\",\n        time: \"godzina w formacie ISO\",\n        duration: \"czas trwania ISO\",\n        ipv4: \"adres IPv4\",\n        ipv6: \"adres IPv6\",\n        cidrv4: \"zakres IPv4\",\n        cidrv6: \"zakres IPv6\",\n        base64: \"ciąg znaków zakodowany w formacie base64\",\n        base64url: \"ciąg znaków zakodowany w formacie base64url\",\n        json_string: \"ciąg znaków w formacie JSON\",\n        e164: \"liczba E.164\",\n        jwt: \"JWT\",\n        template_literal: \"wejście\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"liczba\",\n        array: \"tablica\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Nieprawidłowe dane wejściowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n                }\n                return `Nieprawidłowe dane wejściowe: oczekiwano ${expected}, otrzymano ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nieprawidłowe dane wejściowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nieprawidłowa opcja: oczekiwano jednej z wartości ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za duża wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementów\"}`;\n                }\n                return `Zbyt duż(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za mała wartość: oczekiwano, że ${issue.origin ?? \"wartość\"} będzie mieć ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"elementów\"}`;\n                }\n                return `Zbyt mał(y/a/e): oczekiwano, że ${issue.origin ?? \"wartość\"} będzie wynosić ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nieprawidłowy ciąg znaków: musi zaczynać się od \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nieprawidłowy ciąg znaków: musi kończyć się na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nieprawidłowy ciąg znaków: musi zawierać \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nieprawidłowy ciąg znaków: musi odpowiadać wzorcowi ${_issue.pattern}`;\n                return `Nieprawidłow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nieprawidłowa liczba: musi być wielokrotnością ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nieprawidłowy klucz w ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nieprawidłowe dane wejściowe\";\n            case \"invalid_element\":\n                return `Nieprawidłowa wartość w ${issue.origin}`;\n            default:\n                return `Nieprawidłowe dane wejściowe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"ter\" },\n        file: { unit: \"bytes\", verb: \"ter\" },\n        array: { unit: \"itens\", verb: \"ter\" },\n        set: { unit: \"itens\", verb: \"ter\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"padrão\",\n        email: \"endereço de e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"duração ISO\",\n        ipv4: \"endereço IPv4\",\n        ipv6: \"endereço IPv6\",\n        cidrv4: \"faixa de IPv4\",\n        cidrv6: \"faixa de IPv6\",\n        base64: \"texto codificado em base64\",\n        base64url: \"URL codificada em base64\",\n        json_string: \"texto JSON\",\n        e164: \"número E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"número\",\n        null: \"nulo\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Tipo inválido: esperado instanceof ${issue.expected}, recebido ${received}`;\n                }\n                return `Tipo inválido: esperado ${expected}, recebido ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inválida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opção inválida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Texto inválido: deve começar com \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Texto inválido: deve terminar com \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Texto inválido: deve incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Texto inválido: deve corresponder ao padrão ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} inválido`;\n            }\n            case \"not_multiple_of\":\n                return `Número inválido: deve ser múltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chave inválida em ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inválida\";\n            case \"invalid_element\":\n                return `Valor inválido em ${issue.origin}`;\n            default:\n                return `Campo inválido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caractere\", verb: \"să aibă\" },\n        file: { unit: \"octeți\", verb: \"să aibă\" },\n        array: { unit: \"elemente\", verb: \"să aibă\" },\n        set: { unit: \"elemente\", verb: \"să aibă\" },\n        map: { unit: \"intrări\", verb: \"să aibă\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"intrare\",\n        email: \"adresă de email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"dată și oră ISO\",\n        date: \"dată ISO\",\n        time: \"oră ISO\",\n        duration: \"durată ISO\",\n        ipv4: \"adresă IPv4\",\n        ipv6: \"adresă IPv6\",\n        mac: \"adresă MAC\",\n        cidrv4: \"interval IPv4\",\n        cidrv6: \"interval IPv6\",\n        base64: \"șir codat base64\",\n        base64url: \"șir codat base64url\",\n        json_string: \"șir JSON\",\n        e164: \"număr E.164\",\n        jwt: \"JWT\",\n        template_literal: \"intrare\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"șir\",\n        number: \"număr\",\n        boolean: \"boolean\",\n        function: \"funcție\",\n        array: \"matrice\",\n        object: \"obiect\",\n        undefined: \"nedefinit\",\n        symbol: \"simbol\",\n        bigint: \"număr mare\",\n        void: \"void\",\n        never: \"never\",\n        map: \"hartă\",\n        set: \"set\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                return `Intrare invalidă: așteptat ${expected}, primit ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Intrare invalidă: așteptat ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opțiune invalidă: așteptat una dintre ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemente\"}`;\n                return `Prea mare: așteptat ca ${issue.origin ?? \"valoarea\"} să fie ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Prea mic: așteptat ca ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Prea mic: așteptat ca ${issue.origin} să fie ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Șir invalid: trebuie să înceapă cu \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Șir invalid: trebuie să se termine cu \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Șir invalid: trebuie să includă \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Șir invalid: trebuie să se potrivească cu modelul ${_issue.pattern}`;\n                return `Format invalid: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Număr invalid: trebuie să fie multiplu de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chei nerecunoscute: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Cheie invalidă în ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Intrare invalidă\";\n            case \"invalid_element\":\n                return `Valoare invalidă în ${issue.origin}`;\n            default:\n                return `Intrare invalidă`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"символ\",\n                few: \"символа\",\n                many: \"символов\",\n            },\n            verb: \"иметь\",\n        },\n        file: {\n            unit: {\n                one: \"байт\",\n                few: \"байта\",\n                many: \"байт\",\n            },\n            verb: \"иметь\",\n        },\n        array: {\n            unit: {\n                one: \"элемент\",\n                few: \"элемента\",\n                many: \"элементов\",\n            },\n            verb: \"иметь\",\n        },\n        set: {\n            unit: {\n                one: \"элемент\",\n                few: \"элемента\",\n                many: \"элементов\",\n            },\n            verb: \"иметь\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ввод\",\n        email: \"email адрес\",\n        url: \"URL\",\n        emoji: \"эмодзи\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO дата и время\",\n        date: \"ISO дата\",\n        time: \"ISO время\",\n        duration: \"ISO длительность\",\n        ipv4: \"IPv4 адрес\",\n        ipv6: \"IPv6 адрес\",\n        cidrv4: \"IPv4 диапазон\",\n        cidrv6: \"IPv6 диапазон\",\n        base64: \"строка в формате base64\",\n        base64url: \"строка в формате base64url\",\n        json_string: \"JSON строка\",\n        e164: \"номер E.164\",\n        jwt: \"JWT\",\n        template_literal: \"ввод\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"число\",\n        array: \"массив\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Неверный ввод: ожидалось instanceof ${issue.expected}, получено ${received}`;\n                }\n                return `Неверный ввод: ожидалось ${expected}, получено ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Неверный ввод: ожидалось ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Неверный вариант: ожидалось одно из ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет иметь ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `Слишком большое значение: ожидалось, что ${issue.origin ?? \"значение\"} будет ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет иметь ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `Слишком маленькое значение: ожидалось, что ${issue.origin} будет ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Неверная строка: должна начинаться с \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Неверная строка: должна заканчиваться на \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Неверная строка: должна содержать \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Неверная строка: должна соответствовать шаблону ${_issue.pattern}`;\n                return `Неверный ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Неверное число: должно быть кратным ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Нераспознанн${issue.keys.length > 1 ? \"ые\" : \"ый\"} ключ${issue.keys.length > 1 ? \"и\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Неверный ключ в ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Неверные входные данные\";\n            case \"invalid_element\":\n                return `Неверное значение в ${issue.origin}`;\n            default:\n                return `Неверные входные данные`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znakov\", verb: \"imeti\" },\n        file: { unit: \"bajtov\", verb: \"imeti\" },\n        array: { unit: \"elementov\", verb: \"imeti\" },\n        set: { unit: \"elementov\", verb: \"imeti\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"vnos\",\n        email: \"e-poštni naslov\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum in čas\",\n        date: \"ISO datum\",\n        time: \"ISO čas\",\n        duration: \"ISO trajanje\",\n        ipv4: \"IPv4 naslov\",\n        ipv6: \"IPv6 naslov\",\n        cidrv4: \"obseg IPv4\",\n        cidrv6: \"obseg IPv6\",\n        base64: \"base64 kodiran niz\",\n        base64url: \"base64url kodiran niz\",\n        json_string: \"JSON niz\",\n        e164: \"E.164 številka\",\n        jwt: \"JWT\",\n        template_literal: \"vnos\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"število\",\n        array: \"tabela\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Neveljaven vnos: pričakovano instanceof ${issue.expected}, prejeto ${received}`;\n                }\n                return `Neveljaven vnos: pričakovano ${expected}, prejeto ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neveljaven vnos: pričakovano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neveljavna možnost: pričakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n                return `Preveliko: pričakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Premajhno: pričakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Premajhno: pričakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Neveljaven niz: mora se začeti z \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Neveljaven niz: mora se končati z \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n                return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neveljavno število: mora biti večkratnik ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Neprepoznan${issue.keys.length > 1 ? \"i ključi\" : \" ključ\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neveljaven ključ v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neveljaven vnos\";\n            case \"invalid_element\":\n                return `Neveljavna vrednost v ${issue.origin}`;\n            default:\n                return \"Neveljaven vnos\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tecken\", verb: \"att ha\" },\n        file: { unit: \"bytes\", verb: \"att ha\" },\n        array: { unit: \"objekt\", verb: \"att innehålla\" },\n        set: { unit: \"objekt\", verb: \"att innehålla\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"reguljärt uttryck\",\n        email: \"e-postadress\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datum och tid\",\n        date: \"ISO-datum\",\n        time: \"ISO-tid\",\n        duration: \"ISO-varaktighet\",\n        ipv4: \"IPv4-intervall\",\n        ipv6: \"IPv6-intervall\",\n        cidrv4: \"IPv4-spektrum\",\n        cidrv6: \"IPv6-spektrum\",\n        base64: \"base64-kodad sträng\",\n        base64url: \"base64url-kodad sträng\",\n        json_string: \"JSON-sträng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"mall-literal\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"antal\",\n        array: \"lista\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ogiltig inmatning: förväntat instanceof ${issue.expected}, fick ${received}`;\n                }\n                return `Ogiltig inmatning: förväntat ${expected}, fick ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ogiltig inmatning: förväntat ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ogiltigt val: förväntade en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `För stor(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                }\n                return `För stor(t): förväntat ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `För lite(t): förväntade ${issue.origin ?? \"värdet\"} att ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ogiltig sträng: måste börja med \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ogiltig sträng: måste sluta med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ogiltig sträng: måste innehålla \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ogiltig sträng: måste matcha mönstret \"${_issue.pattern}\"`;\n                return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ogiltigt tal: måste vara en multipel av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Okända nycklar\" : \"Okänd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ogiltig nyckel i ${issue.origin ?? \"värdet\"}`;\n            case \"invalid_union\":\n                return \"Ogiltig input\";\n            case \"invalid_element\":\n                return `Ogiltigt värde i ${issue.origin ?? \"värdet\"}`;\n            default:\n                return `Ogiltig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"எழுத்துக்கள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n        file: { unit: \"பைட்டுகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n        array: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n        set: { unit: \"உறுப்புகள்\", verb: \"கொண்டிருக்க வேண்டும்\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"உள்ளீடு\",\n        email: \"மின்னஞ்சல் முகவரி\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO தேதி நேரம்\",\n        date: \"ISO தேதி\",\n        time: \"ISO நேரம்\",\n        duration: \"ISO கால அளவு\",\n        ipv4: \"IPv4 முகவரி\",\n        ipv6: \"IPv6 முகவரி\",\n        cidrv4: \"IPv4 வரம்பு\",\n        cidrv6: \"IPv6 வரம்பு\",\n        base64: \"base64-encoded சரம்\",\n        base64url: \"base64url-encoded சரம்\",\n        json_string: \"JSON சரம்\",\n        e164: \"E.164 எண்\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"எண்\",\n        array: \"அணி\",\n        null: \"வெறுமை\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது instanceof ${issue.expected}, பெறப்பட்டது ${received}`;\n                }\n                return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${expected}, பெறப்பட்டது ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `தவறான உள்ளீடு: எதிர்பார்க்கப்பட்டது ${util.stringifyPrimitive(issue.values[0])}`;\n                return `தவறான விருப்பம்: எதிர்பார்க்கப்பட்டது ${util.joinValues(issue.values, \"|\")} இல் ஒன்று`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"உறுப்புகள்\"} ஆக இருக்க வேண்டும்`;\n                }\n                return `மிக பெரியது: எதிர்பார்க்கப்பட்டது ${issue.origin ?? \"மதிப்பு\"} ${adj}${issue.maximum.toString()} ஆக இருக்க வேண்டும்`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ஆக இருக்க வேண்டும்`; //\n                }\n                return `மிகச் சிறியது: எதிர்பார்க்கப்பட்டது ${issue.origin} ${adj}${issue.minimum.toString()} ஆக இருக்க வேண்டும்`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `தவறான சரம்: \"${_issue.prefix}\" இல் தொடங்க வேண்டும்`;\n                if (_issue.format === \"ends_with\")\n                    return `தவறான சரம்: \"${_issue.suffix}\" இல் முடிவடைய வேண்டும்`;\n                if (_issue.format === \"includes\")\n                    return `தவறான சரம்: \"${_issue.includes}\" ஐ உள்ளடக்க வேண்டும்`;\n                if (_issue.format === \"regex\")\n                    return `தவறான சரம்: ${_issue.pattern} முறைபாட்டுடன் பொருந்த வேண்டும்`;\n                return `தவறான ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `தவறான எண்: ${issue.divisor} இன் பலமாக இருக்க வேண்டும்`;\n            case \"unrecognized_keys\":\n                return `அடையாளம் தெரியாத விசை${issue.keys.length > 1 ? \"கள்\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} இல் தவறான விசை`;\n            case \"invalid_union\":\n                return \"தவறான உள்ளீடு\";\n            case \"invalid_element\":\n                return `${issue.origin} இல் தவறான மதிப்பு`;\n            default:\n                return `தவறான உள்ளீடு`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"ตัวอักษร\", verb: \"ควรมี\" },\n        file: { unit: \"ไบต์\", verb: \"ควรมี\" },\n        array: { unit: \"รายการ\", verb: \"ควรมี\" },\n        set: { unit: \"รายการ\", verb: \"ควรมี\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ข้อมูลที่ป้อน\",\n        email: \"ที่อยู่อีเมล\",\n        url: \"URL\",\n        emoji: \"อิโมจิ\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"วันที่เวลาแบบ ISO\",\n        date: \"วันที่แบบ ISO\",\n        time: \"เวลาแบบ ISO\",\n        duration: \"ช่วงเวลาแบบ ISO\",\n        ipv4: \"ที่อยู่ IPv4\",\n        ipv6: \"ที่อยู่ IPv6\",\n        cidrv4: \"ช่วง IP แบบ IPv4\",\n        cidrv6: \"ช่วง IP แบบ IPv6\",\n        base64: \"ข้อความแบบ Base64\",\n        base64url: \"ข้อความแบบ Base64 สำหรับ URL\",\n        json_string: \"ข้อความแบบ JSON\",\n        e164: \"เบอร์โทรศัพท์ระหว่างประเทศ (E.164)\",\n        jwt: \"โทเคน JWT\",\n        template_literal: \"ข้อมูลที่ป้อน\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"ตัวเลข\",\n        array: \"อาร์เรย์ (Array)\",\n        null: \"ไม่มีค่า (null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น instanceof ${issue.expected} แต่ได้รับ ${received}`;\n                }\n                return `ประเภทข้อมูลไม่ถูกต้อง: ควรเป็น ${expected} แต่ได้รับ ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `ค่าไม่ถูกต้อง: ควรเป็น ${util.stringifyPrimitive(issue.values[0])}`;\n                return `ตัวเลือกไม่ถูกต้อง: ควรเป็นหนึ่งใน ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"ไม่เกิน\" : \"น้อยกว่า\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"รายการ\"}`;\n                return `เกินกำหนด: ${issue.origin ?? \"ค่า\"} ควรมี${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"อย่างน้อย\" : \"มากกว่า\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `น้อยกว่ากำหนด: ${issue.origin} ควรมี${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `รูปแบบไม่ถูกต้อง: ข้อความต้องขึ้นต้นด้วย \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `รูปแบบไม่ถูกต้อง: ข้อความต้องลงท้ายด้วย \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `รูปแบบไม่ถูกต้อง: ข้อความต้องมี \"${_issue.includes}\" อยู่ในข้อความ`;\n                if (_issue.format === \"regex\")\n                    return `รูปแบบไม่ถูกต้อง: ต้องตรงกับรูปแบบที่กำหนด ${_issue.pattern}`;\n                return `รูปแบบไม่ถูกต้อง: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `ตัวเลขไม่ถูกต้อง: ต้องเป็นจำนวนที่หารด้วย ${issue.divisor} ได้ลงตัว`;\n            case \"unrecognized_keys\":\n                return `พบคีย์ที่ไม่รู้จัก: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `คีย์ไม่ถูกต้องใน ${issue.origin}`;\n            case \"invalid_union\":\n                return \"ข้อมูลไม่ถูกต้อง: ไม่ตรงกับรูปแบบยูเนียนที่กำหนดไว้\";\n            case \"invalid_element\":\n                return `ข้อมูลไม่ถูกต้องใน ${issue.origin}`;\n            default:\n                return `ข้อมูลไม่ถูกต้อง`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"olmalı\" },\n        file: { unit: \"bayt\", verb: \"olmalı\" },\n        array: { unit: \"öğe\", verb: \"olmalı\" },\n        set: { unit: \"öğe\", verb: \"olmalı\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"girdi\",\n        email: \"e-posta adresi\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO tarih ve saat\",\n        date: \"ISO tarih\",\n        time: \"ISO saat\",\n        duration: \"ISO süre\",\n        ipv4: \"IPv4 adresi\",\n        ipv6: \"IPv6 adresi\",\n        cidrv4: \"IPv4 aralığı\",\n        cidrv6: \"IPv6 aralığı\",\n        base64: \"base64 ile şifrelenmiş metin\",\n        base64url: \"base64url ile şifrelenmiş metin\",\n        json_string: \"JSON dizesi\",\n        e164: \"E.164 sayısı\",\n        jwt: \"JWT\",\n        template_literal: \"Şablon dizesi\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Geçersiz değer: beklenen instanceof ${issue.expected}, alınan ${received}`;\n                }\n                return `Geçersiz değer: beklenen ${expected}, alınan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Geçersiz değer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Geçersiz seçenek: aşağıdakilerden biri olmalı: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"öğe\"}`;\n                return `Çok büyük: beklenen ${issue.origin ?? \"değer\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `Çok küçük: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Geçersiz metin: \"${_issue.prefix}\" ile başlamalı`;\n                if (_issue.format === \"ends_with\")\n                    return `Geçersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n                if (_issue.format === \"includes\")\n                    return `Geçersiz metin: \"${_issue.includes}\" içermeli`;\n                if (_issue.format === \"regex\")\n                    return `Geçersiz metin: ${_issue.pattern} desenine uymalı`;\n                return `Geçersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Geçersiz sayı: ${issue.divisor} ile tam bölünebilmeli`;\n            case \"unrecognized_keys\":\n                return `Tanınmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} içinde geçersiz anahtar`;\n            case \"invalid_union\":\n                return \"Geçersiz değer\";\n            case \"invalid_element\":\n                return `${issue.origin} içinde geçersiz değer`;\n            default:\n                return `Geçersiz değer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"символів\", verb: \"матиме\" },\n        file: { unit: \"байтів\", verb: \"матиме\" },\n        array: { unit: \"елементів\", verb: \"матиме\" },\n        set: { unit: \"елементів\", verb: \"матиме\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"вхідні дані\",\n        email: \"адреса електронної пошти\",\n        url: \"URL\",\n        emoji: \"емодзі\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"дата та час ISO\",\n        date: \"дата ISO\",\n        time: \"час ISO\",\n        duration: \"тривалість ISO\",\n        ipv4: \"адреса IPv4\",\n        ipv6: \"адреса IPv6\",\n        cidrv4: \"діапазон IPv4\",\n        cidrv6: \"діапазон IPv6\",\n        base64: \"рядок у кодуванні base64\",\n        base64url: \"рядок у кодуванні base64url\",\n        json_string: \"рядок JSON\",\n        e164: \"номер E.164\",\n        jwt: \"JWT\",\n        template_literal: \"вхідні дані\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"число\",\n        array: \"масив\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Неправильні вхідні дані: очікується instanceof ${issue.expected}, отримано ${received}`;\n                }\n                return `Неправильні вхідні дані: очікується ${expected}, отримано ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Неправильні вхідні дані: очікується ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Неправильна опція: очікується одне з ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"елементів\"}`;\n                return `Занадто велике: очікується, що ${issue.origin ?? \"значення\"} буде ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Занадто мале: очікується, що ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Занадто мале: очікується, що ${issue.origin} буде ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Неправильний рядок: повинен починатися з \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Неправильний рядок: повинен закінчуватися на \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Неправильний рядок: повинен містити \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Неправильний рядок: повинен відповідати шаблону ${_issue.pattern}`;\n                return `Неправильний ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Неправильне число: повинно бути кратним ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Нерозпізнаний ключ${issue.keys.length > 1 ? \"і\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Неправильний ключ у ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Неправильні вхідні дані\";\n            case \"invalid_element\":\n                return `Неправильне значення у ${issue.origin}`;\n            default:\n                return `Неправильні вхідні дані`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n    return uk();\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"حروف\", verb: \"ہونا\" },\n        file: { unit: \"بائٹس\", verb: \"ہونا\" },\n        array: { unit: \"آئٹمز\", verb: \"ہونا\" },\n        set: { unit: \"آئٹمز\", verb: \"ہونا\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ان پٹ\",\n        email: \"ای میل ایڈریس\",\n        url: \"یو آر ایل\",\n        emoji: \"ایموجی\",\n        uuid: \"یو یو آئی ڈی\",\n        uuidv4: \"یو یو آئی ڈی وی 4\",\n        uuidv6: \"یو یو آئی ڈی وی 6\",\n        nanoid: \"نینو آئی ڈی\",\n        guid: \"جی یو آئی ڈی\",\n        cuid: \"سی یو آئی ڈی\",\n        cuid2: \"سی یو آئی ڈی 2\",\n        ulid: \"یو ایل آئی ڈی\",\n        xid: \"ایکس آئی ڈی\",\n        ksuid: \"کے ایس یو آئی ڈی\",\n        datetime: \"آئی ایس او ڈیٹ ٹائم\",\n        date: \"آئی ایس او تاریخ\",\n        time: \"آئی ایس او وقت\",\n        duration: \"آئی ایس او مدت\",\n        ipv4: \"آئی پی وی 4 ایڈریس\",\n        ipv6: \"آئی پی وی 6 ایڈریس\",\n        cidrv4: \"آئی پی وی 4 رینج\",\n        cidrv6: \"آئی پی وی 6 رینج\",\n        base64: \"بیس 64 ان کوڈڈ سٹرنگ\",\n        base64url: \"بیس 64 یو آر ایل ان کوڈڈ سٹرنگ\",\n        json_string: \"جے ایس او این سٹرنگ\",\n        e164: \"ای 164 نمبر\",\n        jwt: \"جے ڈبلیو ٹی\",\n        template_literal: \"ان پٹ\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"نمبر\",\n        array: \"آرے\",\n        null: \"نل\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `غلط ان پٹ: instanceof ${issue.expected} متوقع تھا، ${received} موصول ہوا`;\n                }\n                return `غلط ان پٹ: ${expected} متوقع تھا، ${received} موصول ہوا`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `غلط ان پٹ: ${util.stringifyPrimitive(issue.values[0])} متوقع تھا`;\n                return `غلط آپشن: ${util.joinValues(issue.values, \"|\")} میں سے ایک متوقع تھا`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کے ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"عناصر\"} ہونے متوقع تھے`;\n                return `بہت بڑا: ${issue.origin ?? \"ویلیو\"} کا ${adj}${issue.maximum.toString()} ہونا متوقع تھا`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `بہت چھوٹا: ${issue.origin} کے ${adj}${issue.minimum.toString()} ${sizing.unit} ہونے متوقع تھے`;\n                }\n                return `بہت چھوٹا: ${issue.origin} کا ${adj}${issue.minimum.toString()} ہونا متوقع تھا`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `غلط سٹرنگ: \"${_issue.prefix}\" سے شروع ہونا چاہیے`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `غلط سٹرنگ: \"${_issue.suffix}\" پر ختم ہونا چاہیے`;\n                if (_issue.format === \"includes\")\n                    return `غلط سٹرنگ: \"${_issue.includes}\" شامل ہونا چاہیے`;\n                if (_issue.format === \"regex\")\n                    return `غلط سٹرنگ: پیٹرن ${_issue.pattern} سے میچ ہونا چاہیے`;\n                return `غلط ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `غلط نمبر: ${issue.divisor} کا مضاعف ہونا چاہیے`;\n            case \"unrecognized_keys\":\n                return `غیر تسلیم شدہ کی${issue.keys.length > 1 ? \"ز\" : \"\"}: ${util.joinValues(issue.keys, \"، \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} میں غلط کی`;\n            case \"invalid_union\":\n                return \"غلط ان پٹ\";\n            case \"invalid_element\":\n                return `${issue.origin} میں غلط ویلیو`;\n            default:\n                return `غلط ان پٹ`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"belgi\", verb: \"bo‘lishi kerak\" },\n        file: { unit: \"bayt\", verb: \"bo‘lishi kerak\" },\n        array: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n        set: { unit: \"element\", verb: \"bo‘lishi kerak\" },\n        map: { unit: \"yozuv\", verb: \"bo‘lishi kerak\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"kirish\",\n        email: \"elektron pochta manzili\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO sana va vaqti\",\n        date: \"ISO sana\",\n        time: \"ISO vaqt\",\n        duration: \"ISO davomiylik\",\n        ipv4: \"IPv4 manzil\",\n        ipv6: \"IPv6 manzil\",\n        mac: \"MAC manzil\",\n        cidrv4: \"IPv4 diapazon\",\n        cidrv6: \"IPv6 diapazon\",\n        base64: \"base64 kodlangan satr\",\n        base64url: \"base64url kodlangan satr\",\n        json_string: \"JSON satr\",\n        e164: \"E.164 raqam\",\n        jwt: \"JWT\",\n        template_literal: \"kirish\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"raqam\",\n        array: \"massiv\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Noto‘g‘ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n                }\n                return `Noto‘g‘ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Noto‘g‘ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Noto‘g‘ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n                return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n                }\n                return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Noto‘g‘ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n                if (_issue.format === \"ends_with\")\n                    return `Noto‘g‘ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n                if (_issue.format === \"includes\")\n                    return `Noto‘g‘ri satr: \"${_issue.includes}\" ni o‘z ichiga olishi kerak`;\n                if (_issue.format === \"regex\")\n                    return `Noto‘g‘ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n                return `Noto‘g‘ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Noto‘g‘ri raqam: ${issue.divisor} ning karralisi bo‘lishi kerak`;\n            case \"unrecognized_keys\":\n                return `Noma’lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} dagi kalit noto‘g‘ri`;\n            case \"invalid_union\":\n                return \"Noto‘g‘ri kirish\";\n            case \"invalid_element\":\n                return `${issue.origin} da noto‘g‘ri qiymat`;\n            default:\n                return `Noto‘g‘ri kirish`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"ký tự\", verb: \"có\" },\n        file: { unit: \"byte\", verb: \"có\" },\n        array: { unit: \"phần tử\", verb: \"có\" },\n        set: { unit: \"phần tử\", verb: \"có\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"đầu vào\",\n        email: \"địa chỉ email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ngày giờ ISO\",\n        date: \"ngày ISO\",\n        time: \"giờ ISO\",\n        duration: \"khoảng thời gian ISO\",\n        ipv4: \"địa chỉ IPv4\",\n        ipv6: \"địa chỉ IPv6\",\n        cidrv4: \"dải IPv4\",\n        cidrv6: \"dải IPv6\",\n        base64: \"chuỗi mã hóa base64\",\n        base64url: \"chuỗi mã hóa base64url\",\n        json_string: \"chuỗi JSON\",\n        e164: \"số E.164\",\n        jwt: \"JWT\",\n        template_literal: \"đầu vào\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"số\",\n        array: \"mảng\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Đầu vào không hợp lệ: mong đợi instanceof ${issue.expected}, nhận được ${received}`;\n                }\n                return `Đầu vào không hợp lệ: mong đợi ${expected}, nhận được ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Đầu vào không hợp lệ: mong đợi ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Tùy chọn không hợp lệ: mong đợi một trong các giá trị ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"phần tử\"}`;\n                return `Quá lớn: mong đợi ${issue.origin ?? \"giá trị\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Quá nhỏ: mong đợi ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Quá nhỏ: mong đợi ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Chuỗi không hợp lệ: phải bắt đầu bằng \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Chuỗi không hợp lệ: phải kết thúc bằng \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Chuỗi không hợp lệ: phải bao gồm \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Chuỗi không hợp lệ: phải khớp với mẫu ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} không hợp lệ`;\n            }\n            case \"not_multiple_of\":\n                return `Số không hợp lệ: phải là bội số của ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Khóa không được nhận dạng: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Khóa không hợp lệ trong ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Đầu vào không hợp lệ\";\n            case \"invalid_element\":\n                return `Giá trị không hợp lệ trong ${issue.origin}`;\n            default:\n                return `Đầu vào không hợp lệ`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"字符\", verb: \"包含\" },\n        file: { unit: \"字节\", verb: \"包含\" },\n        array: { unit: \"项\", verb: \"包含\" },\n        set: { unit: \"项\", verb: \"包含\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"输入\",\n        email: \"电子邮件\",\n        url: \"URL\",\n        emoji: \"表情符号\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO日期时间\",\n        date: \"ISO日期\",\n        time: \"ISO时间\",\n        duration: \"ISO时长\",\n        ipv4: \"IPv4地址\",\n        ipv6: \"IPv6地址\",\n        cidrv4: \"IPv4网段\",\n        cidrv6: \"IPv6网段\",\n        base64: \"base64编码字符串\",\n        base64url: \"base64url编码字符串\",\n        json_string: \"JSON字符串\",\n        e164: \"E.164号码\",\n        jwt: \"JWT\",\n        template_literal: \"输入\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"数字\",\n        array: \"数组\",\n        null: \"空值(null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `无效输入：期望 instanceof ${issue.expected}，实际接收 ${received}`;\n                }\n                return `无效输入：期望 ${expected}，实际接收 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `无效输入：期望 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `无效选项：期望以下之一 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `数值过大：期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"个元素\"}`;\n                return `数值过大：期望 ${issue.origin ?? \"值\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `数值过小：期望 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `数值过小：期望 ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `无效字符串：必须以 \"${_issue.prefix}\" 开头`;\n                if (_issue.format === \"ends_with\")\n                    return `无效字符串：必须以 \"${_issue.suffix}\" 结尾`;\n                if (_issue.format === \"includes\")\n                    return `无效字符串：必须包含 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `无效字符串：必须满足正则表达式 ${_issue.pattern}`;\n                return `无效${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `无效数字：必须是 ${issue.divisor} 的倍数`;\n            case \"unrecognized_keys\":\n                return `出现未知的键(key): ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} 中的键(key)无效`;\n            case \"invalid_union\":\n                return \"无效输入\";\n            case \"invalid_element\":\n                return `${issue.origin} 中包含无效值(value)`;\n            default:\n                return `无效输入`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"字元\", verb: \"擁有\" },\n        file: { unit: \"位元組\", verb: \"擁有\" },\n        array: { unit: \"項目\", verb: \"擁有\" },\n        set: { unit: \"項目\", verb: \"擁有\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"輸入\",\n        email: \"郵件地址\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO 日期時間\",\n        date: \"ISO 日期\",\n        time: \"ISO 時間\",\n        duration: \"ISO 期間\",\n        ipv4: \"IPv4 位址\",\n        ipv6: \"IPv6 位址\",\n        cidrv4: \"IPv4 範圍\",\n        cidrv6: \"IPv6 範圍\",\n        base64: \"base64 編碼字串\",\n        base64url: \"base64url 編碼字串\",\n        json_string: \"JSON 字串\",\n        e164: \"E.164 數值\",\n        jwt: \"JWT\",\n        template_literal: \"輸入\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `無效的輸入值：預期為 instanceof ${issue.expected}，但收到 ${received}`;\n                }\n                return `無效的輸入值：預期為 ${expected}，但收到 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `無效的輸入值：預期為 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `無效的選項：預期為以下其中之一 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `數值過大：預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"個元素\"}`;\n                return `數值過大：預期 ${issue.origin ?? \"值\"} 應為 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `數值過小：預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `數值過小：預期 ${issue.origin} 應為 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `無效的字串：必須以 \"${_issue.prefix}\" 開頭`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `無效的字串：必須以 \"${_issue.suffix}\" 結尾`;\n                if (_issue.format === \"includes\")\n                    return `無效的字串：必須包含 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `無效的字串：必須符合格式 ${_issue.pattern}`;\n                return `無效的 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `無效的數字：必須為 ${issue.divisor} 的倍數`;\n            case \"unrecognized_keys\":\n                return `無法識別的鍵值${issue.keys.length > 1 ? \"們\" : \"\"}：${util.joinValues(issue.keys, \"、\")}`;\n            case \"invalid_key\":\n                return `${issue.origin} 中有無效的鍵值`;\n            case \"invalid_union\":\n                return \"無效的輸入值\";\n            case \"invalid_element\":\n                return `${issue.origin} 中有無效的值`;\n            default:\n                return `無效的輸入值`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"àmi\", verb: \"ní\" },\n        file: { unit: \"bytes\", verb: \"ní\" },\n        array: { unit: \"nkan\", verb: \"ní\" },\n        set: { unit: \"nkan\", verb: \"ní\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"ẹ̀rọ ìbáwọlé\",\n        email: \"àdírẹ́sì ìmẹ́lì\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"àkókò ISO\",\n        date: \"ọjọ́ ISO\",\n        time: \"àkókò ISO\",\n        duration: \"àkókò tó pé ISO\",\n        ipv4: \"àdírẹ́sì IPv4\",\n        ipv6: \"àdírẹ́sì IPv6\",\n        cidrv4: \"àgbègbè IPv4\",\n        cidrv6: \"àgbègbè IPv6\",\n        base64: \"ọ̀rọ̀ tí a kọ́ ní base64\",\n        base64url: \"ọ̀rọ̀ base64url\",\n        json_string: \"ọ̀rọ̀ JSON\",\n        e164: \"nọ́mbà E.164\",\n        jwt: \"JWT\",\n        template_literal: \"ẹ̀rọ ìbáwọlé\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nọ́mbà\",\n        array: \"akopọ\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ìbáwọlé aṣìṣe: a ní láti fi instanceof ${issue.expected}, àmọ̀ a rí ${received}`;\n                }\n                return `Ìbáwọlé aṣìṣe: a ní láti fi ${expected}, àmọ̀ a rí ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ìbáwọlé aṣìṣe: a ní láti fi ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Àṣàyàn aṣìṣe: yan ọ̀kan lára ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Tó pọ̀ jù: a ní láti jẹ́ pé ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n                return `Tó pọ̀ jù: a ní láti jẹ́ ${adj}${issue.maximum}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Kéré ju: a ní láti jẹ́ pé ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n                return `Kéré ju: a ní láti jẹ́ ${adj}${issue.minimum}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bẹ̀rẹ̀ pẹ̀lú \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ parí pẹ̀lú \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ ní \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ọ̀rọ̀ aṣìṣe: gbọ́dọ̀ bá àpẹẹrẹ mu ${_issue.pattern}`;\n                return `Aṣìṣe: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nọ́mbà aṣìṣe: gbọ́dọ̀ jẹ́ èyà pípín ti ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Bọtìnì àìmọ̀: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Bọtìnì aṣìṣe nínú ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ìbáwọlé aṣìṣe\";\n            case \"invalid_element\":\n                return `Iye aṣìṣe nínú ${issue.origin}`;\n            default:\n                return \"Ìbáwọlé aṣìṣe\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n","var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n    constructor() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n    }\n    add(schema, ..._meta) {\n        const meta = _meta[0];\n        this._map.set(schema, meta);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.set(meta.id, schema);\n        }\n        return this;\n    }\n    clear() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n        return this;\n    }\n    remove(schema) {\n        const meta = this._map.get(schema);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.delete(meta.id);\n        }\n        this._map.delete(schema);\n        return this;\n    }\n    get(schema) {\n        // return this._map.get(schema) as any;\n        // inherit metadata\n        const p = schema._zod.parent;\n        if (p) {\n            const pm = { ...(this.get(p) ?? {}) };\n            delete pm.id; // do not inherit id\n            const f = { ...pm, ...this._map.get(schema) };\n            return Object.keys(f).length ? f : undefined;\n        }\n        return this._map.get(schema);\n    }\n    has(schema) {\n        return this._map.has(schema);\n    }\n}\n// registries\nexport function registry() {\n    return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n","import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n    return new Class({\n        type: \"string\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n    return new Class({\n        type: \"string\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"email\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"guid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v4\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v6\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v7\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"emoji\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"nanoid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link _cuid2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid2\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ulid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"xid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ksuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"mac\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"e164\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"jwt\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const TimePrecision = {\n    Any: null,\n    Minute: -1,\n    Second: 0,\n    Millisecond: 3,\n    Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"datetime\",\n        check: \"string_format\",\n        offset: false,\n        local: false,\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"date\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"time\",\n        check: \"string_format\",\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"duration\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n    return new Class({\n        type: \"number\",\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n    return new Class({\n        type: \"number\",\n        coerce: true,\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"safeint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"int32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"uint32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"int64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"uint64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n    return new Class({\n        type: \"symbol\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n    return new Class({\n        type: \"undefined\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n    return new Class({\n        type: \"null\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n    return new Class({\n        type: \"any\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n    return new Class({\n        type: \"unknown\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n    return new Class({\n        type: \"never\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n    return new Class({\n        type: \"void\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n    return new Class({\n        type: \"date\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n    return new Class({\n        type: \"date\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n    return new Class({\n        type: \"nan\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n    return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n    return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n    return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n    return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n    return new checks.$ZodCheckMultipleOf({\n        check: \"multiple_of\",\n        ...util.normalizeParams(params),\n        value,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n    return new checks.$ZodCheckMaxSize({\n        check: \"max_size\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n    return new checks.$ZodCheckMinSize({\n        check: \"min_size\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n    return new checks.$ZodCheckSizeEquals({\n        check: \"size_equals\",\n        ...util.normalizeParams(params),\n        size,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n    const ch = new checks.$ZodCheckMaxLength({\n        check: \"max_length\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n    return new checks.$ZodCheckMinLength({\n        check: \"min_length\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n    return new checks.$ZodCheckLengthEquals({\n        check: \"length_equals\",\n        ...util.normalizeParams(params),\n        length,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n    return new checks.$ZodCheckRegex({\n        check: \"string_format\",\n        format: \"regex\",\n        ...util.normalizeParams(params),\n        pattern,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n    return new checks.$ZodCheckLowerCase({\n        check: \"string_format\",\n        format: \"lowercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n    return new checks.$ZodCheckUpperCase({\n        check: \"string_format\",\n        format: \"uppercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n    return new checks.$ZodCheckIncludes({\n        check: \"string_format\",\n        format: \"includes\",\n        ...util.normalizeParams(params),\n        includes,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n    return new checks.$ZodCheckStartsWith({\n        check: \"string_format\",\n        format: \"starts_with\",\n        ...util.normalizeParams(params),\n        prefix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n    return new checks.$ZodCheckEndsWith({\n        check: \"string_format\",\n        format: \"ends_with\",\n        ...util.normalizeParams(params),\n        suffix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n    return new checks.$ZodCheckProperty({\n        check: \"property\",\n        property,\n        schema,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n    return new checks.$ZodCheckMimeType({\n        check: \"mime_type\",\n        mime: types,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n    return new checks.$ZodCheckOverwrite({\n        check: \"overwrite\",\n        tx,\n    });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n    return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n    return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n    return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n    return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n    return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n    return new Class({\n        type: \"array\",\n        element,\n        // get element() {\n        //   return element;\n        // },\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _xor(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n    return new Class({\n        type: \"intersection\",\n        left,\n        right,\n    });\n}\n// export function _tuple(\n//   Class: util.SchemaClass<schemas.$ZodTuple>,\n//   items: [],\n//   params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new Class({\n        type: \"tuple\",\n        items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"record\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"map\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n    return new Class({\n        type: \"set\",\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    // if (Array.isArray(values)) {\n    //   for (const value of values) {\n    //     entries[value] = value;\n    //   }\n    // } else {\n    //   Object.assign(entries, values);\n    // }\n    // const entries: util.EnumLike = {};\n    // for (const val of values) {\n    //   entries[val] = val;\n    // }\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n    return new Class({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n    return new Class({\n        type: \"file\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n    return new Class({\n        type: \"transform\",\n        transform: fn,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n    return new Class({\n        type: \"optional\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n    return new Class({\n        type: \"nullable\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n    return new Class({\n        type: \"default\",\n        innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n    return new Class({\n        type: \"nonoptional\",\n        innerType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n    return new Class({\n        type: \"success\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n    return new Class({\n        type: \"catch\",\n        innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n    return new Class({\n        type: \"pipe\",\n        in: in_,\n        out,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n    return new Class({\n        type: \"readonly\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n    return new Class({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n    return new Class({\n        type: \"lazy\",\n        getter,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n    return new Class({\n        type: \"promise\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n    const norm = util.normalizeParams(_params);\n    norm.abort ?? (norm.abort = true); // default to abort:false\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...norm,\n    });\n    return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...util.normalizeParams(_params),\n    });\n    return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn, params) {\n    const ch = _check((payload) => {\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = ch);\n                _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        return fn(payload.value, payload);\n    }, params);\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n    const ch = new checks.$ZodCheck({\n        check: \"custom\",\n        ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n    const ch = new checks.$ZodCheck({ check: \"describe\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, description });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n    const ch = new checks.$ZodCheck({ check: \"meta\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, ...metadata });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n    const params = util.normalizeParams(_params);\n    let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n    let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n    if (params.case !== \"sensitive\") {\n        truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n        falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n    }\n    const truthySet = new Set(truthyArray);\n    const falsySet = new Set(falsyArray);\n    const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n    const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n    const _String = Classes.String ?? schemas.$ZodString;\n    const stringSchema = new _String({ type: \"string\", error: params.error });\n    const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n    const codec = new _Codec({\n        type: \"pipe\",\n        in: stringSchema,\n        out: booleanSchema,\n        transform: ((input, payload) => {\n            let data = input;\n            if (params.case !== \"sensitive\")\n                data = data.toLowerCase();\n            if (truthySet.has(data)) {\n                return true;\n            }\n            else if (falsySet.has(data)) {\n                return false;\n            }\n            else {\n                payload.issues.push({\n                    code: \"invalid_value\",\n                    expected: \"stringbool\",\n                    values: [...truthySet, ...falsySet],\n                    input: payload.value,\n                    inst: codec,\n                    continue: false,\n                });\n                return {};\n            }\n        }),\n        reverseTransform: ((input, _payload) => {\n            if (input === true) {\n                return truthyArray[0] || \"true\";\n            }\n            else {\n                return falsyArray[0] || \"false\";\n            }\n        }),\n        error: params.error,\n    });\n    return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n    const params = util.normalizeParams(_params);\n    const def = {\n        ...util.normalizeParams(_params),\n        check: \"string_format\",\n        type: \"string\",\n        format,\n        fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n        ...params,\n    };\n    if (fnOrRegex instanceof RegExp) {\n        def.pattern = fnOrRegex;\n    }\n    const inst = new Class(def);\n    return inst;\n}\n","import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n//   return {\n//     processor: inputs.processor,\n//     metadataRegistry: inputs.metadata ?? globalRegistry,\n//     target: inputs.target ?? \"draft-2020-12\",\n//     unrepresentable: inputs.unrepresentable ?? \"throw\",\n//   };\n// }\nexport function initializeContext(params) {\n    // Normalize target: convert old non-hyphenated versions to hyphenated versions\n    let target = params?.target ?? \"draft-2020-12\";\n    if (target === \"draft-4\")\n        target = \"draft-04\";\n    if (target === \"draft-7\")\n        target = \"draft-07\";\n    return {\n        processors: params.processors ?? {},\n        metadataRegistry: params?.metadata ?? globalRegistry,\n        target,\n        unrepresentable: params?.unrepresentable ?? \"throw\",\n        override: params?.override ?? (() => { }),\n        io: params?.io ?? \"output\",\n        counter: 0,\n        seen: new Map(),\n        cycles: params?.cycles ?? \"ref\",\n        reused: params?.reused ?? \"inline\",\n        external: params?.external ?? undefined,\n    };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n    var _a;\n    const def = schema._zod.def;\n    // check for schema in seens\n    const seen = ctx.seen.get(schema);\n    if (seen) {\n        seen.count++;\n        // check if cycle\n        const isCycle = _params.schemaPath.includes(schema);\n        if (isCycle) {\n            seen.cycle = _params.path;\n        }\n        return seen.schema;\n    }\n    // initialize\n    const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n    ctx.seen.set(schema, result);\n    // custom method overrides default behavior\n    const overrideSchema = schema._zod.toJSONSchema?.();\n    if (overrideSchema) {\n        result.schema = overrideSchema;\n    }\n    else {\n        const params = {\n            ..._params,\n            schemaPath: [..._params.schemaPath, schema],\n            path: _params.path,\n        };\n        if (schema._zod.processJSONSchema) {\n            schema._zod.processJSONSchema(ctx, result.schema, params);\n        }\n        else {\n            const _json = result.schema;\n            const processor = ctx.processors[def.type];\n            if (!processor) {\n                throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n            }\n            processor(schema, ctx, _json, params);\n        }\n        const parent = schema._zod.parent;\n        if (parent) {\n            // Also set ref if processor didn't (for inheritance)\n            if (!result.ref)\n                result.ref = parent;\n            process(parent, ctx, params);\n            ctx.seen.get(parent).isParent = true;\n        }\n    }\n    // metadata\n    const meta = ctx.metadataRegistry.get(schema);\n    if (meta)\n        Object.assign(result.schema, meta);\n    if (ctx.io === \"input\" && isTransforming(schema)) {\n        // examples/defaults only apply to output type of pipe\n        delete result.schema.examples;\n        delete result.schema.default;\n    }\n    // set prefault as default\n    if (ctx.io === \"input\" && \"_prefault\" in result.schema)\n        (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n    delete result.schema._prefault;\n    // pulling fresh from ctx.seen in case it was overwritten\n    const _result = ctx.seen.get(schema);\n    return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n    // iterate over seen map;\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // Track ids to detect duplicates across different schemas\n    const idToSchema = new Map();\n    for (const entry of ctx.seen.entries()) {\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            const existing = idToSchema.get(id);\n            if (existing && existing !== entry[0]) {\n                throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n            }\n            idToSchema.set(id, entry[0]);\n        }\n    }\n    // returns a ref to the schema\n    // defId will be empty if the ref points to an external schema (or #)\n    const makeURI = (entry) => {\n        // comparing the seen objects because sometimes\n        // multiple schemas map to the same seen object.\n        // e.g. lazy\n        // external is configured\n        const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n        if (ctx.external) {\n            const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n            // check if schema is in the external registry\n            const uriGenerator = ctx.external.uri ?? ((id) => id);\n            if (externalId) {\n                return { ref: uriGenerator(externalId) };\n            }\n            // otherwise, add to __shared\n            const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n            entry[1].defId = id; // set defId so it will be reused if needed\n            return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n        }\n        if (entry[1] === root) {\n            return { ref: \"#\" };\n        }\n        // self-contained schema\n        const uriPrefix = `#`;\n        const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n        const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n        return { defId, ref: defUriPrefix + defId };\n    };\n    // stored cached version in `def` property\n    // remove all properties, set $ref\n    const extractToDef = (entry) => {\n        // if the schema is already a reference, do not extract it\n        if (entry[1].schema.$ref) {\n            return;\n        }\n        const seen = entry[1];\n        const { ref, defId } = makeURI(entry);\n        seen.def = { ...seen.schema };\n        // defId won't be set if the schema is a reference to an external schema\n        // or if the schema is the root schema\n        if (defId)\n            seen.defId = defId;\n        // wipe away all properties except $ref\n        const schema = seen.schema;\n        for (const key in schema) {\n            delete schema[key];\n        }\n        schema.$ref = ref;\n    };\n    // throw on cycles\n    // break cycles\n    if (ctx.cycles === \"throw\") {\n        for (const entry of ctx.seen.entries()) {\n            const seen = entry[1];\n            if (seen.cycle) {\n                throw new Error(\"Cycle detected: \" +\n                    `#/${seen.cycle?.join(\"/\")}/<root>` +\n                    '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n            }\n        }\n    }\n    // extract schemas into $defs\n    for (const entry of ctx.seen.entries()) {\n        const seen = entry[1];\n        // convert root schema to # $ref\n        if (schema === entry[0]) {\n            extractToDef(entry); // this has special handling for the root schema\n            continue;\n        }\n        // extract schemas that are in the external registry\n        if (ctx.external) {\n            const ext = ctx.external.registry.get(entry[0])?.id;\n            if (schema !== entry[0] && ext) {\n                extractToDef(entry);\n                continue;\n            }\n        }\n        // extract schemas with `id` meta\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            extractToDef(entry);\n            continue;\n        }\n        // break cycles\n        if (seen.cycle) {\n            // any\n            extractToDef(entry);\n            continue;\n        }\n        // extract reused schemas\n        if (seen.count > 1) {\n            if (ctx.reused === \"ref\") {\n                extractToDef(entry);\n                // biome-ignore lint:\n                continue;\n            }\n        }\n    }\n}\nexport function finalize(ctx, schema) {\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // flatten refs - inherit properties from parent schemas\n    const flattenRef = (zodSchema) => {\n        const seen = ctx.seen.get(zodSchema);\n        // already processed\n        if (seen.ref === null)\n            return;\n        const schema = seen.def ?? seen.schema;\n        const _cached = { ...schema };\n        const ref = seen.ref;\n        seen.ref = null; // prevent infinite recursion\n        if (ref) {\n            flattenRef(ref);\n            const refSeen = ctx.seen.get(ref);\n            const refSchema = refSeen.schema;\n            // merge referenced schema into current\n            if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n                // older drafts can't combine $ref with other properties\n                schema.allOf = schema.allOf ?? [];\n                schema.allOf.push(refSchema);\n            }\n            else {\n                Object.assign(schema, refSchema);\n            }\n            // restore child's own properties (child wins)\n            Object.assign(schema, _cached);\n            const isParentRef = zodSchema._zod.parent === ref;\n            // For parent chain, child is a refinement - remove parent-only properties\n            if (isParentRef) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (!(key in _cached)) {\n                        delete schema[key];\n                    }\n                }\n            }\n            // When ref was extracted to $defs, remove properties that match the definition\n            if (refSchema.$ref && refSeen.def) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n                        delete schema[key];\n                    }\n                }\n            }\n        }\n        // If parent was extracted (has $ref), propagate $ref to this schema\n        // This handles cases like: readonly().meta({id}).describe()\n        // where processor sets ref to innerType but parent should be referenced\n        const parent = zodSchema._zod.parent;\n        if (parent && parent !== ref) {\n            // Ensure parent is processed first so its def has inherited properties\n            flattenRef(parent);\n            const parentSeen = ctx.seen.get(parent);\n            if (parentSeen?.schema.$ref) {\n                schema.$ref = parentSeen.schema.$ref;\n                // De-duplicate with parent's definition\n                if (parentSeen.def) {\n                    for (const key in schema) {\n                        if (key === \"$ref\" || key === \"allOf\")\n                            continue;\n                        if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n                            delete schema[key];\n                        }\n                    }\n                }\n            }\n        }\n        // execute overrides\n        ctx.override({\n            zodSchema: zodSchema,\n            jsonSchema: schema,\n            path: seen.path ?? [],\n        });\n    };\n    for (const entry of [...ctx.seen.entries()].reverse()) {\n        flattenRef(entry[0]);\n    }\n    const result = {};\n    if (ctx.target === \"draft-2020-12\") {\n        result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n    }\n    else if (ctx.target === \"draft-07\") {\n        result.$schema = \"http://json-schema.org/draft-07/schema#\";\n    }\n    else if (ctx.target === \"draft-04\") {\n        result.$schema = \"http://json-schema.org/draft-04/schema#\";\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        // OpenAPI 3.0 schema objects should not include a $schema property\n    }\n    else {\n        // Arbitrary string values are allowed but won't have a $schema property set\n    }\n    if (ctx.external?.uri) {\n        const id = ctx.external.registry.get(schema)?.id;\n        if (!id)\n            throw new Error(\"Schema is missing an `id` property\");\n        result.$id = ctx.external.uri(id);\n    }\n    Object.assign(result, root.def ?? root.schema);\n    // The `id` in `.meta()` is a Zod-specific registration tag used to extract\n    // schemas into $defs — it is not user-facing JSON Schema metadata. Strip it\n    // from the output body where it would otherwise leak. The id is preserved\n    // implicitly via the $defs key (and via $ref paths).\n    const rootMetaId = ctx.metadataRegistry.get(schema)?.id;\n    if (rootMetaId !== undefined && result.id === rootMetaId)\n        delete result.id;\n    // build defs object\n    const defs = ctx.external?.defs ?? {};\n    for (const entry of ctx.seen.entries()) {\n        const seen = entry[1];\n        if (seen.def && seen.defId) {\n            if (seen.def.id === seen.defId)\n                delete seen.def.id;\n            defs[seen.defId] = seen.def;\n        }\n    }\n    // set definitions in result\n    if (ctx.external) {\n    }\n    else {\n        if (Object.keys(defs).length > 0) {\n            if (ctx.target === \"draft-2020-12\") {\n                result.$defs = defs;\n            }\n            else {\n                result.definitions = defs;\n            }\n        }\n    }\n    try {\n        // this \"finalizes\" this schema and ensures all cycles are removed\n        // each call to finalize() is functionally independent\n        // though the seen map is shared\n        const finalized = JSON.parse(JSON.stringify(result));\n        Object.defineProperty(finalized, \"~standard\", {\n            value: {\n                ...schema[\"~standard\"],\n                jsonSchema: {\n                    input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n                    output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n                },\n            },\n            enumerable: false,\n            writable: false,\n        });\n        return finalized;\n    }\n    catch (_err) {\n        throw new Error(\"Error converting schema to JSON.\");\n    }\n}\nfunction isTransforming(_schema, _ctx) {\n    const ctx = _ctx ?? { seen: new Set() };\n    if (ctx.seen.has(_schema))\n        return false;\n    ctx.seen.add(_schema);\n    const def = _schema._zod.def;\n    if (def.type === \"transform\")\n        return true;\n    if (def.type === \"array\")\n        return isTransforming(def.element, ctx);\n    if (def.type === \"set\")\n        return isTransforming(def.valueType, ctx);\n    if (def.type === \"lazy\")\n        return isTransforming(def.getter(), ctx);\n    if (def.type === \"promise\" ||\n        def.type === \"optional\" ||\n        def.type === \"nonoptional\" ||\n        def.type === \"nullable\" ||\n        def.type === \"readonly\" ||\n        def.type === \"default\" ||\n        def.type === \"prefault\") {\n        return isTransforming(def.innerType, ctx);\n    }\n    if (def.type === \"intersection\") {\n        return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n    }\n    if (def.type === \"record\" || def.type === \"map\") {\n        return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n    }\n    if (def.type === \"pipe\") {\n        if (_schema._zod.traits.has(\"$ZodCodec\"))\n            return true;\n        return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n    }\n    if (def.type === \"object\") {\n        for (const key in def.shape) {\n            if (isTransforming(def.shape[key], ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"union\") {\n        for (const option of def.options) {\n            if (isTransforming(option, ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"tuple\") {\n        for (const item of def.items) {\n            if (isTransforming(item, ctx))\n                return true;\n        }\n        if (def.rest && isTransforming(def.rest, ctx))\n            return true;\n        return false;\n    }\n    return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n    const ctx = initializeContext({ ...params, processors });\n    process(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n    const { libraryOptions, target } = params ?? {};\n    const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n    process(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\n","import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n    guid: \"uuid\",\n    url: \"uri\",\n    datetime: \"date-time\",\n    json_string: \"json-string\",\n    regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n    const json = _json;\n    json.type = \"string\";\n    const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n        .bag;\n    if (typeof minimum === \"number\")\n        json.minLength = minimum;\n    if (typeof maximum === \"number\")\n        json.maxLength = maximum;\n    // custom pattern overrides format\n    if (format) {\n        json.format = formatMap[format] ?? format;\n        if (json.format === \"\")\n            delete json.format; // empty format is not valid\n        // JSON Schema format: \"time\" requires a full time with offset or Z\n        // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n        if (format === \"time\") {\n            delete json.format;\n        }\n    }\n    if (contentEncoding)\n        json.contentEncoding = contentEncoding;\n    if (patterns && patterns.size > 0) {\n        const regexes = [...patterns];\n        if (regexes.length === 1)\n            json.pattern = regexes[0].source;\n        else if (regexes.length > 1) {\n            json.allOf = [\n                ...regexes.map((regex) => ({\n                    ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n                        ? { type: \"string\" }\n                        : {}),\n                    pattern: regex.source,\n                })),\n            ];\n        }\n    }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n    const json = _json;\n    const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n    if (typeof format === \"string\" && format.includes(\"int\"))\n        json.type = \"integer\";\n    else\n        json.type = \"number\";\n    // when both minimum and exclusiveMinimum exist, pick the more restrictive one\n    const exMin = typeof exclusiveMinimum === \"number\" && exclusiveMinimum >= (minimum ?? Number.NEGATIVE_INFINITY);\n    const exMax = typeof exclusiveMaximum === \"number\" && exclusiveMaximum <= (maximum ?? Number.POSITIVE_INFINITY);\n    const legacy = ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\";\n    if (exMin) {\n        if (legacy) {\n            json.minimum = exclusiveMinimum;\n            json.exclusiveMinimum = true;\n        }\n        else {\n            json.exclusiveMinimum = exclusiveMinimum;\n        }\n    }\n    else if (typeof minimum === \"number\") {\n        json.minimum = minimum;\n    }\n    if (exMax) {\n        if (legacy) {\n            json.maximum = exclusiveMaximum;\n            json.exclusiveMaximum = true;\n        }\n        else {\n            json.exclusiveMaximum = exclusiveMaximum;\n        }\n    }\n    else if (typeof maximum === \"number\") {\n        json.maximum = maximum;\n    }\n    if (typeof multipleOf === \"number\")\n        json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"BigInt cannot be represented in JSON Schema\");\n    }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Symbols cannot be represented in JSON Schema\");\n    }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n    if (ctx.target === \"openapi-3.0\") {\n        json.type = \"string\";\n        json.nullable = true;\n        json.enum = [null];\n    }\n    else {\n        json.type = \"null\";\n    }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Undefined cannot be represented in JSON Schema\");\n    }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Void cannot be represented in JSON Schema\");\n    }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n    json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Date cannot be represented in JSON Schema\");\n    }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n    const def = schema._zod.def;\n    const values = getEnumValues(def.entries);\n    // Number enums can have both string and number values\n    if (values.every((v) => typeof v === \"number\"))\n        json.type = \"number\";\n    if (values.every((v) => typeof v === \"string\"))\n        json.type = \"string\";\n    json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n    const def = schema._zod.def;\n    const vals = [];\n    for (const val of def.values) {\n        if (val === undefined) {\n            if (ctx.unrepresentable === \"throw\") {\n                throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n            }\n            else {\n                // do not add to vals\n            }\n        }\n        else if (typeof val === \"bigint\") {\n            if (ctx.unrepresentable === \"throw\") {\n                throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n            }\n            else {\n                vals.push(Number(val));\n            }\n        }\n        else {\n            vals.push(val);\n        }\n    }\n    if (vals.length === 0) {\n        // do nothing (an undefined literal was stripped)\n    }\n    else if (vals.length === 1) {\n        const val = vals[0];\n        json.type = val === null ? \"null\" : typeof val;\n        if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n            json.enum = [val];\n        }\n        else {\n            json.const = val;\n        }\n    }\n    else {\n        if (vals.every((v) => typeof v === \"number\"))\n            json.type = \"number\";\n        if (vals.every((v) => typeof v === \"string\"))\n            json.type = \"string\";\n        if (vals.every((v) => typeof v === \"boolean\"))\n            json.type = \"boolean\";\n        if (vals.every((v) => v === null))\n            json.type = \"null\";\n        json.enum = vals;\n    }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"NaN cannot be represented in JSON Schema\");\n    }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    const pattern = schema._zod.pattern;\n    if (!pattern)\n        throw new Error(\"Pattern not found in template literal\");\n    _json.type = \"string\";\n    _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    const file = {\n        type: \"string\",\n        format: \"binary\",\n        contentEncoding: \"binary\",\n    };\n    const { minimum, maximum, mime } = schema._zod.bag;\n    if (minimum !== undefined)\n        file.minLength = minimum;\n    if (maximum !== undefined)\n        file.maxLength = maximum;\n    if (mime) {\n        if (mime.length === 1) {\n            file.contentMediaType = mime[0];\n            Object.assign(_json, file);\n        }\n        else {\n            Object.assign(_json, file); // shared props at root\n            _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n        }\n    }\n    else {\n        Object.assign(_json, file);\n    }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Custom types cannot be represented in JSON Schema\");\n    }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Function types cannot be represented in JSON Schema\");\n    }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Transforms cannot be represented in JSON Schema\");\n    }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Map cannot be represented in JSON Schema\");\n    }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Set cannot be represented in JSON Schema\");\n    }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    const { minimum, maximum } = schema._zod.bag;\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n    json.type = \"array\";\n    json.items = process(def.element, ctx, {\n        ...params,\n        path: [...params.path, \"items\"],\n    });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"object\";\n    json.properties = {};\n    const shape = def.shape;\n    for (const key in shape) {\n        json.properties[key] = process(shape[key], ctx, {\n            ...params,\n            path: [...params.path, \"properties\", key],\n        });\n    }\n    // required keys\n    const allKeys = new Set(Object.keys(shape));\n    const requiredKeys = new Set([...allKeys].filter((key) => {\n        const v = def.shape[key]._zod;\n        if (ctx.io === \"input\") {\n            return v.optin === undefined;\n        }\n        else {\n            return v.optout === undefined;\n        }\n    }));\n    if (requiredKeys.size > 0) {\n        json.required = Array.from(requiredKeys);\n    }\n    // catchall\n    if (def.catchall?._zod.def.type === \"never\") {\n        // strict\n        json.additionalProperties = false;\n    }\n    else if (!def.catchall) {\n        // regular\n        if (ctx.io === \"output\")\n            json.additionalProperties = false;\n    }\n    else if (def.catchall) {\n        json.additionalProperties = process(def.catchall, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n    // This includes both z.xor() and discriminated unions\n    const isExclusive = def.inclusive === false;\n    const options = def.options.map((x, i) => process(x, ctx, {\n        ...params,\n        path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n    }));\n    if (isExclusive) {\n        json.oneOf = options;\n    }\n    else {\n        json.anyOf = options;\n    }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const a = process(def.left, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 0],\n    });\n    const b = process(def.right, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 1],\n    });\n    const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n    const allOf = [\n        ...(isSimpleIntersection(a) ? a.allOf : [a]),\n        ...(isSimpleIntersection(b) ? b.allOf : [b]),\n    ];\n    json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"array\";\n    const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n    const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n    const prefixItems = def.items.map((x, i) => process(x, ctx, {\n        ...params,\n        path: [...params.path, prefixPath, i],\n    }));\n    const rest = def.rest\n        ? process(def.rest, ctx, {\n            ...params,\n            path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n        })\n        : null;\n    if (ctx.target === \"draft-2020-12\") {\n        json.prefixItems = prefixItems;\n        if (rest) {\n            json.items = rest;\n        }\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        json.items = {\n            anyOf: prefixItems,\n        };\n        if (rest) {\n            json.items.anyOf.push(rest);\n        }\n        json.minItems = prefixItems.length;\n        if (!rest) {\n            json.maxItems = prefixItems.length;\n        }\n    }\n    else {\n        json.items = prefixItems;\n        if (rest) {\n            json.additionalItems = rest;\n        }\n    }\n    // length\n    const { minimum, maximum } = schema._zod.bag;\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"object\";\n    // For looseRecord with regex patterns, use patternProperties\n    // This correctly represents \"only validate keys matching the pattern\" semantics\n    // and composes well with allOf (intersections)\n    const keyType = def.keyType;\n    const keyBag = keyType._zod.bag;\n    const patterns = keyBag?.patterns;\n    if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n        // Use patternProperties for looseRecord with regex patterns\n        const valueSchema = process(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"patternProperties\", \"*\"],\n        });\n        json.patternProperties = {};\n        for (const pattern of patterns) {\n            json.patternProperties[pattern.source] = valueSchema;\n        }\n    }\n    else {\n        // Default behavior: use propertyNames + additionalProperties\n        if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n            json.propertyNames = process(def.keyType, ctx, {\n                ...params,\n                path: [...params.path, \"propertyNames\"],\n            });\n        }\n        json.additionalProperties = process(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n    // Add required for keys with discrete values (enum, literal, etc.)\n    const keyValues = keyType._zod.values;\n    if (keyValues) {\n        const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n        if (validKeyValues.length > 0) {\n            json.required = validKeyValues;\n        }\n    }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const inner = process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    if (ctx.target === \"openapi-3.0\") {\n        seen.ref = def.innerType;\n        json.nullable = true;\n    }\n    else {\n        json.anyOf = [inner, { type: \"null\" }];\n    }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    if (ctx.io === \"input\")\n        json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    let catchValue;\n    try {\n        catchValue = def.catchValue(undefined);\n    }\n    catch {\n        throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n    }\n    json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    const inIsTransform = def.in._zod.traits.has(\"$ZodTransform\");\n    const innerType = ctx.io === \"input\" ? (inIsTransform ? def.out : def.in) : def.out;\n    process(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n    const innerType = schema._zod.innerType;\n    process(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n    string: stringProcessor,\n    number: numberProcessor,\n    boolean: booleanProcessor,\n    bigint: bigintProcessor,\n    symbol: symbolProcessor,\n    null: nullProcessor,\n    undefined: undefinedProcessor,\n    void: voidProcessor,\n    never: neverProcessor,\n    any: anyProcessor,\n    unknown: unknownProcessor,\n    date: dateProcessor,\n    enum: enumProcessor,\n    literal: literalProcessor,\n    nan: nanProcessor,\n    template_literal: templateLiteralProcessor,\n    file: fileProcessor,\n    success: successProcessor,\n    custom: customProcessor,\n    function: functionProcessor,\n    transform: transformProcessor,\n    map: mapProcessor,\n    set: setProcessor,\n    array: arrayProcessor,\n    object: objectProcessor,\n    union: unionProcessor,\n    intersection: intersectionProcessor,\n    tuple: tupleProcessor,\n    record: recordProcessor,\n    nullable: nullableProcessor,\n    nonoptional: nonoptionalProcessor,\n    default: defaultProcessor,\n    prefault: prefaultProcessor,\n    catch: catchProcessor,\n    pipe: pipeProcessor,\n    readonly: readonlyProcessor,\n    promise: promiseProcessor,\n    optional: optionalProcessor,\n    lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n    if (\"_idmap\" in input) {\n        // Registry case\n        const registry = input;\n        const ctx = initializeContext({ ...params, processors: allProcessors });\n        const defs = {};\n        // First pass: process all schemas to build the seen map\n        for (const entry of registry._idmap.entries()) {\n            const [_, schema] = entry;\n            process(schema, ctx);\n        }\n        const schemas = {};\n        const external = {\n            registry,\n            uri: params?.uri,\n            defs,\n        };\n        // Update the context with external configuration\n        ctx.external = external;\n        // Second pass: emit each schema\n        for (const entry of registry._idmap.entries()) {\n            const [key, schema] = entry;\n            extractDefs(ctx, schema);\n            schemas[key] = finalize(ctx, schema);\n        }\n        if (Object.keys(defs).length > 0) {\n            const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n            schemas.__shared = {\n                [defsSegment]: defs,\n            };\n        }\n        return { schemas };\n    }\n    // Single schema case\n    const ctx = initializeContext({ ...params, processors: allProcessors });\n    process(input, ctx);\n    extractDefs(ctx, input);\n    return finalize(ctx, input);\n}\n","import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n    /** @deprecated Access via ctx instead */\n    get metadataRegistry() {\n        return this.ctx.metadataRegistry;\n    }\n    /** @deprecated Access via ctx instead */\n    get target() {\n        return this.ctx.target;\n    }\n    /** @deprecated Access via ctx instead */\n    get unrepresentable() {\n        return this.ctx.unrepresentable;\n    }\n    /** @deprecated Access via ctx instead */\n    get override() {\n        return this.ctx.override;\n    }\n    /** @deprecated Access via ctx instead */\n    get io() {\n        return this.ctx.io;\n    }\n    /** @deprecated Access via ctx instead */\n    get counter() {\n        return this.ctx.counter;\n    }\n    set counter(value) {\n        this.ctx.counter = value;\n    }\n    /** @deprecated Access via ctx instead */\n    get seen() {\n        return this.ctx.seen;\n    }\n    constructor(params) {\n        // Normalize target for internal context\n        let normalizedTarget = params?.target ?? \"draft-2020-12\";\n        if (normalizedTarget === \"draft-4\")\n            normalizedTarget = \"draft-04\";\n        if (normalizedTarget === \"draft-7\")\n            normalizedTarget = \"draft-07\";\n        this.ctx = initializeContext({\n            processors: allProcessors,\n            target: normalizedTarget,\n            ...(params?.metadata && { metadata: params.metadata }),\n            ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n            ...(params?.override && { override: params.override }),\n            ...(params?.io && { io: params.io }),\n        });\n    }\n    /**\n     * Process a schema to prepare it for JSON Schema generation.\n     * This must be called before emit().\n     */\n    process(schema, _params = { path: [], schemaPath: [] }) {\n        return process(schema, this.ctx, _params);\n    }\n    /**\n     * Emit the final JSON Schema after processing.\n     * Must call process() first.\n     */\n    emit(schema, _params) {\n        // Apply emit params to the context\n        if (_params) {\n            if (_params.cycles)\n                this.ctx.cycles = _params.cycles;\n            if (_params.reused)\n                this.ctx.reused = _params.reused;\n            if (_params.external)\n                this.ctx.external = _params.external;\n        }\n        extractDefs(this.ctx, schema);\n        const result = finalize(this.ctx, schema);\n        // Strip ~standard property to match old implementation's return type\n        const { \"~standard\": _, ...plainResult } = result;\n        return plainResult;\n    }\n}\n","export {};\n","import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\n// Lazy-bind builder methods.\n//\n// Builder methods (`.optional`, `.array`, `.refine`, ...) live as\n// non-enumerable getters on each concrete schema constructor's\n// prototype. On first access from an instance the getter allocates\n// `fn.bind(this)` and caches it as an own property on that instance,\n// so detached usage (`const m = schema.optional; m()`) still works\n// and the per-instance allocation only happens for methods actually\n// touched.\n//\n// One install per (prototype, group), memoized by `_installedGroups`.\nconst _installedGroups = /* @__PURE__ */ new WeakMap();\nfunction _installLazyMethods(inst, group, methods) {\n    const proto = Object.getPrototypeOf(inst);\n    let installed = _installedGroups.get(proto);\n    if (!installed) {\n        installed = new Set();\n        _installedGroups.set(proto, installed);\n    }\n    if (installed.has(group))\n        return;\n    installed.add(group);\n    for (const key in methods) {\n        const fn = methods[key];\n        Object.defineProperty(proto, key, {\n            configurable: true,\n            enumerable: false,\n            get() {\n                const bound = fn.bind(this);\n                Object.defineProperty(this, key, {\n                    configurable: true,\n                    writable: true,\n                    enumerable: true,\n                    value: bound,\n                });\n                return bound;\n            },\n            set(v) {\n                Object.defineProperty(this, key, {\n                    configurable: true,\n                    writable: true,\n                    enumerable: true,\n                    value: v,\n                });\n            },\n        });\n    }\n}\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n    core.$ZodType.init(inst, def);\n    Object.assign(inst[\"~standard\"], {\n        jsonSchema: {\n            input: createStandardJSONSchemaMethod(inst, \"input\"),\n            output: createStandardJSONSchemaMethod(inst, \"output\"),\n        },\n    });\n    inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n    inst.def = def;\n    inst.type = def.type;\n    Object.defineProperty(inst, \"_def\", { value: def });\n    // Parse-family is intentionally kept as per-instance closures: these are\n    // the hot path AND the most-detached methods (`arr.map(schema.parse)`,\n    // `const { parse } = schema`, etc.). Eager closures here mean callers pay\n    // ~12 closure allocations per schema but get monomorphic call sites and\n    // detached usage that \"just works\".\n    inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n    inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n    inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n    inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n    inst.spa = inst.safeParseAsync;\n    inst.encode = (data, params) => parse.encode(inst, data, params);\n    inst.decode = (data, params) => parse.decode(inst, data, params);\n    inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n    inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n    inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n    inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n    inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n    inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n    // All builder methods are placed on the internal prototype as lazy-bind\n    // getters. On first access per-instance, a bound thunk is allocated and\n    // cached as an own property; subsequent accesses skip the getter. This\n    // means: no per-instance allocation for unused methods, full\n    // detachability preserved (`const m = schema.optional; m()` works), and\n    // shared underlying function references across all instances.\n    _installLazyMethods(inst, \"ZodType\", {\n        check(...chks) {\n            const def = this.def;\n            return this.clone(util.mergeDefs(def, {\n                checks: [\n                    ...(def.checks ?? []),\n                    ...chks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n                ],\n            }), { parent: true });\n        },\n        with(...chks) {\n            return this.check(...chks);\n        },\n        clone(def, params) {\n            return core.clone(this, def, params);\n        },\n        brand() {\n            return this;\n        },\n        register(reg, meta) {\n            reg.add(this, meta);\n            return this;\n        },\n        refine(check, params) {\n            return this.check(refine(check, params));\n        },\n        superRefine(refinement, params) {\n            return this.check(superRefine(refinement, params));\n        },\n        overwrite(fn) {\n            return this.check(checks.overwrite(fn));\n        },\n        optional() {\n            return optional(this);\n        },\n        exactOptional() {\n            return exactOptional(this);\n        },\n        nullable() {\n            return nullable(this);\n        },\n        nullish() {\n            return optional(nullable(this));\n        },\n        nonoptional(params) {\n            return nonoptional(this, params);\n        },\n        array() {\n            return array(this);\n        },\n        or(arg) {\n            return union([this, arg]);\n        },\n        and(arg) {\n            return intersection(this, arg);\n        },\n        transform(tx) {\n            return pipe(this, transform(tx));\n        },\n        default(d) {\n            return _default(this, d);\n        },\n        prefault(d) {\n            return prefault(this, d);\n        },\n        catch(params) {\n            return _catch(this, params);\n        },\n        pipe(target) {\n            return pipe(this, target);\n        },\n        readonly() {\n            return readonly(this);\n        },\n        describe(description) {\n            const cl = this.clone();\n            core.globalRegistry.add(cl, { description });\n            return cl;\n        },\n        meta(...args) {\n            // overloaded: meta() returns the registered metadata, meta(data)\n            // returns a clone with `data` registered. The mapped type picks\n            // up the second overload, so we accept variadic any-args and\n            // return `any` to satisfy both at runtime.\n            if (args.length === 0)\n                return core.globalRegistry.get(this);\n            const cl = this.clone();\n            core.globalRegistry.add(cl, args[0]);\n            return cl;\n        },\n        isOptional() {\n            return this.safeParse(undefined).success;\n        },\n        isNullable() {\n            return this.safeParse(null).success;\n        },\n        apply(fn) {\n            return fn(this);\n        },\n    });\n    Object.defineProperty(inst, \"description\", {\n        get() {\n            return core.globalRegistry.get(inst)?.description;\n        },\n        configurable: true,\n    });\n    return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n    const bag = inst._zod.bag;\n    inst.format = bag.format ?? null;\n    inst.minLength = bag.minimum ?? null;\n    inst.maxLength = bag.maximum ?? null;\n    _installLazyMethods(inst, \"_ZodString\", {\n        regex(...args) {\n            return this.check(checks.regex(...args));\n        },\n        includes(...args) {\n            return this.check(checks.includes(...args));\n        },\n        startsWith(...args) {\n            return this.check(checks.startsWith(...args));\n        },\n        endsWith(...args) {\n            return this.check(checks.endsWith(...args));\n        },\n        min(...args) {\n            return this.check(checks.minLength(...args));\n        },\n        max(...args) {\n            return this.check(checks.maxLength(...args));\n        },\n        length(...args) {\n            return this.check(checks.length(...args));\n        },\n        nonempty(...args) {\n            return this.check(checks.minLength(1, ...args));\n        },\n        lowercase(params) {\n            return this.check(checks.lowercase(params));\n        },\n        uppercase(params) {\n            return this.check(checks.uppercase(params));\n        },\n        trim() {\n            return this.check(checks.trim());\n        },\n        normalize(...args) {\n            return this.check(checks.normalize(...args));\n        },\n        toLowerCase() {\n            return this.check(checks.toLowerCase());\n        },\n        toUpperCase() {\n            return this.check(checks.toUpperCase());\n        },\n        slugify() {\n            return this.check(checks.slugify());\n        },\n    });\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    _ZodString.init(inst, def);\n    inst.email = (params) => inst.check(core._email(ZodEmail, params));\n    inst.url = (params) => inst.check(core._url(ZodURL, params));\n    inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n    inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n    inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n    inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n    inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n    inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n    inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n    inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n    inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n    inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n    inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n    inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n    inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n    inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n    inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n    inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n    inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n    // iso\n    inst.datetime = (params) => inst.check(iso.datetime(params));\n    inst.date = (params) => inst.check(iso.date(params));\n    inst.time = (params) => inst.check(iso.time(params));\n    inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n    return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n    core.$ZodStringFormat.init(inst, def);\n    _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmail.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n    return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodGUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n    return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodUUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n    return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n    return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n    return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n    return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodURL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n    return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n    return core._url(ZodURL, {\n        protocol: core.regexes.httpProtocol,\n        hostname: core.regexes.domain,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmoji.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n    return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodNanoID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n    return core._nanoid(ZodNanoID, params);\n}\n/**\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link ZodCUID2} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\n/**\n * Validates a CUID v1 string.\n *\n * @deprecated CUID v1 is deprecated by its authors due to information leakage\n * (timestamps embedded in the id). Use {@link cuid2 | `z.cuid2()`} instead.\n * See https://github.com/paralleldrive/cuid.\n */\nexport function cuid(params) {\n    return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID2.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n    return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodULID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n    return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodXID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n    return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodKSUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n    return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n    return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodMAC.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n    return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n    return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n    core.$ZodCIDRv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n    return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n    core.$ZodCIDRv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n    return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n    return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64URL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n    return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodE164.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n    return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodJWT.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n    return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCustomStringFormat.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n    return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n    const enc = params?.enc ?? \"hex\";\n    const format = `${alg}_${enc}`;\n    const regex = core.regexes[format];\n    if (!regex)\n        throw new Error(`Unrecognized hash format: ${format}`);\n    return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n    core.$ZodNumber.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n    _installLazyMethods(inst, \"ZodNumber\", {\n        gt(value, params) {\n            return this.check(checks.gt(value, params));\n        },\n        gte(value, params) {\n            return this.check(checks.gte(value, params));\n        },\n        min(value, params) {\n            return this.check(checks.gte(value, params));\n        },\n        lt(value, params) {\n            return this.check(checks.lt(value, params));\n        },\n        lte(value, params) {\n            return this.check(checks.lte(value, params));\n        },\n        max(value, params) {\n            return this.check(checks.lte(value, params));\n        },\n        int(params) {\n            return this.check(int(params));\n        },\n        safe(params) {\n            return this.check(int(params));\n        },\n        positive(params) {\n            return this.check(checks.gt(0, params));\n        },\n        nonnegative(params) {\n            return this.check(checks.gte(0, params));\n        },\n        negative(params) {\n            return this.check(checks.lt(0, params));\n        },\n        nonpositive(params) {\n            return this.check(checks.lte(0, params));\n        },\n        multipleOf(value, params) {\n            return this.check(checks.multipleOf(value, params));\n        },\n        step(value, params) {\n            return this.check(checks.multipleOf(value, params));\n        },\n        finite() {\n            return this;\n        },\n    });\n    const bag = inst._zod.bag;\n    inst.minValue =\n        Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n    inst.maxValue =\n        Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n    inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n    inst.isFinite = true;\n    inst.format = bag.format ?? null;\n});\nexport function number(params) {\n    return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n    core.$ZodNumberFormat.init(inst, def);\n    ZodNumber.init(inst, def);\n});\nexport function int(params) {\n    return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n    return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n    return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n    return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n    return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n    core.$ZodBoolean.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n    return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n    core.$ZodBigInt.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.gt = (value, params) => inst.check(checks.gt(value, params));\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.lt = (value, params) => inst.check(checks.lt(value, params));\n    inst.lte = (value, params) => inst.check(checks.lte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n    inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n    inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n    inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n    inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n    const bag = inst._zod.bag;\n    inst.minValue = bag.minimum ?? null;\n    inst.maxValue = bag.maximum ?? null;\n    inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n    return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n    core.$ZodBigIntFormat.init(inst, def);\n    ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n    return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n    return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n    core.$ZodSymbol.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n    return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n    core.$ZodUndefined.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n    return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n    core.$ZodNull.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n    return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n    core.$ZodAny.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n    return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n    core.$ZodUnknown.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n    return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n    core.$ZodNever.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n    return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n    core.$ZodVoid.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n    return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n    core.$ZodDate.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    const c = inst._zod.bag;\n    inst.minDate = c.minimum ? new Date(c.minimum) : null;\n    inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n    return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n    core.$ZodArray.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n    inst.element = def.element;\n    _installLazyMethods(inst, \"ZodArray\", {\n        min(n, params) {\n            return this.check(checks.minLength(n, params));\n        },\n        nonempty(params) {\n            return this.check(checks.minLength(1, params));\n        },\n        max(n, params) {\n            return this.check(checks.maxLength(n, params));\n        },\n        length(n, params) {\n            return this.check(checks.length(n, params));\n        },\n        unwrap() {\n            return this.element;\n        },\n    });\n});\nexport function array(element, params) {\n    return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n    const shape = schema._zod.def.shape;\n    return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n    core.$ZodObjectJIT.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n    util.defineLazy(inst, \"shape\", () => {\n        return def.shape;\n    });\n    _installLazyMethods(inst, \"ZodObject\", {\n        keyof() {\n            return _enum(Object.keys(this._zod.def.shape));\n        },\n        catchall(catchall) {\n            return this.clone({ ...this._zod.def, catchall: catchall });\n        },\n        passthrough() {\n            return this.clone({ ...this._zod.def, catchall: unknown() });\n        },\n        loose() {\n            return this.clone({ ...this._zod.def, catchall: unknown() });\n        },\n        strict() {\n            return this.clone({ ...this._zod.def, catchall: never() });\n        },\n        strip() {\n            return this.clone({ ...this._zod.def, catchall: undefined });\n        },\n        extend(incoming) {\n            return util.extend(this, incoming);\n        },\n        safeExtend(incoming) {\n            return util.safeExtend(this, incoming);\n        },\n        merge(other) {\n            return util.merge(this, other);\n        },\n        pick(mask) {\n            return util.pick(this, mask);\n        },\n        omit(mask) {\n            return util.omit(this, mask);\n        },\n        partial(...args) {\n            return util.partial(ZodOptional, this, args[0]);\n        },\n        required(...args) {\n            return util.required(ZodNonOptional, this, args[0]);\n        },\n    });\n});\nexport function object(shape, params) {\n    const def = {\n        type: \"object\",\n        shape: shape ?? {},\n        ...util.normalizeParams(params),\n    };\n    return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: never(),\n        ...util.normalizeParams(params),\n    });\n}\n// looseObject\nexport function looseObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: unknown(),\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n    core.$ZodUnion.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\nexport function union(options, params) {\n    return new ZodUnion({\n        type: \"union\",\n        options: options,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodXor.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n    return new ZodXor({\n        type: \"union\",\n        options: options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n    // const [options, params] = args;\n    return new ZodDiscriminatedUnion({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n    core.$ZodIntersection.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n    return new ZodIntersection({\n        type: \"intersection\",\n        left: left,\n        right: right,\n    });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n    core.$ZodTuple.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n    inst.rest = (rest) => inst.clone({\n        ...inst._zod.def,\n        rest: rest,\n    });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof core.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new ZodTuple({\n        type: \"tuple\",\n        items: items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n    core.$ZodRecord.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n    // v3-compat: z.record(valueType, params?) — defaults keyType to z.string()\n    if (!valueType || !valueType._zod) {\n        return new ZodRecord({\n            type: \"record\",\n            keyType: string(),\n            valueType: keyType,\n            ...util.normalizeParams(valueType),\n        });\n    }\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n    const k = core.clone(keyType);\n    k._zod.values = undefined;\n    return new ZodRecord({\n        type: \"record\",\n        keyType: k,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function looseRecord(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        mode: \"loose\",\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n    core.$ZodMap.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n    return new ZodMap({\n        type: \"map\",\n        keyType: keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n    core.$ZodSet.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n    return new ZodSet({\n        type: \"set\",\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n    core.$ZodEnum.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n    inst.enum = def.entries;\n    inst.options = Object.values(def.entries);\n    const keys = new Set(Object.keys(def.entries));\n    inst.extract = (values, params) => {\n        const newEntries = {};\n        for (const value of values) {\n            if (keys.has(value)) {\n                newEntries[value] = def.entries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n    inst.exclude = (values, params) => {\n        const newEntries = { ...def.entries };\n        for (const value of values) {\n            if (keys.has(value)) {\n                delete newEntries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n});\nfunction _enum(values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n    core.$ZodLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n    inst.values = new Set(def.values);\n    Object.defineProperty(inst, \"value\", {\n        get() {\n            if (def.values.length > 1) {\n                throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n            }\n            return def.values[0];\n        },\n    });\n});\nexport function literal(value, params) {\n    return new ZodLiteral({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n    core.$ZodFile.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n    inst.min = (size, params) => inst.check(core._minSize(size, params));\n    inst.max = (size, params) => inst.check(core._maxSize(size, params));\n    inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n    return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n    core.$ZodTransform.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n    inst._zod.parse = (payload, _ctx) => {\n        if (_ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = inst);\n                // _issue.continue ??= true;\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        const output = def.transform(payload.value, payload);\n        if (output instanceof Promise) {\n            return output.then((output) => {\n                payload.value = output;\n                payload.fallback = true;\n                return payload;\n            });\n        }\n        payload.value = output;\n        payload.fallback = true;\n        return payload;\n    };\n});\nexport function transform(fn) {\n    return new ZodTransform({\n        type: \"transform\",\n        transform: fn,\n    });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n    core.$ZodOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n    return new ZodOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n    core.$ZodExactOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n    return new ZodExactOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n    core.$ZodNullable.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n    return new ZodNullable({\n        type: \"nullable\",\n        innerType: innerType,\n    });\n}\n// nullish\nexport function nullish(innerType) {\n    return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n    core.$ZodDefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n    return new ZodDefault({\n        type: \"default\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n    core.$ZodPrefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n    return new ZodPrefault({\n        type: \"prefault\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n    core.$ZodNonOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n    return new ZodNonOptional({\n        type: \"nonoptional\",\n        innerType: innerType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n    core.$ZodSuccess.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n    return new ZodSuccess({\n        type: \"success\",\n        innerType: innerType,\n    });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n    core.$ZodCatch.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n    return new ZodCatch({\n        type: \"catch\",\n        innerType: innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n    core.$ZodNaN.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n    return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n    core.$ZodPipe.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n    inst.in = def.in;\n    inst.out = def.out;\n});\nexport function pipe(in_, out) {\n    return new ZodPipe({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        // ...util.normalizeParams(params),\n    });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n    ZodPipe.init(inst, def);\n    core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n    return new ZodCodec({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        transform: params.decode,\n        reverseTransform: params.encode,\n    });\n}\nexport function invertCodec(codec) {\n    const def = codec._zod.def;\n    return new ZodCodec({\n        type: \"pipe\",\n        in: def.out,\n        out: def.in,\n        transform: def.reverseTransform,\n        reverseTransform: def.transform,\n    });\n}\nexport const ZodPreprocess = /*@__PURE__*/ core.$constructor(\"ZodPreprocess\", (inst, def) => {\n    ZodPipe.init(inst, def);\n    core.$ZodPreprocess.init(inst, def);\n});\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n    core.$ZodReadonly.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n    return new ZodReadonly({\n        type: \"readonly\",\n        innerType: innerType,\n    });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n    core.$ZodTemplateLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n    return new ZodTemplateLiteral({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n    core.$ZodLazy.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n    return new ZodLazy({\n        type: \"lazy\",\n        getter: getter,\n    });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n    core.$ZodPromise.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n    return new ZodPromise({\n        type: \"promise\",\n        innerType: innerType,\n    });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n    core.$ZodFunction.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n    return new ZodFunction({\n        type: \"function\",\n        input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n        output: params?.output ?? unknown(),\n    });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n    core.$ZodCustom.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n    const ch = new core.$ZodCheck({\n        check: \"custom\",\n        // ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\nexport function custom(fn, _params) {\n    return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n    return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn, params) {\n    return core._superRefine(fn, params);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n    const inst = new ZodCustom({\n        type: \"custom\",\n        check: \"custom\",\n        fn: (data) => data instanceof cls,\n        abort: true,\n        ...util.normalizeParams(params),\n    });\n    inst._zod.bag.Class = cls;\n    // Override check to emit invalid_type instead of custom\n    inst._zod.check = (payload) => {\n        if (!(payload.value instanceof cls)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: cls.name,\n                input: payload.value,\n                inst,\n                path: [...(inst._zod.def.path ?? [])],\n            });\n        }\n    };\n    return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n    Codec: ZodCodec,\n    Boolean: ZodBoolean,\n    String: ZodString,\n}, ...args);\nexport function json(params) {\n    const jsonSchema = lazy(() => {\n        return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n    });\n    return jsonSchema;\n}\n// preprocess\nexport function preprocess(fn, schema) {\n    return new ZodPreprocess({\n        type: \"pipe\",\n        in: transform(fn),\n        out: schema,\n    });\n}\n","export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n    core.$ZodISODateTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n    return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n    core.$ZodISODate.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n    return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n    core.$ZodISOTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n    return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n    core.$ZodISODuration.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n    return core._isoDuration(ZodISODuration, params);\n}\n","import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n    $ZodError.init(inst, issues);\n    inst.name = \"ZodError\";\n    Object.defineProperties(inst, {\n        format: {\n            value: (mapper) => core.formatError(inst, mapper),\n            // enumerable: false,\n        },\n        flatten: {\n            value: (mapper) => core.flattenError(inst, mapper),\n            // enumerable: false,\n        },\n        addIssue: {\n            value: (issue) => {\n                inst.issues.push(issue);\n                inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n            },\n            // enumerable: false,\n        },\n        addIssues: {\n            value: (issues) => {\n                inst.issues.push(...issues);\n                inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n            },\n            // enumerable: false,\n        },\n        isEmpty: {\n            get() {\n                return inst.issues.length === 0;\n            },\n            // enumerable: false,\n        },\n    });\n    // Object.defineProperty(inst, \"isEmpty\", {\n    //   get() {\n    //     return inst.issues.length === 0;\n    //   },\n    // });\n};\nexport const ZodError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = /*@__PURE__*/ core.$constructor(\"ZodError\", initializer, {\n    Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n","import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n","// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n    invalid_type: \"invalid_type\",\n    too_big: \"too_big\",\n    too_small: \"too_small\",\n    invalid_format: \"invalid_format\",\n    not_multiple_of: \"not_multiple_of\",\n    unrecognized_keys: \"unrecognized_keys\",\n    invalid_union: \"invalid_union\",\n    invalid_key: \"invalid_key\",\n    invalid_element: \"invalid_element\",\n    invalid_value: \"invalid_value\",\n    custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n    core.config({\n        customError: map,\n    });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n    return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n","import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n    ..._schemas,\n    ..._checks,\n    iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = /*@__PURE__*/ new Set([\n    // Schema identification\n    \"$schema\",\n    \"$ref\",\n    \"$defs\",\n    \"definitions\",\n    // Core schema keywords\n    \"$id\",\n    \"id\",\n    \"$comment\",\n    \"$anchor\",\n    \"$vocabulary\",\n    \"$dynamicRef\",\n    \"$dynamicAnchor\",\n    // Type\n    \"type\",\n    \"enum\",\n    \"const\",\n    // Composition\n    \"anyOf\",\n    \"oneOf\",\n    \"allOf\",\n    \"not\",\n    // Object\n    \"properties\",\n    \"required\",\n    \"additionalProperties\",\n    \"patternProperties\",\n    \"propertyNames\",\n    \"minProperties\",\n    \"maxProperties\",\n    // Array\n    \"items\",\n    \"prefixItems\",\n    \"additionalItems\",\n    \"minItems\",\n    \"maxItems\",\n    \"uniqueItems\",\n    \"contains\",\n    \"minContains\",\n    \"maxContains\",\n    // String\n    \"minLength\",\n    \"maxLength\",\n    \"pattern\",\n    \"format\",\n    // Number\n    \"minimum\",\n    \"maximum\",\n    \"exclusiveMinimum\",\n    \"exclusiveMaximum\",\n    \"multipleOf\",\n    // Already handled metadata\n    \"description\",\n    \"default\",\n    // Content\n    \"contentEncoding\",\n    \"contentMediaType\",\n    \"contentSchema\",\n    // Unsupported (error-throwing)\n    \"unevaluatedItems\",\n    \"unevaluatedProperties\",\n    \"if\",\n    \"then\",\n    \"else\",\n    \"dependentSchemas\",\n    \"dependentRequired\",\n    // OpenAPI\n    \"nullable\",\n    \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n    const $schema = schema.$schema;\n    if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n        return \"draft-2020-12\";\n    }\n    if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n        return \"draft-7\";\n    }\n    if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n        return \"draft-4\";\n    }\n    // Use defaultTarget if provided, otherwise default to draft-2020-12\n    return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n    if (!ref.startsWith(\"#\")) {\n        throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n    }\n    const path = ref.slice(1).split(\"/\").filter(Boolean);\n    // Handle root reference \"#\"\n    if (path.length === 0) {\n        return ctx.rootSchema;\n    }\n    const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n    if (path[0] === defsKey) {\n        const key = path[1];\n        if (!key || !ctx.defs[key]) {\n            throw new Error(`Reference not found: ${ref}`);\n        }\n        return ctx.defs[key];\n    }\n    throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n    // Handle unsupported features\n    if (schema.not !== undefined) {\n        // Special case: { not: {} } represents never\n        if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n            return z.never();\n        }\n        throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n    }\n    if (schema.unevaluatedItems !== undefined) {\n        throw new Error(\"unevaluatedItems is not supported\");\n    }\n    if (schema.unevaluatedProperties !== undefined) {\n        throw new Error(\"unevaluatedProperties is not supported\");\n    }\n    if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n        throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n    }\n    if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n        throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n    }\n    // Handle $ref\n    if (schema.$ref) {\n        const refPath = schema.$ref;\n        if (ctx.refs.has(refPath)) {\n            return ctx.refs.get(refPath);\n        }\n        if (ctx.processing.has(refPath)) {\n            // Circular reference - use lazy\n            return z.lazy(() => {\n                if (!ctx.refs.has(refPath)) {\n                    throw new Error(`Circular reference not resolved: ${refPath}`);\n                }\n                return ctx.refs.get(refPath);\n            });\n        }\n        ctx.processing.add(refPath);\n        const resolved = resolveRef(refPath, ctx);\n        const zodSchema = convertSchema(resolved, ctx);\n        ctx.refs.set(refPath, zodSchema);\n        ctx.processing.delete(refPath);\n        return zodSchema;\n    }\n    // Handle enum\n    if (schema.enum !== undefined) {\n        const enumValues = schema.enum;\n        // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n        if (ctx.version === \"openapi-3.0\" &&\n            schema.nullable === true &&\n            enumValues.length === 1 &&\n            enumValues[0] === null) {\n            return z.null();\n        }\n        if (enumValues.length === 0) {\n            return z.never();\n        }\n        if (enumValues.length === 1) {\n            return z.literal(enumValues[0]);\n        }\n        // Check if all values are strings\n        if (enumValues.every((v) => typeof v === \"string\")) {\n            return z.enum(enumValues);\n        }\n        // Mixed types - use union of literals\n        const literalSchemas = enumValues.map((v) => z.literal(v));\n        if (literalSchemas.length < 2) {\n            return literalSchemas[0];\n        }\n        return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n    }\n    // Handle const\n    if (schema.const !== undefined) {\n        return z.literal(schema.const);\n    }\n    // Handle type\n    const type = schema.type;\n    if (Array.isArray(type)) {\n        // Expand type array into anyOf union\n        const typeSchemas = type.map((t) => {\n            const typeSchema = { ...schema, type: t };\n            return convertBaseSchema(typeSchema, ctx);\n        });\n        if (typeSchemas.length === 0) {\n            return z.never();\n        }\n        if (typeSchemas.length === 1) {\n            return typeSchemas[0];\n        }\n        return z.union(typeSchemas);\n    }\n    if (!type) {\n        // No type specified - empty schema (any)\n        return z.any();\n    }\n    let zodSchema;\n    switch (type) {\n        case \"string\": {\n            let stringSchema = z.string();\n            // Apply format using .check() with Zod format functions\n            if (schema.format) {\n                const format = schema.format;\n                // Map common formats to Zod check functions\n                if (format === \"email\") {\n                    stringSchema = stringSchema.check(z.email());\n                }\n                else if (format === \"uri\" || format === \"uri-reference\") {\n                    stringSchema = stringSchema.check(z.url());\n                }\n                else if (format === \"uuid\" || format === \"guid\") {\n                    stringSchema = stringSchema.check(z.uuid());\n                }\n                else if (format === \"date-time\") {\n                    stringSchema = stringSchema.check(z.iso.datetime());\n                }\n                else if (format === \"date\") {\n                    stringSchema = stringSchema.check(z.iso.date());\n                }\n                else if (format === \"time\") {\n                    stringSchema = stringSchema.check(z.iso.time());\n                }\n                else if (format === \"duration\") {\n                    stringSchema = stringSchema.check(z.iso.duration());\n                }\n                else if (format === \"ipv4\") {\n                    stringSchema = stringSchema.check(z.ipv4());\n                }\n                else if (format === \"ipv6\") {\n                    stringSchema = stringSchema.check(z.ipv6());\n                }\n                else if (format === \"mac\") {\n                    stringSchema = stringSchema.check(z.mac());\n                }\n                else if (format === \"cidr\") {\n                    stringSchema = stringSchema.check(z.cidrv4());\n                }\n                else if (format === \"cidr-v6\") {\n                    stringSchema = stringSchema.check(z.cidrv6());\n                }\n                else if (format === \"base64\") {\n                    stringSchema = stringSchema.check(z.base64());\n                }\n                else if (format === \"base64url\") {\n                    stringSchema = stringSchema.check(z.base64url());\n                }\n                else if (format === \"e164\") {\n                    stringSchema = stringSchema.check(z.e164());\n                }\n                else if (format === \"jwt\") {\n                    stringSchema = stringSchema.check(z.jwt());\n                }\n                else if (format === \"emoji\") {\n                    stringSchema = stringSchema.check(z.emoji());\n                }\n                else if (format === \"nanoid\") {\n                    stringSchema = stringSchema.check(z.nanoid());\n                }\n                else if (format === \"cuid\") {\n                    stringSchema = stringSchema.check(z.cuid());\n                }\n                else if (format === \"cuid2\") {\n                    stringSchema = stringSchema.check(z.cuid2());\n                }\n                else if (format === \"ulid\") {\n                    stringSchema = stringSchema.check(z.ulid());\n                }\n                else if (format === \"xid\") {\n                    stringSchema = stringSchema.check(z.xid());\n                }\n                else if (format === \"ksuid\") {\n                    stringSchema = stringSchema.check(z.ksuid());\n                }\n                // Note: json-string format is not currently supported by Zod\n                // Custom formats are ignored - keep as plain string\n            }\n            // Apply constraints\n            if (typeof schema.minLength === \"number\") {\n                stringSchema = stringSchema.min(schema.minLength);\n            }\n            if (typeof schema.maxLength === \"number\") {\n                stringSchema = stringSchema.max(schema.maxLength);\n            }\n            if (schema.pattern) {\n                // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n                stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n            }\n            zodSchema = stringSchema;\n            break;\n        }\n        case \"number\":\n        case \"integer\": {\n            let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n            // Apply constraints\n            if (typeof schema.minimum === \"number\") {\n                numberSchema = numberSchema.min(schema.minimum);\n            }\n            if (typeof schema.maximum === \"number\") {\n                numberSchema = numberSchema.max(schema.maximum);\n            }\n            if (typeof schema.exclusiveMinimum === \"number\") {\n                numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n            }\n            else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n                numberSchema = numberSchema.gt(schema.minimum);\n            }\n            if (typeof schema.exclusiveMaximum === \"number\") {\n                numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n            }\n            else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n                numberSchema = numberSchema.lt(schema.maximum);\n            }\n            if (typeof schema.multipleOf === \"number\") {\n                numberSchema = numberSchema.multipleOf(schema.multipleOf);\n            }\n            zodSchema = numberSchema;\n            break;\n        }\n        case \"boolean\": {\n            zodSchema = z.boolean();\n            break;\n        }\n        case \"null\": {\n            zodSchema = z.null();\n            break;\n        }\n        case \"object\": {\n            const shape = {};\n            const properties = schema.properties || {};\n            const requiredSet = new Set(schema.required || []);\n            // Convert properties - mark optional ones\n            for (const [key, propSchema] of Object.entries(properties)) {\n                const propZodSchema = convertSchema(propSchema, ctx);\n                // If not in required array, make it optional\n                shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n            }\n            // Handle propertyNames\n            if (schema.propertyNames) {\n                const keySchema = convertSchema(schema.propertyNames, ctx);\n                const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n                    ? convertSchema(schema.additionalProperties, ctx)\n                    : z.any();\n                // Case A: No properties (pure record)\n                if (Object.keys(shape).length === 0) {\n                    zodSchema = z.record(keySchema, valueSchema);\n                    break;\n                }\n                // Case B: With properties (intersection of object and looseRecord)\n                const objectSchema = z.object(shape).passthrough();\n                const recordSchema = z.looseRecord(keySchema, valueSchema);\n                zodSchema = z.intersection(objectSchema, recordSchema);\n                break;\n            }\n            // Handle patternProperties\n            if (schema.patternProperties) {\n                // patternProperties: keys matching pattern must satisfy corresponding schema\n                // Use loose records so non-matching keys pass through\n                const patternProps = schema.patternProperties;\n                const patternKeys = Object.keys(patternProps);\n                const looseRecords = [];\n                for (const pattern of patternKeys) {\n                    const patternValue = convertSchema(patternProps[pattern], ctx);\n                    const keySchema = z.string().regex(new RegExp(pattern));\n                    looseRecords.push(z.looseRecord(keySchema, patternValue));\n                }\n                // Build intersection: object schema + all pattern property records\n                const schemasToIntersect = [];\n                if (Object.keys(shape).length > 0) {\n                    // Use passthrough so patternProperties can validate additional keys\n                    schemasToIntersect.push(z.object(shape).passthrough());\n                }\n                schemasToIntersect.push(...looseRecords);\n                if (schemasToIntersect.length === 0) {\n                    zodSchema = z.object({}).passthrough();\n                }\n                else if (schemasToIntersect.length === 1) {\n                    zodSchema = schemasToIntersect[0];\n                }\n                else {\n                    // Chain intersections: (A & B) & C & D ...\n                    let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n                    for (let i = 2; i < schemasToIntersect.length; i++) {\n                        result = z.intersection(result, schemasToIntersect[i]);\n                    }\n                    zodSchema = result;\n                }\n                break;\n            }\n            // Handle additionalProperties\n            // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n            // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n            const objectSchema = z.object(shape);\n            if (schema.additionalProperties === false) {\n                // Strict mode - no extra properties allowed\n                zodSchema = objectSchema.strict();\n            }\n            else if (typeof schema.additionalProperties === \"object\") {\n                // Extra properties must match the specified schema\n                zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n            }\n            else {\n                // additionalProperties is true or undefined - allow any extra properties (passthrough)\n                zodSchema = objectSchema.passthrough();\n            }\n            break;\n        }\n        case \"array\": {\n            // TODO: uniqueItems is not supported\n            // TODO: contains/minContains/maxContains are not supported\n            // Check if this is a tuple (prefixItems or items as array)\n            const prefixItems = schema.prefixItems;\n            const items = schema.items;\n            if (prefixItems && Array.isArray(prefixItems)) {\n                // Tuple with prefixItems (draft-2020-12)\n                const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n                const rest = items && typeof items === \"object\" && !Array.isArray(items)\n                    ? convertSchema(items, ctx)\n                    : undefined;\n                if (rest) {\n                    zodSchema = z.tuple(tupleItems).rest(rest);\n                }\n                else {\n                    zodSchema = z.tuple(tupleItems);\n                }\n                // Apply minItems/maxItems constraints to tuples\n                if (typeof schema.minItems === \"number\") {\n                    zodSchema = zodSchema.check(z.minLength(schema.minItems));\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n                }\n            }\n            else if (Array.isArray(items)) {\n                // Tuple with items array (draft-7)\n                const tupleItems = items.map((item) => convertSchema(item, ctx));\n                const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n                    ? convertSchema(schema.additionalItems, ctx)\n                    : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n                if (rest) {\n                    zodSchema = z.tuple(tupleItems).rest(rest);\n                }\n                else {\n                    zodSchema = z.tuple(tupleItems);\n                }\n                // Apply minItems/maxItems constraints to tuples\n                if (typeof schema.minItems === \"number\") {\n                    zodSchema = zodSchema.check(z.minLength(schema.minItems));\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n                }\n            }\n            else if (items !== undefined) {\n                // Regular array\n                const element = convertSchema(items, ctx);\n                let arraySchema = z.array(element);\n                // Apply constraints\n                if (typeof schema.minItems === \"number\") {\n                    arraySchema = arraySchema.min(schema.minItems);\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    arraySchema = arraySchema.max(schema.maxItems);\n                }\n                zodSchema = arraySchema;\n            }\n            else {\n                // No items specified - array of any\n                zodSchema = z.array(z.any());\n            }\n            break;\n        }\n        default:\n            throw new Error(`Unsupported type: ${type}`);\n    }\n    return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n    if (typeof schema === \"boolean\") {\n        return schema ? z.any() : z.never();\n    }\n    // Convert base schema first (ignoring composition keywords)\n    let baseSchema = convertBaseSchema(schema, ctx);\n    const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n    // Process composition keywords LAST (they can appear together)\n    // Handle anyOf - wrap base schema with union\n    if (schema.anyOf && Array.isArray(schema.anyOf)) {\n        const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n        const anyOfUnion = z.union(options);\n        baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n    }\n    // Handle oneOf - exclusive union (exactly one must match)\n    if (schema.oneOf && Array.isArray(schema.oneOf)) {\n        const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n        const oneOfUnion = z.xor(options);\n        baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n    }\n    // Handle allOf - wrap base schema with intersection\n    if (schema.allOf && Array.isArray(schema.allOf)) {\n        if (schema.allOf.length === 0) {\n            baseSchema = hasExplicitType ? baseSchema : z.any();\n        }\n        else {\n            let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n            const startIdx = hasExplicitType ? 0 : 1;\n            for (let i = startIdx; i < schema.allOf.length; i++) {\n                result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n            }\n            baseSchema = result;\n        }\n    }\n    // Handle nullable (OpenAPI 3.0)\n    if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n        baseSchema = z.nullable(baseSchema);\n    }\n    // Handle readOnly\n    if (schema.readOnly === true) {\n        baseSchema = z.readonly(baseSchema);\n    }\n    // Apply `default` so it wraps the fully-composed schema. This ensures\n    // `parse(undefined) -> default` works regardless of which branch of\n    // `convertBaseSchema` produced the inner schema (enum/const/not/typed/etc.).\n    if (schema.default !== undefined) {\n        baseSchema = baseSchema.default(schema.default);\n    }\n    // Collect non-description annotation metadata into the user-supplied\n    // registry. Description is handled separately below via `.describe()` to\n    // preserve the contract that `schema.description` reads from globalRegistry.\n    const extraMeta = {};\n    const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n    for (const key of coreMetadataKeys) {\n        if (key in schema) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n    for (const key of contentMetadataKeys) {\n        if (key in schema) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    for (const key of Object.keys(schema)) {\n        if (!RECOGNIZED_KEYS.has(key)) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    if (Object.keys(extraMeta).length > 0) {\n        ctx.registry.add(baseSchema, extraMeta);\n    }\n    // Apply description last. `.describe()` clones the schema and sets\n    // `_zod.parent` on the clone, so registry lookups on the returned reference\n    // still resolve `extraMeta` via parent inheritance.\n    if (schema.description) {\n        baseSchema = baseSchema.describe(schema.description);\n    }\n    return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n    // Handle boolean schemas\n    if (typeof schema === \"boolean\") {\n        return schema ? z.any() : z.never();\n    }\n    // Normalize input via a JSON round-trip. This guarantees the converter\n    // walks a plain, finite, JSON-valid object graph: cyclic inputs fail here,\n    // getter/Proxy-based properties are materialized into static values, and\n    // class instances collapse to plain objects.\n    let normalized;\n    try {\n        normalized = JSON.parse(JSON.stringify(schema));\n    }\n    catch {\n        throw new Error(\"fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas\");\n    }\n    const version = detectVersion(normalized, params?.defaultTarget);\n    const defs = (normalized.$defs || normalized.definitions || {});\n    const ctx = {\n        version,\n        defs,\n        refs: new Map(),\n        processing: new Set(),\n        rootSchema: normalized,\n        registry: params?.registry ?? globalRegistry,\n    };\n    return convertSchema(normalized, ctx);\n}\n","import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n    return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n    return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n    return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n    return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n    return core._coercedDate(schemas.ZodDate, params);\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport { z } from 'zod';\nimport { PACK_FILE_NAME, type SkillsTier } from './skills-layout.js';\n\nconst packMetadataSchema = z.object({\n  schemaVersion: z.literal('1').default('1'),\n  name: z.string().min(1),\n  version: z.string().min(1),\n  description: z.string().min(1),\n  skills: z.array(z.string().min(1)).default([]),\n});\n\nexport type PackMetadata = z.infer<typeof packMetadataSchema>;\n\nexport type PackMetadataMismatch = {\n  readonly metadataOnlySkills: string[];\n  readonly filesystemOnlySkills: string[];\n};\n\nfunction normalizeNames(names: readonly string[]): string[] {\n  return [...new Set(names)].sort((left, right) => left.localeCompare(right));\n}\n\nexport async function readPackMetadata(\n  packRoot: string,\n  tier: Exclude<SkillsTier, 'default'>,\n): Promise<PackMetadata> {\n  const metadataPath = path.join(packRoot, PACK_FILE_NAME);\n  const packName = path.basename(packRoot);\n  const metadata = packMetadataSchema.parse(await fs.readJson(metadataPath));\n\n  if (metadata.name !== packName) {\n    throw new Error(`Invalid pack metadata at ${metadataPath}: name must match directory '${packName}'.`);\n  }\n  if (tier === 'user' && metadata.name.startsWith('default-')) {\n    throw new Error(`Invalid user pack metadata at ${metadataPath}: reserved 'default-' prefix.`);\n  }\n\n  return { ...metadata, skills: normalizeNames(metadata.skills) };\n}\n\nexport function diffPackMetadataSkills(\n  metadataSkills: readonly string[],\n  filesystemSkills: readonly string[],\n): PackMetadataMismatch {\n  const metadataSet = new Set(metadataSkills);\n  const filesystemSet = new Set(filesystemSkills);\n  return {\n    metadataOnlySkills: normalizeNames(metadataSkills.filter(name => !filesystemSet.has(name))),\n    filesystemOnlySkills: normalizeNames(filesystemSkills.filter(name => !metadataSet.has(name))),\n  };\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport { randomUUID } from 'node:crypto';\nimport type { DiscoveredPack, DiscoveredSkill } from './skill-discovery.js';\nimport { discoverDefaultSkills, discoverDirectSkills, discoverTierPacks } from './skill-discovery.js';\nimport { resolveSkillsRoot } from './skills-layout.js';\nimport { assertSafeRuntimeLinkName, writeSkillsState, type SkillsState } from './skills-state.js';\nimport type { SkillsRuntime } from './skills-layout.js';\n\nexport interface ReconcileRuntimeLinksOptions {\n  readonly projectRoot: string;\n  readonly state: SkillsState;\n  readonly runtime: SkillsRuntime;\n  readonly discoveredPacks: readonly DiscoveredPack[];\n  readonly globalDefaultRoot: string;\n  readonly globalOptionalRoot: string;\n}\n\nexport interface RuntimeLinksReconcileResult {\n  readonly runtime: SkillsRuntime;\n  readonly desiredLinks: Record<string, string>;\n  readonly removedLinks: string[];\n  readonly state: SkillsState;\n}\n\nfunction isInside(child: string, parent: string): boolean {\n  const relative = path.relative(path.resolve(parent), path.resolve(child));\n  return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));\n}\n\nfunction resolveRuntimeLinkPath(runtimeDirectory: string, name: string): string {\n  assertSafeRuntimeLinkName(name);\n  const linkPath = path.resolve(runtimeDirectory, name);\n  if (!isInside(linkPath, runtimeDirectory)) {\n    throw new Error(`Runtime skill link '${name}' resolves outside runtime directory ${runtimeDirectory}.`);\n  }\n  return linkPath;\n}\n\nfunction targetRelativePath(projectRoot: string, target: string): string {\n  return path.relative(projectRoot, target) || '.';\n}\n\nfunction getPackSkills(pack: DiscoveredPack, name: string): DiscoveredSkill[] {\n  return pack.name === name ? pack.skills : [];\n}\n\nfunction resolveDesiredSkills(options: ReconcileRuntimeLinksOptions, defaults: readonly DiscoveredSkill[]): DiscoveredSkill[] {\n  const enabledNames = options.state.enabledPacks[options.runtime];\n  const matchingPacks = options.discoveredPacks.filter((pack) => enabledNames.includes(pack.name));\n  const byName = new Map<string, DiscoveredPack>();\n  for (const pack of matchingPacks) {\n    const existing = byName.get(pack.name);\n    if (existing && path.resolve(existing.path) !== path.resolve(pack.path)) {\n      throw new Error(`Pack '${pack.name}' is present in more than one scope; remove same-name project/global packs before enabling it.`);\n    }\n    byName.set(pack.name, pack);\n  }\n\n  const globalOptionalPacks = matchingPacks.filter((pack) => path.resolve(path.dirname(pack.path)) === path.resolve(options.globalOptionalRoot));\n  for (const pack of matchingPacks) {\n    if (globalOptionalPacks.some((globalPack) => globalPack.name === pack.name && path.resolve(globalPack.path) !== path.resolve(pack.path))) {\n      throw new Error(`Pack '${pack.name}' collides between project scope and global optional scope.`);\n    }\n  }\n\n  const selected = matchingPacks.flatMap((pack) => getPackSkills(pack, pack.name));\n  const seen = new Map<string, string>();\n  for (const skill of [...defaults, ...selected]) {\n    assertSafeRuntimeLinkName(skill.runtimeName);\n    const first = seen.get(skill.runtimeName);\n    if (first && first !== skill.path) {\n      const against = defaults.some((entry) => entry.runtimeName === skill.runtimeName) ? 'global default' : 'another enabled pack';\n      throw new Error(`Cannot enable skill '${skill.runtimeName}' for ${options.runtime}: name collides with ${against} (${first} vs ${skill.path}).`);\n    }\n    seen.set(skill.runtimeName, skill.path);\n  }\n  return selected;\n}\n\nasync function ensureRuntimeDirectory(directory: string): Promise<void> {\n  const existing = await fs.lstat(directory).catch(() => null);\n  if (existing?.isSymbolicLink()) {\n    throw new Error(`Refusing to replace user-owned runtime directory ${directory}.`);\n  }\n  if (existing && !existing.isDirectory()) {\n    throw new Error(`Refusing to replace non-directory runtime path ${directory}.`);\n  }\n  await fs.ensureDir(directory);\n}\n\nasync function atomicSymlink(target: string, linkPath: string): Promise<void> {\n  const temporaryPath = `${linkPath}.tmp-${randomUUID()}`;\n  await fs.symlink(target, temporaryPath);\n  try {\n    await fs.rename(temporaryPath, linkPath);\n  } finally {\n    await fs.remove(temporaryPath).catch(() => undefined);\n  }\n}\n\nasync function discoverManagedLinks(\n  projectRoot: string,\n  directory: string,\n  expected: Readonly<Record<string, string>>,\n  roots: readonly string[],\n): Promise<Record<string, string>> {\n  const result: Record<string, string> = {};\n  const entries = await fs.readdir(directory, { withFileTypes: true }).catch(() => [] as fs.Dirent[]);\n  for (const entry of entries) {\n    const linkPath = resolveRuntimeLinkPath(directory, entry.name);\n    const stat = await fs.lstat(linkPath).catch(() => null);\n    if (!stat?.isSymbolicLink()) continue;\n    const resolved = path.resolve(directory, await fs.readlink(linkPath));\n    if (Object.prototype.hasOwnProperty.call(expected, entry.name) && roots.some((root) => isInside(resolved, root))) {\n      // Claim v1 links by location, not exact target. Layout migration changes\n      // `.xtrm/skills/user/packs/...` targets to v2 flat targets; reconcile owns\n      // both so it can replace stale links and persist v2-relative ownership.\n      result[entry.name] = targetRelativePath(projectRoot, resolved);\n    }\n  }\n  return result;\n}\n\nexport async function selectRuntimeSkills(runtime: SkillsRuntime, skillsRoot: string, state: { enabledPacks: { claude: string[]; pi: string[] }; managedLinks?: SkillsState['managedLinks'] }, additionalRoots: readonly string[] = []): Promise<{ runtime: SkillsRuntime; enabledPacks: string[]; skills: DiscoveredSkill[] }> {\n  const roots = [skillsRoot, ...additionalRoots];\n  const normalizedState: SkillsState = { schemaVersion: '2', enabledPacks: state.enabledPacks, managedLinks: state.managedLinks ?? { claude: {}, pi: {} } };\n  const packs = (await Promise.all(roots.map(async (root) => [\n    ...(await discoverTierPacks(root, 'optional')),\n    ...(await discoverTierPacks(root, 'user')),\n  ]))).flat();\n  const defaults = await discoverDefaultSkills(skillsRoot);\n  const skills = resolveDesiredSkills({ projectRoot: path.dirname(path.dirname(skillsRoot)), state: normalizedState, runtime, discoveredPacks: packs, globalDefaultRoot: skillsRoot, globalOptionalRoot: path.join(skillsRoot, 'optional') }, defaults);\n  return { runtime, enabledPacks: [...normalizedState.enabledPacks[runtime]], skills: [...defaults, ...skills] };\n}\n\nexport async function reconcileRuntimeLinks(options: ReconcileRuntimeLinksOptions): Promise<RuntimeLinksReconcileResult> {\n  const { projectRoot, runtime, state, globalDefaultRoot, globalOptionalRoot } = options;\n  const runtimeDirectory = path.join(projectRoot, runtime === 'claude' ? '.claude' : '.pi', 'skills');\n  const defaults = await discoverDirectSkills(globalDefaultRoot);\n  const selected = resolveDesiredSkills(options, defaults);\n  const desiredLinks: Record<string, string> = {};\n  for (const skill of selected) {\n    resolveRuntimeLinkPath(runtimeDirectory, skill.runtimeName);\n    desiredLinks[skill.runtimeName] = path.resolve(skill.path);\n  }\n\n  const oldManifest = state.managedLinks?.[runtime] ?? {};\n  for (const name of Object.keys(oldManifest)) resolveRuntimeLinkPath(runtimeDirectory, name);\n  await ensureRuntimeDirectory(runtimeDirectory);\n  const roots = [path.join(projectRoot, '.xtrm', 'skills'), globalOptionalRoot];\n  const bootstrapped = Object.keys(oldManifest).length === 0\n    ? await discoverManagedLinks(projectRoot, runtimeDirectory, desiredLinks, roots)\n    : {};\n  const managed = { ...bootstrapped, ...oldManifest };\n  const removedLinks: string[] = [];\n\n  for (const [name, relativeTarget] of Object.entries(managed)) {\n    if (desiredLinks[name]) continue;\n    const linkPath = resolveRuntimeLinkPath(runtimeDirectory, name);\n    const stat = await fs.lstat(linkPath).catch(() => null);\n    if (stat?.isSymbolicLink()) {\n      const resolved = path.resolve(runtimeDirectory, await fs.readlink(linkPath));\n      const recorded = path.resolve(projectRoot, relativeTarget);\n      if (resolved === recorded && roots.some((root) => isInside(resolved, root))) await fs.remove(linkPath);\n    }\n    removedLinks.push(name);\n  }\n\n  for (const [name, target] of Object.entries(desiredLinks)) {\n    const linkPath = resolveRuntimeLinkPath(runtimeDirectory, name);\n    const existing = await fs.lstat(linkPath).catch(() => null);\n    const tracked = Object.prototype.hasOwnProperty.call(managed, name);\n    if (existing && !tracked) {\n      if (!existing.isSymbolicLink() || path.resolve(runtimeDirectory, await fs.readlink(linkPath)) !== target) {\n        throw new Error(`Cannot enable skill '${name}': ${linkPath} is user-owned.`);\n      }\n    }\n    if (existing?.isSymbolicLink() && path.resolve(runtimeDirectory, await fs.readlink(linkPath)) === target) {\n      // Symlink already points at the desired target string. Verify the target actually resolves\n      // on disk; a broken symlink (points at a since-removed path) must be re-materialized rather\n      // than left dangling. (xtrm-4cqxc: mercury repos surfaced this on v2 migration.)\n      const targetExists = await fs.pathExists(target);\n      if (targetExists) continue;\n      await fs.remove(linkPath);\n    } else if (existing && !existing.isSymbolicLink()) {\n      throw new Error(`Cannot replace non-symlink managed entry ${linkPath}.`);\n    }\n    await atomicSymlink(target, linkPath);\n  }\n\n  const nextManaged = Object.fromEntries(Object.entries(desiredLinks).map(([name, target]) => [name, targetRelativePath(projectRoot, target)]));\n  const nextState: SkillsState = { ...state, managedLinks: { ...state.managedLinks, [runtime]: nextManaged } };\n  const persisted = await writeSkillsState(resolveSkillsRoot(projectRoot), nextState);\n  Object.assign(state, persisted);\n  return { runtime, desiredLinks: nextManaged, removedLinks, state: persisted };\n}\n","/**\n * Unified Pi runtime service: extensions + packages + config.\n *\n * Models all Pi-related installation in a single registry.\n * Provides inventory -> plan -> sync/repair -> verify lifecycle.\n *\n * Unifies the previously split flows:\n * - pi-install.ts (runPiInstall) — non-interactive sync\n * - install-pi.ts (createInstallPiCommand) — interactive setup\n *\n * Solves xtrm-920d: mirror sync removes stale extensions from target.\n */\n\nimport { spawnSync } from 'child_process';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport path from 'path';\nimport { homedir } from 'node:os';\nimport { t, sym } from '../utils/theme.js';\nimport { resolveSkillsRoot } from './skills-layout.js';\nimport { validateSkillsInvariants } from './skill-discovery.js';\n\nimport { hasProjectScopedSkillsContent } from './project-skills-content.js';\n\n// Resolve xtrm-tools package root from __dirname (cli/dist/ -> ../..)\ndeclare const __dirname: string;\n\nconst MANAGED_PI_EXTENSION_SOURCE_CANDIDATES = [\n    ['packages', 'pi-extensions', 'extensions'],\n    ['.xtrm', 'extensions'],\n] as const;\nconst MANAGED_PI_THEME_SOURCE_CANDIDATES = [\n    ['packages', 'pi-extensions', 'themes', 'xtrm-ui'],\n    ['.xtrm', 'themes', 'xtrm-ui'],\n] as const;\n\nfunction resolveFirstExistingPath(\n    rootDir: string,\n    candidates: readonly (readonly string[])[],\n): string | null {\n    for (const candidate of candidates) {\n        const candidatePath = path.join(rootDir, ...candidate);\n        if (fs.existsSync(candidatePath)) {\n            return candidatePath;\n        }\n    }\n\n    return null;\n}\n\nfunction resolvePkgRoot(): string {\n    const candidates = [\n        path.resolve(__dirname, '../..'),\n        path.resolve(__dirname, '../../..'),\n    ];\n    for (const candidateRoot of candidates) {\n        if (resolveFirstExistingPath(candidateRoot, MANAGED_PI_EXTENSION_SOURCE_CANDIDATES)) {\n            return candidateRoot;\n        }\n    }\n    return candidates[0];\n}\n\nexport function resolveManagedPiExtensionsSourceDir(pkgRoot: string = resolvePkgRoot()): string | null {\n    return resolveFirstExistingPath(pkgRoot, MANAGED_PI_EXTENSION_SOURCE_CANDIDATES);\n}\n\nfunction resolveManagedPiThemesSourceDir(pkgRoot: string = resolvePkgRoot()): string | null {\n    return resolveFirstExistingPath(pkgRoot, MANAGED_PI_THEME_SOURCE_CANDIDATES);\n}\n\nexport function resolveManagedPiCoreSourceDir(pkgRoot: string = resolvePkgRoot()): string | null {\n    return resolveFirstExistingPath(pkgRoot, [\n        ['packages', 'pi-extensions', 'src', 'core'],\n        ['.xtrm', 'extensions', 'core'],\n    ]);\n}\n\nconst PI_AGENT_DIR = process.env.PI_AGENT_DIR || path.join(homedir(), '.pi', 'agent');\nconst MANAGED_XTRM_THEME_FILES = [\n    'xtrm-dark.json',\n    'xtrm-dark-flattools.json',\n    'xtrm-light.json',\n    'xtrm-light-flattools.json',\n] as const;\n\nexport async function syncManagedPiThemes(\n    sourceDir: string | null,\n    dryRun: boolean,\n    log?: (message: string) => void,\n    themeDir = path.join(PI_AGENT_DIR, 'themes'),\n): Promise<void> {\n    if (!sourceDir || !await fs.pathExists(sourceDir)) return;\n\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal -- name is a closed package-owned allowlist.\n    const missing = MANAGED_XTRM_THEME_FILES.filter((name) => !fs.existsSync(path.join(sourceDir, name)));\n    if (missing.length > 0) {\n        throw new Error(`Missing managed Pi theme files: ${missing.join(', ')}`);\n    }\n\n    if (dryRun) {\n        log?.(`[DRY RUN] sync XTRM Pi themes → ${themeDir}`);\n        return;\n    }\n\n    await fs.ensureDir(themeDir);\n    for (const name of MANAGED_XTRM_THEME_FILES) {\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal -- name is a closed package-owned allowlist.\n        const target = path.join(themeDir, name);\n        await fs.remove(target);\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal -- name is a closed package-owned allowlist.\n        await fs.symlink(path.relative(themeDir, path.join(sourceDir, name)), target);\n    }\n    log?.('Synced XTRM Pi themes');\n}\n\nconst PI_MCP_ADAPTER_OVERRIDE_DIR = path.join(PI_AGENT_DIR, 'extensions', 'pi-mcp-adapter');\nconst PI_MCP_ADAPTER_REQUIRED_ENTRY = 'commands.js';\n\nasync function resolveGlobalNpmRootDir(): Promise<string | null> {\n    const result = spawnSync('npm', ['root', '-g'], { encoding: 'utf8', stdio: 'pipe' });\n    if (result.status !== 0) return null;\n\n    const npmRootDir = (result.stdout ?? '').trim();\n    return npmRootDir.length > 0 ? npmRootDir : null;\n}\nconst PROJECT_EXTENSIONS_ENTRY = '../.xtrm/extensions';\nconst LEGACY_XTRM_SKILLS_ENTRIES = new Set([\n    '../.xtrm/skills/active',\n    '../.xtrm/skills/active/pi',\n    '../.xtrm/skills/active/claude',\n    '~/.xtrm/skills/active',\n    '~/.xtrm/skills/active/pi',\n    '~/.xtrm/skills/active/claude',\n    '~/.xtrm/skills/default',\n]);\nconst PROJECT_EXTENSION_PACKAGE_ID = 'npm:@jaggerxtrm/pi-extensions';\nconst PROJECT_EXTENSION_PACKAGE: ManagedPackage = {\n    id: PROJECT_EXTENSION_PACKAGE_ID,\n    displayName: '@jaggerxtrm/pi-extensions',\n    required: true,\n};\nconst CONFLICTING_PI_PACKAGE_IDS = new Set<string>(['npm:pi-dex']);\nconst LEGACY_PROJECT_EXTENSION_ENTRIES = new Set<string>([\n    PROJECT_EXTENSIONS_ENTRY,\n    '.xtrm/extensions',\n]);\n\nfunction runExternalPiToolPatch(pkgRoot: string, dryRun: boolean, log?: (message: string) => void): void {\n    const scriptPath = path.join(pkgRoot, 'scripts', 'patch-external-pi-tools.mjs');\n    if (!fs.existsSync(scriptPath)) return;\n\n    if (dryRun) {\n        log?.(`[DRY RUN] node ${scriptPath}`);\n        return;\n    }\n\n    const result = spawnSync('node', [scriptPath], { encoding: 'utf8' });\n    if (result.status !== 0) {\n        const stderr = (result.stderr ?? '').trim();\n        if (stderr) log?.(`external tool patch failed: ${stderr}`);\n    } else {\n        log?.('external tool compact/spacing patches applied');\n    }\n}\n\n// ── Extension Registry ───────────────────────────────────────────────────────\n\nexport interface ManagedExtension {\n    /** Extension directory name */\n    id: string;\n    /** Human-readable name */\n    displayName: string;\n    /** Is this a library (excluded from settings.json packages list) */\n    isLibrary?: boolean;\n    /** Required for XTRM workflow */\n    required: boolean;\n}\n\nconst MANAGED_EXTENSIONS: ManagedExtension[] = [\n    { id: 'core', displayName: '@xtrm/pi-core', isLibrary: true, required: true },\n    { id: 'auto-session-name', displayName: 'auto-session-name', required: false },\n    { id: 'auto-update', displayName: 'auto-update', required: false },\n    { id: 'beads', displayName: 'beads', required: true },\n    { id: 'compact-header', displayName: 'compact-header', required: false },\n    { id: 'custom-footer', displayName: 'custom-footer', required: true },\n    { id: 'custom-provider-qwen-cli', displayName: 'custom-provider-qwen-cli', required: false },\n    { id: 'git-checkpoint', displayName: 'git-checkpoint', required: false },\n    { id: 'lsp-bootstrap', displayName: 'lsp-bootstrap', required: false },\n    { id: 'pi-serena-compact', displayName: 'pi-serena-compact', required: false },\n    // quality-gates disabled at the bundle registry level — broken .claude/hooks\n    // wiring under the managed .xtrm/hooks layout means it never fires. (xtrm-e2vkn)\n    { id: 'service-skills', displayName: 'service-skills', required: false },\n    { id: 'session-flow', displayName: 'session-flow', required: true },\n    { id: 'xtrm-loader', displayName: 'xtrm-loader', required: true },\n    { id: 'xtrm-ui', displayName: 'xtrm-ui', required: true },\n];\n\n// ── Package Registry ─────────────────────────────────────────────────────────\n\nexport interface ManagedPackage {\n    /** Package ID as used by pi (e.g., 'npm:pi-gitnexus') */\n    id: string;\n    /** Human-readable name */\n    displayName: string;\n    /** Required for XTRM workflow */\n    required: boolean;\n}\n\nconst MANAGED_PACKAGES: ManagedPackage[] = [\n    { id: 'npm:pi-gitnexus', displayName: 'pi-gitnexus', required: true },\n    { id: 'npm:pi-serena-tools', displayName: 'pi-serena-tools', required: true },\n    { id: 'npm:@zenobius/pi-worktrees', displayName: 'pi-worktrees', required: true },\n    { id: 'npm:@robhowley/pi-structured-return', displayName: 'pi-structured-return', required: true },\n    { id: 'npm:@aliou/pi-guardrails', displayName: 'pi-guardrails', required: false },\n    { id: 'npm:@aliou/pi-processes', displayName: 'pi-processes', required: true },\n    { id: 'npm:pi-mcp-adapter', displayName: 'pi-mcp-adapter', required: true },\n];\n\nconst PROJECT_REQUIRED_PACKAGE_IDS = [\n    PROJECT_EXTENSION_PACKAGE_ID,\n    ...MANAGED_PACKAGES.map(pkg => pkg.id),\n];\n\nexport function getXtManagedPiPackages(): ManagedPackage[] {\n    return [PROJECT_EXTENSION_PACKAGE, ...MANAGED_PACKAGES];\n}\n\n// ── Inventory ─────────────────────────────────────────────────────────────────\n\nexport interface ExtensionStatus {\n    ext: ManagedExtension;\n    installed: boolean;\n    hash?: string;\n    stale?: boolean;\n}\n\nexport interface PackageStatus {\n    pkg: ManagedPackage;\n    installed: boolean;\n}\n\nexport type PiPackageFreshnessState = 'missing' | 'current' | 'outdated' | 'version-unknown';\n\nexport interface PiPackageAssuranceStatus {\n    pkg: ManagedPackage;\n    npmPackageName: string;\n    installedVersion: string | null;\n    expectedVersion: string | null;\n    state: PiPackageFreshnessState;\n}\n\nexport interface PiPackageAssuranceResult {\n    statuses: PiPackageAssuranceStatus[];\n    missing: PiPackageAssuranceStatus[];\n    outdated: PiPackageAssuranceStatus[];\n    installed: string[];\n    refreshed: string[];\n    failed: string[];\n}\n\nexport interface XtManagedPiPackageDoctorIssue {\n    pkg: ManagedPackage;\n    npmPackageName: string;\n    installedVersion: string | null;\n    expectedVersion: string | null;\n    state: PiPackageFreshnessState;\n    remediation: string;\n}\n\nexport interface XtManagedPiPackageDoctorReport {\n    issues: XtManagedPiPackageDoctorIssue[];\n    missing: XtManagedPiPackageDoctorIssue[];\n    outdated: XtManagedPiPackageDoctorIssue[];\n    ok: XtManagedPiPackageDoctorIssue[];\n    hasIssues: boolean;\n}\n\nexport interface PiPackageVersionInfo {\n    installedVersion: string | null;\n    expectedVersion: string | null;\n}\n\nexport type PiPackageVersionProvider = (\n    piPackageId: string,\n    npmPackageName: string,\n    pkg: ManagedPackage,\n) => PiPackageVersionInfo | Promise<PiPackageVersionInfo>;\n\nexport interface PiPackageFreshnessStatus {\n    pkg: ManagedPackage;\n    npmPackageName: string;\n    installedVersion: string | null;\n    expectedVersion: string | null;\n    state: PiPackageFreshnessState;\n}\n\nexport interface PiRuntimePlan {\n    extensions: ExtensionStatus[];\n    packages: PackageStatus[];\n    missingExtensions: ExtensionStatus[];\n    staleExtensions: ExtensionStatus[];\n    orphanedExtensions: string[];  // Extensions in target not in source (xtrm-920d)\n    missingPackages: PackageStatus[];\n    allRequiredPresent: boolean;\n    allPresent: boolean;\n}\n\n/**\n * Parse `pi list` output to get installed package names.\n */\nfunction getInstalledPiPackages(): string[] {\n    const result = spawnSync('pi', ['list'], { encoding: 'utf8', stdio: 'pipe' });\n    if (result.status !== 0) return [];\n\n    const output = result.stdout;\n    const packages: string[] = [];\n\n    // Collect npm: packages from both User and Project sections\n    // Project-scoped installs go to .pi/npm/node_modules/\n    for (const line of output.split('\\n')) {\n        const match = line.match(/^\\s+(npm:[\\w\\-/@]+)/);\n        if (match) packages.push(match[1]);\n    }\n\n    return packages.sort();\n}\n\n/**\n * List extension directories in a target directory.\n */\nasync function listInstalledExtensions(targetDir: string): Promise<string[]> {\n    if (!await fs.pathExists(targetDir)) return [];\n    const entries = await fs.readdir(targetDir, { withFileTypes: true });\n    return entries\n        .filter(e => e.isDirectory() || e.isSymbolicLink())\n        .map(e => e.name)\n        .sort();\n}\n\n/**\n * Full inventory of Pi runtime state.\n */\nexport async function inventoryPiRuntime(\n    sourceDir: string,\n    targetDir: string,\n): Promise<PiRuntimePlan> {\n    // Extension inventory\n    const installedExtNames = await listInstalledExtensions(targetDir);\n    const extensionStatuses: ExtensionStatus[] = [];\n    const missingExtensions: ExtensionStatus[] = [];\n    const staleExtensions: ExtensionStatus[] = [];\n    const orphanedExtensions: string[] = [];\n\n    for (const ext of MANAGED_EXTENSIONS) {\n        const srcPath = path.join(sourceDir, ext.id);\n        const dstPath = path.join(targetDir, ext.id);\n\n        const srcExists = await fs.pathExists(srcPath);\n        const dstExists = await fs.pathExists(dstPath);\n\n        if (!srcExists) {\n            // Extension not bundled in source — skip\n            continue;\n        }\n\n        if (!dstExists) {\n            const status: ExtensionStatus = { ext, installed: false };\n            extensionStatuses.push(status);\n            missingExtensions.push(status);\n            continue;\n        }\n\n        // Stale detection: if dstPath is a symlink, verify it resolves to srcPath.\n        // If it's a real copy (legacy), treat as stale so it gets replaced with a symlink.\n        // Skip stale check when srcPath === dstPath (verification mode: Pi reads extensions\n        // directly from source dir, no copy/symlink needed).\n        let isStale = false;\n        if (srcPath !== dstPath) {\n            const dstStat = await fs.lstat(dstPath);\n            if (dstStat.isSymbolicLink()) {\n                const linkTarget = await fs.readlink(dstPath);\n                const resolvedTarget = path.resolve(path.dirname(dstPath), linkTarget);\n                isStale = resolvedTarget !== path.resolve(srcPath);\n            } else {\n                // Real copy — replace with symlink\n                isStale = true;\n            }\n        }\n        const status: ExtensionStatus = {\n            ext,\n            installed: true,\n            stale: isStale,\n        };\n        extensionStatuses.push(status);\n\n        if (isStale) {\n            staleExtensions.push(status);\n        }\n    }\n\n    // Detect orphaned extensions (in target but not in source registry)\n    const managedIds = new Set(MANAGED_EXTENSIONS.map(e => e.id));\n    for (const name of installedExtNames) {\n        if (!managedIds.has(name)) {\n            orphanedExtensions.push(name);\n        }\n    }\n\n    // Package inventory\n    const installedPkgIds = getInstalledPiPackages();\n    const packageStatuses: PackageStatus[] = [];\n    const missingPackages: PackageStatus[] = [];\n\n    for (const pkg of MANAGED_PACKAGES) {\n        const isInstalled = installedPkgIds.includes(pkg.id);\n        const status: PackageStatus = { pkg, installed: isInstalled };\n        packageStatuses.push(status);\n\n        if (!isInstalled) {\n            missingPackages.push(status);\n        }\n    }\n\n    const allRequiredPresent =\n        missingExtensions.every(s => !s.ext.required) &&\n        staleExtensions.every(s => !s.ext.required) &&\n        missingPackages.every(s => !s.pkg.required);\n\n    const allPresent =\n        missingExtensions.length === 0 &&\n        staleExtensions.length === 0 &&\n        orphanedExtensions.length === 0 &&\n        missingPackages.length === 0;\n\n    return {\n        extensions: extensionStatuses,\n        packages: packageStatuses,\n        missingExtensions,\n        staleExtensions,\n        orphanedExtensions,\n        missingPackages,\n        allRequiredPresent,\n        allPresent,\n    };\n}\n\n// ── Plan Rendering ───────────────────────────────────────────────────────────\n\nexport function renderPiRuntimePlan(plan: PiRuntimePlan): void {\n    console.log(kleur.bold('\\n  Pi Runtime'));\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n    // Extensions\n    const extTotal = plan.extensions.length;\n    const extOk = plan.extensions.filter(s => s.installed && !s.stale).length;\n\n    console.log(kleur.dim(`  Extensions: ${extOk}/${extTotal} up-to-date`));\n\n    if (plan.missingExtensions.length > 0) {\n        const names = plan.missingExtensions.map(s => s.ext.displayName).join(', ');\n        console.log(kleur.yellow(`  Missing:    ${names}`));\n    }\n\n    if (plan.staleExtensions.length > 0) {\n        const names = plan.staleExtensions.map(s => s.ext.displayName).join(', ');\n        console.log(kleur.yellow(`  Stale:      ${names}`));\n    }\n\n    if (plan.orphanedExtensions.length > 0) {\n        const names = plan.orphanedExtensions.join(', ');\n        console.log(kleur.red(`  Orphaned:   ${names} (will remove)`));\n    }\n\n    // Packages\n    const pkgTotal = plan.packages.length;\n    const pkgOk = plan.packages.filter(s => s.installed).length;\n\n    console.log(kleur.dim(`  Packages:   ${pkgOk}/${pkgTotal} installed`));\n\n    if (plan.missingPackages.length > 0) {\n        const names = plan.missingPackages.map(s => s.pkg.displayName).join(', ');\n        console.log(kleur.yellow(`  Missing:    ${names}`));\n    }\n\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n    if (plan.allPresent) {\n        console.log(t.success('  ✓ All extensions and packages present.\\n'));\n    } else if (plan.allRequiredPresent) {\n        console.log(t.success('  ✓ All required items present.'));\n        const optionalMissing = [\n            ...plan.missingExtensions.filter(s => !s.ext.required),\n            ...plan.missingPackages.filter(s => !s.pkg.required),\n        ];\n        if (optionalMissing.length > 0) {\n            const names = optionalMissing.map(s =>\n                'ext' in s ? s.ext.displayName : s.pkg.displayName\n            ).join(', ');\n            console.log(kleur.dim(`  ○ Optional not installed: ${names}\\n`));\n        } else {\n            console.log('');\n        }\n    } else {\n        console.log(kleur.yellow('  ⚠ Missing required items.\\n'));\n    }\n}\n\n// ── Sync Execution ───────────────────────────────────────────────────────────\n\nexport interface PiSyncOptions {\n    /** Dry run — print what would happen but don't write */\n    dryRun?: boolean;\n    /** Install to global ~/.pi/agent/ (default: project-scoped) */\n    isGlobal?: boolean;\n    /** Project root for project-scoped installs */\n    projectRoot?: string;\n    /** Remove orphaned extensions (xtrm-920d mirror behavior) */\n    removeOrphaned?: boolean;\n    /** Log function for progress messages */\n    log?: (message: string) => void;\n}\n\nexport interface PiSyncResult {\n    extensionsAdded: string[];\n    extensionsUpdated: string[];\n    extensionsRemoved: string[];\n    packagesInstalled: string[];\n    failed: string[];\n}\n\nfunction getProjectRequiredPackageStatuses(installedPkgIds: readonly string[]): PackageStatus[] {\n    return PROJECT_REQUIRED_PACKAGE_IDS.map((packageId) => {\n        const managed = getXtManagedPiPackages().find((pkg) => pkg.id === packageId);\n        const pkg: ManagedPackage = managed ?? PROJECT_EXTENSION_PACKAGE;\n\n        return {\n            pkg,\n            installed: installedPkgIds.includes(packageId),\n        };\n    });\n}\n\nfunction mergePiSyncResults(base: PiSyncResult, incoming: PiSyncResult): PiSyncResult {\n    return {\n        extensionsAdded: [...base.extensionsAdded, ...incoming.extensionsAdded],\n        extensionsUpdated: [...base.extensionsUpdated, ...incoming.extensionsUpdated],\n        extensionsRemoved: [...base.extensionsRemoved, ...incoming.extensionsRemoved],\n        packagesInstalled: [...base.packagesInstalled, ...incoming.packagesInstalled],\n        failed: [...base.failed, ...incoming.failed],\n    };\n}\n\nfunction parseNpmPackageName(piPackageId: string): string | null {\n    if (!piPackageId.startsWith('npm:')) return null;\n    const npmPackageName = piPackageId.slice(4).trim();\n    return npmPackageName.length > 0 ? npmPackageName : null;\n}\n\nfunction classifyPiPackageFreshness(info: PiPackageVersionInfo): PiPackageFreshnessState {\n    if (!info.installedVersion) return 'missing';\n    if (!info.expectedVersion) return 'version-unknown';\n    return info.installedVersion === info.expectedVersion ? 'current' : 'outdated';\n}\n\nfunction resolveInstalledPiPackageJsonPath(\n    agentDir: string,\n    npmPackageName: string,\n    npmRootDir?: string,\n): string {\n    // xt-managed allowlist\n    // nosemgrep\n    const agentPackageJsonPath = path.join(agentDir, 'npm', 'node_modules', npmPackageName, 'package.json');\n    if (fs.existsSync(agentPackageJsonPath) || !npmRootDir) return agentPackageJsonPath;\n    // xt-managed allowlist\n    // nosemgrep\n    return path.join(npmRootDir, npmPackageName, 'package.json');\n}\n\nexport async function getInstalledPiPackageVersion(\n    agentDir: string,\n    npmPackageName: string,\n    npmRootDir?: string,\n): Promise<string | null> {\n    const packageJsonPath = resolveInstalledPiPackageJsonPath(agentDir, npmPackageName, npmRootDir);\n    if (!await fs.pathExists(packageJsonPath)) return null;\n\n    try {\n        const packageJson = await fs.readJson(packageJsonPath) as { version?: unknown };\n        return typeof packageJson.version === 'string' ? packageJson.version : null;\n    } catch {\n        return null;\n    }\n}\n\nconst PI_PACKAGE_VERSION_LOOKUP_TIMEOUT_MS = 5000;\n\nasync function getExpectedPiPackageVersion(npmPackageName: string): Promise<string | null> {\n    const result = spawnSync('npm', ['view', npmPackageName, 'version', '--registry', NPMJS_REGISTRY_URL], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n        timeout: PI_PACKAGE_VERSION_LOOKUP_TIMEOUT_MS,\n    });\n\n    if (result.status !== 0) return null;\n\n    const version = (result.stdout ?? '').trim();\n    return version.length > 0 ? version : null;\n}\n\nexport async function getManagedPiPackageFreshness(\n    versionProvider: PiPackageVersionProvider,\n    packages: readonly ManagedPackage[] = getXtManagedPiPackages(),\n): Promise<PiPackageFreshnessStatus[]> {\n    const statuses: PiPackageFreshnessStatus[] = [];\n\n    for (const pkg of packages) {\n        const npmPackageName = parseNpmPackageName(pkg.id);\n        if (!npmPackageName) {\n            statuses.push({\n                pkg,\n                npmPackageName: '',\n                installedVersion: null,\n                expectedVersion: null,\n                state: 'version-unknown',\n            });\n            continue;\n        }\n\n        const info = await versionProvider(pkg.id, npmPackageName, pkg);\n        const installedVersion = info.installedVersion ?? null;\n        const expectedVersion = info.expectedVersion ?? null;\n\n        statuses.push({\n            pkg,\n            npmPackageName,\n            installedVersion,\n            expectedVersion,\n            state: classifyPiPackageFreshness({ installedVersion, expectedVersion }),\n        });\n    }\n\n    return statuses;\n}\n\nexport async function isPackagePresentInPiAgent(\n    agentDir: string,\n    piPackageId: string,\n    npmRootDir?: string,\n): Promise<boolean> {\n    const npmPackageName = parseNpmPackageName(piPackageId);\n    if (!npmPackageName) return false;\n\n    // xt-managed allowlist\n    // nosemgrep\n    const agentPackageDir = path.join(agentDir, 'npm', 'node_modules', npmPackageName);\n    if (await fs.pathExists(agentPackageDir)) return true;\n    if (!npmRootDir) return false;\n    // xt-managed allowlist\n    // nosemgrep\n    return fs.pathExists(path.join(npmRootDir, npmPackageName));\n}\n\nconst NPMJS_REGISTRY_URL = 'https://registry.npmjs.org';\n\ninterface PiPackageInstallResult {\n    status: number | null;\n    stdout: string;\n    stderr: string;\n}\n\ninterface PiPackageInstallAttempt {\n    status: number | null;\n    output: string;\n    retriedWithNpmjs: boolean;\n}\n\nexport type PiPackageInstallRunner = (piPackageId: string, env?: NodeJS.ProcessEnv) => PiPackageInstallResult;\n\nfunction runPiPackageInstall(piPackageId: string, env?: NodeJS.ProcessEnv): PiPackageInstallResult {\n    const installResult = spawnSync('pi', ['install', piPackageId], {\n        stdio: 'pipe',\n        encoding: 'utf8',\n        env,\n    });\n\n    return {\n        status: installResult.status,\n        stdout: installResult.stdout ?? '',\n        stderr: installResult.stderr ?? '',\n    };\n}\n\nfunction getPiPackageInstallOutput(result: PiPackageInstallResult): string {\n    return `${result.stdout}\\n${result.stderr}`.trim();\n}\n\nfunction buildNpmjsRegistryEnv(baseEnv: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {\n    return {\n        ...baseEnv,\n        NPM_CONFIG_REGISTRY: NPMJS_REGISTRY_URL,\n        npm_config_registry: NPMJS_REGISTRY_URL,\n    };\n}\n\nexport function shouldRetryPiInstallViaNpmjs(piPackageId: string, output: string): boolean {\n    if (piPackageId !== PROJECT_EXTENSION_PACKAGE_ID) return false;\n\n    const normalizedOutput = output.toLowerCase();\n    return normalizedOutput.includes('npmmirror') && normalizedOutput.includes('404');\n}\n\nexport function getPiPackageInstallFailureHint(piPackageId: string, output: string): string[] {\n    if (!shouldRetryPiInstallViaNpmjs(piPackageId, output)) {\n        return [];\n    }\n\n    return [\n        `detected registry mirror 404 for ${piPackageId}`,\n        `best fix: npm config set @jaggerxtrm:registry ${NPMJS_REGISTRY_URL}`,\n    ];\n}\n\nfunction installPiPackageWithFallback(\n    piPackageId: string,\n    log?: (message: string) => void,\n    installRunner: PiPackageInstallRunner = runPiPackageInstall,\n): PiPackageInstallAttempt {\n    const initialResult = installRunner(piPackageId);\n    const initialOutput = getPiPackageInstallOutput(initialResult);\n\n    if ((initialResult.status ?? 1) === 0) {\n        return { status: initialResult.status, output: initialOutput, retriedWithNpmjs: false };\n    }\n\n    if (!shouldRetryPiInstallViaNpmjs(piPackageId, initialOutput)) {\n        return { status: initialResult.status, output: initialOutput, retriedWithNpmjs: false };\n    }\n\n    log?.(kleur.dim(`Detected npmmirror 404 for ${piPackageId}; retrying via ${NPMJS_REGISTRY_URL}`));\n    const retriedResult = installRunner(piPackageId, buildNpmjsRegistryEnv());\n    const retriedOutput = getPiPackageInstallOutput(retriedResult);\n\n    return {\n        status: retriedResult.status,\n        output: [initialOutput, retriedOutput].filter(Boolean).join('\\n'),\n        retriedWithNpmjs: true,\n    };\n}\n\nexport async function ensureAlwaysGlobalPiPackages(\n    dryRun: boolean,\n    log?: (message: string) => void,\n    agentDir: string = PI_AGENT_DIR,\n    installRunner: PiPackageInstallRunner = runPiPackageInstall,\n    npmRootDir?: string | null,\n): Promise<{ installed: string[]; failed: string[] }> {\n    const installed: string[] = [];\n    const failed: string[] = [];\n\n    const resolvedNpmRootDir = npmRootDir === undefined ? await resolveGlobalNpmRootDir() : npmRootDir;\n\n    for (const pkg of getXtManagedPiPackages()) {\n        if (await isPackagePresentInPiAgent(agentDir, pkg.id, resolvedNpmRootDir ?? undefined)) {\n            continue;\n        }\n\n        if (dryRun) {\n            log?.(`[DRY RUN] pi install ${pkg.id}`);\n            continue;\n        }\n\n        const installAttempt = installPiPackageWithFallback(pkg.id, log, installRunner);\n        if (installAttempt.status === 0) {\n            installed.push(pkg.id);\n            log?.(`${sym.ok} ${pkg.displayName} (global${installAttempt.retriedWithNpmjs ? ', npmjs fallback' : ''})`);\n            continue;\n        }\n\n        failed.push(pkg.id);\n        log?.(kleur.yellow(`⚠ ${pkg.displayName} — global install failed`));\n        for (const hint of getPiPackageInstallFailureHint(pkg.id, installAttempt.output)) {\n            log?.(kleur.yellow(`  → ${hint}`));\n        }\n    }\n\n    return { installed, failed };\n}\n\nexport async function assureXtManagedPiPackages(\n    dryRun: boolean,\n    log?: (message: string) => void,\n    agentDir: string = PI_AGENT_DIR,\n    installRunner: PiPackageInstallRunner = runPiPackageInstall,\n    versionProvider?: PiPackageVersionProvider,\n): Promise<PiPackageAssuranceResult> {\n    const npmRootDir = await resolveGlobalNpmRootDir();\n    const resolvedVersionProvider = versionProvider ?? (async (_piPackageId, npmPackageName) => ({\n        installedVersion: await getInstalledPiPackageVersion(agentDir, npmPackageName, npmRootDir ?? undefined),\n        expectedVersion: await getExpectedPiPackageVersion(npmPackageName),\n    }));\n\n    const statuses = await getManagedPiPackageFreshness(resolvedVersionProvider);\n    const missing = statuses.filter((status) => status.state === 'missing');\n    const outdated = statuses.filter((status) => status.state === 'outdated');\n    const installed: string[] = [];\n    const refreshed: string[] = [];\n    const failed: string[] = [];\n\n    for (const status of [...missing, ...outdated]) {\n        if (dryRun) {\n            log?.('[DRY RUN] pi install ' + status.pkg.id);\n            continue;\n        }\n\n        const installAttempt = installPiPackageWithFallback(status.pkg.id, log, installRunner);\n        if (installAttempt.status === 0) {\n            if (status.state === 'missing') {\n                installed.push(status.pkg.id);\n                log?.(sym.ok + ' ' + status.pkg.displayName);\n            } else {\n                refreshed.push(status.pkg.id);\n                log?.(sym.ok + ' ' + status.pkg.displayName + ' (refreshed)');\n            }\n            continue;\n        }\n\n        failed.push(status.pkg.id);\n        log?.(kleur.yellow('⚠ ' + status.pkg.displayName + ' — ' + status.state + ' package update failed'));\n        for (const hint of getPiPackageInstallFailureHint(status.pkg.id, installAttempt.output)) {\n            log?.(kleur.yellow('  → ' + hint));\n        }\n    }\n\n    return { statuses, missing, outdated, installed, refreshed, failed };\n}\n\nexport async function getXtManagedPiPackageDoctorReport(\n    versionProvider?: PiPackageVersionProvider,\n): Promise<XtManagedPiPackageDoctorReport> {\n    const npmRootDir = await resolveGlobalNpmRootDir();\n    const resolvedVersionProvider = versionProvider ?? (async (_piPackageId, npmPackageName) => ({\n        installedVersion: await getInstalledPiPackageVersion(PI_AGENT_DIR, npmPackageName, npmRootDir ?? undefined),\n        expectedVersion: await getExpectedPiPackageVersion(npmPackageName),\n    }));\n\n    const statuses = await getManagedPiPackageFreshness(resolvedVersionProvider, getXtManagedPiPackages());\n    const issues = statuses\n        .filter((status) => status.state !== 'current')\n        .map((status) => ({\n            ...status,\n            remediation: status.state === 'version-unknown'\n                ? 'check network/npm registry, then rerun xt doctor'\n                : 'pi install ' + status.pkg.id,\n        }));\n\n    const missing = issues.filter((issue) => issue.state === 'missing');\n    const outdated = issues.filter((issue) => issue.state === 'outdated');\n    const ok = statuses.filter((status) => status.state === 'current').map((status) => ({\n        ...status,\n        remediation: '',\n    }));\n\n    return {\n        issues,\n        missing,\n        outdated,\n        ok,\n        hasIssues: issues.length > 0,\n    };\n}\n\n/**\n * Ensure @xtrm/pi-core is resolvable from .xtrm/extensions/node_modules/@xtrm/pi-core.\n * Creates a symlink pointing to the actual core source (not a mirror).\n */\nexport type CoreSymlinkStatus = 'missing-source' | 'ok' | 'created' | 'repaired' | 'would-create' | 'would-repair';\n\nexport async function ensureCorePackageSymlink(\n    coreSrcDir: string,    // path to .xtrm/extensions/core (the actual source)\n    projectRoot: string,\n    dryRun: boolean,\n    log?: (message: string) => void,\n): Promise<CoreSymlinkStatus> {\n    if (!await fs.pathExists(coreSrcDir)) return 'missing-source';\n\n    // Place symlink in .xtrm/extensions/node_modules/@xtrm/pi-core so that\n    // Node.js module resolution from any extension under .xtrm/extensions/\n    // can find @xtrm/pi-core by traversing up to .xtrm/extensions/node_modules/.\n    // (.pi/node_modules/ is NOT on the resolution path from .xtrm/extensions/.)\n    const extensionsDir = path.join(projectRoot, '.xtrm', 'extensions');\n    const nodeModulesDir = path.join(extensionsDir, 'node_modules', '@xtrm');\n    const symlinkPath = path.join(nodeModulesDir, 'pi-core');\n    const expectedTarget = path.resolve(coreSrcDir);\n\n    // Use lstat (not pathExists) so we detect broken symlinks too\n    const existing = await fs.lstat(symlinkPath).catch(() => null);\n    if (existing) {\n        if (existing.isSymbolicLink()) {\n            const currentLinkTarget = await fs.readlink(symlinkPath);\n            const resolvedTarget = path.resolve(path.dirname(symlinkPath), currentLinkTarget);\n            if (resolvedTarget === expectedTarget) {\n                return 'ok';\n            }\n        }\n\n        if (dryRun) {\n            log?.(kleur.dim('[DRY RUN] would repair @xtrm/pi-core symlink target'));\n            return 'would-repair';\n        }\n\n        await fs.remove(symlinkPath);\n        await fs.ensureDir(nodeModulesDir);\n        const relTarget = path.relative(nodeModulesDir, coreSrcDir);\n        await fs.symlink(relTarget, symlinkPath);\n        log?.(kleur.dim('Repaired @xtrm/pi-core symlink → .xtrm/extensions/node_modules/@xtrm/pi-core'));\n        return 'repaired';\n    }\n\n    if (dryRun) {\n        log?.(kleur.dim('[DRY RUN] would create @xtrm/pi-core symlink'));\n        return 'would-create';\n    }\n\n    await fs.ensureDir(nodeModulesDir);\n    const relTarget = path.relative(nodeModulesDir, coreSrcDir);\n    await fs.symlink(relTarget, symlinkPath);\n    log?.(kleur.dim('Created @xtrm/pi-core symlink → .xtrm/extensions/node_modules/@xtrm/pi-core'));\n    return 'created';\n}\n\nexport interface PiMcpAdapterOverrideCheck {\n    path: string;\n    found: boolean;\n    stale: boolean;\n    remediated: boolean;\n    reason?: string;\n}\n\nexport interface PiLaunchPreflightResult {\n    coreSymlinkStatus: CoreSymlinkStatus;\n    staleOverride: PiMcpAdapterOverrideCheck;\n}\n\nexport async function remediateStalePiMcpAdapterOverride(\n    dryRun: boolean,\n    log?: (message: string) => void,\n): Promise<PiMcpAdapterOverrideCheck> {\n    const stat = await fs.lstat(PI_MCP_ADAPTER_OVERRIDE_DIR).catch(() => null);\n    if (!stat) {\n        return {\n            path: PI_MCP_ADAPTER_OVERRIDE_DIR,\n            found: false,\n            stale: false,\n            remediated: false,\n        };\n    }\n\n    if (stat.isSymbolicLink()) {\n        return {\n            path: PI_MCP_ADAPTER_OVERRIDE_DIR,\n            found: true,\n            stale: false,\n            remediated: false,\n        };\n    }\n\n    const hasRequiredEntry = await fs.pathExists(path.join(PI_MCP_ADAPTER_OVERRIDE_DIR, PI_MCP_ADAPTER_REQUIRED_ENTRY));\n    if (stat.isDirectory() && hasRequiredEntry) {\n        return {\n            path: PI_MCP_ADAPTER_OVERRIDE_DIR,\n            found: true,\n            stale: false,\n            remediated: false,\n        };\n    }\n\n    const reason = stat.isDirectory()\n        ? `missing ${PI_MCP_ADAPTER_REQUIRED_ENTRY}`\n        : 'not a directory/symlink';\n\n    if (dryRun) {\n        log?.(kleur.dim(`[DRY RUN] would remove stale pi-mcp-adapter override (${reason})`));\n        return {\n            path: PI_MCP_ADAPTER_OVERRIDE_DIR,\n            found: true,\n            stale: true,\n            remediated: false,\n            reason,\n        };\n    }\n\n    await fs.remove(PI_MCP_ADAPTER_OVERRIDE_DIR);\n    log?.(kleur.dim(`Removed stale pi-mcp-adapter override (${reason})`));\n    return {\n        path: PI_MCP_ADAPTER_OVERRIDE_DIR,\n        found: true,\n        stale: true,\n        remediated: true,\n        reason,\n    };\n}\n\nexport async function runPiLaunchPreflight(\n    projectRoot: string,\n    dryRun: boolean,\n    log?: (message: string) => void,\n): Promise<PiLaunchPreflightResult> {\n    await syncManagedPiThemes(resolveManagedPiThemesSourceDir(), dryRun, log);\n    const staleOverride = await remediateStalePiMcpAdapterOverride(dryRun, log);\n    const coreSymlinkStatus = await ensureCorePackageSymlink(\n        path.join(projectRoot, '.xtrm', 'extensions', 'core'),\n        projectRoot,\n        dryRun,\n        log,\n    );\n\n    return {\n        coreSymlinkStatus,\n        staleOverride,\n    };\n}\n\n/**\n * Update .pi/settings.json with extension package paths.\n * Pi only auto-discovers global extensions — project-scoped needs settings.json.\n */\nfunction isXtrmExtensionsSetting(entry: string): boolean {\n    const normalizedEntry = entry.replaceAll('\\\\', '/').replace(/\\/$/, '');\n    return normalizedEntry === PROJECT_EXTENSIONS_ENTRY || normalizedEntry === '.xtrm/extensions';\n}\n\nasync function cleanupLegacyProjectExtensionCopies(\n    projectRoot: string,\n    dryRun: boolean,\n    log?: (message: string) => void,\n): Promise<{ removed: string[]; failed: string[] }> {\n    const piSettingsPath = path.join(projectRoot, '.pi', 'settings.json');\n\n    let existingSettings: { extensions?: string[] } = {};\n    try {\n        existingSettings = await fs.readJson(piSettingsPath);\n    } catch {\n        return { removed: [], failed: [] };\n    }\n\n    const pointsToXtrmExtensions = (existingSettings.extensions ?? []).some(isXtrmExtensionsSetting);\n    if (!pointsToXtrmExtensions) return { removed: [], failed: [] };\n\n    const legacyExtensionsDir = path.join(projectRoot, '.pi', 'extensions');\n    if (!await fs.pathExists(legacyExtensionsDir)) return { removed: [], failed: [] };\n\n    const removed: string[] = [];\n    const failed: string[] = [];\n\n    for (const ext of MANAGED_EXTENSIONS) {\n        const legacyExtPath = path.join(legacyExtensionsDir, ext.id);\n        const legacyStat = await fs.lstat(legacyExtPath).catch(() => null);\n        if (!legacyStat || legacyStat.isSymbolicLink() || !legacyStat.isDirectory()) {\n            continue;\n        }\n\n        if (dryRun) {\n            log?.(kleur.dim(`[DRY RUN] - .pi/extensions/${ext.id} (legacy copy)`));\n            continue;\n        }\n\n        try {\n            await fs.remove(legacyExtPath);\n            removed.push(ext.id);\n            log?.(kleur.dim(`Removed legacy .pi/extensions/${ext.id}`));\n        } catch (err) {\n            failed.push(ext.id);\n            log?.(kleur.red(`✗ Failed to remove legacy .pi/extensions/${ext.id}: ${err}`));\n        }\n    }\n\n    return { removed, failed };\n}\n\ntype PiSettingsShape = Record<string, unknown> & {\n    extensions?: unknown;\n    skills?: unknown;\n    packages?: unknown;\n    serena?: unknown;\n    theme?: unknown;\n};\n\nconst LEGACY_XTRM_THEMES: Record<string, string> = {\n    'pidex-dark': 'xtrm-dark',\n    'pidex-light': 'xtrm-light',\n    'pidex-dark-flattools': 'xtrm-dark-flattools',\n    'pidex-light-flattools': 'xtrm-light-flattools',\n};\n\nfunction normalizeXtrmTheme(theme: unknown): unknown {\n    return typeof theme === 'string' ? LEGACY_XTRM_THEMES[theme] ?? theme : theme;\n}\n\nconst SERENA_DEFAULT_BLOCKED_TOOLS = new Set(['read', 'write', 'edit', 'ls', 'find', 'grep']);\n\nfunction normalizeStringArray(value: unknown): string[] {\n    if (!Array.isArray(value)) return [];\n    return value.filter((entry): entry is string => typeof entry === 'string');\n}\n\nfunction normalizeRecord(value: unknown): Record<string, unknown> {\n    return value && typeof value === 'object' && !Array.isArray(value)\n        ? { ...(value as Record<string, unknown>) }\n        : {};\n}\n\nfunction normalizeSerenaSettings(value: unknown): Record<string, unknown> {\n    const serena = normalizeRecord(value);\n    const blockedTools = normalizeStringArray(serena.blockedTools);\n    const hasCustomBlocklist = blockedTools.some((toolName) => !SERENA_DEFAULT_BLOCKED_TOOLS.has(toolName));\n\n    // pi-serena-tools defaults to blocking native read/write/edit/ls/find/grep\n    // when this key is missing, forcing agents onto Serena read_file and\n    // surfacing relative_path/root errors. Seed [] for fresh projects and migrate\n    // legacy built-in-only lists, but preserve custom lists blocking Serena tools.\n    if (!Array.isArray(serena.blockedTools) || !hasCustomBlocklist) {\n        serena.blockedTools = [];\n    }\n\n    return serena;\n}\n\nfunction normalizePiSkillsEntries(existingSkills: readonly string[]): string[] {\n    return existingSkills.filter((entry, index) => existingSkills.indexOf(entry) === index && !LEGACY_XTRM_SKILLS_ENTRIES.has(entry));\n}\n\nasync function appendSkillsPointerLog(event: {\n    readonly scope: 'global' | 'project';\n    readonly target: string;\n    readonly existing: string | null;\n    readonly action: 'normalize';\n    readonly outcome: 'ok';\n}): Promise<void> {\n    const logPath = path.join(homedir(), '.xtrm', 'logs', 'skills-migration.jsonl');\n    await fs.ensureDir(path.dirname(logPath));\n    await fs.appendFile(logPath, `${JSON.stringify({\n        timestamp: new Date().toISOString(),\n        component: 'skills-bootstrap',\n        event: `pointer.${event.action}`,\n        scope: event.scope,\n        target: event.target,\n        existing: event.existing,\n        action: event.action,\n        outcome: event.outcome,\n    })}\\n`);\n}\n\nexport function pruneConflictingPiPackageEntries(entries: readonly string[]): { kept: string[]; removed: string[] } {\n    const kept: string[] = [];\n    const removed: string[] = [];\n\n    for (const entry of entries) {\n        if (CONFLICTING_PI_PACKAGE_IDS.has(entry)) {\n            removed.push(entry);\n            continue;\n        }\n        kept.push(entry);\n    }\n\n    return { kept, removed };\n}\n\nasync function pruneConflictingPiPackagesFromSettings(\n    settingsPath: string,\n    scopeLabel: string,\n    dryRun: boolean,\n    migrateXtrmPreferences = false,\n    log?: (message: string) => void,\n): Promise<string[]> {\n    if (!await fs.pathExists(settingsPath)) {\n        return [];\n    }\n\n    let existingSettings: PiSettingsShape = {};\n    try {\n        existingSettings = await fs.readJson(settingsPath) as PiSettingsShape;\n    } catch {\n        return [];\n    }\n\n    const existingPackages = normalizeStringArray(existingSettings.packages);\n    const { kept, removed } = pruneConflictingPiPackageEntries(existingPackages);\n    const theme = migrateXtrmPreferences ? normalizeXtrmTheme(existingSettings.theme) : existingSettings.theme;\n    const themeChanged = theme !== existingSettings.theme;\n    const hasObsoleteCompactSetting = migrateXtrmPreferences && 'xtrmExternalCompact' in existingSettings;\n    if (removed.length === 0 && !themeChanged && !hasObsoleteCompactSetting) {\n        return [];\n    }\n\n    if (dryRun) {\n        if (removed.length > 0) {\n            log?.(kleur.dim(`[DRY RUN] would remove conflicting Pi package(s) from ${scopeLabel}: ${removed.join(', ')}`));\n        }\n        if (themeChanged) {\n            log?.(kleur.dim(`[DRY RUN] would migrate Pi theme in ${scopeLabel}: ${String(existingSettings.theme)} → ${String(theme)}`));\n        }\n        if (hasObsoleteCompactSetting) {\n            log?.(kleur.dim(`[DRY RUN] would remove obsolete xtrmExternalCompact from ${scopeLabel}`));\n        }\n        return removed;\n    }\n\n    const nextSettings: PiSettingsShape = { ...existingSettings };\n    if (removed.length > 0) nextSettings.packages = kept;\n    if (themeChanged) nextSettings.theme = theme;\n    if (hasObsoleteCompactSetting) delete nextSettings.xtrmExternalCompact;\n    await fs.writeJson(settingsPath, nextSettings, { spaces: 2 });\n    if (removed.length > 0) {\n        log?.(kleur.dim(`Removed conflicting Pi package(s) from ${scopeLabel}: ${removed.join(', ')}`));\n    }\n    if (themeChanged) {\n        log?.(kleur.dim(`Migrated Pi theme in ${scopeLabel}: ${String(existingSettings.theme)} → ${String(theme)}`));\n    }\n    return removed;\n}\n\nexport async function cleanupConflictingPiPackageSettings(\n    projectRoot: string,\n    dryRun: boolean,\n    isGlobal: boolean,\n    log?: (message: string) => void,\n    agentDir = PI_AGENT_DIR,\n): Promise<void> {\n    await pruneConflictingPiPackagesFromSettings(\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal -- agentDir is an internal runtime path and filename is fixed.\n        path.join(agentDir, 'settings.json'),\n        '~/.pi/agent/settings.json',\n        dryRun,\n        isGlobal,\n        log,\n    );\n    await pruneConflictingPiPackagesFromSettings(\n        path.join(projectRoot, '.pi', 'settings.json'),\n        `${projectRoot}/.pi/settings.json`,\n        dryRun,\n        true,\n        log,\n    );\n}\n\nexport async function updatePiSettings(\n    projectRoot: string,\n    dryRun: boolean,\n    log?: (message: string) => void,\n): Promise<void> {\n    const piDirPath = path.join(projectRoot, '.pi');\n    const piSettingsPath = path.join(piDirPath, 'settings.json');\n\n    if (dryRun) {\n        log?.(kleur.dim(`[DRY RUN] would ensure .pi/settings.json with ${PROJECT_EXTENSION_PACKAGE_ID}`));\n        return;\n    }\n\n    await fs.ensureDir(piDirPath);\n\n    let existingSettings: PiSettingsShape = {};\n    try {\n        existingSettings = await fs.readJson(piSettingsPath) as PiSettingsShape;\n    } catch (error) {\n        if ((error as NodeJS.ErrnoException).code !== 'ENOENT') throw error;\n    }\n\n    const LEGACY_PACKAGE_IDS = new Set(['npm:@xtrm/pi-extensions', './extensions/']);\n    const existingProjectPackages = normalizeStringArray(existingSettings.packages)\n        .filter((entry) => !LEGACY_PACKAGE_IDS.has(entry) && !entry.startsWith('./extensions/'));\n    const { kept: existingPackages } = pruneConflictingPiPackageEntries(existingProjectPackages);\n    if (!existingPackages.includes(PROJECT_EXTENSION_PACKAGE_ID)) {\n        existingPackages.push(PROJECT_EXTENSION_PACKAGE_ID);\n    }\n\n    const existingSkills = normalizeStringArray(existingSettings.skills);\n    const normalizedSkills = normalizePiSkillsEntries(existingSkills);\n    if (JSON.stringify(existingSkills) !== JSON.stringify(normalizedSkills)) {\n        await appendSkillsPointerLog({\n            scope: 'project',\n            target: normalizedSkills.join(','),\n            existing: existingSkills.join(',') || null,\n            action: 'normalize',\n            outcome: 'ok',\n        });\n    }\n\n    const existingExtensions = normalizeStringArray(existingSettings.extensions)\n        .filter((entry) => !LEGACY_PROJECT_EXTENSION_ENTRIES.has(entry));\n\n    const nextSettings: PiSettingsShape = {\n        ...existingSettings,\n        extensions: existingExtensions,\n        packages: existingPackages,\n        serena: normalizeSerenaSettings(existingSettings.serena),\n        theme: normalizeXtrmTheme(existingSettings.theme),\n    };\n    if (normalizedSkills.length > 0) {\n        nextSettings.skills = normalizedSkills;\n    } else {\n        delete nextSettings.skills;\n    }\n    delete nextSettings.xtrmExternalCompact;\n\n    await fs.writeJson(piSettingsPath, nextSettings, { spaces: 2 });\n    log?.(kleur.dim(`Updated .pi/settings.json → ${PROJECT_EXTENSION_PACKAGE_ID} + ${normalizedSkills.join(' + ')}`));\n}\n\n/**\n * Execute Pi runtime sync.\n */\nexport async function executePiSync(\n    plan: PiRuntimePlan,\n    sourceDir: string,\n    targetDir: string,\n    opts: PiSyncOptions = {},\n): Promise<PiSyncResult> {\n    const {\n        dryRun = false,\n        isGlobal = false,\n        projectRoot,\n        removeOrphaned = true,\n        log = (msg) => console.log(kleur.dim(`    ${msg}`)),\n    } = opts;\n\n    const result: PiSyncResult = {\n        extensionsAdded: [],\n        extensionsUpdated: [],\n        extensionsRemoved: [],\n        packagesInstalled: [],\n        failed: [],\n    };\n\n    // Ensure target directory exists\n    if (!dryRun) {\n        await fs.ensureDir(targetDir);\n    }\n\n    // Sync missing + stale extensions\n    const toSync = [...plan.missingExtensions, ...plan.staleExtensions];\n\n    for (const status of toSync) {\n        const { ext } = status;\n        const srcPath = path.join(sourceDir, ext.id);\n        const dstPath = path.join(targetDir, ext.id);\n\n        if (dryRun) {\n            log(`[DRY RUN] ${status.installed ? '↻' : '+'} ${ext.displayName}`);\n            continue;\n        }\n\n        try {\n            // Remove stale copy/symlink, then create a relative symlink into .xtrm/extensions\n            await fs.remove(dstPath);\n            const relTarget = path.relative(targetDir, srcPath);\n            await fs.symlink(relTarget, dstPath);\n            if (status.installed) {\n                result.extensionsUpdated.push(ext.id);\n                log(`↻ ${ext.displayName} (symlinked)`);\n            } else {\n                result.extensionsAdded.push(ext.id);\n                log(`+ ${ext.displayName} (symlinked)`);\n            }\n        } catch (err) {\n            result.failed.push(ext.id);\n            log(kleur.red(`✗ ${ext.displayName}: ${err}`));\n        }\n    }\n\n    // Remove orphaned extensions (xtrm-920d)\n    if (removeOrphaned && plan.orphanedExtensions.length > 0) {\n        for (const orphanId of plan.orphanedExtensions) {\n            const orphanPath = path.join(targetDir, orphanId);\n\n            if (dryRun) {\n                log(kleur.red(`[DRY RUN] - ${orphanId} (orphaned)`));\n                continue;\n            }\n\n            try {\n                await fs.remove(orphanPath);\n                result.extensionsRemoved.push(orphanId);\n                log(kleur.red(`- ${orphanId} (orphaned)`));\n            } catch (err) {\n                result.failed.push(orphanId);\n                log(kleur.red(`✗ ${orphanId}: ${err}`));\n            }\n        }\n    }\n\n    // Install missing packages (always global at ~/.pi/agent/npm/)\n    for (const status of plan.missingPackages) {\n        const { pkg } = status;\n        const installArgs = ['install', pkg.id];\n\n        if (dryRun) {\n            log(`[DRY RUN] pi ${installArgs.join(' ')}`);\n            continue;\n        }\n\n        try {\n            const installAttempt = installPiPackageWithFallback(pkg.id, log);\n            if (installAttempt.status === 0) {\n                result.packagesInstalled.push(pkg.id);\n                log(`${sym.ok} ${pkg.displayName}${installAttempt.retriedWithNpmjs ? ' (npmjs fallback)' : ''}`);\n            } else {\n                result.failed.push(pkg.id);\n                log(kleur.yellow(`⚠ ${pkg.displayName} — install failed`));\n                for (const hint of getPiPackageInstallFailureHint(pkg.id, installAttempt.output)) {\n                    log(kleur.yellow(`  → ${hint}`));\n                }\n            }\n        } catch (err) {\n            result.failed.push(pkg.id);\n            log(kleur.red(`✗ ${pkg.displayName}: ${err}`));\n        }\n    }\n\n    return result;\n}\n\n// ── Full Sync Flow ───────────────────────────────────────────────────────────\n\nexport interface PiRuntimeOptions {\n    dryRun?: boolean;\n    isGlobal?: boolean;\n    projectRoot?: string;\n}\n\n/**\n * Run full Pi runtime sync flow: inventory -> plan -> sync.\n *\n * Global installs mirror extension directories into ~/.pi/agent/extensions/.\n * Project installs use package-based extension registration via `pi install npm:@jaggerxtrm/pi-extensions`.\n */\nexport async function runPiRuntimeSync(opts: PiRuntimeOptions = {}): Promise<PiSyncResult> {\n    const { dryRun = false, isGlobal = false, projectRoot } = opts;\n\n    const pkgRoot = resolvePkgRoot();\n    const sourceDir = resolveManagedPiExtensionsSourceDir(pkgRoot);\n    const resolvedProjectRoot = projectRoot || process.cwd();\n    const log = (msg: string) => console.log(kleur.dim(`    ${msg}`));\n\n    const result: PiSyncResult = {\n        extensionsAdded: [],\n        extensionsUpdated: [],\n        extensionsRemoved: [],\n        packagesInstalled: [],\n        failed: [],\n    };\n\n    if (!sourceDir || !await fs.pathExists(sourceDir)) {\n        console.log(kleur.dim('\\n  Managed extensions: skipped (not bundled in npm package)\\n'));\n        return result;\n    }\n\n    const preflight = await runPiLaunchPreflight(resolvedProjectRoot, dryRun, log);\n    if (preflight.staleOverride.remediated) {\n        result.extensionsRemoved.push('pi-mcp-adapter');\n    }\n\n    await cleanupConflictingPiPackageSettings(resolvedProjectRoot, dryRun, isGlobal, log);\n\n    if (isGlobal) {\n        const targetDir = path.join(PI_AGENT_DIR, 'extensions');\n        const plan = await inventoryPiRuntime(sourceDir, targetDir);\n        renderPiRuntimePlan(plan);\n\n        if (!plan.allPresent) {\n            const synced = await executePiSync(plan, sourceDir, targetDir, {\n                dryRun,\n                isGlobal: true,\n                removeOrphaned: true,\n            });\n            result.extensionsAdded.push(...synced.extensionsAdded);\n            result.extensionsUpdated.push(...synced.extensionsUpdated);\n            result.extensionsRemoved.push(...synced.extensionsRemoved);\n            result.packagesInstalled.push(...synced.packagesInstalled);\n            result.failed.push(...synced.failed);\n        }\n\n        const alwaysGlobalInstallResult = await ensureAlwaysGlobalPiPackages(dryRun, log);\n        result.packagesInstalled.push(...alwaysGlobalInstallResult.installed);\n        result.failed.push(...alwaysGlobalInstallResult.failed);\n        return result;\n    }\n\n    const installedPkgIds = getInstalledPiPackages();\n    const packageStatuses = getProjectRequiredPackageStatuses(installedPkgIds);\n    const missingPackages = packageStatuses.filter((status) => !status.installed);\n\n    console.log(kleur.bold('\\n  Pi Runtime'));\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n    const extensionPackageInstalled = packageStatuses.some(\n        (status) => status.pkg.id === PROJECT_EXTENSION_PACKAGE_ID && status.installed,\n    );\n    console.log(kleur.dim(`  Extensions: ${extensionPackageInstalled ? 'package installed' : 'package missing'} (${PROJECT_EXTENSION_PACKAGE_ID})`));\n    const pkgOk = packageStatuses.filter((status) => status.installed).length;\n    console.log(kleur.dim(`  Packages:   ${pkgOk}/${packageStatuses.length} installed`));\n    if (missingPackages.length > 0) {\n        const names = missingPackages.map((status) => status.pkg.displayName).join(', ');\n        console.log(kleur.yellow(`  Missing:    ${names}`));\n    }\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n    const legacyCleanup = await cleanupLegacyProjectExtensionCopies(resolvedProjectRoot, dryRun, log);\n    result.extensionsRemoved.push(...legacyCleanup.removed);\n    result.failed.push(...legacyCleanup.failed);\n\n    // Clean stale global extension symlinks from pre-package-mode installs\n    const globalExtDir = path.join(PI_AGENT_DIR, 'extensions');\n    if (await fs.pathExists(globalExtDir)) {\n        const MANAGED_EXT_IDS = new Set(MANAGED_EXTENSIONS.map(e => e.id));\n        const STALE_SYMLINKS = new Set([...MANAGED_EXT_IDS, 'core', 'gitnexus', 'serena']);\n        const globalEntries = await fs.readdir(globalExtDir, { withFileTypes: true });\n        for (const entry of globalEntries) {\n            if (entry.isSymbolicLink() && STALE_SYMLINKS.has(entry.name)) {\n                if (!dryRun) {\n                    await fs.remove(path.join(globalExtDir, entry.name));\n                }\n                result.extensionsRemoved.push(entry.name);\n                log(`Removed stale global symlink: ${entry.name}`);\n            }\n        }\n        const staleNodeModules = path.join(globalExtDir, 'node_modules');\n        if (await fs.pathExists(staleNodeModules)) {\n            if (!dryRun) {\n                await fs.remove(staleNodeModules);\n            }\n            log('Removed stale global extensions/node_modules');\n        }\n    }\n\n    for (const status of missingPackages) {\n        const { pkg } = status;\n        if (dryRun) {\n            log(`[DRY RUN] pi install ${pkg.id}`);\n            continue;\n        }\n\n        try {\n            const installAttempt = installPiPackageWithFallback(pkg.id, log);\n            if (installAttempt.status === 0) {\n                result.packagesInstalled.push(pkg.id);\n                log(`${sym.ok} ${pkg.displayName}${installAttempt.retriedWithNpmjs ? ' (npmjs fallback)' : ''}`);\n                continue;\n            }\n\n            result.failed.push(pkg.id);\n            log(kleur.yellow(`⚠ ${pkg.displayName} — install failed`));\n            for (const hint of getPiPackageInstallFailureHint(pkg.id, installAttempt.output)) {\n                log(kleur.yellow(`  → ${hint}`));\n            }\n        } catch (err) {\n            result.failed.push(pkg.id);\n            log(kleur.red(`✗ ${pkg.displayName}: ${err}`));\n        }\n    }\n\n    const alwaysGlobalInstallResult = await ensureAlwaysGlobalPiPackages(dryRun, log);\n    result.packagesInstalled.push(...alwaysGlobalInstallResult.installed);\n    result.failed.push(...alwaysGlobalInstallResult.failed);\n\n    const skillsRoot = resolveSkillsRoot(resolvedProjectRoot);\n    if (await fs.pathExists(path.join(skillsRoot, 'default'))) {\n        const invariantViolations = await validateSkillsInvariants(skillsRoot);\n        if (invariantViolations.length > 0) {\n            const summary = invariantViolations.map((violation) => `${violation.code}: ${violation.message}`).join('; ');\n            throw new Error(`Skills invariants failed. ${summary}`);\n        }\n\n        if (!dryRun) {\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal -- skillsRoot is resolved from the trusted project root.\n            await fs.remove(path.join(skillsRoot, 'active'));\n        }\n    }\n\n    runExternalPiToolPatch(pkgRoot, dryRun, log);\n\n    await updatePiSettings(resolvedProjectRoot, dryRun, log);\n\n    const requiredFailed = missingPackages.filter((status) => status.pkg.required && result.failed.includes(status.pkg.id));\n    if (requiredFailed.length === 0) {\n        console.log(t.success('  ✓ All required items present.\\n'));\n    } else {\n        console.log(kleur.yellow('  ⚠ Missing required items.\\n'));\n    }\n\n    return result;\n}\n","import kleur from 'kleur';\nimport prompts from 'prompts';\n\ninterface DestructiveConfirmationOptions {\n    yes?: boolean;\n    message: string;\n    initial?: boolean;\n}\n\nfunction hasInteractiveTTY(): boolean {\n    return Boolean(process.stdout.isTTY && process.stdin.isTTY);\n}\n\nfunction isTestRuntime(): boolean {\n    return Boolean(process.env.VITEST || process.env.NODE_ENV === 'test');\n}\n\nexport async function confirmDestructiveAction(opts: DestructiveConfirmationOptions): Promise<boolean> {\n    if (opts.yes) return true;\n\n    if (!hasInteractiveTTY() && !isTestRuntime()) {\n        console.error(kleur.red(\n            '\\n  ✗ Destructive command requires confirmation in interactive mode.\\n' +\n            '  Re-run with --yes to allow non-interactive execution.\\n',\n        ));\n        return false;\n    }\n\n    const { confirm } = await prompts({\n        type: 'confirm',\n        name: 'confirm',\n        message: opts.message,\n        initial: opts.initial ?? false,\n    });\n\n    return Boolean(confirm);\n}\n","/**\n * Unified machine-bootstrap phase for managed third-party dependencies.\n *\n * Models all external CLIs used by the XTRM workflow in a single registry.\n * Provides inventory -> plan -> install -> verify lifecycle.\n */\n\nimport { spawnSync } from 'child_process';\nimport path from 'node:path';\nimport kleur from 'kleur';\nimport { t } from '../utils/theme.js';\n\n// ── Dependency Registry ───────────────────────────────────────────────────────\n\nexport interface ManagedDependency {\n    /** Unique identifier */\n    id: string;\n    /** Binary name to check on PATH */\n    cli: string;\n    /** Flag to get version (e.g. '--version', 'version') */\n    versionFlag: string;\n    /** Human-readable name for display */\n    displayName: string;\n    /** One-line description */\n    description: string;\n    /** Required = workflow gates depend on it; recommended = enhances workflow */\n    required: boolean;\n    /** Install instructions per platform */\n    install: PlatformInstall;\n}\n\ninterface PlatformInstall {\n    /** Default install command (all platforms) */\n    default: InstallStep[];\n    /** macOS-specific override */\n    darwin?: InstallStep[];\n}\n\ninterface InstallStep {\n    cmd: string;\n    args: string[];\n    /** If true, run with sudo on Linux */\n    sudo?: boolean;\n}\n\nconst OFFICIAL_CLAUDE_PLUGINS = ['serena', 'context7'] as const;\nconst OFFICIAL_MARKETPLACE = 'claude-plugins-official';\n\nconst MANAGED_DEPS: ManagedDependency[] = [\n    {\n        id: 'bd',\n        cli: 'bd',\n        versionFlag: '--version',\n        displayName: 'beads (bd)',\n        description: 'git-backed issue tracker — workflow enforcement backend',\n        required: true,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', '@beads/bd'] }],\n        },\n    },\n    {\n        id: 'dolt',\n        cli: 'dolt',\n        versionFlag: 'version',\n        displayName: 'dolt',\n        description: 'SQL+git storage backend for beads',\n        required: true,\n        install: {\n            darwin: [{ cmd: 'brew', args: ['install', 'dolt'] }],\n            default: [\n                {\n                    cmd: 'bash',\n                    args: ['-c', 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash'],\n                    sudo: true,\n                },\n            ],\n        },\n    },\n    {\n        id: 'bv',\n        cli: 'bv',\n        versionFlag: '--version',\n        displayName: 'bv',\n        description: 'graph-aware triage for beads issues',\n        required: true,\n        install: {\n            default: [\n                {\n                    cmd: 'bash',\n                    args: ['-c', 'curl -fsSL https://raw.githubusercontent.com/Jaggerxtrm/beads_viewer/main/scripts/install-bv.sh | bash'],\n                },\n            ],\n        },\n    },\n    {\n        id: 'oh-pi',\n        cli: 'pi',\n        versionFlag: '--version',\n        displayName: 'oh-pi (pi)',\n        description: 'Pi agent runtime',\n        required: true,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', 'oh-pi'] }],\n        },\n    },\n    {\n        id: 'pnpm',\n        cli: 'pnpm',\n        versionFlag: '--version',\n        displayName: 'pnpm',\n        description: 'fast package manager — required by Pi extensions',\n        required: true,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', 'pnpm'] }],\n        },\n    },\n    {\n        id: 'gitnexus',\n        cli: 'gitnexus',\n        versionFlag: '--version',\n        displayName: 'gitnexus',\n        description: 'code intelligence — call graph, impact analysis',\n        required: false,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', 'gitnexus'] }],\n        },\n    },\n    {\n        id: 'deepwiki',\n        cli: 'deepwiki',\n        versionFlag: '--version',\n        displayName: 'deepwiki',\n        description: 'AI-powered repo documentation',\n        required: false,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', '@seflless/deepwiki'] }],\n        },\n    },\n    {\n        id: 'ctx7',\n        cli: 'ctx7',\n        versionFlag: '--version',\n        displayName: 'ctx7',\n        description: 'Context7 CLI — library docs lookup for specialists',\n        required: false,\n        install: {\n            default: [{ cmd: 'npm', args: ['install', '-g', 'ctx7'] }],\n        },\n    },\n];\n\n// ── Inventory ─────────────────────────────────────────────────────────────────\n\nexport interface DependencyStatus {\n    dep: ManagedDependency;\n    installed: boolean;\n    version?: string;\n}\n\nexport interface BootstrapPlan {\n    deps: DependencyStatus[];\n    missingRequired: DependencyStatus[];\n    missingRecommended: DependencyStatus[];\n    allRequiredPresent: boolean;\n    allPresent: boolean;\n}\n\n// Directories that install steps may write to but may NOT be in PATH yet\n// in the same process (notably on fresh CI runners where ~/.local/bin is\n// only added by .profile, which non-interactive shells don't source).\n// We extend PATH once on module load so spawnSync can find them.\nconst FALLBACK_BIN_DIRS = [\n    `${process.env.HOME ?? ''}/.local/bin`,\n    '/usr/local/bin',\n    '/opt/homebrew/bin',\n].filter(Boolean);\n\n(function extendPathOnce(): void {\n    const currentPath = process.env.PATH ?? '';\n    const existing = new Set(currentPath.split(path.delimiter));\n    const additions = FALLBACK_BIN_DIRS.filter(dir => !existing.has(dir));\n    if (additions.length > 0) {\n        process.env.PATH = [currentPath, ...additions].filter(Boolean).join(path.delimiter);\n    }\n})();\n\nfunction checkDep(dep: ManagedDependency): DependencyStatus {\n    const result = spawnSync(dep.cli, [dep.versionFlag], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n        timeout: 5000,\n    });\n\n    if (result.status !== 0) {\n        return { dep, installed: false };\n    }\n\n    const version = (result.stdout ?? '').trim().split('\\n')[0]?.trim();\n    return { dep, installed: true, version: version || undefined };\n}\n\nexport function inventoryDeps(): BootstrapPlan {\n    const deps = MANAGED_DEPS.map(checkDep);\n    const missingRequired = deps.filter(d => !d.installed && d.dep.required);\n    const missingRecommended = deps.filter(d => !d.installed && !d.dep.required);\n\n    return {\n        deps,\n        missingRequired,\n        missingRecommended,\n        allRequiredPresent: missingRequired.length === 0,\n        allPresent: deps.every(d => d.installed),\n    };\n}\n\n// ── Plan Rendering ────────────────────────────────────────────────────────────\n\nexport function renderBootstrapPlan(plan: BootstrapPlan): void {\n    console.log(kleur.bold('\\n  Machine Bootstrap'));\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n    for (const status of plan.deps) {\n        const { dep, installed, version } = status;\n        const icon = installed ? kleur.green('  ✓') : (dep.required ? kleur.yellow('  +') : kleur.dim('  ○'));\n        const label = dep.displayName.padEnd(20);\n        const tag = dep.required ? '' : kleur.dim(' (recommended)');\n\n        if (installed) {\n            const ver = version ? kleur.dim(` ${version}`) : '';\n            console.log(`${icon} ${label}${ver}`);\n        } else {\n            console.log(`${icon} ${label}${kleur.white('will install')}${tag}`);\n        }\n    }\n\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n    const { missingRequired, missingRecommended } = plan;\n    if (missingRequired.length === 0 && missingRecommended.length === 0) {\n        console.log(t.success('  All dependencies present.\\n'));\n    } else {\n        const parts: string[] = [];\n        if (missingRequired.length > 0) {\n            parts.push(`${missingRequired.length} required`);\n        }\n        if (missingRecommended.length > 0) {\n            parts.push(`${missingRecommended.length} recommended`);\n        }\n        console.log(kleur.dim(`  ${parts.join(', ')} to install\\n`));\n    }\n}\n\n// ── Execution ─────────────────────────────────────────────────────────────────\n\ninterface ExecuteOpts {\n    /** Install recommended deps too (not just required) */\n    includeRecommended?: boolean;\n    /** Dry run — print what would happen but don't run anything */\n    dryRun?: boolean;\n}\n\nexport interface BootstrapResult {\n    installed: string[];\n    failed: string[];\n    skipped: string[];\n}\n\nfunction getInstallSteps(dep: ManagedDependency): InstallStep[] {\n    if (process.platform === 'darwin' && dep.install.darwin) {\n        return dep.install.darwin;\n    }\n    return dep.install.default;\n}\n\nexport function executeBootstrap(plan: BootstrapPlan, opts: ExecuteOpts = {}): BootstrapResult {\n    const { includeRecommended = true, dryRun = false } = opts;\n    const result: BootstrapResult = { installed: [], failed: [], skipped: [] };\n\n    const toInstall = plan.deps.filter(d => {\n        if (d.installed) return false;\n        if (d.dep.required) return true;\n        return includeRecommended;\n    });\n\n    if (toInstall.length === 0) return result;\n\n    console.log(kleur.bold('\\n  Installing dependencies...'));\n\n    for (const status of toInstall) {\n        const { dep } = status;\n        const steps = getInstallSteps(dep);\n\n        if (dryRun) {\n            for (const step of steps) {\n                const prefix = step.sudo ? 'sudo ' : '';\n                console.log(kleur.dim(`  [DRY RUN] ${prefix}${step.cmd} ${step.args.join(' ')}`));\n            }\n            result.skipped.push(dep.id);\n            continue;\n        }\n\n        console.log(kleur.dim(`\\n  Installing ${dep.displayName}...`));\n\n        let ok = true;\n        for (const step of steps) {\n            const cmd = step.sudo && process.platform !== 'darwin' ? 'sudo' : step.cmd;\n            const args = step.sudo && process.platform !== 'darwin'\n                ? [step.cmd, ...step.args]\n                : step.args;\n\n            const r = spawnSync(cmd, args, { stdio: 'inherit' });\n            if (r.status !== 0) {\n                ok = false;\n                break;\n            }\n        }\n\n        if (ok) {\n            console.log(t.success(`  ✓ ${dep.displayName} installed`));\n            result.installed.push(dep.id);\n        } else {\n            const installHint = steps.map(s => `${s.cmd} ${s.args.join(' ')}`).join(' && ');\n            console.log(kleur.yellow(`  ⚠ Failed to install ${dep.displayName}. Run manually: ${installHint}`));\n            result.failed.push(dep.id);\n        }\n    }\n\n    // Mark deps that weren't in toInstall (recommended skipped)\n    for (const d of plan.deps) {\n        if (!d.installed && !toInstall.some(t => t.dep.id === d.dep.id)) {\n            result.skipped.push(d.dep.id);\n        }\n    }\n\n    return result;\n}\n\n// ── Verification ──────────────────────────────────────────────────────────────\n\nexport function verifyBootstrap(): BootstrapPlan {\n    const plan = inventoryDeps();\n\n    if (plan.allPresent) {\n        console.log(t.success('\\n  ✓ All managed dependencies verified.\\n'));\n    } else if (plan.allRequiredPresent) {\n        const missing = plan.missingRecommended.map(d => d.dep.displayName).join(', ');\n        console.log(t.success('\\n  ✓ All required dependencies verified.'));\n        console.log(kleur.dim(`  ○ Recommended not installed: ${missing}\\n`));\n    } else {\n        const missing = plan.missingRequired.map(d => d.dep.displayName).join(', ');\n        console.log(kleur.yellow(`\\n  ⚠ Missing required dependencies: ${missing}`));\n        console.log(kleur.dim('  Re-run xtrm init to install them.\\n'));\n    }\n\n    return plan;\n}\n\nfunction normalizePluginName(name: string): string {\n    const trimmed = name.trim();\n    if (!trimmed) {\n        return '';\n    }\n\n    if (trimmed.startsWith('@')) {\n        return trimmed;\n    }\n\n    const atIndex = trimmed.indexOf('@');\n    return atIndex === -1 ? trimmed : trimmed.slice(0, atIndex);\n}\n\nfunction readInstalledOfficialPlugins(): Set<string> | null {\n    const listResult = spawnSync('claude', ['plugin', 'list', '--json'], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n        timeout: 10000,\n    });\n\n    if (listResult.status !== 0) {\n        return null;\n    }\n\n    let parsed: unknown;\n    try {\n        parsed = JSON.parse(listResult.stdout ?? '[]');\n    } catch {\n        return null;\n    }\n\n    if (!Array.isArray(parsed)) {\n        return null;\n    }\n\n    const installedNames = new Set<string>();\n    for (const entry of parsed) {\n        const rawName = typeof entry === 'string'\n            ? entry\n            : (entry && typeof entry === 'object' && 'name' in entry && typeof (entry as { name: unknown }).name === 'string')\n                ? (entry as { name: string }).name\n                : '';\n\n        const normalized = normalizePluginName(rawName);\n        if (normalized) {\n            installedNames.add(normalized);\n        }\n    }\n\n    return installedNames;\n}\n\nfunction ensureOfficialMarketplace(): void {\n    // Register claude-plugins-official if not already present.\n    // This can be wiped by --prune or a fresh Claude install.\n    const listResult = spawnSync('claude', ['plugin', 'marketplace', 'list'], {\n        encoding: 'utf8', stdio: 'pipe', timeout: 10000,\n    });\n\n    const output = listResult.stdout ?? '';\n    if (output.includes(OFFICIAL_MARKETPLACE)) return;\n\n    spawnSync('claude', [\n        'plugin', 'marketplace', 'add',\n        'https://github.com/anthropics/claude-plugins-official.git',\n    ], { stdio: 'inherit', timeout: 120000 });\n}\n\nfunction tryInstallOfficialPlugin(pluginName: string): boolean {\n    const directInstall = spawnSync('claude', ['plugin', 'install', pluginName, '--scope', 'user'], { stdio: 'inherit' });\n    if (directInstall.status === 0) {\n        return true;\n    }\n\n    const marketplaceQualified = `${pluginName}@${OFFICIAL_MARKETPLACE}`;\n    const marketplaceInstall = spawnSync('claude', ['plugin', 'install', marketplaceQualified, '--scope', 'user'], { stdio: 'inherit' });\n    return marketplaceInstall.status === 0;\n}\n\nfunction ensureOfficialPlugins(dryRun: boolean): void {\n    const installed = readInstalledOfficialPlugins();\n    if (!installed) {\n        console.log(kleur.yellow('  ⚠ Could not determine Claude plugin state; skipping official plugin install check.'));\n        return;\n    }\n\n    const missing = OFFICIAL_CLAUDE_PLUGINS.filter(pluginName => !installed.has(pluginName));\n    if (missing.length === 0) {\n        console.log(kleur.dim('  ✓ Official Claude plugins already installed: serena, context7'));\n        return;\n    }\n\n    console.log(kleur.bold('\\n  Ensuring official Claude plugins...'));\n    ensureOfficialMarketplace();\n\n    for (const pluginName of missing) {\n        if (dryRun) {\n            console.log(kleur.dim(`  [DRY RUN] claude plugin install ${pluginName} --scope user`));\n            continue;\n        }\n\n        console.log(kleur.dim(`  Installing ${pluginName}...`));\n        const installedOk = tryInstallOfficialPlugin(pluginName);\n        if (installedOk) {\n            console.log(t.success(`  ✓ ${pluginName} installed`));\n        } else {\n            console.log(kleur.yellow(`  ⚠ Failed to install ${pluginName}. Try: claude plugin install ${pluginName}@${OFFICIAL_MARKETPLACE}`));\n        }\n    }\n}\n\n// ── Convenience: Full Bootstrap Flow ──────────────────────────────────────────\n// Runs inventory -> plan -> execute -> verify in one call.\n// Used by the init orchestrator's machine-bootstrap phase.\n\nexport async function runMachineBootstrapPhase(opts: { dryRun?: boolean } = {}): Promise<BootstrapResult> {\n    const plan = inventoryDeps();\n    renderBootstrapPlan(plan);\n\n    if (plan.allPresent) {\n        ensureOfficialPlugins(opts.dryRun ?? false);\n        return { installed: [], failed: [], skipped: [] };\n    }\n\n    const result = executeBootstrap(plan, {\n        includeRecommended: true,\n        dryRun: opts.dryRun,\n    });\n\n    if (!opts.dryRun) {\n        verifyBootstrap();\n    }\n\n    ensureOfficialPlugins(opts.dryRun ?? false);\n\n    return result;\n}\n\n// ── Individual Check Helpers (backward compat) ────────────────────────────────\n// These thin wrappers preserve the existing function signatures used across the\n// codebase so callers don't need immediate refactoring.\n\nexport function isBeadsInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'bd')!).installed;\n}\n\nexport function isDoltInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'dolt')!).installed;\n}\n\nexport function isBvInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'bv')!).installed;\n}\n\nexport function isDeepwikiInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'deepwiki')!).installed;\n}\n\nexport function isPiInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'oh-pi')!).installed;\n}\n\nexport function isPnpmInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'pnpm')!).installed;\n}\n\nexport function isGitNexusInstalled(): boolean {\n    return checkDep(MANAGED_DEPS.find(d => d.id === 'gitnexus')!).installed;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport path from 'path';\nimport { spawnSync } from 'node:child_process';\nimport { homedir } from 'node:os';\nimport fs from 'fs-extra';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { t } from '../utils/theme.js';\nimport { runPiInstall } from './pi-install.js';\nimport {\n    ensureCorePackageSymlink,\n    inventoryPiRuntime,\n    remediateStalePiMcpAdapterOverride,\n    resolveManagedPiCoreSourceDir,\n    resolveManagedPiExtensionsSourceDir,\n} from '../core/pi-runtime.js';\nimport { createInstallPiCommand } from './install-pi.js';\nimport { launchWorktreeSession } from '../utils/worktree-session.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\nconst PI_AGENT_DIR = process.env.PI_AGENT_DIR || path.join(homedir(), '.pi', 'agent');\n\ninterface PiProjectPointer {\n    hasProjectSettings: boolean;\n    hasProjectExtensionPackage: boolean;\n    pointsToXtrmExtensions: boolean;\n}\n\nfunction resolveProjectRoot(): string {\n    const gitResult = spawnSync('git', ['rev-parse', '--show-toplevel'], {\n        cwd: process.cwd(), encoding: 'utf8', stdio: 'pipe',\n    });\n    return gitResult.status === 0 ? (gitResult.stdout ?? '').trim() : process.cwd();\n}\n\nfunction hasSettingsEntry(entries: unknown, expectedEntry: string): boolean {\n    if (!Array.isArray(entries)) return false;\n    return entries.some((entry) => {\n        if (typeof entry !== 'string') return false;\n        return entry.replace(/\\\\/g, '/') === expectedEntry;\n    });\n}\n\nasync function getPiProjectPointer(projectRoot: string): Promise<PiProjectPointer> {\n    const settingsPath = path.join(projectRoot, '.pi', 'settings.json');\n    const hasSettingsFile = await fs.pathExists(settingsPath);\n\n    if (!hasSettingsFile) {\n        return { hasProjectSettings: false, hasProjectExtensionPackage: false, pointsToXtrmExtensions: false };\n    }\n\n    try {\n        const settings = await fs.readJson(settingsPath) as { extensions?: unknown; packages?: unknown };\n        const packageEntries = Array.isArray(settings.packages)\n            ? settings.packages.filter((entry): entry is string => typeof entry === 'string')\n            : [];\n\n        return {\n            hasProjectSettings: true,\n            hasProjectExtensionPackage: packageEntries.includes('npm:@jaggerxtrm/pi-extensions'),\n            pointsToXtrmExtensions: hasSettingsEntry(settings.extensions, '../.xtrm/extensions'),\n        };\n    } catch {\n        return { hasProjectSettings: true, hasProjectExtensionPackage: false, pointsToXtrmExtensions: false };\n    }\n}\n\nexport function createPiCommand(): Command {\n    const cmd = new Command('pi')\n        .description('Launch a Pi session in a sandboxed worktree, or manage the Pi runtime')\n        .argument('[name]', 'Optional session name — used as xt/<name> branch (random if omitted)')\n        .option('--role <name>', 'Launch pi as a specialist role (resolved via `sp view <name>`); creates a named tmux session with @agent_task metadata')\n        .option('--bead <id>', 'Attach bead id to the tmux pane via @agent_bead; also appended to the session name slug')\n        .option('--no-attach', 'Create tmux session detached; print `session_name:pane_id` on stdout and exit (default: attach)')\n        .option('--model <name>', 'With --role: forward `--model <name>` to pi (overrides specialist.execution.model)')\n        .option('--thinking <level>', 'With --role: forward `--thinking <level>` to pi (overrides specialist.execution.thinking_level)')\n        .option('--new-session', 'With --role inside $TMUX: force a fresh tmux session instead of running in the current pane (default outside $TMUX)')\n        .option('--ns', 'Alias for --new-session')\n        .option('--parent <target>', 'With --role: override @agent_parent_session on the target pane (target = tmux session name, id, or #{session_id})')\n        .option('--child', 'With --role: explicit form of the auto-behavior — @agent_parent_session = current pane\\'s session_id')\n        .option('--reuse', 'With --role + --new-session (or outside $TMUX): if a session named role-<slug>[-<bead>] already exists, attach to it instead of auto-suffixing a fresh one')\n        .allowUnknownOption(true)\n        .addHelpText('after', `\nPassthrough:\n  Everything after \\`--\\` is forwarded verbatim to the pi runtime — the\n  primary escape hatch for any pi flag not first-classed here. xt-owned\n  flags (--session-dir, --name, --system-prompt, --append-system-prompt)\n  are rejected; batch-mode flags (--print, --list-models, --export,\n  --mode) are dropped with a warning.\n\nExamples:\n  $ xt pi --role researcher --bead xyz -- --gitnexus-cmd 'foo bar'\n  $ xt pi --role chain-coordinator --model openai-codex/gpt-5.4 -- --thinking medium\n`)\n        .action(async (name: string | undefined, opts: {\n            role?: string;\n            bead?: string;\n            attach?: boolean;\n            model?: string;\n            thinking?: string;\n            newSession?: boolean;\n            ns?: boolean;\n            parent?: string;\n            child?: boolean;\n            reuse?: boolean;\n        }) => {\n            // Everything after `--` is forwarded verbatim to pi (with guards\n            // enforced in the launcher). This is the primary escape hatch for\n            // any pi flag not first-classed here.\n            const dashIdx = process.argv.indexOf('--');\n            const passthrough = dashIdx >= 0 ? process.argv.slice(dashIdx + 1) : [];\n            await launchWorktreeSession({\n                runtime: 'pi',\n                name,\n                role: opts.role,\n                bead: opts.bead,\n                attach: opts.attach,\n                model: opts.model,\n                thinking: opts.thinking,\n                newSession: Boolean(opts.newSession || opts.ns),\n                parent: opts.parent,\n                child: Boolean(opts.child),\n                reuse: Boolean(opts.reuse),\n                passthrough,\n            });\n        });\n\n    // 'setup' = interactive first-time API key + OAuth config\n    const piSetup = createInstallPiCommand();\n    piSetup.name('setup');\n    piSetup.description('Interactive first-time setup: API keys, config files, OAuth instructions');\n    cmd.addCommand(piSetup);\n\n    cmd.command('status')\n        .description('Check Pi version and extension deployment drift')\n        .action(async () => {\n            console.log(t.bold('\\n  Pi Runtime Status\\n'));\n\n            const piResult = spawnSync('pi', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n            if (piResult.status === 0) {\n                console.log(t.success(`  ✓ pi ${piResult.stdout.trim()} installed`));\n            } else {\n                console.log(kleur.red('  ✗ pi not found — run: xt pi setup'));\n                console.log('');\n                return;\n            }\n\n            const projectRoot = resolveProjectRoot();\n            const pointer = await getPiProjectPointer(projectRoot);\n\n            const bundleRoot = await findRepoRoot();\n            const sourceDir = resolveManagedPiExtensionsSourceDir(bundleRoot);\n            const globalTargetDir = path.join(PI_AGENT_DIR, 'extensions');\n\n            if (!sourceDir || !await fs.pathExists(sourceDir)) {\n                console.log(kleur.dim('  ○ managed extensions not bundled in this install\\n'));\n                return;\n            }\n\n            const plan = await inventoryPiRuntime(sourceDir, globalTargetDir);\n            const pkgOk = plan.packages.filter(s => s.installed).length;\n            const projectScoped = pointer.hasProjectExtensionPackage || pointer.pointsToXtrmExtensions;\n\n            if (projectScoped) {\n                console.log(kleur.dim('  Scope:      project'));\n                console.log(kleur.dim(`  Extensions: package mode (npm:@jaggerxtrm/pi-extensions${pointer.hasProjectExtensionPackage ? '' : ' missing'})`));\n            } else {\n                console.log(kleur.dim('  Scope:      global'));\n                const extOk = plan.extensions.filter(s => s.installed && !s.stale).length;\n                console.log(kleur.dim(`  Extensions: ${extOk}/${plan.extensions.length} up-to-date`));\n            }\n\n            console.log(kleur.dim(`  Packages:   ${pkgOk}/${plan.packages.length} installed`));\n\n            if (plan.missingPackages.length > 0) {\n                const names = plan.missingPackages.map(s => s.pkg.displayName).join(', ');\n                console.log(kleur.yellow(`  Packages:   ${names}`));\n            }\n\n            if (!projectScoped) {\n                if (plan.missingExtensions.length > 0) {\n                    const names = plan.missingExtensions.map(s => s.ext.displayName).join(', ');\n                    console.log(kleur.yellow(`  Missing:    ${names}`));\n                }\n                if (plan.staleExtensions.length > 0) {\n                    const names = plan.staleExtensions.map(s => s.ext.displayName).join(', ');\n                    console.log(kleur.yellow(`  Stale:      ${names}`));\n                }\n                if (plan.orphanedExtensions.length > 0) {\n                    console.log(kleur.red(`  Orphaned:   ${plan.orphanedExtensions.join(', ')}`));\n                }\n            }\n\n            const hasProjectSettingsDrift = !pointer.hasProjectSettings || !pointer.hasProjectExtensionPackage;\n            const hasGlobalDrift = !projectScoped && !plan.allPresent;\n            const hasPackageDrift = plan.missingPackages.length > 0;\n\n            if (!hasProjectSettingsDrift && !hasGlobalDrift && !hasPackageDrift) {\n                console.log(t.success('\\n  ✓ Pi runtime configuration looks healthy\\n'));\n                return;\n            }\n\n            if (hasProjectSettingsDrift) {\n                console.log(kleur.yellow('  Settings:   .pi/settings.json missing managed npm:@jaggerxtrm/pi-extensions entry'));\n            }\n\n            console.log(kleur.dim('\\n  → run: xt pi reload\\n'));\n        });\n\n    cmd.command('doctor')\n        .description('Diagnostic checks: pi installed, extensions deployed, packages present, orphaned extensions')\n        .action(async () => {\n            console.log(t.bold('\\n  Pi Doctor\\n'));\n\n            let allOk = true;\n\n            const piResult = spawnSync('pi', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n            if (piResult.status === 0) {\n                console.log(t.success(`  ✓ pi ${piResult.stdout.trim()} installed`));\n            } else {\n                console.log(kleur.red('  ✗ pi not found — run: xt pi setup'));\n                allOk = false;\n            }\n\n            const pnpmResult = spawnSync('pnpm', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n            if (pnpmResult.status === 0) {\n                console.log(t.success(`  ✓ pnpm ${pnpmResult.stdout.trim()} installed`));\n            } else {\n                console.log(kleur.yellow('  ⚠ pnpm not found'));\n                allOk = false;\n            }\n\n            const configFiles = ['models.json', 'auth.json', 'settings.json'];\n            const missingConfig = configFiles.filter(f => !fs.existsSync(path.join(PI_AGENT_DIR, f)));\n            if (missingConfig.length === 0) {\n                console.log(t.success('  ✓ config files present'));\n            } else {\n                console.log(kleur.yellow(`  ⚠ missing config: ${missingConfig.join(', ')}`));\n                allOk = false;\n            }\n\n            const projectRoot = resolveProjectRoot();\n            const pointer = await getPiProjectPointer(projectRoot);\n            const bundleRoot = await findRepoRoot();\n            const sourceDir = resolveManagedPiExtensionsSourceDir(bundleRoot);\n            const coreSourceDir = resolveManagedPiCoreSourceDir(bundleRoot);\n            const globalTargetDir = path.join(PI_AGENT_DIR, 'extensions');\n\n            try {\n                const staleOverride = await remediateStalePiMcpAdapterOverride(false);\n                if (staleOverride.stale && staleOverride.remediated) {\n                    console.log(t.success('  ✓ removed stale ~/.pi/agent/extensions/pi-mcp-adapter override'));\n                } else if (staleOverride.stale) {\n                    console.log(kleur.yellow('  ⚠ stale ~/.pi/agent/extensions/pi-mcp-adapter override detected'));\n                    allOk = false;\n                } else {\n                    console.log(t.success('  ✓ pi-mcp-adapter override check passed'));\n                }\n            } catch (error) {\n                console.log(kleur.yellow(`  ⚠ failed to remediate pi-mcp-adapter override: ${error}`));\n                allOk = false;\n            }\n\n            try {\n                const coreStatus = coreSourceDir\n                    ? await ensureCorePackageSymlink(coreSourceDir, projectRoot, false)\n                    : 'missing-source';\n                if (coreStatus === 'repaired' || coreStatus === 'created') {\n                    console.log(t.success('  ✓ repaired .xtrm/extensions/node_modules/@xtrm/pi-core symlink'));\n                } else if (coreStatus === 'ok') {\n                    console.log(t.success('  ✓ @xtrm/pi-core symlink is healthy'));\n                } else if (coreStatus === 'missing-source') {\n                    console.log(kleur.dim('  ○ @xtrm/pi-core source not bundled in this install'));\n                }\n            } catch (error) {\n                console.log(kleur.yellow(`  ⚠ failed to ensure @xtrm/pi-core symlink: ${error}`));\n                allOk = false;\n            }\n\n            if (!sourceDir || !await fs.pathExists(sourceDir)) {\n                console.log(kleur.dim('  ○ managed extensions not bundled in this install'));\n            } else {\n                const plan = await inventoryPiRuntime(sourceDir, globalTargetDir);\n\n                const projectScoped = pointer.hasProjectExtensionPackage || pointer.pointsToXtrmExtensions;\n                if (!pointer.hasProjectSettings) {\n                    console.log(kleur.yellow('  ⚠ missing .pi/settings.json; run xt pi reload to bootstrap project Pi settings'));\n                    allOk = false;\n                } else if (projectScoped) {\n                    if (pointer.hasProjectExtensionPackage) {\n                        console.log(t.success('  ✓ project runtime uses npm:@jaggerxtrm/pi-extensions'));\n                    } else {\n                        console.log(kleur.yellow('  ⚠ legacy project extension pointer detected; run xt pi reload to migrate'));\n                        allOk = false;\n                    }\n                } else if (plan.missingExtensions.length === 0 && plan.staleExtensions.length === 0 && plan.orphanedExtensions.length === 0) {\n                    console.log(t.success(`  ✓ global extensions deployed (${plan.extensions.length})`));\n                } else {\n                    if (plan.missingExtensions.length > 0 || plan.staleExtensions.length > 0) {\n                        console.log(kleur.yellow(`  ⚠ extension drift (${plan.missingExtensions.length} missing, ${plan.staleExtensions.length} stale)`));\n                        allOk = false;\n                    }\n                    if (plan.orphanedExtensions.length > 0) {\n                        console.log(kleur.red(`  ✗ orphaned extensions: ${plan.orphanedExtensions.join(', ')}`));\n                        allOk = false;\n                    }\n                }\n\n                if (plan.missingPackages.length === 0) {\n                    console.log(t.success(`  ✓ packages installed (${plan.packages.length})`));\n                } else {\n                    console.log(kleur.yellow(`  ⚠ ${plan.missingPackages.length} package(s) missing`));\n                    allOk = false;\n                }\n            }\n\n            console.log('');\n            if (allOk) {\n                console.log(t.boldGreen('  ✓ All checks passed\\n'));\n            } else {\n                console.log(kleur.yellow('  ⚠ Some checks failed — run: xt pi reload\\n'));\n            }\n        });\n\n    cmd.command('reload')\n        .description('Re-sync extensions, remove orphaned, and reinstall missing packages')\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .action(async (opts: { yes: boolean }) => {\n            const confirmed = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: 'Re-sync Pi runtime and remove orphaned extensions?',\n                initial: true,\n            });\n            if (!confirmed) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            await runPiInstall(false, false, resolveProjectRoot());\n        });\n\n    return cmd;\n}\n","/**\n * Non-interactive Pi install command.\n *\n * Called automatically as part of `xtrm install` and `xtrm init`.\n * Delegates to the unified pi-runtime service.\n *\n * @see cli/src/core/pi-runtime.ts\n */\n\nimport kleur from 'kleur';\nimport path from 'path';\nimport { spawnSync } from 'node:child_process';\nimport { existsSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { t } from '../utils/theme.js';\nimport { runPiRuntimeSync } from '../core/pi-runtime.js';\nimport { isPiInstalled, isPnpmInstalled } from '../core/machine-bootstrap.js';\n\nconst PI_AGENT_DIR = process.env.PI_AGENT_DIR || path.join(homedir(), '.pi', 'agent');\n\nfunction ensurePnpm(dryRun: boolean): void {\n    if (isPnpmInstalled()) {\n        const v = spawnSync('pnpm', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n        console.log(t.success(`  ✓ pnpm ${v.stdout.trim()} already installed`));\n        return;\n    }\n    console.log(kleur.yellow('  pnpm not found — installing via npm...'));\n    if (dryRun) {\n        console.log(kleur.dim('  [DRY RUN] npm install -g pnpm'));\n        return;\n    }\n    const r = spawnSync('npm', ['install', '-g', 'pnpm'], { stdio: 'inherit' });\n    if (r.status !== 0) {\n        console.log(kleur.yellow('  ⚠ Failed to install pnpm. Run: npm install -g pnpm'));\n    } else {\n        console.log(t.success('  ✓ pnpm installed'));\n    }\n}\n\n/**\n * Non-interactive Pi install: syncs Pi runtime packages/extensions.\n * Called automatically as part of `xtrm install`.\n *\n * @param isGlobal - When true, installs to global Pi dirs (~/.pi/agent/). Default false = project-scoped.\n * @param projectRoot - Project root for project-scoped installs. Defaults to git root.\n */\nexport async function runPiInstall(dryRun: boolean = false, isGlobal: boolean = false, projectRoot?: string): Promise<void> {\n    if (!projectRoot) {\n        const r = spawnSync('git', ['rev-parse', '--show-toplevel'], {\n            cwd: process.cwd(), encoding: 'utf8', stdio: 'pipe',\n        });\n        projectRoot = r.status === 0 ? (r.stdout ?? '').trim() : process.cwd();\n    }\n\n    console.log(t.bold('\\n  ⚙  Pi extensions + packages'));\n\n    // Ensure pi and pnpm are installed\n    if (!isPiInstalled()) {\n        console.log(kleur.yellow('  pi not found — installing oh-pi globally...'));\n        if (!dryRun) {\n            const r = spawnSync('npm', ['install', '-g', 'oh-pi'], { stdio: 'inherit' });\n            if (r.status !== 0) {\n                console.error(kleur.red('  ✗ Failed to install oh-pi. Run: npm install -g oh-pi\\n'));\n                return;\n            }\n        } else {\n            console.log(kleur.dim('  [DRY RUN] npm install -g oh-pi'));\n        }\n        console.log(t.success('  ✓ pi installed'));\n    } else {\n        const v = spawnSync('pi', ['--version'], { encoding: 'utf8' });\n        console.log(t.success(`  ✓ pi ${v.stdout.trim()} already installed`));\n    }\n\n    ensurePnpm(dryRun);\n\n    // Run unified sync\n    await runPiRuntimeSync({ dryRun, isGlobal, projectRoot });\n\n    // Seed sane per-package defaults (idempotent — skips if user already has one)\n    seedGitnexusDefaults(dryRun);\n\n    // Detect unconfigured Pi — nudge to run setup\n    const configFiles = ['models.json', 'auth.json', 'settings.json'];\n    const missingConfig = configFiles.filter(f => !require('fs').existsSync(path.join(PI_AGENT_DIR, f)));\n    if (missingConfig.length > 0) {\n        console.log(kleur.yellow(`\\n  ⚠ Pi is not fully configured (missing: ${missingConfig.join(', ')})`));\n        console.log(kleur.yellow('    Run: xt pi setup   to complete first-time configuration'));\n        console.log(kleur.dim('    (API keys, model defaults, OAuth providers)\\n'));\n    } else {\n        console.log('');\n    }\n}\n\n/**\n * Seed ~/.pi/pi-gitnexus.json with sane defaults on fresh installs.\n *\n * pi-gitnexus loads this file at session start; if absent, autoAugment defaults\n * ON, running up to 3 `gitnexus augment` subprocesses after every grep/read/bash\n * tool result — the dominant per-tool latency source on navigation-heavy\n * sessions. auto-augment off by default; on-demand MCP tools\n * (query/context/impact/detect_changes) remain available per AGENTS.md.\n *\n * Only writes when the file is absent — never clobbers user customisation.\n * (xtrm-e2vkn)\n */\nfunction seedGitnexusDefaults(dryRun: boolean): void {\n    const cfgPath = path.join(homedir(), '.pi', 'pi-gitnexus.json');\n    if (existsSync(cfgPath)) return;\n    if (dryRun) {\n        console.log(kleur.dim(`  [DRY RUN] seed ${cfgPath} { autoAugment: false }`));\n        return;\n    }\n    try {\n        writeFileSync(cfgPath, `${JSON.stringify({ autoAugment: false }, null, 2)}\\n`);\n        console.log(kleur.dim(`  seeded ${cfgPath} (autoAugment: false)`));\n    } catch {\n        // non-fatal — pi-gitnexus will simply use its built-in default\n    }\n}\n","/**\n * Interactive Pi setup command (xtrm pi setup).\n *\n * Handles first-time Pi configuration: API keys, OAuth providers.\n * For extension/package sync, delegates to unified pi-runtime service.\n *\n * @see cli/src/core/pi-runtime.ts\n */\n\nimport { Command } from 'commander';\nimport kleur from 'kleur';\nimport prompts from 'prompts';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { spawnSync } from 'node:child_process';\nimport { homedir } from 'node:os';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { t, sym } from '../utils/theme.js';\nimport { inventoryPiRuntime, executePiSync, renderPiRuntimePlan, resolveManagedPiExtensionsSourceDir } from '../core/pi-runtime.js';\nimport { isPiInstalled, isPnpmInstalled } from '../core/machine-bootstrap.js';\n\nconst PI_AGENT_DIR = process.env.PI_AGENT_DIR || path.join(homedir(), '.pi', 'agent');\n\ninterface SchemaField { key: string; label: string; hint: string; secret: boolean; required: boolean; }\ninterface OAuthProvider { key: string; instruction: string; }\ninterface InstallSchema { fields: SchemaField[]; oauth_providers: OAuthProvider[]; packages: string[]; }\n\nexport const EXTRA_PI_CONFIGS = ['pi-worktrees-settings.json'];\n\nexport async function copyExtraConfigs(srcDir: string, destDir: string): Promise<void> {\n    for (const name of EXTRA_PI_CONFIGS) {\n        const src = path.join(srcDir, name);\n        const dest = path.join(destDir, name);\n        if (await fs.pathExists(src) && !await fs.pathExists(dest)) {\n            await fs.copy(src, dest);\n        }\n    }\n}\n\nexport function fillTemplate(template: string, values: Record<string, string>): string {\n    return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => values[key] ?? '');\n}\n\nexport function readExistingPiValues(piAgentDir: string): Record<string, string> {\n    const values: Record<string, string> = {};\n    try {\n        const auth = JSON.parse(require('fs').readFileSync(path.join(piAgentDir, 'auth.json'), 'utf8'));\n        if (auth?.dashscope?.key) values['DASHSCOPE_API_KEY'] = auth.dashscope.key;\n        if (auth?.zai?.key) values['ZAI_API_KEY'] = auth.zai.key;\n    } catch { /* file doesn't exist or invalid */ }\n    try {\n        const models = JSON.parse(require('fs').readFileSync(path.join(piAgentDir, 'models.json'), 'utf8'));\n        if (!values['DASHSCOPE_API_KEY'] && models?.providers?.dashscope?.apiKey) {\n            values['DASHSCOPE_API_KEY'] = models.providers.dashscope.apiKey;\n        }\n    } catch { /* file doesn't exist or invalid */ }\n    return values;\n}\n\nfunction ensurePnpm(): void {\n    if (isPnpmInstalled()) {\n        const v = spawnSync('pnpm', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n        console.log(t.success(`  ✓ pnpm ${v.stdout.trim()} already installed`));\n        return;\n    }\n    console.log(kleur.yellow('\\n  pnpm not found — installing via npm...'));\n    const r = spawnSync('npm', ['install', '-g', 'pnpm'], { stdio: 'inherit' });\n    if (r.status !== 0) {\n        console.log(kleur.yellow('  ⚠ Failed to install pnpm. Run: npm install -g pnpm'));\n    } else {\n        console.log(t.success('  ✓ pnpm installed'));\n    }\n}\n\nexport function createInstallPiCommand(): Command {\n    const cmd = new Command('pi');\n    cmd\n        .description('Install Pi coding agent with providers, extensions, and npm packages')\n        .option('-y, --yes', 'Skip confirmation prompts', false)\n        .option('--check', 'Check Pi extension deployment drift without writing changes', false)\n        .option('--setup', 'Run first-time configuration (API keys, OAuth)', false)\n        .action(async (opts) => {\n            const { yes, check, setup } = opts;\n            const repoRoot = await findRepoRoot();\n            const piConfigDir = path.join(repoRoot, 'config', 'pi');\n\n            // ── Drift Check Mode ──────────────────────────────────────────────────────\n            if (check) {\n                const sourceDir = resolveManagedPiExtensionsSourceDir();\n                const targetDir = path.join(PI_AGENT_DIR, 'extensions');\n\n                if (!sourceDir) {\n                    console.log(kleur.dim('\\n  Managed extensions: skipped (not bundled in npm package)\\n'));\n                    return;\n                }\n\n                const plan = await inventoryPiRuntime(sourceDir, targetDir);\n                renderPiRuntimePlan(plan);\n\n                const hasDrift = plan.missingExtensions.length > 0 || plan.staleExtensions.length > 0 || plan.orphanedExtensions.length > 0;\n                if (hasDrift) {\n                    console.error(kleur.red('  ✗ Pi runtime drift detected. Run `xtrm pi` to sync.\\n'));\n                    process.exit(1);\n                }\n                return;\n            }\n\n            // ── First-Time Setup Mode ───────────────────────────────────────────────────\n            if (setup || !fs.pathExists(path.join(PI_AGENT_DIR, 'auth.json'))) {\n                console.log(t.bold('\\n  Pi Coding Agent Setup\\n'));\n\n                // Ensure pi is installed\n                if (!isPiInstalled()) {\n                    console.log(kleur.yellow('  pi not found — installing oh-pi globally...\\n'));\n                    const r = spawnSync('npm', ['install', '-g', 'oh-pi'], { stdio: 'inherit' });\n                    if (r.status !== 0) {\n                        console.error(kleur.red('\\n  Failed to install oh-pi. Run: npm install -g oh-pi\\n'));\n                        process.exit(1);\n                    }\n                    console.log(t.success('  ✓ pi installed\\n'));\n                } else {\n                    const v = spawnSync('pi', ['--version'], { encoding: 'utf8' });\n                    console.log(t.success(`  ✓ pi ${v.stdout.trim()} already installed\\n`));\n                }\n\n                // Ensure pnpm is installed\n                console.log(t.bold('  pnpm\\n'));\n                ensurePnpm();\n\n                // Load schema and configure API keys\n                const schema: InstallSchema = await fs.readJson(path.join(piConfigDir, 'install-schema.json'));\n                const existing = readExistingPiValues(PI_AGENT_DIR);\n                const values: Record<string, string> = { ...existing };\n\n                console.log(t.bold('\\n  API Keys\\n'));\n                for (const field of schema.fields) {\n                    if (existing[field.key]) {\n                        console.log(t.success(`    ${sym.ok} ${field.label} [already set]`));\n                        continue;\n                    }\n                    if (!field.required && !yes) {\n                        const { include } = await prompts({\n                            type: 'confirm',\n                            name: 'include',\n                            message: `  Configure ${field.label}? (optional)`,\n                            initial: false\n                        });\n                        if (!include) continue;\n                    }\n                    const { value } = await prompts({\n                        type: field.secret ? 'password' : 'text',\n                        name: 'value',\n                        message: `  ${field.label}`,\n                        hint: field.hint,\n                        validate: (v: string) => (field.required && !v) ? 'Required' : true\n                    });\n                    if (value) values[field.key] = value;\n                }\n\n                // Write config files\n                await fs.ensureDir(PI_AGENT_DIR);\n                console.log(t.muted(`\\n  Writing config to ${PI_AGENT_DIR}`));\n\n                for (const name of ['models.json', 'auth.json', 'settings.json']) {\n                    const destPath = path.join(PI_AGENT_DIR, name);\n                    if (name === 'auth.json' && await fs.pathExists(destPath) && !yes) {\n                        const { overwrite } = await prompts({\n                            type: 'confirm',\n                            name: 'overwrite',\n                            message: `  ${name} already exists — overwrite? (OAuth tokens will be lost)`,\n                            initial: false\n                        });\n                        if (!overwrite) {\n                            console.log(t.muted(`    skipped ${name}`));\n                            continue;\n                        }\n                    }\n                    const raw = await fs.readFile(path.join(piConfigDir, `${name}.template`), 'utf8');\n                    await fs.writeFile(destPath, fillTemplate(raw, values), 'utf8');\n                    console.log(t.success(`    ${sym.ok} ${name}`));\n                }\n            }\n\n            // ── Extension & Package Sync ───────────────────────────────────────────────\n            const sourceDir = resolveManagedPiExtensionsSourceDir();\n            const targetDir = path.join(PI_AGENT_DIR, 'extensions');\n\n            if (!sourceDir) {\n                console.log(kleur.dim('\\n  Managed extensions: skipped (not bundled in npm package)\\n'));\n            } else {\n                const plan = await inventoryPiRuntime(sourceDir, targetDir);\n                renderPiRuntimePlan(plan);\n\n                if (!plan.allPresent) {\n                    const result = await executePiSync(plan, sourceDir, targetDir, {\n                        dryRun: false,\n                        isGlobal: true,\n                        removeOrphaned: true,\n                        log: (msg) => console.log(kleur.dim(`    ${msg}`)),\n                    });\n\n                    const total = result.extensionsAdded.length + result.extensionsUpdated.length + result.packagesInstalled.length;\n                    if (total > 0) {\n                        console.log(t.success(`\\n    ${sym.ok} Synced ${total} items`));\n                    }\n                }\n            }\n\n            // ── OAuth Instructions ──────────────────────────────────────────────────────\n            console.log(t.bold('\\n  OAuth (manual steps)\\n'));\n            const schema: InstallSchema = await fs.readJson(path.join(piConfigDir, 'install-schema.json'));\n            for (const provider of schema.oauth_providers) {\n                console.log(t.muted(`    ${provider.key}: ${provider.instruction}`));\n            }\n\n            console.log(t.boldGreen('\\n  Pi setup complete\\n'));\n        });\n\n    return cmd;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport path from 'path';\nimport fs from 'fs-extra';\nimport prompts from 'prompts';\nimport { spawnSync } from 'child_process';\nimport type { InstallOpts } from './install.js';\nimport { runPiInstall } from './pi-install.js';\nimport { runClaudeRuntimeSyncPhase, renderClaudeRuntimePlanSummary } from '../core/claude-runtime-sync.js';\nimport {\n    installFromRegistry,\n    resolvePackageRoot,\n    scaffoldSkillsDefaultFromPackage,\n    type RegistryManifest,\n} from '../core/registry-scaffold.js';\nimport { runPluginEraCleanup } from '../core/plugin-era-cleanup.js';\nimport { ensureAgentsSkillsSymlink, ensureUserAgentsSkillsSymlink } from '../core/skills-scaffold.js';\nimport { ensureGlobalSkillsBootstrapped, logBootstrapTrigger } from '../core/global-skills-bootstrap.js';\nimport { ensureGlobalHooksBootstrapped } from '../core/global-hooks-bootstrap.js';\nimport { reconcileGlobalClaudeHooks } from '../core/claude-runtime-sync.js';\nimport { reconcileGlobalPiHooks } from '../core/pi-runtime-hooks.js';\nimport { shouldUseGlobalHooks } from '../core/global-hooks-flag.js';\nimport { ensureServiceSkills } from '../core/service-skills-ensure.js';\nimport { inventoryDeps, renderBootstrapPlan, runMachineBootstrapPhase, type BootstrapPlan } from '../core/machine-bootstrap.js';\nimport { runInitVerification, renderVerificationSummary } from '../core/init-verification.js';\nimport { assertRuntimeSkillsViews } from '../core/skills-runtime-views.js';\nimport { getGlobalSkillsOverrideRoots } from '../core/global-skills-flag.js';\nimport { syncPiMcpConfig, syncProjectMcpConfig } from '../core/project-mcp-sync.js';\nimport { getContext } from '../core/context.js';\nimport { calculateDiff } from '../core/diff.js';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\nimport { ensureBdAutoStagePatch, summarizeBdAutoStagePatch } from '../core/bd-auto-stage-patch.js';\nimport { printDependencyMaintenanceSummary, runDependencyMaintenance } from '../core/dependency-maintenance.js';\n\nlet cachedPackageRoot: string | undefined;\n\nfunction getPackageRoot(): string {\n    cachedPackageRoot ??= resolvePackageRoot();\n    return cachedPackageRoot;\n}\n\nfunction getMcpCoreConfigPath(): string {\n    return path.join(getPackageRoot(), '.xtrm', 'config', 'claude.mcp.json');\n}\n\nfunction getInstructionsDir(): string {\n    return path.join(getPackageRoot(), '.xtrm', 'config', 'instructions');\n}\n\nconst XTRM_BLOCK_START = '<!-- xtrm:start -->';\nconst XTRM_BLOCK_END = '<!-- xtrm:end -->';\nconst syncedProjectMcpRoots = new Set<string>();\n\ninterface ProjectDetectionResult {\n    hasTypeScript: boolean;\n    hasPython: boolean;\n    dockerServices: string[];\n    generatedRegistry: boolean;\n    registryPath?: string;\n}\n\nfunction toServiceId(name: string): string {\n    return name\n        .toLowerCase()\n        .replace(/[^a-z0-9]+/g, '-')\n        .replace(/^-+|-+$/g, '') || 'service';\n}\n\nfunction parseComposeServices(content: string): string[] {\n    const lines = content.split('\\n');\n    const services = new Set<string>();\n\n    let inServices = false;\n    for (const line of lines) {\n        const raw = line.replace(/\\t/g, '    ');\n\n        if (!inServices) {\n            if (/^services:\\s*$/.test(raw)) {\n                inServices = true;\n            }\n            continue;\n        }\n\n        if (/^[^\\s#].*:\\s*$/.test(raw) && !/^services:\\s*$/.test(raw)) {\n            break;\n        }\n\n        const serviceMatch = raw.match(/^\\s{2}([A-Za-z0-9._-]+):\\s*(?:#.*)?$/);\n        if (serviceMatch) {\n            services.add(serviceMatch[1]);\n        }\n    }\n\n    return [...services];\n}\n\nexport async function detectProjectFeatures(projectRoot: string): Promise<ProjectDetectionResult> {\n    const hasTypeScript = await fs.pathExists(path.join(projectRoot, 'tsconfig.json'));\n\n    const hasPython =\n        await fs.pathExists(path.join(projectRoot, 'pyproject.toml')) ||\n        await fs.pathExists(path.join(projectRoot, 'setup.py')) ||\n        await fs.pathExists(path.join(projectRoot, 'requirements.txt'));\n\n    const composeCandidates = [\n        'docker-compose.yml',\n        'docker-compose.yaml',\n        'compose.yml',\n        'compose.yaml',\n    ];\n\n    const dockerServices = new Set<string>();\n    for (const composeFile of composeCandidates) {\n        const composePath = path.join(projectRoot, composeFile);\n        if (!await fs.pathExists(composePath)) continue;\n\n        try {\n            const content = await fs.readFile(composePath, 'utf8');\n            for (const service of parseComposeServices(content)) {\n                dockerServices.add(service);\n            }\n        } catch {\n            // Ignore malformed compose file and continue\n        }\n    }\n\n    const hasDockerfile = await fs.pathExists(path.join(projectRoot, 'Dockerfile'));\n    if (hasDockerfile && dockerServices.size === 0) {\n        dockerServices.add(path.basename(projectRoot));\n    }\n\n    return {\n        hasTypeScript,\n        hasPython,\n        dockerServices: [...dockerServices],\n        generatedRegistry: false,\n    };\n}\n\nexport async function ensureServiceRegistry(projectRoot: string, services: string[]): Promise<{ generated: boolean; registryPath: string }> {\n    const registryPath = path.join(projectRoot, 'service-registry.json');\n    if (services.length === 0) {\n        return { generated: false, registryPath };\n    }\n\n    const existedBefore = await fs.pathExists(registryPath);\n    const now = new Date().toISOString();\n    let registry: any = { version: '1.0.0', services: {} };\n\n    if (existedBefore) {\n        try {\n            registry = await fs.readJson(registryPath);\n            if (!registry.services || typeof registry.services !== 'object') {\n                registry.services = {};\n            }\n        } catch {\n            registry = { version: '1.0.0', services: {} };\n        }\n    }\n\n    let changed = false;\n    for (const serviceName of services) {\n        const serviceId = toServiceId(serviceName);\n        if (registry.services[serviceId]) continue;\n\n        registry.services[serviceId] = {\n            name: serviceName,\n            description: `Detected from Docker configuration (${serviceName}).`,\n            territory: [],\n            skill_path: `.xtrm/skills/default/${serviceId}/SKILL.md`,\n            last_sync: now,\n        };\n        changed = true;\n    }\n\n    if (changed || !existedBefore) {\n        await fs.writeJson(registryPath, registry, { spaces: 2 });\n    }\n\n    return { generated: changed || !existedBefore, registryPath };\n}\n\nfunction resolveEnvVars(value: string): string {\n    if (typeof value !== 'string') return value;\n    return value.replace(/\\$\\{([A-Z0-9_]+)\\}/g, (_m, name) => process.env[name] || '');\n}\n\nfunction hasClaudeCli(): boolean {\n    const r = spawnSync('claude', ['--version'], { stdio: 'pipe' });\n    return r.status === 0;\n}\n\nfunction buildProjectMcpArgs(name: string, server: any): string[] | null {\n    const transport = server.type || (server.url?.includes('/sse') ? 'sse' : 'http');\n\n    if (server.command) {\n        const args = ['mcp', 'add', '-s', 'project'];\n        if (server.env && typeof server.env === 'object') {\n            for (const [k, v] of Object.entries(server.env)) {\n                args.push('-e', `${k}=${resolveEnvVars(String(v))}`);\n            }\n        }\n        args.push(name, '--', server.command, ...((server.args || []) as string[]));\n        return args;\n    }\n\n    if (server.url || server.serverUrl) {\n        const url = server.url || server.serverUrl;\n        const args = ['mcp', 'add', '-s', 'project', '--transport', transport, name, url];\n        if (server.headers && typeof server.headers === 'object') {\n            for (const [k, v] of Object.entries(server.headers)) {\n                args.push('--header', `${k}: ${resolveEnvVars(String(v))}`);\n            }\n        }\n        return args;\n    }\n\n    return null;\n}\n\nasync function syncProjectMcpServers(projectRoot: string): Promise<void> {\n    if (syncedProjectMcpRoots.has(projectRoot)) return;\n    syncedProjectMcpRoots.add(projectRoot);\n\n    const mcpCoreConfigPath = getMcpCoreConfigPath();\n    if (!await fs.pathExists(mcpCoreConfigPath)) return;\n\n    console.log(kleur.bold('\\n── Installing MCP (project scope) ─────────'));\n\n    if (!hasClaudeCli()) {\n        console.log(kleur.yellow('  ⚠ Claude CLI not found; skipping project-scope MCP registration.'));\n        return;\n    }\n\n    const mcpConfig = await fs.readJson(mcpCoreConfigPath);\n    const servers = Object.entries(mcpConfig?.mcpServers ?? {}) as Array<[string, any]>;\n    if (servers.length === 0) {\n        console.log(kleur.dim('  ℹ No core MCP servers configured.'));\n        return;\n    }\n\n    let added = 0;\n    let existing = 0;\n    let failed = 0;\n\n    for (const [name, server] of servers) {\n        const args = buildProjectMcpArgs(name, server);\n        if (!args) continue;\n\n        const r = spawnSync('claude', args, {\n            cwd: projectRoot,\n            encoding: 'utf8',\n            stdio: ['pipe', 'pipe', 'pipe'],\n        });\n\n        if (r.status === 0) {\n            added++;\n            console.log(`${kleur.green('  ✓')} ${name}`);\n            continue;\n        }\n\n        const stderr = `${r.stderr || ''}`.toLowerCase();\n        if (stderr.includes('already exists') || stderr.includes('already configured')) {\n            existing++;\n            console.log(kleur.dim(`  ✓ ${name} (already configured)`));\n            continue;\n        }\n\n        failed++;\n        console.log(kleur.red(`  ✗ ${name} (${(r.stderr || r.stdout || 'failed').toString().trim()})`));\n    }\n\n    console.log(kleur.dim(`  ↳ MCP project-scope result: ${added} added, ${existing} existing, ${failed} failed`));\n}\n\nexport function upsertManagedBlock(\n    fileContent: string,\n    blockBody: string,\n    startMarker: string = XTRM_BLOCK_START,\n    endMarker: string = XTRM_BLOCK_END,\n): string {\n    const normalizedBody = blockBody.trim();\n    const managedBlock = `${startMarker}\\n${normalizedBody}\\n${endMarker}`;\n    const escapedStart = startMarker.replace(/[.*+?^${}()|[\\\\]\\\\]/g, '\\\\$&');\n    const escapedEnd = endMarker.replace(/[.*+?^${}()|[\\\\]\\\\]/g, '\\\\$&');\n\n    // Greedy match from the FIRST start marker to the LAST end marker so any\n    // duplicate-content + orphan-end-marker tail left behind by older lazy\n    // (`*?`) versions of this function gets swept into the replacement\n    // (xtrm-ya67). The lazy variant only consumed the first start..end pair,\n    // leaving a duplicated header block + a free-floating end marker after it.\n    // Markers are caller-supplied but pre-escaped via the replace() above; no\n    // ReDoS surface from end-user input here.\n    // nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp\n    const existingBlockPattern = new RegExp(`${escapedStart}[\\\\s\\\\S]*${escapedEnd}`, 'm');\n\n    if (existingBlockPattern.test(fileContent)) {\n        return fileContent.replace(existingBlockPattern, managedBlock);\n    }\n\n    const trimmed = fileContent.trimStart();\n    if (!trimmed) return `${managedBlock}\\n`;\n    return `${managedBlock}\\n\\n${trimmed}`;\n}\n\nexport async function injectProjectInstructionHeaders(projectRoot: string): Promise<void> {\n    const targets = [\n        { output: 'AGENTS.md', template: 'agents-top.md' },\n        { output: 'CLAUDE.md', template: 'claude-top.md' },\n    ];\n\n    console.log(kleur.bold('Injecting xtrm agent instruction headers...'));\n\n    for (const target of targets) {\n        const templatePath = path.join(getInstructionsDir(), target.template);\n        if (!await fs.pathExists(templatePath)) {\n            console.log(kleur.yellow(`  ⚠ Missing template: ${target.template}`));\n            continue;\n        }\n\n        const template = await fs.readFile(templatePath, 'utf8');\n        const outputPath = path.join(projectRoot, target.output);\n        const existing = await fs.pathExists(outputPath) ? await fs.readFile(outputPath, 'utf8') : '';\n        const next = upsertManagedBlock(existing, template);\n\n        if (next === existing) {\n            console.log(kleur.dim(`  ✓ ${target.output} already up to date`));\n            continue;\n        }\n\n        await fs.writeFile(outputPath, next.endsWith('\\n') ? next : `${next}\\n`, 'utf8');\n        console.log(`${kleur.green('  ✓')} updated ${target.output}`);\n    }\n}\n\n/**\n * Deep merge settings.json hooks without overwriting existing user hooks.\n * Appends new hooks to existing events intelligently.\n */\n/**\n * Extract script filename from a hook command.\n */\nfunction getScriptFilename(hook: any): string | null {\n    const cmd = hook.command || hook.hooks?.[0]?.command || '';\n    if (typeof cmd !== 'string') return null;\n    // Match script filename including subdirectory (e.g., \"gitnexus/gitnexus-hook.cjs\")\n    const m = cmd.match(/\\/hooks\\/([A-Za-z0-9_/-]+\\.(?:py|cjs|mjs|js))/);\n    if (m) return m[1];\n    const m2 = cmd.match(/([A-Za-z0-9_-]+\\.(?:py|cjs|mjs|js))(?!.*[A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))/);\n    return m2?.[1] ?? null;\n}\n\n/**\n * Prune hooks from settings.json that are NOT in the canonical config.\n * This removes stale entries from old versions before merging new ones.\n *\n * @param existing Current settings.json hooks\n * @param canonical Canonical hooks config from hooks.json\n * @returns Pruned settings with stale hooks removed\n */\nexport function pruneStaleHooks(\n    existing: Record<string, any>,\n    canonical: Record<string, any>,\n): { result: Record<string, any>; removed: string[] } {\n    const result = { ...existing };\n    const removed: string[] = [];\n\n    if (!result.hooks || typeof result.hooks !== 'object') {\n        return { result, removed };\n    }\n    if (!canonical.hooks || typeof canonical.hooks !== 'object') {\n        return { result, removed };\n    }\n\n    // Collect canonical script paths + basenames for this skill only.\n    // We only prune hooks that look like stale variants of this skill's own scripts.\n    const canonicalScripts = new Set<string>();\n    const canonicalBasenames = new Set<string>();\n    for (const hooks of Object.values(canonical.hooks)) {\n        const hookList = Array.isArray(hooks) ? hooks : [hooks];\n        for (const wrapper of hookList) {\n            const innerHooks = wrapper.hooks || [wrapper];\n            for (const hook of innerHooks) {\n                const script = getScriptFilename(hook);\n                if (!script) continue;\n                canonicalScripts.add(script);\n                canonicalBasenames.add(path.basename(script));\n            }\n        }\n    }\n\n    for (const [event, hooks] of Object.entries(result.hooks)) {\n        if (!Array.isArray(hooks)) continue;\n\n        const prunedWrappers: any[] = [];\n        for (const wrapper of hooks) {\n            const innerHooks = wrapper.hooks || [wrapper];\n            const keptInner: any[] = [];\n\n            for (const hook of innerHooks) {\n                const script = getScriptFilename(hook);\n                if (!script) {\n                    keptInner.push(hook);\n                    continue;\n                }\n\n                if (canonicalScripts.has(script)) {\n                    keptInner.push(hook);\n                    continue;\n                }\n\n                const sameSkillFamily = canonicalBasenames.has(path.basename(script));\n                if (sameSkillFamily) {\n                    removed.push(`${event}:${script}`);\n                    continue;\n                }\n\n                // Foreign/non-related hook — preserve it.\n                keptInner.push(hook);\n            }\n\n            if (keptInner.length > 0) {\n                if (wrapper.hooks) {\n                    prunedWrappers.push({ ...wrapper, hooks: keptInner });\n                } else if (keptInner.length === 1) {\n                    prunedWrappers.push(keptInner[0]);\n                } else {\n                    prunedWrappers.push({ ...wrapper, hooks: keptInner });\n                }\n            }\n        }\n\n        if (prunedWrappers.length > 0) {\n            result.hooks[event] = prunedWrappers;\n        } else {\n            delete result.hooks[event];\n        }\n    }\n\n    return { result, removed };\n}\n\nexport function deepMergeHooks(existing: Record<string, any>, incoming: Record<string, any>): Record<string, any> {\n    const result = { ...existing };\n\n    if (!result.hooks) result.hooks = {};\n    if (!incoming.hooks) return result;\n\n    for (const [event, incomingHooks] of Object.entries(incoming.hooks)) {\n        if (!result.hooks[event]) {\n            // Event doesn't exist — add it\n            result.hooks[event] = incomingHooks;\n        } else {\n            // Event exists — merge hooks intelligently\n            const existingEventHooks = Array.isArray(result.hooks[event]) ? result.hooks[event] : [result.hooks[event]];\n            const incomingEventHooks = Array.isArray(incomingHooks) ? incomingHooks : [incomingHooks];\n\n            const getCommand = (h: any) => h.command || h.hooks?.[0]?.command;\n            const getCommandKey = (cmd?: string): string | null => {\n                if (!cmd || typeof cmd !== 'string') return null;\n                const m = cmd.match(/([A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))(?!.*[A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))/);\n                return m?.[1] ?? null;\n            };\n            const mergeMatcher = (existingMatcher: string, incomingMatcher: string): string => {\n                const existingParts = existingMatcher.split('|').map((s: string) => s.trim()).filter(Boolean);\n                const incomingParts = incomingMatcher.split('|').map((s: string) => s.trim()).filter(Boolean);\n                const merged = [...existingParts];\n                for (const part of incomingParts) {\n                    if (!merged.includes(part)) merged.push(part);\n                }\n                return merged.join('|');\n            };\n\n            const mergedEventHooks = [...existingEventHooks];\n            for (const incomingHook of incomingEventHooks) {\n                const incomingCmd = getCommand(incomingHook);\n                if (!incomingCmd) {\n                    mergedEventHooks.push(incomingHook);\n                    continue;\n                }\n\n                const incomingKey = getCommandKey(incomingCmd);\n                const existingIndex = mergedEventHooks.findIndex((h: any) => {\n                    const existingCmd = getCommand(h);\n                    if (existingCmd === incomingCmd) return true;\n                    if (!incomingKey) return false;\n                    return getCommandKey(existingCmd) === incomingKey;\n                });\n                if (existingIndex === -1) {\n                    mergedEventHooks.push(incomingHook);\n                    continue;\n                }\n\n                const existingHook = mergedEventHooks[existingIndex];\n                if (typeof existingHook.matcher === 'string' && typeof incomingHook.matcher === 'string') {\n                    existingHook.matcher = mergeMatcher(existingHook.matcher, incomingHook.matcher);\n                }\n            }\n\n            result.hooks[event] = mergedEventHooks;\n        }\n    }\n\n    return result;\n}\n\n\n// ─── Inventory types ──────────────────────────────────────────────────────────\n\ninterface InitInventory {\n    projectRoot: string;\n    bootstrapPlan: BootstrapPlan;\n    skillsChanges: number;\n    needsBdInit: boolean;\n    needsGitNexus: boolean;\n    projectTypes: string[];\n}\n\n// ── Phase 1: Preflight / Inventory ────────────────────────────────────────────\n// Reads system state without making any changes. Produces the plan data.\n\nasync function runPreflight(projectRoot: string, opts: InstallOpts): Promise<InitInventory> {\n    // Source repo for skills/hooks (bundled in npm package or git repo)\n    let repoRoot: string;\n    try {\n        repoRoot = await findRepoRoot();\n    } catch (error) {\n        const message = error instanceof Error ? error.message : String(error);\n        throw new Error(`Compilation failed: ${message}`);\n    }\n\n    // Machine tool availability via unified bootstrap module (read-only)\n    const bootstrapPlan = inventoryDeps();\n\n    // Skills diff (read-only — no files written)\n    // Note: repoRoot is the SOURCE (skills/ dir), target is derived from projectRoot\n    let skillsChanges = 0;\n    try {\n        const ctx = await getContext({\n            createMissingDirs: false,\n            isGlobal: opts.global,\n            projectRoot,  // Target project, not source repo\n        });\n        for (const target of ctx.targets) {\n            try {\n                const changeSet = await calculateDiff(repoRoot, target, false);\n                skillsChanges += Object.values(changeSet).reduce(\n                    (sum, c: any) => sum + c.missing.length + c.outdated.length, 0,\n                ) as number;\n            } catch { /* diff failure is non-fatal in inventory */ }\n        }\n    } catch { /* context failure is non-fatal */ }\n\n    // Project state (read-only)\n    const needsBdInit = !await fs.pathExists(path.join(projectRoot, '.beads'));\n\n    const gitnexusStatus = spawnSync('gitnexus', ['status'], {\n        cwd: projectRoot, encoding: 'utf8', timeout: 5000,\n    });\n    const gnText = `${gitnexusStatus.stdout ?? ''}\\n${gitnexusStatus.stderr ?? ''}`.toLowerCase();\n    const needsGitNexus = gitnexusStatus.status !== 0 ||\n        gnText.includes('stale') || gnText.includes('not indexed') || gnText.includes('missing');\n\n    const detected = await detectProjectFeatures(projectRoot);\n    const projectTypes: string[] = [\n        ...(detected.hasTypeScript ? ['TypeScript'] : []),\n        ...(detected.hasPython ? ['Python'] : []),\n    ];\n\n    return { projectRoot, bootstrapPlan, skillsChanges, needsBdInit, needsGitNexus, projectTypes };\n}\n\n// ── Phase 2: Plan ─────────────────────────────────────────────────────────────\n// Renders a consolidated view of all changes before any mutations occur.\n\n// ── Phase 2: Plan Rendering ─────────────────────────────────────────────────\n// Shows a consolidated view of all changes before any mutations occur.\n// Each phase section matches the execution order in runProjectInit.\n\nfunction renderInitPlan(inventory: InitInventory): void {\n    const { bootstrapPlan, skillsChanges, needsBdInit, needsGitNexus, projectTypes } = inventory;\n\n    console.log(kleur.bold('\\n  xtrm init — Installation Plan'));\n    console.log(kleur.dim('  ' + '─'.repeat(50)));\n\n    // Phase 4: Machine Bootstrap\n    renderBootstrapPlan(bootstrapPlan);\n\n    // Phase 5: Claude Runtime Sync\n    renderClaudeRuntimePlanSummary();\n\n    // Phase 6: Pi Runtime Sync (extensions + packages)\n    console.log(kleur.bold('\\n  Pi Runtime'));\n    console.log(kleur.dim('  ↻  extensions + packages sync'));\n    console.log(kleur.dim('  ↻  .mcp.json + .pi/mcp.json sync from .xtrm/config/{claude.mcp.json,pi.mcp.json}'));\n\n    // Phase 6b: Runtime skills materialization + runtime pointers\n    console.log(kleur.bold('\\n  Skills'));\n    if (skillsChanges > 0) {\n        console.log(`${kleur.cyan('  ↑')}  ${skillsChanges} change${skillsChanges !== 1 ? 's' : ''} pending`);\n    } else {\n        console.log(kleur.dim('  ✓  already up to date'));\n    }\n\n    // Phase 7: Project Bootstrap\n    console.log(kleur.bold('\\n  Project Bootstrap'));\n    const projActions = [\n        needsBdInit ? 'bd init — initialize beads workspace' : null,\n        needsGitNexus ? 'gitnexus analyze — build code index' : null,\n        'AGENTS.md + CLAUDE.md — workflow headers',\n    ].filter(Boolean) as string[];\n    for (const action of projActions) {\n        console.log(`${kleur.cyan('  •')}  ${action}`);\n    }\n\n    // Phase 8: Verification (implicit)\n    console.log(kleur.bold('\\n  Verification'));\n    console.log(kleur.dim('  ✓  unified summary after execution'));\n\n    if (projectTypes.length > 0) {\n        console.log(kleur.dim(`\\n  Detected: ${projectTypes.join(', ')}`));\n    }\n\n    console.log(kleur.dim('\\n  ' + '─'.repeat(50) + '\\n'));\n}\n\n// ── Phase 3: Confirmation ─────────────────────────────────────────────────────\n// Single gate before any mutations. All phases execute only after this confirms.\n\nasync function confirmInitPlan(yes: boolean): Promise<boolean> {\n    return confirmDestructiveAction({\n        yes,\n        message: 'Proceed with xtrm init?',\n        initial: true,\n    });\n}\n\n// ── Phase 7: Project Bootstrap ────────────────────────────────────────────────\n// Initializes project-level tooling: beads workspace, GitNexus index,\n// CLAUDE.md / AGENTS.md instruction headers and service-skills hook wiring.\n\nasync function runProjectBootstrap(projectRoot: string, isGitRepo: boolean): Promise<void> {\n    if (isGitRepo) {\n        await runBdInitForProject(projectRoot);\n    }\n    await injectProjectInstructionHeaders(projectRoot);\n    if (isGitRepo) {\n        await runGitNexusInitForProject(projectRoot);\n    }\n    // Foolproof, registry-gated service-skills migration (no-op in non-service repos).\n    const serviceSkills = await ensureServiceSkills(projectRoot, { apply: true });\n    for (const note of serviceSkills.notes) {\n        console.log(`  ${note}`);\n    }\n    // Note: ensureAgentsSkillsSymlink runs in Phase 6b (before gitnexus init)\n}\n\nfunction hasInteractiveTTY(): boolean {\n    return Boolean(process.stdout.isTTY && process.stdin.isTTY);\n}\n\nasync function resolveInitProjectRoot(yes: boolean): Promise<{ projectRoot: string; isGitRepo: boolean; aborted: boolean }> {\n    const cwd = path.resolve(process.cwd());\n\n    let gitRoot: string;\n    try {\n        gitRoot = getProjectRoot();\n    } catch {\n        console.log(kleur.yellow('\\n  ⚠ Not a git repository — git-dependent phases (beads, gitnexus) will be skipped'));\n        console.log(kleur.dim('    Run git init first, then: gitnexus analyze\\n'));\n        return { projectRoot: cwd, isGitRepo: false, aborted: false };\n    }\n\n    const resolvedGitRoot = path.resolve(gitRoot);\n    if (resolvedGitRoot === cwd) {\n        return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: false };\n    }\n\n    console.log(kleur.yellow('\\n  ⚠ CWD is not the git root.'));\n    console.log(kleur.dim(`    CWD:      ${cwd}`));\n    console.log(kleur.dim(`    Git root: ${resolvedGitRoot}`));\n\n    if (yes) {\n        console.log(kleur.dim('    --yes supplied; proceeding with the git root.\\n'));\n        return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: false };\n    }\n\n    if (!hasInteractiveTTY()) {\n        console.log(kleur.red('    Non-interactive session cannot choose automatically.'));\n        console.log(kleur.dim('    Re-run with --yes to proceed with the git root, or run from the git root directory.\\n'));\n        return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: true };\n    }\n\n    const { action } = await prompts({\n        type: 'select',\n        name: 'action',\n        message: 'CWD is not the git root. Run git init here first, or continue targeting the git root?',\n        choices: [\n            { title: 'Abort and show instructions', value: 'abort' },\n            { title: 'Run git init in CWD and use this directory', value: 'git-init' },\n            { title: 'Proceed anyway and target the git root', value: 'proceed' },\n        ],\n        initial: 0,\n    });\n\n    if (action === 'git-init') {\n        const initResult = spawnSync('git', ['init'], {\n            cwd,\n            encoding: 'utf8',\n            timeout: 10000,\n        });\n\n        if (initResult.status !== 0) {\n            if (initResult.stdout) process.stdout.write(initResult.stdout);\n            if (initResult.stderr) process.stderr.write(initResult.stderr);\n            console.log(kleur.red('\\n  ✗ Failed to initialize git repository in CWD.'));\n            console.log(kleur.dim('    Fix git init errors and re-run xtrm init.\\n'));\n            return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: true };\n        }\n\n        try {\n            const refreshedGitRoot = getProjectRoot();\n            console.log(kleur.green(`  ✓ Initialized git repo in CWD: ${refreshedGitRoot}`));\n            return { projectRoot: path.resolve(refreshedGitRoot), isGitRepo: true, aborted: false };\n        } catch {\n            console.log(kleur.red('\\n  ✗ git init succeeded, but git root could not be resolved.'));\n            console.log(kleur.dim('    Re-run xtrm init from this directory.\\n'));\n            return { projectRoot: cwd, isGitRepo: true, aborted: true };\n        }\n    }\n\n    if (action === 'proceed') {\n        console.log(kleur.dim('    Proceeding with the existing git root.\\n'));\n        return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: false };\n    }\n\n    console.log(kleur.dim('\\n  Init cancelled.'));\n    console.log(kleur.dim(`  To initialize this directory as its own repo: cd ${cwd} && git init`));\n    console.log(kleur.dim(`  To target the existing repo root: cd ${resolvedGitRoot} && xtrm init\\n`));\n    return { projectRoot: resolvedGitRoot, isGitRepo: true, aborted: true };\n}\n\n// ── Main Orchestrator ─────────────────────────────────────────────────────────\n// Top-level entrypoint for `xtrm init`. Runs all phases in order:\n//   1. Preflight          — inventory system state (read-only, no mutations)\n//   2. Plan               — render a consolidated view of what will change\n//   3. Confirm            — single gate; all mutations happen only after this\n//   4. Machine Bootstrap  — install missing system tools (bd, dolt, bv, pi, pnpm)\n//   5. Claude Runtime     — .xtrm hook wiring into .claude/settings.json\n//   6. Pi Runtime         — .xtrm registry scaffold + extensions + packages + skills sync\n//   7. Project Bootstrap  — bd init, gitnexus index, CLAUDE.md/AGENTS.md headers, service hook wiring\n//   8. Verification       — unified summary of all phase outcomes\n//   9. Next Steps         — guidance based on verification result\n\nexport async function runProjectInit(opts: InstallOpts = {}): Promise<void> {\n    const { dryRun = false, yes = false } = opts;\n    const effectiveYes = yes || process.argv.includes('--yes') || process.argv.includes('-y');\n\n    const rootResolution = await resolveInitProjectRoot(effectiveYes);\n    if (rootResolution.aborted) {\n        return;\n    }\n\n    const projectRoot = rootResolution.projectRoot;\n    const isGitRepo = rootResolution.isGitRepo;\n\n    // ── Phase 1: Preflight / Inventory ──────────────────────────────────────\n    const inventory = await runPreflight(projectRoot, opts);\n\n    // ── Phase 2: Plan ────────────────────────────────────────────────────────\n    renderInitPlan(inventory);\n\n    if (dryRun) {\n        console.log(kleur.dim('  Dry run — no changes written\\n'));\n        return;\n    }\n\n    // ── Phase 3: Confirmation (single gate for all mutations) ────────────────\n    const ok = await confirmInitPlan(effectiveYes);\n    if (!ok) {\n        console.log(kleur.dim('  Init cancelled.\\n'));\n        return;\n    }\n\n    // ── Phase 4: Machine Bootstrap ───────────────────────────────────────────\n    // Install missing system tools that workflow gates and the Claude runtime\n    // depend on. Uses the pre-computed plan from Phase 1 inventory.\n    await runMachineBootstrapPhase({ dryRun: false });\n\n    // ── Phase 5: Claude Runtime Sync (.xtrm hooks wiring) ───────────────────\n    await runClaudeRuntimeSyncPhase({ repoRoot: projectRoot, dryRun: false, isGlobal: false });\n\n    // ── Phase 6: Registry scaffold (.xtrm files copy) ───────────────────────\n    const packageRoot = getPackageRoot();\n    const pkgJson = await fs.readJson(path.join(packageRoot, 'package.json')) as { version?: string };\n    await logBootstrapTrigger({\n        command: 'init',\n        cwd: process.cwd(),\n        pkgVersion: pkgJson.version ?? '0.0.0',\n    });\n    await ensureGlobalSkillsBootstrapped(packageRoot, opts.force ? { force: true } : {});\n    if (shouldUseGlobalHooks()) {\n        await ensureGlobalHooksBootstrapped(packageRoot, opts.force ? { force: true } : {});\n        await reconcileGlobalClaudeHooks();\n        await reconcileGlobalPiHooks();\n    }\n    const ctx = await getContext({\n        createMissingDirs: true,\n        isGlobal: opts.global,\n        projectRoot,\n    });\n    const userXtrmDir = ctx.targets[0];\n    const registryPath = path.join(packageRoot, '.xtrm', 'registry.json');\n    const registry = await fs.readJson(registryPath) as RegistryManifest;\n\n    const registryInstallStats = await installFromRegistry({\n        packageRoot,\n        registry,\n        userXtrmDir,\n        dryRun: false,\n        force: false,\n        yes: true,\n        overrideRoots: getGlobalSkillsOverrideRoots(),\n    });\n    if (registryInstallStats.missingSourceSkipped > 0) {\n        console.log(kleur.yellow(`  ⚠ Registry/source mismatch: skipped ${registryInstallStats.missingSourceSkipped} missing source file${registryInstallStats.missingSourceSkipped === 1 ? '' : 's'}.`));\n        console.log(kleur.yellow('    Init continued, but some skills/files may be absent until registry payload is corrected.'));\n    }\n\n    await scaffoldSkillsDefaultFromPackage({ packageRoot, userXtrmDir, dryRun: false });\n\n    const mcpSync = await syncProjectMcpConfig(projectRoot, { preserveExistingFile: true });\n    if (mcpSync.wroteFile) {\n        const verb = mcpSync.createdFile ? 'Created' : 'Updated';\n        console.log(kleur.dim(`  • ${verb} ${mcpSync.mcpPath} (+${mcpSync.addedServers.length} server${mcpSync.addedServers.length === 1 ? '' : 's'})`));\n    } else if (mcpSync.preservedExistingFile) {\n        console.log(kleur.dim(`  • Preserved existing ${mcpSync.mcpPath}`));\n    } else {\n        console.log(kleur.dim(`  • ${mcpSync.mcpPath} already up to date`));\n    }\n    for (const warning of mcpSync.missingEnvWarnings) {\n        console.log(kleur.yellow(`  ⚠ MCP server ${warning}`));\n    }\n\n    // Optional plugin-era cleanup (matches install --prune behavior).\n    if (opts.prune) {\n        await runPluginEraCleanup({\n            dryRun: false,\n            yes: true,\n            scope: 'all',\n            repoRoot: projectRoot,\n        });\n    }\n\n    // ── Phase 6a: Pi Runtime Sync (project MCP + extensions + packages) ──────\n    const piMcpSync = await syncPiMcpConfig(projectRoot);\n    if (piMcpSync.wroteFile) {\n        const verb = piMcpSync.createdFile ? 'Created' : 'Updated';\n        console.log(kleur.dim(`  • ${verb} ${piMcpSync.mcpPath} (+${piMcpSync.addedServers.length} server${piMcpSync.addedServers.length === 1 ? '' : 's'})`));\n    } else {\n        console.log(kleur.dim(`  • ${piMcpSync.mcpPath} already up to date`));\n    }\n    for (const warning of piMcpSync.missingEnvWarnings) {\n        console.log(kleur.yellow(`  ⚠ Pi MCP server ${warning}`));\n    }\n\n    await runPiInstall(false, Boolean(opts.global), projectRoot);\n\n    // ── Phase 6b: Rebuild runtime skills views + wire runtime pointers ───────\n    if (opts.force) {\n        await ensureUserAgentsSkillsSymlink({ force: true });\n    } else {\n        await ensureUserAgentsSkillsSymlink();\n    }\n    const skillsActivation = opts.force\n        ? await ensureAgentsSkillsSymlink(projectRoot, { force: true })\n        : await ensureAgentsSkillsSymlink(projectRoot);\n    if (skillsActivation.activatedClaudeSkills === skillsActivation.activatedPiSkills) {\n        console.log(kleur.green(`  ✓ Reconciled ${skillsActivation.activatedClaudeSkills} runtime skills`));\n    } else {\n        console.log(kleur.green(`  ✓ Activated runtime skills → claude:${skillsActivation.activatedClaudeSkills}, pi:${skillsActivation.activatedPiSkills}`));\n    }\n    await assertRuntimeSkillsViews(projectRoot, { scope: 'both' });\n\n    // ── Phase 7: Project Bootstrap ───────────────────────────────────────────\n    // Initialize beads workspace, inject CLAUDE.md/AGENTS.md instruction\n    // headers, and ensure the GitNexus code intelligence index is current.\n    await runProjectBootstrap(projectRoot, isGitRepo);\n\n    // ── Phase 8: Dependency maintenance ──────────────────────────────────────\n    // Check bd/gitnexus freshness, run bd doctor repairs, and refresh stale\n    // GitNexus indexes as part of the single init summary.\n    const dependencyMaintenance = await runDependencyMaintenance(projectRoot, true);\n    printDependencyMaintenanceSummary(dependencyMaintenance);\n\n    // ── Phase 9: Verification ────────────────────────────────────────────────\n    // Unified verification across all phases: machine, Claude, Pi, project.\n    const verification = await runInitVerification(projectRoot);\n    renderVerificationSummary(verification);\n\n    // ── Phase 9: Summary ─────────────────────────────────────────────────────\n    if (verification.allPassed) {\n        console.log(kleur.bold('  Next steps:'));\n        console.log(kleur.white('    • Quality gates are active globally'));\n        console.log(kleur.white('    • Run `xt pi` or `xt claude` to start a worktree session'));\n        if (inventory.projectTypes.length > 0) {\n            console.log(kleur.white(`    • Project types: ${inventory.projectTypes.join(', ')}`));\n        }\n    } else {\n        console.log(kleur.bold('  Troubleshooting:'));\n        console.log(kleur.white('    • Re-run `xtrm init` to retry incomplete phases'));\n        console.log(kleur.white('    • Check individual tool status with `xt pi doctor` or `xt claude doctor`'));\n    }\n    console.log('');\n}\n\nasync function runBdInitForProject(projectRoot: string): Promise<void> {\n\n    console.log(kleur.bold('Running beads initialization (bd init)...'));\n\n    const result = spawnSync('bd', ['init'], {\n        cwd: projectRoot,\n        encoding: 'utf8',\n        timeout: 15000,\n    });\n\n    if (result.error) {\n        console.log(kleur.yellow(`  ⚠ Could not run bd init (${result.error.message})`));\n        return;\n    }\n\n    if (result.status !== 0) {\n        const text = `${result.stdout || ''}\\n${result.stderr || ''}`.toLowerCase();\n        if (text.includes('already initialized')) {\n            console.log(kleur.dim('  ✓ beads workspace already initialized'));\n            const patch = await ensureBdAutoStagePatch(projectRoot, true);\n            console.log(kleur.dim(`  • ${summarizeBdAutoStagePatch(patch)}`));\n            for (const warning of patch.warnings) {\n                console.log(kleur.yellow(`  ⚠ ${warning}`));\n            }\n            return;\n        }\n        if (result.stdout) process.stdout.write(result.stdout);\n        if (result.stderr) process.stderr.write(result.stderr);\n        console.log(kleur.yellow(`  ⚠ bd init exited with code ${result.status}`));\n        return;\n    }\n\n    if (result.stdout) process.stdout.write(result.stdout);\n    if (result.stderr) process.stderr.write(result.stderr);\n\n    const patch = await ensureBdAutoStagePatch(projectRoot, true);\n    console.log(kleur.dim(`  • ${summarizeBdAutoStagePatch(patch)}`));\n    for (const warning of patch.warnings) {\n        console.log(kleur.yellow(`  ⚠ ${warning}`));\n    }\n}\n\nasync function runGitNexusInitForProject(projectRoot: string): Promise<void> {\n    const gitnexusCheck = spawnSync('gitnexus', ['--version'], {\n        cwd: projectRoot,\n        encoding: 'utf8',\n        timeout: 5000,\n    });\n\n    if (gitnexusCheck.status !== 0) {\n        console.log(kleur.yellow('  ⚠ gitnexus not found; skipping index bootstrap'));\n        console.log(kleur.dim('    Install with: npm install -g gitnexus'));\n        return;\n    }\n\n    // Pre-check: git repo with at least one commit required for meaningful indexing\n    const hasCommits = spawnSync('git', ['rev-parse', 'HEAD'], {\n        cwd: projectRoot,\n        encoding: 'utf8',\n        timeout: 5000,\n    });\n    if (hasCommits.status !== 0) {\n        console.log(kleur.yellow('  ⚠ No commits yet — skipping gitnexus analyze'));\n        console.log(kleur.dim('    Run manually after your first commit: gitnexus analyze'));\n        return;\n    }\n\n    console.log(kleur.bold('Checking GitNexus index status...'));\n\n    const status = spawnSync('gitnexus', ['status'], {\n        cwd: projectRoot,\n        encoding: 'utf8',\n        timeout: 10000,\n    });\n\n    const statusText = `${status.stdout || ''}\\n${status.stderr || ''}`.toLowerCase();\n    const needsAnalyze = status.status !== 0 ||\n        statusText.includes('stale') ||\n        statusText.includes('not indexed') ||\n        statusText.includes('missing');\n\n    if (!needsAnalyze) {\n        console.log(kleur.dim('  ✓ GitNexus index is ready'));\n        return;\n    }\n\n    console.log(kleur.bold('Running GitNexus indexing (gitnexus analyze)...'));\n    const analyze = spawnSync('gitnexus', ['analyze'], {\n        cwd: projectRoot,\n        encoding: 'utf8',\n        timeout: 120000,\n    });\n\n    if (analyze.status === 0) {\n        // gitnexus analyze unconditionally writes 6 skills into\n        // <project>/.claude/skills/gitnexus/<skill-name>/SKILL.md. Because\n        // xtrm makes .claude/skills a symlink to .xtrm/skills/active/, those\n        // writes land in active/gitnexus/ as a non-symlink directory, which\n        // breaks the flat-active-view invariant and trips activeReady (see\n        // skills-runtime-views.ts hasOnlyValidSymlinkEntries). Remove the\n        // pollution — the same skills are already vendored as flat entries\n        // under .xtrm/skills/default/ and symlinked into active/ correctly\n        // (xtrm-wbfd). projectRoot is derived from git rev-parse or an\n        // internal opts.projectRoot; not user input.\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        const gitnexusPollutionPath = path.join(projectRoot, '.claude', 'skills', 'gitnexus');\n        try {\n            fs.removeSync(gitnexusPollutionPath);\n        } catch {\n            // Non-fatal: if the dir wasn't created or we lack permissions,\n            // activeReady will still warn; that's no worse than today.\n        }\n        console.log(kleur.green('  ✓ GitNexus index updated'));\n        return;\n    }\n\n    if (analyze.stdout) process.stdout.write(analyze.stdout);\n    if (analyze.stderr) process.stderr.write(analyze.stderr);\n    console.log(kleur.yellow(`  ⚠ gitnexus analyze exited with code ${analyze.status}`));\n}\n\nfunction getProjectRoot(): string {\n    const result = spawnSync('git', ['rev-parse', '--show-toplevel'], {\n        encoding: 'utf8',\n        timeout: 5000,\n    });\n    if (result.status !== 0) {\n        throw new Error('Not inside a git repository. Run this command from your target project directory.');\n    }\n    return path.resolve(result.stdout.trim());\n}\n","import kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport crypto from 'node:crypto';\nimport { t } from '../utils/theme.js';\nimport { checkDrift } from './drift.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\nimport { shouldUseGlobalSkills } from './global-skills-flag.js';\nimport { resolveGlobalSkillsRoot } from './skills-layout.js';\n\ndeclare const __dirname: string;\n\nexport interface RegistryFileEntry {\n    hash: string;\n    version: string;\n}\n\nexport interface RegistryAsset {\n    source_dir: string;\n    install_mode: 'copy' | 'symlink';\n    install_scope?: 'global' | 'project';\n    files: Record<string, RegistryFileEntry>;\n}\n\nexport interface RegistryManifest {\n    version: string;\n    assets: Record<string, RegistryAsset>;\n}\n\nexport interface InstallStats {\n    installed: number;\n    upToDate: number;\n    driftedSkipped: number;\n    forced: number;\n    expectedInstalls: number;\n    missingSourceSkipped: number;\n}\n\nfunction formatMissingSources(missingSources: readonly string[]): string {\n    return missingSources.map(sourcePath => '    • ' + sourcePath).join('\\n');\n}\n\nexport const USER_OWNED_PATHS: readonly string[] = [\n    'memory.md',\n    'skills/user/',\n];\n\nexport function isUserOwnedPath(relativePath: string): boolean {\n    return USER_OWNED_PATHS.some(userOwnedPath => userOwnedPath.endsWith('/')\n        ? relativePath.startsWith(userOwnedPath)\n        : relativePath === userOwnedPath);\n}\n\nexport function resolvePackageRoot(): string {\n    const candidates = [\n        path.resolve(__dirname, '../..'),\n        path.resolve(__dirname, '../../..'),\n    ];\n\n    for (const candidate of candidates) {\n        if (fs.existsSync(path.join(candidate, '.xtrm', 'registry.json'))) {\n            return candidate;\n        }\n    }\n\n    throw new Error('Failed to locate package root: .xtrm/registry.json not found.');\n}\n\nexport function toPosix(value: string): string {\n    return value.replace(/\\\\/g, '/');\n}\n\nexport function stripXtrmPrefix(sourceDir: string): string {\n    return sourceDir.replace(/^\\.xtrm\\/?/, '');\n}\n\nexport function toUserRelativePath(sourceDir: string, filePath: string): string {\n    return toPosix(path.posix.join(stripXtrmPrefix(sourceDir), filePath));\n}\n\nexport function isSkillsDefaultPath(relativePath: string): boolean {\n    return relativePath.startsWith('skills/default/');\n}\n\nfunction resolveInstalledPath(userXtrmDir: string, relativePath: string, overrideRoots?: Record<string, string>): string {\n    if (relativePath.startsWith('skills/default/')) {\n        const skillsRoot = overrideRoots?.skills;\n        if (skillsRoot) {\n            // Canonical registry relative paths generated from package payload.\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n            return path.join(skillsRoot, relativePath.slice('skills/default/'.length));\n        }\n    }\n\n    if (relativePath.startsWith('skills/optional/')) {\n        const optionalSkillsRoot = overrideRoots?.skills_optional;\n        if (optionalSkillsRoot) {\n            // Canonical registry relative paths generated from package payload.\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n            return path.join(optionalSkillsRoot, relativePath.slice('skills/optional/'.length));\n        }\n    }\n\n    // Canonical registry relative paths generated from package payload.\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    return path.join(userXtrmDir, relativePath);\n}\n\nexport async function hashFile(filePath: string): Promise<string> {\n    const content = await fs.readFile(filePath);\n    return crypto.createHash('sha256').update(content).digest('hex');\n}\n\nexport async function scaffoldSkillsDefaultFromPackage(params: {\n    packageRoot: string;\n    userXtrmDir: string;\n    dryRun: boolean;\n}): Promise<'copy' | 'noop'> {\n    const { packageRoot, userXtrmDir, dryRun } = params;\n    const sourceDir = path.join(packageRoot, '.xtrm', 'skills', 'default');\n    const targetDir = path.join(userXtrmDir, 'skills', 'default');\n\n    if (shouldUseGlobalSkills()) {\n        const globalSkillsRoot = resolveGlobalSkillsRoot();\n        const hasGlobalTree = await fs.pathExists(path.join(globalSkillsRoot, 'default'))\n            && await fs.pathExists(path.join(globalSkillsRoot, 'optional'));\n        if (hasGlobalTree) {\n            return 'noop';\n        }\n    }\n\n    const stat = await fs.lstat(targetDir).catch(() => null);\n    if (stat) {\n        if (stat.isSymbolicLink()) {\n            const [sourceRealPath, targetRealPath] = await Promise.all([\n                fs.realpath(sourceDir).catch(() => null),\n                fs.realpath(targetDir).catch(() => null),\n            ]);\n\n            if (sourceRealPath && targetRealPath && sourceRealPath === targetRealPath) {\n                return 'noop'; // current package/dev symlink, leave it alone\n            }\n\n            if (dryRun) {\n                return 'noop';\n            }\n\n            // Broken or stale symlink — remove and re-scaffold from the current package payload.\n            await fs.remove(targetDir);\n        } else {\n            return 'noop'; // real directory, leave it alone\n        }\n    }\n\n    if (dryRun) {\n        return 'noop';\n    }\n\n    await fs.ensureDir(path.dirname(targetDir));\n    await fs.copy(sourceDir, targetDir);\n    return 'copy';\n}\n\nfunction getAssetInstallScope(asset: RegistryAsset): 'global' | 'project' {\n    return asset.install_scope ?? 'project';\n}\n\nexport function collectManagedDefaultSkillNames(registry: RegistryManifest): Set<string> {\n    const names = new Set<string>();\n    for (const asset of Object.values(registry.assets)) {\n        if (asset.source_dir !== '.xtrm/skills/default') continue;\n        for (const filePath of Object.keys(asset.files)) {\n            const first = filePath.split('/')[0];\n            if (first) names.add(first);\n        }\n    }\n    return names;\n}\n\nasync function isDirLike(entryPath: string, entryStat: import('fs').Stats): Promise<boolean> {\n    if (entryStat.isDirectory()) return true;\n    if (!entryStat.isSymbolicLink()) return false;\n    const resolved = await fs.stat(entryPath).catch(() => null);\n    return Boolean(resolved?.isDirectory());\n}\n\nexport async function pruneRetiredManagedSkills(params: {\n    userXtrmDir: string;\n    registry: RegistryManifest;\n    dryRun: boolean;\n    overrideRoots?: Record<string, string>;\n}): Promise<{ removed: string[] }> {\n    const { userXtrmDir, registry, dryRun, overrideRoots } = params;\n\n    // Prune where installFromRegistry would write: honor the same skills override root.\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    const defaultRoot = overrideRoots?.skills ?? path.join(userXtrmDir, 'skills', 'default');\n\n    const rootStat = await fs.lstat(defaultRoot).catch(() => null);\n    if (!rootStat || rootStat.isSymbolicLink() || !rootStat.isDirectory()) {\n        return { removed: [] };\n    }\n\n    const managedNames = collectManagedDefaultSkillNames(registry);\n    if (managedNames.size === 0) {\n        // No default skills asset in this registry (e.g. project snapshot under global mode).\n        // Refuse to prune — we can't distinguish retired vs simply not-in-scope.\n        return { removed: [] };\n    }\n\n    const onDisk = await fs.readdir(defaultRoot);\n    const removed: string[] = [];\n\n    for (const name of onDisk) {\n        if (managedNames.has(name)) continue;\n\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        const entryPath = path.join(defaultRoot, name);\n        const entryStat = await fs.lstat(entryPath).catch(() => null);\n        if (!entryStat) continue;\n        if (!(await isDirLike(entryPath, entryStat))) continue;\n\n        removed.push(name);\n        if (!dryRun) {\n            await fs.remove(entryPath);\n        }\n    }\n\n    // Sweep matching active-view symlinks that point at the pruned default entries.\n    // User-owned active content (real dirs, or symlinks pointing outside the default root) is untouched.\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    const activeRoot = path.join(userXtrmDir, 'skills', 'active');\n    const activeStat = await fs.lstat(activeRoot).catch(() => null);\n    if (activeStat?.isDirectory() && !activeStat.isSymbolicLink()) {\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        const resolvedDefaultRoot = path.resolve(defaultRoot);\n        for (const name of removed) {\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n            const activeEntry = path.join(activeRoot, name);\n            const linkStat = await fs.lstat(activeEntry).catch(() => null);\n            if (!linkStat || !linkStat.isSymbolicLink()) continue;\n            const linkTarget = await fs.readlink(activeEntry).catch(() => null);\n            if (!linkTarget) continue;\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n            const resolvedTarget = path.resolve(path.dirname(activeEntry), linkTarget);\n            // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n            if (resolvedTarget === path.join(resolvedDefaultRoot, name)) {\n                if (!dryRun) {\n                    await fs.remove(activeEntry);\n                }\n            }\n        }\n    }\n\n    return { removed };\n}\n\nasync function appendGlobalSkillsSkipLog(asset: string, count: number): Promise<void> {\n    const logPath = path.join(path.dirname(resolveGlobalSkillsRoot()), 'logs', 'skills-migration.jsonl');\n    await fs.ensureDir(path.dirname(logPath));\n    await fs.appendFile(logPath, `${JSON.stringify({\n        timestamp: new Date().toISOString(),\n        component: 'skills-bootstrap',\n        event: 'install.skip.global-managed',\n        asset,\n        count,\n    })}\\n`);\n}\n\nfunction createProjectRegistrySnapshot(registry: RegistryManifest): RegistryManifest {\n    if (!shouldUseGlobalSkills()) {\n        return registry;\n    }\n\n    const assets = Object.fromEntries(\n        Object.entries(registry.assets).filter(([, asset]) => getAssetInstallScope(asset) !== 'global'),\n    );\n\n    return {\n        ...registry,\n        assets,\n    };\n}\n\nexport function buildExpectedHashes(registry: RegistryManifest): Map<string, string> {\n    const expected = new Map<string, string>();\n\n    for (const asset of Object.values(registry.assets)) {\n        for (const [filePath, fileEntry] of Object.entries(asset.files)) {\n            expected.set(toUserRelativePath(asset.source_dir, filePath), fileEntry.hash);\n        }\n    }\n\n    return expected;\n}\n\nexport async function installFromRegistry(params: {\n    packageRoot: string;\n    registry: RegistryManifest;\n    userXtrmDir: string;\n    dryRun: boolean;\n    force: boolean;\n    yes: boolean;\n    strictRegistry?: boolean;\n    overrideRoots?: Record<string, string>;\n}): Promise<InstallStats> {\n    const { packageRoot, registry, userXtrmDir, dryRun, force, yes, strictRegistry = false, overrideRoots } = params;\n    const registryPath = path.join(packageRoot, '.xtrm', 'registry.json');\n\n    const drift = await checkDrift(registryPath, userXtrmDir, overrideRoots);\n    const expectedHashes = buildExpectedHashes(registry);\n\n    const missingSet = new Set(drift.missing);\n    const upToDateSet = new Set(drift.upToDate);\n    const driftedSet = new Set(drift.drifted);\n\n    if (!force) {\n        const driftedSkills = drift.drifted.filter(isSkillsDefaultPath);\n        if (driftedSkills.length > 0) {\n            console.log(kleur.yellow('\\n  ⚠ Drift detected in .xtrm files (local modifications preserved by default):'));\n            for (const relativePath of driftedSkills.slice(0, 10)) {\n                const absolutePath = resolveInstalledPath(userXtrmDir, relativePath, overrideRoots);\n                const actualHash = await hashFile(absolutePath);\n                const expectedHash = expectedHashes.get(relativePath) ?? 'unknown';\n                console.log(kleur.yellow(`    • ${relativePath}`));\n                console.log(kleur.dim(`      expected ${expectedHash.slice(0, 12)}…  actual ${actualHash.slice(0, 12)}…`));\n            }\n        }\n\n        const nonSkillDrifted = drift.drifted.filter(relativePath => !isSkillsDefaultPath(relativePath));\n        if (nonSkillDrifted.length > 0) {\n            if (driftedSkills.length === 0) {\n                console.log(kleur.yellow('\\n  ⚠ Drift detected in .xtrm files (local modifications preserved by default):'));\n            }\n            for (const relativePath of nonSkillDrifted.slice(0, 20)) {\n                const absolutePath = resolveInstalledPath(userXtrmDir, relativePath, overrideRoots);\n                const actualHash = await hashFile(absolutePath);\n                const expectedHash = expectedHashes.get(relativePath) ?? 'unknown';\n                console.log(kleur.yellow(`    • ${relativePath}`));\n                console.log(kleur.dim(`      expected ${expectedHash.slice(0, 12)}…  actual ${actualHash.slice(0, 12)}…`));\n            }\n        }\n\n        if (drift.drifted.length > 20) {\n            console.log(kleur.dim(`    … and ${drift.drifted.length - 20} more`));\n        }\n    }\n\n    if (force && drift.drifted.length > 0 && !yes) {\n        const confirmed = await confirmDestructiveAction({\n            yes,\n            message: `Overwrite ${drift.drifted.length} drifted .xtrm file(s)?`,\n            initial: true,\n        });\n\n        if (!confirmed) {\n            console.log(t.muted('  Install cancelled.\\n'));\n            return {\n                installed: 0,\n                upToDate: drift.upToDate.length,\n                driftedSkipped: drift.drifted.length,\n                forced: 0,\n                expectedInstalls: 0,\n                missingSourceSkipped: 0,\n            };\n        }\n    }\n\n    let installed = 0;\n    let forced = 0;\n    let expectedInstalls = 0;\n    let missingSourceSkipped = 0;\n    const missingSources: string[] = [];\n\n    for (const [assetKey, asset] of Object.entries(registry.assets)) {\n        const installScope = getAssetInstallScope(asset);\n        const isGlobalManaged = shouldUseGlobalSkills() && installScope === 'global';\n        const assetRoot = overrideRoots?.[assetKey];\n\n        if (isGlobalManaged) {\n            await appendGlobalSkillsSkipLog(assetKey, Object.keys(asset.files).length);\n        }\n\n        for (const [filePath] of Object.entries(asset.files)) {\n            const relativePath = toUserRelativePath(asset.source_dir, filePath);\n            const sourcePath = path.join(packageRoot, asset.source_dir, filePath);\n            const targetPath = assetRoot\n                // Canonical registry paths from package payload + controlled override roots.\n                // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n                ? path.join(assetRoot, filePath)\n                // Canonical registry relative paths generated from package payload.\n                // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n                : path.join(userXtrmDir, relativePath);\n\n            if (isUserOwnedPath(relativePath)) {\n                continue;\n            }\n\n            if (upToDateSet.has(relativePath)) {\n                continue;\n            }\n\n            const isMissing = missingSet.has(relativePath);\n            const isDrifted = driftedSet.has(relativePath);\n\n            if (!isMissing && !isDrifted) {\n                continue;\n            }\n\n            if (isDrifted && !force) {\n                continue;\n            }\n\n            if (isDrifted && force) {\n                forced += 1;\n            }\n\n            expectedInstalls += 1;\n\n            const sourceExists = await fs.pathExists(sourcePath);\n            if (!sourceExists) {\n                missingSourceSkipped += 1;\n                const missingSource = toPosix(path.relative(packageRoot, sourcePath));\n                missingSources.push(missingSource);\n                console.log(kleur.yellow(`  ⚠ Skipping missing source file: ${missingSource}`));\n                continue;\n            }\n\n            if (dryRun) {\n                const action = isDrifted ? 'overwrite' : 'install';\n                console.log(kleur.dim(`  [DRY RUN] would ${action} ${relativePath}`));\n                installed += 1;\n                continue;\n            }\n\n            await fs.ensureDir(path.dirname(targetPath));\n            await fs.copy(sourcePath, targetPath, { overwrite: true });\n            installed += 1;\n        }\n    }\n\n    if (strictRegistry && missingSources.length > 0) {\n        throw new Error([\n            'Registry/source mismatch: missing package source files.',\n            formatMissingSources(missingSources),\n        ].join('\\n'));\n    }\n\n    // Snapshot the package registry into the target .xtrm/ so `xt update\n    // --root` and downstream tooling can identify this repo as managed.\n    // Without this, freshly-init'd repos show as \"incomplete\" until the\n    // operator manually copies registry.json from the xtrm-tools package\n    // (see xtrm-ya2i).\n    if (!dryRun) {\n        await fs.ensureDir(userXtrmDir);\n        // Both inputs internal: userXtrmDir resolved by getContext from package\n        // config; 'registry.json' is a hardcoded filename. No user input here.\n        // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n        const targetRegistryPath = path.join(userXtrmDir, 'registry.json');\n        await fs.writeJson(targetRegistryPath, createProjectRegistrySnapshot(registry), { spaces: 2 });\n        await fs.appendFile(targetRegistryPath, '\\n');\n    }\n\n    return {\n        installed,\n        upToDate: upToDateSet.size,\n        driftedSkipped: force ? 0 : driftedSet.size,\n        forced,\n        expectedInstalls,\n        missingSourceSkipped,\n    };\n}\n","import crypto from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'fs-extra';\n\ninterface RegistryFileEntry {\n    hash: string;\n    version: string;\n}\n\ninterface RegistryAsset {\n    source_dir: string;\n    install_mode: 'copy' | 'symlink';\n    files: Record<string, RegistryFileEntry>;\n}\n\ninterface RegistryManifest {\n    version: string;\n    assets: Record<string, RegistryAsset>;\n}\n\nexport interface DriftReport {\n    missing: string[];\n    upToDate: string[];\n    drifted: string[];\n}\n\nfunction toPosix(value: string): string {\n    return value.split(path.sep).join('/');\n}\n\nfunction stripXtrmPrefix(sourceDir: string): string {\n    return sourceDir.replace(/^\\.xtrm\\/?/, '');\n}\n\nfunction buildUserRelativePath(sourceDir: string, filePath: string): string {\n    return toPosix(path.posix.join(stripXtrmPrefix(sourceDir), filePath));\n}\n\nasync function hashFile(filePath: string): Promise<string> {\n    const content = await fs.readFile(filePath);\n    return crypto.createHash('sha256').update(content).digest('hex');\n}\n\nexport async function checkDrift(\n    registryPath: string,\n    userXtrmDir: string,\n    overrideRoots?: Record<string, string>,\n): Promise<DriftReport> {\n    const registry = await fs.readJson(registryPath) as RegistryManifest;\n\n    const missing: string[] = [];\n    const upToDate: string[] = [];\n    const drifted: string[] = [];\n\n    for (const [assetKey, asset] of Object.entries(registry.assets)) {\n        const assetRoot = overrideRoots?.[assetKey];\n        for (const [filePath, entry] of Object.entries(asset.files)) {\n            const relativePath = buildUserRelativePath(asset.source_dir, filePath);\n            const userFilePath = assetRoot\n                ? path.join(assetRoot, filePath)\n                : path.join(userXtrmDir, relativePath);\n\n            if (!await fs.pathExists(userFilePath)) {\n                missing.push(relativePath);\n                continue;\n            }\n\n            const userHash = await hashFile(userFilePath);\n            if (userHash === entry.hash) {\n                upToDate.push(relativePath);\n            } else {\n                drifted.push(relativePath);\n            }\n        }\n    }\n\n    return {\n        missing: missing.sort(),\n        upToDate: upToDate.sort(),\n        drifted: drifted.sort(),\n    };\n}\n","import kleur from 'kleur';\nimport fs from 'fs-extra';\nimport os from 'os';\nimport path from 'path';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\nexport type CleanupScope = 'global' | 'project' | 'all';\n\ntype CleanupOperationType = 'delete-path' | 'delete-json-map-entries';\n\ninterface JsonMapEntryDelete {\n  parentKey: string;\n  entryKey: string;\n}\n\ninterface CleanupOperation {\n  scope: Exclude<CleanupScope, 'all'>;\n  type: CleanupOperationType;\n  targetPath: string;\n  label: string;\n  mapEntryDeletes?: readonly JsonMapEntryDelete[];\n}\n\nexport interface RunPluginEraCleanupOptions {\n  dryRun?: boolean;\n  yes?: boolean;\n  scope?: CleanupScope;\n  repoRoot?: string;\n}\n\nexport interface CleanupResult {\n  dryRun: boolean;\n  scopesProcessed: Array<Exclude<CleanupScope, 'all'>>;\n  planned: CleanupOperation[];\n  removedPaths: string[];\n  updatedSettings: string[];\n}\n\nconst LEGACY_PLUGIN_INSTALL_ID = 'xtrm-tools@xtrm-tools';\nconst LEGACY_MARKETPLACE_ID = 'xtrm-tools';\n\nconst SETTINGS_MAP_ENTRY_DELETES: readonly JsonMapEntryDelete[] = [\n  { parentKey: 'enabledPlugins', entryKey: LEGACY_PLUGIN_INSTALL_ID },\n  { parentKey: 'extraKnownMarketplaces', entryKey: LEGACY_MARKETPLACE_ID },\n];\n\nconst INSTALLED_PLUGINS_FILE_ENTRY_DELETES: readonly JsonMapEntryDelete[] = [\n  { parentKey: '', entryKey: LEGACY_PLUGIN_INSTALL_ID },\n];\n\nconst KNOWN_MARKETPLACES_FILE_ENTRY_DELETES: readonly JsonMapEntryDelete[] = [\n  { parentKey: '', entryKey: LEGACY_MARKETPLACE_ID },\n];\n\nconst XTRM_MANAGED_PI_EXTENSIONS = new Set([\n  'beads',\n  'session-flow',\n  'quality-gates',\n  'service-skills',\n  'xtrm-loader',\n  'custom-footer',\n  'lsp-bootstrap',\n  'plan-mode',\n  'auto-session-name',\n  'auto-update',\n  'compact-header',\n  'git-checkpoint',\n  'pi-serena-compact',\n  'xtrm-ui',\n  'core',\n]);\n\nconst LEGACY_PROJECT_HOOK_FILES: Array<{ legacyFile: string; duplicatePath: string }> = [\n  { legacyFile: 'hook-config.json', duplicatePath: path.join('.xtrm', 'config', 'hooks.json') },\n  { legacyFile: 'quality-check.cjs', duplicatePath: path.join('.xtrm', 'hooks', 'quality-check.cjs') },\n  { legacyFile: 'quality-check.py', duplicatePath: path.join('.xtrm', 'hooks', 'quality-check.py') },\n  { legacyFile: 'specialists-complete.mjs', duplicatePath: path.join('.xtrm', 'hooks', 'specialists-complete.mjs') },\n  { legacyFile: 'specialists-session-start.mjs', duplicatePath: path.join('.xtrm', 'hooks', 'specialists-session-start.mjs') },\n];\n\nexport const PLUGIN_ERA_ARTIFACTS = {\n  settingsMapEntryDeletes: SETTINGS_MAP_ENTRY_DELETES,\n  installedPluginsEntry: LEGACY_PLUGIN_INSTALL_ID,\n  knownMarketplaceEntry: LEGACY_MARKETPLACE_ID,\n  piExtensionIds: Array.from(XTRM_MANAGED_PI_EXTENSIONS),\n  legacyProjectHookFiles: LEGACY_PROJECT_HOOK_FILES.map((entry) => entry.legacyFile),\n} as const;\n\nexport async function runPluginEraCleanup(opts: RunPluginEraCleanupOptions = {}): Promise<CleanupResult> {\n  const dryRun = opts.dryRun ?? false;\n  const yes = opts.yes ?? false;\n  const scope = opts.scope ?? 'all';\n  const repoRoot = opts.repoRoot ?? process.cwd();\n\n  const scopes = resolveScopes(scope);\n  const managedAgentSkills = await getManagedAgentSkillNames(repoRoot);\n\n  const operations = await planCleanupOperations({\n    repoRoot,\n    scopes,\n    managedAgentSkills,\n  });\n\n  if (operations.length === 0) {\n    console.log(kleur.dim('  ✓ Plugin-era prune: nothing to remove'));\n    return {\n      dryRun,\n      scopesProcessed: scopes,\n      planned: [],\n      removedPaths: [],\n      updatedSettings: [],\n    };\n  }\n\n  console.log(kleur.bold('\\n  Plugin-era cleanup (--prune)'));\n  printCleanupPlan(operations, dryRun);\n\n  const removedPaths: string[] = [];\n  const updatedSettings: string[] = [];\n\n  for (const currentScope of scopes) {\n    const scopeOperations = operations.filter((operation) => operation.scope === currentScope);\n    if (scopeOperations.length === 0) {\n      continue;\n    }\n\n    if (!dryRun) {\n      const confirmed = await confirmDestructiveAction({\n        yes,\n        initial: false,\n        message: `Apply plugin-era cleanup for ${currentScope} scope?`,\n      });\n\n      if (!confirmed) {\n        console.log(kleur.yellow(`  ↷ Skipped ${currentScope} cleanup by user choice`));\n        continue;\n      }\n    }\n\n    for (const operation of scopeOperations) {\n      if (operation.type === 'delete-path') {\n        if (!dryRun) {\n          await fs.remove(operation.targetPath);\n        }\n        removedPaths.push(operation.targetPath);\n      }\n\n      if (operation.type === 'delete-json-map-entries') {\n        if (!dryRun) {\n          await deleteJsonMapEntries(operation.targetPath, operation.mapEntryDeletes ?? []);\n        }\n        updatedSettings.push(operation.targetPath);\n      }\n    }\n  }\n\n  return {\n    dryRun,\n    scopesProcessed: scopes,\n    planned: operations,\n    removedPaths,\n    updatedSettings,\n  };\n}\n\nfunction resolveScopes(scope: CleanupScope): Array<Exclude<CleanupScope, 'all'>> {\n  if (scope === 'all') {\n    return ['global', 'project'];\n  }\n  return [scope];\n}\n\nasync function planCleanupOperations(params: {\n  repoRoot: string;\n  scopes: Array<Exclude<CleanupScope, 'all'>>;\n  managedAgentSkills: ReadonlySet<string>;\n}): Promise<CleanupOperation[]> {\n  const operations: CleanupOperation[] = [];\n\n  if (params.scopes.includes('global')) {\n    operations.push(...await planGlobalOperations(params.managedAgentSkills));\n  }\n\n  if (params.scopes.includes('project')) {\n    operations.push(...await planProjectOperations(params.repoRoot));\n  }\n\n  return operations;\n}\n\nasync function planGlobalOperations(managedAgentSkills: ReadonlySet<string>): Promise<CleanupOperation[]> {\n  const operations: CleanupOperation[] = [];\n\n  const claudeDir = path.join(os.homedir(), '.claude');\n  const pluginDir = path.join(claudeDir, 'plugins');\n  const claudeSettingsPath = path.join(claudeDir, 'settings.json');\n\n  const xtrmPluginDataDir = path.join(pluginDir, 'data', 'xtrm-tools-xtrm-tools');\n  if (await fs.pathExists(xtrmPluginDataDir)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-path',\n      targetPath: xtrmPluginDataDir,\n      label: '~/.claude/plugins/data/xtrm-tools-xtrm-tools/',\n    });\n  }\n\n  const xtrmPluginCacheDir = path.join(pluginDir, 'cache', 'xtrm-tools');\n  if (await fs.pathExists(xtrmPluginCacheDir)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-path',\n      targetPath: xtrmPluginCacheDir,\n      label: '~/.claude/plugins/cache/xtrm-tools/',\n    });\n  }\n\n  const xtrmPluginMarketplaceDir = path.join(pluginDir, 'marketplaces', 'xtrm-tools');\n  if (await fs.pathExists(xtrmPluginMarketplaceDir)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-path',\n      targetPath: xtrmPluginMarketplaceDir,\n      label: '~/.claude/plugins/marketplaces/xtrm-tools/',\n    });\n  }\n\n  const installedPluginsPath = path.join(pluginDir, 'installed_plugins.json');\n  if (await hasJsonMapEntries(installedPluginsPath, INSTALLED_PLUGINS_FILE_ENTRY_DELETES)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-json-map-entries',\n      targetPath: installedPluginsPath,\n      label: '~/.claude/plugins/installed_plugins.json key: xtrm-tools@xtrm-tools',\n      mapEntryDeletes: INSTALLED_PLUGINS_FILE_ENTRY_DELETES,\n    });\n  }\n\n  const knownMarketplacesPath = path.join(pluginDir, 'known_marketplaces.json');\n  if (await hasJsonMapEntries(knownMarketplacesPath, KNOWN_MARKETPLACES_FILE_ENTRY_DELETES)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-json-map-entries',\n      targetPath: knownMarketplacesPath,\n      label: '~/.claude/plugins/known_marketplaces.json key: xtrm-tools',\n      mapEntryDeletes: KNOWN_MARKETPLACES_FILE_ENTRY_DELETES,\n    });\n  }\n\n  if (await hasJsonMapEntries(claudeSettingsPath, SETTINGS_MAP_ENTRY_DELETES)) {\n    operations.push({\n      scope: 'global',\n      type: 'delete-json-map-entries',\n      targetPath: claudeSettingsPath,\n      label: '~/.claude/settings.json entries: enabledPlugins[xtrm-tools@xtrm-tools], extraKnownMarketplaces[xtrm-tools]',\n      mapEntryDeletes: SETTINGS_MAP_ENTRY_DELETES,\n    });\n  }\n\n  const piExtensionsDir = path.join(os.homedir(), '.pi', 'agent', 'extensions');\n  operations.push(...await planManagedDirectoryEntryDeletes({\n    scope: 'global',\n    baseDir: piExtensionsDir,\n    managedNames: XTRM_MANAGED_PI_EXTENSIONS,\n    labelPrefix: '~/.pi/agent/extensions/',\n  }));\n\n  return operations;\n}\n\nasync function planProjectOperations(repoRoot: string): Promise<CleanupOperation[]> {\n  const operations: CleanupOperation[] = [];\n\n  const claudeSettingsPath = path.join(repoRoot, '.claude', 'settings.json');\n  if (await hasJsonMapEntries(claudeSettingsPath, SETTINGS_MAP_ENTRY_DELETES)) {\n    operations.push({\n      scope: 'project',\n      type: 'delete-json-map-entries',\n      targetPath: claudeSettingsPath,\n      label: '.claude/settings.json entries: enabledPlugins[xtrm-tools@xtrm-tools], extraKnownMarketplaces[xtrm-tools]',\n      mapEntryDeletes: SETTINGS_MAP_ENTRY_DELETES,\n    });\n  }\n\n  const projectHooksDir = path.join(repoRoot, '.claude', 'hooks');\n  for (const { legacyFile, duplicatePath } of LEGACY_PROJECT_HOOK_FILES) {\n    const legacyPath = path.join(projectHooksDir, legacyFile);\n    const canonicalPath = path.join(repoRoot, duplicatePath);\n\n    if (!await fs.pathExists(legacyPath)) {\n      continue;\n    }\n\n    if (!await fs.pathExists(canonicalPath)) {\n      continue;\n    }\n\n    operations.push({\n      scope: 'project',\n      type: 'delete-path',\n      targetPath: legacyPath,\n      label: `.claude/hooks/${legacyFile}`,\n    });\n  }\n\n  return operations;\n}\n\nasync function planManagedDirectoryEntryDeletes(params: {\n  scope: Exclude<CleanupScope, 'all'>;\n  baseDir: string;\n  managedNames: ReadonlySet<string>;\n  labelPrefix: string;\n}): Promise<CleanupOperation[]> {\n  if (!await fs.pathExists(params.baseDir)) {\n    return [];\n  }\n\n  const entries = await fs.readdir(params.baseDir);\n  return entries\n    .filter((entry) => params.managedNames.has(entry))\n    .map((entry) => ({\n      scope: params.scope,\n      type: 'delete-path' as const,\n      targetPath: path.join(params.baseDir, entry),\n      label: `${params.labelPrefix}${entry}`,\n    }));\n}\n\nfunction printCleanupPlan(operations: CleanupOperation[], dryRun: boolean): void {\n  const byScope: Record<Exclude<CleanupScope, 'all'>, CleanupOperation[]> = {\n    global: [],\n    project: [],\n  };\n\n  for (const operation of operations) {\n    byScope[operation.scope].push(operation);\n  }\n\n  for (const [scopeName, scopeOps] of Object.entries(byScope) as Array<[Exclude<CleanupScope, 'all'>, CleanupOperation[]]>) {\n    if (scopeOps.length === 0) {\n      continue;\n    }\n\n    console.log(kleur.cyan(`  ${scopeName}:`));\n    for (const operation of scopeOps) {\n      const action = operation.type === 'delete-json-map-entries' ? 'update' : 'delete';\n      const prefix = dryRun ? '[DRY RUN] would' : 'will';\n      console.log(kleur.dim(`    • ${prefix} ${action} ${operation.label}`));\n    }\n  }\n  console.log('');\n}\n\nasync function hasJsonMapEntries(filePath: string, deletes: readonly JsonMapEntryDelete[]): Promise<boolean> {\n  const record = await readJsonObject(filePath);\n  if (!record) {\n    return false;\n  }\n\n  return deletes.some(({ parentKey, entryKey }) => hasJsonMapEntry(record, parentKey, entryKey));\n}\n\nfunction hasJsonMapEntry(record: Record<string, unknown>, parentKey: string, entryKey: string): boolean {\n  if (parentKey.length === 0) {\n    return entryKey in record;\n  }\n\n  const parent = record[parentKey];\n  if (!parent || typeof parent !== 'object' || Array.isArray(parent)) {\n    return false;\n  }\n\n  return entryKey in (parent as Record<string, unknown>);\n}\n\nasync function deleteJsonMapEntries(filePath: string, deletes: readonly JsonMapEntryDelete[]): Promise<void> {\n  const record = await readJsonObject(filePath);\n  if (!record) {\n    return;\n  }\n\n  let changed = false;\n\n  for (const { parentKey, entryKey } of deletes) {\n    if (parentKey.length === 0) {\n      if (entryKey in record) {\n        delete record[entryKey];\n        changed = true;\n      }\n      continue;\n    }\n\n    const parent = record[parentKey];\n    if (!parent || typeof parent !== 'object' || Array.isArray(parent)) {\n      continue;\n    }\n\n    const parentRecord = parent as Record<string, unknown>;\n    if (!(entryKey in parentRecord)) {\n      continue;\n    }\n\n    delete parentRecord[entryKey];\n    changed = true;\n\n    if (Object.keys(parentRecord).length === 0) {\n      delete record[parentKey];\n    }\n  }\n\n  if (!changed) {\n    return;\n  }\n\n  await fs.ensureDir(path.dirname(filePath));\n  await fs.writeJson(filePath, record, { spaces: 2 });\n}\n\nasync function readJsonObject(filePath: string): Promise<Record<string, unknown> | null> {\n  if (!await fs.pathExists(filePath)) {\n    return null;\n  }\n\n  try {\n    const parsed = await fs.readJson(filePath) as unknown;\n    if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n      return parsed as Record<string, unknown>;\n    }\n    return null;\n  } catch {\n    return null;\n  }\n}\n\nasync function getManagedAgentSkillNames(repoRoot: string): Promise<Set<string>> {\n  const candidates = [\n    path.join(repoRoot, '.xtrm', 'skills', 'default'),\n    path.resolve(__dirname, '..', '..', '.xtrm', 'skills', 'default'),\n    path.resolve(__dirname, '..', '..', '..', '.xtrm', 'skills', 'default'),\n  ];\n\n  for (const candidate of candidates) {\n    if (!await fs.pathExists(candidate)) {\n      continue;\n    }\n\n    const entries = await fs.readdir(candidate);\n    const managed = new Set<string>();\n\n    for (const entry of entries) {\n      const entryPath = path.join(candidate, entry);\n      if ((await fs.stat(entryPath)).isDirectory()) {\n        managed.add(entry);\n      }\n    }\n\n    if (managed.size > 0) {\n      return managed;\n    }\n  }\n\n  return new Set<string>();\n}\n","import crypto from 'node:crypto';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { resolveGlobalSkillsRoot, resolveStateFilePath, SKILLS_STATE_SCHEMA_VERSION } from './skills-layout.js';\n\nimport { readSkillsState } from './skills-state.js';\n\ninterface BootstrapOptions {\n  readonly force?: boolean;\n}\n\ninterface BootstrapResult {\n  readonly installedVersion: string;\n  readonly changed: boolean;\n}\n\ninterface BootstrapLogEvent {\n  readonly timestamp: string;\n  readonly component: 'skills-bootstrap';\n  readonly event: string;\n  readonly pkgVersion: string;\n  readonly source?: string;\n  readonly target?: string;\n  readonly filesCopied?: number;\n  readonly durationMs?: number;\n  readonly outcome?: 'ok' | 'skipped' | 'error';\n  readonly command?: string;\n  readonly cwd?: string;\n}\n\nconst COPY_FILTER = (sourcePath: string): boolean => !sourcePath.endsWith('__pycache__');\n\nfunction hashPath(value: string): string {\n  return crypto.createHash('sha256').update(value).digest('hex');\n}\n\nfunction formatLogPath(filePath: string): string {\n  const normalized = path.resolve(filePath);\n  const globalRoot = path.resolve(path.join(path.dirname(resolveGlobalSkillsRoot()), '..'));\n  return normalized.startsWith(globalRoot) ? normalized : `sha256:${hashPath(normalized)}`;\n}\n\nasync function appendLog(event: BootstrapLogEvent): Promise<void> {\n  const logPath = path.join(path.dirname(resolveGlobalSkillsRoot()), 'logs', 'skills-migration.jsonl');\n  await fs.ensureDir(path.dirname(logPath));\n  await fs.appendFile(logPath, `${JSON.stringify(event)}\\n`);\n}\n\nexport async function logBootstrapTrigger(params: {\n  readonly command: string;\n  readonly cwd: string;\n  readonly pkgVersion: string;\n}): Promise<void> {\n  await appendLog({\n    timestamp: new Date().toISOString(),\n    component: 'skills-bootstrap',\n    event: 'bootstrap.trigger',\n    command: params.command,\n    cwd: params.cwd,\n    pkgVersion: params.pkgVersion,\n  });\n}\n\nasync function countCopiedFiles(root: string): Promise<number> {\n  const stat = await fs.lstat(root).catch(() => null);\n  if (!stat) {\n    return 0;\n  }\n\n  if (!stat.isDirectory()) {\n    return stat.isFile() ? 1 : 0;\n  }\n\n  let count = 0;\n  const entries = await fs.readdir(root, { withFileTypes: true });\n  for (const entry of entries) {\n    if (entry.name === '__pycache__') {\n      continue;\n    }\n\n    count += await countCopiedFiles(path.join(root, entry.name));\n  }\n\n  return count;\n}\n\nasync function copyTier(sourceRoot: string, targetRoot: string): Promise<number> {\n  await fs.remove(targetRoot);\n  await fs.copy(sourceRoot, targetRoot, { filter: COPY_FILTER });\n  return countCopiedFiles(targetRoot);\n}\n\nexport async function ensureGlobalSkillsBootstrapped(pkgRoot: string, opts: BootstrapOptions = {}): Promise<BootstrapResult> {\n  const pkgJsonPath = path.join(pkgRoot, 'package.json');\n  const pkgJson = await fs.readJson(pkgJsonPath) as { version?: string };\n  const installedVersion = pkgJson.version;\n\n  if (!installedVersion) {\n    throw new Error(`Failed to read package version from ${pkgJsonPath}.`);\n  }\n\n  const globalSkillsRoot = resolveGlobalSkillsRoot();\n  const statePath = resolveStateFilePath(globalSkillsRoot);\n  const sourceRoot = path.join(pkgRoot, '.xtrm', 'skills');\n  const targetRoot = globalSkillsRoot;\n  const startedAt = Date.now();\n\n  await appendLog({\n    timestamp: new Date().toISOString(),\n    component: 'skills-bootstrap',\n    event: 'bootstrap.start',\n    pkgVersion: installedVersion,\n    source: formatLogPath(sourceRoot),\n    target: formatLogPath(targetRoot),\n    filesCopied: 0,\n    durationMs: 0,\n    outcome: 'ok',\n  });\n\n  try {\n    const currentState = await readSkillsState(globalSkillsRoot);\n    if (!opts.force && currentState.installedVersion === installedVersion) {\n      await appendLog({\n        timestamp: new Date().toISOString(),\n        component: 'skills-bootstrap',\n        event: 'bootstrap.ok',\n        pkgVersion: installedVersion,\n        source: formatLogPath(sourceRoot),\n        target: formatLogPath(targetRoot),\n        filesCopied: 0,\n        durationMs: Date.now() - startedAt,\n        outcome: 'skipped',\n      });\n      return { installedVersion, changed: false };\n    }\n\n    let filesCopied = 0;\n    for (const asset of ['default', 'optional'] as const) {\n      const assetSource = path.join(sourceRoot, asset);\n      const assetTarget = path.join(targetRoot, asset);\n      const assetStartedAt = Date.now();\n      const copied = await copyTier(assetSource, assetTarget);\n      filesCopied += copied;\n\n      await appendLog({\n        timestamp: new Date().toISOString(),\n        component: 'skills-bootstrap',\n        event: `bootstrap.copy.${asset}`,\n        pkgVersion: installedVersion,\n        source: formatLogPath(assetSource),\n        target: formatLogPath(assetTarget),\n        filesCopied: copied,\n        durationMs: Date.now() - assetStartedAt,\n        outcome: 'ok',\n      });\n    }\n\n    await fs.remove(path.join(globalSkillsRoot, 'active'));\n\n    const currentStateForMetadata = await readSkillsState(globalSkillsRoot);\n    await fs.writeJson(statePath, {\n      schemaVersion: SKILLS_STATE_SCHEMA_VERSION,\n      enabledPacks: currentStateForMetadata.enabledPacks,\n      managedLinks: currentStateForMetadata.managedLinks,\n      installedVersion,\n      installedFrom: formatLogPath(pkgRoot),\n      installedAt: new Date().toISOString(),\n    }, { spaces: 2 });\n    await fs.appendFile(statePath, '\\n');\n\n    await appendLog({\n      timestamp: new Date().toISOString(),\n      component: 'skills-bootstrap',\n      event: 'bootstrap.ok',\n      pkgVersion: installedVersion,\n      source: formatLogPath(sourceRoot),\n      target: formatLogPath(targetRoot),\n      filesCopied,\n      durationMs: Date.now() - startedAt,\n      outcome: 'ok',\n    });\n\n    return { installedVersion, changed: true };\n  } catch (error) {\n    await appendLog({\n      timestamp: new Date().toISOString(),\n      component: 'skills-bootstrap',\n      event: 'bootstrap.error',\n      pkgVersion: installedVersion,\n      source: formatLogPath(sourceRoot),\n      target: formatLogPath(targetRoot),\n      filesCopied: 0,\n      durationMs: Date.now() - startedAt,\n      outcome: 'error',\n    });\n    throw error;\n  }\n}\n","import fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { appendHookLog, hashValue, resolveGlobalHooksConfigPath, resolveGlobalHooksRoot } from './global-hooks-bootstrap.js';\nimport { readGlobalHooksConfig, resolveHooksForGlobalRuntime, safeMergeOwnedHookSettings, type HookRuntimeSettingsShape } from './claude-runtime-sync.js';\nimport { writeJsonAtomic } from '../utils/atomic-write.js';\n\nexport interface ReconcileGlobalPiHooksResult {\n  readonly settingsPath: string;\n  readonly changed: boolean;\n  readonly hooksEntries: number;\n}\n\nexport async function reconcileGlobalPiHooks(opts: { dryRun?: boolean } = {}): Promise<ReconcileGlobalPiHooksResult> {\n  const { dryRun = false } = opts;\n  const startedAt = Date.now();\n  const settingsPath = path.join(os.homedir(), '.pi', 'agent', 'settings.json');\n  const hooksConfig = await readGlobalHooksConfig(resolveGlobalHooksConfigPath());\n  const generatedHooks = resolveHooksForGlobalRuntime(hooksConfig.hooks ?? {}, resolveGlobalHooksRoot());\n\n  await appendHookLog({\n    timestamp: new Date().toISOString(),\n    component: 'hooks-migration',\n    event: 'hook.reconcile.start',\n    source: hashValue(settingsPath),\n    action: 'pi',\n    outcome: 'ok',\n    durationMs: 0,\n  });\n\n  const currentSettings = await readPiHookSettings(settingsPath);\n  const result = await safeMergeOwnedHookSettings(currentSettings, generatedHooks, { dryRun });\n\n  if (!result.changed) {\n    await appendHookLog({\n      timestamp: new Date().toISOString(),\n      component: 'hooks-migration',\n      event: 'hook.reconcile.ok',\n      source: hashValue(settingsPath),\n      action: 'pi',\n      outcome: 'skipped',\n      durationMs: Date.now() - startedAt,\n    });\n    return { settingsPath, changed: false, hooksEntries: result.hooksEntries };\n  }\n\n  if (!dryRun) {\n    await writeJsonAtomic(settingsPath, result.settings);\n  }\n\n  await appendHookLog({\n    timestamp: new Date().toISOString(),\n    component: 'hooks-migration',\n    event: 'hook.reconcile.ok',\n    source: hashValue(settingsPath),\n    action: 'pi',\n    outcome: 'ok',\n    durationMs: Date.now() - startedAt,\n  });\n\n  return { settingsPath, changed: !dryRun, hooksEntries: result.hooksEntries };\n}\n\nasync function readPiHookSettings(settingsPath: string): Promise<HookRuntimeSettingsShape> {\n  if (!await fs.pathExists(settingsPath)) {\n    return {};\n  }\n\n  try {\n    return await fs.readJson(settingsPath) as HookRuntimeSettingsShape;\n  } catch {\n    return {};\n  }\n}\n","// nosemgrep: javascript.lang.security.detect-child-process.detect-child-process -- runs the vendored python migrator; args are project-derived (basename + constant path + readdir pack name), never user-controllable.\nimport { spawnSync } from 'node:child_process';\nimport path from 'node:path';\nimport fs from 'fs-extra';\nimport { RESERVED_PACK_NAMES } from './skills-layout.js';\n\n/**\n * Registry-gated, idempotent service-skills migration runner.\n *\n * Makes `xt update --apply` (and `xt init`) the FOOLPROOF, single-button path to\n * the service-skills v2 layout: when a repo has a service-registry (any layout),\n * run the one-time layout migrator (flat → per-repo umbrella, relocate + rewrite\n * the registry, generate the umbrella). It is a no-op in repos with no\n * service-registry, and idempotent on already-migrated repos.\n *\n * Claude/Pi activation hooks ship via the global service-skills policies and are\n * reconciled into settings.json by claude-runtime-sync (xtrm-0p7bp). This module\n * owns the data migration AND wires the local git post-merge drift sweep (the\n * post-merge reconciliation trigger, xtrm-jcmub) on the same foolproof path.\n */\n\nconst PACKS_REL = path.join('.xtrm', 'skills', 'user', 'packs');\nconst FLAT_PACKS_REL = path.join('.xtrm', 'skills');\nconst MIGRATOR_REL = path.join('.xtrm', 'skills', 'default', 'service-skills', 'scripts', 'layout_migrator.py');\nconst INSTALLER_REL = path.join('.xtrm', 'skills', 'default', 'service-skills', 'install', 'install-service-skills.py');\n\nexport interface ServiceSkillsEnsureResult {\n  /** Whether the repo has a service-registry (i.e. service-skills apply here). */\n  readonly applicable: boolean;\n  /** Packs migrated to the umbrella layout on this run. */\n  readonly migratedPacks: string[];\n  /** True when nothing needed migrating (no-op / already current). */\n  readonly alreadyCurrent: boolean;\n  /** Human-readable notes (migrator output, warnings, refusals). */\n  readonly notes: string[];\n}\n\nasync function syncPackMetadata(packPath: string, metadata: Record<string, unknown>): Promise<void> {\n  const entries = await fs.readdir(packPath, { withFileTypes: true });\n  const skills: string[] = [];\n  for (const entry of entries) {\n    if (!entry.isDirectory()) continue;\n    if (await fs.pathExists(path.join(packPath, entry.name, 'SKILL.md'))) skills.push(entry.name);\n  }\n  metadata.skills = skills.sort((left, right) => left.localeCompare(right));\n  await fs.writeJson(path.join(packPath, 'PACK.json'), metadata, { spaces: 2 });\n}\n\nasync function packsWithRegistry(projectRoot: string): Promise<string[]> {\n  const packRoots = [path.join(projectRoot, PACKS_REL), path.join(projectRoot, FLAT_PACKS_REL)];\n  const packs = new Set<string>();\n  for (const packsRoot of packRoots) {\n    if (!await fs.pathExists(packsRoot)) continue;\n    const entries = await fs.readdir(packsRoot, { withFileTypes: true });\n    for (const entry of entries) {\n      if (!entry.isDirectory() || RESERVED_PACK_NAMES.has(entry.name)) continue;\n      const packPath = path.join(packsRoot, entry.name);\n      const hasUmbrellaRegistry = await fs.pathExists(path.join(packPath, 'service-skills', 'service-registry.json'));\n      const hasFlatRegistry = await fs.pathExists(path.join(packPath, 'service-registry.json'));\n      if (hasUmbrellaRegistry || hasFlatRegistry) packs.add(entry.name);\n    }\n  }\n  return [...packs].sort((left, right) => left.localeCompare(right));\n}\n\n/** True when the repo has any service-registry (pack, root, or legacy .claude). */\nexport async function hasServiceRegistry(projectRoot: string): Promise<boolean> {\n  if ((await packsWithRegistry(projectRoot)).length > 0) {\n    return true;\n  }\n  return (await fs.pathExists(path.join(projectRoot, 'service-registry.json')))\n    || (await fs.pathExists(path.join(projectRoot, '.claude', 'skills', 'service-registry.json')));\n}\n\nexport async function ensureServiceSkills(\n  projectRoot: string,\n  opts: { apply: boolean },\n): Promise<ServiceSkillsEnsureResult> {\n  const notes: string[] = [];\n  const migratedPacks: string[] = [];\n\n  const packs = await packsWithRegistry(projectRoot);\n  const applicable = packs.length > 0 || await hasServiceRegistry(projectRoot);\n  if (!applicable) {\n    // No service-registry → service-skills do not apply here. Silent no-op.\n    return { applicable: false, migratedPacks, alreadyCurrent: true, notes };\n  }\n\n  const migrator = path.join(projectRoot, MIGRATOR_REL);\n  if (!await fs.pathExists(migrator)) {\n    notes.push('service-skills machinery not installed yet — skills must be installed (xt update) before migration.');\n    return { applicable: true, migratedPacks, alreadyCurrent: true, notes };\n  }\n\n  if (!opts.apply) {\n    notes.push(`service-skills migration available (dry-run) for pack(s): ${packs.join(', ') || '(root/legacy registry)'}.`);\n    return { applicable: true, migratedPacks, alreadyCurrent: true, notes };\n  }\n\n  const repoName = path.basename(projectRoot);\n  const targetPacks = packs.length > 0 ? packs : [''];\n  for (const pack of targetPacks) {\n    const packPath = pack ? path.join(projectRoot, PACKS_REL, pack) : '';\n    const packJsonPath = packPath ? path.join(packPath, 'PACK.json') : '';\n    const originalPackMetadata = packJsonPath && await fs.pathExists(packJsonPath)\n      ? await fs.readJson(packJsonPath).catch(() => null) as Record<string, unknown> | null\n      : null;\n    // nosemgrep: javascript.lang.security.detect-child-process.detect-child-process\n    const run = spawnSync('python3', [migrator, repoName], {\n      cwd: projectRoot,\n      encoding: 'utf8',\n      // Pass the project root explicitly (the CLI knows it) so the migrator never\n      // depends on a git checkout; scope to the pack being migrated.\n      env: {\n        ...process.env,\n        CLAUDE_PROJECT_DIR: projectRoot,\n        ...(pack ? { XTRM_PACK: pack } : {}),\n      },\n    });\n    const output = `${run.stdout ?? ''}${run.stderr ?? ''}`;\n    if (run.status === 2) {\n      notes.push(`service-skills: pack '${pack}' migration refused — ${(run.stderr ?? '').trim()}`);\n      continue;\n    }\n    if (run.status === 0 && packPath && originalPackMetadata && !Array.isArray(originalPackMetadata)) {\n      await syncPackMetadata(packPath, originalPackMetadata);\n      notes.push(`service-skills: synced PACK.json for '${pack}'.`);\n    }\n    const lines = output.split('\\n');\n    if (lines.some(line => line.startsWith('migrated:'))) {\n      migratedPacks.push(pack || repoName);\n    }\n    for (const line of lines) {\n      if (line.startsWith('migrated:') || line.startsWith('umbrella:') || line.startsWith('registry:') || line.includes('WARNING')) {\n        notes.push(`service-skills: ${line.trim()}`);\n      }\n    }\n  }\n\n  if (migratedPacks.length > 0) notes.push('service-skills: runtime links reconciled on next update pass.');\n\n  // Wire the local git post-merge drift sweep (xtrm-jcmub) on the foolproof path.\n  // Registry-gated (we only reach here when applicable). Idempotent — marker-guarded\n  // installer; a no-op on repos that already have it. Never fails the update.\n  await ensurePostMergeDriftHook(projectRoot, notes);\n\n  return { applicable: true, migratedPacks, alreadyCurrent: migratedPacks.length === 0, notes };\n}\n\n/**\n * Install the service-skills git hooks (including the post-merge drift sweep) via the\n * vendored installer's `--hooks-only` mode. Best-effort and idempotent: any failure is\n * recorded as a note and never aborts `xt update`.\n */\nasync function ensurePostMergeDriftHook(projectRoot: string, notes: string[]): Promise<void> {\n  const installer = path.join(projectRoot, INSTALLER_REL);\n  if (!await fs.pathExists(installer)) {\n    return;\n  }\n  // nosemgrep: javascript.lang.security.detect-child-process.detect-child-process\n  const run = spawnSync('python3', [installer, '--hooks-only'], {\n    cwd: projectRoot,\n    encoding: 'utf8',\n    env: { ...process.env, CLAUDE_PROJECT_DIR: projectRoot },\n  });\n  if (run.status !== 0) {\n    notes.push(`service-skills: post-merge drift hook wiring skipped — ${(run.stderr ?? '').trim() || 'installer error'}`);\n  }\n}\n","/**\n * Unified verification for xtrm init phases.\n *\n * Summarizes outcomes from all installer phases in one place:\n * - Machine bootstrap (third-party CLIs)\n * - Claude runtime (.xtrm hooks wired into settings.json)\n * - Pi runtime (extensions + packages)\n * - Project bootstrap (beads, GitNexus, instruction headers)\n */\n\nimport { spawnSync } from 'child_process';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport os from 'os';\nimport path from 'path';\nimport { t, sym } from '../utils/theme.js';\nimport { inventoryDeps, type BootstrapPlan } from './machine-bootstrap.js';\nimport { inventoryPiRuntime, resolveManagedPiExtensionsSourceDir, type PiRuntimePlan } from './pi-runtime.js';\nimport { checkRuntimeSkillsViews } from './skills-runtime-views.js';\n\ninterface CommandHook {\n    type?: string;\n    command?: string;\n}\n\ninterface HookWrapper {\n    hooks?: CommandHook[];\n}\n\ninterface ClaudeSettings {\n    hooks?: Record<string, HookWrapper[]>;\n}\n\nexport interface VerificationResult {\n    machineBootstrap: {\n        allRequiredPresent: boolean;\n        missingRequired: string[];\n    };\n    claudeRuntime: {\n        hooksWired: boolean;\n        hooksEvents: number;\n        hookCommands: number;\n        settingsPath: string;\n    };\n    piRuntime: {\n        allRequiredPresent: boolean;\n        missingExtensions: string[];\n        missingPackages: string[];\n    };\n    skillsRuntime: {\n        activeReady: boolean;\n        globalClaudePointerReady: boolean;\n        globalPiPointerReady: boolean;\n        projectClaudePointerState: 'ready' | 'skipped' | 'missing';\n        projectPiPointerState: 'ready' | 'skipped' | 'missing';\n    };\n    projectBootstrap: {\n        beadsInitialized: boolean;\n        gitnexusIndexed: boolean;\n        instructionHeaders: boolean;\n    };\n    allPassed: boolean;\n}\n\n// ── Phase-specific checks ────────────────────────────────────────────────────\n\nfunction verifyMachineBootstrap(): BootstrapPlan {\n    return inventoryDeps();\n}\n\nfunction countHookCommands(hooks: Record<string, HookWrapper[]>): number {\n    let count = 0;\n\n    for (const wrappers of Object.values(hooks)) {\n        for (const wrapper of wrappers) {\n            count += wrapper.hooks?.length ?? 0;\n        }\n    }\n\n    return count;\n}\n\nfunction hasXtrmHookCommand(hooks: Record<string, HookWrapper[]>): boolean {\n    for (const wrappers of Object.values(hooks)) {\n        for (const wrapper of wrappers) {\n            for (const hook of wrapper.hooks ?? []) {\n                if (hook.type !== 'command') continue;\n                if (typeof hook.command !== 'string') continue;\n                const normalizedCommand = hook.command.replace(/\\\\/g, '/');\n                if (normalizedCommand.includes('/.xtrm/hooks/')) return true;\n            }\n        }\n    }\n\n    return false;\n}\n\nfunction readClaudeSettingsVerification(settingsPath: string): {\n    hooksWired: boolean;\n    hooksEvents: number;\n    hookCommands: number;\n    settingsPath: string;\n} {\n    try {\n        const settings = fs.readJsonSync(settingsPath) as ClaudeSettings;\n        const hooks = settings.hooks ?? {};\n        const hooksEvents = Object.keys(hooks).length;\n        const hookCommands = countHookCommands(hooks);\n        const hooksWired = hooksEvents > 0 && hookCommands > 0 && hasXtrmHookCommand(hooks);\n\n        return {\n            hooksWired,\n            hooksEvents,\n            hookCommands,\n            settingsPath,\n        };\n    } catch {\n        return {\n            hooksWired: false,\n            hooksEvents: 0,\n            hookCommands: 0,\n            settingsPath,\n        };\n    }\n}\n\nfunction verifyClaudeRuntime(projectRoot: string): {\n    hooksWired: boolean;\n    hooksEvents: number;\n    hookCommands: number;\n    settingsPath: string;\n} {\n    const projectSettingsPath = path.join(projectRoot, '.claude', 'settings.json');\n    const fallbackSettingsPath = path.join(os.homedir(), '.claude', 'settings.json');\n    const candidatePaths = projectSettingsPath === fallbackSettingsPath\n        ? [projectSettingsPath]\n        : [projectSettingsPath, fallbackSettingsPath];\n\n    let fallbackResult = {\n        hooksWired: false,\n        hooksEvents: 0,\n        hookCommands: 0,\n        settingsPath: projectSettingsPath,\n    };\n\n    for (const settingsPath of candidatePaths) {\n        if (!fs.pathExistsSync(settingsPath)) {\n            continue;\n        }\n\n        const result = readClaudeSettingsVerification(settingsPath);\n        if (result.hooksWired) {\n            return result;\n        }\n\n        if (result.hookCommands > fallbackResult.hookCommands || result.hooksEvents > fallbackResult.hooksEvents) {\n            fallbackResult = result;\n        }\n    }\n\n    return fallbackResult;\n}\n\nasync function verifyPiRuntime(projectRoot: string): Promise<PiRuntimePlan> {\n    const sourceDir = resolveManagedPiExtensionsSourceDir();\n\n    if (!sourceDir || !await fs.pathExists(sourceDir)) {\n        // Not bundled — return empty plan\n        return {\n            extensions: [],\n            packages: [],\n            missingExtensions: [],\n            staleExtensions: [],\n            orphanedExtensions: [],\n            missingPackages: [],\n            allRequiredPresent: true,\n            allPresent: true,\n        };\n    }\n\n    // Project installs are package-based; verification only needs the managed\n    // package inventory. Pass sourceDir as targetDir so extension checks remain\n    // satisfied without requiring a mirrored .pi/extensions tree.\n    void projectRoot;\n    return await inventoryPiRuntime(sourceDir, sourceDir);\n}\n\nfunction verifyProjectBootstrap(projectRoot: string): { beadsInitialized: boolean; gitnexusIndexed: boolean; instructionHeaders: boolean } {\n    const beadsInitialized = fs.pathExistsSync(path.join(projectRoot, '.beads'));\n\n    const gnStatus = spawnSync('gitnexus', ['status'], { cwd: projectRoot, encoding: 'utf8', timeout: 5000 });\n    const gnText = `${gnStatus.stdout ?? ''}\\n${gnStatus.stderr ?? ''}`.toLowerCase();\n    const gitnexusIndexed = gnStatus.status === 0 &&\n        !gnText.includes('stale') &&\n        !gnText.includes('not indexed') &&\n        !gnText.includes('missing');\n\n    const agentsMd = fs.pathExistsSync(path.join(projectRoot, 'AGENTS.md'));\n    const claudeMd = fs.pathExistsSync(path.join(projectRoot, 'CLAUDE.md'));\n    const instructionHeaders = agentsMd || claudeMd;\n\n    return { beadsInitialized, gitnexusIndexed, instructionHeaders };\n}\n\n// ── Full verification ─────────────────────────────────────────────────────────\n\nexport async function runInitVerification(projectRoot: string): Promise<VerificationResult> {\n    const machinePlan = verifyMachineBootstrap();\n    const claudeResult = verifyClaudeRuntime(projectRoot);\n    const piPlan = await verifyPiRuntime(projectRoot);\n    const projectResult = verifyProjectBootstrap(projectRoot);\n    const skillsRuntimeResult = await checkRuntimeSkillsViews(projectRoot);\n\n    const allPassed =\n        machinePlan.allRequiredPresent &&\n        claudeResult.hooksWired &&\n        piPlan.allRequiredPresent &&\n        skillsRuntimeResult.activeReady &&\n        skillsRuntimeResult.globalClaudePointerReady &&\n        skillsRuntimeResult.globalPiPointerReady &&\n        skillsRuntimeResult.projectClaudePointerState !== 'missing' &&\n        skillsRuntimeResult.projectPiPointerState !== 'missing' &&\n        projectResult.beadsInitialized;\n\n    return {\n        machineBootstrap: {\n            allRequiredPresent: machinePlan.allRequiredPresent,\n            missingRequired: machinePlan.missingRequired.map(d => d.dep.displayName),\n        },\n        claudeRuntime: claudeResult,\n        piRuntime: {\n            allRequiredPresent: piPlan.allRequiredPresent,\n            missingExtensions: piPlan.missingExtensions.filter(s => s.ext.required).map(s => s.ext.displayName),\n            missingPackages: piPlan.missingPackages.filter(s => s.pkg.required).map(s => s.pkg.displayName),\n        },\n        skillsRuntime: {\n            activeReady: skillsRuntimeResult.activeReady,\n            globalClaudePointerReady: skillsRuntimeResult.globalClaudePointerReady,\n            globalPiPointerReady: skillsRuntimeResult.globalPiPointerReady,\n            projectClaudePointerState: skillsRuntimeResult.projectClaudePointerState,\n            projectPiPointerState: skillsRuntimeResult.projectPiPointerState,\n\n        },\n        projectBootstrap: projectResult,\n        allPassed,\n    };\n}\n\n// ── Rendering ─────────────────────────────────────────────────────────────────\n\nexport function renderVerificationSummary(result: VerificationResult): void {\n    console.log(kleur.bold('\\n  Verification Summary'));\n    console.log(kleur.dim('  ' + '─'.repeat(50)));\n\n    // Machine bootstrap\n    const mbIcon = result.machineBootstrap.allRequiredPresent ? sym.ok : sym.warn;\n    const mbLabel = 'Machine Bootstrap';\n    if (result.machineBootstrap.allRequiredPresent) {\n        console.log(`  ${mbIcon} ${mbLabel}`);\n    } else {\n        const missing = result.machineBootstrap.missingRequired.join(', ');\n        console.log(`  ${mbIcon} ${mbLabel} — missing: ${missing}`);\n    }\n\n    // Claude runtime\n    const crIcon = result.claudeRuntime.hooksWired ? sym.ok : sym.warn;\n    const crLabel = 'Claude Runtime';\n    if (result.claudeRuntime.hooksWired) {\n        console.log(`  ${crIcon} ${crLabel}`);\n    } else {\n        console.log(`  ${crIcon} ${crLabel} — missing .xtrm/hooks wiring in ${result.claudeRuntime.settingsPath}`);\n    }\n\n    // Pi runtime\n    const prIcon = result.piRuntime.allRequiredPresent ? sym.ok : sym.warn;\n    const prLabel = 'Pi Runtime';\n    if (result.piRuntime.allRequiredPresent) {\n        console.log(`  ${prIcon} ${prLabel}`);\n    } else {\n        const parts: string[] = [];\n        if (result.piRuntime.missingExtensions.length > 0) {\n            parts.push(`extensions: ${result.piRuntime.missingExtensions.join(', ')}`);\n        }\n        if (result.piRuntime.missingPackages.length > 0) {\n            parts.push(`packages: ${result.piRuntime.missingPackages.join(', ')}`);\n        }\n        console.log(`  ${prIcon} ${prLabel} — ${parts.join('; ')}`);\n    }\n\n    // Skills runtime\n    const skillsParts: string[] = [];\n    if (!result.skillsRuntime.activeReady) skillsParts.push('active');\n    if (!result.skillsRuntime.globalClaudePointerReady) skillsParts.push('~/.claude/skills pointer');\n    if (!result.skillsRuntime.globalPiPointerReady) skillsParts.push('~/.pi/agent/skills pointer');\n    if (result.skillsRuntime.projectClaudePointerState === 'missing') skillsParts.push('.claude/skills pointer');\n    if (result.skillsRuntime.projectPiPointerState === 'missing') skillsParts.push('.pi settings skills pointer');\n    const srIcon = skillsParts.length === 0 ? sym.ok : sym.warn;\n    if (skillsParts.length === 0) {\n        console.log(`  ${srIcon} Skills Runtime`);\n    } else {\n        console.log(`  ${srIcon} Skills Runtime — incomplete: ${skillsParts.join(', ')}`);\n    }\n\n\n    // Project bootstrap\n    const pbParts: string[] = [];\n    if (!result.projectBootstrap.beadsInitialized) pbParts.push('beads');\n    if (!result.projectBootstrap.gitnexusIndexed) pbParts.push('gitnexus');\n    if (!result.projectBootstrap.instructionHeaders) pbParts.push('headers');\n    const pbIcon = pbParts.length === 0 ? sym.ok : sym.warn;\n    const pbLabel = 'Project Bootstrap';\n    if (pbParts.length === 0) {\n        console.log(`  ${pbIcon} ${pbLabel}`);\n    } else {\n        console.log(`  ${pbIcon} ${pbLabel} — incomplete: ${pbParts.join(', ')}`);\n    }\n\n    console.log(kleur.dim('  ' + '─'.repeat(50)));\n\n    if (result.allPassed) {\n        console.log(t.success('\\n  ✓ All phases verified successfully.\\n'));\n    } else {\n        console.log(t.warning('\\n  ⚠ Some phases incomplete. Re-run `xtrm init` to fix.\\n'));\n    }\n}\n","import fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { resolveDefaultTierRoot, resolveGlobalSkillsRoot, resolveSkillsRoot } from './skills-layout.js';\nimport { readSkillsState } from './skills-state.js';\n\nexport interface RuntimeViewCheckResult {\n  readonly activeReady: boolean;\n  readonly globalClaudePointerReady: boolean;\n  readonly globalPiPointerReady: boolean;\n  readonly projectClaudePointerState: 'ready' | 'skipped' | 'missing';\n  readonly projectPiPointerState: 'ready' | 'skipped' | 'missing';\n  readonly activeEntries: string[];\n  readonly projectClaudeSkillsReady: boolean;\n  readonly projectPiSkillsReady: boolean;\n}\ntype RuntimeScope = 'global' | 'project' | 'both';\n\nexport function getRuntimePointerTarget(options: { scope: 'global' | 'project' }): string {\n  return options.scope === 'global' ? resolveDefaultTierRoot(resolveGlobalSkillsRoot()) : 'real .claude/skills and .pi/skills directories';\n}\n\nasync function pointsTo(link: string, target: string): Promise<boolean> {\n  const stat = await fs.lstat(link).catch(() => null);\n  if (!stat?.isSymbolicLink()) return false;\n  return path.resolve(path.dirname(link), await fs.readlink(link)) === path.resolve(target) && await fs.pathExists(target);\n}\n\nasync function isRealDirectory(dir: string): Promise<boolean> {\n  const stat = await fs.lstat(dir).catch(() => null);\n  return Boolean(stat?.isDirectory() && !stat.isSymbolicLink());\n}\n\nasync function managedEntries(projectRoot: string, runtime: 'claude' | 'pi'): Promise<boolean> {\n  const state = await readSkillsState(resolveSkillsRoot(projectRoot));\n  const dir = path.join(projectRoot, runtime === 'claude' ? '.claude' : '.pi', 'skills');\n  for (const [name, relativeTarget] of Object.entries(state.managedLinks[runtime])) {\n    const linkPath = path.join(dir, name);\n    const stat = await fs.lstat(linkPath).catch(() => null);\n    if (!stat?.isSymbolicLink()) return false;\n    const actualTarget = path.resolve(path.dirname(linkPath), await fs.readlink(linkPath));\n    const manifestTarget = path.resolve(projectRoot, relativeTarget);\n    if (actualTarget !== manifestTarget || !await fs.pathExists(manifestTarget)) return false;\n  }\n  return true;\n}\n\nexport async function checkRuntimeSkillsViews(projectRoot: string): Promise<RuntimeViewCheckResult> {\n  const globalDefault = resolveDefaultTierRoot(resolveGlobalSkillsRoot());\n  const globalClaudePointerReady = await pointsTo(path.join(os.homedir(), '.claude', 'skills'), globalDefault);\n  const globalPiPointerReady = await pointsTo(path.join(os.homedir(), '.pi', 'agent', 'skills'), globalDefault);\n  const projectClaudeSkillsReady = await isRealDirectory(path.join(projectRoot, '.claude', 'skills')) && await managedEntries(projectRoot, 'claude');\n  const projectPiSkillsReady = await isRealDirectory(path.join(projectRoot, '.pi', 'skills')) && await managedEntries(projectRoot, 'pi');\n  const projectClaudePointerState = projectClaudeSkillsReady ? 'ready' : 'skipped';\n  const projectPiPointerState = projectPiSkillsReady ? 'ready' : 'skipped';\n  return {\n    activeReady: projectClaudeSkillsReady && projectPiSkillsReady,\n    globalClaudePointerReady,\n    globalPiPointerReady,\n    projectClaudePointerState,\n    projectPiPointerState,\n    activeEntries: [],\n    projectClaudeSkillsReady,\n    projectPiSkillsReady,\n  };\n}\n\nexport async function assertRuntimeSkillsViews(projectRoot: string, options: { scope?: RuntimeScope } = {}): Promise<void> {\n  const scope = options.scope ?? 'both';\n  const check = await checkRuntimeSkillsViews(projectRoot);\n  const failures: string[] = [];\n  if ((scope === 'global' || scope === 'both') && !check.globalClaudePointerReady) failures.push(`~/.claude/skills is not linked to ${getRuntimePointerTarget({ scope: 'global' })}`);\n  if ((scope === 'global' || scope === 'both') && !check.globalPiPointerReady) failures.push(`~/.pi/agent/skills is not linked to ${getRuntimePointerTarget({ scope: 'global' })}`);\n  if ((scope === 'project' || scope === 'both') && !check.projectClaudeSkillsReady) failures.push('.claude/skills is not a real reconciled directory');\n  if ((scope === 'project' || scope === 'both') && !check.projectPiSkillsReady) failures.push('.pi/skills is not a real reconciled directory');\n  if (failures.length > 0) throw new Error(`Runtime skills validation failed: ${failures.join('; ')}`);\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\n\nconst CORE_MCP_CONFIG_FILE = 'claude.mcp.json';\nconst PI_CORE_MCP_CONFIG_FILE = 'pi.mcp.json';\nconst PROJECT_MCP_FILE = '.mcp.json';\nconst PI_PROJECT_MCP_FILE = path.join('.pi', 'mcp.json');\n\ninterface McpServerMap {\n    [serverName: string]: Record<string, unknown>;\n}\n\ninterface McpConfigFile {\n    mcpServers?: McpServerMap;\n}\n\ninterface McpProjectConfig {\n    mcpServers: McpServerMap;\n    [key: string]: unknown;\n}\n\nexport interface SyncProjectMcpOptions {\n    dryRun?: boolean;\n    preserveExistingFile?: boolean;\n}\n\nexport interface SyncProjectMcpResult {\n    addedServers: string[];\n    missingEnvWarnings: string[];\n    wroteFile: boolean;\n    createdFile: boolean;\n    preservedExistingFile: boolean;\n    mcpPath: string;\n}\n\nfunction sanitizeServerConfig(server: Record<string, unknown>): Record<string, unknown> {\n    const entries = Object.entries(server).filter(([key]) => !key.startsWith('_'));\n    return Object.fromEntries(entries);\n}\n\nfunction readMcpServers(config: McpConfigFile): McpServerMap {\n    if (!config.mcpServers || typeof config.mcpServers !== 'object') {\n        return {};\n    }\n\n    return Object.entries(config.mcpServers).reduce<McpServerMap>((acc, [name, value]) => {\n        if (!value || typeof value !== 'object' || Array.isArray(value)) {\n            return acc;\n        }\n        acc[name] = sanitizeServerConfig(value as Record<string, unknown>);\n        return acc;\n    }, {});\n}\n\nfunction mergeCanonicalServers(core: McpServerMap, optional: McpServerMap): McpServerMap {\n    const merged: McpServerMap = { ...core };\n\n    for (const [name, server] of Object.entries(optional)) {\n        if (!(name in merged)) {\n            merged[name] = server;\n        }\n    }\n\n    return merged;\n}\n\nfunction extractEnvVarNames(value: unknown): string[] {\n    if (typeof value === 'string') {\n        const matches = value.matchAll(/\\$\\{([A-Z0-9_]+)\\}/g);\n        return Array.from(matches, (match) => match[1]);\n    }\n\n    if (Array.isArray(value)) {\n        return value.flatMap((item) => extractEnvVarNames(item));\n    }\n\n    if (value && typeof value === 'object') {\n        return Object.values(value).flatMap((item) => extractEnvVarNames(item));\n    }\n\n    return [];\n}\n\nfunction getMissingEnvWarnings(servers: McpServerMap): string[] {\n    const warnings: string[] = [];\n\n    for (const [name, config] of Object.entries(servers)) {\n        const requiredVars = Array.from(new Set(extractEnvVarNames(config)));\n        const missingVars = requiredVars.filter((envName) => !process.env[envName]);\n\n        if (missingVars.length === 0) continue;\n\n        warnings.push(`${name}: missing ${missingVars.join(', ')}`);\n    }\n\n    return warnings;\n}\n\nexport async function syncProjectMcpConfig(projectRoot: string, options: SyncProjectMcpOptions = {}): Promise<SyncProjectMcpResult> {\n    const { dryRun = false, preserveExistingFile = false } = options;\n    const xtrmConfigDir = path.join(projectRoot, '.xtrm', 'config');\n    const coreConfigPath = path.join(xtrmConfigDir, CORE_MCP_CONFIG_FILE);\n    const targetMcpPath = path.join(projectRoot, PROJECT_MCP_FILE);\n\n    if (!await fs.pathExists(coreConfigPath)) {\n        return {\n            addedServers: [],\n            missingEnvWarnings: [`canonical MCP config not found at ${coreConfigPath}`],\n            wroteFile: false,\n            createdFile: false,\n            preservedExistingFile: false,\n            mcpPath: targetMcpPath,\n        };\n    }\n\n    const coreConfig = await fs.readJson(coreConfigPath) as McpConfigFile;\n    // Optional servers are not merged by default — they pollute context.\n    // Users can manually add them to .mcp.json if needed.\n    const optionalConfig: McpConfigFile = { mcpServers: {} };\n\n    const canonicalServers = mergeCanonicalServers(readMcpServers(coreConfig), readMcpServers(optionalConfig));\n\n    const hasExistingMcp = await fs.pathExists(targetMcpPath);\n    if (hasExistingMcp && preserveExistingFile) {\n        return {\n            addedServers: [],\n            missingEnvWarnings: [],\n            wroteFile: false,\n            createdFile: false,\n            preservedExistingFile: true,\n            mcpPath: targetMcpPath,\n        };\n    }\n\n    const missingEnvWarnings = getMissingEnvWarnings(canonicalServers);\n    const existingConfig = hasExistingMcp\n        ? (await fs.readJson(targetMcpPath) as Partial<McpProjectConfig>)\n        : {};\n\n    const existingServers = existingConfig.mcpServers && typeof existingConfig.mcpServers === 'object'\n        ? existingConfig.mcpServers\n        : {};\n\n    const addedServers = Object.keys(canonicalServers).filter((name) => !(name in existingServers));\n    const mergedServers: McpServerMap = {\n        ...canonicalServers,\n        ...existingServers,\n    };\n\n    const mergedConfig: McpProjectConfig = {\n        ...existingConfig,\n        mcpServers: mergedServers,\n    } as McpProjectConfig;\n\n    const wroteFile = addedServers.length > 0 || !hasExistingMcp;\n\n    if (!dryRun && wroteFile) {\n        await fs.writeJson(targetMcpPath, mergedConfig, { spaces: 2 });\n    }\n\n    return {\n        addedServers,\n        missingEnvWarnings,\n        wroteFile,\n        createdFile: !hasExistingMcp,\n        preservedExistingFile: false,\n        mcpPath: targetMcpPath,\n    };\n}\n\nexport async function syncPiMcpConfig(projectRoot: string, options: SyncProjectMcpOptions = {}): Promise<SyncProjectMcpResult> {\n    const { dryRun = false } = options;\n    const xtrmConfigDir = path.join(projectRoot, '.xtrm', 'config');\n    const coreConfigPath = path.join(xtrmConfigDir, PI_CORE_MCP_CONFIG_FILE);\n    const targetMcpPath = path.join(projectRoot, PI_PROJECT_MCP_FILE);\n\n    if (!await fs.pathExists(coreConfigPath)) {\n        return {\n            addedServers: [],\n            missingEnvWarnings: [`canonical MCP config not found at ${coreConfigPath}`],\n            wroteFile: false,\n            createdFile: false,\n            preservedExistingFile: false,\n            mcpPath: targetMcpPath,\n        };\n    }\n\n    const coreConfig = await fs.readJson(coreConfigPath) as McpConfigFile;\n    const canonicalServers = readMcpServers(coreConfig);\n    const missingEnvWarnings = getMissingEnvWarnings(canonicalServers);\n\n    const hasExistingMcp = await fs.pathExists(targetMcpPath);\n    const existingConfig = hasExistingMcp\n        ? (await fs.readJson(targetMcpPath) as Partial<McpProjectConfig>)\n        : {};\n\n    const existingServers = existingConfig.mcpServers && typeof existingConfig.mcpServers === 'object'\n        ? existingConfig.mcpServers\n        : {};\n\n    const addedServers = Object.keys(canonicalServers).filter((name) => !(name in existingServers));\n    const mergedServers: McpServerMap = {\n        ...canonicalServers,\n        ...existingServers,\n    };\n\n    const mergedConfig: McpProjectConfig = {\n        ...existingConfig,\n        mcpServers: mergedServers,\n    } as McpProjectConfig;\n\n    const wroteFile = addedServers.length > 0 || !hasExistingMcp;\n\n    if (!dryRun && wroteFile) {\n        await fs.ensureDir(path.dirname(targetMcpPath));\n        await fs.writeJson(targetMcpPath, mergedConfig, { spaces: 2 });\n    }\n\n    return {\n        addedServers,\n        missingEnvWarnings,\n        wroteFile,\n        createdFile: !hasExistingMcp,\n        preservedExistingFile: false,\n        mcpPath: targetMcpPath,\n    };\n}\n","import os from 'os';\nimport path from 'path';\nimport fs from 'fs-extra';\n// @ts-ignore\nimport Conf from 'conf';\nimport kleur from 'kleur';\nimport type { SyncMode } from '../types/config.js';\n\n\nexport interface Context {\n    targets: string[];\n    syncMode: 'copy' | 'symlink' | 'prune';\n    config: any;\n}\n\nexport interface GetContextOptions {\n    createMissingDirs?: boolean;\n    isGlobal?: boolean;\n    projectRoot?: string;\n}\n\ntype ConfigShape = {\n    syncMode: SyncMode;\n};\n\nlet config: Conf<ConfigShape> | null = null;\n\nfunction getConfig(): Conf<ConfigShape> {\n    if (!config) {\n        config = new Conf<ConfigShape>({\n            projectName: 'xtrm-cli',\n            defaults: {\n                syncMode: 'copy',\n            },\n        });\n    }\n\n    return config;\n}\n\n/**\n * Returns install targets for registry-driven xtrm scaffold.\n * Primary target is .xtrm (project-local or ~/.xtrm for global installs).\n */\nexport function getCandidatePaths(isGlobal: boolean = false, projectRoot?: string): Array<{ label: string; path: string }> {\n    const home = os.homedir();\n    const xtrmPath = isGlobal || !projectRoot\n        ? path.join(home, '.xtrm')\n        : path.join(projectRoot, '.xtrm');\n    const xtrmLabel = isGlobal ? '~/.xtrm' : '.xtrm';\n\n    return [{ label: xtrmLabel, path: xtrmPath }];\n}\n\nexport async function getContext(options: GetContextOptions = {}): Promise<Context> {\n    const { createMissingDirs = true, isGlobal = false, projectRoot } = options;\n    const candidates = getCandidatePaths(isGlobal, projectRoot);\n    const activeConfig = getConfig();\n    const selectedPaths = candidates.map(c => c.path);\n\n    if (createMissingDirs) {\n        for (const target of selectedPaths) {\n            await fs.ensureDir(target);\n        }\n    }\n\n    return {\n        targets: selectedPaths,\n        syncMode: activeConfig.get('syncMode'),\n        config: activeConfig,\n    };\n}\nexport function resetContext(): void {\n    getConfig().clear();\n    console.log(kleur.yellow('Configuration cleared.'));\n}\n","/* eslint-disable @typescript-eslint/naming-convention, @typescript-eslint/no-unsafe-return */\nimport { isDeepStrictEqual } from 'node:util';\nimport process from 'node:process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport crypto from 'node:crypto';\nimport assert from 'node:assert';\nimport { getProperty, hasProperty, setProperty, deleteProperty } from 'dot-prop';\nimport envPaths from 'env-paths';\nimport { writeFileSync as atomicWriteFileSync } from 'atomically';\nimport AjvModule from 'ajv';\nimport ajvFormatsModule from 'ajv-formats';\nimport debounceFn from 'debounce-fn';\nimport semver from 'semver';\nimport { concatUint8Arrays, stringToUint8Array, uint8ArrayToString, } from 'uint8array-extras';\n// FIXME: https://github.com/ajv-validator/ajv/issues/2047\nconst Ajv = AjvModule.default;\nconst ajvFormats = ajvFormatsModule.default;\nconst encryptionAlgorithm = 'aes-256-cbc';\nconst createPlainObject = () => Object.create(null);\nconst isExist = (data) => data !== undefined && data !== null;\nconst checkValueType = (key, value) => {\n    const nonJsonTypes = new Set([\n        'undefined',\n        'symbol',\n        'function',\n    ]);\n    const type = typeof value;\n    if (nonJsonTypes.has(type)) {\n        throw new TypeError(`Setting a value of type \\`${type}\\` for key \\`${key}\\` is not allowed as it's not supported by JSON`);\n    }\n};\nconst INTERNAL_KEY = '__internal__';\nconst MIGRATION_KEY = `${INTERNAL_KEY}.migrations.version`;\nexport default class Conf {\n    path;\n    events;\n    #validator;\n    #encryptionKey;\n    #options;\n    #defaultValues = {};\n    constructor(partialOptions = {}) {\n        const options = {\n            configName: 'config',\n            fileExtension: 'json',\n            projectSuffix: 'nodejs',\n            clearInvalidConfig: false,\n            accessPropertiesByDotNotation: true,\n            configFileMode: 0o666,\n            ...partialOptions,\n        };\n        if (!options.cwd) {\n            if (!options.projectName) {\n                throw new Error('Please specify the `projectName` option.');\n            }\n            options.cwd = envPaths(options.projectName, { suffix: options.projectSuffix }).config;\n        }\n        this.#options = options;\n        if (options.schema) {\n            if (typeof options.schema !== 'object') {\n                throw new TypeError('The `schema` option must be an object.');\n            }\n            const ajv = new Ajv({\n                allErrors: true,\n                useDefaults: true,\n            });\n            ajvFormats(ajv);\n            const schema = {\n                type: 'object',\n                properties: options.schema,\n            };\n            this.#validator = ajv.compile(schema);\n            for (const [key, value] of Object.entries(options.schema)) { // TODO: Remove the `as any`.\n                if (value?.default) {\n                    this.#defaultValues[key] = value.default; // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n                }\n            }\n        }\n        if (options.defaults) {\n            this.#defaultValues = {\n                ...this.#defaultValues,\n                ...options.defaults,\n            };\n        }\n        if (options.serialize) {\n            this._serialize = options.serialize;\n        }\n        if (options.deserialize) {\n            this._deserialize = options.deserialize;\n        }\n        this.events = new EventTarget();\n        this.#encryptionKey = options.encryptionKey;\n        const fileExtension = options.fileExtension ? `.${options.fileExtension}` : '';\n        this.path = path.resolve(options.cwd, `${options.configName ?? 'config'}${fileExtension}`);\n        const fileStore = this.store;\n        const store = Object.assign(createPlainObject(), options.defaults, fileStore);\n        this._validate(store);\n        try {\n            assert.deepEqual(fileStore, store);\n        }\n        catch {\n            this.store = store;\n        }\n        if (options.watch) {\n            this._watch();\n        }\n        if (options.migrations) {\n            if (!options.projectVersion) {\n                throw new Error('Please specify the `projectVersion` option.');\n            }\n            this._migrate(options.migrations, options.projectVersion, options.beforeEachMigration);\n        }\n    }\n    get(key, defaultValue) {\n        if (this.#options.accessPropertiesByDotNotation) {\n            return this._get(key, defaultValue);\n        }\n        const { store } = this;\n        return key in store ? store[key] : defaultValue;\n    }\n    set(key, value) {\n        if (typeof key !== 'string' && typeof key !== 'object') {\n            throw new TypeError(`Expected \\`key\\` to be of type \\`string\\` or \\`object\\`, got ${typeof key}`);\n        }\n        if (typeof key !== 'object' && value === undefined) {\n            throw new TypeError('Use `delete()` to clear values');\n        }\n        if (this._containsReservedKey(key)) {\n            throw new TypeError(`Please don't use the ${INTERNAL_KEY} key, as it's used to manage this module internal operations.`);\n        }\n        const { store } = this;\n        const set = (key, value) => {\n            checkValueType(key, value);\n            if (this.#options.accessPropertiesByDotNotation) {\n                setProperty(store, key, value);\n            }\n            else {\n                store[key] = value;\n            }\n        };\n        if (typeof key === 'object') {\n            const object = key;\n            for (const [key, value] of Object.entries(object)) {\n                set(key, value);\n            }\n        }\n        else {\n            set(key, value);\n        }\n        this.store = store;\n    }\n    /**\n    Check if an item exists.\n\n    @param key - The key of the item to check.\n    */\n    has(key) {\n        if (this.#options.accessPropertiesByDotNotation) {\n            return hasProperty(this.store, key);\n        }\n        return key in this.store;\n    }\n    /**\n    Reset items to their default values, as defined by the `defaults` or `schema` option.\n\n    @see `clear()` to reset all items.\n\n    @param keys - The keys of the items to reset.\n    */\n    reset(...keys) {\n        for (const key of keys) {\n            if (isExist(this.#defaultValues[key])) {\n                this.set(key, this.#defaultValues[key]);\n            }\n        }\n    }\n    delete(key) {\n        const { store } = this;\n        if (this.#options.accessPropertiesByDotNotation) {\n            deleteProperty(store, key);\n        }\n        else {\n            // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n            delete store[key];\n        }\n        this.store = store;\n    }\n    /**\n    Delete all items.\n\n    This resets known items to their default values, if defined by the `defaults` or `schema` option.\n    */\n    clear() {\n        this.store = createPlainObject();\n        for (const key of Object.keys(this.#defaultValues)) {\n            this.reset(key);\n        }\n    }\n    /**\n    Watches the given `key`, calling `callback` on any changes.\n\n    @param key - The key wo watch.\n    @param callback - A callback function that is called on any changes. When a `key` is first set `oldValue` will be `undefined`, and when a key is deleted `newValue` will be `undefined`.\n    @returns A function, that when called, will unsubscribe.\n    */\n    onDidChange(key, callback) {\n        if (typeof key !== 'string') {\n            throw new TypeError(`Expected \\`key\\` to be of type \\`string\\`, got ${typeof key}`);\n        }\n        if (typeof callback !== 'function') {\n            throw new TypeError(`Expected \\`callback\\` to be of type \\`function\\`, got ${typeof callback}`);\n        }\n        return this._handleChange(() => this.get(key), callback);\n    }\n    /**\n    Watches the whole config object, calling `callback` on any changes.\n\n    @param callback - A callback function that is called on any changes. When a `key` is first set `oldValue` will be `undefined`, and when a key is deleted `newValue` will be `undefined`.\n    @returns A function, that when called, will unsubscribe.\n    */\n    onDidAnyChange(callback) {\n        if (typeof callback !== 'function') {\n            throw new TypeError(`Expected \\`callback\\` to be of type \\`function\\`, got ${typeof callback}`);\n        }\n        return this._handleChange(() => this.store, callback);\n    }\n    get size() {\n        return Object.keys(this.store).length;\n    }\n    get store() {\n        try {\n            const data = fs.readFileSync(this.path, this.#encryptionKey ? null : 'utf8');\n            const dataString = this._encryptData(data);\n            const deserializedData = this._deserialize(dataString);\n            this._validate(deserializedData);\n            return Object.assign(createPlainObject(), deserializedData);\n        }\n        catch (error) {\n            if (error?.code === 'ENOENT') {\n                this._ensureDirectory();\n                return createPlainObject();\n            }\n            if (this.#options.clearInvalidConfig && error.name === 'SyntaxError') {\n                return createPlainObject();\n            }\n            throw error;\n        }\n    }\n    set store(value) {\n        this._ensureDirectory();\n        this._validate(value);\n        this._write(value);\n        this.events.dispatchEvent(new Event('change'));\n    }\n    *[Symbol.iterator]() {\n        for (const [key, value] of Object.entries(this.store)) {\n            yield [key, value];\n        }\n    }\n    _encryptData(data) {\n        if (!this.#encryptionKey) {\n            return typeof data === 'string' ? data : uint8ArrayToString(data);\n        }\n        // Check if an initialization vector has been used to encrypt the data.\n        try {\n            const initializationVector = data.slice(0, 16);\n            const password = crypto.pbkdf2Sync(this.#encryptionKey, initializationVector.toString(), 10000, 32, 'sha512');\n            const decipher = crypto.createDecipheriv(encryptionAlgorithm, password, initializationVector);\n            const slice = data.slice(17);\n            const dataUpdate = typeof slice === 'string' ? stringToUint8Array(slice) : slice;\n            return uint8ArrayToString(concatUint8Arrays([decipher.update(dataUpdate), decipher.final()]));\n        }\n        catch { }\n        return data.toString();\n    }\n    _handleChange(getter, callback) {\n        let currentValue = getter();\n        const onChange = () => {\n            const oldValue = currentValue;\n            const newValue = getter();\n            if (isDeepStrictEqual(newValue, oldValue)) {\n                return;\n            }\n            currentValue = newValue;\n            callback.call(this, newValue, oldValue);\n        };\n        this.events.addEventListener('change', onChange);\n        return () => {\n            this.events.removeEventListener('change', onChange);\n        };\n    }\n    _deserialize = value => JSON.parse(value);\n    _serialize = value => JSON.stringify(value, undefined, '\\t');\n    _validate(data) {\n        if (!this.#validator) {\n            return;\n        }\n        const valid = this.#validator(data);\n        if (valid || !this.#validator.errors) {\n            return;\n        }\n        const errors = this.#validator.errors\n            .map(({ instancePath, message = '' }) => `\\`${instancePath.slice(1)}\\` ${message}`);\n        throw new Error('Config schema violation: ' + errors.join('; '));\n    }\n    _ensureDirectory() {\n        // Ensure the directory exists as it could have been deleted in the meantime.\n        fs.mkdirSync(path.dirname(this.path), { recursive: true });\n    }\n    _write(value) {\n        let data = this._serialize(value);\n        if (this.#encryptionKey) {\n            const initializationVector = crypto.randomBytes(16);\n            const password = crypto.pbkdf2Sync(this.#encryptionKey, initializationVector.toString(), 10000, 32, 'sha512');\n            const cipher = crypto.createCipheriv(encryptionAlgorithm, password, initializationVector);\n            data = concatUint8Arrays([initializationVector, stringToUint8Array(':'), cipher.update(stringToUint8Array(data)), cipher.final()]);\n        }\n        // Temporary workaround for Conf being packaged in a Ubuntu Snap app.\n        // See https://github.com/sindresorhus/conf/pull/82\n        if (process.env.SNAP) {\n            fs.writeFileSync(this.path, data, { mode: this.#options.configFileMode });\n        }\n        else {\n            try {\n                atomicWriteFileSync(this.path, data, { mode: this.#options.configFileMode });\n            }\n            catch (error) {\n                // Fix for https://github.com/sindresorhus/electron-store/issues/106\n                // Sometimes on Windows, we will get an EXDEV error when atomic writing\n                // (even though to the same directory), so we fall back to non atomic write\n                if (error?.code === 'EXDEV') {\n                    fs.writeFileSync(this.path, data, { mode: this.#options.configFileMode });\n                    return;\n                }\n                throw error;\n            }\n        }\n    }\n    _watch() {\n        this._ensureDirectory();\n        if (!fs.existsSync(this.path)) {\n            this._write(createPlainObject());\n        }\n        if (process.platform === 'win32') {\n            fs.watch(this.path, { persistent: false }, debounceFn(() => {\n                // On Linux and Windows, writing to the config file emits a `rename` event, so we skip checking the event type.\n                this.events.dispatchEvent(new Event('change'));\n            }, { wait: 100 }));\n        }\n        else {\n            fs.watchFile(this.path, { persistent: false }, debounceFn(() => {\n                this.events.dispatchEvent(new Event('change'));\n            }, { wait: 5000 }));\n        }\n    }\n    _migrate(migrations, versionToMigrate, beforeEachMigration) {\n        let previousMigratedVersion = this._get(MIGRATION_KEY, '0.0.0');\n        const newerVersions = Object.keys(migrations)\n            .filter(candidateVersion => this._shouldPerformMigration(candidateVersion, previousMigratedVersion, versionToMigrate));\n        let storeBackup = { ...this.store };\n        for (const version of newerVersions) {\n            try {\n                if (beforeEachMigration) {\n                    beforeEachMigration(this, {\n                        fromVersion: previousMigratedVersion,\n                        toVersion: version,\n                        finalVersion: versionToMigrate,\n                        versions: newerVersions,\n                    });\n                }\n                const migration = migrations[version];\n                migration?.(this);\n                this._set(MIGRATION_KEY, version);\n                previousMigratedVersion = version;\n                storeBackup = { ...this.store };\n            }\n            catch (error) {\n                this.store = storeBackup;\n                throw new Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${error}`);\n            }\n        }\n        if (this._isVersionInRangeFormat(previousMigratedVersion) || !semver.eq(previousMigratedVersion, versionToMigrate)) {\n            this._set(MIGRATION_KEY, versionToMigrate);\n        }\n    }\n    _containsReservedKey(key) {\n        if (typeof key === 'object') {\n            const firsKey = Object.keys(key)[0];\n            if (firsKey === INTERNAL_KEY) {\n                return true;\n            }\n        }\n        if (typeof key !== 'string') {\n            return false;\n        }\n        if (this.#options.accessPropertiesByDotNotation) {\n            if (key.startsWith(`${INTERNAL_KEY}.`)) {\n                return true;\n            }\n            return false;\n        }\n        return false;\n    }\n    _isVersionInRangeFormat(version) {\n        return semver.clean(version) === null;\n    }\n    _shouldPerformMigration(candidateVersion, previousMigratedVersion, versionToMigrate) {\n        if (this._isVersionInRangeFormat(candidateVersion)) {\n            if (previousMigratedVersion !== '0.0.0' && semver.satisfies(previousMigratedVersion, candidateVersion)) {\n                return false;\n            }\n            return semver.satisfies(versionToMigrate, candidateVersion);\n        }\n        if (semver.lte(candidateVersion, previousMigratedVersion)) {\n            return false;\n        }\n        if (semver.gt(candidateVersion, versionToMigrate)) {\n            return false;\n        }\n        return true;\n    }\n    _get(key, defaultValue) {\n        return getProperty(this.store, key, defaultValue);\n    }\n    _set(key, value) {\n        const { store } = this;\n        setProperty(store, key, value);\n        this.store = store;\n    }\n}\n","const isObject = value => {\n\tconst type = typeof value;\n\treturn value !== null && (type === 'object' || type === 'function');\n};\n\nconst isEmptyObject = value => isObject(value) && Object.keys(value).length === 0;\n\nconst disallowedKeys = new Set([\n\t'__proto__',\n\t'prototype',\n\t'constructor',\n]);\n\nconst digits = new Set('0123456789');\n\nfunction getPathSegments(path) {\n\tconst parts = [];\n\tlet currentSegment = '';\n\tlet currentPart = 'start';\n\tlet isIgnoring = false;\n\n\tfor (const character of path) {\n\t\tswitch (character) {\n\t\t\tcase '\\\\': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t}\n\n\t\t\t\tcurrentPart = 'property';\n\t\t\t\tisIgnoring = !isIgnoring;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase '.': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tcurrentPart = 'property';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tparts.push(currentSegment);\n\t\t\t\tcurrentSegment = '';\n\t\t\t\tcurrentPart = 'property';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase '[': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tcurrentPart = 'index';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += character;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'property') {\n\t\t\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\n\t\t\t\t\tparts.push(currentSegment);\n\t\t\t\t\tcurrentSegment = '';\n\t\t\t\t}\n\n\t\t\t\tcurrentPart = 'index';\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase ']': {\n\t\t\t\tif (currentPart === 'index') {\n\t\t\t\t\tparts.push(Number.parseInt(currentSegment, 10));\n\t\t\t\t\tcurrentSegment = '';\n\t\t\t\t\tcurrentPart = 'indexEnd';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\t// Falls through\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tif (currentPart === 'index' && !digits.has(character)) {\n\t\t\t\t\tthrow new Error('Invalid character in an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'indexEnd') {\n\t\t\t\t\tthrow new Error('Invalid character after an index');\n\t\t\t\t}\n\n\t\t\t\tif (currentPart === 'start') {\n\t\t\t\t\tcurrentPart = 'property';\n\t\t\t\t}\n\n\t\t\t\tif (isIgnoring) {\n\t\t\t\t\tisIgnoring = false;\n\t\t\t\t\tcurrentSegment += '\\\\';\n\t\t\t\t}\n\n\t\t\t\tcurrentSegment += character;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isIgnoring) {\n\t\tcurrentSegment += '\\\\';\n\t}\n\n\tswitch (currentPart) {\n\t\tcase 'property': {\n\t\t\tif (disallowedKeys.has(currentSegment)) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tparts.push(currentSegment);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'index': {\n\t\t\tthrow new Error('Index was not closed');\n\t\t}\n\n\t\tcase 'start': {\n\t\t\tparts.push('');\n\n\t\t\tbreak;\n\t\t}\n\t\t// No default\n\t}\n\n\treturn parts;\n}\n\nfunction isStringIndex(object, key) {\n\tif (typeof key !== 'number' && Array.isArray(object)) {\n\t\tconst index = Number.parseInt(key, 10);\n\t\treturn Number.isInteger(index) && object[index] === object[key];\n\t}\n\n\treturn false;\n}\n\nfunction assertNotStringIndex(object, key) {\n\tif (isStringIndex(object, key)) {\n\t\tthrow new Error('Cannot use string index');\n\t}\n}\n\nexport function getProperty(object, path, value) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn value === undefined ? object : value;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\tif (pathArray.length === 0) {\n\t\treturn value;\n\t}\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tif (isStringIndex(object, key)) {\n\t\t\tobject = index === pathArray.length - 1 ? undefined : null;\n\t\t} else {\n\t\t\tobject = object[key];\n\t\t}\n\n\t\tif (object === undefined || object === null) {\n\t\t\t// `object` is either `undefined` or `null` so we want to stop the loop, and\n\t\t\t// if this is not the last bit of the path, and\n\t\t\t// if it didn't return `undefined`\n\t\t\t// it would return `null` if `object` is `null`\n\t\t\t// but we want `get({foo: null}, 'foo.bar')` to equal `undefined`, or the supplied value, not `null`\n\t\t\tif (index !== pathArray.length - 1) {\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn object === undefined ? value : object;\n}\n\nexport function setProperty(object, path, value) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn object;\n\t}\n\n\tconst root = object;\n\tconst pathArray = getPathSegments(path);\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tassertNotStringIndex(object, key);\n\n\t\tif (index === pathArray.length - 1) {\n\t\t\tobject[key] = value;\n\t\t} else if (!isObject(object[key])) {\n\t\t\tobject[key] = typeof pathArray[index + 1] === 'number' ? [] : {};\n\t\t}\n\n\t\tobject = object[key];\n\t}\n\n\treturn root;\n}\n\nexport function deleteProperty(object, path) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\n\tfor (let index = 0; index < pathArray.length; index++) {\n\t\tconst key = pathArray[index];\n\n\t\tassertNotStringIndex(object, key);\n\n\t\tif (index === pathArray.length - 1) {\n\t\t\tdelete object[key];\n\t\t\treturn true;\n\t\t}\n\n\t\tobject = object[key];\n\n\t\tif (!isObject(object)) {\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nexport function hasProperty(object, path) {\n\tif (!isObject(object) || typeof path !== 'string') {\n\t\treturn false;\n\t}\n\n\tconst pathArray = getPathSegments(path);\n\tif (pathArray.length === 0) {\n\t\treturn false;\n\t}\n\n\tfor (const key of pathArray) {\n\t\tif (!isObject(object) || !(key in object) || isStringIndex(object, key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tobject = object[key];\n\t}\n\n\treturn true;\n}\n\n// TODO: Backslashes with no effect should not be escaped\nexport function escapePath(path) {\n\tif (typeof path !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn path.replace(/[\\\\.[]/g, '\\\\$&');\n}\n\n// The keys returned by Object.entries() for arrays are strings\nfunction entries(value) {\n\tconst result = Object.entries(value);\n\tif (Array.isArray(value)) {\n\t\treturn result.map(([key, value]) => [Number(key), value]);\n\t}\n\n\treturn result;\n}\n\nfunction stringifyPath(pathSegments) {\n\tlet result = '';\n\n\tfor (let [index, segment] of entries(pathSegments)) {\n\t\tif (typeof segment === 'number') {\n\t\t\tresult += `[${segment}]`;\n\t\t} else {\n\t\t\tsegment = escapePath(segment);\n\t\t\tresult += index === 0 ? segment : `.${segment}`;\n\t\t}\n\t}\n\n\treturn result;\n}\n\nfunction * deepKeysIterator(object, currentPath = []) {\n\tif (!isObject(object) || isEmptyObject(object)) {\n\t\tif (currentPath.length > 0) {\n\t\t\tyield stringifyPath(currentPath);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tfor (const [key, value] of entries(object)) {\n\t\tyield * deepKeysIterator(value, [...currentPath, key]);\n\t}\n}\n\nexport function deepKeys(object) {\n\treturn [...deepKeysIterator(object)];\n}\n","import path from 'node:path';\nimport os from 'node:os';\nimport process from 'node:process';\n\nconst homedir = os.homedir();\nconst tmpdir = os.tmpdir();\nconst {env} = process;\n\nconst macos = name => {\n\tconst library = path.join(homedir, 'Library');\n\n\treturn {\n\t\tdata: path.join(library, 'Application Support', name),\n\t\tconfig: path.join(library, 'Preferences', name),\n\t\tcache: path.join(library, 'Caches', name),\n\t\tlog: path.join(library, 'Logs', name),\n\t\ttemp: path.join(tmpdir, name),\n\t};\n};\n\nconst windows = name => {\n\tconst appData = env.APPDATA || path.join(homedir, 'AppData', 'Roaming');\n\tconst localAppData = env.LOCALAPPDATA || path.join(homedir, 'AppData', 'Local');\n\n\treturn {\n\t\t// Data/config/cache/log are invented by me as Windows isn't opinionated about this\n\t\tdata: path.join(localAppData, name, 'Data'),\n\t\tconfig: path.join(appData, name, 'Config'),\n\t\tcache: path.join(localAppData, name, 'Cache'),\n\t\tlog: path.join(localAppData, name, 'Log'),\n\t\ttemp: path.join(tmpdir, name),\n\t};\n};\n\n// https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html\nconst linux = name => {\n\tconst username = path.basename(homedir);\n\n\treturn {\n\t\tdata: path.join(env.XDG_DATA_HOME || path.join(homedir, '.local', 'share'), name),\n\t\tconfig: path.join(env.XDG_CONFIG_HOME || path.join(homedir, '.config'), name),\n\t\tcache: path.join(env.XDG_CACHE_HOME || path.join(homedir, '.cache'), name),\n\t\t// https://wiki.debian.org/XDGBaseDirectorySpecification#state\n\t\tlog: path.join(env.XDG_STATE_HOME || path.join(homedir, '.local', 'state'), name),\n\t\ttemp: path.join(tmpdir, username, name),\n\t};\n};\n\nexport default function envPaths(name, {suffix = 'nodejs'} = {}) {\n\tif (typeof name !== 'string') {\n\t\tthrow new TypeError(`Expected a string, got ${typeof name}`);\n\t}\n\n\tif (suffix) {\n\t\t// Add suffix to prevent possible conflict with native apps\n\t\tname += `-${suffix}`;\n\t}\n\n\tif (process.platform === 'darwin') {\n\t\treturn macos(name);\n\t}\n\n\tif (process.platform === 'win32') {\n\t\treturn windows(name);\n\t}\n\n\treturn linux(name);\n}\n","/* IMPORT */\nimport { once } from 'node:events';\nimport { createWriteStream } from 'node:fs';\nimport path from 'node:path';\nimport { Readable } from 'node:stream';\nimport fs from 'stubborn-fs';\nimport { DEFAULT_ENCODING, DEFAULT_FILE_MODE, DEFAULT_FOLDER_MODE, DEFAULT_READ_OPTIONS, DEFAULT_WRITE_OPTIONS, DEFAULT_USER_UID, DEFAULT_USER_GID, DEFAULT_INTERVAL_ASYNC, DEFAULT_TIMEOUT_ASYNC, DEFAULT_TIMEOUT_SYNC, IS_POSIX } from './constants.js';\nimport { isException, isFunction, isString, isUndefined } from './utils/lang.js';\nimport Scheduler from './utils/scheduler.js';\nimport Temp from './utils/temp.js';\nfunction readFile(filePath, options = DEFAULT_READ_OPTIONS) {\n    if (isString(options))\n        return readFile(filePath, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_ASYNC;\n    const retryOptions = { timeout, interval: DEFAULT_INTERVAL_ASYNC };\n    return fs.retry.readFile(retryOptions)(filePath, options);\n}\nfunction readFileSync(filePath, options = DEFAULT_READ_OPTIONS) {\n    if (isString(options))\n        return readFileSync(filePath, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_SYNC;\n    const retryOptions = { timeout };\n    return fs.retry.readFileSync(retryOptions)(filePath, options);\n}\nfunction writeFile(filePath, data, options, callback) {\n    if (isFunction(options))\n        return writeFile(filePath, data, DEFAULT_WRITE_OPTIONS, options);\n    const promise = writeFileAsync(filePath, data, options);\n    if (callback)\n        promise.then(callback, callback);\n    return promise;\n}\nasync function writeFileAsync(filePath, data, options = DEFAULT_WRITE_OPTIONS) {\n    if (isString(options))\n        return writeFileAsync(filePath, data, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_ASYNC;\n    const retryOptions = { timeout, interval: DEFAULT_INTERVAL_ASYNC };\n    let schedulerCustomDisposer = null;\n    let schedulerDisposer = null;\n    let tempDisposer = null;\n    let tempPath = null;\n    let fd = null;\n    try {\n        if (options.schedule)\n            schedulerCustomDisposer = await options.schedule(filePath);\n        schedulerDisposer = await Scheduler.schedule(filePath);\n        const filePathReal = await fs.attempt.realpath(filePath);\n        const filePathExists = !!filePathReal;\n        filePath = filePathReal || filePath;\n        [tempPath, tempDisposer] = Temp.get(filePath, options.tmpCreate || Temp.create, !(options.tmpPurge === false));\n        const useStatChown = IS_POSIX && isUndefined(options.chown);\n        const useStatMode = isUndefined(options.mode);\n        if (filePathExists && (useStatChown || useStatMode)) {\n            const stats = await fs.attempt.stat(filePath);\n            if (stats) {\n                options = { ...options };\n                if (useStatChown) {\n                    options.chown = { uid: stats.uid, gid: stats.gid };\n                }\n                if (useStatMode) {\n                    options.mode = stats.mode;\n                }\n            }\n        }\n        if (!filePathExists) {\n            const parentPath = path.dirname(filePath);\n            await fs.attempt.mkdir(parentPath, {\n                mode: DEFAULT_FOLDER_MODE,\n                recursive: true\n            });\n        }\n        fd = await fs.retry.open(retryOptions)(tempPath, 'w', options.mode || DEFAULT_FILE_MODE);\n        if (options.tmpCreated) {\n            options.tmpCreated(tempPath);\n        }\n        if (isString(data)) {\n            await fs.retry.write(retryOptions)(fd, data, 0, options.encoding || DEFAULT_ENCODING);\n        }\n        else if (data instanceof Readable) {\n            const writeStream = createWriteStream(tempPath, { fd, autoClose: false });\n            const finishPromise = once(writeStream, 'finish');\n            data.pipe(writeStream);\n            await finishPromise;\n        }\n        else if (!isUndefined(data)) {\n            await fs.retry.write(retryOptions)(fd, data, 0, data.length, 0);\n        }\n        if (options.fsync !== false) {\n            if (options.fsyncWait !== false) {\n                await fs.retry.fsync(retryOptions)(fd);\n            }\n            else {\n                fs.attempt.fsync(fd);\n            }\n        }\n        await fs.retry.close(retryOptions)(fd);\n        fd = null;\n        if (options.chown && (options.chown.uid !== DEFAULT_USER_UID || options.chown.gid !== DEFAULT_USER_GID)) {\n            await fs.attempt.chown(tempPath, options.chown.uid, options.chown.gid);\n        }\n        if (options.mode && options.mode !== DEFAULT_FILE_MODE) {\n            await fs.attempt.chmod(tempPath, options.mode);\n        }\n        try {\n            await fs.retry.rename(retryOptions)(tempPath, filePath);\n        }\n        catch (error) {\n            if (!isException(error))\n                throw error;\n            if (error.code !== 'ENAMETOOLONG')\n                throw error;\n            await fs.retry.rename(retryOptions)(tempPath, Temp.truncate(filePath));\n        }\n        tempDisposer();\n        tempPath = null;\n    }\n    finally {\n        if (fd)\n            await fs.attempt.close(fd);\n        if (tempPath)\n            Temp.purge(tempPath);\n        if (schedulerCustomDisposer)\n            schedulerCustomDisposer();\n        if (schedulerDisposer)\n            schedulerDisposer();\n    }\n}\nfunction writeFileSync(filePath, data, options = DEFAULT_WRITE_OPTIONS) {\n    if (isString(options))\n        return writeFileSync(filePath, data, { encoding: options });\n    const timeout = options.timeout ?? DEFAULT_TIMEOUT_SYNC;\n    const retryOptions = { timeout };\n    let tempDisposer = null;\n    let tempPath = null;\n    let fd = null;\n    try {\n        const filePathReal = fs.attempt.realpathSync(filePath);\n        const filePathExists = !!filePathReal;\n        filePath = filePathReal || filePath;\n        [tempPath, tempDisposer] = Temp.get(filePath, options.tmpCreate || Temp.create, !(options.tmpPurge === false));\n        const useStatChown = IS_POSIX && isUndefined(options.chown);\n        const useStatMode = isUndefined(options.mode);\n        if (filePathExists && (useStatChown || useStatMode)) {\n            const stats = fs.attempt.statSync(filePath);\n            if (stats) {\n                options = { ...options };\n                if (useStatChown) {\n                    options.chown = { uid: stats.uid, gid: stats.gid };\n                }\n                if (useStatMode) {\n                    options.mode = stats.mode;\n                }\n            }\n        }\n        if (!filePathExists) {\n            const parentPath = path.dirname(filePath);\n            fs.attempt.mkdirSync(parentPath, {\n                mode: DEFAULT_FOLDER_MODE,\n                recursive: true\n            });\n        }\n        fd = fs.retry.openSync(retryOptions)(tempPath, 'w', options.mode || DEFAULT_FILE_MODE);\n        if (options.tmpCreated) {\n            options.tmpCreated(tempPath);\n        }\n        if (isString(data)) {\n            fs.retry.writeSync(retryOptions)(fd, data, 0, options.encoding || DEFAULT_ENCODING);\n        }\n        else if (!isUndefined(data)) {\n            fs.retry.writeSync(retryOptions)(fd, data, 0, data.length, 0);\n        }\n        if (options.fsync !== false) {\n            if (options.fsyncWait !== false) {\n                fs.retry.fsyncSync(retryOptions)(fd);\n            }\n            else {\n                fs.attempt.fsync(fd);\n            }\n        }\n        fs.retry.closeSync(retryOptions)(fd);\n        fd = null;\n        if (options.chown && (options.chown.uid !== DEFAULT_USER_UID || options.chown.gid !== DEFAULT_USER_GID)) {\n            fs.attempt.chownSync(tempPath, options.chown.uid, options.chown.gid);\n        }\n        if (options.mode && options.mode !== DEFAULT_FILE_MODE) {\n            fs.attempt.chmodSync(tempPath, options.mode);\n        }\n        try {\n            fs.retry.renameSync(retryOptions)(tempPath, filePath);\n        }\n        catch (error) {\n            if (!isException(error))\n                throw error;\n            if (error.code !== 'ENAMETOOLONG')\n                throw error;\n            fs.retry.renameSync(retryOptions)(tempPath, Temp.truncate(filePath));\n        }\n        tempDisposer();\n        tempPath = null;\n    }\n    finally {\n        if (fd)\n            fs.attempt.closeSync(fd);\n        if (tempPath)\n            Temp.purge(tempPath);\n    }\n}\n/* EXPORT */\nexport { readFile, readFileSync, writeFile, writeFileSync };\n","/* IMPORT */\nimport fs from 'node:fs';\nimport { promisify } from 'node:util';\nimport { attemptifyAsync, attemptifySync } from 'stubborn-utils';\nimport { retryifyAsync, retryifySync } from 'stubborn-utils';\nimport { ATTEMPTIFY_CHANGE_ERROR_OPTIONS, ATTEMPTIFY_NOOP_OPTIONS, RETRYIFY_OPTIONS } from './constants.js';\n/* MAIN */\nconst FS = {\n    attempt: {\n        /* ASYNC */\n        chmod: attemptifyAsync(promisify(fs.chmod), ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        chown: attemptifyAsync(promisify(fs.chown), ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        close: attemptifyAsync(promisify(fs.close), ATTEMPTIFY_NOOP_OPTIONS),\n        fsync: attemptifyAsync(promisify(fs.fsync), ATTEMPTIFY_NOOP_OPTIONS),\n        mkdir: attemptifyAsync(promisify(fs.mkdir), ATTEMPTIFY_NOOP_OPTIONS),\n        realpath: attemptifyAsync(promisify(fs.realpath), ATTEMPTIFY_NOOP_OPTIONS),\n        stat: attemptifyAsync(promisify(fs.stat), ATTEMPTIFY_NOOP_OPTIONS),\n        unlink: attemptifyAsync(promisify(fs.unlink), ATTEMPTIFY_NOOP_OPTIONS),\n        /* SYNC */\n        chmodSync: attemptifySync(fs.chmodSync, ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        chownSync: attemptifySync(fs.chownSync, ATTEMPTIFY_CHANGE_ERROR_OPTIONS),\n        closeSync: attemptifySync(fs.closeSync, ATTEMPTIFY_NOOP_OPTIONS),\n        existsSync: attemptifySync(fs.existsSync, ATTEMPTIFY_NOOP_OPTIONS),\n        fsyncSync: attemptifySync(fs.fsync, ATTEMPTIFY_NOOP_OPTIONS),\n        mkdirSync: attemptifySync(fs.mkdirSync, ATTEMPTIFY_NOOP_OPTIONS),\n        realpathSync: attemptifySync(fs.realpathSync, ATTEMPTIFY_NOOP_OPTIONS),\n        statSync: attemptifySync(fs.statSync, ATTEMPTIFY_NOOP_OPTIONS),\n        unlinkSync: attemptifySync(fs.unlinkSync, ATTEMPTIFY_NOOP_OPTIONS)\n    },\n    retry: {\n        /* ASYNC */\n        close: retryifyAsync(promisify(fs.close), RETRYIFY_OPTIONS),\n        fsync: retryifyAsync(promisify(fs.fsync), RETRYIFY_OPTIONS),\n        open: retryifyAsync(promisify(fs.open), RETRYIFY_OPTIONS),\n        readFile: retryifyAsync(promisify(fs.readFile), RETRYIFY_OPTIONS),\n        rename: retryifyAsync(promisify(fs.rename), RETRYIFY_OPTIONS),\n        stat: retryifyAsync(promisify(fs.stat), RETRYIFY_OPTIONS),\n        write: retryifyAsync(promisify(fs.write), RETRYIFY_OPTIONS),\n        writeFile: retryifyAsync(promisify(fs.writeFile), RETRYIFY_OPTIONS),\n        /* SYNC */\n        closeSync: retryifySync(fs.closeSync, RETRYIFY_OPTIONS),\n        fsyncSync: retryifySync(fs.fsyncSync, RETRYIFY_OPTIONS),\n        openSync: retryifySync(fs.openSync, RETRYIFY_OPTIONS),\n        readFileSync: retryifySync(fs.readFileSync, RETRYIFY_OPTIONS),\n        renameSync: retryifySync(fs.renameSync, RETRYIFY_OPTIONS),\n        statSync: retryifySync(fs.statSync, RETRYIFY_OPTIONS),\n        writeSync: retryifySync(fs.writeSync, RETRYIFY_OPTIONS),\n        writeFileSync: retryifySync(fs.writeFileSync, RETRYIFY_OPTIONS)\n    }\n};\n/* EXPORT */\nexport default FS;\n","/* IMPORT */\n/* MAIN */\nconst attemptifyAsync = (fn, options) => {\n    const { onError } = options;\n    return function attemptified(...args) {\n        return fn.apply(undefined, args).catch(onError);\n    }; //TSC\n};\n/* EXPORT */\nexport default attemptifyAsync;\n","/* IMPORT */\n/* MAIN */\nconst attemptifySync = (fn, options) => {\n    const { onError } = options;\n    return function attemptified(...args) {\n        try {\n            return fn.apply(undefined, args);\n        }\n        catch (error) {\n            return onError(error);\n        }\n    }; //TSC\n};\n/* EXPORT */\nexport default attemptifySync;\n","/* MAIN */\nconst RETRY_INTERVAL = 250;\n/* EXPORT */\nexport { RETRY_INTERVAL };\n","/* IMPORT */\nimport { RETRY_INTERVAL } from './constants.js';\n/* MAIN */\nconst retryifyAsync = (fn, options) => {\n    const { isRetriable } = options;\n    return function retryified(options) {\n        const { timeout } = options;\n        const interval = options.interval ?? RETRY_INTERVAL;\n        const timestamp = Date.now() + timeout;\n        return function attempt(...args) {\n            return fn.apply(undefined, args).catch((error) => {\n                if (!isRetriable(error))\n                    throw error;\n                if (Date.now() >= timestamp)\n                    throw error;\n                const delay = Math.round(interval * Math.random());\n                if (delay > 0) {\n                    const delayPromise = new Promise(resolve => setTimeout(resolve, delay));\n                    return delayPromise.then(() => attempt.apply(undefined, args));\n                }\n                else {\n                    return attempt.apply(undefined, args);\n                }\n            });\n        }; //TSC\n    };\n};\n/* EXPORT */\nexport default retryifyAsync;\n","/* IMPORT */\n/* MAIN */\nconst retryifySync = (fn, options) => {\n    const { isRetriable } = options;\n    return function retryified(options) {\n        const { timeout } = options;\n        const timestamp = Date.now() + timeout;\n        return function attempt(...args) {\n            while (true) {\n                try {\n                    return fn.apply(undefined, args);\n                }\n                catch (error) {\n                    if (!isRetriable(error))\n                        throw error;\n                    if (Date.now() >= timestamp)\n                        throw error;\n                    continue;\n                }\n            }\n        }; //TSC\n    };\n};\n/* EXPORT */\nexport default retryifySync;\n","/* IMPORT */\nimport process from 'node:process';\nimport Handlers from './handlers.js';\n/* MAIN */\nconst ATTEMPTIFY_CHANGE_ERROR_OPTIONS = {\n    onError: Handlers.onChangeError\n};\nconst ATTEMPTIFY_NOOP_OPTIONS = {\n    onError: () => undefined\n};\nconst IS_USER_ROOT = (process.getuid ? !process.getuid() : false);\nconst RETRYIFY_OPTIONS = {\n    isRetriable: Handlers.isRetriableError\n};\n/* EXPORT */\nexport { ATTEMPTIFY_CHANGE_ERROR_OPTIONS, ATTEMPTIFY_NOOP_OPTIONS, IS_USER_ROOT, RETRYIFY_OPTIONS };\n","/* IMPORT */\nimport { IS_USER_ROOT } from './constants.js';\n/* MAIN */\nconst Handlers = {\n    /* API */\n    isChangeErrorOk: (error) => {\n        if (!Handlers.isNodeError(error))\n            return false;\n        const { code } = error;\n        if (code === 'ENOSYS')\n            return true;\n        if (!IS_USER_ROOT && (code === 'EINVAL' || code === 'EPERM'))\n            return true;\n        return false;\n    },\n    isNodeError: (error) => {\n        return (error instanceof Error);\n    },\n    isRetriableError: (error) => {\n        if (!Handlers.isNodeError(error))\n            return false;\n        const { code } = error;\n        if (code === 'EMFILE' || code === 'ENFILE' || code === 'EAGAIN' || code === 'EBUSY' || code === 'EACCESS' || code === 'EACCES' || code === 'EACCS' || code === 'EPERM')\n            return true;\n        return false;\n    },\n    onChangeError: (error) => {\n        if (!Handlers.isNodeError(error))\n            throw error;\n        if (Handlers.isChangeErrorOk(error))\n            return;\n        throw error;\n    }\n};\n/* EXPORT */\nexport default Handlers;\n","/* IMPORT */\nimport process from 'node:process';\n/* MAIN */\nconst DEFAULT_ENCODING = 'utf8';\nconst DEFAULT_FILE_MODE = 0o666;\nconst DEFAULT_FOLDER_MODE = 0o777;\nconst DEFAULT_READ_OPTIONS = {};\nconst DEFAULT_WRITE_OPTIONS = {};\nconst DEFAULT_USER_UID = process.geteuid ? process.geteuid() : -1;\nconst DEFAULT_USER_GID = process.getegid ? process.getegid() : -1;\nconst DEFAULT_INTERVAL_ASYNC = 200;\nconst DEFAULT_TIMEOUT_ASYNC = 7500;\nconst DEFAULT_TIMEOUT_SYNC = 1000;\nconst IS_POSIX = !!process.getuid;\nconst IS_USER_ROOT = process.getuid ? !process.getuid() : false;\nconst LIMIT_BASENAME_LENGTH = 128; //TODO: Fetch the real limit from the filesystem //TODO: Fetch the whole-path length limit too\nconst NOOP = () => { };\n/* EXPORT */\nexport { DEFAULT_ENCODING, DEFAULT_FILE_MODE, DEFAULT_FOLDER_MODE, DEFAULT_READ_OPTIONS, DEFAULT_WRITE_OPTIONS, DEFAULT_USER_UID, DEFAULT_USER_GID, DEFAULT_INTERVAL_ASYNC, DEFAULT_TIMEOUT_ASYNC, DEFAULT_TIMEOUT_SYNC, IS_POSIX, IS_USER_ROOT, LIMIT_BASENAME_LENGTH, NOOP };\n","/* IMPORT */\n/* MAIN */\nconst isException = (value) => {\n    return (value instanceof Error) && ('code' in value);\n};\nconst isFunction = (value) => {\n    return (typeof value === 'function');\n};\nconst isString = (value) => {\n    return (typeof value === 'string');\n};\nconst isUndefined = (value) => {\n    return (value === undefined);\n};\n/* EXPORT */\nexport { isException, isFunction, isString, isUndefined };\n","/* IMPORT */\nimport path from 'node:path';\nimport fs from 'stubborn-fs';\nimport whenExit from 'when-exit';\nimport { LIMIT_BASENAME_LENGTH } from '../constants.js';\n/* MAIN */\n//TODO: Maybe publish this as a standalone package\nconst Temp = {\n    /* VARIABLES */\n    store: {}, // filePath => purge\n    /* API */\n    create: (filePath) => {\n        const randomness = `000000${Math.floor(Math.random() * 16777215).toString(16)}`.slice(-6); // 6 random-enough hex characters\n        const timestamp = Date.now().toString().slice(-10); // 10 precise timestamp digits\n        const prefix = 'tmp-';\n        const suffix = `.${prefix}${timestamp}${randomness}`;\n        const tempPath = `${filePath}${suffix}`;\n        return tempPath;\n    },\n    get: (filePath, creator, purge = true) => {\n        const tempPath = Temp.truncate(creator(filePath));\n        if (tempPath in Temp.store)\n            return Temp.get(filePath, creator, purge); // Collision found, try again\n        Temp.store[tempPath] = purge;\n        const disposer = () => delete Temp.store[tempPath];\n        return [tempPath, disposer];\n    },\n    purge: (filePath) => {\n        if (!Temp.store[filePath])\n            return;\n        delete Temp.store[filePath];\n        fs.attempt.unlink(filePath);\n    },\n    purgeSync: (filePath) => {\n        if (!Temp.store[filePath])\n            return;\n        delete Temp.store[filePath];\n        fs.attempt.unlinkSync(filePath);\n    },\n    purgeSyncAll: () => {\n        for (const filePath in Temp.store) {\n            Temp.purgeSync(filePath);\n        }\n    },\n    truncate: (filePath) => {\n        const basename = path.basename(filePath);\n        if (basename.length <= LIMIT_BASENAME_LENGTH)\n            return filePath; //FIXME: Rough and quick attempt at detecting ok lengths\n        const truncable = /^(\\.?)(.*?)((?:\\.[^.]+)?(?:\\.tmp-\\d{10}[a-f0-9]{6})?)$/.exec(basename);\n        if (!truncable)\n            return filePath; //FIXME: No truncable part detected, can't really do much without also changing the parent path, which is unsafe, hoping for the best here\n        const truncationLength = basename.length - LIMIT_BASENAME_LENGTH;\n        return `${filePath.slice(0, -basename.length)}${truncable[1]}${truncable[2].slice(0, -truncationLength)}${truncable[3]}`; //FIXME: The truncable part might be shorter than needed here\n    }\n};\n/* INIT */\nwhenExit(Temp.purgeSyncAll); // Ensuring purgeable temp files are purged on exit\n/* EXPORT */\nexport default Temp;\n","/* IMPORT */\nimport process from 'node:process';\nimport { IS_WINDOWS } from './constants.js';\nimport Signals from './signals.js';\n/* MAIN */\nclass Interceptor {\n    /* CONSTRUCTOR */\n    constructor() {\n        /* VARIABLES */\n        this.callbacks = new Set();\n        this.exited = false;\n        /* API */\n        this.exit = (signal) => {\n            if (this.exited)\n                return;\n            this.exited = true;\n            for (const callback of this.callbacks) {\n                callback();\n            }\n            if (signal) {\n                if (IS_WINDOWS && (signal !== 'SIGINT' && signal !== 'SIGTERM' && signal !== 'SIGKILL')) { // Windows doesn't support POSIX signals, but Node emulates these 3 signals for us\n                    process.kill(process.pid, 'SIGTERM');\n                }\n                else {\n                    process.kill(process.pid, signal);\n                }\n            }\n        };\n        this.hook = () => {\n            process.once('exit', () => this.exit());\n            for (const signal of Signals) {\n                try {\n                    process.once(signal, () => this.exit(signal));\n                }\n                catch {\n                    // Sometimes \"process.once\" can throw...\n                }\n            }\n        };\n        this.register = (callback) => {\n            this.callbacks.add(callback);\n            return () => {\n                this.callbacks.delete(callback);\n            };\n        };\n        this.hook();\n    }\n}\n/* EXPORT */\nexport default new Interceptor();\n","/* IMPORT */\nimport process from 'node:process';\n/* MAIN */\nconst IS_LINUX = (process.platform === 'linux');\nconst IS_WINDOWS = (process.platform === 'win32');\n/* EXPORT */\nexport { IS_LINUX, IS_WINDOWS };\n","/* IMPORT */\nimport { IS_LINUX, IS_WINDOWS } from './constants.js';\n/* MAIN */\n//URL: https://github.com/tapjs/signal-exit/blob/458776d9cf8be89712aa1f7b45bb2163ce15ef4a/src/signals.ts\nconst Signals = ['SIGHUP', 'SIGINT', 'SIGTERM'];\nif (!IS_WINDOWS) {\n    Signals.push('SIGALRM', 'SIGABRT', 'SIGVTALRM', 'SIGXCPU', 'SIGXFSZ', 'SIGUSR2', 'SIGTRAP', 'SIGSYS', 'SIGQUIT', 'SIGIOT');\n}\nif (IS_LINUX) {\n    Signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT');\n}\n/* EXPORT */\nexport default Signals;\n","/* IMPORT */\nimport Interceptor from './interceptor.js';\n/* MAIN */\nconst whenExit = Interceptor.register;\n/* EXPORT */\nexport default whenExit;\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFn from 'mimic-fn';\n\nconst debounceFn = (inputFunction, options = {}) => {\n\tif (typeof inputFunction !== 'function') {\n\t\tthrow new TypeError(`Expected the first argument to be a function, got \\`${typeof inputFunction}\\``);\n\t}\n\n\tconst {\n\t\twait = 0,\n\t\tmaxWait = Number.POSITIVE_INFINITY,\n\t\tbefore = false,\n\t\tafter = true,\n\t} = options;\n\n\tif (!before && !after) {\n\t\tthrow new Error('Both `before` and `after` are false, function wouldn\\'t be called.');\n\t}\n\n\tlet timeout;\n\tlet maxTimeout;\n\tlet result;\n\n\tconst debouncedFunction = function (...arguments_) {\n\t\tconst context = this; // eslint-disable-line unicorn/no-this-assignment\n\n\t\tconst later = () => {\n\t\t\ttimeout = undefined;\n\n\t\t\tif (maxTimeout) {\n\t\t\t\tclearTimeout(maxTimeout);\n\t\t\t\tmaxTimeout = undefined;\n\t\t\t}\n\n\t\t\tif (after) {\n\t\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t\t}\n\t\t};\n\n\t\tconst maxLater = () => {\n\t\t\tmaxTimeout = undefined;\n\n\t\t\tif (timeout) {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\ttimeout = undefined;\n\t\t\t}\n\n\t\t\tif (after) {\n\t\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t\t}\n\t\t};\n\n\t\tconst shouldCallNow = before && !timeout;\n\t\tclearTimeout(timeout);\n\t\ttimeout = setTimeout(later, wait);\n\n\t\tif (maxWait > 0 && maxWait !== Number.POSITIVE_INFINITY && !maxTimeout) {\n\t\t\tmaxTimeout = setTimeout(maxLater, maxWait);\n\t\t}\n\n\t\tif (shouldCallNow) {\n\t\t\tresult = inputFunction.apply(context, arguments_);\n\t\t}\n\n\t\treturn result;\n\t};\n\n\tmimicFn(debouncedFunction, inputFunction);\n\n\tdebouncedFunction.cancel = () => {\n\t\tif (timeout) {\n\t\t\tclearTimeout(timeout);\n\t\t\ttimeout = undefined;\n\t\t}\n\n\t\tif (maxTimeout) {\n\t\t\tclearTimeout(maxTimeout);\n\t\t\tmaxTimeout = undefined;\n\t\t}\n\t};\n\n\treturn debouncedFunction;\n};\n\nexport default debounceFn;\n","const objectToString = Object.prototype.toString;\n\nexport function isUint8Array(value) {\n\treturn value && objectToString.call(value) === '[object Uint8Array]';\n}\n\nexport function assertUint8Array(value) {\n\tif (!isUint8Array(value)) {\n\t\tthrow new TypeError(`Expected \\`Uint8Array\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function concatUint8Arrays(arrays, totalLength) {\n\tif (arrays.length === 0) {\n\t\treturn new Uint8Array(0);\n\t}\n\n\ttotalLength ??= arrays.reduce((accumulator, currentValue) => accumulator + currentValue.length, 0);\n\n\tconst returnValue = new Uint8Array(totalLength);\n\n\tlet offset = 0;\n\tfor (const array of arrays) {\n\t\tassertUint8Array(array);\n\t\treturnValue.set(array, offset);\n\t\toffset += array.length;\n\t}\n\n\treturn returnValue;\n}\n\nexport function areUint8ArraysEqual(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tif (a === b) {\n\t\treturn true;\n\t}\n\n\tif (a.length !== b.length) {\n\t\treturn false;\n\t}\n\n\t// eslint-disable-next-line unicorn/no-for-loop\n\tfor (let index = 0; index < a.length; index++) {\n\t\tif (a[index] !== b[index]) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function compareUint8Arrays(a, b) {\n\tassertUint8Array(a);\n\tassertUint8Array(b);\n\n\tconst length = Math.min(a.length, b.length);\n\n\tfor (let index = 0; index < length; index++) {\n\t\tif (a[index] < b[index]) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (a[index] > b[index]) {\n\t\t\treturn 1;\n\t\t}\n\t}\n\n\t// At this point, all the compared elements are equal.\n\t// The shorter array should come first if the arrays are of different lengths.\n\tif (a.length > b.length) {\n\t\treturn 1;\n\t}\n\n\tif (a.length < b.length) {\n\t\treturn -1;\n\t}\n\n\treturn 0;\n}\n\nexport function uint8ArrayToString(array) {\n\tassertUint8Array(array);\n\treturn (new globalThis.TextDecoder()).decode(array);\n}\n\nfunction assertString(value) {\n\tif (typeof value !== 'string') {\n\t\tthrow new TypeError(`Expected \\`string\\`, got \\`${typeof value}\\``);\n\t}\n}\n\nexport function stringToUint8Array(string) {\n\tassertString(string);\n\treturn (new globalThis.TextEncoder()).encode(string);\n}\n\nexport function uint8ArrayToBase64(array) {\n\tassertUint8Array(array);\n\n\t// Required as `btoa` and `atob` don't properly support Unicode: https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n\treturn globalThis.btoa(String.fromCodePoint(...array));\n}\n\nexport function base64ToUint8Array(base64String) {\n\tassertString(base64String);\n\treturn Uint8Array.from(globalThis.atob(base64String), x => x.codePointAt(0));\n}\n\nexport function stringToBase64(string) {\n\tassertString(string);\n\treturn uint8ArrayToBase64(stringToUint8Array(string));\n}\n\nexport function base64ToString(base64String) {\n\tassertString(base64String);\n\treturn uint8ArrayToString(base64ToUint8Array(base64String));\n}\n\nconst byteToHexLookupTable = Array.from({length: 256}, (_, index) => index.toString(16).padStart(2, '0'));\n\nexport function uint8ArrayToHex(array) {\n\tassertUint8Array(array);\n\n\t// Concatenating a string is faster than using an array.\n\tlet hexString = '';\n\n\t// eslint-disable-next-line unicorn/no-for-loop -- Max performance is critical.\n\tfor (let index = 0; index < array.length; index++) {\n\t\thexString += byteToHexLookupTable[array[index]];\n\t}\n\n\treturn hexString;\n}\n\nconst hexToDecimalLookupTable = {\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n\ta: 10,\n\tb: 11,\n\tc: 12,\n\td: 13,\n\te: 14,\n\tf: 15,\n\tA: 10,\n\tB: 11,\n\tC: 12,\n\tD: 13,\n\tE: 14,\n\tF: 15,\n};\n\nexport function hexToUint8Array(hexString) {\n\tassertString(hexString);\n\n\tif (hexString.length % 2 !== 0) {\n\t\tthrow new Error('Invalid Hex string length.');\n\t}\n\n\tconst resultLength = hexString.length / 2;\n\tconst bytes = new Uint8Array(resultLength);\n\n\tfor (let index = 0; index < resultLength; index++) {\n\t\tconst highNibble = hexToDecimalLookupTable[hexString[index * 2]];\n\t\tconst lowNibble = hexToDecimalLookupTable[hexString[(index * 2) + 1]];\n\n\t\tif (highNibble === undefined || lowNibble === undefined) {\n\t\t\tthrow new Error(`Invalid Hex character encountered at position ${index * 2}`);\n\t\t}\n\n\t\tbytes[index] = (highNibble << 4) | lowNibble; // eslint-disable-line no-bitwise\n\t}\n\n\treturn bytes;\n}\n","import { join, normalize } from 'path';\nimport fs from 'fs-extra';\nimport { hashDirectory, getNewestMtime } from '../utils/hash.js';\nimport type { ChangeSet } from '../types/config.js';\nimport { detectAdapter } from '../adapters/registry.js';\n\n// Items to ignore from diff scanning (similar to .gitignore)\nconst IGNORED_ITEMS = new Set(['__pycache__', '.DS_Store', 'Thumbs.db', '.gitkeep', 'node_modules']);\n\nexport class PruneModeReadError extends Error {\n    constructor(path: string) {\n        super(`Cannot read ${path} in prune mode — aborting to prevent accidental deletion`);\n        this.name = 'PruneModeReadError';\n    }\n}\n\nexport async function calculateDiff(repoRoot: string, systemRoot: string, pruneMode: boolean = false): Promise<ChangeSet> {\n    const adapter = detectAdapter(systemRoot);\n    const isClaude = adapter?.toolName === 'claude-code';\n\n    const changeSet: ChangeSet = {\n        skills: { missing: [], outdated: [], drifted: [], total: 0 },\n        hooks: { missing: [], outdated: [], drifted: [], total: 0 },\n        config: { missing: [], outdated: [], drifted: [], total: 0 },\n        commands: { missing: [], outdated: [], drifted: [], total: 0 },\n    };\n\n    // Load installed file hashes from manifest for precise drift classification\n    const manifestPath = join(systemRoot, '.jaggers-sync-manifest.json');\n    let installedHashes: Record<string, string> | null = null;\n    try {\n        if (await fs.pathExists(manifestPath)) {\n            const manifest = await fs.readJson(manifestPath);\n            if (manifest.fileHashes && typeof manifest.fileHashes === 'object') {\n                installedHashes = manifest.fileHashes;\n            }\n        }\n    } catch {\n        // Manifest unreadable — fall back to mtime heuristic\n    }\n\n    // 1. Folders: Skills & Hooks & Commands\n    const folders = ['skills', 'hooks'];\n    if (!isClaude) folders.push('commands');\n\n    for (const category of folders) {\n        const repoPath = join(repoRoot, category);\n        const systemPath = join(systemRoot, category);\n\n        if (!(await fs.pathExists(repoPath))) continue;\n\n        const items = (await fs.readdir(repoPath)).filter(i => !IGNORED_ITEMS.has(i));\n        (changeSet[category as keyof ChangeSet] as any).total = items.length;\n\n        for (const item of items) {\n            await compareItem(\n                category as keyof ChangeSet,\n                item,\n                join(repoPath, item),\n                join(systemPath, item),\n                changeSet,\n                pruneMode,\n                installedHashes,\n            );\n        }\n    }\n\n    // 2. Config Files (Explicit Mapping)\n    const configMapping = {\n        'settings.json': { repo: 'config/settings.json', sys: 'settings.json' },\n    };\n\n    for (const [name, paths] of Object.entries(configMapping)) {\n        // settings.json is path-transformed on install for all agent environments,\n        // so the hash always differs — skip to prevent perpetual false \"1 update\"\n        if (name === 'settings.json' && adapter !== null) continue;\n\n        const itemRepoPath = join(repoRoot, paths.repo);\n        const itemSystemPath = join(systemRoot, paths.sys);\n\n        if (await fs.pathExists(itemRepoPath)) {\n            await compareItem('config', name, itemRepoPath, itemSystemPath, changeSet, false, installedHashes);\n        }\n    }\n\n    return changeSet;\n}\n\nasync function compareItem(\n    category: keyof ChangeSet,\n    item: string,\n    repoPath: string,\n    systemPath: string,\n    changeSet: ChangeSet,\n    pruneMode: boolean = false,\n    installedHashes: Record<string, string> | null = null,\n): Promise<void> {\n    const cat = changeSet[category] as any;\n\n    if (!(await fs.pathExists(systemPath))) {\n        cat.missing.push(item);\n        return;\n    }\n\n    const repoHash = await hashDirectory(repoPath);\n\n    // Wrap system-side hash read in try/catch for prune mode safety\n    let systemHash: string;\n    try {\n        systemHash = await hashDirectory(systemPath);\n    } catch (error) {\n        if (pruneMode) {\n            throw new PruneModeReadError(systemPath);\n        }\n        // If not in prune mode, treat as missing\n        cat.missing.push(item);\n        return;\n    }\n\n    if (repoHash !== systemHash) {\n        const manifestKey = `${category}/${item}`;\n        const installedHash = installedHashes?.[manifestKey];\n\n        if (installedHash !== undefined) {\n            // Manifest-based classification: compare system against installed snapshot\n            if (systemHash !== installedHash) {\n                // System was modified after last install → drifted (local changes)\n                cat.drifted.push(item);\n            } else {\n                // System matches install snapshot but repo changed → outdated\n                cat.outdated.push(item);\n            }\n        } else {\n            // No manifest data: fall back to mtime heuristic\n            const repoMtime = await getNewestMtime(repoPath);\n            const systemMtime = await getNewestMtime(systemPath);\n\n            if (systemMtime > repoMtime + 2000) {\n                cat.drifted.push(item);\n            } else {\n                cat.outdated.push(item);\n            }\n        }\n    }\n}\n","import { createHash } from 'crypto';\nimport fs from 'fs-extra';\nimport { join } from 'path';\n\nexport async function hashFile(filePath: string): Promise<string> {\n    const content = await fs.readFile(filePath);\n    return createHash('md5').update(content).digest('hex');\n}\n\nexport async function hashDirectory(dirPath: string): Promise<string> {\n    if (!(await fs.pathExists(dirPath))) return '';\n    const stats = await fs.stat(dirPath);\n\n    if (!stats.isDirectory()) {\n        return hashFile(dirPath);\n    }\n\n    const children = await fs.readdir(dirPath);\n    const childHashes = await Promise.all(\n        children.sort().map(async (child) => {\n            const h = await hashDirectory(join(dirPath, child));\n            return `${child}:${h}`;\n        })\n    );\n    return createHash('md5').update(childHashes.join('|')).digest('hex');\n}\n\nexport async function getNewestMtime(targetPath: string): Promise<number> {\n    if (!(await fs.pathExists(targetPath))) return 0;\n\n    const stats = await fs.stat(targetPath);\n    let maxTime = 0;\n\n    if (stats.isDirectory()) {\n        const children = await fs.readdir(targetPath);\n        for (const child of children) {\n            const childTime = await getNewestMtime(join(targetPath, child));\n            if (childTime > maxTime) maxTime = childTime;\n        }\n    }\n    return maxTime;\n}\n","import { join } from 'path';\nimport { ToolAdapter, type AdapterCapabilities } from './base.js';\n\nexport class ClaudeAdapter extends ToolAdapter {\n    readonly toolName = 'claude-code';\n    readonly displayName = 'Claude Code';\n    readonly config: { tool: string; baseDir: string; displayName: string };\n\n    constructor(baseDir: string) {\n        super();\n        this.config = { tool: this.toolName, baseDir, displayName: this.displayName };\n    }\n\n    getConfigDir(): string {\n        return this.config.baseDir;\n    }\n\n    getSkillsDir(): string {\n        return join(this.config.baseDir, 'skills');\n    }\n\n    getHooksDir(): string {\n        return join(this.config.baseDir, 'hooks');\n    }\n\n    getCommandsDir(): string {\n        return join(this.config.baseDir, 'commands'); // Though Claude doesn't strictly use bare commands like Gemini\n    }\n\n    getCapabilities(): AdapterCapabilities {\n        return {\n            skills: true,\n            hooks: true,\n            mcp: true,\n            commands: false, // Claude uses Skills instead of Slash Commands natively\n        };\n    }\n}\n","import type { Skill, MCPServer, Hook, Command } from '../types/models.js';\n\nexport interface AdapterCapabilities {\n    skills: boolean;\n    hooks: boolean;\n    mcp: boolean;\n    commands: boolean;\n}\n\nexport interface AdapterConfig {\n    tool: string;\n    baseDir: string;\n    displayName: string;\n}\n\nexport abstract class ToolAdapter {\n    abstract readonly toolName: string;\n    abstract readonly displayName: string;\n    abstract readonly config: AdapterConfig;\n\n    // Capabilities\n    abstract getCapabilities(): AdapterCapabilities;\n\n    // Paths\n    abstract getConfigDir(): string;\n    abstract getSkillsDir(): string;\n    abstract getHooksDir(): string;\n    abstract getCommandsDir(): string;\n}\n","import { ToolAdapter } from './base.js';\nimport { ClaudeAdapter } from './claude.js';\n\n/**\n * Adapter registry for Claude Code only.\n * \n * ARCHITECTURAL DECISION (v2.0.0): xtrm-tools now supports Claude Code exclusively.\n * Gemini and Qwen adapters were removed due to fragile, undocumented hook ecosystems.\n * See PROJECT-SKILLS-ARCHITECTURE.md Section 3.1 for details.\n */\n\nexport function detectAdapter(systemRoot: string): ToolAdapter | null {\n    // Windows compatibility: Normalize backslashes before matching paths\n    const normalized = systemRoot.replace(/\\\\/g, '/').toLowerCase();\n\n    if (normalized.includes('.claude') || normalized.includes('/claude')) {\n        return new ClaudeAdapter(systemRoot);\n    }\n\n    return null;\n}\n","import { spawnSync } from 'node:child_process';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nexport type BdAutoStageConfigState = 'not-applicable' | 'already-disabled' | 'updated';\nexport type BdAutoStageHookState = 'not-applicable' | 'already-present' | 'updated' | 'misconfigured-hooks-path';\n\nexport interface BdAutoStagePatchResult {\n  changed: boolean;\n  config: BdAutoStageConfigState;\n  hook: BdAutoStageHookState;\n  hookPath?: string;\n  warnings: string[];\n}\n\nconst STAGE_COMMAND = 'git add -f .beads/issues.jsonl 2>/dev/null || true';\nconst STAGE_BLOCK = `# --- BEGIN XTRM bd auto-stage snapshot ---\n# Keep bd export.git-add=false for quiet mid-work bd ops, then stage the\n# freshly exported JSONL snapshot at commit time. This block lives outside\n# bd-managed hook markers so bd hooks install/upgrade will not clobber it.\n${STAGE_COMMAND}\n# --- END XTRM bd auto-stage snapshot ---`;\n\nfunction parseYamlObject(raw: string): Record<string, unknown> {\n  const parsed = raw.trim() ? yaml.parse(raw) : {};\n  if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return {};\n  return parsed as Record<string, unknown>;\n}\n\nasync function ensureExportGitAddDisabled(repoRoot: string, apply: boolean): Promise<{ changed: boolean; state: BdAutoStageConfigState }> {\n  const beadsDir = path.join(repoRoot, '.beads');\n  if (!await fs.pathExists(beadsDir)) return { changed: false, state: 'not-applicable' };\n\n  const configPath = path.join(beadsDir, 'config.yaml');\n  const raw = await fs.pathExists(configPath) ? await fs.readFile(configPath, 'utf8') : '';\n  const config = parseYamlObject(raw);\n\n  if (config['export.git-add'] === false) return { changed: false, state: 'already-disabled' };\n  if (!apply) return { changed: true, state: 'updated' };\n\n  await fs.ensureDir(beadsDir);\n  await fs.writeFile(configPath, yaml.stringify({ ...config, 'export.git-add': false }), 'utf8');\n  return { changed: true, state: 'updated' };\n}\n\nfunction gitOutput(repoRoot: string, args: string[]): string | null {\n  const result = spawnSync('git', args, {\n    cwd: repoRoot,\n    encoding: 'utf8',\n    stdio: 'pipe',\n    timeout: 5000,\n  });\n  if (result.status !== 0) return null;\n  return (result.stdout ?? '').trim();\n}\n\nfunction resolveHookPath(repoRoot: string): { hookPath?: string; warning?: string } {\n  const hooksPath = gitOutput(repoRoot, ['config', '--get', 'core.hooksPath']);\n  const normalizedHooksPath = hooksPath?.replace(/\\\\/g, '/').replace(/\\/$/, '');\n\n  if (hooksPath) {\n    const hooksDir = path.isAbsolute(hooksPath) ? hooksPath : path.join(repoRoot, hooksPath);\n    const hookPath = path.join(hooksDir, 'pre-commit');\n    if (normalizedHooksPath && (normalizedHooksPath === '.beads/hooks' || normalizedHooksPath.endsWith('/.beads/hooks'))) {\n      if (fs.existsSync(hookPath)) return { hookPath };\n      return {\n        warning: `core.hooksPath points at ${hooksPath}, but no pre-commit hook exists there`,\n      };\n    }\n    return { hookPath };\n  }\n\n  const gitCommonDirRaw = gitOutput(repoRoot, ['rev-parse', '--git-common-dir']);\n  if (!gitCommonDirRaw) return { warning: 'could not resolve git hooks directory' };\n  const gitCommonDir = path.isAbsolute(gitCommonDirRaw)\n    ? gitCommonDirRaw\n    : path.join(repoRoot, gitCommonDirRaw);\n  return { hookPath: path.join(gitCommonDir, 'hooks', 'pre-commit') };\n}\n\nasync function ensureStageShim(repoRoot: string, apply: boolean): Promise<{ changed: boolean; state: BdAutoStageHookState; hookPath?: string; warnings: string[] }> {\n  if (!await fs.pathExists(path.join(repoRoot, '.beads'))) {\n    return { changed: false, state: 'not-applicable', warnings: [] };\n  }\n\n  const resolved = resolveHookPath(repoRoot);\n  if (!resolved.hookPath) {\n    return { changed: false, state: 'misconfigured-hooks-path', warnings: [resolved.warning ?? 'could not resolve git hooks directory'] };\n  }\n\n  const existing = await fs.pathExists(resolved.hookPath) ? await fs.readFile(resolved.hookPath, 'utf8') : '';\n  if (existing.includes(STAGE_COMMAND)) {\n    return { changed: false, state: 'already-present', hookPath: resolved.hookPath, warnings: [] };\n  }\n\n  if (!apply) {\n    return { changed: true, state: 'updated', hookPath: resolved.hookPath, warnings: [] };\n  }\n\n  const base = existing.trim().length > 0\n    ? existing.replace(/\\s*$/, '\\n\\n')\n    : '#!/usr/bin/env sh\\n';\n  await fs.ensureDir(path.dirname(resolved.hookPath));\n  await fs.writeFile(resolved.hookPath, `${base}${STAGE_BLOCK}\\n`, 'utf8');\n  await fs.chmod(resolved.hookPath, 0o755);\n  return { changed: true, state: 'updated', hookPath: resolved.hookPath, warnings: [] };\n}\n\nexport async function ensureBdAutoStagePatch(repoRoot: string, apply: boolean): Promise<BdAutoStagePatchResult> {\n  const config = await ensureExportGitAddDisabled(repoRoot, apply);\n  const hook = await ensureStageShim(repoRoot, apply);\n\n  return {\n    changed: config.changed || hook.changed,\n    config: config.state,\n    hook: hook.state,\n    hookPath: hook.hookPath,\n    warnings: hook.warnings,\n  };\n}\n\nexport function summarizeBdAutoStagePatch(result: BdAutoStagePatchResult): string {\n  const parts = [`bd export.git-add: ${result.config}`, `pre-commit shim: ${result.hook}`];\n  if (result.hookPath) parts.push(`hook=${result.hookPath}`);\n  if (result.warnings.length > 0) parts.push(`warnings=${result.warnings.length}`);\n  return parts.join(', ');\n}\n","import { spawnSync } from 'node:child_process';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport kleur from 'kleur';\n\nexport type MaintenanceState = 'current' | 'outdated' | 'missing' | 'unknown' | 'checked' | 'updated' | 'failed' | 'skipped';\n\nexport interface ToolMaintenanceStatus {\n  id: 'bd' | 'gitnexus';\n  cli: string;\n  packageName: string;\n  installedVersion?: string;\n  latestVersion?: string;\n  state: MaintenanceState;\n  majorUpgrade: boolean;\n  message?: string;\n}\n\nexport interface DependencyMaintenanceSummary {\n  tools: ToolMaintenanceStatus[];\n  bdDoctor: {\n    state: MaintenanceState;\n    message?: string;\n  };\n  gitnexusIndex: {\n    state: MaintenanceState;\n    message?: string;\n  };\n}\n\nconst TOOLS = [\n  { id: 'bd' as const, cli: 'bd', packageName: '@beads/bd', versionArgs: ['--version'] },\n  { id: 'gitnexus' as const, cli: 'gitnexus', packageName: 'gitnexus', versionArgs: ['--version'] },\n];\n\nfunction run(command: string, args: string[], cwd: string, timeout = 10000): ReturnType<typeof spawnSync> {\n  return spawnSync(command, args, {\n    cwd,\n    encoding: 'utf8',\n    stdio: 'pipe',\n    timeout,\n  });\n}\n\nfunction extractVersion(text: string): string | undefined {\n  return text.match(/\\d+\\.\\d+\\.\\d+(?:[-+][0-9A-Za-z.-]+)?/)?.[0];\n}\n\nfunction major(version?: string): number | undefined {\n  if (!version) return undefined;\n  const parsed = Number(version.split('.')[0]);\n  return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction compareVersions(installed?: string, latest?: string): { state: MaintenanceState; majorUpgrade: boolean } {\n  if (!installed) return { state: 'missing', majorUpgrade: false };\n  if (!latest) return { state: 'unknown', majorUpgrade: false };\n  if (installed === latest) return { state: 'current', majorUpgrade: false };\n\n  const installedMajor = major(installed);\n  const latestMajor = major(latest);\n  return {\n    state: installed === latest ? 'current' : 'outdated',\n    majorUpgrade: installedMajor !== undefined && latestMajor !== undefined && latestMajor > installedMajor,\n  };\n}\n\nconst latestVersionCache = new Map<string, string | undefined>();\n\nfunction latestPackageVersion(packageName: string, cwd: string): string | undefined {\n  if (latestVersionCache.has(packageName)) return latestVersionCache.get(packageName);\n  const latest = run('npm', ['view', packageName, 'version'], cwd, 5000);\n  const version = latest.status === 0 ? extractVersion(String(latest.stdout ?? '')) : undefined;\n  latestVersionCache.set(packageName, version);\n  return version;\n}\n\nfunction checkTool(tool: typeof TOOLS[number], cwd: string): ToolMaintenanceStatus {\n  const installed = run(tool.cli, tool.versionArgs, cwd, 5000);\n  const installedVersion = installed.status === 0\n    ? extractVersion(`${installed.stdout ?? ''}\\n${installed.stderr ?? ''}`)\n    : undefined;\n\n  const latestVersion = latestPackageVersion(tool.packageName, cwd);\n  const comparison = compareVersions(installedVersion, latestVersion);\n\n  return {\n    id: tool.id,\n    cli: tool.cli,\n    packageName: tool.packageName,\n    installedVersion,\n    latestVersion,\n    state: comparison.state,\n    majorUpgrade: comparison.majorUpgrade,\n    message: latestVersion ? undefined : 'latest version lookup unavailable',\n  };\n}\n\n\nfunction upgradeTool(tool: ToolMaintenanceStatus, cwd: string): ToolMaintenanceStatus {\n  if (tool.state !== 'missing' && tool.state !== 'outdated') return tool;\n  if (tool.majorUpgrade) {\n    return { ...tool, state: 'skipped', message: 'major upgrade requires operator confirmation' };\n  }\n\n  const install = run('npm', ['install', '-g', tool.packageName], cwd, 120000);\n  if (install.status !== 0) {\n    return {\n      ...tool,\n      state: 'failed',\n      message: `${install.stderr || install.stdout || `npm install exited ${install.status}`}`.trim(),\n    };\n  }\n\n  const refreshed = TOOLS.find(candidate => candidate.id === tool.id);\n  return refreshed ? checkTool(refreshed, cwd) : { ...tool, state: 'updated' };\n}\n\nfunction runBdDoctor(repoRoot: string, apply: boolean): DependencyMaintenanceSummary['bdDoctor'] {\n  if (!fs.pathExistsSync(path.join(repoRoot, '.beads'))) return { state: 'skipped', message: 'no .beads directory' };\n  const args = apply ? ['doctor', '--fix', '--yes'] : ['doctor', '--dry-run'];\n  const result = run('bd', args, repoRoot, 30000);\n  if (result.error) return { state: 'failed', message: result.error.message };\n  if (result.status === 0) return { state: apply ? 'updated' : 'checked' };\n  return {\n    state: 'failed',\n    message: `${result.stderr || result.stdout || `bd doctor exited ${result.status}`}`.trim(),\n  };\n}\n\nfunction runGitNexusStatus(repoRoot: string, apply: boolean): DependencyMaintenanceSummary['gitnexusIndex'] {\n  const status = run('gitnexus', ['status'], repoRoot, 10000);\n  if (status.error) return { state: 'skipped', message: status.error.message };\n\n  const text = `${status.stdout ?? ''}\\n${status.stderr ?? ''}`.toLowerCase();\n  const needsAnalyze = status.status !== 0 || text.includes('stale') || text.includes('not indexed') || text.includes('missing') || text.includes('schema');\n  if (!needsAnalyze) return { state: 'current' };\n  if (!apply) return { state: 'outdated', message: 'GitNexus index needs analyze' };\n\n  const analyze = run('gitnexus', ['analyze'], repoRoot, 120000);\n  if (analyze.status === 0) return { state: 'updated' };\n  return {\n    state: 'failed',\n    message: `${analyze.stderr || analyze.stdout || `gitnexus analyze exited ${analyze.status}`}`.trim(),\n  };\n}\n\nexport async function runDependencyMaintenance(repoRoot: string, apply: boolean): Promise<DependencyMaintenanceSummary> {\n  const checkedTools = TOOLS.map(tool => checkTool(tool, repoRoot));\n  const tools = apply ? checkedTools.map(tool => upgradeTool(tool, repoRoot)) : checkedTools;\n  return {\n    tools,\n    bdDoctor: runBdDoctor(repoRoot, apply),\n    gitnexusIndex: runGitNexusStatus(repoRoot, apply),\n  };\n}\n\nexport function printDependencyMaintenanceSummary(summary: DependencyMaintenanceSummary): void {\n  console.log(kleur.bold('\\n  Dependency Maintenance'));\n  console.log(kleur.dim('  ' + '-'.repeat(50)));\n\n  for (const tool of summary.tools) {\n    const versions = [tool.installedVersion ?? 'missing', tool.latestVersion ? `latest ${tool.latestVersion}` : 'latest unknown'].join(' / ');\n    const major = tool.majorUpgrade ? ' (major upgrade requires operator confirmation)' : '';\n    console.log(`  ${tool.id.padEnd(8)} ${tool.state.padEnd(8)} ${kleur.dim(versions)}${kleur.yellow(major)}`);\n  }\n\n  console.log(`  ${'bd doctor'.padEnd(8)} ${summary.bdDoctor.state}${summary.bdDoctor.message ? kleur.dim(` — ${summary.bdDoctor.message}`) : ''}`);\n  console.log(`  ${'gitnexus'.padEnd(8)} ${summary.gitnexusIndex.state}${summary.gitnexusIndex.message ? kleur.dim(` — ${summary.gitnexusIndex.message}`) : ''}`);\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\n// @ts-ignore\nimport prompts from 'prompts';\nimport { getCandidatePaths } from '../core/context.js';\nimport { calculateDiff } from '../core/diff.js';\nimport { executeSync } from '../core/sync-executor.js';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { getManifestPath } from '../core/manifest.js';\nimport fs from 'fs-extra';\nimport path from 'path';\n// @ts-ignore\nimport Conf from 'conf';\n\nfunction formatTargetLabel(target: string): string {\n    const normalized = target.replace(/\\\\/g, '/').toLowerCase();\n    if (normalized.endsWith('/.xtrm') || normalized.includes('/.xtrm/')) return '.xtrm';\n    if (normalized.endsWith('/.claude') || normalized.includes('/.claude/')) return '~/.claude';\n    return path.basename(target);\n}\n\nfunction formatRelativeTime(timestamp: number): string {\n    const now = Date.now();\n    const diff = now - timestamp;\n\n    const minutes = Math.floor(diff / 60000);\n    const hours = Math.floor(diff / 3600000);\n    const days = Math.floor(diff / 86400000);\n\n    if (minutes < 1) return 'just now';\n    if (minutes < 60) return `${minutes} minute${minutes > 1 ? 's' : ''} ago`;\n    if (hours < 24) return `${hours} hour${hours > 1 ? 's' : ''} ago`;\n    return `${days} day${days > 1 ? 's' : ''} ago`;\n}\n\nexport function createStatusCommand(): Command {\n    return new Command('status')\n        .description('Show status and optionally sync target environments')\n        .option('--json', 'Output machine-readable JSON', false)\n        .option('--check', 'Non-interactive summary; never prompt', false)\n        .action(async (opts) => {\n            const { json, check } = opts;\n\n            const repoRoot = await findRepoRoot();\n\n            // Auto-detect all existing environments (no prompt needed for read-only view)\n            const candidates = getCandidatePaths();\n            const targets: string[] = [];\n            for (const c of candidates) {\n                if (await fs.pathExists(c.path)) targets.push(c.path);\n            }\n            if (targets.length === 0) {\n                console.log(kleur.yellow('\\n  No xtrm environments found (.xtrm target missing)\\n'));\n                return;\n            }\n\n            interface TargetStatus {\n                path: string;\n                name: string;\n                lastSync: string | null;\n                changes: Record<string, { missing: string[]; outdated: string[]; drifted: string[] }>;\n                totalChanges: number;\n            }\n\n            const results: TargetStatus[] = [];\n\n            for (const target of targets) {\n                const manifestPath = getManifestPath(target);\n                let lastSync: string | null = null;\n                try {\n                    if (await fs.pathExists(manifestPath)) {\n                        const manifest = await fs.readJson(manifestPath);\n                        if (manifest.lastSync) lastSync = manifest.lastSync;\n                    }\n                } catch { /* ignore */ }\n\n                const changeSet = await calculateDiff(repoRoot, target);\n                const totalChanges = Object.values(changeSet).reduce(\n                    (sum: number, c: any) => sum + c.missing.length + c.outdated.length + c.drifted.length, 0,\n                ) as number;\n\n                results.push({ path: target, name: formatTargetLabel(target), lastSync, changes: changeSet as any, totalChanges });\n            }\n\n            // ── JSON output ──────────────────────────────────────────────────\n            if (json) {\n                console.log(JSON.stringify({ targets: results }, null, 2));\n                return;\n            }\n\n            // ── Table output ─────────────────────────────────────────────────\n            // eslint-disable-next-line @typescript-eslint/no-var-requires\n            const Table = require('cli-table3');\n\n            const table = new Table({\n                head: [\n                    kleur.bold('Target'),\n                    kleur.bold(kleur.green('+ New')),\n                    kleur.bold(kleur.yellow('↑ Update')),\n                    kleur.bold(kleur.red('! Drift')),\n                    kleur.bold('Last Sync'),\n                ],\n                style: { head: [], border: [] },\n            });\n\n            for (const r of results) {\n                const missing  = Object.values(r.changes).reduce((s: number, c: any) => s + c.missing.length,  0) as number;\n                const outdated = Object.values(r.changes).reduce((s: number, c: any) => s + c.outdated.length, 0) as number;\n                const drifted  = Object.values(r.changes).reduce((s: number, c: any) => s + c.drifted.length,  0) as number;\n\n                const lastSyncStr = r.lastSync\n                    ? kleur.gray(formatRelativeTime(new Date(r.lastSync).getTime()))\n                    : kleur.gray('never');\n\n                table.push([\n                    r.totalChanges > 0 ? kleur.bold(r.name) : r.name,\n                    missing  > 0 ? kleur.green(String(missing))  : kleur.gray('—'),\n                    outdated > 0 ? kleur.yellow(String(outdated)) : kleur.gray('—'),\n                    drifted  > 0 ? kleur.red(String(drifted))    : kleur.gray('—'),\n                    lastSyncStr,\n                ]);\n            }\n\n            console.log('\\n' + table.toString());\n\n            const totalPending = results.reduce((s, r) => s + r.totalChanges, 0);\n\n            if (totalPending === 0) {\n                console.log(kleur.green('\\n  ✓ All environments up-to-date\\n'));\n                return;\n            }\n\n            const pending = results.filter(r => r.totalChanges > 0);\n            console.log(kleur.yellow(`\\n  ⚠  ${totalPending} pending change${totalPending !== 1 ? 's' : ''} across ${pending.length} environment${pending.length !== 1 ? 's' : ''}\\n`));\n\n            if (check || !process.stdin.isTTY) {\n                console.log(kleur.gray(\"  Skipped. Run 'xt sync' to apply.\\n\"));\n                return;\n            }\n\n            // ── Inline sync offer ────────────────────────────────────────────\n            const { selected } = await prompts({\n                type: 'multiselect',\n                name: 'selected',\n                message: 'Select environments to sync:',\n                choices: pending.map(r => ({\n                    title: `${r.name}  ${kleur.gray(`(${r.totalChanges} change${r.totalChanges !== 1 ? 's' : ''})`)}`,\n                    value: r.path,\n                    selected: true,\n                })),\n                hint: '- Space to toggle. Enter to confirm. Esc to skip.',\n                instructions: false,\n            });\n\n            if (!selected || selected.length === 0) {\n                console.log(kleur.gray('  Skipped. Run xtrm sync anytime to apply.\\n'));\n                return;\n            }\n\n            const toSync = pending.filter(r => selected.includes(r.path));\n\n            // Reuse the already-computed changeSets — no second diff needed\n            const store = new Conf({ projectName: 'xtrm-manager' });\n            const syncMode = (store.get('syncMode') as string) || 'copy';\n\n            let totalSynced = 0;\n            for (const r of toSync) {\n                console.log(kleur.bold(`\\n  → ${r.name}`));\n                const count = await executeSync(repoRoot, r.path, r.changes as any, syncMode as any, 'sync', false);\n                totalSynced += count;\n                console.log(kleur.green(`  ✓ ${count} item${count !== 1 ? 's' : ''} synced`));\n            }\n\n            console.log(kleur.bold().green(`\\n✓ Done — ${totalSynced} item${totalSynced !== 1 ? 's' : ''} synced\\n`));\n        });\n}\n","import path from 'path';\nimport fs from 'fs-extra';\nimport kleur from 'kleur';\nimport { safeMergeConfig } from '../utils/atomic-config.js';\nimport { ConfigAdapter } from '../utils/config-adapter.js';\nimport { syncMcpServersWithCli, loadCanonicalMcpConfig, detectAgent } from '../utils/sync-mcp-cli.js';\nimport { hashDirectory } from '../utils/hash.js';\nimport { createBackup, restoreBackup, cleanupBackup, type BackupInfo } from './rollback.js';\nimport type { ChangeSet } from '../types/config.js';\n\nconst LEGACY_BASH_ALLOWLISTS = new Set(['Bash(bd:*)', 'Bash(git:*)']);\nconst SAFE_BD_BASH_ALLOWLIST = [\n    'Bash(bd show:*)',\n    'Bash(bd list:*)',\n    'Bash(bd ready:*)',\n    'Bash(bd stats:*)',\n    'Bash(bd search:*)',\n    'Bash(bd prime:*)',\n    'Bash(bd memories:*)',\n    'Bash(bd recall:*)',\n];\nconst SAFE_GIT_BASH_ALLOWLIST = [\n    'Bash(git status:*)',\n    'Bash(git log:*)',\n    'Bash(git diff:*)',\n    'Bash(git show:*)',\n    'Bash(git fetch:*)',\n];\n\nasync function normalizeLegacyBashAllowlist(settingsPath: string, isDryRun: boolean): Promise<boolean> {\n    if (!(await fs.pathExists(settingsPath))) return false;\n\n    const settings = await fs.readJson(settingsPath);\n    const allow = settings?.permissions?.allow;\n    if (!Array.isArray(allow)) return false;\n\n    const hasLegacy = allow.some((entry: unknown) =>\n        typeof entry === 'string' && LEGACY_BASH_ALLOWLISTS.has(entry),\n    );\n    if (!hasLegacy) return false;\n\n    const filteredAllow = allow.filter((entry: unknown) =>\n        !(typeof entry === 'string' && LEGACY_BASH_ALLOWLISTS.has(entry)),\n    );\n\n    const safeEntries = [...SAFE_BD_BASH_ALLOWLIST, ...SAFE_GIT_BASH_ALLOWLIST];\n    for (const entry of safeEntries) {\n        if (!filteredAllow.includes(entry)) filteredAllow.push(entry);\n    }\n\n    if (isDryRun) {\n        console.log(kleur.dim('      (Would replace legacy Bash(bd:*)/Bash(git:*) allowlist entries)'));\n        return true;\n    }\n\n    settings.permissions.allow = filteredAllow;\n    await fs.writeJson(settingsPath, settings, { spaces: 2 });\n    console.log(kleur.dim('      (Replaced legacy Bash(bd:*)/Bash(git:*) allowlist entries)'));\n    return true;\n}\n\n/**\n * Sync MCP servers for a list of targets, once per unique agent type.\n * Call this explicitly before per-target file sync loops.\n */\nexport async function syncMcpForTargets(\n    repoRoot: string,\n    targets: string[],\n    isDryRun: boolean = false,\n    selectedMcpServers?: string[],\n): Promise<number> {\n    const synced = new Set<string>();\n    let count = 0;\n\n    for (const target of targets) {\n        const agent = detectAgent(target);\n        if (!agent || synced.has(agent)) continue;\n\n        const coreConfig = loadCanonicalMcpConfig(repoRoot);\n        const mcpToSync: any = { mcpServers: { ...coreConfig.mcpServers } };\n\n        if (selectedMcpServers && selectedMcpServers.length > 0) {\n            const optionalConfig = loadCanonicalMcpConfig(repoRoot, true);\n            for (const name of selectedMcpServers) {\n                if (optionalConfig.mcpServers[name]) {\n                    mcpToSync.mcpServers[name] = optionalConfig.mcpServers[name];\n                }\n            }\n        }\n\n        if (!isDryRun) {\n            await syncMcpServersWithCli(agent, mcpToSync, isDryRun, false);\n        } else {\n            console.log(kleur.cyan(`  [DRY RUN] MCP sync for ${agent}`));\n        }\n        synced.add(agent);\n        count++;\n    }\n\n    return count;\n}\n\n/**\n * Execute a sync plan based on changeset and mode\n */\n\nfunction extractHookCommandPath(command: string): string | null {\n    const quoted = command.match(/\"([^\"]+)\"/);\n    if (quoted?.[1]) return quoted[1];\n\n    const singleQuoted = command.match(/'([^']+)'/);\n    if (singleQuoted?.[1]) return singleQuoted[1];\n\n    const bare = command.trim().split(/\\s+/).slice(1).join(' ').trim();\n    return bare || null;\n}\n\nasync function filterHooksByInstalledScripts(hooksConfig: any): Promise<any> {\n    if (!hooksConfig || typeof hooksConfig !== 'object' || !hooksConfig.hooks) {\n        return hooksConfig;\n    }\n\n    for (const [event, wrappers] of Object.entries(hooksConfig.hooks)) {\n        if (!Array.isArray(wrappers)) continue;\n\n        const keptWrappers: any[] = [];\n        for (const wrapper of wrappers) {\n            if (!wrapper || !Array.isArray(wrapper.hooks)) continue;\n\n            const keptInner: any[] = [];\n            for (const inner of wrapper.hooks) {\n                const command = inner?.command;\n                if (typeof command !== 'string' || !command.trim()) continue;\n\n                const scriptPath = extractHookCommandPath(command);\n                if (!scriptPath) continue;\n\n                if (await fs.pathExists(scriptPath)) {\n                    keptInner.push(inner);\n                }\n            }\n\n            if (keptInner.length > 0) {\n                keptWrappers.push({ ...wrapper, hooks: keptInner });\n            }\n        }\n\n        hooksConfig.hooks[event] = keptWrappers;\n    }\n\n    return hooksConfig;\n}\n\nexport async function executeSync(\n    repoRoot: string,\n    systemRoot: string,\n    changeSet: ChangeSet,\n    mode: 'copy' | 'symlink' | 'prune',\n    actionType: 'sync' | 'backport',\n    isDryRun: boolean = false,\n    options?: { force?: boolean },\n): Promise<number> {\n    const categories: Array<keyof ChangeSet> = ['skills', 'hooks', 'config'];\n\n    let count = 0;\n    const adapter = new ConfigAdapter(systemRoot);\n    const backups: BackupInfo[] = [];\n    const newHashes: Record<string, string> = {};\n\n    try {\n\n        for (const category of categories) {\n            const itemsToProcess: string[] = [];\n\n            if (actionType === 'sync') {\n                const cat = changeSet[category] as any;\n                itemsToProcess.push(...cat.missing);\n                itemsToProcess.push(...cat.outdated);\n\n                if (options?.force) {\n                    itemsToProcess.push(...cat.drifted);\n                }\n\n                if (mode === 'prune') {\n                    for (const itemToDelete of cat.drifted || []) {\n                        const dest = path.join(systemRoot, category, itemToDelete);\n                        console.log(kleur.red(`  [x] PRUNING ${category}/${itemToDelete}`));\n                        if (!isDryRun) {\n                            if (await fs.pathExists(dest)) {\n                                backups.push(await createBackup(dest));\n                                await fs.remove(dest);\n                            }\n                        }\n                        count++;\n                    }\n                }\n            } else if (actionType === 'backport') {\n                const cat = changeSet[category] as any;\n                itemsToProcess.push(...cat.drifted);\n            }\n\n            for (const item of itemsToProcess) {\n                let src: string, dest: string;\n\n                if (category === 'config' && item === 'settings.json' && actionType === 'sync') {\n                    src = path.join(repoRoot, 'config', 'settings.json');\n                    dest = path.join(systemRoot, 'settings.json');\n\n                    console.log(kleur.gray(`  --> config/settings.json`));\n\n                    if (!isDryRun && await fs.pathExists(dest)) {\n                        backups.push(await createBackup(dest));\n                    }\n\n                    const repoConfig = await fs.readJson(src);\n                    let finalRepoConfig = resolveConfigPaths(repoConfig, systemRoot);\n\n                    const hooksSrc = path.join(repoRoot, 'config', 'hooks.json');\n                    if (await fs.pathExists(hooksSrc)) {\n                        const hooksRaw = await fs.readJson(hooksSrc);\n                        const hooksAdapted = await filterHooksByInstalledScripts(adapter.adaptHooksConfig(hooksRaw));\n                        if (hooksAdapted.hooks) {\n                            // hooks.json is the canonical source — replace template hooks entirely\n                            // hooks.json is canonical source — replace template hooks entirely\n                            finalRepoConfig.hooks = hooksAdapted.hooks;\n                            if (!isDryRun) console.log(kleur.dim(`      (Injected hooks)`));\n                        }\n                        if (hooksAdapted.statusLine) {\n                            finalRepoConfig.statusLine = hooksAdapted.statusLine;\n                        }\n                    }\n\n                    if (fs.existsSync(dest)) {\n                        const localConfig = await fs.readJson(dest);\n                        const resolvedLocalConfig = resolveConfigPaths(localConfig, systemRoot);\n\n                        if (mode === 'prune') {\n                            if (localConfig.mcpServers && finalRepoConfig.mcpServers) {\n                                const canonicalServers = new Set(Object.keys(finalRepoConfig.mcpServers));\n                                for (const serverName of Object.keys(localConfig.mcpServers)) {\n                                    if (!canonicalServers.has(serverName)) {\n                                        delete localConfig.mcpServers[serverName];\n                                        if (!isDryRun) console.log(kleur.red(`      (Pruned local MCP server: ${serverName})`));\n                                    }\n                                }\n                            }\n                        }\n\n                        if (mode === 'prune' && !isDryRun) {\n                            console.log(kleur.dim(`      (--prune: replacing canonical hook events wholesale)`));\n                        }\n\n                        const mergeResult = await safeMergeConfig(dest, finalRepoConfig, {\n                            backupOnSuccess: false,\n                            preserveComments: true,\n                            dryRun: isDryRun,\n                            resolvedLocalConfig: resolvedLocalConfig,\n                            pruneHooks: mode === 'prune',\n                        });\n\n                        if (mergeResult.updated) {\n                            console.log(kleur.blue(`      (Configuration safely merged)`));\n                        }\n\n                        await normalizeLegacyBashAllowlist(dest, isDryRun);\n                    } else {\n                        if (!isDryRun) {\n                            await fs.ensureDir(path.dirname(dest));\n                            await fs.writeJson(dest, finalRepoConfig, { spaces: 2 });\n                        }\n                        console.log(kleur.green(`      (Created new configuration)`));\n                    }\n                    count++;\n                    continue;\n                }\n\n                const repoPath = path.join(repoRoot, category);\n                const systemPath = path.join(systemRoot, category);\n\n                if (actionType === 'backport') {\n                    src = path.join(systemPath, item);\n                    dest = path.join(repoPath, item);\n                } else {\n                    src = path.join(repoPath, item);\n                    dest = path.join(systemPath, item);\n                }\n\n                console.log(kleur.gray(`  ${actionType === 'backport' ? '<--' : '-->'} ${category}/${item}`));\n\n                if (!isDryRun && actionType === 'sync' && await fs.pathExists(dest)) {\n                    backups.push(await createBackup(dest));\n                }\n\n                if (mode === 'symlink' && actionType === 'sync' && category !== 'config') {\n                    if (!isDryRun) {\n                        if (process.platform === 'win32') {\n                            console.log(kleur.yellow('  ⚠ Symlinks require Developer Mode on Windows — falling back to copy.'));\n                            await fs.remove(dest);\n                            await fs.copy(src, dest);\n                        } else {\n                            await fs.remove(dest);\n                            await fs.ensureSymlink(src, dest);\n                        }\n                    }\n                } else {\n                    if (!isDryRun) {\n                        await fs.remove(dest);\n                        await fs.copy(src, dest);\n                    }\n                }\n\n                // Record repo hash so future drift checks can distinguish\n                // \"user modified\" from \"repo updated\" without relying on mtime\n                if (!isDryRun && actionType === 'sync') {\n                    newHashes[`${category}/${item}`] = await hashDirectory(src);\n                }\n\n                count++;\n            }\n        }\n\n        if (!isDryRun && actionType === 'sync') {\n            const manifestPath = path.join(systemRoot, '.jaggers-sync-manifest.json');\n            const existing = await fs.pathExists(manifestPath)\n                ? await fs.readJson(manifestPath)\n                : {};\n            await fs.writeJson(manifestPath, {\n                ...existing,\n                lastSync: new Date().toISOString(),\n                repoRoot,\n                items: count,\n                fileHashes: { ...(existing.fileHashes ?? {}), ...newHashes },\n            }, { spaces: 2 });\n        }\n\n        for (const backup of backups) {\n            await cleanupBackup(backup);\n        }\n\n        return count;\n\n    } catch (error: any) {\n        console.error(kleur.red(`\\nSync failed, rolling back ${backups.length} changes...`));\n        for (const backup of backups) {\n            try {\n                await restoreBackup(backup);\n            } finally {\n                await cleanupBackup(backup);\n            }\n        }\n        throw error;\n    }\n}\n\n\n\nfunction resolveConfigPaths(config: any, targetDir: string): any {\n    const newConfig = JSON.parse(JSON.stringify(config));\n\n    function recursiveReplace(obj: any) {\n        for (const key in obj) {\n            if (typeof obj[key] === 'string') {\n                let val = obj[key];\n                // Resolve $HOME and ~ to actual home directory for comparison\n                // but only match absolute paths, not env-var paths like \"$HOME/...\"\n                if (!val.startsWith('$') && !val.startsWith('~')) {\n                    if (val.match(/\\/[^\\s\"']+\\/hooks\\//)) {\n                        const hooksDir = path.join(targetDir, 'hooks');\n                        let replacementDir = `${hooksDir}/`;\n                        if (process.platform === 'win32') {\n                            replacementDir = replacementDir.replace(/\\\\/g, '/');\n                        }\n                        obj[key] = val.replace(/(\\/[^\\s\"']+\\/hooks\\/)/g, replacementDir);\n                    }\n                }\n            } else if (typeof obj[key] === 'object' && obj[key] !== null) {\n                recursiveReplace(obj[key]);\n            }\n        }\n    }\n\n    recursiveReplace(newConfig);\n    return newConfig;\n}\n","import { randomUUID } from 'node:crypto';\nimport fs from 'fs-extra';\n// @ts-ignore\nimport { parse, stringify } from 'comment-json';\n\n/**\n * Atomic Configuration Handler with Vault Pattern\n * Ensures safe read/write operations with protection against corruption during crashes\n */\n\n// Protected keys that should never be overwritten if they exist locally\nconst PROTECTED_KEYS = [\n    'permissions.allow',       // User-defined permissions\n    'hooks.UserPromptSubmit',  // Claude hooks\n    'hooks.SessionStart',\n    'hooks.PreToolUse',\n    'hooks.BeforeAgent',       // Gemini hooks\n    'hooks.BeforeTool',        // Gemini hooks\n    'security',                // Auth secrets/OAuth data\n    'general',                 // Personal preferences\n    'enabledPlugins',          // User-enabled/disabled plugins\n    'model',                   // User's preferred model\n    'skillSuggestions.enabled' // User preferences\n];\n\n/**\n * Check if a key path is exactly protected or a parent of a protected key\n */\nexport function isProtectedPath(keyPath: string): boolean {\n    return PROTECTED_KEYS.some(protectedPath =>\n        keyPath === protectedPath || protectedPath.startsWith(keyPath + '.')\n    );\n}\n\n/**\n * Check if a key path is a protected key or a child of a protected key\n */\nexport function isValueProtected(keyPath: string): boolean {\n    return PROTECTED_KEYS.some(protectedPath =>\n        keyPath === protectedPath || keyPath.startsWith(protectedPath + '.')\n    );\n}\n\nfunction extractHookCommands(wrapper: any): string[] {\n    if (!wrapper || !Array.isArray(wrapper.hooks)) return [];\n    return wrapper.hooks\n        .map((h: any) => h?.command)\n        .filter((c: any): c is string => typeof c === 'string' && c.trim().length > 0);\n}\n\nfunction commandKey(command: string): string {\n    const m = command.match(/([A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))(?!.*[A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))/);\n    return m?.[1] || command.trim();\n}\n\n/**\n * Extract script filename from a hook command for pruning purposes.\n */\nfunction scriptKey(command: string): string | null {\n    // Match the script path relative to hooks directory\n    // Pattern: /hooks/<optional-subdir>/<filename>.<ext>\n    const m = command.match(/\\/hooks\\/([A-Za-z0-9_/-]+\\.(?:py|cjs|mjs|js))/);\n    if (m) return m[1];\n\n    // Fallback: match just the filename if no /hooks/ path\n    const m2 = command.match(/([A-Za-z0-9_-]+\\.(?:py|cjs|mjs|js))(?!.*[A-Za-z0-9._-]+\\.(?:py|cjs|mjs|js))/);\n    return m2?.[1] || null;\n}\n\n/**\n * Collect all canonical script filenames from incoming hooks.\n */\nfunction collectCanonicalScripts(incomingHooks: any): Set<string> {\n    const scripts = new Set<string>();\n    if (!incomingHooks || typeof incomingHooks !== 'object') return scripts;\n\n    for (const wrappers of Object.values(incomingHooks)) {\n        if (!Array.isArray(wrappers)) continue;\n        for (const wrapper of wrappers) {\n            const commands = extractHookCommands(wrapper);\n            for (const cmd of commands) {\n                const script = scriptKey(cmd);\n                if (script) scripts.add(script);\n            }\n        }\n    }\n    return scripts;\n}\n\n/**\n * Prune existing hook wrappers that reference scripts NOT in canonical set.\n * Returns { pruned: wrappers[], removed: string[] }\n */\nfunction pruneStaleWrappers(existing: any[], canonicalScripts: Set<string>): { pruned: any[]; removed: string[] } {\n    if (canonicalScripts.size === 0) {\n        return { pruned: existing, removed: [] };\n    }\n\n    const removed: string[] = [];\n    const pruned: any[] = [];\n\n    for (const wrapper of existing) {\n        if (!Array.isArray(wrapper.hooks)) {\n            pruned.push(wrapper);\n            continue;\n        }\n\n        const keptHooks: any[] = [];\n        for (const hook of wrapper.hooks) {\n            const cmd = hook?.command;\n            if (typeof cmd !== 'string') {\n                keptHooks.push(hook);\n                continue;\n            }\n            // Only prune hooks that are clearly xtrm-managed (have /hooks/ in their path)\n            // User-local hooks from other directories are always preserved\n            const isXtrmManaged = /\\/hooks\\//.test(cmd);\n            if (!isXtrmManaged) {\n                keptHooks.push(hook);\n                continue;\n            }\n            const script = scriptKey(cmd);\n            // Keep if: no script (not a file-based hook) OR script is in canonical set\n            if (!script || canonicalScripts.has(script)) {\n                keptHooks.push(hook);\n            } else {\n                removed.push(script);\n            }\n        }\n\n        if (keptHooks.length > 0) {\n            pruned.push({ ...wrapper, hooks: keptHooks });\n        }\n    }\n\n    return { pruned, removed };\n}\n\nfunction mergeMatcher(existingMatcher: string, incomingMatcher: string): string {\n    const parts = [\n        ...existingMatcher.split('|').map((s: string) => s.trim()),\n        ...incomingMatcher.split('|').map((s: string) => s.trim()),\n    ].filter(Boolean);\n    return Array.from(new Set(parts)).join('|');\n}\n\nfunction mergeHookWrappers(existing: any[], incoming: any[]): any[] {\n    const merged = existing.map((w: any) => ({ ...w }));\n\n    for (const incomingWrapper of incoming) {\n        const incomingCommands = extractHookCommands(incomingWrapper);\n        if (incomingCommands.length === 0) {\n            merged.push(incomingWrapper);\n            continue;\n        }\n\n        const incomingKeys = new Set(incomingCommands.map(commandKey));\n        const incomingTokens = new Set(\n            typeof incomingWrapper.matcher === 'string'\n                ? incomingWrapper.matcher.split('|').map((s: string) => s.trim()).filter(Boolean)\n                : [],\n        );\n\n        const existingIndex = merged.findIndex((existingWrapper: any) => {\n            const existingCommands = extractHookCommands(existingWrapper);\n            if (!existingCommands.some((c: string) => incomingKeys.has(commandKey(c)))) return false;\n\n            // Only merge with entries whose matchers overlap (share at least one token).\n            // Disjoint matchers (e.g. \"Write|Edit\" vs \"Bash\") intentionally serve\n            // different purposes and must remain as separate entries.\n            if (\n                typeof existingWrapper.matcher === 'string' &&\n                typeof incomingWrapper.matcher === 'string' &&\n                incomingTokens.size > 0\n            ) {\n                const existingTokens = existingWrapper.matcher\n                    .split('|').map((s: string) => s.trim()).filter(Boolean);\n                const hasOverlap = existingTokens.some((t: string) => incomingTokens.has(t));\n                if (!hasOverlap) return false;\n            }\n\n            return true;\n        });\n\n        if (existingIndex === -1) {\n            merged.push(incomingWrapper);\n            continue;\n        }\n\n        const existingWrapper = merged[existingIndex];\n        if (\n            typeof existingWrapper.matcher === 'string' &&\n            typeof incomingWrapper.matcher === 'string'\n        ) {\n            existingWrapper.matcher = mergeMatcher(existingWrapper.matcher, incomingWrapper.matcher);\n        }\n\n        if (Array.isArray(existingWrapper.hooks) && Array.isArray(incomingWrapper.hooks)) {\n            const existingByKey = new Set(existingWrapper.hooks\n                .map((h: any) => h?.command)\n                .filter((c: any): c is string => typeof c === 'string')\n                .map(commandKey));\n            for (const hook of incomingWrapper.hooks) {\n                const cmd = hook?.command;\n                if (typeof cmd !== 'string' || !existingByKey.has(commandKey(cmd))) {\n                    existingWrapper.hooks.push(hook);\n                }\n            }\n        }\n    }\n\n    return merged;\n}\n\n/**\n * Prune mode: replace xtrm-managed wrappers wholesale with canonical ones.\n * Wrappers whose commands do NOT reference ~/.claude/hooks/ (user-local) are always preserved.\n */\nfunction replaceHooksObject(existingHooks: any, incomingHooks: any): any {\n    const result: any = {};\n    const canonicalScripts = collectCanonicalScripts(incomingHooks);\n\n    // Events only in existing: prune xtrm-managed entries, keep user-local\n    for (const [event, existingWrappers] of Object.entries(existingHooks || {})) {\n        if (!Array.isArray(existingWrappers)) { result[event] = existingWrappers; continue; }\n        if (event in (incomingHooks || {})) continue; // handled below\n        const { pruned } = pruneStaleWrappers(existingWrappers, canonicalScripts);\n        if (pruned.length > 0) result[event] = pruned;\n    }\n\n    // Events in incoming: use canonical wrappers + preserve user-local wrappers\n    for (const [event, incomingWrappers] of Object.entries(incomingHooks || {})) {\n        const existingWrappers: any[] = Array.isArray(existingHooks?.[event]) ? existingHooks[event] : [];\n        const userLocal = existingWrappers.filter((wrapper: any) => {\n            if (!Array.isArray(wrapper.hooks)) return true;\n            return wrapper.hooks.every((h: any) => {\n                const cmd = h?.command;\n                return typeof cmd !== 'string' || !/\\/hooks\\//.test(cmd);\n            });\n        });\n        result[event] = [...(Array.isArray(incomingWrappers) ? incomingWrappers : []), ...userLocal];\n    }\n\n    return result;\n}\n\nfunction mergeHooksObject(existingHooks: any, incomingHooks: any): any {\n    // Step 1: Collect canonical script filenames from incoming hooks\n    const canonicalScripts = collectCanonicalScripts(incomingHooks);\n\n    // Step 2: Prune existing hooks that reference non-canonical scripts\n    const result: any = {};\n    for (const [event, existingWrappers] of Object.entries(existingHooks || {})) {\n        if (!Array.isArray(existingWrappers)) {\n            result[event] = existingWrappers;\n            continue;\n        }\n        const { pruned } = pruneStaleWrappers(existingWrappers, canonicalScripts);\n        if (pruned.length > 0) {\n            result[event] = pruned;\n        }\n    }\n\n    // Step 3: Merge incoming hooks with pruned existing hooks\n    for (const [event, incomingWrappers] of Object.entries(incomingHooks || {})) {\n        const existingWrappers = Array.isArray(result[event]) ? result[event] : [];\n        const incomingArray = Array.isArray(incomingWrappers) ? incomingWrappers : [];\n        result[event] = mergeHookWrappers(existingWrappers, incomingArray);\n    }\n    return result;\n}\n\n/**\n * Deep merge two objects, preserving protected values from the original\n */\nexport function deepMergeWithProtection(original: any, updates: any, currentPath: string = '', opts: { pruneHooks?: boolean } = {}): any {\n    const result = { ...original };\n\n    for (const [key, value] of Object.entries(updates)) {\n        const keyPath = currentPath ? `${currentPath}.${key}` : key;\n\n        // Hooks: merge by command identity normally; in prune mode replace xtrm-managed wrappers wholesale.\n        if (\n            key === 'hooks' &&\n            typeof value === 'object' &&\n            value !== null &&\n            typeof original[key] === 'object' &&\n            original[key] !== null\n        ) {\n            result[key] = opts.pruneHooks\n                ? replaceHooksObject(original[key], value)\n                : mergeHooksObject(original[key], value);\n            continue;\n        }\n\n        // If this specific value is protected and exists locally, skip it\n        if (isValueProtected(keyPath) && original.hasOwnProperty(key)) {\n            continue;\n        }\n\n        // Special handling for mcpServers: merge individual server entries\n        if (key === 'mcpServers' && typeof value === 'object' && value !== null &&\n            typeof original[key] === 'object' && original[key] !== null) {\n\n            result[key] = { ...original[key] }; // Start with original servers\n\n            // Add servers from updates that don't exist in original\n            for (const [serverName, serverConfig] of Object.entries(value)) {\n                if (!result[key].hasOwnProperty(serverName)) {\n                    result[key][serverName] = serverConfig;\n                }\n            }\n        } else if (\n            typeof value === 'object' &&\n            value !== null &&\n            !Array.isArray(value) &&\n            typeof original[key] === 'object' &&\n            original[key] !== null &&\n            !Array.isArray(original[key])\n        ) {\n            // Recursively merge nested objects\n            result[key] = deepMergeWithProtection(original[key], value, keyPath, opts);\n        } else {\n            // Overwrite with new value for non-protected keys\n            result[key] = value;\n        }\n    }\n\n    return result;\n}\n\ninterface AtomicWriteOptions {\n    preserveComments?: boolean;\n    backupOnSuccess?: boolean;\n    backupSuffix?: string;\n}\n\n/**\n * Atomically write data to a file using a temporary file\n */\nexport async function atomicWrite(filePath: string, data: any, options: AtomicWriteOptions = {}): Promise<void> {\n    const {\n        preserveComments = false,\n        backupOnSuccess = false,\n        backupSuffix = '.bak'\n    } = options;\n\n    const tempFilePath = `${filePath}.tmp.${randomUUID()}`;\n\n    try {\n        let content: string;\n        if (preserveComments) {\n            content = stringify(data, null, 2);\n        } else {\n            content = JSON.stringify(data, null, 2);\n        }\n\n        await fs.writeFile(tempFilePath, content, 'utf8');\n\n        const tempStats = await fs.stat(tempFilePath);\n        if (tempStats.size === 0) {\n            throw new Error('Temporary file is empty - write failed');\n        }\n\n        if (backupOnSuccess && await fs.pathExists(filePath)) {\n            const backupPath = `${filePath}${backupSuffix}`;\n            await fs.copy(filePath, backupPath);\n        }\n\n        await fs.rename(tempFilePath, filePath);\n    } catch (error) {\n        try {\n            if (await fs.pathExists(tempFilePath)) {\n                await fs.unlink(tempFilePath);\n            }\n        } catch (cleanupError) { }\n        throw error;\n    }\n}\n\n/**\n * Safely read a JSON configuration file with error handling\n */\nexport async function safeReadConfig(filePath: string): Promise<any> {\n    try {\n        if (!(await fs.pathExists(filePath))) {\n            return {};\n        }\n\n        const content = await fs.readFile(filePath, 'utf8');\n\n        try {\n            return parse(content);\n        } catch (parseError) {\n            return JSON.parse(content);\n        }\n    } catch (error: any) {\n        if (error.code === 'ENOENT') return {};\n        throw new Error(`Failed to read config file: ${error.message}`);\n    }\n}\n\ninterface MergeOptions {\n    preserveComments?: boolean;\n    backupOnSuccess?: boolean;\n    dryRun?: boolean;\n    resolvedLocalConfig?: any;\n    pruneHooks?: boolean;\n}\n\nexport interface MergeResult {\n    updated: boolean;\n    changes: string[];\n}\n\n/**\n * Perform a safe merge of repository config with local config\n */\nexport async function safeMergeConfig(localConfigPath: string, repoConfig: any, options: MergeOptions = {}): Promise<MergeResult> {\n    const {\n        preserveComments = true,\n        backupOnSuccess = true,\n        dryRun = false,\n        resolvedLocalConfig = null,\n        pruneHooks = false,\n    } = options;\n\n    const localConfig = resolvedLocalConfig || await safeReadConfig(localConfigPath);\n    const changes: string[] = [];\n\n    if (localConfig.mcpServers && typeof localConfig.mcpServers === 'object') {\n        const localServerNames = Object.keys(localConfig.mcpServers);\n        if (localServerNames.length > 0) {\n            changes.push(`Preserved ${localServerNames.length} local mcpServers: ${localServerNames.join(', ')}`);\n        }\n    }\n\n    if (repoConfig.mcpServers && typeof repoConfig.mcpServers === 'object') {\n        const repoServerNames = Object.keys(repoConfig.mcpServers);\n        const newServerNames = repoServerNames.filter(name =>\n            !localConfig.mcpServers || !localConfig.mcpServers.hasOwnProperty(name)\n        );\n\n        if (newServerNames.length > 0) {\n            changes.push(`Added ${newServerNames.length} new non-conflicting mcpServers from repository: ${newServerNames.join(', ')}`);\n        }\n    }\n\n    const mergedConfig = deepMergeWithProtection(localConfig, repoConfig, '', { pruneHooks });\n    const configsAreEqual = JSON.stringify(localConfig) === JSON.stringify(mergedConfig);\n\n    if (!configsAreEqual && !dryRun) {\n        await atomicWrite(localConfigPath, mergedConfig, {\n            preserveComments,\n            backupOnSuccess\n        });\n    }\n\n    return {\n        updated: !configsAreEqual,\n        changes\n    };\n}\n\nexport function getProtectedKeys(): string[] {\n    return [...PROTECTED_KEYS];\n}\n","import path from 'path';\nimport os from 'os';\n\n/**\n * ConfigAdapter for Claude Code only.\n * \n * ARCHITECTURAL DECISION (v2.0.0): xtrm-tools now supports Claude Code exclusively.\n * Hook translation for Gemini/Qwen was removed due to fragile, undocumented ecosystems.\n * See PROJECT-SKILLS-ARCHITECTURE.md Section 3.1 for details.\n */\nexport class ConfigAdapter {\n    systemRoot: string;\n    homeDir: string;\n    hooksDir: string;\n\n    constructor(systemRoot: string) {\n        this.systemRoot = systemRoot;\n        this.homeDir = os.homedir();\n        this.hooksDir = path.join(this.systemRoot, 'hooks');\n    }\n\n    /**\n     * Adapt hooks config for Claude Code format.\n     * Transforms flat hook definitions into Claude's wrapped format.\n     */\n    adaptHooksConfig(canonicalHooks: any): any {\n        if (!canonicalHooks) return {};\n\n        const hooksConfig = JSON.parse(JSON.stringify(canonicalHooks));\n        this.resolveHookScripts(hooksConfig);\n        return hooksConfig;\n    }\n\n    /**\n     * Resolve hook script paths and transform into Claude's command format.\n     * Converts { script: \"foo.py\" } → { type: \"command\", command: \"python3 /full/path/foo.py\" }\n     */\n    resolveHookScripts(hooksConfig: any): void {\n        if (hooksConfig.hooks) {\n            for (const [event, hooks] of Object.entries(hooksConfig.hooks)) {\n                if (Array.isArray(hooks)) {\n                    // Transform flat hooks into Claude's wrapped format:\n                    // { matcher?, hooks: [{ type, command, timeout }] }\n                    hooksConfig.hooks[event] = hooks.map((hook: any) => {\n                        if (hook.script) {\n                            const resolvedScriptPath = this.resolvePath(path.join(this.hooksDir, hook.script));\n                            const command = this.buildScriptCommand(hook.script, resolvedScriptPath);\n                            const innerHook: any = { type: \"command\", command };\n                            if (hook.timeout) innerHook.timeout = hook.timeout;\n\n                            const wrapper: any = { hooks: [innerHook] };\n                            if (hook.matcher) wrapper.matcher = hook.matcher;\n                            return wrapper;\n                        }\n                        return hook;\n                    });\n                }\n            }\n        }\n        if (hooksConfig.statusLine && hooksConfig.statusLine.script) {\n            const resolvedScriptPath = this.resolvePath(path.join(this.hooksDir, hooksConfig.statusLine.script));\n            const command = this.buildScriptCommand(hooksConfig.statusLine.script, resolvedScriptPath);\n            hooksConfig.statusLine = { type: \"command\", command };\n        }\n    }\n\n    buildScriptCommand(scriptName: string, resolvedPath: string): string {\n        const ext = path.extname(scriptName).toLowerCase();\n        if (ext === '.js' || ext === '.cjs' || ext === '.mjs') {\n            return `node \"${resolvedPath}\"`;\n        } else if (ext === '.sh') {\n            return `bash \"${resolvedPath}\"`;\n        } else {\n            const pythonBin = process.platform === 'win32' ? 'python' : 'python3';\n            return `${pythonBin} \"${resolvedPath}\"`;\n        }\n    }\n\n    resolvePath(p: string): string {\n        if (!p || typeof p !== 'string') return p;\n        let resolved = p.replace(/~\\//g, this.homeDir + '/').replace(/\\${HOME}/g, this.homeDir);\n\n        // Windows compatibility: use forward slashes in config files\n        if (process.platform === 'win32') {\n            resolved = resolved.replace(/\\\\/g, '/');\n        }\n\n        return resolved;\n    }\n}\n","import { execSync, exec } from 'child_process';\nimport { promisify } from 'util';\nconst execAsync = promisify(exec);\nimport fs from 'fs-extra';\nimport path from 'path';\nimport kleur from 'kleur';\n// @ts-ignore\nimport ora from 'ora';\nimport { ensureEnvFile, loadEnvFile, checkRequiredEnvVars, handleMissingEnvVars, getEnvFilePath } from './env-manager.js';\n\nexport type AgentName = 'claude';\n\ninterface AgentCLI {\n    command: string;\n    listArgs: string[];\n    addStdio: (name: string, cmd: string, args?: string[], env?: Record<string, string>) => string[];\n    addHttp: (name: string, url: string, headers?: Record<string, string>) => string[];\n    addSse: (name: string, url: string) => string[];\n    remove: (name: string) => string[];\n    parseList: (output: string) => string[];\n}\n\nconst AGENT_CLI: Record<AgentName, AgentCLI> = {\n    claude: {\n        command: 'claude',\n        listArgs: ['mcp', 'list'],\n        addStdio: (name, cmd, args, env) => {\n            const base = ['mcp', 'add', '-s', 'user', name, '--'];\n            if (env && Object.keys(env).length > 0) {\n                for (const [key, value] of Object.entries(env)) {\n                    base.push('-e', `${key}=${resolveEnvVar(value)}`);\n                }\n            }\n            base.push(cmd, ...(args || []));\n            return base;\n        },\n        addHttp: (name, url, headers) => {\n            const base = ['mcp', 'add', '-s', 'user', '--transport', 'http', name, url];\n            if (headers) {\n                for (const [key, value] of Object.entries(headers)) {\n                    base.push('--header', `${key}: ${resolveEnvVar(value)}`);\n                }\n            }\n            return base;\n        },\n        addSse: (name, url) => {\n            return ['mcp', 'add', '-s', 'user', '--transport', 'sse', name, url];\n        },\n        remove: (name) => ['mcp', 'remove', '-s', 'user', name],\n        parseList: (output) => parseMcpListOutput(output, /^([a-zA-Z0-9_-]+):/)\n    },\n};\n\n// Strip ANSI escape codes (e.g. qwen wraps ✓ in color codes)\nfunction stripAnsi(str: string): string {\n    return str.replace(/\\x1b\\[[0-9;]*m/g, '');\n}\n\nfunction parseMcpListOutput(output: string, pattern: RegExp): string[] {\n    const servers: string[] = [];\n    for (const line of output.split('\\n')) {\n        const match = stripAnsi(line).match(pattern);\n        if (match) {\n            servers.push(match[1]);\n        }\n    }\n    return servers;\n}\n\nfunction resolveEnvVar(value: string): string {\n    if (typeof value !== 'string') return value;\n\n    return value.replace(/\\$\\{([A-Z0-9_]+)\\}/g, (_match, envName) => {\n        const upperName = envName.toUpperCase();\n        const envValue = process.env[upperName];\n        if (envValue) {\n            return envValue;\n        } else {\n            console.warn(kleur.yellow(`  ⚠️  Environment variable ${upperName} is not set in ${getEnvFilePath()}`));\n            return '';\n        }\n    });\n}\n\nexport function detectAgent(systemRoot: string): AgentName | null {\n    const normalizedRoot = systemRoot.replace(/\\\\/g, '/').toLowerCase();\n    if (normalizedRoot.includes('.claude') || normalizedRoot.includes('/claude')) {\n        return 'claude';\n    }\n    return null;\n}\n\nfunction buildAddCommand(agent: AgentName, name: string, server: any): string[] | null {\n    const cli = AGENT_CLI[agent];\n    if (!cli) return null;\n\n    if (server.url || server.serverUrl) {\n        const url = server.url || server.serverUrl;\n        const type = server.type || (url.includes('/sse') ? 'sse' : 'http');\n\n        if (type === 'sse') {\n            return cli.addSse(name, url);\n        } else {\n            return cli.addHttp(name, url, server.headers);\n        }\n    }\n\n    if (server.command) {\n        return cli.addStdio(name, server.command, server.args, server.env);\n    }\n\n    console.warn(kleur.yellow(`  ⚠️  Skipping server \"${name}\": Unknown configuration`));\n    return null;\n}\n\ninterface CommandResult {\n    success: boolean;\n    dryRun?: boolean;\n    skipped?: boolean;\n    error?: string;\n}\n\nfunction executeCommand(agent: AgentName, args: string[], dryRun: boolean = false, displayName?: string): CommandResult {\n    const cli = AGENT_CLI[agent];\n\n    const quotedArgs = args.map(arg => {\n        if (arg.includes(' ') && !arg.startsWith('\"') && !arg.startsWith(\"'\")) {\n            return `\"${arg}\"`;\n        }\n        return arg;\n    });\n    const command = `${cli.command} ${quotedArgs.join(' ')}`;\n\n    if (dryRun) {\n        console.log(kleur.cyan(`  [DRY RUN] ${displayName ?? args.slice(2).join(' ')}`));\n        return { success: true, dryRun: true };\n    }\n\n    try {\n        execSync(command, { stdio: 'pipe', timeout: 10000 });\n        console.log(kleur.green(`  ✓ ${displayName ?? args.slice(2).join(' ')}`));\n        return { success: true };\n    } catch (error: any) {\n        const stderr = error.stderr?.toString() || error.message;\n\n        if (stderr.includes('already exists') || stderr.includes('already configured')) {\n            let serverName = 'unknown';\n            if (agent === 'claude') {\n                const addIndex = args.indexOf('add');\n                for (let i = addIndex + 1; i < args.length; i++) {\n                    const arg = args[i];\n                    if (arg === '--') continue;\n                    if (arg.startsWith('-')) continue;\n                    if (['local', 'user', 'project', 'http', 'sse', 'stdio'].includes(arg)) continue;\n                    serverName = arg;\n                    break;\n                }\n            }\n            console.log(kleur.dim(`  ✓ ${serverName} (already configured)`));\n            return { success: true, skipped: true };\n        }\n\n        console.log(kleur.red(`  ✗ Failed: ${stderr.trim()}`));\n        return { success: false, error: stderr };\n    }\n}\n\nexport function getCurrentServers(agent: AgentName): string[] {\n    const cli = AGENT_CLI[agent];\n    try {\n        const output = execSync(`${cli.command} ${cli.listArgs.join(' ')}`, {\n            encoding: 'utf8',\n            stdio: ['pipe', 'pipe', 'pipe']\n        });\n        return cli.parseList(output);\n    } catch (error: any) {\n        // Some CLIs (e.g. gemini) write server list to stderr\n        const combined = (error.stdout || '') + '\\n' + (error.stderr || '');\n        return cli.parseList(combined);\n    }\n}\n\nexport async function getCurrentServersAsync(agent: AgentName): Promise<string[]> {\n    const cli = AGENT_CLI[agent];\n    try {\n        const { stdout, stderr } = await execAsync(`${cli.command} ${cli.listArgs.join(' ')}`, {\n            timeout: 10000,\n        });\n        // Some CLIs (e.g. gemini) write server list to stderr\n        return cli.parseList(stdout + '\\n' + stderr);\n    } catch (error) {\n        return [];\n    }\n}\n\n/**\n * Extract ${VAR_NAME} references from a list of server config objects\n */\nfunction getServerEnvVarNames(servers: any[]): string[] {\n    const vars = new Set<string>();\n    const pattern = /\\$\\{([A-Z0-9_]+)\\}/g;\n    for (const server of servers) {\n        const json = JSON.stringify(server);\n        let match;\n        const re = new RegExp(pattern.source, pattern.flags);\n        while ((match = re.exec(json)) !== null) {\n            vars.add(match[1]);\n        }\n    }\n    return Array.from(vars);\n}\n\n/**\n * Sync MCP servers to an agent using official CLI\n */\n// Prevents ensureEnvFile/loadEnvFile from firing once per target directory\nlet envInitialized = false;\n\nexport async function syncMcpServersWithCli(\n    agent: AgentName,\n    mcpConfig: any,\n    dryRun: boolean = false,\n    prune: boolean = false\n): Promise<void> {\n    const cli = AGENT_CLI[agent];\n    if (!cli) {\n        console.log(kleur.yellow(`  ⚠️  Unsupported agent: ${agent}`));\n        return;\n    }\n\n    if (!envInitialized) {\n        ensureEnvFile();\n        loadEnvFile();\n        envInitialized = true;\n    }\n\n    const spinner = ora({ text: kleur.dim('  checking installed servers…'), indent: 2 }).start();\n    const currentServers = await getCurrentServersAsync(agent);\n    spinner.stop();\n    const currentServersSet = new Set(currentServers);\n    const canonicalServers = new Set(Object.keys(mcpConfig.mcpServers || {}));\n\n    if (prune) {\n        const toRemove = currentServers.filter(s => !canonicalServers.has(s));\n        if (toRemove.length > 0) {\n            console.log(kleur.red(`  Pruning ${toRemove.length} server(s)...`));\n            for (const serverName of toRemove) {\n                executeCommand(agent, cli.remove(serverName), dryRun);\n            }\n        }\n    }\n\n    // Determine which servers actually need to be added\n    const toAdd = Object.entries(mcpConfig.mcpServers || {}).filter(([name]) => !currentServersSet.has(name));\n    const skippedCount = canonicalServers.size - toAdd.length;\n\n    if (toAdd.length === 0) {\n        // Nothing to add — skip env warning, no CLI calls needed\n        console.log(kleur.dim(`  ✓ ${skippedCount} server(s) already installed`));\n        return;\n    }\n\n    // Step 1: Multiselect — all servers pre-selected, user can deselect with space\n    let selectedNames: string[] = toAdd.map(([name]) => name);\n\n    if (!dryRun) {\n        // @ts-ignore\n        const prompts = await import('prompts');\n        const { selected } = await prompts.default({\n            type: 'multiselect',\n            name: 'selected',\n            message: `Select MCP servers to install via ${agent} CLI:`,\n            choices: toAdd.map(([name, server]: [string, any]) => ({\n                title: name,\n                description: (server as any)._notes?.description || '',\n                value: name,\n                selected: true\n            })),\n            hint: '- Space to toggle. Enter to confirm.',\n            instructions: false\n        });\n\n        if (!selected || selected.length === 0) {\n            console.log(kleur.gray('  Skipped MCP installation.'));\n            return;\n        }\n\n        selectedNames = selected;\n\n        // Step 2: Only ask for env vars needed by the selected servers\n        const selectedEntries = toAdd.filter(([name]) => new Set(selectedNames).has(name));\n        const neededVarNames = getServerEnvVarNames(selectedEntries.map(([, s]) => s as any));\n        const missingEnvVars = checkRequiredEnvVars(neededVarNames);\n        if (missingEnvVars.length > 0) {\n            const shouldProceed = await handleMissingEnvVars(missingEnvVars);\n            if (!shouldProceed) return;\n        }\n    }\n\n    // Step 3: Build and execute commands for selected servers only\n    const selectedSet = new Set(selectedNames);\n    const commandsToRun: Array<{ name: string; cmd: string[] }> = [];\n    for (const [name, server] of toAdd) {\n        if (!selectedSet.has(name)) continue;\n        const cmd = buildAddCommand(agent, name, server as any);\n        if (cmd) commandsToRun.push({ name, cmd });\n    }\n\n    if (commandsToRun.length === 0) return;\n\n    let successCount = 0;\n    for (const { name, cmd } of commandsToRun) {\n        const result = executeCommand(agent, cmd, dryRun, name);\n        if (result.success && !result.skipped) {\n            successCount++;\n        }\n    }\n\n    if (skippedCount > 0) {\n        console.log(kleur.dim(`  ✓ ${skippedCount} already installed, ${successCount} added`));\n    } else {\n        console.log(kleur.green(`  ✓ ${successCount} server(s) added`));\n    }\n}\n\n/**\n * Load canonical MCP config from repository\n */\nexport function loadCanonicalMcpConfig(repoRoot: string, includeOptional: boolean = false): any {\n    const corePath = path.join(repoRoot, 'config', 'claude.mcp.json');\n    const optionalPath = path.join(repoRoot, 'config', 'claude.mcp.optional.json');\n\n    const config: any = { mcpServers: {} };\n\n    if (fs.existsSync(corePath)) {\n        const core = fs.readJsonSync(corePath);\n        config.mcpServers = { ...config.mcpServers, ...core.mcpServers };\n    }\n\n    if (includeOptional && fs.existsSync(optionalPath)) {\n        const optional = fs.readJsonSync(optionalPath);\n        config.mcpServers = { ...config.mcpServers, ...optional.mcpServers };\n    }\n\n    return config;\n}\n\n/**\n * Prompt user to select optional MCP servers\n */\nexport async function promptOptionalServers(repoRoot: string): Promise<string[] | false> {\n    const optionalPath = path.join(repoRoot, 'config', 'claude.mcp.optional.json');\n\n    if (!fs.existsSync(optionalPath)) {\n        return false;\n    }\n\n    const optional = fs.readJsonSync(optionalPath);\n    const servers = Object.entries(optional.mcpServers || {}).map(([name, server]: [string, any]) => ({\n        name,\n        description: server._notes?.description || 'No description',\n        prerequisite: server._notes?.prerequisite || ''\n    }));\n\n    if (servers.length === 0) {\n        return false;\n    }\n\n    // @ts-ignore\n    const prompts = await import('prompts');\n\n    const { selected } = await prompts.default({\n        type: 'multiselect',\n        name: 'selected',\n        message: 'Optional MCP servers available — select to install (space to toggle, enter to confirm):',\n        choices: servers.map(s => ({\n            title: s.name,\n            description: s.prerequisite\n                ? `${s.description} — ⚠️  ${s.prerequisite}`\n                : s.description,\n            value: s.name,\n            selected: false\n        })),\n        hint: '- Space to select. Enter to skip or confirm.',\n        instructions: false\n    });\n\n    if (!selected || selected.length === 0) {\n        console.log(kleur.gray('  Skipping optional servers.\\n'));\n        return false;\n    }\n\n    console.log(kleur.green(`  Selected: ${selected.join(', ')}\\n`));\n    return selected;\n}\n","import fs from 'fs-extra';\nimport path from 'path';\nimport os from 'os';\nimport kleur from 'kleur';\nimport dotenv from 'dotenv';\n\n/**\n * Environment file location: ~/.config/jaggers-agent-tools/.env\n */\nconst CONFIG_DIR = path.join(os.homedir(), '.config', 'jaggers-agent-tools');\nconst ENV_FILE = path.join(CONFIG_DIR, '.env');\nconst ENV_EXAMPLE_FILE = path.join(CONFIG_DIR, '.env.example');\n\ninterface EnvVarConfig {\n    description: string;\n    example: string;\n    getUrl: () => string;\n}\n\n/**\n * Required environment variables for MCP servers\n */\nconst REQUIRED_ENV_VARS: Record<string, EnvVarConfig> = {\n    CONTEXT7_API_KEY: {\n        description: 'Context7 MCP server API key',\n        example: 'ctx7sk-your-api-key-here',\n        getUrl: () => 'https://context7.com/',\n    },\n};\n\n/**\n * Ensure config directory and .env file exist\n */\nexport function ensureEnvFile(): boolean {\n    // Create config directory if missing\n    if (!fs.existsSync(CONFIG_DIR)) {\n        fs.ensureDirSync(CONFIG_DIR);\n        console.log(kleur.gray(`  Created config directory: ${CONFIG_DIR}`));\n    }\n\n    // Create .env.example if missing\n    if (!fs.existsSync(ENV_EXAMPLE_FILE)) {\n        createEnvExample();\n    }\n\n    // Create .env if missing\n    if (!fs.existsSync(ENV_FILE)) {\n        createEnvFile();\n        return false; // File was created (user needs to fill it)\n    }\n\n    return true; // File already exists\n}\n\nfunction createEnvExample(): void {\n    const content = [\n        '# Jaggers Agent Tools - Environment Variables',\n        '# Copy this file to .env and fill in your actual values',\n        '',\n        ...Object.entries(REQUIRED_ENV_VARS).map(([key, config]) => {\n            return [\n                `# ${config.description}`,\n                `# Get your key from: ${config.getUrl()}`,\n                `${key}=${config.example}`,\n                '',\n            ].join('\\n');\n        }),\n        '# See config/.env.example in the repository for all available options',\n        '',\n    ].join('\\n');\n\n    fs.writeFileSync(ENV_EXAMPLE_FILE, content);\n    console.log(kleur.gray(`  Created example file: ${ENV_EXAMPLE_FILE}`));\n}\n\nfunction createEnvFile(): void {\n    const content = [\n        '# Jaggers Agent Tools - Environment Variables',\n        '# Generated automatically by jaggers-agent-tools CLI',\n        '',\n        '# Copy values from .env.example and fill in your actual keys',\n        '',\n    ].join('\\n');\n\n    fs.writeFileSync(ENV_FILE, content);\n    console.log(kleur.green(`  Created environment file: ${ENV_FILE}`));\n}\n\n/**\n * Load environment variables from .env file\n * Also loads from process.env (which takes precedence)\n */\nexport function loadEnvFile(): Record<string, string> {\n    if (fs.existsSync(ENV_FILE)) {\n        const envConfig = dotenv.parse(fs.readFileSync(ENV_FILE));\n\n        // Merge with process.env (process.env takes precedence)\n        for (const [key, value] of Object.entries(envConfig)) {\n            if (!process.env[key]) {\n                process.env[key] = value;\n            }\n        }\n\n        return envConfig;\n    }\n\n    return {};\n}\n\n/**\n * Check if required environment variables are set.\n * Pass an optional `subset` of var names to check only those.\n * Known vars (in REQUIRED_ENV_VARS) get rich metadata; unknown vars are\n * still checked so server-defined ${VAR} references are never silently dropped.\n * Returns array of missing variable names.\n */\nexport function checkRequiredEnvVars(subset?: string[]): string[] {\n    const missing: string[] = [];\n    const keysToCheck = subset ?? Object.keys(REQUIRED_ENV_VARS);\n\n    for (const key of keysToCheck) {\n        if (!process.env[key]) {\n            missing.push(key);\n        }\n    }\n\n    return missing;\n}\n\n/**\n * Prompt user to enter missing environment variables interactively.\n * Saves provided values to .env and sets them in process.env.\n * Returns true if all missing vars were provided (sync can continue).\n */\nexport async function handleMissingEnvVars(missing: string[]): Promise<boolean> {\n    if (missing.length === 0) {\n        return true;\n    }\n\n    // @ts-ignore\n    const prompts = (await import('prompts')).default;\n\n    const answers: Record<string, string> = {};\n\n    for (const key of missing) {\n        const config = REQUIRED_ENV_VARS[key];\n        if (config) {\n            console.log(kleur.yellow(`\\n  ⚠️  ${config.description} is required`));\n            console.log(kleur.dim(`     Get your key from: ${config.getUrl()}`));\n        } else {\n            console.log(kleur.yellow(`\\n  ⚠️  ${key} is required by a selected MCP server`));\n        }\n\n        const { value } = await prompts({\n            type: 'text',\n            name: 'value',\n            message: `Enter ${key}:`,\n            validate: (v: string) => v.trim().length > 0 || 'Value cannot be empty'\n        });\n\n        if (!value) {\n            console.log(kleur.gray(`  Skipped — ${key} not provided. MCP server will be skipped.`));\n            return false;\n        }\n\n        answers[key] = value.trim();\n        process.env[key] = value.trim();\n    }\n\n    // Persist to .env file\n    let envContent = fs.existsSync(ENV_FILE) ? fs.readFileSync(ENV_FILE, 'utf8') : '';\n    for (const [key, value] of Object.entries(answers)) {\n        const line = `${key}=${value}`;\n        const regex = new RegExp(`^${key}=.*$`, 'm');\n        if (regex.test(envContent)) {\n            envContent = envContent.replace(regex, line);\n        } else {\n            envContent += `\\n${line}\\n`;\n        }\n    }\n    fs.writeFileSync(ENV_FILE, envContent);\n    console.log(kleur.green(`  ✓ Saved to ${ENV_FILE}`));\n\n    return true;\n}\n\nexport function getEnvFilePath(): string {\n    return ENV_FILE;\n}\n\nexport function getConfigDir(): string {\n    return CONFIG_DIR;\n}\n","import fs from 'fs-extra';\n\nexport interface BackupInfo {\n    originalPath: string;\n    backupPath: string;\n    timestamp: Date;\n}\n\nexport async function createBackup(filePath: string): Promise<BackupInfo> {\n    const timestamp = Date.now();\n    const backupPath = `${filePath}.backup-${timestamp}`;\n\n    if (await fs.pathExists(filePath)) {\n        await fs.copy(filePath, backupPath);\n    }\n\n    return {\n        originalPath: filePath,\n        backupPath,\n        timestamp: new Date(),\n    };\n}\n\nexport async function restoreBackup(backup: BackupInfo): Promise<void> {\n    if (await fs.pathExists(backup.backupPath)) {\n        await fs.move(backup.backupPath, backup.originalPath, { overwrite: true });\n    }\n}\n\nexport async function cleanupBackup(backup: BackupInfo): Promise<void> {\n    await fs.remove(backup.backupPath);\n}\n","import fs from 'fs-extra';\nimport { join } from 'path';\nimport { Manifest, ManifestSchema } from '../types/config.js';\n\nconst MANIFEST_FILE = '.jaggers-sync-manifest.json';\n\nexport function getManifestPath(projectDir: string): string {\n    return join(projectDir, MANIFEST_FILE);\n}\n\nexport async function loadManifest(projectDir: string): Promise<Manifest | null> {\n    const manifestPath = join(projectDir, MANIFEST_FILE);\n\n    try {\n        const content = await fs.readJson(manifestPath);\n        // Let schema validation gracefully fail or handle legacy\n        return ManifestSchema.parse(content) as Manifest;\n    } catch {\n        return null;\n    }\n}\n\nexport async function saveManifest(projectDir: string, manifest: any): Promise<void> {\n    const manifestPath = join(projectDir, MANIFEST_FILE);\n    await fs.writeJson(manifestPath, manifest, { spaces: 2 });\n}\n","import { z } from 'zod';\n\nexport const SyncModeSchema = z.enum(['copy', 'symlink', 'prune']);\nexport type SyncMode = z.infer<typeof SyncModeSchema>;\n\nexport const TargetConfigSchema = z.strictObject({\n  label: z.string({ error: 'Target label is required' }).min(1, { error: 'Target label is required' }),\n  path: z.string({ error: 'Target path is required' }).min(1, { error: 'Target path is required' }),\n  exists: z.boolean({ error: 'Target exists flag must be a boolean' }),\n});\nexport type TargetConfig = z.infer<typeof TargetConfigSchema>;\n\nexport const ChangeSetCategorySchema = z.strictObject({\n  missing: z.array(z.string(), { error: 'Missing items must be a string array' }),\n  outdated: z.array(z.string(), { error: 'Outdated items must be a string array' }),\n  drifted: z.array(z.string(), { error: 'Drifted items must be a string array' }),\n  total: z.number({ error: 'Category total must be a number' }),\n});\nexport type ChangeSetCategory = z.infer<typeof ChangeSetCategorySchema>;\n\nexport const ChangeSetSchema = z.strictObject({\n  skills: ChangeSetCategorySchema,\n  hooks: ChangeSetCategorySchema,\n  config: ChangeSetCategorySchema,\n  commands: ChangeSetCategorySchema,\n});\nexport type ChangeSet = z.infer<typeof ChangeSetSchema>;\n\nexport const SyncPlanSchema = z.strictObject({\n  mode: SyncModeSchema,\n  targets: z.array(z.string(), { error: 'Sync targets must be a string array' }),\n});\nexport type SyncPlan = z.infer<typeof SyncPlanSchema>;\n\nexport const ManifestItemSchema = z.strictObject({\n  type: z.enum(['skill', 'hook', 'config', 'command']),\n  name: z.string({ error: 'Manifest item name is required' }).min(1, { error: 'Manifest item name is required' }),\n  hash: z.string({ error: 'Manifest item hash is required' }).min(1, { error: 'Manifest item hash is required' }),\n  lastSync: z.string({ error: 'Manifest item lastSync is required' }).min(1, { error: 'Manifest item lastSync is required' }),\n  source: z.string({ error: 'Manifest item source is required' }).min(1, { error: 'Manifest item source is required' }),\n});\nexport type ManifestItem = z.infer<typeof ManifestItemSchema>;\n\nexport const ManifestSchema = z.strictObject({\n  version: z.string({ error: 'Manifest version must be a string' }).optional().default('1'),\n  lastSync: z.string({ error: 'Manifest lastSync is required' }).min(1, { error: 'Manifest lastSync is required' }),\n  items: z.number({ error: 'Manifest item count must be a number' }).optional().default(0),\n});\nexport type Manifest = z.infer<typeof ManifestSchema>;\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { resetContext } from '../core/context.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\nexport function createResetCommand(): Command {\n    return new Command('reset')\n        .description('Reset CLI configuration (clears saved sync mode and preferences)')\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .action(async (opts: { yes: boolean }) => {\n            const confirmed = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: 'Reset saved CLI configuration?',\n                initial: false,\n            });\n            if (!confirmed) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            resetContext();\n            console.log(kleur.green('✓ Configuration reset. Run sync again to reconfigure.'));\n        });\n}\n","import { Command } from 'commander';\n\nfunction section(title: string, lines: string[]): string {\n    return [title, ...lines, ''].join('\\n');\n}\n\nexport function createHelpCommand(): Command {\n    return new Command('help')\n        .description('Show rich CLI help in a plain text format')\n        .action(async () => {\n            const blocks: string[] = [];\n\n            blocks.push(section('XTRM CLI', [\n                '  xtrm and xt are equivalent commands.',\n                '  Use xt for short workflow commands (xt claude, xt pi, xt end).',\n            ]));\n\n            blocks.push(section('USAGE', [\n                '  xtrm <command> [subcommand] [options]',\n                '  xt <command> [subcommand] [options]',\n            ]));\n\n            blocks.push(section('CORE WORKFLOW', [\n                '  1) Start a runtime session in a worktree:',\n                '     xt claude [name]   or   xt pi [name]',\n                '  2) Do your work in that worktree/branch.',\n                '  3) If the session closes unexpectedly, re-attach:',\n                '     xt attach [slug]',\n                '  4) Publish that worktree with:',\n                '     xt end',\n                '  5) Optional follow-up operators:',\n                '     xt memory update   (refresh .xtrm/memory.md from bd memories + repo state)',\n                '     xt merge           (drain queued xt/* PRs oldest-first after CI passes)',\n                '  6) Manage old worktrees when needed:',\n                '     xt worktree list | xt worktree doctor | xt worktree clean',\n            ]));\n\n            blocks.push(section('PRIMARY COMMANDS', [\n                '  xtrm init [options]',\n                '    Bootstrap xtrm in this project with a phased installer:',\n                '      1. Preflight     — inventory system state (no mutations)',\n                '      2. Plan          — show what will change',\n                '      3. Confirm       — single gate before all mutations',\n                '      4. Machine       — install system tools (bd, dolt, bv, pi, pnpm)',\n                '      5. Claude        — .xtrm/hooks wiring into .claude/settings.json',\n                '      6. Pi            — extensions + packages sync',\n                '      7. Project       — bd init, GitNexus index, AGENTS.md/CLAUDE.md',\n                '      8. Verify        — unified outcome summary',\n                '    Options: --dry-run, --yes/-y, --global',\n                '',\n                '  xtrm update [--apply] [--repo <path>] [--root <dir>] [--json]',\n                '    Refresh xtrm-managed files for one repo or many.',\n                '    Default is dry-run for the current repo; --apply writes changes.',\n                '    --repo targets one repo; --root discovers repos with .xtrm/registry.json.',\n                '',\n                '  xtrm status [--json]',\n                '    Show pending changes for detected environments.',\n                '',\n                '  xtrm clean [options]',\n                '    Remove orphaned hooks/skills and stale hook wiring entries.',\n                '    Options: --dry-run, --hooks-only, --skills-only, --yes/-y',\n                '',\n                '  xtrm docs --help',\n                '    Documentation inspection and drift-check submenu.',\n                '    Subcommands: show, list, cross-check',\n                '',\n                '  xtrm docs cross-check [--days <n>] [--json]',\n                '    Validate docs against recent PR activity and closed bd issues.',\n                '',\n                '  xtrm memory update [--dry-run] [--no-beads]',\n                '    Run memory-processor specialist to synthesize bd memories into .xtrm/memory.md.',\n                '    --dry-run: classify and report without writing memory.md or pruning.',\n                '',\n                '  xtrm merge [--dry-run] [--yes/-y] [--no-beads]',\n                '    Drain the xt worktree PR merge queue via the xt-merge specialist (FIFO, --rebase).',\n                '    --dry-run: list queue and CI status without merging.',\n                '',\n                '  xtrm debug [options]',\n                '    Stream xtrm event log (tool calls, gates, session/bd lifecycle).',\n                '    Options: --follow, --all, --session <id>, --type <domain>, --json',\n                '',\n                '  xtrm reset [--yes/-y]',\n                '    Clear saved CLI preferences.',\n                '',\n                '  xtrm doctor [--cwd <path>] [--json] [--check-drift]',\n                '    Health check for xtrm-managed surfaces: CLAUDE.md fragments, Cat B',\n                '    skills/hooks drift, runtime views, and duplicate canonical names.',\n                '',\n                '  xtrm release prepare [--major|--minor|--patch] [--from <ref>] [--to <ref>]',\n                '    Draft the next release from xt reports via the changelog script surface.',\n                '    Note: prepare currently depends on specialists issue unitAI-dnmcg to make',\n                '    changelog drafting script-compatible.',\n                '',\n                '  xtrm release publish [--gh-release]',\n                '    Publish an already-prepared release: create annotated tag, push commits/tags,',\n                '    and optionally create a GitHub release.',\n                '',\n                '  xtrm claude-sync [options]',\n                '    Sync managed CLAUDE.md fragments via XTRM-MANAGED:* sentinels.',\n                '    Modes: --check (default, exit 1 on drift), --apply --accept-overwrite,',\n                '           --list, --add <fragment>. Use --json on --check or --list for',\n                '           machine-readable output. Templated fragments use --repo-name /',\n                '           --repo-stats overrides.',\n                '',\n                '  xtrm help',\n                '    Show this help page.',\n            ]));\n\n            blocks.push(section('RUNTIME COMMANDS', [\n                '  xt claude [name]',\n                '    Launch Claude in a sandboxed xt/<name> worktree.',\n                '  xt claude install [--dry-run] [--yes/-y]',\n                '    Install/refresh .xtrm hook wiring in Claude settings.json.',\n                '  xt claude status | xt claude doctor | xt claude reload',\n                '',\n                '  xt pi [name]',\n                '    Launch Pi in a sandboxed xt/<name> worktree.',\n                '  xt pi setup',\n                '    Interactive first-time setup.',\n                '  xt pi status | xt pi doctor | xt pi reload [--yes/-y]',\n            ]));\n\n            blocks.push(section('WORKTREE COMMANDS', [\n                '  xt attach [slug]',\n                '    Re-attach to an existing worktree and resume the Claude or Pi session.',\n                '    Picks the most recent worktree if no slug is given; shows a picker when',\n                '    multiple exist. Resumes with --continue (claude) or -c (pi).',\n                '',\n                '  xt worktree list',\n                '    List active xt/* worktrees with runtime, last activity, last commit, and',\n                '    a ready-to-run resume hint.',\n                '  xt worktree doctor',\n                '    Diagnose nested/prunable/orphaned worktree state and show cleanup commands.',\n                '  xt worktree audit-prs [--json]',\n                '    Audit PR merge-state for xt worktrees; reports needs-rebase/conflicts/blocked states without modifying branches.',\n                '  xt worktree branch-gc [--prefix xt/] [--apply --yes] [--json]',\n                '    Dry-run branch cleanup for managed PR branches; deletes only closed/merged PR branches when --apply is explicit.',\n                '  xt worktree restart-audit [--prefix xt/] [--json]',\n                '    Startup/cron-safe audit of orphaned dirs, branch/worktree drift, PR attention, and cleanup suggestions.',\n                '  xt worktree clean [--orphans] [--dry-run] [--yes/-y]',\n                '    Remove merged worktrees; with --orphans also prune stale metadata and orphan dirs.',\n                '  xt worktree remove <name> [--yes/-y]',\n                '    Remove a specific xt worktree by name or path.',\n            ]));\n\n            blocks.push(section('SESSION CLOSE', [\n                '  xt end [options]',\n                '    Rebase to origin/main, push, open PR, link issues, and optionally clean worktree.',\n                '    Options: --draft, --keep, --yes/-y',\n                '',\n                '  xt memory update [--dry-run] [--no-beads]',\n                '    Run memory-processor to synthesize .xtrm/memory.md from bd memories + repo state.',\n                '',\n                '  xt merge [--dry-run] [--yes/-y] [--no-beads]',\n                '    Run xt-merge to drain queued xt/* PRs FIFO: CI gate → rebase merge → rebase cascade.',\n            ]));\n\n            blocks.push(section('NOTES', [\n                '  - xtrm init uses a single confirmation before all mutations.',\n                '  - Use --yes/-y to skip the confirmation gate.',\n                '  - For command-level details, run: xtrm <command> --help',\n                '  - For subcommand details, run: xtrm <command> <subcommand> --help',\n                '  - For docs workflow details, run: xtrm docs --help',\n            ]));\n\n            process.stdout.write(blocks.join('\\n'));\n        });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { homedir } from 'os';\nimport { t, sym } from '../utils/theme.js';\nimport { findRepoRoot } from '../utils/repo-root.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\n// Canonical hooks (files in ~/.claude/hooks/)\nconst CANONICAL_HOOKS = new Set([\n    'using-xtrm-reminder.mjs',\n    'beads-gate-core.mjs',\n    'beads-gate-utils.mjs',\n    'beads-gate-messages.mjs',\n    'beads-edit-gate.mjs',\n    'beads-commit-gate.mjs',\n    'beads-stop-gate.mjs',\n    'beads-memory-gate.mjs',\n    'beads-claim-sync.mjs',\n    'beads-compact-save.mjs',\n    'beads-compact-restore.mjs',\n    'worktree-boundary.mjs',\n    'statusline.mjs',\n    'quality-check.cjs',\n    'quality-check-env.mjs',\n    'quality-check.py',\n    'xtrm-logger.mjs',\n    'xtrm-tool-logger.mjs',\n    'xtrm-session-logger.mjs',\n    'gitnexus',  // directory\n    'README.md',\n]);\n\n// Per-runtime active/ tiers were removed in Batch G. The flat active/ layout\n// is now the only supported format. This constant is retained only as a\n// historical reference to prevent accidental re-introduction of runtime subdirs.\n// DO NOT use this for scanning — see cleanSkills() below.\nconst ACTIVE_SKILLS_RUNTIMES = ['claude', 'pi'] as const;\n\n// Directories/files to always ignore\nconst IGNORED_ITEMS = new Set([\n    '__pycache__',\n    '.DS_Store',\n    'Thumbs.db',\n    '.gitkeep',\n    'node_modules',\n]);\n\ninterface CleanResult {\n    hooksRemoved: string[];\n    skillsRemoved: string[];\n    cacheRemoved: string[];\n}\n\nasync function cleanHooks(dryRun: boolean): Promise<{ removed: string[]; cache: string[] }> {\n    const hooksDir = path.join(homedir(), '.claude', 'hooks');\n    const removed: string[] = [];\n    const cache: string[] = [];\n\n    if (!await fs.pathExists(hooksDir)) {\n        return { removed, cache };\n    }\n\n    const entries = await fs.readdir(hooksDir);\n\n    for (const entry of entries) {\n        // Skip ignored items but track them for cache cleanup\n        if (IGNORED_ITEMS.has(entry)) {\n            if (!dryRun) {\n                const fullPath = path.join(hooksDir, entry);\n                await fs.remove(fullPath);\n            }\n            cache.push(entry);\n            continue;\n        }\n\n        // Check if it's canonical\n        if (CANONICAL_HOOKS.has(entry)) {\n            continue;\n        }\n\n        // Check if it's a file we should remove\n        const fullPath = path.join(hooksDir, entry);\n        const stat = await fs.stat(fullPath);\n\n        // Only remove files, not arbitrary directories (except cache dirs)\n        if (stat.isFile() || (stat.isDirectory() && IGNORED_ITEMS.has(entry))) {\n            if (!dryRun) {\n                await fs.remove(fullPath);\n            }\n            removed.push(entry);\n        }\n    }\n\n    return { removed, cache };\n}\n\nasync function cleanSkills(dryRun: boolean): Promise<string[]> {\n    const removed: string[] = [];\n    const skillsRoot = path.join(homedir(), '.xtrm', 'skills');\n\n    // Flat active/ layout (Batch G+). Scan for orphaned non-symlinks and broken links.\n    const activeRoot = path.join(skillsRoot, 'active');\n    if (await fs.pathExists(activeRoot)) {\n        const entries = await fs.readdir(activeRoot);\n        for (const entry of entries) {\n            if (IGNORED_ITEMS.has(entry)) {\n                continue;\n            }\n\n            const entryPath = path.join(activeRoot, entry);\n            const stat = await fs.lstat(entryPath).catch(() => null);\n            if (!stat) {\n                continue;\n            }\n\n            if (!stat.isSymbolicLink()) {\n                if (!dryRun) {\n                    await fs.remove(entryPath);\n                }\n                removed.push(`active/${entry} (non-symlink)`);\n                continue;\n            }\n\n            const linkTarget = await fs.readlink(entryPath).catch(() => null);\n            if (!linkTarget) {\n                if (!dryRun) {\n                    await fs.remove(entryPath);\n                }\n                removed.push(`active/${entry} (broken-link)`);\n                continue;\n            }\n\n            const resolvedTarget = path.resolve(path.dirname(entryPath), linkTarget);\n            if (!await fs.pathExists(resolvedTarget)) {\n                if (!dryRun) {\n                    await fs.remove(entryPath);\n                }\n                removed.push(`active/${entry} (dangling)`);\n            }\n        }\n    }\n\n    return removed;\n}\n\nasync function cleanOrphanedHookEntries(dryRun: boolean, repoRoot: string | null): Promise<string[]> {\n    const settingsPath = path.join(homedir(), '.claude', 'settings.json');\n    const removed: string[] = [];\n\n    if (!await fs.pathExists(settingsPath)) {\n        return removed;\n    }\n\n    let settings: any = {};\n    try {\n        settings = await fs.readJson(settingsPath);\n    } catch {\n        return removed;\n    }\n\n    if (!settings.hooks || typeof settings.hooks !== 'object') {\n        return removed;\n    }\n\n    // Collect canonical script names from CANONICAL_HOOKS\n    const canonicalScripts = new Set<string>();\n    for (const hook of CANONICAL_HOOKS) {\n        if (hook.endsWith('.py') || hook.endsWith('.mjs') || hook.endsWith('.cjs') || hook.endsWith('.js')) {\n            canonicalScripts.add(hook);\n        }\n    }\n    canonicalScripts.add('gitnexus/gitnexus-hook.cjs');\n\n    // Build canonical wiring map from config/hooks.json: script -> Set<\"event:::matcher|NONE\">\n    // Used to detect canonical scripts wired to wrong events or with stale matchers.\n    const canonicalWiringKeys = new Map<string, Set<string>>();\n    if (repoRoot) {\n        const hooksJsonPath = path.join(repoRoot, 'config', 'hooks.json');\n        try {\n            if (await fs.pathExists(hooksJsonPath)) {\n                const hooksJson = await fs.readJson(hooksJsonPath);\n                for (const [event, entries] of Object.entries(hooksJson.hooks ?? {})) {\n                    for (const entry of entries as any[]) {\n                        const script: string = entry.script;\n                        if (!script) continue;\n                        const key = `${event}:::${entry.matcher ?? 'NONE'}`;\n                        if (!canonicalWiringKeys.has(script)) canonicalWiringKeys.set(script, new Set());\n                        canonicalWiringKeys.get(script)!.add(key);\n                    }\n                }\n            }\n        } catch { /* ignore, fall back to script-only check */ }\n    }\n\n    // Check each hook entry\n    let modified = false;\n    for (const [event, wrappers] of Object.entries(settings.hooks)) {\n        if (!Array.isArray(wrappers)) continue;\n\n        const keptWrappers: any[] = [];\n        for (const wrapper of wrappers) {\n            const innerHooks = wrapper.hooks || [wrapper];\n            const keptInner: any[] = [];\n\n            for (const hook of innerHooks) {\n                const cmd = hook?.command || '';\n                const m = cmd.match(/\\/hooks\\/([A-Za-z0-9_/-]+\\.(?:py|cjs|mjs|js))/);\n                const script = m?.[1];\n\n                if (!script || canonicalScripts.has(script)) {\n                    keptInner.push(hook);\n                } else {\n                    removed.push(`${event}:${script}`);\n                    modified = true;\n                }\n            }\n\n            if (keptInner.length > 0) {\n                // Validate canonical wiring: check that this (event, matcher) combo exists in canonical source\n                if (canonicalWiringKeys.size > 0) {\n                    const firstCmd: string = keptInner[0]?.command || '';\n                    const sm = firstCmd.match(/\\/hooks\\/([A-Za-z0-9_/-]+\\.(?:py|cjs|mjs|js))/);\n                    const script = sm?.[1];\n\n                    if (script && canonicalScripts.has(script)) {\n                        const validKeys = canonicalWiringKeys.get(script);\n                        const wiringKey = `${event}:::${(wrapper.matcher as string | undefined) ?? 'NONE'}`;\n                        if (validKeys && !validKeys.has(wiringKey)) {\n                            removed.push(`${event}:${script} (stale wiring)`);\n                            modified = true;\n                            continue; // drop this wrapper\n                        }\n                    }\n                }\n\n                if (wrapper.hooks) {\n                    keptWrappers.push({ ...wrapper, hooks: keptInner });\n                } else if (keptInner.length === 1) {\n                    keptWrappers.push(keptInner[0]);\n                }\n            }\n        }\n\n        if (keptWrappers.length > 0) {\n            settings.hooks[event] = keptWrappers;\n        } else {\n            delete settings.hooks[event];\n            modified = true;\n        }\n    }\n\n    if (modified && !dryRun) {\n        await fs.writeJson(settingsPath, settings, { spaces: 2 });\n    }\n\n    return removed;\n}\n\nexport function createCleanCommand(): Command {\n    return new Command('clean')\n        .description('Remove orphaned hooks and skills not in the canonical repository')\n        .option('--dry-run', 'Preview what would be removed without making changes', false)\n        .option('--hooks-only', 'Only clean hooks, skip skills', false)\n        .option('--skills-only', 'Only clean skills, skip hooks', false)\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .action(async (opts) => {\n            const { dryRun, hooksOnly, skillsOnly, yes } = opts;\n\n            console.log(t.bold('\\n  XTRM Clean — Remove Orphaned Components\\n'));\n\n            if (dryRun) {\n                console.log(kleur.yellow('  DRY RUN — No changes will be made\\n'));\n            }\n\n            if (!dryRun) {\n                const confirmed = await confirmDestructiveAction({\n                    yes,\n                    message: 'Remove orphaned hooks/skills and stale hook wiring entries?',\n                    initial: false,\n                });\n                if (!confirmed) {\n                    console.log(kleur.dim('  Cancelled\\n'));\n                    return;\n                }\n            }\n\n            const result: CleanResult = {\n                hooksRemoved: [],\n                skillsRemoved: [],\n                cacheRemoved: [],\n            };\n\n            // Clean hooks\n            if (!skillsOnly) {\n                console.log(kleur.bold('  Scanning ~/.claude/hooks/...'));\n                const { removed, cache } = await cleanHooks(dryRun);\n                result.hooksRemoved = removed;\n                result.cacheRemoved = cache;\n\n                if (removed.length > 0) {\n                    for (const f of removed) {\n                        console.log(kleur.red(`    ✗ ${f}`));\n                    }\n                } else {\n                    console.log(kleur.dim('    ✓ No orphaned hooks found'));\n                }\n\n                if (cache.length > 0) {\n                    console.log(kleur.dim(`    ↳ Cleaned ${cache.length} cache directory(ies)`));\n                }\n\n                // Clean orphaned hook entries in settings.json\n                console.log(kleur.bold('\\n  Scanning settings.json for orphaned hook entries...'));\n                let repoRoot: string | null = null;\n                try { repoRoot = await findRepoRoot(); } catch { /* not in repo context */ }\n                const orphanedEntries = await cleanOrphanedHookEntries(dryRun, repoRoot);\n                if (orphanedEntries.length > 0) {\n                    for (const entry of orphanedEntries) {\n                        console.log(kleur.red(`    ✗ ${entry}`));\n                    }\n                } else {\n                    console.log(kleur.dim('    ✓ No orphaned hook entries found'));\n                }\n            }\n\n            // Clean skills\n            if (!hooksOnly) {\n                console.log(kleur.bold('\\n  Scanning ~/.xtrm/skills/active/...'));\n                result.skillsRemoved = await cleanSkills(dryRun);\n\n                if (result.skillsRemoved.length > 0) {\n                    for (const d of result.skillsRemoved) {\n                        console.log(kleur.red(`    ✗ ${d}/`));\n                    }\n                } else {\n                    console.log(kleur.dim('    ✓ No orphaned skills found'));\n                }\n            }\n\n            // Summary\n            const totalRemoved = result.hooksRemoved.length + result.skillsRemoved.length + result.cacheRemoved.length;\n\n            if (totalRemoved === 0) {\n                console.log(t.boldGreen('\\n  ✓ All components are canonical — nothing to clean\\n'));\n                return;\n            }\n\n            console.log(kleur.bold('\\n  Summary:'));\n            if (result.hooksRemoved.length > 0) {\n                console.log(kleur.red(`    ${result.hooksRemoved.length} orphaned hook(s)`));\n            }\n            if (result.skillsRemoved.length > 0) {\n                console.log(kleur.red(`    ${result.skillsRemoved.length} orphaned skill(s)`));\n            }\n            if (result.cacheRemoved.length > 0) {\n                console.log(kleur.dim(`    ${result.cacheRemoved.length} cache director(y/ies)`));\n            }\n\n            if (!dryRun) {\n                console.log(t.boldGreen('\\n  ✓ Cleanup complete\\n'));\n                console.log(kleur.dim('  Run `xtrm install all -y` to reinstall canonical components\\n'));\n            } else {\n                console.log(kleur.yellow('\\n  ℹ Dry run — run without --dry-run to apply changes\\n'));\n            }\n        });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawnSync } from 'node:child_process';\nimport { existsSync, rmSync, unlinkSync } from 'node:fs';\nimport { join, dirname, isAbsolute, resolve } from 'node:path';\nimport { t } from '../utils/theme.js';\nimport { unregisterPluginsForWorktree } from '../utils/worktree-session.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\ninterface EndOptions {\n    draft: boolean;\n    keep: boolean;\n    yes: boolean;\n    dryRun: boolean;\n}\n\ninterface EndIssue {\n    id: string;\n    title: string;\n    description: string;\n    reason: string;\n}\n\nfunction git(args: string[], cwd: string): { ok: boolean; out: string; err: string } {\n    const r = spawnSync('git', args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n    return { ok: r.status === 0, out: (r.stdout ?? '').trim(), err: (r.stderr ?? '').trim() };\n}\n\nfunction bd(args: string[], cwd: string): { ok: boolean; out: string } {\n    const r = spawnSync('bd', args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n    return { ok: r.status === 0, out: (r.stdout ?? '').trim() };\n}\n\nfunction npm(args: string[], cwd: string): { ok: boolean; out: string; err: string } {\n    const r = spawnSync('npm', args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n    return { ok: r.status === 0, out: (r.stdout ?? '').trim(), err: (r.stderr ?? '').trim() };\n}\n\nfunction resolveMainRepoRoot(cwd: string): string {\n    const commonDirResult = git(['rev-parse', '--git-common-dir'], cwd);\n    if (commonDirResult.ok && commonDirResult.out) {\n        const commonDir = isAbsolute(commonDirResult.out)\n            ? commonDirResult.out\n            : resolve(cwd, commonDirResult.out);\n        return commonDir.endsWith('/.git') || commonDir.endsWith('\\\\.git')\n            ? dirname(commonDir)\n            : commonDir;\n    }\n\n    const fallback = git(['rev-parse', '--show-toplevel'], cwd);\n    return fallback.ok && fallback.out ? fallback.out : cwd;\n}\n\nfunction clearStatuslineClaim(repoRoot: string): void {\n    try {\n        const claimFile = join(repoRoot, '.xtrm', 'statusline-claim');\n        if (existsSync(claimFile)) unlinkSync(claimFile);\n    } catch {\n        // non-fatal\n    }\n}\n\ninterface WorktreeCleanupResult {\n    removed: boolean;\n    alreadyMissing: boolean;\n    warnings: string[];\n}\n\nfunction cleanupWorktreePath(worktreePath: string, repoRoot: string): WorktreeCleanupResult {\n    const warnings: string[] = [];\n    const removeResult = spawnSync(\n        'git',\n        ['worktree', 'remove', worktreePath, '--force'],\n        { cwd: repoRoot, encoding: 'utf8', stdio: 'pipe' },\n    );\n\n    if (removeResult.status !== 0) {\n        const errorText = (removeResult.stderr ?? '').trim();\n        if (errorText) warnings.push(errorText);\n    }\n\n    const pruneResult = spawnSync('git', ['worktree', 'prune', '--expire', 'now'], {\n        cwd: repoRoot,\n        encoding: 'utf8',\n        stdio: 'pipe',\n    });\n    if (pruneResult.status !== 0 && (pruneResult.stderr ?? '').trim()) {\n        warnings.push((pruneResult.stderr ?? '').trim());\n    }\n\n    const isMissing = !existsSync(worktreePath);\n    if (isMissing) {\n        return {\n            removed: true,\n            alreadyMissing: removeResult.status !== 0,\n            warnings,\n        };\n    }\n\n    try {\n        rmSync(worktreePath, { recursive: true, force: true });\n    } catch (error) {\n        const message = error instanceof Error ? error.message : String(error);\n        warnings.push(`Could not remove directory ${worktreePath}: ${message}`);\n    }\n\n    return {\n        removed: !existsSync(worktreePath),\n        alreadyMissing: false,\n        warnings,\n    };\n}\n\n// Common conventional-commit scope words that are never beads IDs\nconst CONVENTIONAL_SCOPES = new Set([\n    'feat', 'fix', 'chore', 'docs', 'test', 'tests', 'refactor', 'style',\n    'perf', 'ci', 'build', 'revert', 'wip', 'auth', 'api', 'ui', 'db',\n    'merge', 'memory', 'end', 'sync', 'core', 'cli', 'hooks', 'skills',\n]);\n\n/** Extract beads issue IDs from commit messages like \"reason (xtrm-skg2)\" or \"reason (8jr5.8)\" */\nfunction extractIssueIds(commitLog: string): string[] {\n    // Require at least one hyphen so single-word scopes like (auth) are excluded\n    const matches = commitLog.matchAll(/\\(([a-z][a-z0-9]*-[a-z0-9]+(?:\\.[0-9]+)?)\\)/gi);\n    return [...new Set(\n        [...matches]\n            .map(m => m[1].toLowerCase())\n            .filter(id => !CONVENTIONAL_SCOPES.has(id)),\n    )];\n}\n\nfunction normalizePrTitle(input: string): string {\n    const trimmed = input.trim().replace(/[.\\s]+$/g, '');\n    if (!trimmed) return 'Update worktree session';\n    return trimmed.charAt(0).toUpperCase() + trimmed.slice(1);\n}\n\nfunction isGenericPrTitle(title: string): boolean {\n    return /^(session changes|update|updates|misc|wip|work in progress)$/i.test(title.trim());\n}\n\n/** Infer a PR title from the commit log (first meaningful commit) with a file-based fallback. */\nfunction inferTitleFromCommitsOrFiles(commitLog: string, changedFiles: string[]): string {\n    // Try the first commit message subject line\n    const firstCommit = commitLog.split('\\n')[0]?.replace(/^[a-f0-9]+ /, '').trim() ?? '';\n    if (firstCommit && !isGenericPrTitle(firstCommit)) {\n        return normalizePrTitle(firstCommit);\n    }\n\n    // File-based fallback: derive from dominant changed area\n    const hasCli = changedFiles.some(f => f.startsWith('cli/src/'));\n    const hasTests = changedFiles.some(f => f.startsWith('cli/test/'));\n    const hasHooks = changedFiles.some(f => f.startsWith('hooks/'));\n    const hasSkills = changedFiles.some(f => f.startsWith('skills/'));\n    const hasDocs = changedFiles.some(f => f.startsWith('docs/') || f === 'README.md' || f === 'XTRM-GUIDE.md');\n    const hasConfig = changedFiles.some(f => f.startsWith('config/'));\n\n    if (hasCli && hasTests) return 'Update CLI with tests';\n    if (hasCli && hasHooks) return 'Update CLI and hooks';\n    if (hasCli) return 'Update CLI';\n    if (hasHooks) return 'Update hooks';\n    if (hasSkills) return 'Update skills';\n    if (hasDocs) return 'Update documentation';\n    if (hasConfig) return 'Update config';\n\n    return 'Update worktree session';\n}\n\n/** Generate PR title from issue data, with deterministic fallback if issue-derived titles are too generic. */\nfunction buildPrTitle(issues: EndIssue[], changedFiles: string[], commitLog: string): string {\n    if (issues.length === 0) return inferTitleFromCommitsOrFiles(commitLog, changedFiles);\n\n    if (issues.length === 1) {\n        const single = normalizePrTitle(issues[0].title || issues[0].reason || issues[0].id);\n        return isGenericPrTitle(single) ? inferTitleFromCommitsOrFiles(commitLog, changedFiles) : single;\n    }\n\n    // Multiple issues: first issue title + count, fall back to commit/file inference\n    const multi = normalizePrTitle(issues[0].title || issues[0].reason || issues[0].id);\n    return isGenericPrTitle(multi)\n        ? inferTitleFromCommitsOrFiles(commitLog, changedFiles)\n        : `${multi} (+${issues.length - 1} more)`;\n}\n\nfunction getChangedFilesSinceBase(cwd: string, defaultBranch: string, pathspec?: string): string[] {\n    const args = ['diff', '--name-only', `origin/${defaultBranch}..HEAD`];\n    if (pathspec) args.push('--', pathspec);\n    const result = git(args, cwd);\n    return result.out.split('\\n').map(line => line.trim()).filter(Boolean);\n}\n\nfunction maybeRebuildCliDist(cwd: string, defaultBranch: string): void {\n    const changedCliSources = getChangedFilesSinceBase(cwd, defaultBranch, 'cli/src/');\n    if (changedCliSources.length === 0) return;\n\n    console.log(kleur.dim('  cli/src changed in this session — rebuilding cli/dist...'));\n    const buildResult = npm(['run', 'build', '--workspace', 'cli', '--ignore-scripts'], cwd);\n    if (!buildResult.ok) {\n        const details = [buildResult.out, buildResult.err].filter(Boolean).join('\\n');\n        console.error(kleur.red(`\n  ✗ Auto-rebuild failed:\n${details ? `\n${details}\n` : ''}`));\n        process.exit(1);\n    }\n\n    git(['add', 'cli/dist'], cwd);\n    const stagedDist = git(['diff', '--cached', '--name-only', '--', 'cli/dist/'], cwd).out\n        .split('\\n')\n        .map(line => line.trim())\n        .filter(Boolean);\n\n    if (stagedDist.length === 0) {\n        console.log(t.success('  ✓ cli/dist already up to date'));\n        return;\n    }\n\n    const commitResult = git(['commit', '-m', 'chore: rebuild dist after source changes'], cwd);\n    if (!commitResult.ok) {\n        console.error(kleur.red(`\n  ✗ Could not commit rebuilt cli/dist:\n  ${commitResult.err}\n`));\n        process.exit(1);\n    }\n\n    console.log(t.success(`  ✓ Rebuilt cli/dist and committed ${stagedDist.length} file(s)`));\n}\n\n/**\n * Scan the cumulative diff against `upstream` for any path that would be\n * introduced as a symlink (mode 120000) under one of the guarded prefixes.\n *\n * Guarded prefixes: `.beads/` and `.specialists/`. Both have parent-tracked\n * content and are dir->symlink-swapped (or rm'd) in worktrees. A squash-merge\n * of a branch carrying such a symlink wipes the parent's directory on main\n * (real incident: projects/infra PR #39 for `.beads`; same shape applies to\n * `.specialists/user/*` per xtrm-6jd2).\n *\n * Kept under the historical name `findBeadsSymlinkIntroductions` so existing\n * imports continue to work; covers both prefixes now.\n */\nexport function findBeadsSymlinkIntroductions(cwd: string, upstream: string): string[] {\n    const guardedPrefixes = ['.beads/', '.specialists/'];\n    const diffResult = git(['diff', '--raw', `${upstream}..HEAD`, '--', ...guardedPrefixes], cwd);\n    if (!diffResult.ok) {\n        console.warn(kleur.yellow('  ⚠ Could not inspect guarded-path diff for symlink mode changes; continuing safely.'));\n        return [];\n    }\n\n    return [...new Set(\n        diffResult.out\n            .split('\\n')\n            .map(line => line.trim())\n            .filter(Boolean)\n            .flatMap(line => {\n                const match = line.match(/^:[0-9]{6} ([0-9]{6}) [0-9a-f]{7,40} [0-9a-f]{7,40} ([A-Z]+(?:[0-9]+)?)\\t(.+)$/);\n                if (!match) return [];\n                const destinationMode = match[1];\n                const path = match[3];\n                if (destinationMode !== '120000') return [];\n                return guardedPrefixes.some(p => path.startsWith(p)) ? [path] : [];\n            }),\n    )];\n}\n\nfunction printBeadsSymlinkGuardError(paths: string[], upstream: string): void {\n    console.error(kleur.red('\\n  ✗ Refusing to push: guarded-path symlink mode change detected\\n'));\n    for (const path of paths) {\n        console.error(kleur.red(`    ${path}`));\n    }\n    // Group recovery hint by top-level prefix so the operator restores only\n    // what's affected. `.beads/` and `.specialists/` both need the upstream\n    // tree restored to clear the symlink mode.\n    const affectedPrefixes = [...new Set(paths.map(p => p.split('/')[0] + '/'))];\n    const restoreTargets = affectedPrefixes.join(' ');\n    console.error(kleur.dim(`\\n  Recover with:\n    git restore --source=${upstream} -- ${restoreTargets}\\n  Then re-run: xt end\\n`));\n}\n\n/** Generate PR body from issues, commit log, diff stat */\nfunction buildPrBody(\n    issues: Array<{ id: string; title: string; description: string; reason: string }>,\n    commitLog: string,\n    diffStat: string,\n    branch: string,\n): string {\n    const lines: string[] = [];\n\n    lines.push('## What');\n    if (issues.length > 0) {\n        for (const issue of issues) {\n            lines.push(`- **${issue.id}**: ${issue.title}`);\n            if (issue.description) lines.push(`  ${issue.description.split('\\n')[0]}`);\n        }\n    } else {\n        lines.push(`Session branch: \\`${branch}\\``);\n    }\n\n    if (issues.some(i => i.reason)) {\n        lines.push('', '## Why');\n        for (const issue of issues) {\n            if (issue.reason) lines.push(`- ${issue.id}: ${issue.reason}`);\n        }\n    }\n\n    if (commitLog) {\n        lines.push('', '## Changes');\n        const commits = commitLog.split('\\n').slice(0, 20);\n        lines.push(...commits.map(c => `- ${c}`));\n        if (commitLog.split('\\n').length > 20) lines.push('- *(and more...)*');\n    }\n\n    if (diffStat) {\n        lines.push('', '## Files changed');\n        lines.push('```');\n        lines.push(diffStat);\n        lines.push('```');\n    }\n\n    if (issues.length > 0) {\n        lines.push('', `Closes: ${issues.map(i => i.id).join(' ')}`);\n    }\n\n    return lines.join('\\n');\n}\n\nexport function createEndCommand(): Command {\n    return new Command('end')\n        .description('Close session: rebase, push, open PR, link beads issues, clean up worktree')\n        .option('--draft', 'Open PR as draft', false)\n        .option('--keep', 'Keep worktree after PR creation (default: prompt)', false)\n        .option('-y, --yes', 'Skip confirmation prompts', false)\n        .option('--dry-run', 'Preview PR title, body, and linked issues without pushing or creating PR', false)\n        .action(async (opts: EndOptions) => {\n            const cwd = process.cwd();\n\n            // 1. Gate: must be in an xt worktree (branch starts with xt/)\n            const branchResult = git(['rev-parse', '--abbrev-ref', 'HEAD'], cwd);\n            const branch = branchResult.out;\n\n            if (!branch.startsWith('xt/')) {\n                console.error(kleur.red(\n                    `\\n  ✗ Not in an xt worktree (current branch: ${branch})\\n` +\n                    `  xt end must be run from inside a worktree created by xt claude/pi\\n`\n                ));\n                process.exit(1);\n            }\n\n            // 2. Gate: no uncommitted changes\n            const statusResult = git(['status', '--porcelain'], cwd);\n            if (statusResult.out.length > 0) {\n                console.error(kleur.red(\n                    '\\n  ✗ Uncommitted changes detected. Commit or stash before running xt end.\\n'\n                ));\n                console.error(kleur.dim(statusResult.out));\n                process.exit(1);\n            }\n\n            console.log(t.bold(`\\n  xt end — closing session on ${branch}\\n`));\n\n            // 3. Detect default branch (avoids hardcoding main vs master)\n            let defaultBranch = 'main';\n            const symRef = git(['symbolic-ref', 'refs/remotes/origin/HEAD', '--short'], cwd);\n            if (symRef.ok && symRef.out) {\n                defaultBranch = symRef.out.replace('origin/', '');\n            } else if (git(['rev-parse', '--verify', 'origin/master'], cwd).ok) {\n                defaultBranch = 'master';\n            }\n\n            // 4. Collect closed issues from commit log\n            const logResult = git(['log', `origin/${defaultBranch}..HEAD`, '--oneline'], cwd);\n            const issueIds = extractIssueIds(logResult.out);\n\n            const issues: EndIssue[] = [];\n            for (const id of issueIds) {\n                const queryResult = bd(['query', `id=${id}`, '--all', '--json'], cwd);\n                if (queryResult.ok) {\n                    try {\n                        const data = JSON.parse(queryResult.out);\n                        const first = Array.isArray(data) ? data[0] : data;\n                        if (first) {\n                            issues.push({\n                                id,\n                                title: first.title ?? id,\n                                description: first.description ?? '',\n                                reason: first.close_reason ?? '',\n                            });\n                            continue;\n                        }\n                    } catch {\n                        // fall through to id-only record\n                    }\n                }\n                issues.push({ id, title: id, description: '', reason: '' });\n            }\n\n            if (issues.length > 0) {\n                console.log(t.success(`  ✓ Found ${issues.length} closed issue(s): ${issueIds.join(', ')}`));\n            } else if (issueIds.length > 0) {\n                console.log(kleur.yellow(`  ⚠ Found issue references in commits but could not load bead details: ${issueIds.join(', ')}`));\n            } else {\n                console.log(kleur.dim('  ○ No beads issues found in commit log'));\n            }\n\n            // 5. Dry-run: build PR preview from local state and exit before any destructive steps\n            if (opts.dryRun) {\n                const fullLog = git(['log', `origin/${defaultBranch}..HEAD`, '--oneline'], cwd).out;\n                const diffStat = git(['diff', `origin/${defaultBranch}`, '--stat'], cwd).out;\n                const changedFiles = git(['diff', `origin/${defaultBranch}`, '--name-only'], cwd).out.split('\\n').filter(Boolean);\n                const prTitle = buildPrTitle(issues, changedFiles, fullLog);\n                const prBody = buildPrBody(issues, fullLog, diffStat, branch);\n\n                console.log(t.bold('\\n  [DRY RUN] PR preview\\n'));\n                console.log(`  ${kleur.bold('Title:')} ${prTitle}`);\n                if (issues.length > 0) {\n                    console.log(`  ${kleur.bold('Issues:')} ${issueIds.join(', ')}`);\n                }\n                console.log(`\\n  ${kleur.bold('Body:')}`);\n                for (const line of prBody.split('\\n')) {\n                    console.log(`  ${kleur.dim(line)}`);\n                }\n                console.log(t.accent('\\n  [DRY RUN] No changes made — re-run without --dry-run to push and create PR\\n'));\n                return;\n            }\n\n            // 6. Fetch to ensure origin/<default> is current\n            console.log(kleur.dim(`  Fetching origin/${defaultBranch}...`));\n            git(['fetch', 'origin', defaultBranch], cwd);\n\n            // 7. Rebase\n            console.log(kleur.dim(`  Rebasing onto origin/${defaultBranch}...`));\n            const rebaseResult = git(['rebase', `origin/${defaultBranch}`], cwd);\n            if (!rebaseResult.ok) {\n                const conflicts = git(['diff', '--name-only', '--diff-filter=U'], cwd).out;\n                console.error(kleur.red('\\n  ✗ Rebase conflicts detected:\\n'));\n                if (conflicts) {\n                    for (const f of conflicts.split('\\n')) console.error(kleur.yellow(`    ${f}`));\n                }\n                console.error(kleur.dim(\n                    '\\n  Resolve conflicts, then:\\n' +\n                    '    git add <files> && git rebase --continue\\n' +\n                    '  Then re-run: xt end\\n'\n                ));\n                process.exit(1);\n            }\n            console.log(t.success(`  ✓ Rebased onto origin/${defaultBranch}`));\n\n            // 8. Rebuild generated CLI bundle if session commits touched cli/src/\n            maybeRebuildCliDist(cwd, defaultBranch);\n\n            // 9. Guard: refuse .beads symlink introductions before push\n            const beadsSymlinkPaths = findBeadsSymlinkIntroductions(cwd, `origin/${defaultBranch}`);\n            if (beadsSymlinkPaths.length > 0) {\n                printBeadsSymlinkGuardError(beadsSymlinkPaths, `origin/${defaultBranch}`);\n                process.exit(1);\n            }\n\n            // 10. Push (force-with-lease = safe after rebase)\n            const pushConfirmed = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: `Force-push ${branch} to origin with --force-with-lease?`,\n                initial: false,\n            });\n            if (!pushConfirmed) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            console.log(kleur.dim('  Pushing branch...'));\n            const pushResult = git(['push', 'origin', branch, '--force-with-lease'], cwd);\n            if (!pushResult.ok) {\n                console.error(kleur.red(`\\n  ✗ Push failed:\\n  ${pushResult.err}\\n`));\n                process.exit(1);\n            }\n            console.log(t.success(`  ✓ Pushed ${branch}`));\n\n            // 9. Build PR content\n            const fullLog = git(['log', `origin/${defaultBranch}..HEAD`, '--oneline'], cwd).out;\n            const diffStat = git(['diff', `origin/${defaultBranch}`, '--stat'], cwd).out;\n            const changedFiles = git(['diff', `origin/${defaultBranch}`, '--name-only'], cwd).out.split('\\n').filter(Boolean);\n            const prTitle = buildPrTitle(issues, changedFiles, fullLog);\n            const prBody = buildPrBody(issues, fullLog, diffStat, branch);\n\n            // 10. Create PR\n            console.log(kleur.dim('  Creating PR...'));\n            const prArgs = ['pr', 'create', '--title', prTitle, '--body', prBody];\n            if (opts.draft) prArgs.push('--draft');\n\n            const prResult = spawnSync('gh', prArgs, { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (prResult.status !== 0) {\n                console.error(kleur.red(`\\n  ✗ PR creation failed:\\n  ${prResult.stderr?.trim()}\\n`));\n                process.exit(1);\n            }\n            const prUrl = prResult.stdout.trim();\n            console.log(t.success(`  ✓ PR created: ${prUrl}`));\n\n            // 11. Beads linkage: add PR URL to each closed issue's notes\n            for (const issue of issues) {\n                bd(['update', issue.id, '--notes', `PR: ${prUrl}`], cwd);\n            }\n            if (issues.length > 0) {\n                console.log(t.success(`  ✓ Linked PR to ${issues.length} issue(s)`));\n            }\n\n            // 12. Worktree cleanup\n            if (!opts.keep) {\n                const doRemove = await confirmDestructiveAction({\n                    yes: opts.yes,\n                    message: `Remove local worktree at ${cwd}?`,\n                    initial: false,\n                });\n\n                if (doRemove) {\n                    const repoRoot = resolveMainRepoRoot(cwd);\n                    const cleanup = cleanupWorktreePath(cwd, repoRoot);\n\n                    if (cleanup.removed) {\n                        unregisterPluginsForWorktree(cwd);\n                        clearStatuslineClaim(repoRoot);\n                        if (cleanup.alreadyMissing) {\n                            console.log(t.success('  ✓ Worktree already absent; cleaned stale git metadata'));\n                        } else {\n                            console.log(t.success('  ✓ Worktree removed'));\n                        }\n                    } else {\n                        console.log(kleur.yellow('  ⚠ Worktree cleanup incomplete — manual remediation required:'));\n                        console.log(kleur.dim(`    git -C ${repoRoot} worktree remove ${cwd} --force`));\n                        console.log(kleur.dim(`    git -C ${repoRoot} worktree prune --expire now`));\n                    }\n\n                    for (const warning of cleanup.warnings) {\n                        console.log(kleur.dim(`    ${warning}`));\n                    }\n                }\n            }\n\n            console.log(t.boldGreen('\\n  ✓ Session closed\\n'));\n            console.log(kleur.dim(`  PR: ${prUrl}`));\n            console.log(kleur.dim('  Merge: review and merge when CI is green\\n'));\n        });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawnSync } from 'node:child_process';\nimport { existsSync, readdirSync, rmSync, statSync, unlinkSync, readFileSync } from 'node:fs';\nimport { join, dirname, isAbsolute, resolve, sep } from 'node:path';\nimport type { SessionMeta } from '../utils/worktree-session.js';\nimport { unregisterPluginsForWorktree } from '../utils/worktree-session.js';\nimport { t } from '../utils/theme.js';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\nexport interface WorktreeInfo {\n    path: string;\n    branch: string;\n    head: string;\n    prunable: boolean;\n    runtime?: 'claude' | 'pi';\n    launchedAt?: string;\n    lastLogMsg?: string;\n    lastLogTime?: Date;\n    nestedInPath?: string;\n}\n\nexport type PrClassification =\n    | 'no-pr'\n    | 'clean'\n    | 'needs-rebase'\n    | 'conflicted'\n    | 'blocked'\n    | 'closed'\n    | 'unknown';\n\nexport interface PrStatus {\n    component: 'xt.pr_status';\n    branch: string;\n    state: string | null;\n    merge_state: string | null;\n    classification: PrClassification;\n    outcome: 'ok' | 'no_pr' | 'error';\n    pr_url?: string;\n    pr_number?: number;\n    head_sha?: string;\n    base_sha?: string;\n    base_ref?: string;\n    remediation: string;\n    error?: string;\n}\n\nexport interface PrAuditFinding {\n    component: 'xt.pr_audit.finding';\n    repo: string;\n    branch: string;\n    pr_url?: string;\n    pr_number?: number;\n    state: string | null;\n    merge_state: string | null;\n    classification: PrClassification;\n    outcome: PrStatus['outcome'];\n    suggested_action: string;\n    suggestion_command: string;\n    checked_at_ms: number;\n    error?: string;\n}\n\nexport interface PrAuditReport {\n    component: 'xt.pr_audit';\n    repo: string;\n    checked_at_ms: number;\n    findings: PrAuditFinding[];\n    summary: Record<PrClassification, number>;\n}\n\nexport interface BranchGcFinding {\n    component: 'xt.branch_gc.finding';\n    repo: string;\n    branch: string;\n    pr_state: string | null;\n    classification: PrClassification;\n    action: 'delete' | 'skip';\n    reason: string;\n    outcome: 'dry_run' | 'pending' | 'deleted' | 'skipped' | 'failed';\n    checked_at_ms: number;\n    command?: string;\n    pr_url?: string;\n    pr_number?: number;\n    error?: string;\n}\n\nexport interface BranchGcReport {\n    component: 'xt.branch_gc';\n    repo: string;\n    checked_at_ms: number;\n    mode: 'dry_run' | 'apply';\n    prefixes: string[];\n    findings: BranchGcFinding[];\n    summary: { delete: number; skip: number; deleted: number; failed: number };\n}\n\nexport type RestartAuditFindingKind =\n    | 'orphaned-managed-dir'\n    | 'prunable-worktree'\n    | 'branch-without-worktree'\n    | 'pr-attention'\n    | 'closed-pr-branch';\n\nexport interface RestartAuditFinding {\n    component: 'xt.restart_audit.finding';\n    repo: string;\n    worktree_path: string | null;\n    branch: string | null;\n    pr_classification: PrClassification | null;\n    finding_kind: RestartAuditFindingKind;\n    suggested_action: string;\n    suggestion_command: string;\n    checked_at_ms: number;\n    pr_url?: string;\n    pr_number?: number;\n    error?: string;\n}\n\nexport interface RestartAuditReport {\n    component: 'xt.restart_audit';\n    repo: string;\n    checked_at_ms: number;\n    prefixes: string[];\n    findings: RestartAuditFinding[];\n    summary: Record<RestartAuditFindingKind, number>;\n}\n\ninterface GitHubPrView {\n    state?: string | null;\n    url?: string | null;\n    number?: number | null;\n    mergeStateStatus?: string | null;\n    mergeable?: string | null;\n    headRefOid?: string | null;\n    baseRefOid?: string | null;\n    baseRefName?: string | null;\n}\n\ninterface RawWorktreeInfo {\n    path: string;\n    branch?: string;\n    head?: string;\n    prunable: boolean;\n}\n\nfunction git(args: string[], cwd: string): { ok: boolean; out: string; err: string } {\n    const r = spawnSync('git', args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n    return {\n        ok: r.status === 0,\n        out: (r.stdout ?? '').trim(),\n        err: (r.stderr ?? '').trim(),\n    };\n}\n\nfunction parseGitWorktreeList(repoRoot: string): RawWorktreeInfo[] {\n    const r = git(['worktree', 'list', '--porcelain'], repoRoot);\n    if (!r.ok) return [];\n\n    const worktrees: RawWorktreeInfo[] = [];\n    let current: Partial<RawWorktreeInfo> = {};\n\n    for (const line of r.out.split('\\n')) {\n        if (line.startsWith('worktree ')) {\n            if (current.path) {\n                worktrees.push({\n                    path: current.path,\n                    branch: current.branch,\n                    head: current.head,\n                    prunable: Boolean(current.prunable),\n                });\n            }\n            current = { path: line.slice('worktree '.length), prunable: false };\n            continue;\n        }\n\n        if (line.startsWith('HEAD ')) {\n            current.head = line.slice('HEAD '.length);\n            continue;\n        }\n\n        if (line.startsWith('branch ')) {\n            current.branch = line.slice('branch '.length);\n            continue;\n        }\n\n        if (line === 'prunable') {\n            current.prunable = true;\n        }\n    }\n\n    if (current.path) {\n        worktrees.push({\n            path: current.path,\n            branch: current.branch,\n            head: current.head,\n            prunable: Boolean(current.prunable),\n        });\n    }\n\n    return worktrees;\n}\n\nfunction detectNestedParents(paths: string[]): Map<string, string> {\n    const nested = new Map<string, string>();\n    const sorted = [...paths].sort((a, b) => a.length - b.length);\n\n    for (const childPath of sorted) {\n        for (const parentPath of sorted) {\n            if (childPath === parentPath) continue;\n            if (childPath.startsWith(`${parentPath}${sep}`)) {\n                nested.set(childPath, parentPath);\n                break;\n            }\n        }\n    }\n\n    return nested;\n}\n\n/** Parse `git worktree list --porcelain` output into WorktreeInfo array */\nexport function listXtWorktrees(repoRoot: string): WorktreeInfo[] {\n    const allWorktrees = parseGitWorktreeList(repoRoot);\n    const xtWorktrees = allWorktrees.filter(wt => wt.branch?.startsWith('refs/heads/xt/'));\n    const nestedParents = detectNestedParents(xtWorktrees.map(wt => wt.path));\n\n    const worktrees: WorktreeInfo[] = xtWorktrees.map(wt => ({\n        path: wt.path,\n        branch: wt.branch ?? '',\n        head: wt.head ?? '',\n        prunable: wt.prunable,\n        nestedInPath: nestedParents.get(wt.path),\n    }));\n\n    // Enrich with session meta and last git activity\n    for (const wt of worktrees) {\n        try {\n            const metaFile = existsSync(join(wt.path, '.xtrm', 'session-meta.json'))\n                ? join(wt.path, '.xtrm', 'session-meta.json')\n                : join(wt.path, '.session-meta.json');\n            const raw = readFileSync(metaFile, 'utf8');\n            const meta = JSON.parse(raw) as SessionMeta;\n            wt.runtime = meta.runtime;\n            wt.launchedAt = meta.launchedAt;\n        } catch {\n            // no meta — older worktree\n        }\n\n        const logR = spawnSync('git', ['log', '-1', '--format=%ci\\x1f%s', 'HEAD'], {\n            cwd: wt.path,\n            encoding: 'utf8',\n            stdio: 'pipe',\n        });\n\n        if (logR.status === 0 && logR.stdout.trim()) {\n            const sepIdx = logR.stdout.trim().indexOf('\\x1f');\n            if (sepIdx !== -1) {\n                wt.lastLogTime = new Date(logR.stdout.slice(0, sepIdx).trim());\n                wt.lastLogMsg = logR.stdout.slice(sepIdx + 1).trim();\n            }\n        }\n    }\n\n    return worktrees;\n}\n\nfunction getManagedWorktreeRoot(repoRoot: string): string {\n    return join(repoRoot, '.xtrm', 'worktrees');\n}\n\nfunction listOrphanManagedDirs(repoRoot: string): string[] {\n    const managedRoot = getManagedWorktreeRoot(repoRoot);\n    if (!existsSync(managedRoot)) return [];\n\n    const activePaths = new Set(parseGitWorktreeList(repoRoot).map(wt => resolve(wt.path)));\n    const orphans: string[] = [];\n\n    for (const entry of readdirSync(managedRoot)) {\n        const fullPath = join(managedRoot, entry);\n        let isDirectory = false;\n        try {\n            isDirectory = statSync(fullPath).isDirectory();\n        } catch {\n            continue;\n        }\n\n        if (!isDirectory) continue;\n        if (!activePaths.has(resolve(fullPath))) {\n            orphans.push(fullPath);\n        }\n    }\n\n    return orphans.sort();\n}\n\nfunction runGitWorktreePrune(repoRoot: string): { ok: boolean; message: string } {\n    const prune = git(['worktree', 'prune', '--expire', 'now'], repoRoot);\n    return {\n        ok: prune.ok,\n        message: prune.ok ? 'pruned stale git worktree metadata' : prune.err || 'git worktree prune failed',\n    };\n}\n\n/** Check if a branch has been merged into main */\nfunction isMergedIntoMain(branch: string, repoRoot: string): boolean {\n    const branchShort = branch.replace('refs/heads/', '');\n    const r = spawnSync('git', ['branch', '--merged', 'origin/main', '--list', branchShort], {\n        cwd: repoRoot, encoding: 'utf8', stdio: 'pipe',\n    });\n    return (r.stdout ?? '').includes(branchShort);\n}\n\nfunction normalizeBranchName(branch: string): string {\n    return branch.replace('refs/heads/', '');\n}\n\nfunction redactGhError(value: string): string {\n    return value\n        .replace(/gh[pousr]_[A-Za-z0-9_]+/g, '[redacted-token]')\n        .replace(/(token|authorization|password)=([^\\s]+)/gi, '$1=[redacted]')\n        .trim()\n        .slice(0, 500);\n}\n\nfunction remediationFor(classification: PrClassification): string {\n    switch (classification) {\n        case 'no-pr':\n            return 'open a PR or skip PR drift remediation for this branch';\n        case 'clean':\n            return 'no PR drift remediation needed';\n        case 'needs-rebase':\n            return 'rebase branch onto the PR base and push with --force-with-lease';\n        case 'conflicted':\n            return 'manual conflict resolution required before rebase/merge can continue';\n        case 'blocked':\n            return 'inspect GitHub checks/review/draft status before merge or rebase automation';\n        case 'closed':\n            return 'PR is closed or merged; branch may be eligible for cleanup after local checks';\n        case 'unknown':\n            return 'retry gh PR status lookup or inspect the PR manually';\n    }\n}\n\nexport function classifyPrStatus(\n    state: string | null | undefined,\n    mergeStateStatus: string | null | undefined,\n    mergeable?: string | null,\n): PrClassification {\n    const normalizedState = state?.toUpperCase() ?? null;\n    if (!normalizedState) return 'no-pr';\n    if (normalizedState === 'CLOSED' || normalizedState === 'MERGED') return 'closed';\n    if (normalizedState !== 'OPEN') return 'unknown';\n\n    const mergeState = mergeStateStatus?.toUpperCase() ?? null;\n    switch (mergeState) {\n        case 'CLEAN':\n        case 'HAS_HOOKS':\n            return 'clean';\n        case 'BEHIND':\n            return 'needs-rebase';\n        case 'DIRTY':\n            return 'conflicted';\n        case 'BLOCKED':\n        case 'DRAFT':\n        case 'UNSTABLE':\n            return 'blocked';\n    }\n\n    const normalizedMergeable = mergeable?.toUpperCase() ?? null;\n    if (normalizedMergeable === 'MERGEABLE') return 'clean';\n    if (normalizedMergeable === 'CONFLICTING') return 'conflicted';\n\n    return 'unknown';\n}\n\nfunction resolveBaseSha(repoRoot: string, baseRefName: string | null | undefined): string | null {\n    if (!baseRefName) return null;\n    const refResult = git(['rev-parse', `origin/${baseRefName}`], repoRoot);\n    return refResult.ok && refResult.out ? refResult.out : null;\n}\n\nfunction buildPrStatus(branch: string, pr: GitHubPrView | null, repoRoot: string, error?: string): PrStatus {\n    const branchShort = normalizeBranchName(branch);\n\n    if (error) {\n        return {\n            component: 'xt.pr_status',\n            branch: branchShort,\n            state: null,\n            merge_state: null,\n            classification: 'unknown',\n            outcome: 'error',\n            remediation: remediationFor('unknown'),\n            error,\n        };\n    }\n\n    if (!pr) {\n        return {\n            component: 'xt.pr_status',\n            branch: branchShort,\n            state: null,\n            merge_state: null,\n            classification: 'no-pr',\n            outcome: 'no_pr',\n            remediation: remediationFor('no-pr'),\n        };\n    }\n\n    const state = pr.state?.toUpperCase() ?? null;\n    const mergeState = pr.mergeStateStatus?.toUpperCase() ?? null;\n    const classification = classifyPrStatus(state, mergeState, pr.mergeable);\n    const baseSha = pr.baseRefOid ?? resolveBaseSha(repoRoot, pr.baseRefName);\n\n    return {\n        component: 'xt.pr_status',\n        branch: branchShort,\n        state,\n        merge_state: mergeState,\n        classification,\n        outcome: 'ok',\n        ...(pr.url ? { pr_url: pr.url } : {}),\n        ...(typeof pr.number === 'number' ? { pr_number: pr.number } : {}),\n        ...(pr.headRefOid ? { head_sha: pr.headRefOid } : {}),\n        ...(baseSha ? { base_sha: baseSha } : {}),\n        ...(pr.baseRefName ? { base_ref: pr.baseRefName } : {}),\n        remediation: remediationFor(classification),\n    };\n}\n\n/** Check if a branch has a PR and classify GitHub merge-state drift. */\nexport function getPrStatus(branch: string, repoRoot: string): PrStatus {\n    const branchShort = normalizeBranchName(branch);\n    const r = spawnSync('gh', [\n        'pr',\n        'list',\n        '--head',\n        branchShort,\n        '--state',\n        'all',\n        '--json',\n        'state,url,number,mergeStateStatus,mergeable,headRefOid,baseRefName',\n        '--limit',\n        '1',\n    ], {\n        cwd: repoRoot, encoding: 'utf8', stdio: 'pipe',\n    });\n\n    if (r.status !== 0) {\n        return buildPrStatus(branchShort, null, repoRoot, redactGhError(r.stderr || 'gh pr list failed'));\n    }\n\n    try {\n        const data = JSON.parse(r.stdout ?? '[]') as GitHubPrView[];\n        if (!Array.isArray(data) || data.length === 0) return buildPrStatus(branchShort, null, repoRoot);\n        return buildPrStatus(branchShort, data[0] ?? null, repoRoot);\n    } catch (error) {\n        const message = error instanceof Error ? error.message : String(error);\n        return buildPrStatus(branchShort, null, repoRoot, redactGhError(message));\n    }\n}\n\n\nfunction suggestedActionFor(status: PrStatus): string {\n    switch (status.classification) {\n        case 'no-pr':\n            return 'open PR if this branch is still active';\n        case 'clean':\n            return 'no operator action required';\n        case 'needs-rebase':\n            return 'rebase branch onto the PR base, then push with --force-with-lease';\n        case 'conflicted':\n            return 'operator must resolve conflicts manually';\n        case 'blocked':\n            return 'operator must inspect blocked checks/reviews/draft state';\n        case 'closed':\n            return 'review for safe worktree cleanup';\n        case 'unknown':\n            return 'operator must inspect PR status manually';\n    }\n}\n\nfunction suggestionCommandFor(repoRoot: string, status: PrStatus): string {\n    const branch = status.branch;\n    const prRef = status.pr_number ? String(status.pr_number) : status.pr_url;\n\n    switch (status.classification) {\n        case 'needs-rebase': {\n            const baseRef = status.base_ref ?? 'main';\n            return `git -C ${repoRoot} checkout ${branch} && git -C ${repoRoot} rebase origin/${baseRef} && git -C ${repoRoot} push --force-with-lease`;\n        }\n        case 'conflicted':\n        case 'blocked':\n            return prRef ? `gh pr view ${prRef} --web` : `gh pr list --head ${branch} --state all`;\n        case 'closed':\n            return 'xt worktree clean --dry-run';\n        case 'unknown':\n            return `gh pr list --head ${branch} --state all --json state,url,number,mergeStateStatus,mergeable`;\n        case 'no-pr':\n            return `gh pr create --head ${branch}`;\n        case 'clean':\n            return 'none';\n    }\n}\n\nfunction emptyPrAuditSummary(): Record<PrClassification, number> {\n    return {\n        'no-pr': 0,\n        clean: 0,\n        'needs-rebase': 0,\n        conflicted: 0,\n        blocked: 0,\n        closed: 0,\n        unknown: 0,\n    };\n}\n\nexport function auditWorktreePrs(repoRoot: string, checkedAtMs = Date.now()): PrAuditReport {\n    const findings = listXtWorktrees(repoRoot).map((wt): PrAuditFinding => {\n        const status = getPrStatus(wt.branch, repoRoot);\n        return {\n            component: 'xt.pr_audit.finding',\n            repo: repoRoot,\n            branch: status.branch,\n            ...(status.pr_url ? { pr_url: status.pr_url } : {}),\n            ...(typeof status.pr_number === 'number' ? { pr_number: status.pr_number } : {}),\n            state: status.state,\n            merge_state: status.merge_state,\n            classification: status.classification,\n            outcome: status.outcome,\n            suggested_action: suggestedActionFor(status),\n            suggestion_command: suggestionCommandFor(repoRoot, status),\n            checked_at_ms: checkedAtMs,\n            ...(status.error ? { error: status.error } : {}),\n        };\n    });\n\n    const summary = emptyPrAuditSummary();\n    for (const finding of findings) {\n        summary[finding.classification] += 1;\n    }\n\n    return {\n        component: 'xt.pr_audit',\n        repo: repoRoot,\n        checked_at_ms: checkedAtMs,\n        findings,\n        summary,\n    };\n}\n\nfunction isAttentionFinding(finding: PrAuditFinding): boolean {\n    return ['needs-rebase', 'conflicted', 'blocked', 'unknown'].includes(finding.classification);\n}\n\nfunction printPrAuditHuman(report: PrAuditReport): void {\n    console.log(t.bold('\\n  xt worktree PR audit\\n'));\n    console.log(kleur.dim(`  repo: ${report.repo}`));\n    console.log(kleur.dim(`  checked_at_ms: ${report.checked_at_ms}`));\n    console.log(kleur.dim(`  worktrees checked: ${report.findings.length}`));\n\n    const attention = report.findings.filter(isAttentionFinding);\n    console.log(kleur.dim(`  operator attention: ${attention.length}`));\n\n    if (report.findings.length === 0) {\n        console.log(kleur.dim('\\n  No xt worktrees found\\n'));\n        return;\n    }\n\n    for (const finding of report.findings) {\n        const marker = isAttentionFinding(finding) ? kleur.yellow('!') : kleur.green('✓');\n        const pr = finding.pr_url ? ` ${kleur.dim(finding.pr_url)}` : '';\n        console.log(`\\n  ${marker} ${kleur.bold(finding.branch)} ${finding.classification}${pr}`);\n        if (finding.merge_state) console.log(kleur.dim(`    merge_state: ${finding.merge_state}`));\n        console.log(kleur.dim(`    action: ${finding.suggested_action}`));\n        console.log(kleur.dim(`    command: ${finding.suggestion_command}`));\n        if (finding.error) console.log(kleur.dim(`    error: ${finding.error}`));\n    }\n\n    console.log('');\n}\n\n\nfunction normalizeBranchGcPrefixes(input: string | undefined): string[] {\n    const prefixes = (input ?? 'xt/')\n        .split(',')\n        .map(prefix => prefix.trim())\n        .filter(Boolean)\n        .map(prefix => prefix.endsWith('/') || prefix.endsWith('*') ? prefix.replace(/\\*$/, '') : `${prefix}/`);\n\n    return prefixes.length > 0 ? [...new Set(prefixes)] : ['xt/'];\n}\n\nfunction listManagedBranches(repoRoot: string, prefixes: string[]): string[] {\n    const branches = git(['for-each-ref', '--format=%(refname:short)', 'refs/heads'], repoRoot);\n    if (!branches.ok) return [];\n\n    return branches.out\n        .split('\\n')\n        .map(line => line.trim())\n        .filter(Boolean)\n        .filter(branch => prefixes.some(prefix => branch.startsWith(prefix)))\n        .sort();\n}\n\nfunction checkedOutBranches(repoRoot: string): Set<string> {\n    return new Set(parseGitWorktreeList(repoRoot)\n        .map(wt => wt.branch ? normalizeBranchName(wt.branch) : null)\n        .filter((branch): branch is string => Boolean(branch)));\n}\n\nfunction branchGcReason(status: PrStatus, isCheckedOut: boolean): string {\n    if (isCheckedOut) return 'branch is checked out in a worktree; remove/finish the worktree first';\n    if (status.state === 'MERGED') return 'PR is merged';\n    if (status.state === 'CLOSED') return 'PR is closed';\n\n    switch (status.classification) {\n        case 'closed':\n            return 'PR is safely closed';\n        case 'no-pr':\n            return 'no PR found for branch';\n        case 'unknown':\n            return status.error ? `unknown PR state: ${status.error}` : 'unknown PR state';\n        case 'clean':\n        case 'needs-rebase':\n        case 'conflicted':\n        case 'blocked':\n            return `PR is active (${status.classification})`;\n    }\n}\n\nfunction buildBranchGcFinding(repoRoot: string, branch: string, status: PrStatus, checkedAtMs: number, isCheckedOut: boolean): BranchGcFinding {\n    const shouldDelete = !isCheckedOut && (status.state === 'MERGED' || status.state === 'CLOSED' || status.classification === 'closed');\n\n    return {\n        component: 'xt.branch_gc.finding',\n        repo: repoRoot,\n        branch,\n        pr_state: status.state,\n        classification: status.classification,\n        action: shouldDelete ? 'delete' : 'skip',\n        reason: branchGcReason(status, isCheckedOut),\n        outcome: shouldDelete ? 'dry_run' : 'skipped',\n        checked_at_ms: checkedAtMs,\n        ...(shouldDelete ? { command: `git -C ${repoRoot} branch -D ${branch}` } : {}),\n        ...(status.pr_url ? { pr_url: status.pr_url } : {}),\n        ...(typeof status.pr_number === 'number' ? { pr_number: status.pr_number } : {}),\n        ...(status.error ? { error: status.error } : {}),\n    };\n}\n\nfunction summarizeBranchGc(findings: BranchGcFinding[]): BranchGcReport['summary'] {\n    return {\n        delete: findings.filter(finding => finding.action === 'delete').length,\n        skip: findings.filter(finding => finding.action === 'skip').length,\n        deleted: findings.filter(finding => finding.outcome === 'deleted').length,\n        failed: findings.filter(finding => finding.outcome === 'failed').length,\n    };\n}\n\nexport function planBranchGc(repoRoot: string, prefixes: string[], checkedAtMs = Date.now()): BranchGcReport {\n    const checkedOut = checkedOutBranches(repoRoot);\n    const findings = listManagedBranches(repoRoot, prefixes).map(branch => {\n        const status = getPrStatus(branch, repoRoot);\n        return buildBranchGcFinding(repoRoot, branch, status, checkedAtMs, checkedOut.has(branch));\n    });\n\n    return {\n        component: 'xt.branch_gc',\n        repo: repoRoot,\n        checked_at_ms: checkedAtMs,\n        mode: 'dry_run',\n        prefixes,\n        findings,\n        summary: summarizeBranchGc(findings),\n    };\n}\n\nfunction applyBranchGc(report: BranchGcReport): BranchGcReport {\n    const findings = report.findings.map(finding => {\n        if (finding.action !== 'delete') return finding;\n\n        const result = git(['branch', '-D', finding.branch], report.repo);\n        if (result.ok) {\n            return { ...finding, outcome: 'deleted' as const };\n        }\n\n        return {\n            ...finding,\n            outcome: 'failed' as const,\n            error: redactGhError(result.err || `failed to delete ${finding.branch}`),\n        };\n    });\n\n    return {\n        ...report,\n        mode: 'apply',\n        findings,\n        summary: summarizeBranchGc(findings),\n    };\n}\n\nfunction printBranchGcHuman(report: BranchGcReport): void {\n    console.log(t.bold('\\n  xt worktree branch GC\\n'));\n    console.log(kleur.dim(`  repo: ${report.repo}`));\n    console.log(kleur.dim(`  mode: ${report.mode}`));\n    console.log(kleur.dim(`  prefixes: ${report.prefixes.join(', ')}`));\n    console.log(kleur.dim(`  branches checked: ${report.findings.length}`));\n    console.log(kleur.dim(`  delete candidates: ${report.summary.delete}`));\n\n    if (report.findings.length === 0) {\n        console.log(kleur.dim('\\n  No managed branches found\\n'));\n        return;\n    }\n\n    for (const finding of report.findings) {\n        const marker = finding.action === 'delete' ? kleur.yellow('delete') : kleur.dim('skip');\n        const outcome = finding.outcome === 'dry_run' ? 'dry-run' : finding.outcome;\n        console.log(`\\n  ${marker} ${kleur.bold(finding.branch)} ${kleur.dim(`(${outcome})`)}`);\n        console.log(kleur.dim(`    pr_state: ${finding.pr_state ?? 'null'} classification: ${finding.classification}`));\n        console.log(kleur.dim(`    reason: ${finding.reason}`));\n        if (finding.command) console.log(kleur.dim(`    command: ${finding.command}`));\n        if (finding.error) console.log(kleur.dim(`    error: ${finding.error}`));\n    }\n\n    if (report.mode === 'dry_run' && report.summary.delete > 0) {\n        console.log(kleur.yellow('\\n  Dry run — no branches deleted. Re-run with --apply --yes to delete candidates.\\n'));\n    } else {\n        console.log('');\n    }\n}\n\n\nfunction emptyRestartAuditSummary(): Record<RestartAuditFindingKind, number> {\n    return {\n        'orphaned-managed-dir': 0,\n        'prunable-worktree': 0,\n        'branch-without-worktree': 0,\n        'pr-attention': 0,\n        'closed-pr-branch': 0,\n    };\n}\n\nfunction restartAuditFinding(\n    repoRoot: string,\n    checkedAtMs: number,\n    finding: Omit<RestartAuditFinding, 'component' | 'repo' | 'checked_at_ms'>,\n): RestartAuditFinding {\n    return {\n        component: 'xt.restart_audit.finding',\n        repo: repoRoot,\n        checked_at_ms: checkedAtMs,\n        ...finding,\n    };\n}\n\nfunction isPrAttentionClassification(classification: PrClassification): boolean {\n    return ['needs-rebase', 'conflicted', 'blocked', 'unknown'].includes(classification);\n}\n\nexport function restartAudit(repoRoot: string, prefixes: string[], checkedAtMs = Date.now()): RestartAuditReport {\n    const findings: RestartAuditFinding[] = [];\n    const worktrees = listXtWorktrees(repoRoot);\n    const worktreeByBranch = new Map<string, WorktreeInfo>();\n\n    for (const wt of worktrees) {\n        const branch = normalizeBranchName(wt.branch);\n        worktreeByBranch.set(branch, wt);\n\n        if (wt.prunable) {\n            findings.push(restartAuditFinding(repoRoot, checkedAtMs, {\n                worktree_path: wt.path,\n                branch,\n                pr_classification: null,\n                finding_kind: 'prunable-worktree',\n                suggested_action: 'prune stale git worktree metadata after verifying no active session owns it',\n                suggestion_command: `git -C ${repoRoot} worktree prune --expire now`,\n            }));\n        }\n    }\n\n    for (const orphanPath of listOrphanManagedDirs(repoRoot)) {\n        findings.push(restartAuditFinding(repoRoot, checkedAtMs, {\n            worktree_path: orphanPath,\n            branch: null,\n            pr_classification: null,\n            finding_kind: 'orphaned-managed-dir',\n            suggested_action: 'inspect orphaned managed directory, then run orphan cleanup if safe',\n            suggestion_command: 'xt worktree clean --orphans --dry-run',\n        }));\n    }\n\n    for (const branch of listManagedBranches(repoRoot, prefixes)) {\n        const status = getPrStatus(branch, repoRoot);\n        const wt = worktreeByBranch.get(branch);\n        const baseFields = {\n            worktree_path: wt?.path ?? null,\n            branch,\n            pr_classification: status.classification,\n            ...(status.pr_url ? { pr_url: status.pr_url } : {}),\n            ...(typeof status.pr_number === 'number' ? { pr_number: status.pr_number } : {}),\n            ...(status.error ? { error: status.error } : {}),\n        };\n\n        if (!wt) {\n            findings.push(restartAuditFinding(repoRoot, checkedAtMs, {\n                ...baseFields,\n                finding_kind: 'branch-without-worktree',\n                suggested_action: 'inspect branch owner/state; if PR is closed, branch-gc can propose cleanup',\n                suggestion_command: `xt worktree branch-gc --prefix ${prefixes.join(',')} --json`,\n            }));\n        }\n\n        if (isPrAttentionClassification(status.classification)) {\n            findings.push(restartAuditFinding(repoRoot, checkedAtMs, {\n                ...baseFields,\n                finding_kind: 'pr-attention',\n                suggested_action: suggestedActionFor(status),\n                suggestion_command: suggestionCommandFor(repoRoot, status),\n            }));\n        }\n\n        if (status.classification === 'closed') {\n            findings.push(restartAuditFinding(repoRoot, checkedAtMs, {\n                ...baseFields,\n                finding_kind: 'closed-pr-branch',\n                suggested_action: wt\n                    ? 'PR is closed; finish/remove the worktree before branch cleanup'\n                    : 'PR is closed; branch-gc can propose safe local branch cleanup',\n                suggestion_command: wt ? 'xt worktree clean --dry-run' : `xt worktree branch-gc --prefix ${prefixes.join(',')} --json`,\n            }));\n        }\n    }\n\n    const summary = emptyRestartAuditSummary();\n    for (const finding of findings) {\n        summary[finding.finding_kind] += 1;\n    }\n\n    return {\n        component: 'xt.restart_audit',\n        repo: repoRoot,\n        checked_at_ms: checkedAtMs,\n        prefixes,\n        findings,\n        summary,\n    };\n}\n\nfunction printRestartAuditHuman(report: RestartAuditReport): void {\n    console.log(t.bold('\\n  xt worktree restart audit\\n'));\n    console.log(kleur.dim(`  repo: ${report.repo}`));\n    console.log(kleur.dim(`  checked_at_ms: ${report.checked_at_ms}`));\n    console.log(kleur.dim(`  prefixes: ${report.prefixes.join(', ')}`));\n    console.log(kleur.dim(`  findings: ${report.findings.length}`));\n\n    if (report.findings.length === 0) {\n        console.log(t.success('\\n  ✓ No restart reconciliation findings\\n'));\n        return;\n    }\n\n    for (const finding of report.findings) {\n        console.log(`\\n  ${kleur.yellow('!')} ${kleur.bold(finding.finding_kind)}`);\n        console.log(kleur.dim(`    branch: ${finding.branch ?? 'null'}`));\n        console.log(kleur.dim(`    worktree_path: ${finding.worktree_path ?? 'null'}`));\n        console.log(kleur.dim(`    pr_classification: ${finding.pr_classification ?? 'null'}`));\n        console.log(kleur.dim(`    action: ${finding.suggested_action}`));\n        console.log(kleur.dim(`    command: ${finding.suggestion_command}`));\n        if (finding.error) console.log(kleur.dim(`    error: ${finding.error}`));\n    }\n\n    console.log('');\n}\n\nfunction removeWorktreeEntry(repoRoot: string, worktreePath: string): { ok: boolean; message: string } {\n    const remove = git(['worktree', 'remove', worktreePath, '--force'], repoRoot);\n    if (!remove.ok) {\n        return { ok: false, message: remove.err || `could not remove ${worktreePath}` };\n    }\n\n    unregisterPluginsForWorktree(worktreePath);\n    clearStatuslineClaim(repoRoot);\n    return { ok: true, message: `Removed ${worktreePath}` };\n}\n\nexport function getRepoRoot(cwd: string): string {\n    const commonDirResult = git(['rev-parse', '--git-common-dir'], cwd);\n    if (commonDirResult.ok && commonDirResult.out) {\n        const commonDir = isAbsolute(commonDirResult.out)\n            ? commonDirResult.out\n            : resolve(cwd, commonDirResult.out);\n        return commonDir.endsWith('/.git') || commonDir.endsWith('\\\\.git')\n            ? dirname(commonDir)\n            : commonDir;\n    }\n\n    const fallback = git(['rev-parse', '--show-toplevel'], cwd);\n    return fallback.ok && fallback.out ? fallback.out : cwd;\n}\n\nexport function createWorktreeCommand(): Command {\n    const cmd = new Command('worktree')\n        .description('Manage xt session worktrees');\n\n    cmd.command('list')\n        .description('List all active xt/* worktrees with status')\n        .action(async () => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const worktrees = listXtWorktrees(repoRoot);\n\n            if (worktrees.length === 0) {\n                console.log(kleur.dim('\\n  No xt worktrees found\\n'));\n                return;\n            }\n\n            console.log(t.bold(`\\n  xt worktrees (${worktrees.length})\\n`));\n            for (const wt of worktrees) {\n                const branch = wt.branch.replace('refs/heads/', '');\n                const slug = branch.replace('xt/', '');\n                const merged = isMergedIntoMain(wt.branch, repoRoot);\n                const status = merged ? kleur.green('merged') : kleur.yellow('open');\n                const prunable = wt.prunable ? kleur.dim(' [prunable]') : '';\n                const runtimeBadge = wt.runtime ? kleur.cyan(` [${wt.runtime}]`) : '';\n                const nestedBadge = wt.nestedInPath ? kleur.red(' [nested]') : '';\n                const timeStr = wt.lastLogTime\n                    ? kleur.dim(wt.lastLogTime.toLocaleString())\n                    : wt.launchedAt\n                        ? kleur.dim(new Date(wt.launchedAt).toLocaleString())\n                        : '';\n                const logLine = wt.lastLogMsg ? kleur.dim(`  \"${wt.lastLogMsg}\"`) : '';\n\n                console.log(`  ${status}${runtimeBadge}${nestedBadge} ${kleur.bold(branch)}${prunable}`);\n                if (timeStr) console.log(`    last activity: ${timeStr}${logLine}`);\n                console.log(kleur.dim(`    path: ${wt.path}`));\n                console.log(kleur.dim(`    resume: xt attach ${slug}`));\n                if (wt.nestedInPath) {\n                    console.log(kleur.red(`    nested under: ${wt.nestedInPath}`));\n                    console.log(kleur.dim('    remediation: xt worktree clean --orphans --dry-run'));\n                }\n                console.log('');\n            }\n        });\n\n    cmd.command('audit-prs')\n        .description('Audit xt worktree PR merge-state and operator attention items (audit-only)')\n        .option('--json', 'Print machine-readable audit report', false)\n        .action((opts: { json: boolean }) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const report = auditWorktreePrs(repoRoot);\n\n            if (opts.json) {\n                console.log(JSON.stringify(report, null, 2));\n                return;\n            }\n\n            printPrAuditHuman(report);\n        });\n\n    cmd.command('branch-gc')\n        .description('Dry-run or apply deletion of managed branches whose PRs are closed or merged')\n        .option('--prefix <prefixes>', 'Comma-separated managed branch prefixes (default: xt/)', 'xt/')\n        .option('--apply', 'Delete candidates (default is dry-run)', false)\n        .option('-y, --yes', 'Skip confirmation prompt with --apply', false)\n        .option('--json', 'Print machine-readable branch GC report', false)\n        .action(async (opts: { prefix: string; apply: boolean; yes: boolean; json: boolean }) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const prefixes = normalizeBranchGcPrefixes(opts.prefix);\n            let report = planBranchGc(repoRoot, prefixes);\n\n            if (opts.apply && report.summary.delete > 0) {\n                const doDelete = await confirmDestructiveAction({\n                    yes: opts.yes,\n                    message: `Delete ${report.summary.delete} managed branch(es)?`,\n                    initial: false,\n                });\n\n                if (doDelete) {\n                    report = applyBranchGc(report);\n                }\n            }\n\n            if (opts.json) {\n                console.log(JSON.stringify(report, null, 2));\n                return;\n            }\n\n            printBranchGcHuman(report);\n        });\n\n    cmd.command('restart-audit')\n        .description('Restart-safe audit of managed worktrees, branches, and PR drift (audit-only)')\n        .option('--prefix <prefixes>', 'Comma-separated managed branch prefixes (default: xt/)', 'xt/')\n        .option('--json', 'Print machine-readable restart audit report', false)\n        .action((opts: { prefix: string; json: boolean }) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const prefixes = normalizeBranchGcPrefixes(opts.prefix);\n            const report = restartAudit(repoRoot, prefixes);\n\n            if (opts.json) {\n                console.log(JSON.stringify(report, null, 2));\n                return;\n            }\n\n            printRestartAuditHuman(report);\n        });\n\n    cmd.command('doctor')\n        .description('Diagnose stale/nested/orphaned worktree state and suggest remediation')\n        .action(() => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const xtWorktrees = listXtWorktrees(repoRoot);\n            const orphanDirs = listOrphanManagedDirs(repoRoot);\n            const prunable = xtWorktrees.filter(wt => wt.prunable);\n            const nested = xtWorktrees.filter(wt => Boolean(wt.nestedInPath));\n\n            console.log(t.bold('\\n  xt worktree doctor\\n'));\n            console.log(kleur.dim(`  repo: ${repoRoot}`));\n            console.log(kleur.dim(`  active xt worktrees: ${xtWorktrees.length}`));\n            console.log(kleur.dim(`  prunable entries:    ${prunable.length}`));\n            console.log(kleur.dim(`  nested entries:      ${nested.length}`));\n            console.log(kleur.dim(`  orphan dirs:         ${orphanDirs.length}`));\n\n            if (nested.length > 0) {\n                console.log(kleur.red('\\n  Nested worktree roots detected:'));\n                for (const wt of nested) {\n                    console.log(kleur.red(`    - ${wt.path}`));\n                    if (wt.nestedInPath) console.log(kleur.dim(`      parent: ${wt.nestedInPath}`));\n                }\n            }\n\n            if (orphanDirs.length > 0) {\n                console.log(kleur.yellow('\\n  Orphaned .xtrm/worktrees directories:'));\n                for (const orphan of orphanDirs) {\n                    console.log(kleur.yellow(`    - ${orphan}`));\n                }\n            }\n\n            if (nested.length === 0 && orphanDirs.length === 0 && prunable.length === 0) {\n                console.log(t.success('\\n  ✓ No stale worktree issues detected\\n'));\n                return;\n            }\n\n            console.log(kleur.bold('\\n  Remediation:'));\n            console.log(kleur.dim('    xt worktree clean --orphans --dry-run'));\n            console.log(kleur.dim('    xt worktree clean --orphans --yes'));\n            console.log(kleur.dim(`    git -C ${repoRoot} worktree prune --expire now`));\n            console.log('');\n        });\n\n    cmd.command('clean')\n        .description('Remove merged xt worktrees and optionally sweep stale/orphaned worktree state')\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .option('--dry-run', 'Preview clean targets without removing anything', false)\n        .option('--orphans', 'Also prune stale git worktree metadata and remove orphan .xtrm/worktrees dirs', false)\n        .action(async (opts: { yes: boolean; dryRun: boolean; orphans: boolean }) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const worktrees = listXtWorktrees(repoRoot);\n            const merged = worktrees.filter(wt =>\n                isMergedIntoMain(wt.branch, repoRoot) ||\n                getPrStatus(wt.branch, repoRoot).state === 'MERGED'\n            );\n            const orphanDirs = opts.orphans ? listOrphanManagedDirs(repoRoot) : [];\n\n            if (merged.length === 0 && orphanDirs.length === 0 && !opts.orphans) {\n                console.log(kleur.dim('\\n  No merged xt worktrees to clean\\n'));\n                return;\n            }\n\n            if (merged.length === 0 && orphanDirs.length === 0 && opts.orphans) {\n                console.log(kleur.dim('\\n  No merged worktrees or orphaned directories found\\n'));\n                console.log(kleur.dim('  (git worktree prune would still run in apply mode)\\n'));\n                if (opts.dryRun) return;\n            }\n\n            console.log(t.bold('\\n  xt worktree clean\\n'));\n\n            if (merged.length > 0) {\n                console.log(kleur.bold(`  ${merged.length} merged worktree(s):`));\n                for (const wt of merged) {\n                    console.log(kleur.dim(`    - ${wt.path} (${wt.branch.replace('refs/heads/', '')})`));\n                }\n            }\n\n            if (opts.orphans) {\n                console.log(kleur.bold(`\\n  ${orphanDirs.length} orphaned managed director(y/ies):`));\n                for (const orphan of orphanDirs) {\n                    console.log(kleur.dim(`    - ${orphan}`));\n                }\n                console.log(kleur.dim('    - git worktree prune --expire now'));\n            }\n\n            if (opts.dryRun) {\n                console.log(kleur.yellow('\\n  ℹ Dry run — no changes applied\\n'));\n                return;\n            }\n\n            const totalTargets = merged.length + orphanDirs.length;\n            const doRemove = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: `Apply cleanup for ${totalTargets} item(s)?`,\n                initial: true,\n            });\n\n            if (!doRemove) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            let removedCount = 0;\n\n            for (const wt of merged) {\n                const result = removeWorktreeEntry(repoRoot, wt.path);\n                if (result.ok) {\n                    removedCount += 1;\n                    console.log(t.success(`  ✓ ${result.message}`));\n                } else {\n                    console.log(kleur.yellow(`  ⚠ ${result.message}`));\n                }\n            }\n\n            if (opts.orphans) {\n                for (const orphan of orphanDirs) {\n                    try {\n                        rmSync(orphan, { recursive: true, force: true });\n                        removedCount += 1;\n                        unregisterPluginsForWorktree(orphan);\n                        console.log(t.success(`  ✓ Removed orphan directory ${orphan}`));\n                    } catch (error) {\n                        const message = error instanceof Error ? error.message : String(error);\n                        console.log(kleur.yellow(`  ⚠ Could not remove ${orphan}: ${message}`));\n                    }\n                }\n\n                const pruneResult = runGitWorktreePrune(repoRoot);\n                if (pruneResult.ok) {\n                    console.log(t.success(`  ✓ ${pruneResult.message}`));\n                } else {\n                    console.log(kleur.yellow(`  ⚠ ${pruneResult.message}`));\n                }\n            }\n\n            if (removedCount === 0) {\n                console.log(kleur.yellow('\\n  ⚠ Nothing was removed\\n'));\n                return;\n            }\n\n            console.log(t.boldGreen(`\\n  ✓ Cleanup complete (${removedCount} item(s) removed)\\n`));\n        });\n\n    cmd.command('remove <name>')\n        .description('Manually remove a specific xt worktree by branch name or path')\n        .option('-y, --yes', 'Skip confirmation', false)\n        .action(async (name: string, opts: { yes: boolean }) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const worktrees = listXtWorktrees(repoRoot);\n            const target = worktrees.find(wt =>\n                wt.path === name ||\n                wt.branch === `refs/heads/${name}` ||\n                wt.branch === `refs/heads/xt/${name}`\n            );\n\n            if (!target) {\n                console.error(kleur.red(`\\n  ✗ No xt worktree found matching \"${name}\"\\n`));\n                console.log(kleur.dim('  Run: xt worktree list\\n'));\n                process.exit(1);\n            }\n\n            const doRemove = await confirmDestructiveAction({\n                yes: opts.yes,\n                message: `Remove ${target.path}?`,\n                initial: false,\n            });\n\n            if (!doRemove) {\n                console.log(kleur.dim('  Cancelled\\n'));\n                return;\n            }\n\n            const result = removeWorktreeEntry(repoRoot, target.path);\n            if (!result.ok) {\n                console.error(kleur.red(`\\n  ✗ Failed: ${result.message}\\n`));\n                process.exit(1);\n            }\n\n            console.log(t.success(`\\n  ✓ ${result.message}\\n`));\n        });\n\n    return cmd;\n}\n\n/** Clear the shared statusline claim file at repo root so no ghost claim shows after worktree removal. */\nfunction clearStatuslineClaim(repoRoot: string): void {\n    try {\n        const claimFile = join(repoRoot, '.xtrm', 'statusline-claim');\n        if (existsSync(claimFile)) unlinkSync(claimFile);\n    } catch {\n        // non-fatal\n    }\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport prompts from 'prompts';\nimport { spawnSync } from 'node:child_process';\nimport { t } from '../utils/theme.js';\nimport { runPiLaunchPreflight } from '../core/pi-runtime.js';\nimport { listXtWorktrees, getRepoRoot } from './worktree.js';\n\nexport function createAttachCommand(): Command {\n    return new Command('attach')\n        .description('Re-attach to an existing xt worktree and resume the Claude or Pi session')\n        .argument('[name]', 'Worktree slug or branch name to attach to (e.g. \"abc1\" or \"xt/abc1\")')\n        .action(async (name: string | undefined) => {\n            const repoRoot = getRepoRoot(process.cwd());\n            const worktrees = listXtWorktrees(repoRoot);\n\n            if (worktrees.length === 0) {\n                console.log(kleur.dim('\\n  No xt worktrees found — start one with: xt claude\\n'));\n                return;\n            }\n\n            let target = worktrees[0]; // default: most recent (last in list)\n\n            if (name) {\n                const norm = name.startsWith('xt/') ? `refs/heads/${name}` : `refs/heads/xt/${name}`;\n                const found = worktrees.find(wt =>\n                    wt.path.endsWith(name) ||\n                    wt.branch === norm ||\n                    wt.branch === `refs/heads/${name}`\n                );\n                if (!found) {\n                    console.error(kleur.red(`\\n  ✗ No xt worktree found matching \"${name}\"\\n`));\n                    console.log(kleur.dim('  Run: xt worktree list\\n'));\n                    process.exit(1);\n                }\n                target = found;\n            } else if (worktrees.length > 1) {\n                // Prompt user to pick\n                const choices = worktrees.map(wt => {\n                    const branch = wt.branch.replace('refs/heads/', '');\n                    const slug = branch.replace('xt/', '');\n                    const runtime = wt.runtime ? ` [${wt.runtime}]` : '';\n                    const time = wt.lastLogTime\n                        ? wt.lastLogTime.toLocaleString()\n                        : wt.launchedAt\n                            ? new Date(wt.launchedAt).toLocaleString()\n                            : 'unknown';\n                    const msg = wt.lastLogMsg ? `  \"${wt.lastLogMsg.slice(0, 50)}\"` : '';\n                    return {\n                        title: `${branch}${runtime}  —  ${time}${msg}`,\n                        value: slug,\n                    };\n                });\n\n                const { picked } = await prompts({\n                    type: 'select',\n                    name: 'picked',\n                    message: 'Select worktree to attach',\n                    choices,\n                });\n\n                if (!picked) {\n                    console.log(kleur.dim('  Cancelled\\n'));\n                    return;\n                }\n\n                target = worktrees.find(wt => wt.branch.endsWith(`/${picked}`)) ?? target;\n            }\n\n            const branch = target.branch.replace('refs/heads/', '');\n            const runtime = target.runtime ?? await pickRuntime();\n\n            const resumeArgs = runtime === 'claude'\n                ? ['--continue', '--dangerously-skip-permissions']\n                : ['-c'];\n\n            console.log(t.bold(`\\n  Attaching to ${branch}`));\n            console.log(kleur.dim(`  runtime: ${runtime}  (resuming session)`));\n            console.log(kleur.dim(`  path:    ${target.path}\\n`));\n\n            if (runtime === 'pi') {\n                try {\n                    await runPiLaunchPreflight(target.path, false);\n                } catch (error) {\n                    const message = error instanceof Error ? error.message : String(error);\n                    console.log(kleur.dim(`  warning: pi launch preflight failed (${message})`));\n                }\n            }\n\n            const result = spawnSync(runtime, resumeArgs, {\n                cwd: target.path,\n                stdio: 'inherit',\n            });\n\n            process.exit(result.status ?? 0);\n        });\n}\n\nasync function pickRuntime(): Promise<'claude' | 'pi'> {\n    const { runtime } = await prompts({\n        type: 'select',\n        name: 'runtime',\n        message: 'No session metadata found — which runtime?',\n        choices: [\n            { title: 'claude', value: 'claude' },\n            { title: 'pi', value: 'pi' },\n        ],\n        initial: 0,\n    });\n    return runtime ?? 'claude';\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { findProjectRoot } from '../utils/repo-root.js';\nimport { t, sym } from '../utils/theme.js';\nimport { parseFrontmatter, DocEntry, scanDocFiles } from '../utils/docs-scanner.js';\nimport { readCache, writeCache, isCacheValid } from '../utils/docs-cache.js';\nimport { isGhAvailable, fetchRecentPrs, fetchRecentIssues } from './docs-cross-check-gh.js';\nimport { isBdAvailable, fetchClosedBdIssues } from './docs-cross-check-bd.js';\nimport { detectStaleDocs, detectCoverageGaps, validateIssueReferences, buildReport } from './docs-cross-check-core.js';\nimport type { CrossCheckFinding } from './docs-cross-check-types.js';\n\nconst REQUIRED_FIELDS = new Set(['title', 'type', 'status', 'updated_at', 'version']);\n\n/** Collect all target doc files in a repo. */\nasync function collectDocFiles(repoRoot: string, filterPattern?: string): Promise<DocEntry[]> {\n    const candidates: string[] = [];\n\n    // docs/ directory (top-level only — no subdirs, no other paths)\n    const docsDir = path.join(repoRoot, 'docs');\n    if (await fs.pathExists(docsDir)) {\n        const entries = await fs.readdir(docsDir);\n        for (const entry of entries) {\n            if (entry.endsWith('.md')) candidates.push(path.join(docsDir, entry));\n        }\n    }\n\n    const results: DocEntry[] = [];\n    for (const filePath of candidates) {\n        const rel = path.relative(repoRoot, filePath);\n\n        // Apply filter if provided\n        if (filterPattern && !rel.includes(filterPattern) && !path.basename(filePath).includes(filterPattern)) {\n            continue;\n        }\n\n        let entry: DocEntry;\n        try {\n            const stat = await fs.stat(filePath);\n            const content = await fs.readFile(filePath, 'utf8');\n            const frontmatter = parseFrontmatter(content);\n            entry = {\n                filePath,\n                relativePath: rel,\n                frontmatter,\n                sizeBytes: stat.size,\n                lastModified: stat.mtime,\n            };\n        } catch (err: any) {\n            entry = {\n                filePath,\n                relativePath: rel,\n                frontmatter: null,\n                sizeBytes: 0,\n                lastModified: new Date(0),\n                parseError: err.message,\n            };\n        }\n        results.push(entry);\n    }\n\n    return results;\n}\n\nfunction formatSize(bytes: number): string {\n    if (bytes < 1024) return `${bytes}B`;\n    return `${(bytes / 1024).toFixed(1)}KB`;\n}\n\nfunction formatDate(d: Date): string {\n    return d.toISOString().slice(0, 10);\n}\n\nfunction printEntry(entry: DocEntry, raw: boolean): void {\n    const header = kleur.bold().white(entry.relativePath);\n    const meta = kleur.gray(`  ${formatSize(entry.sizeBytes)}  modified ${formatDate(entry.lastModified)}`);\n    console.log(`\\n${header}${meta}`);\n\n    if (entry.parseError) {\n        console.log(kleur.red(`  ✗ Error reading file: ${entry.parseError}`));\n        return;\n    }\n\n    if (!entry.frontmatter || Object.keys(entry.frontmatter).length === 0) {\n        console.log(kleur.gray('  (no frontmatter)'));\n        return;\n    }\n\n    if (raw) {\n        console.log(kleur.gray('  ---'));\n        for (const [k, v] of Object.entries(entry.frontmatter)) {\n            console.log(`  ${k}: ${v}`);\n        }\n        console.log(kleur.gray('  ---'));\n        return;\n    }\n\n    for (const [k, v] of Object.entries(entry.frontmatter)) {\n        const keyStr = REQUIRED_FIELDS.has(k)\n            ? kleur.cyan(k.padEnd(14))\n            : kleur.gray(k.padEnd(14));\n        const valStr = v ?? '';\n        console.log(`  ${keyStr}  ${valStr}`);\n    }\n}\n\n/** Print human-readable cross-check report. */\nfunction printCrossCheckReport(findings: CrossCheckFinding[], docsChecked: number, total: number): void {\n    console.log(t.bold(`\\n  Docs cross-check\\n`));\n    console.log(kleur.gray(`  ${docsChecked} docs checked, ${total} finding${total !== 1 ? 's' : ''}\\n`));\n\n    if (findings.length === 0) {\n        console.log(`  ${sym.ok} All docs current\\n`);\n        return;\n    }\n\n    // Group by severity\n    const bySeverity = {\n        critical: findings.filter(f => f.severity === 'critical'),\n        warning: findings.filter(f => f.severity === 'warning'),\n        info: findings.filter(f => f.severity === 'info'),\n    };\n\n    // Print critical\n    for (const f of bySeverity.critical) {\n        console.log(`  ${kleur.red('✗')} ${kleur.red(f.docPath || '(coverage gap)')}  ${f.message}`);\n        if (f.detail) console.log(kleur.gray(`      ${f.detail}`));\n    }\n\n    // Print warnings\n    for (const f of bySeverity.warning) {\n        console.log(`  ${kleur.yellow('⚠')} ${kleur.yellow(f.docPath || '(coverage gap)')}  ${f.message}`);\n        if (f.detail) console.log(kleur.gray(`      ${f.detail}`));\n    }\n\n    // Print info\n    for (const f of bySeverity.info) {\n        console.log(`  ${kleur.gray('ℹ')} ${kleur.gray(f.docPath)}  ${kleur.gray(f.message)}`);\n    }\n\n    // Summary\n    const parts: string[] = [];\n    if (bySeverity.critical.length > 0) parts.push(kleur.red(`${bySeverity.critical.length} critical`));\n    if (bySeverity.warning.length > 0) parts.push(kleur.yellow(`${bySeverity.warning.length} warning${bySeverity.warning.length > 1 ? 's' : ''}`));\n    if (bySeverity.info.length > 0) parts.push(kleur.gray(`${bySeverity.info.length} info`));\n\n    console.log(kleur.gray(`\\n  ${parts.join(', ')}\\n`));\n}\n\nexport function createDocsCommand(): Command {\n    const docs = new Command('docs')\n        .description('Documentation inspection and drift-check commands');\n\n    docs\n        .command('show [filter]')\n        .description('Display frontmatters for README, CHANGELOG, and docs/ files')\n        .option('--raw', 'Output raw YAML frontmatter', false)\n        .option('--json', 'Output JSON', false)\n        .action(async (filter: string | undefined, opts: { raw: boolean; json: boolean }) => {\n            const repoRoot = await findProjectRoot();\n            const entries = await collectDocFiles(repoRoot, filter);\n\n            if (entries.length === 0) {\n                console.log(kleur.yellow('\\n  No documentation files found.\\n'));\n                return;\n            }\n\n            if (opts.json) {\n                const output = entries.map(e => ({\n                    path: e.relativePath,\n                    sizeBytes: e.sizeBytes,\n                    lastModified: e.lastModified.toISOString(),\n                    frontmatter: e.frontmatter,\n                    parseError: e.parseError ?? null,\n                }));\n                console.log(JSON.stringify(output, null, 2));\n                return;\n            }\n\n            for (const entry of entries) {\n                printEntry(entry, opts.raw);\n            }\n\n            const without = entries.filter(e => !e.frontmatter || Object.keys(e.frontmatter).length === 0).length;\n            console.log(\n                `\\n  ${sym.ok} ${entries.length} file${entries.length !== 1 ? 's' : ''}` +\n                (without > 0 ? kleur.gray(`  (${without} without frontmatter)`) : '') +\n                '\\n'\n            );\n        });\n\n    docs\n        .command('list')\n        .description('List markdown docs with metadata summary, filters, and optional cache bypass')\n        .option('--dir <path>', 'Filter to files under this directory')\n        .option('--pattern <glob>', 'Filter by filename substring')\n        .option('--filter <field=value>', 'Filter by frontmatter field, e.g. --filter type=service')\n        .option('--json', 'Output JSON array', false)\n        .option('--no-cache', 'Bypass cache and force fresh scan')\n        .action(async (opts: { dir?: string; pattern?: string; filter?: string; json: boolean; cache: boolean }) => {\n            const repoRoot = await findProjectRoot();\n\n            // Parse --filter field=value\n            let fmFilter: { field: string; value: string } | undefined;\n            if (opts.filter) {\n                const sep = opts.filter.indexOf('=');\n                if (sep !== -1) {\n                    fmFilter = { field: opts.filter.slice(0, sep), value: opts.filter.slice(sep + 1) };\n                }\n            }\n\n            const scanOpts = { dir: opts.dir ?? 'docs', pattern: opts.pattern, filter: fmFilter, recursive: false };\n\n            // Try cache first\n            let entries: DocEntry[] = [];\n            let fromCache = false;\n\n            if (opts.cache !== false) {\n                const cached = await readCache(repoRoot);\n                const fresh = await scanDocFiles(repoRoot, scanOpts);\n                if (cached && isCacheValid(cached, fresh)) {\n                    entries = fresh; // mtime-checked entries are already fresh\n                    fromCache = true;\n                } else {\n                    entries = fresh;\n                    await writeCache(repoRoot, fresh);\n                }\n            } else {\n                entries = await scanDocFiles(repoRoot, scanOpts);\n            }\n\n            if (entries.length === 0) {\n                console.log(kleur.yellow('\\n  No documentation files found.\\n'));\n                return;\n            }\n\n            if (opts.json) {\n                const output = entries.map(e => ({\n                    path: e.relativePath,\n                    sizeBytes: e.sizeBytes,\n                    lastModified: e.lastModified.toISOString(),\n                    frontmatter: e.frontmatter,\n                    parseError: e.parseError ?? null,\n                }));\n                console.log(JSON.stringify(output, null, 2));\n                return;\n            }\n\n            const Table = require('cli-table3');\n            const table = new Table({\n                head: [\n                    kleur.bold('Path'),\n                    kleur.bold('Size'),\n                    kleur.bold('Modified'),\n                    kleur.bold('Title'),\n                    kleur.bold('Type'),\n                ],\n                style: { head: [], border: [] },\n            });\n\n            let withoutFm = 0;\n            for (const e of entries) {\n                const hasFm = e.frontmatter && Object.keys(e.frontmatter).length > 0;\n                if (!hasFm) withoutFm++;\n                const row = [\n                    hasFm ? e.relativePath : kleur.gray(e.relativePath),\n                    kleur.dim(formatSize(e.sizeBytes)),\n                    kleur.dim(formatDate(e.lastModified)),\n                    hasFm ? (e.frontmatter?.title ?? kleur.gray('—')) : kleur.gray('—'),\n                    hasFm ? (e.frontmatter?.type ?? kleur.gray('—')) : kleur.gray('—'),\n                ];\n                table.push(row);\n            }\n\n            console.log('\\n' + table.toString());\n\n            const cacheNote = fromCache ? kleur.dim('  (cached)') : '';\n            const withoutNote = withoutFm > 0 ? kleur.gray(`  (${withoutFm} without frontmatter)`) : '';\n            console.log(`\\n  ${sym.ok} ${entries.length} file${entries.length !== 1 ? 's' : ''}${withoutNote}${cacheNote}\\n`);\n        });\n\n    // ── cross-check subcommand ────────────────────────────────────────────────\n    docs\n        .command('cross-check')\n        .description('Validate docs against recent PR activity, issue coverage, and open issue refs')\n        .option('--days <n>', 'Look-back window in days', '30')\n        .option('--json', 'Output JSON', false)\n        .action(async (opts: { days: string; json: boolean }) => {\n            try {\n                const days = parseInt(opts.days, 10) || 30;\n                const repoRoot = await findProjectRoot();\n\n                // Check availability of external tools\n                const ghOk = isGhAvailable();\n                const bdOk = isBdAvailable();\n\n                if (!ghOk) {\n                    console.error(kleur.yellow('[gh] GitHub CLI not available, PR data will be empty'));\n                }\n                if (!bdOk) {\n                    console.error(kleur.yellow('[bd] bd CLI not available, issue data will be empty'));\n                }\n\n                // Collect doc files\n                const docEntries = await collectDocFiles(repoRoot);\n\n                // Read doc contents for reference scanning\n                const docContents = new Map<string, string>();\n                for (const doc of docEntries) {\n                    try {\n                        const content = await fs.readFile(doc.filePath, 'utf8');\n                        docContents.set(doc.relativePath, content);\n                    } catch {\n                        // Skip files that can't be read\n                    }\n                }\n\n                // Fetch data from gh and bd in parallel\n                const [prs, issues] = await Promise.all([\n                    Promise.resolve(fetchRecentPrs(repoRoot, days)),\n                    Promise.resolve(fetchClosedBdIssues(days)),\n                ]);\n\n                // Run detectors\n                const staleFindings = detectStaleDocs(docEntries, prs, days);\n                const gapFindings = detectCoverageGaps(docEntries, issues, docContents);\n                const refFindings = validateIssueReferences(docEntries, issues, docContents);\n\n                // Build report\n                const report = buildReport([...staleFindings, ...gapFindings, ...refFindings], docEntries.length);\n\n                // Output\n                if (opts.json) {\n                    console.log(JSON.stringify(report, null, 2));\n                } else {\n                    printCrossCheckReport(report.findings, report.docsChecked, report.findingsTotal);\n                }\n            } catch (err) {\n                const msg = err instanceof Error ? err.message : String(err);\n                console.error(kleur.red(`✗ Cross-check failed: ${msg}`));\n                process.exit(1);\n            }\n        });\n\n    // ── verify subcommand ─────────────────────────────────────────────────────\n    docs\n        .command('verify [filter]')\n        .description('Verify frontmatter schema compliance and detect drift across doc files')\n        .option('--fix', 'Auto-fix simple issues (add missing updated_at)', false)\n        .option('--json', 'Output JSON', false)\n        .action(async (filter: string | undefined, opts: { fix: boolean; json: boolean }) => {\n            const repoRoot = await findProjectRoot();\n            const entries = await collectDocFiles(repoRoot, filter);\n\n            if (entries.length === 0) {\n                console.log(kleur.yellow('\\n  No documentation files found.\\n'));\n                return;\n            }\n\n            const VERIFY_REQUIRED = ['title', 'description', 'updated_at'];\n            const VALID_TYPES = new Set(['api', 'architecture', 'guide', 'overview', 'plan', 'reference']);\n\n            interface VerifyFinding {\n                severity: 'error' | 'warning' | 'info';\n                file: string;\n                message: string;\n                fix?: string;\n            }\n\n            const findings: VerifyFinding[] = [];\n            const autoFixed: string[] = [];\n\n            // Collect all relative paths for internal link validation\n            const knownPaths = new Set(entries.map(e => e.relativePath));\n\n            for (const entry of entries) {\n                const rel = entry.relativePath;\n\n                if (entry.parseError) {\n                    findings.push({ severity: 'error', file: rel, message: `Parse error: ${entry.parseError}` });\n                    continue;\n                }\n\n                const fm = entry.frontmatter;\n\n                // ── Missing required fields ───────────────────────────────────\n                for (const field of VERIFY_REQUIRED) {\n                    if (!fm || !fm[field]) {\n                        if (opts.fix && field === 'updated_at') {\n                            try {\n                                const content = await fs.readFile(entry.filePath, 'utf8');\n                                const today = new Date().toISOString().slice(0, 10);\n                                let fixed: string;\n                                if (content.startsWith('---')) {\n                                    fixed = content.replace(/^(---[\\s\\S]*?)(---)/m, `$1updated_at: ${today}\\n$2`);\n                                } else {\n                                    fixed = `---\\nupdated_at: ${today}\\n---\\n\\n${content}`;\n                                }\n                                await fs.writeFile(entry.filePath, fixed, 'utf8');\n                                autoFixed.push(`${rel}: added updated_at: ${today}`);\n                            } catch {\n                                findings.push({ severity: 'error', file: rel, message: `Missing required field: ${field}` });\n                            }\n                        } else {\n                            findings.push({\n                                severity: 'error',\n                                file: rel,\n                                message: `Missing required field: ${field}`,\n                                fix: field === 'updated_at' ? 'Run with --fix to auto-add updated_at' : undefined,\n                            });\n                        }\n                    }\n                }\n\n                // ── Drift: updated_at older than file mtime ───────────────────\n                if (fm?.updated_at) {\n                    const fmDate = new Date(fm.updated_at);\n                    const mtime = entry.lastModified;\n                    const diffDays = (mtime.getTime() - fmDate.getTime()) / (1000 * 60 * 60 * 24);\n                    if (!isNaN(fmDate.getTime()) && diffDays > 1) {\n                        findings.push({\n                            severity: 'warning',\n                            file: rel,\n                            message: `updated_at (${fm.updated_at}) is older than file mtime (${formatDate(mtime)})`,\n                            fix: `Update updated_at to ${formatDate(mtime)}`,\n                        });\n                    }\n                }\n\n                // ── Type vocabulary ───────────────────────────────────────────\n                if (fm?.type && !VALID_TYPES.has(fm.type)) {\n                    findings.push({\n                        severity: 'warning',\n                        file: rel,\n                        message: `Unknown type: \"${fm.type}\" — valid: ${[...VALID_TYPES].join(', ')}`,\n                    });\n                }\n\n                // ── Broken internal .md links ─────────────────────────────────\n                try {\n                    const content = await fs.readFile(entry.filePath, 'utf8');\n                    const linkRe = /\\[([^\\]]+)\\]\\(([^)]+)\\)/g;\n                    let m: RegExpExecArray | null;\n                    while ((m = linkRe.exec(content)) !== null) {\n                        const href = m[2];\n                        if (href.startsWith('#') || href.startsWith('http') || href.startsWith('mailto:')) continue;\n                        const target = href.split('#')[0];\n                        if (!target.endsWith('.md')) continue;\n                        const resolved = path.join(path.dirname(rel), target).replace(/\\\\/g, '/');\n                        if (!knownPaths.has(resolved)) {\n                            findings.push({\n                                severity: 'warning',\n                                file: rel,\n                                message: `Broken internal link: [${m[1]}](${href})`,\n                            });\n                        }\n                    }\n                } catch { /* skip link check if unreadable */ }\n            }\n\n            // ── Output ────────────────────────────────────────────────────────\n            if (opts.json) {\n                console.log(JSON.stringify({ files: entries.length, autoFixed, findings }, null, 2));\n                process.exit(findings.length > 0 ? 1 : 0);\n            }\n\n            console.log(t.bold(`\\n  xtrm docs verify\\n`));\n            console.log(kleur.gray(`  ${entries.length} file${entries.length !== 1 ? 's' : ''} checked\\n`));\n\n            if (autoFixed.length > 0) {\n                console.log(kleur.green(`  ${sym.ok} Auto-fixed ${autoFixed.length} issue${autoFixed.length !== 1 ? 's' : ''}:`));\n                for (const msg of autoFixed) console.log(kleur.dim(`    ${msg}`));\n                console.log('');\n            }\n\n            if (findings.length === 0) {\n                console.log(`  ${sym.ok} All docs pass frontmatter verification\\n`);\n                return;\n            }\n\n            const errors = findings.filter(f => f.severity === 'error');\n            const warnings = findings.filter(f => f.severity === 'warning');\n\n            for (const f of errors) {\n                console.log(`  ${kleur.red('✗')} ${kleur.red(f.file)}`);\n                console.log(kleur.gray(`      ${f.message}`));\n                if (f.fix) console.log(kleur.dim(`      → ${f.fix}`));\n            }\n            for (const f of warnings) {\n                console.log(`  ${kleur.yellow('⚠')} ${kleur.yellow(f.file)}`);\n                console.log(kleur.gray(`      ${f.message}`));\n                if (f.fix) console.log(kleur.dim(`      → ${f.fix}`));\n            }\n\n            const parts: string[] = [];\n            if (errors.length > 0) parts.push(kleur.red(`${errors.length} error${errors.length !== 1 ? 's' : ''}`));\n            if (warnings.length > 0) parts.push(kleur.yellow(`${warnings.length} warning${warnings.length !== 1 ? 's' : ''}`));\n            console.log(kleur.gray(`\\n  ${parts.join(', ')}\\n`));\n\n            if (errors.length > 0) process.exit(1);\n        });\n\n    return docs;\n}\n","import fs from 'fs-extra';\nimport path from 'path';\n\nexport interface Frontmatter {\n    [key: string]: string | undefined;\n    summary?: string;\n}\n\nexport interface DocEntry {\n    filePath: string;\n    relativePath: string;\n    frontmatter: Frontmatter | null;\n    sizeBytes: number;\n    lastModified: Date;\n    parseError?: string;\n}\n\nexport type FrontmatterFilter = { field: string; value: string };\n\nexport interface ScanOptions {\n    dir?: string;\n    pattern?: string;\n    filter?: FrontmatterFilter;\n    recursive?: boolean;\n}\n\n/** Parse YAML frontmatter from a markdown file (--- delimited block). */\nexport function parseFrontmatter(content: string): Frontmatter | null {\n    const match = content.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/);\n    if (!match) return null;\n\n    const fm: Frontmatter = {};\n    for (const line of match[1].split('\\n')) {\n        const colon = line.indexOf(':');\n        if (colon === -1) continue;\n        const key = line.slice(0, colon).trim();\n        const value = line.slice(colon + 1).trim().replace(/^[\"']|[\"']$/g, '');\n        if (key) fm[key] = value;\n    }\n\n    // Extract summary: first non-empty paragraph after the closing --- block,\n    // skipping HTML comment blocks (e.g. <!-- INDEX: ... --> from sync-docs)\n    const afterFrontmatter = content.slice(match[0].length).replace(/^\\r?\\n/, '');\n    const stripped = afterFrontmatter.replace(/<!--[\\s\\S]*?-->/g, '').trimStart();\n    const firstPara = stripped.split(/\\r?\\n\\r?\\n/)[0].replace(/\\r?\\n/g, ' ').trim();\n    if (firstPara && !firstPara.startsWith('#')) {\n        fm.summary = firstPara.slice(0, 120);\n    }\n\n    return fm;\n}\n\n// ── .gitignore support ────────────────────────────────────────────────────────\n\nconst ALWAYS_SKIP = new Set(['node_modules', '.git', 'dist', '.xtrm']);\n\nfunction parseGitignorePatterns(content: string): string[] {\n    return content\n        .split('\\n')\n        .map(l => l.trim())\n        .filter(l => l && !l.startsWith('#'));\n}\n\nfunction matchesGitignore(relativePath: string, patterns: string[]): boolean {\n    const normalized = relativePath.replace(/\\\\/g, '/');\n    const basename = normalized.split('/').pop() ?? '';\n\n    for (const raw of patterns) {\n        const p = raw.endsWith('/') ? raw.slice(0, -1) : raw;\n\n        if (p.includes('*')) {\n            // Simple glob: convert * to [^/]* for filename patterns\n            const regex = new RegExp('^' + p.replace(/\\./g, '\\\\.').replace(/\\*/g, '[^/]*') + '$');\n            if (regex.test(normalized) || regex.test(basename)) return true;\n        } else {\n            // Exact, prefix, or segment match\n            if (normalized === p || normalized.startsWith(p + '/') || basename === p) return true;\n        }\n    }\n    return false;\n}\n\n// ── Scanner ───────────────────────────────────────────────────────────────────\n\nexport async function scanDocFiles(repoRoot: string, options: ScanOptions = {}): Promise<DocEntry[]> {\n    const { dir, pattern, filter, recursive = true } = options;\n\n    let gitignorePatterns: string[] = [];\n    try {\n        const raw = await fs.readFile(path.join(repoRoot, '.gitignore'), 'utf8');\n        gitignorePatterns = parseGitignorePatterns(raw);\n    } catch { /* no .gitignore — proceed without */ }\n\n    const results: DocEntry[] = [];\n    const startDir = dir ? path.join(repoRoot, dir) : repoRoot;\n\n    async function walk(dirPath: string): Promise<void> {\n        let entries: fs.Dirent[];\n        try {\n            entries = await (fs.readdir as any)(dirPath, { withFileTypes: true }) as fs.Dirent[];\n        } catch { return; }\n\n        for (const entry of entries) {\n            const fullPath = path.join(dirPath, entry.name);\n            const relPath = path.relative(repoRoot, fullPath).replace(/\\\\/g, '/');\n\n            if (entry.isDirectory()) {\n                if (ALWAYS_SKIP.has(entry.name)) continue;\n                if (matchesGitignore(relPath, gitignorePatterns)) continue;\n                if (recursive) await walk(fullPath);\n                continue;\n            }\n\n            if (!entry.isFile() || !entry.name.endsWith('.md')) continue;\n            if (matchesGitignore(relPath, gitignorePatterns)) continue;\n\n            // dir filter: prefix match on relativePath\n            if (dir && !relPath.startsWith(dir.replace(/\\\\/g, '/'))) continue;\n\n            // pattern filter: substring match on filename\n            if (pattern && !entry.name.includes(pattern)) continue;\n\n            let docEntry: DocEntry;\n            try {\n                const stat = await fs.stat(fullPath);\n                const content = await fs.readFile(fullPath, 'utf8');\n                const frontmatter = parseFrontmatter(content);\n\n                // FrontmatterFilter: skip if field doesn't match\n                if (filter && (!frontmatter || frontmatter[filter.field] !== filter.value)) continue;\n\n                docEntry = {\n                    filePath: fullPath,\n                    relativePath: relPath,\n                    frontmatter,\n                    sizeBytes: stat.size,\n                    lastModified: stat.mtime,\n                };\n            } catch (err: any) {\n                if (filter) continue; // can't verify filter — exclude\n                docEntry = {\n                    filePath: fullPath,\n                    relativePath: relPath,\n                    frontmatter: null,\n                    sizeBytes: 0,\n                    lastModified: new Date(0),\n                    parseError: err.message,\n                };\n            }\n\n            results.push(docEntry);\n        }\n    }\n\n    await walk(startDir);\n    return results;\n}\n","import fs from 'fs-extra';\nimport path from 'path';\nimport type { DocEntry } from './docs-scanner.js';\n\nconst CACHE_PATH = path.join('.xtrm', 'cache', 'docs-list.json');\nconst DEFAULT_TTL_MS = 60_000;\n\nexport interface DocCache {\n    timestamp: number;\n    repoRoot: string;\n    entries: DocEntry[];\n}\n\nexport async function readCache(repoRoot: string): Promise<DocCache | null> {\n    try {\n        const raw = await fs.readFile(path.join(repoRoot, CACHE_PATH), 'utf8');\n        const parsed = JSON.parse(raw) as DocCache;\n        // Rehydrate lastModified as Date objects\n        parsed.entries = parsed.entries.map(e => ({\n            ...e,\n            lastModified: new Date(e.lastModified),\n        }));\n        return parsed;\n    } catch {\n        return null;\n    }\n}\n\nexport async function writeCache(repoRoot: string, entries: DocEntry[]): Promise<void> {\n    const cachePath = path.join(repoRoot, CACHE_PATH);\n    await fs.ensureDir(path.dirname(cachePath));\n    const cache: DocCache = {\n        timestamp: Date.now(),\n        repoRoot,\n        entries,\n    };\n    await fs.writeFile(cachePath, JSON.stringify(cache, null, 2), 'utf8');\n}\n\nexport function isCacheValid(cache: DocCache, entries: DocEntry[], ttlMs: number = DEFAULT_TTL_MS): boolean {\n    if (Date.now() - cache.timestamp > ttlMs) return false;\n    for (const entry of entries) {\n        if (entry.lastModified.getTime() > cache.timestamp) return false;\n    }\n    return true;\n}\n","import kleur from 'kleur';\nimport { spawnSync } from 'node:child_process';\nimport type { GhPr, GhIssue } from './docs-cross-check-types.js';\n\nexport function isGhAvailable(): boolean {\n    return spawnSync('gh', ['--version'], { stdio: 'pipe', encoding: 'utf8' }).status === 0;\n}\n\nexport function fetchRecentPrs(repoRoot: string, days: number): GhPr[] {\n    if (!isGhAvailable()) {\n        console.log(kleur.yellow('  ⚠ gh CLI not found — skipping PR data (install gh to enable cross-check)'));\n        return [];\n    }\n\n    const r = spawnSync('gh', [\n        'pr', 'list',\n        '--state', 'merged',\n        '--limit', '100',\n        '--json', 'number,title,mergedAt,url,headRefName',\n    ], { stdio: 'pipe', encoding: 'utf8', cwd: repoRoot });\n\n    if (r.status === 4) {\n        console.log(kleur.yellow('  ⚠ gh auth error — run: gh auth login'));\n        return [];\n    }\n    if (r.status !== 0) {\n        console.log(kleur.yellow(`  ⚠ gh pr list failed (exit ${r.status}) — skipping PR data`));\n        return [];\n    }\n\n    let prs: GhPr[];\n    try {\n        prs = JSON.parse(r.stdout) as GhPr[];\n    } catch {\n        console.log(kleur.yellow('  ⚠ Failed to parse gh pr list output — skipping PR data'));\n        return [];\n    }\n\n    const cutoff = Date.now() - days * 86_400_000;\n    return prs.filter(pr => pr.mergedAt && new Date(pr.mergedAt).getTime() >= cutoff);\n}\n\nexport function fetchRecentIssues(repoRoot: string, days: number): GhIssue[] {\n    if (!isGhAvailable()) return [];\n\n    const r = spawnSync('gh', [\n        'issue', 'list',\n        '--state', 'closed',\n        '--limit', '100',\n        '--json', 'number,title,closedAt,url,labels',\n    ], { stdio: 'pipe', encoding: 'utf8', cwd: repoRoot });\n\n    if (r.status === 4) {\n        console.log(kleur.yellow('  ⚠ gh auth error — run: gh auth login'));\n        return [];\n    }\n    if (r.status !== 0) {\n        console.log(kleur.yellow(`  ⚠ gh issue list failed (exit ${r.status}) — skipping issue data`));\n        return [];\n    }\n\n    let issues: GhIssue[];\n    try {\n        issues = JSON.parse(r.stdout) as GhIssue[];\n        // gh returns labels as objects — normalise to strings\n        issues = issues.map(i => ({\n            ...i,\n            labels: i.labels.map((l: any) => (typeof l === 'string' ? l : l.name ?? '')),\n        }));\n    } catch {\n        console.log(kleur.yellow('  ⚠ Failed to parse gh issue list output — skipping issue data'));\n        return [];\n    }\n\n    const cutoff = Date.now() - days * 86_400_000;\n    return issues.filter(i => i.closedAt && new Date(i.closedAt).getTime() >= cutoff);\n}\n","import { spawnSync } from 'node:child_process';\nimport kleur from 'kleur';\nimport type { BdIssue } from './docs-cross-check-types.js';\n\n// ── bd CLI availability ───────────────────────────────────────────────────────\n\nlet _bdAvailable: boolean | null = null;\n\n/**\n * Check if the bd CLI is installed and available.\n * Caches result after first check.\n */\nexport function isBdAvailable(): boolean {\n    if (_bdAvailable !== null) return _bdAvailable;\n    const r = spawnSync('bd', ['--version'], { stdio: 'pipe', encoding: 'utf8' });\n    _bdAvailable = r.status === 0;\n    return _bdAvailable;\n}\n\n// ── Error handling helpers ────────────────────────────────────────────────────\n\nfunction logBdWarning(message: string): void {\n    console.error(kleur.yellow(`[bd] ${message}`));\n}\n\n// ── Issue fetcher ─────────────────────────────────────────────────────────────\n\ninterface BdIssueJson {\n    id: string;\n    title: string;\n    status: string;\n    issue_type: string;\n    closed_at: string | null;\n}\n\n/**\n * Fetch recently closed issues from bd (beads).\n * Returns empty array on any bd failure (graceful degradation).\n *\n * @param days - Number of days to look back for recently closed issues\n * @returns Array of BdIssue objects (empty if bd unavailable or on error)\n */\nexport function fetchClosedBdIssues(days: number): BdIssue[] {\n    if (!isBdAvailable()) {\n        logBdWarning('fetchClosedBdIssues: bd CLI not available, skipping issue fetch');\n        return [];\n    }\n\n    // Use bd query with relative date expression\n    const r = spawnSync('bd', [\n        'query',\n        `status=closed AND updated>${days}d`,\n        '--json',\n    ], {\n        encoding: 'utf8',\n        stdio: 'pipe',\n    });\n\n    if (r.status !== 0) {\n        const hint = r.stderr?.trim() || `exit code ${r.status}`;\n        logBdWarning(`fetchClosedBdIssues: bd query failed (${hint})`);\n        return [];\n    }\n\n    try {\n        const data = JSON.parse(r.stdout ?? '[]') as BdIssueJson[];\n\n        // Map to BdIssue shape (normalize field names)\n        return data.map(issue => ({\n            id: issue.id,\n            title: issue.title,\n            status: issue.status,\n            type: issue.issue_type,\n            closedAt: issue.closed_at,\n        }));\n    } catch (e) {\n        logBdWarning(`fetchClosedBdIssues: JSON parse failed (${e instanceof Error ? e.message : 'unknown error'})`);\n        return [];\n    }\n}","import type { DocEntry } from '../utils/docs-scanner.js';\nimport type { GhPr, BdIssue, CrossCheckFinding, CrossCheckResult } from './docs-cross-check-types.js';\n\n// ── Staleness detector ────────────────────────────────────────────────────────\n\n/**\n * Detect docs that may be stale relative to recent PR activity.\n *\n * Checks:\n * 1. If PRs were merged after doc's lastModified → warning\n * 2. If frontmatter updated_at differs from lastModified by >7 days → info\n */\nexport function detectStaleDocs(\n    docs: DocEntry[],\n    prs: GhPr[],\n    _days: number,\n): CrossCheckFinding[] {\n    const findings: CrossCheckFinding[] = [];\n\n    for (const doc of docs) {\n        // Skip docs with parse errors\n        if (doc.parseError) continue;\n\n        const docDate = doc.lastModified;\n\n        // Check for PRs merged after this doc was last modified\n        const mergedAfter = prs.filter(pr => {\n            if (!pr.mergedAt) return false;\n            return new Date(pr.mergedAt) > docDate;\n        });\n\n        if (mergedAfter.length > 0) {\n            findings.push({\n                severity: 'warning',\n                kind: 'stale',\n                docPath: doc.relativePath,\n                message: `Doc not updated since ${mergedAfter.length} PR${mergedAfter.length > 1 ? 's' : ''} merged`,\n                detail: mergedAfter.slice(0, 3).map(pr => `#${pr.number}: ${pr.title}`).join('; '),\n            });\n        }\n\n        // Check frontmatter updated_at vs lastModified\n        const updatedAtStr = doc.frontmatter?.updated_at;\n        if (updatedAtStr) {\n            const updatedAt = new Date(updatedAtStr);\n            if (!isNaN(updatedAt.getTime())) {\n                const diffDays = Math.abs(docDate.getTime() - updatedAt.getTime()) / 86400000;\n                if (diffDays > 7) {\n                    findings.push({\n                        severity: 'info',\n                        kind: 'stale',\n                        docPath: doc.relativePath,\n                        message: `Frontmatter updated_at differs from file mtime by ${Math.round(diffDays)} days`,\n                    });\n                }\n            }\n        }\n    }\n\n    return findings;\n}\n\n// ── Coverage gap detector ─────────────────────────────────────────────────────\n\n/** BD issue ID pattern for extraction */\nconst BD_ISSUE_ID_REGEX = /[a-z0-9]+-[a-z0-9]{4}/gi;\n\n/**\n * Detect closed feature/task issues that have no corresponding documentation.\n *\n * For each closed bd issue of type 'feature' or 'task', checks if the issue ID\n * appears in any doc's content or frontmatter.\n */\nexport function detectCoverageGaps(\n    docs: DocEntry[],\n    bdIssues: BdIssue[],\n    docContents: Map<string, string>,\n): CrossCheckFinding[] {\n    const findings: CrossCheckFinding[] = [];\n\n    // Only check feature and task types that are closed\n    const relevantIssues = bdIssues.filter(\n        issue => issue.status === 'closed' && (issue.type === 'feature' || issue.type === 'task'),\n    );\n\n    if (relevantIssues.length === 0) return findings;\n\n    // Build a set of all issue IDs mentioned across all docs\n    const mentionedIds = new Set<string>();\n    for (const doc of docs) {\n        // Check frontmatter for issue references\n        const fmStr = JSON.stringify(doc.frontmatter ?? {});\n        for (const match of fmStr.matchAll(BD_ISSUE_ID_REGEX)) {\n            mentionedIds.add(match[0].toLowerCase());\n        }\n\n        // Check doc content\n        const content = docContents.get(doc.relativePath) ?? '';\n        for (const match of content.matchAll(BD_ISSUE_ID_REGEX)) {\n            mentionedIds.add(match[0].toLowerCase());\n        }\n    }\n\n    // Find issues not mentioned in any doc\n    for (const issue of relevantIssues) {\n        const issueIdLower = issue.id.toLowerCase();\n        if (!mentionedIds.has(issueIdLower)) {\n            findings.push({\n                severity: 'warning',\n                kind: 'coverage-gap',\n                docPath: '',\n                message: `Feature issue ${issue.id} has no doc coverage`,\n                detail: issue.title,\n            });\n        }\n    }\n\n    return findings;\n}\n\n// ── Reference validator ───────────────────────────────────────────────────────\n\n/**\n * Validate that issue references in docs point to closed issues.\n *\n * Scans doc content for bd issue IDs and reports if referenced issues\n * are still open (potentially stale references).\n */\nexport function validateIssueReferences(\n    docs: DocEntry[],\n    bdIssues: BdIssue[],\n    docContents: Map<string, string>,\n): CrossCheckFinding[] {\n    const findings: CrossCheckFinding[] = [];\n\n    // Build a map of issue ID -> status\n    const issueStatus = new Map<string, string>();\n    for (const issue of bdIssues) {\n        issueStatus.set(issue.id.toLowerCase(), issue.status);\n    }\n\n    for (const doc of docs) {\n        const content = docContents.get(doc.relativePath) ?? '';\n        const seenIds = new Set<string>();\n\n        for (const match of content.matchAll(BD_ISSUE_ID_REGEX)) {\n            const id = match[0].toLowerCase();\n            if (seenIds.has(id)) continue; // Dedupe per doc\n            seenIds.add(id);\n\n            const status = issueStatus.get(id);\n            if (status && status !== 'closed') {\n                findings.push({\n                    severity: 'info',\n                    kind: 'ref-invalid',\n                    docPath: doc.relativePath,\n                    message: `References open issue ${id}`,\n                });\n            }\n        }\n    }\n\n    return findings;\n}\n\n// ── Report builder ────────────────────────────────────────────────────────────\n\nconst SEVERITY_ORDER: Record<string, number> = {\n    critical: 0,\n    warning: 1,\n    info: 2,\n};\n\n/**\n * Build a CrossCheckResult from all findings.\n *\n * Sorts findings by severity (critical > warning > info).\n */\nexport function buildReport(\n    findings: CrossCheckFinding[],\n    docsChecked: number,\n): CrossCheckResult {\n    const sorted = [...findings].sort(\n        (a, b) => (SEVERITY_ORDER[a.severity] ?? 2) - (SEVERITY_ORDER[b.severity] ?? 2),\n    );\n\n    return {\n        docsChecked,\n        findingsTotal: sorted.length,\n        findings: sorted,\n        generatedAt: new Date().toISOString(),\n    };\n}","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawn, spawnSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join } from 'node:path';\n\nexport function createMemoryCommand(): Command {\n    return new Command('memory')\n        .description('Manage project memory (.xtrm/memory.md)')\n        .addCommand(createMemoryUpdateCommand());\n}\n\nfunction createMemoryUpdateCommand(): Command {\n    return new Command('update')\n        .description('Run memory-processor specialist to synthesize bd memories into .xtrm/memory.md')\n        .option('--dry-run', 'Report only — do not modify memories or write memory.md', false)\n        .option('--no-beads', 'Skip creating a tracking bead for this run', false)\n        .action(async (opts: { dryRun: boolean; beads: boolean }) => {\n            const cwd = process.cwd();\n\n            // Gate: specialists CLI must be available\n            const check = spawnSync('specialists', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n            if (check.status !== 0) {\n                console.error(kleur.red(\n                    '\\n  ✗ specialists CLI not found.\\n' +\n                    '  Install with: npm install -g @jaggerxtrm/specialists\\n'\n                ));\n                process.exit(1);\n            }\n\n            // Gate: memory-processor specialist must be discovered\n            const list = spawnSync('specialists', ['list', '--json'], { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (list.status === 0) {\n                try {\n                    const specialists: Array<{ name: string }> = JSON.parse(list.stdout);\n                    if (!specialists.some(s => s.name === 'memory-processor')) {\n                        console.error(kleur.red(\n                            '\\n  ✗ memory-processor specialist not found.\\n' +\n                            '  Run `specialists init` to install canonical specialists.\\n'\n                        ));\n                        process.exit(1);\n                    }\n                } catch { /* non-fatal: proceed and let specialists run handle it */ }\n            }\n\n            const prompt = opts.dryRun\n                ? 'Dry run: classify all memories and show the full report. Do not call bd forget or write .xtrm/memory.md.'\n                : 'Run the full memory processor workflow.';\n\n            const args = ['run', 'memory-processor', '--prompt', prompt];\n            if (!opts.beads) args.push('--no-beads');\n\n            const memPath = join(cwd, '.xtrm', 'memory.md');\n            const spinnerText = opts.dryRun\n                ? 'Analyzing memories...'\n                : `${existsSync(memPath) ? 'Updating' : 'Creating'} .xtrm/memory.md...`;\n\n            console.log(kleur.bold(`\\n  xt memory update${opts.dryRun ? ' (dry run)' : ''}\\n`));\n            console.log(kleur.dim(`  ${spinnerText}\\n`));\n\n            // Pass stdio: 'inherit' so specialists gets a proper TTY — piping stdout causes\n            // the specialists process to hang after job completion (it waits for TTY close).\n            const exitCode = await new Promise<number>((resolve) => {\n                const proc = spawn('specialists', args, { cwd, stdio: 'inherit' });\n                proc.on('close', (code) => resolve(code ?? 0));\n            });\n\n            if (exitCode !== 0) {\n                console.error(kleur.red('\\n  ✗ memory-processor failed.\\n'));\n            }\n\n            process.exit(exitCode);\n        });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawn, spawnSync } from 'node:child_process';\nimport { readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { confirmDestructiveAction } from '../utils/confirmation.js';\n\nexport function createMergeCommand(): Command {\n    return new Command('merge')\n        .description('Drain the xt worktree PR merge queue via the xt-merge specialist')\n        .option('--dry-run', 'List queue and CI status without merging', false)\n        .option('-y, --yes', 'Skip confirmation prompt', false)\n        .option('--no-beads', 'Skip creating a tracking bead for this run', false)\n        .action(async (opts: { dryRun: boolean; yes: boolean; beads: boolean }) => {\n            const cwd = process.cwd();\n\n            // Gate: must be inside a git repository\n            const gitCheck = spawnSync('git', ['rev-parse', '--git-dir'], { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (gitCheck.status !== 0) {\n                console.error(kleur.red('\\n  ✗ Not inside a git repository.\\n'));\n                process.exit(1);\n            }\n\n            // Gate: gh must be authenticated\n            const ghAuth = spawnSync('gh', ['auth', 'status'], { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (ghAuth.status !== 0) {\n                console.error(kleur.red(\n                    '\\n  ✗ gh is not authenticated.\\n' +\n                    '  Run: gh auth login\\n'\n                ));\n                process.exit(1);\n            }\n\n            // Gate: warn on uncommitted changes — rebase cascade checks out other branches.\n            // Exclude .beads/ (runtime noise: dolt-monitor.pid, dolt-server.activity, etc.)\n            const dirty = spawnSync('git', ['status', '--porcelain', '--', ':!.beads/', ':!.specialists/'], { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (dirty.stdout.trim().length > 0) {\n                console.error(kleur.yellow(\n                    '\\n  ⚠ Uncommitted changes detected.\\n' +\n                    '  The rebase cascade will check out other branches — a dirty tree\\n' +\n                    '  will either fail or carry changes onto the wrong branch.\\n\\n' +\n                    '  Stash first:  git stash push -m \"xt-merge cascade stash\"\\n' +\n                    '  Then re-run:  xt merge\\n'\n                ));\n                process.exit(1);\n            }\n\n            // Gate: specialists CLI must be available\n            const check = spawnSync('specialists', ['--version'], { encoding: 'utf8', stdio: 'pipe' });\n            if (check.status !== 0) {\n                console.error(kleur.red(\n                    '\\n  ✗ specialists CLI not found.\\n' +\n                    '  Install with: npm install -g @jaggerxtrm/specialists\\n'\n                ));\n                process.exit(1);\n            }\n\n            // Gate: xt-merge specialist must be discovered\n            const list = spawnSync('specialists', ['list', '--json'], { cwd, encoding: 'utf8', stdio: 'pipe' });\n            if (list.status === 0) {\n                try {\n                    const specialists: Array<{ name: string }> = JSON.parse(list.stdout);\n                    if (!specialists.some(s => s.name === 'xt-merge')) {\n                        console.error(kleur.red(\n                            '\\n  ✗ xt-merge specialist not found.\\n' +\n                            '  Run `specialists init` to install canonical specialists.\\n'\n                        ));\n                        process.exit(1);\n                    }\n                } catch { /* non-fatal: proceed and let specialists run handle it */ }\n            }\n\n            if (!opts.dryRun) {\n                const confirmed = await confirmDestructiveAction({\n                    yes: opts.yes,\n                    message: 'Drain and merge the xt PR queue?',\n                    initial: false,\n                });\n                if (!confirmed) {\n                    console.log(kleur.dim('  Cancelled\\n'));\n                    return;\n                }\n            }\n\n            const prompt = opts.dryRun\n                ? 'List all open xt/ PRs sorted by creation time and check CI status on each. Do not merge anything.'\n                : 'Drain the xt worktree PR merge queue.';\n\n            const args = ['run', 'xt-merge', '--prompt', prompt];\n            if (!opts.beads) args.push('--no-beads');\n\n            console.log(kleur.bold(`\\n  xt merge${opts.dryRun ? ' (dry run)' : ''}\\n`));\n\n            // Snapshot job IDs before running so we can find the new one after\n            const jobsDir = join(cwd, '.specialists', 'jobs');\n            let jobsBefore: Set<string>;\n            try {\n                jobsBefore = new Set(\n                    readdirSync(jobsDir, { withFileTypes: true })\n                        .filter(d => d.isDirectory())\n                        .map(d => d.name),\n                );\n            } catch {\n                jobsBefore = new Set();\n            }\n\n            // Spawn detached so we can poll independently — stdio: 'ignore' avoids\n            // the TTY-close hang that occurs with piped or inherited output.\n            const runProc = spawn('specialists', args, { cwd, detached: true, stdio: 'ignore' });\n            runProc.unref();\n\n            // Wait for the new job directory to appear (created at job startup, not completion)\n            const jobId = await (async () => {\n                const deadline = Date.now() + 15_000;\n                while (Date.now() < deadline) {\n                    try {\n                        const entries = readdirSync(jobsDir, { withFileTypes: true })\n                            .filter(d => d.isDirectory())\n                            .map(d => d.name);\n                        const newId = entries.find(id => !jobsBefore.has(id));\n                        if (newId) return newId;\n                    } catch { /* dir not yet created */ }\n                    await new Promise(r => setTimeout(r, 200));\n                }\n                return undefined;\n            })();\n\n            if (!jobId) {\n                console.error(kleur.red('\\n  ✗ Timed out waiting for xt-merge job to start.\\n'));\n                process.exit(1);\n            }\n\n            // Stream live events via feed, then print final specialist output.\n            const feed = spawnSync('specialists', ['feed', '--job', jobId, '--follow'], { cwd, stdio: 'inherit' });\n            if (feed.status !== 0) {\n                process.exit(feed.status ?? 1);\n            }\n\n            const result = spawnSync('specialists', ['result', jobId, '--wait'], { cwd, stdio: 'inherit' });\n            process.exit(result.status ?? 0);\n        });\n}","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawnSync } from 'node:child_process';\nimport { existsSync } from 'node:fs';\nimport { join, basename } from 'node:path';\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\ninterface XtrmEvent {\n  id: number;\n  ts: number;\n  session_id: string;\n  runtime: string;\n  worktree: string | null;\n  kind: string;\n  tool_name: string | null;\n  outcome: string | null;\n  issue_id: string | null;\n  duration_ms: number | null;\n  data: string | null;\n}\n\ninterface DebugOptions {\n  all: boolean;\n  follow: boolean;\n  session: string | undefined;\n  type: string | undefined;\n  json: boolean;\n}\n\n// ── Kind labels ───────────────────────────────────────────────────────────────\n\ntype ColorFn = (s: string) => string;\n\ntype OutcomeFn = (outcome: string | null) => string;\n\ninterface KindLabelDef {\n  label: string | OutcomeFn;\n  color: ColorFn | OutcomeFn;\n}\n\nconst committedLabel: OutcomeFn = (outcome: string | null) => outcome === 'error' ? 'ACMT-' : 'ACMT+';\nconst committedColor: ColorFn = (s: string) => (s === 'ACMT-' ? kleur.red(s) : kleur.cyan(s));\n\n// Gate and lifecycle events: fixed 5-char label + fixed color\nconst KIND_LABELS: Record<string, KindLabelDef> = {\n  'session.start':         { label: 'SESS+', color: kleur.green  },\n  'session.end':           { label: 'SESS-', color: kleur.white  },\n  'gate.edit.allow':       { label: 'EDIT+', color: kleur.green  },\n  'gate.edit.block':       { label: 'EDIT-', color: kleur.red    },\n  'gate.commit.allow':     { label: 'CMIT+', color: kleur.green  },\n  'gate.commit.block':     { label: 'CMIT-', color: kleur.red    },\n  'gate.stop.block':       { label: 'STOP-', color: kleur.red    },\n  'gate.memory.triggered': { label: 'MEMO-', color: kleur.yellow },\n  'gate.memory.acked':     { label: 'MEMO+', color: kleur.green  },\n  'gate.worktree.block':   { label: 'WTRE-', color: kleur.red    },\n  'bd.claimed':            { label: 'CLMD ', color: kleur.cyan   },\n  'bd.closed':             { label: 'CLSD ', color: kleur.green  },\n  'bd.committed':          { label: committedLabel, color: committedColor },\n};\n\n// Tool call events: derive 5-char abbrev from tool_name\nconst TOOL_ABBREVS: Record<string, string> = {\n  Bash: 'BASH', bash: 'BASH', execute_shell_command: 'BASH',\n  Read: 'READ', Write: 'WRIT', Edit: 'EDIT', MultiEdit: 'EDIT', NotebookEdit: 'NTED',\n  Glob: 'GLOB', Grep: 'GREP',\n  WebFetch: 'WBFT', WebSearch: 'WSRC',\n  Agent: 'AGNT', Task: 'TASK',\n  LSP: 'LSP ',\n};\n\nfunction toolAbbrev(toolName: string): string {\n  if (TOOL_ABBREVS[toolName]) return TOOL_ABBREVS[toolName];\n  if (toolName.startsWith('mcp__serena__'))   return 'SRNA';\n  if (toolName.startsWith('mcp__gitnexus__')) return 'GTNX';\n  if (toolName.startsWith('mcp__deepwiki__')) return 'WIKI';\n  if (toolName.startsWith('mcp__'))           return 'MCP ';\n  return toolName.slice(0, 4).toUpperCase();\n}\n\nfunction getLabel(event: XtrmEvent): string {\n  if (event.kind === 'tool.call') {\n    const abbrev = toolAbbrev(event.tool_name ?? '').padEnd(5);\n    return event.outcome === 'error' ? kleur.red(abbrev) : kleur.dim(abbrev);\n  }\n  const def = KIND_LABELS[event.kind];\n  if (!def) {\n    // Unknown kind: derive from last segment + outcome marker\n    const seg = (event.kind.split('.').pop() ?? 'UNKN').slice(0, 4).toUpperCase();\n    const label = `${seg}${event.outcome === 'block' ? '-' : '+'}`.padEnd(5);\n    return event.outcome === 'block' ? kleur.red(label) : kleur.dim(label);\n  }\n  // bd.committed has dynamic label/color\n  if (event.kind === 'bd.committed') {\n    const label = event.outcome === 'error' ? 'ACMT-' : 'ACMT+';\n    return event.outcome === 'error' ? kleur.red(label) : kleur.cyan(label);\n  }\n  return typeof def.color === 'function' && typeof def.label === 'string'\n    ? def.color(def.label)\n    : kleur.dim('UNKN ');\n}\n\n// ── Session color map ─────────────────────────────────────────────────────────\n\nconst SESSION_COLORS: ColorFn[] = [\n  kleur.blue, kleur.green, kleur.yellow, kleur.cyan, kleur.magenta,\n];\n\nfunction buildColorMap(events: XtrmEvent[]): Map<string, ColorFn> {\n  const map = new Map<string, ColorFn>();\n  for (const ev of events) {\n    if (!map.has(ev.session_id)) {\n      map.set(ev.session_id, SESSION_COLORS[map.size % SESSION_COLORS.length]);\n    }\n  }\n  return map;\n}\n\nfunction extendColorMap(map: Map<string, ColorFn>, events: XtrmEvent[]): void {\n  for (const ev of events) {\n    if (!map.has(ev.session_id)) {\n      map.set(ev.session_id, SESSION_COLORS[map.size % SESSION_COLORS.length]);\n    }\n  }\n}\n\n// ── Formatting ────────────────────────────────────────────────────────────────\n\nfunction fmtTime(ts: number): string {\n  return new Date(ts).toLocaleTimeString('en-GB', { hour12: false });\n}\n\nfunction buildDetail(event: XtrmEvent): string {\n  const parts: string[] = [];\n\n  // Parse data JSON if present\n  let d: Record<string, string> | null = null;\n  if (event.data) {\n    try { d = JSON.parse(event.data); } catch { /* ignore */ }\n  }\n\n  if (event.kind === 'tool.call') {\n    if (d?.cmd)     parts.push(kleur.dim(d.cmd.slice(0, 72)));\n    if (d?.file)    parts.push(kleur.dim(basename(d.file)));\n    if (d?.pattern) parts.push(kleur.dim(`/${d.pattern}/`));\n    if (d?.url)     parts.push(kleur.dim(d.url.slice(0, 72)));\n    if (d?.query)   parts.push(kleur.dim(d.query.slice(0, 72)));\n    if (d?.prompt)  parts.push(kleur.dim(d.prompt.slice(0, 72)));\n  } else {\n    if (event.issue_id)  parts.push(kleur.yellow(event.issue_id));\n    if (d?.file)         parts.push(kleur.dim(basename(d.file)));\n    if (d?.reason_code)  parts.push(kleur.dim(`[${d.reason_code}]`));\n    if (event.worktree)  parts.push(kleur.dim(`wt:${event.worktree}`));\n  }\n\n  return parts.join('  ') || kleur.dim('—');\n}\n\nfunction formatLine(event: XtrmEvent, colorMap: Map<string, ColorFn>): string {\n  const time    = kleur.dim(fmtTime(event.ts));\n  const colorFn = colorMap.get(event.session_id) ?? kleur.white;\n  const session = colorFn(event.session_id.slice(0, 8));\n  const label   = getLabel(event);\n  const detail  = buildDetail(event);\n  return `${time} ${label} ${session}  ${detail}`;\n}\n\n// ── SQLite queries ────────────────────────────────────────────────────────────\n\nfunction findDbPath(cwd: string): string | null {\n  let dir = cwd;\n  for (let i = 0; i < 10; i++) {\n    if (existsSync(join(dir, '.beads'))) return join(dir, '.xtrm', 'debug.db');\n    const parent = join(dir, '..');\n    if (parent === dir) break;\n    dir = parent;\n  }\n  return null;\n}\n\nfunction buildWhere(opts: DebugOptions, base: string): string {\n  const clauses: string[] = [];\n  if (base) clauses.push(base);\n  if (opts.session) {\n    const s = opts.session.replace(/'/g, \"''\");\n    clauses.push(`session_id LIKE '${s}%'`);\n  }\n  if (opts.type) {\n    const t = opts.type.replace(/'/g, \"''\");\n    clauses.push(`kind LIKE '${t}.%' OR kind = '${t}'`);\n  }\n  return clauses.length ? clauses.join(' AND ') : '';\n}\n\nfunction queryEvents(dbPath: string, where: string, limit: number): XtrmEvent[] {\n  const sql = `SELECT id,ts,session_id,runtime,worktree,kind,tool_name,outcome,issue_id,duration_ms,data FROM events${where ? ` WHERE ${where}` : ''} ORDER BY id ASC LIMIT ${limit}`;\n\n  const result = spawnSync('sqlite3', [dbPath, '-json', sql], {\n    stdio: ['pipe', 'pipe', 'pipe'],\n    encoding: 'utf8',\n    timeout: 5000,\n  });\n\n  if (result.status !== 0 || !result.stdout.trim()) return [];\n  try { return JSON.parse(result.stdout); } catch { return []; }\n}\n\n// ── Follow mode ───────────────────────────────────────────────────────────────\n\nfunction follow(dbPath: string, opts: DebugOptions): void {\n  const sinceTs = Date.now() - 5 * 60 * 1000;\n  const initial = queryEvents(dbPath, buildWhere(opts, `ts >= ${sinceTs}`), 200);\n\n  const colorMap = buildColorMap(initial);\n  let lastId = 0;\n\n  for (const ev of initial) {\n    if (ev.id > lastId) lastId = ev.id;\n    opts.json ? console.log(JSON.stringify(ev)) : console.log(formatLine(ev, colorMap));\n  }\n\n  // Poll every 2s — clean integer comparison, no datetime overlap needed\n  const interval = setInterval(() => {\n    const events = queryEvents(dbPath, buildWhere(opts, `id > ${lastId}`), 50);\n    if (events.length > 0) {\n      extendColorMap(colorMap, events);\n      for (const ev of events) {\n        if (ev.id > lastId) lastId = ev.id;\n        opts.json ? console.log(JSON.stringify(ev)) : console.log(formatLine(ev, colorMap));\n      }\n    }\n  }, 2000);\n\n  process.on('SIGINT', () => { clearInterval(interval); process.exit(0); });\n}\n\n// ── Command ───────────────────────────────────────────────────────────────────\n\nexport function createDebugCommand(): Command {\n  return new Command('debug')\n    .description('Watch xtrm events: tool calls, gate decisions, bd lifecycle')\n    .option('-f, --follow',      'Follow new events (default)', false)\n    .option('--all',             'Show full history and exit',  false)\n    .option('--session <id>',    'Filter by session ID (prefix match)')\n    .option('--type <domain>',   'Filter by domain: tool | gate | bd | session')\n    .option('--json',            'Output raw JSON lines', false)\n    .action((opts: DebugOptions) => {\n      const cwd    = process.cwd();\n      const dbPath = findDbPath(cwd);\n\n      if (!dbPath || !existsSync(dbPath)) return;\n\n      if (opts.all) {\n        const events = queryEvents(dbPath, buildWhere(opts, ''), 1000);\n        const colorMap = buildColorMap(events);\n        for (const ev of events) {\n          opts.json ? console.log(JSON.stringify(ev)) : console.log(formatLine(ev, colorMap));\n        }\n        return;\n      }\n\n      follow(dbPath, opts);\n    });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { spawnSync } from 'node:child_process';\nimport { t } from '../utils/theme.js';\n\nfunction run(cmd: string, args: string[], cwd: string): { ok: boolean; out: string } {\n    const r = spawnSync(cmd, args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n    return { ok: r.status === 0, out: (r.stdout ?? '').trim() };\n}\n\nfunction detectDefaultBranch(cwd: string): string {\n    const symRef = run('git', ['symbolic-ref', 'refs/remotes/origin/HEAD', '--short'], cwd);\n    if (symRef.ok && symRef.out) return symRef.out.replace('origin/', '');\n    if (run('git', ['rev-parse', '--verify', 'origin/master'], cwd).ok) return 'master';\n    return 'main';\n}\n\nfunction getSessionHash(cwd: string): string {\n    const r = run('git', ['rev-parse', '--short', 'HEAD'], cwd);\n    return r.ok ? r.out : Date.now().toString(36);\n}\n\nconst MAX_REPORT_FILE_ROWS = 40;\nconst MAX_SPECIALIST_ROWS = 25;\n\nfunction isSkillPath(filePath: string): boolean {\n    return filePath.startsWith('.xtrm/skills/')\n        || filePath.startsWith('.pi/skills/')\n        || filePath.endsWith('/SKILL.md');\n}\n\nfunction renderFileRows(lines: string[], files: string[]): void {\n    const regularFiles = files.filter(file => !isSkillPath(file));\n    const skillFiles = files.filter(isSkillPath);\n    const visibleRegularFiles = regularFiles.slice(0, MAX_REPORT_FILE_ROWS);\n\n    for (const file of visibleRegularFiles) {\n        lines.push(`- \\`${file}\\``);\n    }\n\n    const hiddenRegularCount = regularFiles.length - visibleRegularFiles.length;\n    if (hiddenRegularCount > 0) {\n        lines.push(`- ... and ${hiddenRegularCount} more files`);\n    }\n\n    if (skillFiles.length > 0) {\n        lines.push(`- \\`[skill files]\\` ${skillFiles.length} skill/runtime file(s)`);\n    }\n}\n\nfunction formatDuration(seconds: number | null): string {\n    if (seconds === null || Number.isNaN(seconds) || seconds < 0) return '?';\n    if (seconds < 60) return `${seconds}s`;\n    const minutes = Math.floor(seconds / 60);\n    const remSeconds = seconds % 60;\n    return `${minutes}m ${remSeconds}s`;\n}\n\ninterface ClosedIssue {\n    id: string;\n    title: string;\n    type: string;\n    priority: string;\n    close_reason: string;\n}\n\ninterface OpenIssue {\n    id: string;\n    title: string;\n    type: string;\n    priority: string;\n    status: string;\n}\n\nfunction extractIssueIds(commitLog: string): string[] {\n    const CONVENTIONAL_SCOPES = new Set([\n        'feat', 'fix', 'chore', 'docs', 'test', 'tests', 'refactor', 'style',\n        'perf', 'ci', 'build', 'revert', 'wip', 'auth', 'api', 'ui', 'db',\n        'merge', 'memory', 'end', 'sync', 'core', 'cli', 'hooks', 'skills',\n    ]);\n    const matches = commitLog.matchAll(/\\(([a-z][a-z0-9]*-[a-z0-9]+(?:\\.[0-9]+)?)\\)/gi);\n    return [...new Set(\n        [...matches]\n            .map(m => m[1].toLowerCase())\n            .filter(id => !CONVENTIONAL_SCOPES.has(id)),\n    )];\n}\n\nfunction queryIssue(id: string, cwd: string): Record<string, string> | null {\n    const r = run('bd', ['query', `id=${id}`, '--all', '--json'], cwd);\n    if (!r.ok) return null;\n    try {\n        const data = JSON.parse(r.out);\n        return Array.isArray(data) ? data[0] : data;\n    } catch {\n        return null;\n    }\n}\n\nfunction collectClosedIssues(commitLog: string, cwd: string): ClosedIssue[] {\n    const ids = extractIssueIds(commitLog);\n    const issues: ClosedIssue[] = [];\n    for (const id of ids) {\n        const data = queryIssue(id, cwd);\n        issues.push({\n            id,\n            title: data?.title ?? id,\n            type: data?.issue_type ?? data?.type ?? 'task',\n            priority: String(data?.priority ?? '?'),\n            close_reason: data?.close_reason ?? '',\n        });\n    }\n    return issues;\n}\n\nfunction collectOpenIssues(cwd: string): OpenIssue[] {\n    // Use bd query --json for structured output (bd list doesn't support --json)\n    const issues: OpenIssue[] = [];\n    for (const status of ['in_progress', 'open']) {\n        const r = run('bd', ['query', `status=${status}`, '--json'], cwd);\n        if (!r.ok) continue;\n        try {\n            const items = JSON.parse(r.out);\n            if (!Array.isArray(items)) continue;\n            for (const item of items) {\n                issues.push({\n                    id: item.id ?? '?',\n                    title: item.title ?? '',\n                    type: item.issue_type ?? item.type ?? 'task',\n                    priority: String(item.priority ?? '?'),\n                    status,\n                });\n            }\n        } catch { /* skip parse errors */ }\n    }\n    return issues;\n}\n\ninterface SpecialistJob {\n    id: string;\n    status: string;\n    specialist: string;\n    beadId: string;\n    model: string;\n    startedAtMs: number;\n    elapsedSeconds: number | null;\n}\n\nfunction parseNumber(value: unknown): number | null {\n    return typeof value === 'number' && Number.isFinite(value) ? value : null;\n}\n\nfunction collectSpecialistJobs(cwd: string, sessionStartMs: number): SpecialistJob[] {\n    const jobsDir = path.join(cwd, '.specialists', 'jobs');\n    if (!fs.pathExistsSync(jobsDir)) return [];\n\n    const jobs: SpecialistJob[] = [];\n    try {\n        const entries = fs.readdirSync(jobsDir);\n        for (const entry of entries) {\n            const jobDir = path.join(jobsDir, entry);\n            if (!fs.statSync(jobDir).isDirectory()) continue;\n\n            const statusFile = path.join(jobDir, 'status.json');\n            if (!fs.pathExistsSync(statusFile)) continue;\n\n            try {\n                const data = JSON.parse(fs.readFileSync(statusFile, 'utf8')) as Record<string, unknown>;\n                const startedAtMs = parseNumber(data.started_at_ms) ?? 0;\n                if (startedAtMs > 0 && startedAtMs < sessionStartMs) continue;\n\n                const elapsedSeconds = parseNumber(data.elapsed_s)\n                    ?? (() => {\n                        const durationMs = parseNumber(data.duration_ms);\n                        return durationMs === null ? null : Math.round(durationMs / 1000);\n                    })();\n\n                jobs.push({\n                    id: String(data.id ?? entry),\n                    status: String(data.status ?? data.current_event ?? 'unknown'),\n                    specialist: String(data.specialist_name ?? data.specialist ?? 'unknown'),\n                    beadId: String(data.bead_id ?? ''),\n                    model: String(data.model ?? ''),\n                    startedAtMs,\n                    elapsedSeconds,\n                });\n            } catch {\n                // skip malformed status files\n            }\n        }\n    } catch {\n        // jobs dir unreadable\n    }\n\n    return jobs.sort((a, b) => b.startedAtMs - a.startedAtMs);\n}\n\nfunction collectMemories(cwd: string): Array<{ key: string; content: string }> {\n    // bd memories with no keyword returns recent — grab all\n    const r = run('bd', ['memories'], cwd);\n    if (!r.ok || !r.out) return [];\n\n    const memories: Array<{ key: string; content: string }> = [];\n    const lines = r.out.split('\\n');\n    for (const line of lines) {\n        // Format: \"key: content\" or \"### key\\ncontent\"\n        const match = line.match(/^### (.+)/) || line.match(/^([a-z0-9_-]+):\\s+(.+)/i);\n        if (match) {\n            memories.push({ key: match[1], content: match[2] ?? '' });\n        }\n    }\n    return memories;\n}\n\nfunction buildSkeleton(opts: {\n    date: string;\n    branch: string;\n    commitCount: number;\n    closedIssues: ClosedIssue[];\n    openIssues: OpenIssue[];\n    newFiles: string[];\n    modifiedFiles: string[];\n    deletedFiles: string[];\n    specialistJobs: SpecialistJob[];\n    memories: Array<{ key: string; content: string }>;\n}): string {\n    const lines: string[] = [];\n\n    // Frontmatter\n    lines.push('---');\n    lines.push(`session_date: ${opts.date}`);\n    lines.push(`branch: ${opts.branch}`);\n    lines.push(`commits: ${opts.commitCount}`);\n    lines.push(`issues_closed: ${opts.closedIssues.length}`);\n    lines.push(`issues_filed: 0`);\n    lines.push(`specialist_dispatches: ${opts.specialistJobs.length}`);\n    lines.push(`models_used: []`);\n    lines.push('---');\n    lines.push('');\n\n    // Title\n    lines.push(`# Session Report — ${opts.date}`);\n    lines.push('');\n\n    // Summary\n    lines.push('## Summary');\n    lines.push('');\n    lines.push('<!-- FILL: What was accomplished this session. Key decisions, discoveries, outcomes. Technical prose, no fluff. -->');\n    lines.push('');\n\n    // Issues Closed\n    lines.push(`## Issues Closed (${opts.closedIssues.length})`);\n    lines.push('');\n    if (opts.closedIssues.length > 0) {\n        lines.push('| ID | Title | Type | Close Reason |');\n        lines.push('|----|-------|------|-------------|');\n        for (const issue of opts.closedIssues) {\n            const reason = issue.close_reason.split('\\n')[0] || '';\n            lines.push(`| ${issue.id} | ${issue.title} | ${issue.type} | ${reason} |`);\n        }\n        lines.push('');\n        lines.push('<!-- FILL: Group rows by category (backlog, bugs discovered, cleanup, features). Add Specialist and Wave columns if specialists were dispatched. Add context to close reasons where the raw reason is terse. -->');\n    } else {\n        lines.push('*No issues closed via commit references.*');\n        lines.push('');\n        lines.push('<!-- FILL: If issues were closed outside commit messages, add them here with full context. -->');\n    }\n    lines.push('');\n\n    // Issues Filed\n    lines.push('## Issues Filed');\n    lines.push('');\n    lines.push('| ID | P | Type | Title | Why |');\n    lines.push('|----|---|------|-------|-----|');\n    lines.push('<!-- FILL: List every issue created this session. The Why column is critical — explain the rationale for filing, not just the title. -->');\n    lines.push('');\n\n    // Specialist Dispatches\n    lines.push('## Specialist Dispatches');\n    lines.push('');\n    if (opts.specialistJobs.length > 0) {\n        const statusCounts = new Map<string, number>();\n        for (const job of opts.specialistJobs) {\n            const current = statusCounts.get(job.status) ?? 0;\n            statusCounts.set(job.status, current + 1);\n        }\n        const statusSummary = [...statusCounts.entries()]\n            .sort((a, b) => a[0].localeCompare(b[0]))\n            .map(([status, count]) => `${status}:${count}`)\n            .join(', ');\n\n        lines.push(`Session jobs detected: **${opts.specialistJobs.length}** (${statusSummary})`);\n        lines.push('');\n        lines.push('| Job | Specialist | Status | Bead | Model | Elapsed |');\n        lines.push('|-----|-----------|--------|------|-------|---------|');\n\n        const visibleJobs = opts.specialistJobs.slice(0, MAX_SPECIALIST_ROWS);\n        for (const job of visibleJobs) {\n            lines.push(`| ${job.id} | ${job.specialist} | ${job.status} | ${job.beadId || '-'} | ${job.model || '-'} | ${formatDuration(job.elapsedSeconds)} |`);\n        }\n\n        if (opts.specialistJobs.length > visibleJobs.length) {\n            lines.push(`| ... | ... | ... | ... | ... | ... (${opts.specialistJobs.length - visibleJobs.length} more) |`);\n        }\n\n        lines.push('');\n        lines.push('<!-- FILL: Keep this section session-scoped. Add only outcomes that affect handoff (failures, partial work, follow-up actions). -->');\n    } else {\n        lines.push('*No specialist dispatches detected for this session range.*');\n        lines.push('');\n        lines.push('<!-- FILL: If specialists were used via MCP tools (not CLI), document dispatches here with wave/model/outcome details. -->');\n    }\n    lines.push('');\n\n    // Problems Encountered\n    lines.push('## Problems Encountered');\n    lines.push('');\n    lines.push('| Problem | Root Cause | Resolution |');\n    lines.push('|---------|-----------|------------|');\n    lines.push('<!-- FILL: Every problem hit during the session — bugs discovered, blockers, failed approaches. Root cause and resolution are mandatory columns. If no problems, delete this section. -->');\n    lines.push('');\n\n    // Code Changes\n    lines.push('## Code Changes');\n    lines.push('');\n    lines.push('### Change summary');\n    lines.push(`- Added: ${opts.newFiles.length}`);\n    lines.push(`- Modified: ${opts.modifiedFiles.length}`);\n    lines.push(`- Deleted: ${opts.deletedFiles.length}`);\n    lines.push('');\n\n    if (opts.newFiles.length > 0) {\n        lines.push('### New files');\n        renderFileRows(lines, opts.newFiles);\n        lines.push('');\n    }\n    if (opts.modifiedFiles.length > 0) {\n        lines.push('### Modified files');\n        renderFileRows(lines, opts.modifiedFiles);\n        lines.push('');\n    }\n    if (opts.deletedFiles.length > 0) {\n        lines.push('### Deleted files');\n        renderFileRows(lines, opts.deletedFiles);\n        lines.push('');\n    }\n    lines.push('<!-- FILL: Narrative explaining key modifications — what changed and why. Group logically if many files. Keep to handoff-relevant changes only. -->');\n    lines.push('');\n\n    // Documentation Updates\n    lines.push('## Documentation Updates');\n    lines.push('');\n    lines.push('<!-- FILL: Any doc changes, memory updates, skill modifications, CHANGELOG entries. Delete if none. -->');\n    lines.push('');\n\n    // Open Issues with Context\n    lines.push(`## Open Issues with Context`);\n    lines.push('');\n    if (opts.openIssues.length > 0) {\n        lines.push('| ID | P | Title | Status | Context / Suggestions |');\n        lines.push('|----|---|-------|--------|----------------------|');\n        for (const issue of opts.openIssues) {\n            lines.push(`| ${issue.id} | P${issue.priority} | ${issue.title} | ${issue.status} | <!-- FILL --> |`);\n        }\n        lines.push('');\n        lines.push('<!-- FILL: The Context / Suggestions column is the most valuable part of the handoff. For each issue, write what the next agent needs to know: current state, blockers discovered, suggested approach, files to look at. Group into Ready / Backlog subsections if useful. -->');\n    } else {\n        lines.push('*No open issues.*');\n    }\n    lines.push('');\n\n    // Memories Saved\n    lines.push('## Memories Saved');\n    lines.push('');\n    lines.push('| Key | Content |');\n    lines.push('|-----|---------|');\n    if (opts.memories.length > 0) {\n        for (const m of opts.memories) {\n            lines.push(`| ${m.key} | ${m.content} |`);\n        }\n    }\n    lines.push('<!-- FILL: List all memories saved this session via bd remember. If the skeleton missed any, add them. -->');\n    lines.push('');\n\n    // Suggested Next Priority\n    lines.push('## Suggested Next Priority');\n    lines.push('');\n    lines.push('<!-- FILL: Ordered list (1-4 items) with rationale for each. Based on what you learned this session — dependency order, user intent, blocked items about to unblock. -->');\n    lines.push('');\n\n    return lines.join('\\n');\n}\n\nasync function generateReport(cwd: string): Promise<string> {\n    const defaultBranch = detectDefaultBranch(cwd);\n    const branch = run('git', ['rev-parse', '--abbrev-ref', 'HEAD'], cwd).out || 'unknown';\n    const sessionHash = getSessionHash(cwd);\n    const date = new Date().toISOString().slice(0, 10);\n\n    // Determine commit range base\n    // If on a feature branch, compare to default branch. If on default branch, use last 24h or last tag.\n    const isOnDefault = branch === defaultBranch;\n    const rangeBase = isOnDefault\n        ? run('git', ['log', '--since=24 hours ago', '--format=%H', '--reverse'], cwd).out.split('\\n')[0] || 'HEAD~10'\n        : `origin/${defaultBranch}`;\n    const range = isOnDefault ? `${rangeBase}..HEAD` : `origin/${defaultBranch}..HEAD`;\n\n    // Git data\n    const commitLog = run('git', ['log', range, '--oneline'], cwd).out;\n    const commitCount = commitLog ? commitLog.split('\\n').filter(Boolean).length : 0;\n    const newFiles = run('git', ['diff', range, '--name-only', '--diff-filter=A'], cwd).out.split('\\n').filter(Boolean);\n    const modifiedFiles = run('git', ['diff', range, '--name-only', '--diff-filter=M'], cwd).out.split('\\n').filter(Boolean);\n    const deletedFiles = run('git', ['diff', range, '--name-only', '--diff-filter=D'], cwd).out.split('\\n').filter(Boolean);\n\n    const oldestCommitEpoch = run('git', ['log', range, '--reverse', '--format=%ct'], cwd).out\n        .split('\\n')\n        .find(Boolean);\n    const sessionStartMs = oldestCommitEpoch\n        ? Number(oldestCommitEpoch) * 1000\n        : Date.now() - (24 * 60 * 60 * 1000);\n\n    // Beads data\n    const closedIssues = collectClosedIssues(commitLog, cwd);\n    const openIssues = collectOpenIssues(cwd);\n\n    // Specialist data\n    const specialistJobs = collectSpecialistJobs(cwd, sessionStartMs);\n\n    // Memories\n    const memories = collectMemories(cwd);\n\n    // Build skeleton\n    const skeleton = buildSkeleton({\n        date,\n        branch,\n        commitCount,\n        closedIssues,\n        openIssues,\n        newFiles,\n        modifiedFiles,\n        deletedFiles,\n        specialistJobs,\n        memories,\n    });\n\n    // Write to .xtrm/reports/\n    const reportsDir = path.join(cwd, '.xtrm', 'reports');\n    await fs.ensureDir(reportsDir);\n    const filename = `${date}-${sessionHash}.md`;\n    const filePath = path.join(reportsDir, filename);\n    await fs.writeFile(filePath, skeleton, 'utf8');\n\n    return filePath;\n}\n\nasync function showReport(cwd: string, target?: string): Promise<void> {\n    const reportsDir = path.join(cwd, '.xtrm', 'reports');\n    if (!await fs.pathExists(reportsDir)) {\n        console.error(kleur.red('\\n  No reports found at .xtrm/reports/\\n'));\n        process.exit(1);\n    }\n\n    let filePath: string;\n    if (target) {\n        // Try exact path, then match in reports dir\n        if (await fs.pathExists(target)) {\n            filePath = target;\n        } else {\n            const candidate = path.join(reportsDir, target.endsWith('.md') ? target : `${target}.md`);\n            if (await fs.pathExists(candidate)) {\n                filePath = candidate;\n            } else {\n                // Fuzzy match\n                const files = (await fs.readdir(reportsDir)).filter(f => f.endsWith('.md') && f.includes(target));\n                if (files.length === 0) {\n                    console.error(kleur.red(`\\n  No report matching \"${target}\"\\n`));\n                    process.exit(1);\n                }\n                filePath = path.join(reportsDir, files[files.length - 1]);\n            }\n        }\n    } else {\n        // Latest report\n        const files = (await fs.readdir(reportsDir)).filter(f => f.endsWith('.md')).sort();\n        if (files.length === 0) {\n            console.error(kleur.red('\\n  No reports found\\n'));\n            process.exit(1);\n        }\n        filePath = path.join(reportsDir, files[files.length - 1]);\n    }\n\n    const content = await fs.readFile(filePath, 'utf8');\n    const rel = path.relative(cwd, filePath);\n    console.log(kleur.dim(`\\n  ${rel}\\n`));\n    console.log(content);\n}\n\nasync function listReports(cwd: string): Promise<void> {\n    const reportsDir = path.join(cwd, '.xtrm', 'reports');\n    if (!await fs.pathExists(reportsDir)) {\n        console.log(kleur.dim('\\n  No reports directory at .xtrm/reports/\\n'));\n        return;\n    }\n\n    const files = (await fs.readdir(reportsDir)).filter(f => f.endsWith('.md')).sort();\n    if (files.length === 0) {\n        console.log(kleur.dim('\\n  No reports found\\n'));\n        return;\n    }\n\n    console.log(t.bold(`\\n  Session Reports (${files.length})\\n`));\n    for (const file of files) {\n        const filePath = path.join(reportsDir, file);\n        const content = await fs.readFile(filePath, 'utf8');\n\n        // Parse frontmatter for summary line\n        const fmMatch = content.match(/^---\\n([\\s\\S]*?)\\n---/);\n        let summary = '';\n        if (fmMatch) {\n            const fm = fmMatch[1];\n            const commits = fm.match(/commits:\\s*(\\d+)/)?.[1] ?? '?';\n            const closed = fm.match(/issues_closed:\\s*(\\d+)/)?.[1] ?? '?';\n            const filed = fm.match(/issues_filed:\\s*(\\d+)/)?.[1] ?? '?';\n            const dispatches = fm.match(/specialist_dispatches:\\s*(\\d+)/)?.[1] ?? '0';\n            summary = kleur.dim(` commits:${commits} closed:${closed} filed:${filed} specialists:${dispatches}`);\n        }\n\n        console.log(`  ${kleur.white(file)}${summary}`);\n    }\n    console.log('');\n}\n\nasync function diffReports(cwd: string, a: string, b: string): Promise<void> {\n    const reportsDir = path.join(cwd, '.xtrm', 'reports');\n\n    const resolve = async (ref: string): Promise<string> => {\n        if (await fs.pathExists(ref)) return ref;\n        const candidate = path.join(reportsDir, ref.endsWith('.md') ? ref : `${ref}.md`);\n        if (await fs.pathExists(candidate)) return candidate;\n        const files = (await fs.readdir(reportsDir)).filter(f => f.endsWith('.md') && f.includes(ref));\n        if (files.length > 0) return path.join(reportsDir, files[files.length - 1]);\n        console.error(kleur.red(`  No report matching \"${ref}\"`));\n        process.exit(1);\n    };\n\n    const pathA = await resolve(a);\n    const pathB = await resolve(b);\n\n    const result = run('diff', ['--unified=3', '--color=always', pathA, pathB], cwd);\n    if (!result.out) {\n        console.log(kleur.dim('\\n  Reports are identical\\n'));\n        return;\n    }\n    console.log(result.out);\n}\n\nexport function createReportCommand(): Command {\n    const cmd = new Command('report')\n        .description('Session close reports — structured technical handoffs');\n\n    cmd.command('generate')\n        .description('Collect session data and generate a skeleton report at .xtrm/reports/')\n        .action(async () => {\n            const cwd = process.cwd();\n            console.log(kleur.dim('\\n  Collecting session data...'));\n            const filePath = await generateReport(cwd);\n            const rel = path.relative(cwd, filePath);\n            console.log(t.success(`\\n  Generated: ${rel}`));\n            console.log(kleur.dim('  Fill <!-- FILL --> sections with session insights, then commit.\\n'));\n        });\n\n    cmd.command('show [target]')\n        .description('Display a report (default: latest)')\n        .action(async (target?: string) => {\n            await showReport(process.cwd(), target);\n        });\n\n    cmd.command('list')\n        .description('List all session reports')\n        .action(async () => {\n            await listReports(process.cwd());\n        });\n\n    cmd.command('diff <a> <b>')\n        .description('Compare two reports')\n        .action(async (a: string, b: string) => {\n            await diffReports(process.cwd(), a, b);\n        });\n\n    // Default: show help\n    cmd.action(() => cmd.help());\n\n    return cmd;\n}\n","import { Command } from 'commander';\nimport fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\nimport kleur from 'kleur';\nimport { findProjectRoot } from '../utils/repo-root.js';\nimport { sym } from '../utils/theme.js';\n\nfunction resolveSkillsLogPath(): string {\n  return path.join(os.homedir(), '.xtrm', 'logs', 'skills-state.jsonl');\n}\n\nasync function appendSkillsLog(event: Record<string, unknown>): Promise<void> {\n  const logPath = resolveSkillsLogPath();\n  await fs.ensureDir(path.dirname(logPath));\n  await fs.appendFile(logPath, `${JSON.stringify({ timestamp: new Date().toISOString(), ...event })}\\n`);\n}\nimport {\n  SKILLS_RUNTIMES,\n  type SkillsRuntime,\n  resolveSkillsRoot,\n  resolveStateFilePath,\n  resolveRepoPackRoot,\n} from '../core/skills-layout.js';\nimport { createDefaultSkillsState, readSkillsState, setRuntimeEnabledPacks } from '../core/skills-state.js';\nimport {\n  discoverDefaultSkills,\n  discoverRepoPacks,\n  discoverTierPacks,\n  type DiscoveredPack,\n  type InvariantViolation,\n  validateSkillsInvariants,\n} from '../core/skill-discovery.js';\nimport { selectRuntimeSkills } from '../core/skills-materializer.js';\nimport { ensureAgentsSkillsSymlink } from '../core/skills-scaffold.js';\n\ntype Scope = 'global' | 'local';\n\ntype RuntimeStatus = {\n  readonly runtime: SkillsRuntime;\n  readonly enabledPacks: string[];\n  readonly activeSkills: string[];\n};\n\ntype ListPackEntry = {\n  readonly name: string;\n  readonly tier: 'optional' | 'user';\n  readonly path: string;\n  readonly skills: string[];\n  readonly enabledIn: SkillsRuntime[];\n  readonly source?: 'global' | 'local' | 'both';\n};\n\nconst PACK_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;\n\nfunction resolveScope(opts: { global?: boolean; local?: boolean }, defaultScope: Scope = 'global'): Scope {\n  if (opts.global && opts.local) {\n    throw new Error('Choose exactly one scope: --global or --local');\n  }\n\n  if (opts.global) return 'global';\n  if (opts.local) return 'local';\n  return defaultScope;\n}\n\nasync function resolveScopeRoot(scope: Scope): Promise<string> {\n  if (scope === 'global') {\n    return os.homedir();\n  }\n\n  return findProjectRoot();\n}\n\nfunction resolveTargetRuntimes(opts: { claude?: boolean; pi?: boolean }): SkillsRuntime[] {\n  if (opts.claude && !opts.pi) {\n    return ['claude'];\n  }\n\n  if (opts.pi && !opts.claude) {\n    return ['pi'];\n  }\n\n  return [...SKILLS_RUNTIMES];\n}\n\nasync function readStateOrDefault(skillsRoot: string) {\n  const statePath = resolveStateFilePath(skillsRoot);\n  if (!await fs.pathExists(statePath)) {\n    return createDefaultSkillsState();\n  }\n\n  return readSkillsState(skillsRoot);\n}\n\nasync function assertSkillsInvariants(\n  skillsRoot: string,\n  opts: {\n    nonBlockingCodes?: readonly InvariantViolation['code'][];\n  } = {},\n): Promise<InvariantViolation[]> {\n  const nonBlockingCodes = new Set(opts.nonBlockingCodes ?? []);\n  const violations = await validateSkillsInvariants(skillsRoot);\n  const blockingViolations = violations.filter(violation => !nonBlockingCodes.has(violation.code));\n\n  if (blockingViolations.length > 0) {\n    const summary = blockingViolations.map(violation => `${violation.code}: ${violation.message}`).join('; ');\n    throw new Error(`Skills invariants failed. ${summary}`);\n  }\n\n  return violations.filter(violation => nonBlockingCodes.has(violation.code));\n}\n\nasync function collectListState(\n  skillsRoot: string,\n  runtimes: readonly SkillsRuntime[],\n  scope: Scope,\n): Promise<{\n  defaultSkills: string[];\n  packs: ListPackEntry[];\n  runtimeStatus: RuntimeStatus[];\n  scope: Scope;\n}> {\n  const globalSkillsRoot = resolveSkillsRoot(os.homedir());\n  const isLocalScope = scope === 'local' && skillsRoot !== globalSkillsRoot;\n  const [globalState, localState, globalDefaultSkills, localDefaultSkills, globalOptionalPacks, localOptionalPacks, globalUserPacks, localUserPacks] = await Promise.all([\n    fs.pathExists(resolveStateFilePath(globalSkillsRoot)).then(exists => exists ? readSkillsState(globalSkillsRoot) : createDefaultSkillsState()),\n    isLocalScope ? readStateOrDefault(skillsRoot) : null,\n    discoverDefaultSkills(globalSkillsRoot),\n    isLocalScope ? discoverDefaultSkills(skillsRoot) : null,\n    discoverTierPacks(globalSkillsRoot, 'optional'),\n    isLocalScope ? discoverTierPacks(skillsRoot, 'optional') : null,\n    discoverRepoPacks(globalSkillsRoot),\n    isLocalScope ? discoverRepoPacks(skillsRoot) : null,\n  ]);\n\n  const effectiveState = isLocalScope && localState\n    ? composeState(globalState, localState)\n    : globalState;\n\n  const defaultSkills = isLocalScope && localDefaultSkills\n    ? [...localDefaultSkills]\n    : globalDefaultSkills;\n  const optionalPacks = isLocalScope && localOptionalPacks\n    ? [...globalOptionalPacks, ...localOptionalPacks]\n    : globalOptionalPacks;\n  const userPacks = isLocalScope && localUserPacks\n    ? [...globalUserPacks, ...localUserPacks]\n    : globalUserPacks;\n\n  const allPacksMap = new Map<string, { name: string; tier: 'optional' | 'user'; path: string; skills: DiscoveredPack['skills']; source: 'global' | 'local' | 'both' }>();\n  for (const pack of globalOptionalPacks) {\n    allPacksMap.set(pack.name, { ...pack, tier: 'optional' as const, source: 'global' as const });\n  }\n  for (const pack of globalUserPacks) {\n    allPacksMap.set(pack.name, { ...pack, tier: 'user' as const, source: 'global' as const });\n  }\n  if (isLocalScope) {\n    for (const pack of localOptionalPacks ?? []) {\n      if (allPacksMap.has(pack.name)) {\n        const existing = allPacksMap.get(pack.name)!;\n        existing.source = 'both';\n      } else {\n        allPacksMap.set(pack.name, { ...pack, tier: 'optional' as const, source: 'local' as const });\n      }\n    }\n    for (const pack of localUserPacks ?? []) {\n      if (allPacksMap.has(pack.name)) {\n        const existing = allPacksMap.get(pack.name)!;\n        existing.source = 'both';\n      } else {\n        allPacksMap.set(pack.name, { ...pack, tier: 'user' as const, source: 'local' as const });\n      }\n    }\n  }\n\n  const allPacks = [...allPacksMap.values()].sort((a, b) => a.name.localeCompare(b.name));\n\n  const runtimeStatus: RuntimeStatus[] = [];\n  for (const runtime of runtimes) {\n    const selected = await selectRuntimeSkills(\n      runtime,\n      isLocalScope ? skillsRoot : globalSkillsRoot,\n      effectiveState,\n      isLocalScope ? [globalSkillsRoot] : undefined,\n    );\n    runtimeStatus.push({\n      runtime,\n      enabledPacks: selected.enabledPacks,\n      activeSkills: selected.skills.map(skill => skill.name),\n    });\n  }\n\n  const packs: ListPackEntry[] = allPacks.map(pack => {\n    const globalEnabled = globalState.enabledPacks;\n    const localEnabled = localState?.enabledPacks;\n    const enabledIn: SkillsRuntime[] = [];\n\n    for (const runtime of SKILLS_RUNTIMES) {\n      const inGlobal = globalEnabled[runtime].includes(pack.name);\n      const inLocal = localEnabled?.[runtime].includes(pack.name);\n\n      if (inGlobal || inLocal) {\n        enabledIn.push(runtime);\n      }\n    }\n\n    return {\n      name: pack.name,\n      tier: pack.tier,\n      path: pack.path,\n      skills: pack.skills.map(skill => skill.name).sort((a, b) => a.localeCompare(b)),\n      enabledIn,\n      source: pack.source,\n    };\n  });\n\n  return {\n    defaultSkills: defaultSkills.map(skill => skill.name),\n    packs,\n    runtimeStatus,\n    scope,\n  };\n}\n\nfunction composeState(globalState: { enabledPacks: { claude: string[]; pi: string[] } }, localState: { enabledPacks: { claude: string[]; pi: string[] } }): { enabledPacks: { claude: string[]; pi: string[] } } {\n  return {\n    enabledPacks: {\n      claude: [...new Set([...globalState.enabledPacks.claude, ...localState.enabledPacks.claude])].sort((a, b) => a.localeCompare(b)),\n      pi: [...new Set([...globalState.enabledPacks.pi, ...localState.enabledPacks.pi])].sort((a, b) => a.localeCompare(b)),\n    },\n  };\n}\n\nfunction printListSummary(skillsRoot: string, data: {\n  defaultSkills: string[];\n  packs: ListPackEntry[];\n  runtimeStatus: RuntimeStatus[];\n  warnings: string[];\n  scope: Scope;\n}): void {\n  const scopeLabel = data.scope === 'global' ? 'global' : 'local (composed)';\n  console.log(kleur.bold(`\\n  xt skills list --${data.scope}`));\n  console.log(kleur.gray(`  scope: ${scopeLabel}`));\n  console.log(kleur.gray(`  root: ${skillsRoot}`));\n\n  console.log(`\\n  ${kleur.bold('Default skills')} (${data.defaultSkills.length})`);\n  if (data.defaultSkills.length === 0) {\n    console.log(kleur.yellow('  - none'));\n  } else {\n    for (const skillName of data.defaultSkills) {\n      console.log(`  - ${skillName}`);\n    }\n  }\n\n  console.log(`\\n  ${kleur.bold('Packs')} (${data.packs.length})`);\n  if (data.packs.length === 0) {\n    console.log(kleur.yellow('  - none'));\n  } else {\n    for (const pack of data.packs) {\n      const enabledText = pack.enabledIn.length > 0\n        ? pack.enabledIn.join(', ')\n        : 'disabled';\n      const sourceLabel = data.scope === 'local' && pack.source === 'global' ? ' [global]'\n        : data.scope === 'local' && pack.source === 'local' ? ' [local]'\n        : data.scope === 'local' && pack.source === 'both' ? ' [global+local]'\n        : '';\n      console.log(`  - ${kleur.bold(pack.name)} [${pack.tier}] enabled: ${enabledText}${sourceLabel}`);\n    }\n  }\n\n  console.log(`\\n  ${kleur.bold('Runtime active view')}`);\n  for (const runtime of data.runtimeStatus) {\n    console.log(`  - ${runtime.runtime}: ${runtime.activeSkills.length} active skills, enabled packs: ${runtime.enabledPacks.length}`);\n  }\n\n  if (data.warnings.length > 0) {\n    console.log(`\\n  ${kleur.bold(kleur.yellow('Warnings'))} (${data.warnings.length})`);\n    for (const warning of data.warnings) {\n      console.log(`  - ${kleur.yellow(warning)}`);\n    }\n  }\n\n  console.log('');\n}\n\nfunction ensureValidPackName(name: string): void {\n  if (!PACK_NAME_PATTERN.test(name)) {\n    throw new Error(`Invalid pack name '${name}'. Use lowercase alphanumerics and hyphens only.`);\n  }\n}\n\nasync function resolveAvailablePackNames(skillsRoot: string): Promise<string[]> {\n  const [optionalPacks, userPacks] = await Promise.all([\n    discoverTierPacks(skillsRoot, 'optional'),\n    discoverRepoPacks(skillsRoot),\n  ]);\n\n  const names = [...optionalPacks, ...userPacks].map(pack => pack.name);\n  return [...new Set(names)].sort((a, b) => a.localeCompare(b));\n}\n\nasync function resolveRequestedPacks(\n  skillsRoot: string,\n  packArg: string,\n  action: 'enable' | 'disable',\n): Promise<string[]> {\n  const packNames = await resolveAvailablePackNames(skillsRoot);\n\n  if (packArg === 'all') {\n    return packNames;\n  }\n\n  if (packNames.includes(packArg)) {\n    return [packArg];\n  }\n\n  const defaultSkillNames = (await discoverDefaultSkills(skillsRoot)).map(skill => skill.name);\n  if (defaultSkillNames.includes(packArg) && action === 'disable') {\n    throw new Error(`Cannot disable '${packArg}' - it's a default skill, not a pack.`);\n  }\n\n  throw new Error(`Pack '${packArg}' not found in .xtrm/skills packs.`);\n}\n\nasync function mutatePacks(opts: {\n  skillsRoot: string;\n  action: 'enable' | 'disable';\n  packArg: string;\n  runtimes: readonly SkillsRuntime[];\n  scope: Scope;\n}) {\n  const { skillsRoot, action, packArg, runtimes, scope } = opts;\n\n  // When disabling with --local scope, check if pack is globally enabled\n  if (action === 'disable' && scope === 'local') {\n    const globalSkillsRoot = resolveSkillsRoot(os.homedir());\n    const globalState = await readStateOrDefault(globalSkillsRoot);\n    const isGloballyEnabled = globalState.enabledPacks.claude.includes(packArg)\n      || globalState.enabledPacks.pi.includes(packArg);\n\n    if (isGloballyEnabled) {\n      throw new Error(\n        `Pack \"${packArg}\" is globally enabled; use --global to disable everywhere, or leave alone and add a local override.`\n      );\n    }\n  }\n\n  const requestedPacks = await resolveRequestedPacks(skillsRoot, packArg, action);\n  const beforeState = await readSkillsState(skillsRoot);\n\n  for (const runtime of runtimes) {\n    const current = new Set(beforeState.enabledPacks[runtime]);\n\n    if (action === 'enable') {\n      for (const packName of requestedPacks) {\n        current.add(packName);\n      }\n    } else if (packArg === 'all') {\n      current.clear();\n    } else {\n      for (const packName of requestedPacks) {\n        current.delete(packName);\n      }\n    }\n\n    await setRuntimeEnabledPacks(skillsRoot, runtime, [...current]);\n  }\n\n  if (scope === 'local') {\n    await ensureAgentsSkillsSymlink(await findProjectRoot());\n  }\n\n  const afterState = await readSkillsState(skillsRoot);\n\n  for (const runtime of runtimes) {\n    await appendSkillsLog({\n      event: 'skills-state.mutation',\n      scope,\n      action,\n      pack: packArg,\n      runtime,\n      before: beforeState.enabledPacks[runtime],\n      after: afterState.enabledPacks[runtime],\n    });\n  }\n\n  return {\n    action,\n    requested: packArg,\n    resolvedPacks: requestedPacks,\n    runtimes,\n    state: afterState,\n  };\n}\n\nasync function createUserPack(skillsRoot: string, packName: string): Promise<{ path: string }> {\n  ensureValidPackName(packName);\n  const allPackNames = await resolveAvailablePackNames(skillsRoot);\n  if (allPackNames.includes(packName)) throw new Error(`Pack '${packName}' already exists.`);\n\n  const packRoot = resolveRepoPackRoot(skillsRoot, packName);\n  if (await fs.pathExists(packRoot)) throw new Error(`Pack path already exists: ${packRoot}`);\n  await fs.ensureDir(packRoot);\n  return { path: packRoot };\n}\n\nexport function createSkillsCommand(): Command {\n  const skills = new Command('skills')\n    .description('List installed skills and manage skill packs');\n\n  skills\n    .command('list')\n    .description('Show tiered skill inventory and runtime active resolution (default: --global)')\n    .option('--global', 'Use user-global scope (~/.xtrm/skills)', false)\n    .option('--local', 'Use project-local scope (./.xtrm/skills) with global composition', false)\n    .option('--claude', 'Show Claude runtime view', false)\n    .option('--pi', 'Show Pi runtime view', false)\n    .option('--json', 'Output JSON', false)\n    .action(async (opts: { global?: boolean; local?: boolean; claude?: boolean; pi?: boolean; json?: boolean }) => {\n      try {\n        const scope = resolveScope(opts, 'global');\n        const scopeRoot = await resolveScopeRoot(scope);\n        const skillsRoot = resolveSkillsRoot(scopeRoot);\n        const runtimes = resolveTargetRuntimes(opts);\n\n        if (!await fs.pathExists(skillsRoot)) {\n          const empty = {\n            scope,\n            skillsRoot,\n            runtimes,\n            defaultSkills: [],\n            packs: [],\n            runtimeStatus: [],\n          };\n\n          if (opts.json) {\n            console.log(JSON.stringify(empty, null, 2));\n            return;\n          }\n\n          console.log(kleur.bold(`\\n  xt skills list`));\n          console.log(kleur.gray(`  root: ${skillsRoot}`));\n          console.log(kleur.yellow('\\n  No skills tree found. Run xt init first.\\n'));\n          return;\n        }\n\n        const warningViolations = await assertSkillsInvariants(skillsRoot);\n        const listData = await collectListState(skillsRoot, runtimes, scope);\n\n        const warnings = [\n          ...warningViolations.map(violation => violation.message),\n        ];\n\n        if (opts.json) {\n          console.log(JSON.stringify({\n            scope,\n            skillsRoot,\n            runtimes,\n            defaultSkills: listData.defaultSkills,\n            packs: listData.packs,\n            runtimeStatus: listData.runtimeStatus,\n            warnings,\n          }, null, 2));\n          return;\n        }\n\n        printListSummary(skillsRoot, {\n          ...listData,\n          warnings,\n        });\n      } catch (err) {\n        const msg = err instanceof Error ? err.message : String(err);\n        console.error(kleur.red(`\\n  ${sym.fail} ${msg}\\n`));\n        process.exit(1);\n      }\n    });\n\n  skills\n    .command('enable <pack>')\n    .description('Enable a skill pack (default: --global)')\n    .option('--global', 'Use user-global scope (~/.xtrm/skills)', false)\n    .option('--local', 'Use project-local scope (./.xtrm/skills)', false)\n    .option('--claude', 'Target Claude runtime', false)\n    .option('--pi', 'Target Pi runtime', false)\n    .option('--json', 'Output JSON', false)\n    .action(async (pack: string, opts: { global?: boolean; local?: boolean; claude?: boolean; pi?: boolean; json?: boolean }) => {\n      try {\n        const scope = resolveScope(opts, 'global');\n        const scopeRoot = await resolveScopeRoot(scope);\n        const skillsRoot = resolveSkillsRoot(scopeRoot);\n        const runtimes = resolveTargetRuntimes(opts);\n\n        await assertSkillsInvariants(skillsRoot);\n        const result = await mutatePacks({\n          skillsRoot,\n          action: 'enable',\n          packArg: pack,\n          runtimes,\n          scope,\n        });\n\n        if (opts.json) {\n          console.log(JSON.stringify({\n            scope,\n            skillsRoot,\n            ...result,\n          }, null, 2));\n          return;\n        }\n\n        console.log(`\\n  ${sym.ok} Enabled ${result.resolvedPacks.length} pack(s): ${result.resolvedPacks.join(', ') || '(none)'}`);\n        console.log(`  runtimes: ${result.runtimes.join(', ')}\\n`);\n      } catch (err) {\n        const msg = err instanceof Error ? err.message : String(err);\n        console.error(kleur.red(`\\n  ${sym.fail} ${msg}\\n`));\n        process.exit(1);\n      }\n    });\n\n  skills\n    .command('disable <pack>')\n    .description('Disable a skill pack (default: --global)')\n    .option('--global', 'Use user-global scope (~/.xtrm/skills)', false)\n    .option('--local', 'Use project-local scope (./.xtrm/skills)', false)\n    .option('--claude', 'Target Claude runtime', false)\n    .option('--pi', 'Target Pi runtime', false)\n    .option('--json', 'Output JSON', false)\n    .action(async (pack: string, opts: { global?: boolean; local?: boolean; claude?: boolean; pi?: boolean; json?: boolean }) => {\n      try {\n        const scope = resolveScope(opts, 'global');\n        const scopeRoot = await resolveScopeRoot(scope);\n        const skillsRoot = resolveSkillsRoot(scopeRoot);\n        const runtimes = resolveTargetRuntimes(opts);\n\n        await assertSkillsInvariants(skillsRoot);\n        const result = await mutatePacks({\n          skillsRoot,\n          action: 'disable',\n          packArg: pack,\n          runtimes,\n          scope,\n        });\n\n        if (opts.json) {\n          console.log(JSON.stringify({\n            scope,\n            skillsRoot,\n            ...result,\n          }, null, 2));\n          return;\n        }\n\n        console.log(`\\n  ${sym.ok} Disabled ${result.resolvedPacks.length} pack(s): ${result.resolvedPacks.join(', ') || '(none)'}`);\n        console.log(`  runtimes: ${result.runtimes.join(', ')}\\n`);\n      } catch (err) {\n        const msg = err instanceof Error ? err.message : String(err);\n        console.error(kleur.red(`\\n  ${sym.fail} ${msg}\\n`));\n        process.exit(1);\n      }\n    });\n\n  skills\n    .command('create-pack <name>')\n    .description('Create an empty skill pack under .xtrm/skills/<name>/ (default: --local)')\n    .option('--global', 'Use user-global scope (~/.xtrm/skills)', false)\n    .option('--local', 'Use project-local scope (./.xtrm/skills)', false)\n    .option('--json', 'Output JSON', false)\n    .action(async (name: string, opts: { global?: boolean; local?: boolean; json?: boolean }) => {\n      try {\n        const scope = resolveScope(opts, 'local');\n        const scopeRoot = await resolveScopeRoot(scope);\n        const skillsRoot = resolveSkillsRoot(scopeRoot);\n\n        await assertSkillsInvariants(skillsRoot);\n        const created = await createUserPack(skillsRoot, name);\n\n        if (opts.json) {\n          console.log(JSON.stringify({\n            scope,\n            skillsRoot,\n            pack: name,\n            path: created.path,\n          }, null, 2));\n          return;\n        }\n\n        console.log(`\\n  ${sym.ok} Created pack '${name}'`);\n        console.log(`  ${kleur.dim(created.path)}\\n`);\n      } catch (err) {\n        const msg = err instanceof Error ? err.message : String(err);\n        console.error(kleur.red(`\\n  ${sym.fail} ${msg}\\n`));\n        process.exit(1);\n      }\n    });\n\n  return skills;\n}\n","import { randomUUID } from 'node:crypto';\nimport path from 'node:path';\nimport fs from 'fs-extra';\nimport {\n  type SkillsRuntime,\n  resolveActiveRuntimeRoot,\n} from './skills-layout.js';\nimport { discoverDefaultSkills, discoverTierPacks, type DiscoveredSkill } from './skill-discovery.js';\nimport { readSkillsState } from './skills-state.js';\n\nexport interface RuntimeSkillSelection {\n  readonly runtime: SkillsRuntime;\n  readonly enabledPacks: string[];\n  readonly skills: DiscoveredSkill[];\n}\n\nexport interface RuntimeActiveViewResult {\n  readonly runtime: SkillsRuntime;\n  readonly enabledPackCount: number;\n  readonly discoveredSkillCount: number;\n  readonly symlinkNames: string[];\n}\n\nfunction sortByName<T extends { name: string }>(entries: readonly T[]): T[] {\n  return [...entries].sort((a, b) => a.name.localeCompare(b.name));\n}\n\nasync function collectEnabledPackSkills(\n  skillsRoots: readonly string[],\n  enabledPackNames: readonly string[],\n): Promise<DiscoveredSkill[]> {\n  const availablePacks = new Map<string, { path: string; skills: DiscoveredSkill[] }>();\n\n  for (const root of skillsRoots) {\n    const optionalPacks = await discoverTierPacks(root, 'optional');\n    const userPacks = await discoverTierPacks(root, 'user');\n    for (const pack of [...optionalPacks, ...userPacks]) {\n      if (!availablePacks.has(pack.name)) {\n        availablePacks.set(pack.name, { path: pack.path, skills: pack.skills });\n      }\n    }\n  }\n\n  const enabledSkills: DiscoveredSkill[] = [];\n  for (const packName of enabledPackNames) {\n    const pack = availablePacks.get(packName);\n    if (!pack) {\n      throw new Error(`Enabled pack '${packName}' was not found under optional/ or project pack roots.`);\n    }\n    enabledSkills.push(...pack.skills);\n  }\n\n  return enabledSkills;\n}\n\nfunction assertNoRuntimeCollisions(runtime: SkillsRuntime, skills: readonly DiscoveredSkill[]): void {\n  const firstSeenByName = new Map<string, string>();\n\n  for (const skill of sortByName(skills)) {\n    const firstPath = firstSeenByName.get(skill.runtimeName);\n    if (firstPath) {\n      throw new Error(\n        `Duplicate skill name '${skill.runtimeName}' for runtime '${runtime}' (first: ${firstPath}, duplicate: ${skill.path}).`,\n      );\n    }\n\n    firstSeenByName.set(skill.runtimeName, skill.path);\n  }\n}\n\nexport async function selectRuntimeSkills(\n  runtime: SkillsRuntime,\n  skillsRoot: string,\n  providedState?: { enabledPacks: { claude: string[]; pi: string[] } },\n  additionalSkillsRoots?: readonly string[],\n): Promise<RuntimeSkillSelection> {\n  const state = providedState ?? await readSkillsState(skillsRoot);\n  const enabledPacks = state.enabledPacks[runtime];\n\n  const defaultSkills = await discoverDefaultSkills(skillsRoot);\n  const rootsToSearch = additionalSkillsRoots ? [skillsRoot, ...additionalSkillsRoots] : [skillsRoot];\n  const enabledPackSkills = await collectEnabledPackSkills(rootsToSearch, enabledPacks);\n  const allSkills = sortByName([...defaultSkills, ...enabledPackSkills]);\n\n  assertNoRuntimeCollisions(runtime, allSkills);\n\n  return {\n    runtime,\n    enabledPacks: [...enabledPacks],\n    skills: allSkills,\n  };\n}\n\nasync function buildRuntimeTempView(\n  runtime: SkillsRuntime,\n  skillsRoot: string,\n  selectedSkills: readonly DiscoveredSkill[],\n): Promise<string> {\n  const activeRuntimeRoot = resolveActiveRuntimeRoot(skillsRoot);\n  const activeParentRoot = path.dirname(activeRuntimeRoot);\n  const tempRoot = path.join(activeParentRoot, `${runtime}.tmp-${randomUUID()}`);\n\n  await fs.ensureDir(tempRoot);\n\n  for (const skill of selectedSkills) {\n    const linkPath = path.join(tempRoot, skill.runtimeName);\n    const relativeTarget = path.relative(tempRoot, skill.path);\n    await fs.symlink(relativeTarget, linkPath);\n  }\n\n  return tempRoot;\n}\n\nasync function atomicSwapDirectory(tempRoot: string, targetRoot: string): Promise<void> {\n  const backupRoot = `${targetRoot}.bak-${randomUUID()}`;\n  const targetExists = await fs.pathExists(targetRoot);\n\n  try {\n    if (targetExists) {\n      await fs.rename(targetRoot, backupRoot);\n    }\n\n    await fs.rename(tempRoot, targetRoot);\n\n    if (targetExists) {\n      await fs.remove(backupRoot);\n    }\n  } catch (error) {\n    if (targetExists && await fs.pathExists(backupRoot) && !await fs.pathExists(targetRoot)) {\n      await fs.rename(backupRoot, targetRoot).catch(() => undefined);\n    }\n    throw error;\n  } finally {\n    if (await fs.pathExists(tempRoot)) {\n      await fs.remove(tempRoot).catch(() => undefined);\n    }\n\n    if (await fs.pathExists(backupRoot) && await fs.pathExists(targetRoot)) {\n      await fs.remove(backupRoot).catch(() => undefined);\n    }\n  }\n}\n\nasync function findNonSymlinkEntries(runtimeRoot: string): Promise<string[]> {\n  const runtimeRootExists = await fs.pathExists(runtimeRoot);\n  if (!runtimeRootExists) {\n    return [];\n  }\n\n  const entryNames = (await fs.readdir(runtimeRoot)).sort((a, b) => a.localeCompare(b));\n  const nonSymlinkEntryNames: string[] = [];\n\n  for (const entryName of entryNames) {\n    const entryPath = path.join(runtimeRoot, entryName);\n    const entryStat = await fs.lstat(entryPath).catch(() => null);\n    if (!entryStat?.isSymbolicLink()) {\n      nonSymlinkEntryNames.push(entryName);\n    }\n  }\n\n  return nonSymlinkEntryNames;\n}\n\nasync function warnOnNonSymlinkEntries(activeRuntimeRoot: string): Promise<void> {\n  await fs.ensureDir(path.dirname(activeRuntimeRoot));\n\n  const nonSymlinkEntryNames = await findNonSymlinkEntries(activeRuntimeRoot);\n  if (nonSymlinkEntryNames.length === 0) {\n    return;\n  }\n\n  console.log(\n    `[xtrm] Warning: ${activeRuntimeRoot} contains non-symlink entries (${nonSymlinkEntryNames.join(', ')}). ` +\n    'These entries will be evicted during runtime view rebuild. ' +\n    'Do not write skills to .claude/skills directly; write to .xtrm/skills/default or packs.',\n  );\n}\n\nexport async function rebuildRuntimeActiveView(\n  runtime: SkillsRuntime,\n  skillsRoot: string,\n): Promise<RuntimeActiveViewResult> {\n  const selection = await selectRuntimeSkills(runtime, skillsRoot);\n  const activeRuntimeRoot = resolveActiveRuntimeRoot(skillsRoot);\n\n  await warnOnNonSymlinkEntries(activeRuntimeRoot);\n\n  const tempRoot = await buildRuntimeTempView(runtime, skillsRoot, selection.skills);\n  await atomicSwapDirectory(tempRoot, activeRuntimeRoot);\n\n  return {\n    runtime,\n    enabledPackCount: selection.enabledPacks.length,\n    discoveredSkillCount: selection.skills.length,\n    symlinkNames: selection.skills.map(skill => skill.runtimeName),\n  };\n}\n\nexport async function rebuildActiveViewInternal(\n  skillsRoot: string,\n  extraSourceRoots: readonly string[] = [],\n): Promise<RuntimeActiveViewResult[]> {\n  const state = await readSkillsState(skillsRoot);\n  const mergedEnabledPacks = [...new Set([\n    ...state.enabledPacks.claude,\n    ...state.enabledPacks.pi,\n  ])].sort((a, b) => a.localeCompare(b));\n\n  const defaultSkills = await discoverDefaultSkills(skillsRoot);\n  const rootsToSearch = extraSourceRoots.length > 0 ? [skillsRoot, ...extraSourceRoots] : [skillsRoot];\n  const enabledPackSkills = await collectEnabledPackSkills(rootsToSearch, mergedEnabledPacks);\n  const extraSkills = (await Promise.all(extraSourceRoots.map((root) => discoverDirectSkills(root)))).flat();\n  const mergedSkills = sortByName([...defaultSkills, ...enabledPackSkills, ...extraSkills]);\n\n  assertNoRuntimeCollisions('claude', mergedSkills);\n\n  const activeRuntimeRoot = resolveActiveRuntimeRoot(skillsRoot);\n  await warnOnNonSymlinkEntries(activeRuntimeRoot);\n\n  const tempRoot = await buildRuntimeTempView('claude', skillsRoot, mergedSkills);\n  await atomicSwapDirectory(tempRoot, activeRuntimeRoot);\n\n  return [{\n    runtime: 'claude',\n    enabledPackCount: mergedEnabledPacks.length,\n    discoveredSkillCount: mergedSkills.length,\n    symlinkNames: mergedSkills.map((skill) => skill.runtimeName),\n  }];\n}\n\nasync function discoverDirectSkills(root: string): Promise<DiscoveredSkill[]> {\n  const stat = await fs.lstat(root).catch(() => null);\n  if (!stat?.isDirectory()) {\n    return [];\n  }\n\n  const names = (await fs.readdir(root)).sort((a, b) => a.localeCompare(b));\n  const skills: DiscoveredSkill[] = [];\n\n  for (const name of names) {\n    const entryPath = path.join(root, name);\n    const entryStat = await fs.lstat(entryPath).catch(() => null);\n    if (!entryStat?.isSymbolicLink()) {\n      continue;\n    }\n\n    const resolvedTarget = path.resolve(root, await fs.readlink(entryPath));\n    skills.push({ name, runtimeName: name, path: resolvedTarget });\n  }\n\n  return skills;\n}\n\nexport async function rebuildGlobalActiveView(globalSkillsRoot: string): Promise<RuntimeActiveViewResult[]> {\n  return rebuildActiveViewInternal(globalSkillsRoot);\n}\n\nexport async function rebuildProjectActiveView(\n  projectSkillsRoot: string,\n  options: { globalSkillsRoot: string },\n): Promise<RuntimeActiveViewResult[]> {\n  const globalActiveRoot = resolveActiveRuntimeRoot(options.globalSkillsRoot);\n  return rebuildActiveViewInternal(projectSkillsRoot, [globalActiveRoot]);\n}\n\nexport async function rebuildAllRuntimeActiveViews(skillsRoot: string): Promise<RuntimeActiveViewResult[]> {\n  return rebuildActiveViewInternal(skillsRoot);\n}\n","import { Command } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { execSync } from 'node:child_process';\nimport kleur from 'kleur';\n\ndeclare const __dirname: string;\n\ninterface Fragment {\n  readonly name: string;\n  readonly version: string;\n  readonly description: string;\n  readonly body: string;\n  readonly templateVars: readonly string[];\n}\n\ninterface ManagedSection {\n  readonly name: string;\n  readonly version: string;\n  readonly bodyStart: number;\n  readonly bodyEnd: number;\n  readonly body: string;\n  readonly fullStart: number;\n  readonly fullEnd: number;\n}\n\ninterface RepoContext {\n  readonly repo_name: string;\n  readonly repo_stats: string;\n}\n\nconst SENTINEL_RE = /<!-- XTRM-MANAGED:(\\S+) start v=(\\S+) -->\\n([\\s\\S]*?)\\n<!-- XTRM-MANAGED:\\1 end -->/g;\n\nfunction parseFrontmatter(text: string): { frontmatter: Record<string, unknown>; body: string } {\n  if (!text.startsWith('---\\n')) {\n    return { frontmatter: {}, body: text };\n  }\n  const end = text.indexOf('\\n---\\n', 4);\n  if (end === -1) {\n    return { frontmatter: {}, body: text };\n  }\n  const fmText = text.slice(4, end);\n  const body = text.slice(end + 5);\n  const fm: Record<string, unknown> = {};\n  const lines = fmText.split('\\n');\n  let currentList: string | null = null;\n  for (const line of lines) {\n    if (currentList && line.startsWith('  - ')) {\n      const arr = (fm[currentList] as string[]) ?? [];\n      arr.push(line.slice(4).trim());\n      fm[currentList] = arr;\n      continue;\n    }\n    currentList = null;\n    const m = /^([a-z_][a-z0-9_]*):\\s*(.*)$/i.exec(line);\n    if (!m) continue;\n    const key = m[1];\n    const val = m[2];\n    if (val === '') {\n      fm[key] = [];\n      currentList = key;\n    } else {\n      fm[key] = val;\n    }\n  }\n  return { frontmatter: fm, body };\n}\n\nfunction findTemplatesDir(): string {\n  let dir = __dirname;\n  for (let i = 0; i < 8; i++) {\n    const candidate = path.join(dir, 'templates', 'claude-md-fragments');\n    if (fs.existsSync(candidate)) return candidate;\n    const parent = path.dirname(dir);\n    if (parent === dir) break;\n    dir = parent;\n  }\n  throw new Error(\"Cannot locate templates/claude-md-fragments/. Run xt claude-sync from inside an xtrm-tools checkout, or set XTRM_FRAGMENTS_DIR.\");\n}\n\nfunction loadFragments(): Map<string, Fragment> {\n  const dir = process.env.XTRM_FRAGMENTS_DIR ?? findTemplatesDir();\n  const map = new Map<string, Fragment>();\n  for (const file of fs.readdirSync(dir)) {\n    if (!file.endsWith('.md')) continue;\n    const text = fs.readFileSync(path.join(dir, file), 'utf8');\n    const { frontmatter, body } = parseFrontmatter(text);\n    const name = String(frontmatter.name ?? file.replace(/\\.md$/, ''));\n    const version = String(frontmatter.version ?? '0.0.0');\n    const description = String(frontmatter.description ?? '');\n    const templateVars = Array.isArray(frontmatter.template_vars)\n      ? (frontmatter.template_vars as string[])\n      : [];\n    map.set(name, { name, version, description, body: body.replace(/\\n+$/, ''), templateVars });\n  }\n  return map;\n}\n\nfunction findManagedSections(content: string): ManagedSection[] {\n  const out: ManagedSection[] = [];\n  SENTINEL_RE.lastIndex = 0;\n  let m: RegExpExecArray | null;\n  while ((m = SENTINEL_RE.exec(content)) !== null) {\n    const name = m[1];\n    const version = m[2];\n    const body = m[3];\n    const fullStart = m.index;\n    const fullEnd = m.index + m[0].length;\n    const bodyStart = fullStart + `<!-- XTRM-MANAGED:${name} start v=${version} -->\\n`.length;\n    const bodyEnd = bodyStart + body.length;\n    out.push({ name, version, body, bodyStart, bodyEnd, fullStart, fullEnd });\n  }\n  return out;\n}\n\nfunction renderFragmentBody(frag: Fragment, ctx: RepoContext): string {\n  let out = frag.body;\n  for (const v of frag.templateVars) {\n    const val = (ctx as unknown as Record<string, string>)[v] ?? '';\n    out = out.split(`{{${v}}}`).join(val);\n  }\n  return out;\n}\n\nfunction detectRepoContext(cwd: string): RepoContext {\n  let repoName = path.basename(cwd);\n  try {\n    const top = execSync('git rev-parse --show-toplevel', { cwd, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();\n    if (top) repoName = path.basename(top);\n  } catch { /* fall through */ }\n  let repoStats = '';\n  const metaPath = path.join(cwd, '.gitnexus', 'meta.json');\n  if (fs.existsSync(metaPath)) {\n    try {\n      const meta = JSON.parse(fs.readFileSync(metaPath, 'utf8'));\n      const s = meta.stats ?? {};\n      const symbols = s.nodes ?? s.symbols ?? s.symbol_count ?? '?';\n      const rels = s.edges ?? s.relationships ?? s.relationship_count ?? '?';\n      const flows = s.processes ?? s.execution_flows ?? s.flow_count ?? '?';\n      repoStats = `${symbols} symbols, ${rels} relationships, ${flows} execution flows`;\n    } catch { /* ignore */ }\n  }\n  return { repo_name: repoName, repo_stats: repoStats };\n}\n\ninterface DriftEntry {\n  readonly name: string;\n  readonly kind: 'version-mismatch' | 'body-mismatch' | 'missing-fragment' | 'unknown-fragment';\n  readonly currentVersion?: string;\n  readonly canonicalVersion?: string;\n  readonly section?: ManagedSection;\n}\n\nfunction checkDrift(content: string, fragments: Map<string, Fragment>, ctx: RepoContext): DriftEntry[] {\n  const sections = findManagedSections(content);\n  const seen = new Set<string>();\n  const out: DriftEntry[] = [];\n  for (const sec of sections) {\n    seen.add(sec.name);\n    const frag = fragments.get(sec.name);\n    if (!frag) {\n      out.push({ name: sec.name, kind: 'unknown-fragment', currentVersion: sec.version, section: sec });\n      continue;\n    }\n    if (sec.version !== frag.version) {\n      out.push({\n        name: sec.name,\n        kind: 'version-mismatch',\n        currentVersion: sec.version,\n        canonicalVersion: frag.version,\n        section: sec,\n      });\n      continue;\n    }\n    const expected = renderFragmentBody(frag, ctx);\n    if (sec.body !== expected) {\n      out.push({\n        name: sec.name,\n        kind: 'body-mismatch',\n        currentVersion: sec.version,\n        canonicalVersion: frag.version,\n        section: sec,\n      });\n    }\n  }\n  return out;\n}\n\nfunction applyDrift(content: string, fragments: Map<string, Fragment>, ctx: RepoContext): string {\n  const sections = findManagedSections(content);\n  if (sections.length === 0) return content;\n  let out = '';\n  let cursor = 0;\n  for (const sec of sections) {\n    out += content.slice(cursor, sec.fullStart);\n    const frag = fragments.get(sec.name);\n    if (!frag) {\n      out += content.slice(sec.fullStart, sec.fullEnd);\n    } else {\n      const body = renderFragmentBody(frag, ctx);\n      out += `<!-- XTRM-MANAGED:${frag.name} start v=${frag.version} -->\\n${body}\\n<!-- XTRM-MANAGED:${frag.name} end -->`;\n    }\n    cursor = sec.fullEnd;\n  }\n  out += content.slice(cursor);\n  return out;\n}\n\nfunction describeDrift(d: DriftEntry): string {\n  switch (d.kind) {\n    case 'version-mismatch':\n      return `${kleur.yellow('VERSION')} ${d.name}  ${d.currentVersion} -> ${d.canonicalVersion}`;\n    case 'body-mismatch':\n      return `${kleur.yellow('BODY')}    ${d.name}  v${d.currentVersion} (canonical v${d.canonicalVersion})`;\n    case 'unknown-fragment':\n      return `${kleur.red('UNKNOWN')} ${d.name}  v${d.currentVersion} (no canonical fragment)`;\n    case 'missing-fragment':\n      return `${kleur.red('MISSING')} ${d.name}`;\n  }\n}\n\nfunction resolveClaudeMd(cwd: string): string {\n  const p = path.join(cwd, 'CLAUDE.md');\n  if (!fs.existsSync(p)) {\n    throw new Error(`CLAUDE.md not found at ${p}`);\n  }\n  return p;\n}\n\nexport function createClaudeSyncCommand(): Command {\n  const cmd = new Command('claude-sync')\n    .description('Sync managed CLAUDE.md fragments (XTRM-MANAGED:* sentinels)')\n    .option('--check', 'Report drift between CLAUDE.md sentinels and canonical fragments (exit 1 on drift)')\n    .option('--apply', 'Rewrite managed sections from canonical fragments')\n    .option('--accept-overwrite', 'Required with --apply to confirm overwrite of managed sections')\n    .option('--list', 'List known canonical fragments + versions')\n    .option('--add <fragment>', 'Append sentinels for <fragment> to end of CLAUDE.md (use when migrating)')\n    .option('--json', 'Emit machine-readable JSON (with --check or --list)')\n    .option('--cwd <path>', 'Operate on CLAUDE.md in this directory (default: process.cwd())')\n    .option('--repo-name <name>', 'Override repo name for gitnexus template substitution')\n    .option('--repo-stats <stats>', 'Override repo stats for gitnexus template substitution')\n    .action(async (opts: {\n      check?: boolean;\n      apply?: boolean;\n      acceptOverwrite?: boolean;\n      list?: boolean;\n      add?: string;\n      json?: boolean;\n      cwd?: string;\n      repoName?: string;\n      repoStats?: string;\n    }) => {\n      const fragments = loadFragments();\n      const cwd = path.resolve(opts.cwd ?? process.cwd());\n\n      if (opts.list) {\n        if (opts.json) {\n          const out = [...fragments.values()].map(f => ({\n            name: f.name,\n            version: f.version,\n            description: f.description,\n            template_vars: f.templateVars,\n          }));\n          console.log(JSON.stringify(out, null, 2));\n          return;\n        }\n        console.log(kleur.bold('Canonical CLAUDE.md fragments:\\n'));\n        for (const frag of [...fragments.values()].sort((a, b) => a.name.localeCompare(b.name))) {\n          const vars = frag.templateVars.length ? `  ${kleur.dim(`(vars: ${frag.templateVars.join(', ')})`)}` : '';\n          console.log(`  ${kleur.cyan(frag.name.padEnd(20))} v${frag.version}  ${kleur.dim(frag.description)}${vars}`);\n        }\n        return;\n      }\n\n      const claudeMd = resolveClaudeMd(cwd);\n      const content = fs.readFileSync(claudeMd, 'utf8');\n      const detected = detectRepoContext(cwd);\n      const ctx: RepoContext = {\n        repo_name: opts.repoName ?? detected.repo_name,\n        repo_stats: opts.repoStats ?? detected.repo_stats,\n      };\n\n      if (opts.add) {\n        const frag = fragments.get(opts.add);\n        if (!frag) {\n          console.error(kleur.red(`✗ Unknown fragment: ${opts.add}`));\n          process.exit(1);\n        }\n        const sections = findManagedSections(content);\n        if (sections.some(s => s.name === frag.name)) {\n          console.error(kleur.yellow(`! Fragment ${frag.name} already present; nothing to add.`));\n          return;\n        }\n        const body = renderFragmentBody(frag, ctx);\n        const block = `\\n<!-- XTRM-MANAGED:${frag.name} start v=${frag.version} -->\\n${body}\\n<!-- XTRM-MANAGED:${frag.name} end -->\\n`;\n        const next = content.replace(/\\n*$/, '\\n') + block;\n        fs.writeFileSync(claudeMd, next, 'utf8');\n        console.log(kleur.green(`✓ Appended ${frag.name} v${frag.version} to ${path.relative(cwd, claudeMd)}`));\n        return;\n      }\n\n      if (opts.apply) {\n        if (!opts.acceptOverwrite) {\n          console.error(kleur.red('✗ --apply requires --accept-overwrite'));\n          process.exit(1);\n        }\n        const next = applyDrift(content, fragments, ctx);\n        if (next === content) {\n          console.log(kleur.green(`✓ Already canonical: ${path.relative(cwd, claudeMd)}`));\n          return;\n        }\n        fs.writeFileSync(claudeMd, next, 'utf8');\n        const drift = checkDrift(content, fragments, ctx);\n        console.log(kleur.green(`✓ Updated ${path.relative(cwd, claudeMd)} (${drift.length} section${drift.length === 1 ? '' : 's'})`));\n        for (const d of drift) console.log(`  ${describeDrift(d)}`);\n        return;\n      }\n\n      // Default: --check\n      const drift = checkDrift(content, fragments, ctx);\n      const sections = findManagedSections(content);\n      if (opts.json) {\n        const present = sections.map(s => ({\n          name: s.name,\n          version: s.version,\n          canonical_version: fragments.get(s.name)?.version ?? null,\n        }));\n        const knownNames = [...fragments.values()].map(f => f.name);\n        const out = {\n          claude_md: claudeMd,\n          repo_context: ctx,\n          managed_sections: present,\n          drift: drift.map(d => ({\n            name: d.name,\n            kind: d.kind,\n            current_version: d.currentVersion ?? null,\n            canonical_version: d.canonicalVersion ?? null,\n          })),\n          known_fragments: knownNames,\n        };\n        console.log(JSON.stringify(out, null, 2));\n        if (drift.length > 0) process.exit(1);\n        return;\n      }\n      if (drift.length === 0) {\n        console.log(kleur.green(`✓ Clean: ${path.relative(cwd, claudeMd)}  (${sections.length} managed section${sections.length === 1 ? '' : 's'})`));\n        return;\n      }\n      console.log(kleur.yellow(`! Drift in ${path.relative(cwd, claudeMd)}:\\n`));\n      for (const d of drift) console.log(`  ${describeDrift(d)}`);\n      console.log(kleur.dim(`\\nRun: xt claude-sync --apply --accept-overwrite`));\n      process.exit(1);\n    });\n  return cmd;\n}\n","import { Command } from 'commander';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport kleur from 'kleur';\nimport Table from 'cli-table3';\nimport { checkDrift, type DriftReport } from '../core/drift.js';\nimport { checkRuntimeSkillsViews, type RuntimeViewCheckResult } from '../core/skills-runtime-views.js';\nimport { getXtManagedPiPackageDoctorReport, type XtManagedPiPackageDoctorReport } from '../core/pi-runtime.js';\nimport { discoverDefaultSkills, type DiscoveredSkill } from '../core/skill-discovery.js';\nimport { ensureBeadsSharedServerEnabled, hasBeadsDir, type SharedBeadsServerState } from '../core/beads-shared-server.js';\nimport { findProjectRoot } from '../utils/repo-root.js';\n\ninterface CheckJson {\n  managed_sections: Array<{ name: string; version: string; canonical_version: string | null }>;\n  drift: Array<{ name: string; kind: string; current_version: string | null; canonical_version: string | null }>;\n  known_fragments: string[];\n}\n\ninterface RegistryFileEntry {\n  hash: string;\n  version: string;\n}\n\ninterface RegistryAsset {\n  source_dir: string;\n  install_mode: 'copy' | 'symlink';\n  files: Record<string, RegistryFileEntry>;\n}\n\ninterface RegistryManifest {\n  version: string;\n  assets: Record<string, RegistryAsset>;\n}\n\ntype DriftState = 'in-sync' | 'drifted' | 'missing-from-snapshot' | 'extra-not-canonical';\n\ntype CatBSurface = 'skills' | 'hooks';\n\ninterface AssetRow {\n  name: string;\n  path: string;\n  status: DriftState;\n}\n\ninterface CatBJson {\n  skills: AssetRow[];\n  hooks: AssetRow[];\n  runtimeView: RuntimeViewCheckResult;\n  duplicates: string[];\n  sharedBeadsServerState: SharedBeadsServerState;\n  summary: { ok: number; warnings: number; errors: number };\n}\n\ninterface DoctorJson {\n  catB: CatBJson;\n  piPackages: XtManagedPiPackageDoctorReport;\n}\n\nfunction ok(msg: string) { console.log(`  ${kleur.green('✓')} ${msg}`); }\nfunction warn(msg: string) { console.log(`  ${kleur.yellow('○')} ${msg}`); }\nfunction fix(msg: string) { console.log(`    ${kleur.dim('→ fix:')} ${kleur.yellow(msg)}`); }\nfunction section(label: string) {\n  const line = '─'.repeat(Math.max(0, 38 - label.length));\n  console.log(`\\n${kleur.bold(`── ${label} ${line}`)}`);\n}\n\nfunction runSelfCheck(cwd: string): CheckJson | null {\n  const cliEntry = process.argv[1];\n  if (!cliEntry) return null;\n  const result = spawnSync(process.execPath, [cliEntry, 'claude-sync', '--check', '--json', '--cwd', cwd], {\n    encoding: 'utf8',\n    stdio: ['ignore', 'pipe', 'pipe'],\n  });\n  if (result.error || !result.stdout) return null;\n  try {\n    return JSON.parse(result.stdout) as CheckJson;\n  } catch {\n    return null;\n  }\n}\n\nfunction checkClaudeMdFragments(cwd: string): boolean {\n  section('CLAUDE.md fragments');\n  const claudeMd = path.join(cwd, 'CLAUDE.md');\n  if (!fs.existsSync(claudeMd)) {\n    warn('No CLAUDE.md in this directory — skipping fragment check');\n    return true;\n  }\n  const parsed = runSelfCheck(cwd);\n  if (!parsed) {\n    warn('claude-sync self-invoke failed — skipping fragment drift check');\n    return true;\n  }\n  const sections = parsed.managed_sections ?? [];\n  const drift = parsed.drift ?? [];\n  if (sections.length === 0) {\n    warn('CLAUDE.md has no XTRM-MANAGED sentinels — fragments not initialized');\n    fix('xt claude-sync --add bd-workflow  (and other fragments)');\n    return false;\n  }\n  const driftByName = new Map(drift.map(d => [d.name, d]));\n  let allOk = true;\n  for (const s of sections) {\n    const d = driftByName.get(s.name);\n    if (!d) {\n      ok(`${s.name.padEnd(20)} current (v${s.version})`);\n      continue;\n    }\n    allOk = false;\n    if (d.kind === 'version-mismatch') {\n      warn(`${s.name.padEnd(20)} project v${d.current_version}; canonical v${d.canonical_version}`);\n      fix('xt claude-sync --apply --accept-overwrite');\n    } else if (d.kind === 'body-mismatch') {\n      warn(`${s.name.padEnd(20)} body diverges from canonical v${d.canonical_version}`);\n      fix('xt claude-sync --apply --accept-overwrite');\n    } else if (d.kind === 'unknown-fragment') {\n      warn(`${s.name.padEnd(20)} not a known canonical fragment`);\n    }\n  }\n  return allOk;\n}\n\nfunction stripXtrmPrefix(sourceDir: string): string {\n  return sourceDir.replace(/^\\.xtrm\\/?/, '');\n}\n\nasync function listDefaultSkillNames(skillsRoot: string): Promise<string[]> {\n  return (await discoverDefaultSkills(skillsRoot)).map(skill => skill.name);\n}\n\nasync function listHookFileNames(hooksRoot: string): Promise<string[]> {\n  if (!await fs.pathExists(hooksRoot)) return [];\n  const entries = await fs.readdir(hooksRoot, { withFileTypes: true });\n  return entries.filter(entry => entry.isFile()).map(entry => entry.name).sort((a, b) => a.localeCompare(b));\n}\n\nfunction assetStatusFromDrift(relativePath: string, drift: DriftReport): DriftState {\n  if (drift.upToDate.includes(relativePath)) return 'in-sync';\n  if (drift.drifted.includes(relativePath)) return 'drifted';\n  if (drift.missing.includes(relativePath)) return 'missing-from-snapshot';\n  return 'extra-not-canonical';\n}\n\nasync function toRows(registry: RegistryManifest, cwd: string, surface: CatBSurface, drift: DriftReport): Promise<AssetRow[]> {\n  const assetName = surface === 'skills' ? 'skills' : 'hooks';\n  const asset = registry.assets[assetName];\n  if (!asset) return [];\n\n  const expected = new Set<string>();\n  const rows: AssetRow[] = [];\n\n  for (const filePath of Object.keys(asset.files).sort((a, b) => a.localeCompare(b))) {\n    const relativePath = path.posix.join(stripXtrmPrefix(asset.source_dir), filePath);\n    expected.add(relativePath);\n    rows.push({\n      name: relativePath,\n      path: relativePath,\n      status: assetStatusFromDrift(relativePath, drift),\n    });\n  }\n\n  const discovered = surface === 'skills'\n    ? await listDefaultSkillNames(path.join(cwd, '.xtrm', 'skills'))\n    : await listHookFileNames(path.join(cwd, asset.source_dir));\n\n  for (const name of discovered) {\n    const relativePath = surface === 'skills'\n      ? path.posix.join(stripXtrmPrefix(asset.source_dir), name, 'SKILL.md')\n      : path.posix.join(stripXtrmPrefix(asset.source_dir), name);\n    if (expected.has(relativePath)) continue;\n    rows.push({\n      name: relativePath,\n      path: relativePath,\n      status: 'extra-not-canonical',\n    });\n  }\n\n  return rows.sort((a, b) => a.path.localeCompare(b.path));\n}\n\nasync function loadRegistry(cwd: string): Promise<RegistryManifest> {\n  return fs.readJson(path.join(cwd, '.xtrm', 'registry.json')) as Promise<RegistryManifest>;\n}\n\nasync function resolveDoctorCwd(optsCwd?: string): Promise<string> {\n  const cwd = optsCwd ? path.resolve(optsCwd) : await findProjectRoot();\n  const registryPath = path.join(cwd, '.xtrm', 'registry.json');\n\n  if (!(await fs.pathExists(registryPath))) {\n    throw new Error(`Not inside an xtrm project: ${cwd}`);\n  }\n\n  return cwd;\n}\n\nasync function readSpecialistsSkillNames(repoPath: string): Promise<string[]> {\n  const skillsRoot = path.join(repoPath, 'config', 'skills');\n  if (!await fs.pathExists(skillsRoot)) return [];\n  const entries = await fs.readdir(skillsRoot, { withFileTypes: true });\n  const names: string[] = [];\n  for (const entry of entries) {\n    if (!entry.isDirectory()) continue;\n    if (await fs.pathExists(path.join(skillsRoot, entry.name, 'SKILL.md'))) names.push(entry.name);\n  }\n  return names.sort((a, b) => a.localeCompare(b));\n}\n\nasync function detectDuplicateCanonicalNames(cwd: string): Promise<string[]> {\n  const localSkills = await discoverDefaultSkills(path.join(cwd, '.xtrm', 'skills'));\n  const localNames = new Set(localSkills.map((skill: DiscoveredSkill) => skill.name));\n  const repoPath = process.env.SPECIALISTS_REPO_PATH;\n  if (!repoPath) return [];\n\n  const specialistsNames = await readSpecialistsSkillNames(repoPath);\n  return specialistsNames.filter(name => localNames.has(name)).sort((a, b) => a.localeCompare(b));\n}\n\nfunction formatStatus(status: DriftState): string {\n  switch (status) {\n    case 'in-sync': return kleur.green('in-sync');\n    case 'drifted': return kleur.red('drifted');\n    case 'missing-from-snapshot': return kleur.yellow('missing-from-snapshot');\n    case 'extra-not-canonical': return kleur.magenta('extra-not-canonical');\n  }\n}\n\nfunction formatRuntimeView(check: RuntimeViewCheckResult): string {\n  return [\n    `activeReady=${check.activeReady}`,\n    `globalClaudePointerReady=${check.globalClaudePointerReady}`,\n    `globalPiPointerReady=${check.globalPiPointerReady}`,\n    `projectClaudePointerState=${check.projectClaudePointerState}`,\n    `projectPiPointerState=${check.projectPiPointerState}`,\n  ].join(' ');\n}\n\nasync function buildCatBJson(registry: RegistryManifest, cwd: string, drift: DriftReport, runtimeView: RuntimeViewCheckResult, duplicates: string[], sharedBeadsServerState: SharedBeadsServerState): Promise<CatBJson> {\n  const skills = await toRows(registry, cwd, 'skills', drift);\n  const hooks = await toRows(registry, cwd, 'hooks', drift);\n  const summary = [...skills, ...hooks].reduce((acc, row) => {\n    if (row.status === 'in-sync') acc.ok += 1;\n    else if (row.status === 'drifted') acc.errors += 1;\n    else acc.warnings += 1;\n    return acc;\n  }, { ok: 0, warnings: 0, errors: 0 });\n\n  if (\n    !runtimeView.activeReady\n    || !runtimeView.globalClaudePointerReady\n    || !runtimeView.globalPiPointerReady\n    || runtimeView.projectClaudePointerState === 'missing'\n    || runtimeView.projectPiPointerState === 'missing'\n  ) {\n    summary.errors += 1;\n  } else {\n    summary.ok += 1;\n  }\n  if (duplicates.length > 0) summary.errors += 1;\n\n  return { skills, hooks, runtimeView, duplicates, sharedBeadsServerState, summary };\n}\n\nfunction renderCatB(report: CatBJson): void {\n  section('Cat B — Skills');\n  const skillsTable = new Table({\n    head: [kleur.bold('Name'), kleur.bold('Status')],\n    style: { head: [], border: [] },\n  });\n  for (const row of report.skills) skillsTable.push([row.name, formatStatus(row.status)]);\n  console.log(skillsTable.toString());\n\n  section('Cat B — Hooks');\n  const hooksTable = new Table({\n    head: [kleur.bold('Name'), kleur.bold('Status')],\n    style: { head: [], border: [] },\n  });\n  for (const row of report.hooks) hooksTable.push([row.name, formatStatus(row.status)]);\n  console.log(hooksTable.toString());\n\n  section('Cat B — Runtime view');\n  console.log(`  ${formatRuntimeView(report.runtimeView)}`);\n  console.log(`  ${report.runtimeView.globalClaudePointerReady && report.runtimeView.globalPiPointerReady ? kleur.green('✓') : kleur.yellow('○')} Global skills pointer: ${report.runtimeView.globalClaudePointerReady && report.runtimeView.globalPiPointerReady ? 'ok' : 'missing'}`);\n  const projectPointerState = report.runtimeView.projectClaudePointerState === 'missing' || report.runtimeView.projectPiPointerState === 'missing'\n    ? 'missing'\n    : (report.runtimeView.projectClaudePointerState === 'skipped' && report.runtimeView.projectPiPointerState === 'skipped' ? 'skipped (empty)' : 'ok');\n  console.log(`  ${projectPointerState === 'ok' ? kleur.green('✓') : kleur.yellow('○')} Project skills pointer: ${projectPointerState}`);\n\n  section('Cat B — Duplicate canonical names');\n  if (report.duplicates.length === 0) {\n    ok('duplicate-canonical-name=0');\n  } else {\n    warn(`duplicate-canonical-name=${report.duplicates.length}`);\n    for (const name of report.duplicates) warn(`duplicate: ${name}`);\n  }\n}\n\nfunction renderXtManagedPiPackages(report: XtManagedPiPackageDoctorReport): boolean {\n  section('Pi packages');\n  if (report.issues.length === 0) {\n    ok('all xt-shipped Pi packages present and current');\n    return true;\n  }\n\n  for (const issue of report.missing) {\n    warn(issue.pkg.displayName.padEnd(28) + ' missing');\n    fix(issue.remediation);\n  }\n\n  for (const issue of report.outdated) {\n    warn(issue.pkg.displayName.padEnd(28) + ' outdated ' + (issue.installedVersion ?? 'unknown') + ' → ' + (issue.expectedVersion ?? 'unknown'));\n    fix(issue.remediation);\n  }\n\n  const unknown = report.issues.filter(issue => issue.state === 'version-unknown');\n  for (const issue of unknown) {\n    warn(issue.pkg.displayName.padEnd(28) + ' version unknown (offline or npm lookup failed)');\n    fix(issue.remediation);\n  }\n\n  console.log(kleur.dim('  outbound: npm view <pkg> version --registry https://registry.npmjs.org'));\n  return false;\n}\n\nfunction hasCatBIssues(report: CatBJson): boolean {\n  return report.skills.some(row => row.status !== 'in-sync')\n    || report.hooks.some(row => row.status !== 'in-sync')\n    || !report.runtimeView.activeReady\n    || !report.runtimeView.globalClaudePointerReady\n    || !report.runtimeView.globalPiPointerReady\n    || report.runtimeView.projectClaudePointerState === 'missing'\n    || report.runtimeView.projectPiPointerState === 'missing'\n    || report.duplicates.length > 0;\n}\n\nexport function createDoctorCommand(): Command {\n  return new Command('doctor')\n    .description('Health check for the xtrm-managed surfaces of the current project')\n    .option('--cwd <path>', 'Operate on this directory (default: process.cwd())')\n    .option('--json', 'Output machine-readable JSON', false)\n    .option('--check-drift', 'Exit non-zero on any drift, missing, extra, or duplicate')\n    .action(async (opts: { cwd?: string; json?: boolean; checkDrift?: boolean }) => {\n      const cwd = await resolveDoctorCwd(opts.cwd);\n      const registry = await loadRegistry(cwd);\n      const drift = await checkDrift(path.join(cwd, '.xtrm', 'registry.json'), path.join(cwd, '.xtrm'));\n      const runtimeView = await checkRuntimeSkillsViews(cwd);\n      const duplicates = await detectDuplicateCanonicalNames(cwd);\n      const sharedBeadsServerState = (await hasBeadsDir(cwd))\n        ? (await ensureBeadsSharedServerEnabled(cwd, false)).state\n        : 'not-applicable';\n      const catB = await buildCatBJson(registry, cwd, drift, runtimeView, duplicates, sharedBeadsServerState);\n      const piPackages = await getXtManagedPiPackageDoctorReport();\n      const doctorJson = { catB, piPackages };\n\n      if (opts.json) {\n        console.log(JSON.stringify(doctorJson, null, 2));\n        if (hasCatBIssues(catB) || (opts.checkDrift && piPackages.hasIssues)) process.exitCode = 1;\n        return;\n      }\n\n      console.log(`\\n${kleur.bold('xt doctor')}\\n`);\n      const fragmentsOk = checkClaudeMdFragments(cwd);\n      const piPackagesOk = renderXtManagedPiPackages(piPackages);\n      renderCatB(catB);\n\n      const failed = !fragmentsOk || !piPackagesOk || piPackages.hasIssues || hasCatBIssues(catB);\n      if (failed) {\n        console.log('');\n        console.log(`  ${kleur.yellow('○')} ${kleur.bold('Some checks failed')}  — follow the fix hints above`);\n        if (opts.checkDrift || failed) process.exitCode = 1;\n      } else {\n        console.log('');\n        console.log(`  ${kleur.green('✓')} ${kleur.bold('All checks passed')}`);\n      }\n      console.log('');\n    });\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport yaml from 'yaml';\n\nexport type SharedBeadsServerState = 'enabled' | 'updated' | 'not-applicable';\n\nexport async function hasBeadsDir(repoRoot: string): Promise<boolean> {\n  return fs.pathExists(path.join(repoRoot, '.beads'));\n}\n\nexport async function ensureBeadsSharedServerEnabled(repoRoot: string, apply: boolean): Promise<{ changed: boolean; state: SharedBeadsServerState }> {\n  const beadsDir = path.join(repoRoot, '.beads');\n  if (!await fs.pathExists(beadsDir)) return { changed: false, state: 'not-applicable' };\n\n  const configPath = path.join(beadsDir, 'config.yaml');\n  const raw = await fs.pathExists(configPath) ? await fs.readFile(configPath, 'utf8') : '';\n  // yaml.parse returns null for a comments-only file (default after fresh `bd init`);\n  // also guard against non-object scalar parses just in case.\n  const rawParsed = raw.trim() ? yaml.parse(raw) : {};\n  const parsed = (rawParsed && typeof rawParsed === 'object' && !Array.isArray(rawParsed)\n    ? rawParsed\n    : {}) as Record<string, unknown>;\n  const dolt = ((parsed.dolt as Record<string, unknown> | undefined) ?? {});\n  if (dolt['shared-server'] === true) return { changed: false, state: 'enabled' };\n\n  if (!apply) return { changed: true, state: 'updated' };\n\n  const next = { ...parsed, dolt: { ...dolt, 'shared-server': true } };\n  await fs.ensureDir(beadsDir);\n  await fs.writeFile(configPath, yaml.stringify(next));\n  return { changed: true, state: 'updated' };\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { ensureGlobalSkillsBootstrapped, logBootstrapTrigger } from '../core/global-skills-bootstrap.js';\nimport { ensureGlobalHooksBootstrapped } from '../core/global-hooks-bootstrap.js';\nimport { reconcileGlobalClaudeHooks } from '../core/claude-runtime-sync.js';\nimport { reconcileGlobalPiHooks } from '../core/pi-runtime-hooks.js';\nimport { shouldUseGlobalHooks } from '../core/global-hooks-flag.js';\nimport { resolvePackageRoot } from '../core/registry-scaffold.js';\nimport { resolveGlobalSkillsRoot, resolveStateFilePath } from '../core/skills-layout.js';\n\ninterface BootstrapOptions {\n    force?: boolean;\n}\n\nexport function createBootstrapCommand(): Command {\n    return new Command('bootstrap')\n        .description('Populate ~/.xtrm global payloads from running xt package payload')\n        .option('--force', 'Re-copy global skills payload even when version matches', false)\n        .action(async (opts: BootstrapOptions) => {\n            try {\n                const packageRoot = resolvePackageRoot();\n                const pkgJson = await fs.readJson(path.join(packageRoot, 'package.json')) as { version?: string };\n                const pkgVersion = pkgJson.version ?? '0.0.0';\n                await logBootstrapTrigger({ command: 'bootstrap', cwd: process.cwd(), pkgVersion });\n\n                const result = await ensureGlobalSkillsBootstrapped(packageRoot, opts.force ? { force: true } : {});\n                if (shouldUseGlobalHooks()) {\n                    await ensureGlobalHooksBootstrapped(packageRoot, opts.force ? { force: true } : {});\n                    await reconcileGlobalClaudeHooks();\n                    await reconcileGlobalPiHooks();\n                }\n                const globalSkillsRoot = resolveGlobalSkillsRoot();\n                const statePath = resolveStateFilePath(globalSkillsRoot);\n                const state = await fs.readJson(statePath);\n\n                if (result.changed) {\n                    console.log(kleur.green(`✓ bootstrapped global skills @ version ${result.installedVersion}`));\n                } else {\n                    console.log(kleur.dim(`already up to date @ version ${result.installedVersion}`));\n                }\n\n                console.log(JSON.stringify({\n                    skillsRoot: globalSkillsRoot,\n                    statePath,\n                    changed: result.changed,\n                    state,\n                }, null, 2));\n                process.exitCode = 0;\n            } catch (error) {\n                console.error(kleur.red(`✗ ${error instanceof Error ? error.message : String(error)}`));\n                process.exitCode = 1;\n            }\n        });\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { spawnSync } from 'node:child_process';\nimport path from 'node:path';\nimport fs from 'fs-extra';\nimport { checkDrift } from '../core/drift.js';\nimport { resolvePackageRoot } from '../core/registry-scaffold.js';\nimport { ensureGlobalSkillsBootstrapped, logBootstrapTrigger } from '../core/global-skills-bootstrap.js';\nimport { ensureGlobalHooksBootstrapped } from '../core/global-hooks-bootstrap.js';\nimport { getGlobalSkillsOverrideRoots, shouldUseGlobalSkills } from '../core/global-skills-flag.js';\nimport { shouldUseGlobalHooks } from '../core/global-hooks-flag.js';\nimport { reconcileGlobalClaudeHooks } from '../core/claude-runtime-sync.js';\nimport { reconcileGlobalPiHooks } from '../core/pi-runtime-hooks.js';\nimport { assureXtManagedPiPackages } from '../core/pi-runtime.js';\nimport { scanXtrmRepos } from '../core/repo-discovery.js';\nimport { isStrictRegistryMode, runInstall } from './install.js';\nimport { ensureBeadsSharedServerEnabled, hasBeadsDir } from '../core/beads-shared-server.js';\nimport { ensureBdAutoStagePatch, summarizeBdAutoStagePatch } from '../core/bd-auto-stage-patch.js';\nimport { printDependencyMaintenanceSummary, runDependencyMaintenance, type DependencyMaintenanceSummary } from '../core/dependency-maintenance.js';\nimport { ensureServiceSkills } from '../core/service-skills-ensure.js';\nimport { ensureAgentsSkillsSymlink, ensureUserAgentsSkillsSymlink } from '../core/skills-scaffold.js';\nimport { reconcileProjectClaudeHooks } from '../core/claude-runtime-sync.js';\nimport { resolveMainProjectRoot } from '../utils/repo-root.js';\nimport { printNudgeOnce } from '../utils/nudge.js';\n\ntype UpdateStatus = 'refreshed' | 'already-current' | 'failed' | 'skipped' | 'incomplete';\n\ninterface RepoUpdateResult {\n    repo: string;\n    status: UpdateStatus;\n    reason?: string;\n    maintenance?: DependencyMaintenanceSummary;\n}\n\ninterface UpdateOpts {\n    root?: string;\n    repo?: string;\n    json?: boolean;\n    apply?: boolean;\n    allRepos?: boolean;\n    strictRegistry?: boolean;\n}\n\ninterface ResolvedTargets {\n    /** Repos ready for the normal update flow (have .xtrm/ + registry.json). */\n    targets: string[];\n    /** Repos with .xtrm/ but no registry.json. Surfaced as warnings; never auto-fixed. */\n    incomplete: string[];\n}\n\nasync function resolveTargetRepos(opts: Pick<UpdateOpts, 'root' | 'repo' | 'allRepos'>): Promise<ResolvedTargets> {\n    if (opts.repo) return { targets: [path.resolve(opts.repo)], incomplete: [] };\n    if (opts.allRepos) {\n        const roots = ['~/dev', '~/projects'].map(p => p.replace(/^~/, process.env.HOME ?? ''));\n        const scans = await Promise.all(roots.map(root => scanXtrmRepos(path.resolve(root)).catch(() => ({ managed: [], incomplete: [] }))));\n        return {\n            targets: [...new Set(scans.flatMap(scan => scan.managed))],\n            incomplete: [...new Set(scans.flatMap(scan => scan.incomplete))],\n        };\n    }\n    if (opts.root) {\n        const scan = await scanXtrmRepos(path.resolve(opts.root));\n        return { targets: scan.managed, incomplete: scan.incomplete };\n    }\n    // xtrm-6ofgm: default to the MAIN checkout, not a worktree dir. When invoked\n    // from .xtrm/worktrees/<name>/, process.cwd() is the worktree path; baking\n    // that into hook command strings in .claude/settings.json crashes every hook\n    // once the worktree is removed.\n    return { targets: [resolveMainProjectRoot(process.cwd())], incomplete: [] };\n}\n\nasync function printSkillsMigrationNudge(repoRoot: string): Promise<void> {\n    const legacyDefaultRoot = path.join(repoRoot, '.xtrm', 'skills', 'default');\n    const legacyOptionalRoot = path.join(repoRoot, '.xtrm', 'skills', 'optional');\n    const hasLegacyProjectSkills = await fs.pathExists(legacyDefaultRoot) || await fs.pathExists(legacyOptionalRoot);\n\n    if (!hasLegacyProjectSkills) {\n        return;\n    }\n\n    await printNudgeOnce('skills-global-migration', [\n        kleur.yellow('  ⚠ Project-scoped default/optional skills remain on disk; xt update no longer re-syncs them when XTRM_GLOBAL_SKILLS=1.'),\n        kleur.yellow('    Run `xt migrate skills` to clean legacy project payloads.'),\n        kleur.yellow('    Docs: https://github.com/Jaggerxtrm/xtrm-tools/blob/main/docs/skills-registry-exploration.md'),\n    ]);\n}\n\nasync function updateRepo(repoRoot: string, opts: UpdateOpts): Promise<RepoUpdateResult> {\n    const packageRoot = resolvePackageRoot();\n    const registryPath = path.join(packageRoot, '.xtrm', 'registry.json');\n    const userXtrmDir = path.join(repoRoot, '.xtrm');\n\n    try {\n        if (!(await fs.pathExists(registryPath))) {\n            return { repo: repoRoot, status: 'failed', reason: `missing package registry at ${registryPath}` };\n        }\n\n        const pkgJson = await fs.readJson(path.join(packageRoot, 'package.json')) as { version?: string };\n        if (opts.apply) {\n            await logBootstrapTrigger({\n                command: 'update',\n                cwd: process.cwd(),\n                pkgVersion: pkgJson.version ?? '0.0.0',\n            });\n            await ensureGlobalSkillsBootstrapped(packageRoot);\n            await ensureUserAgentsSkillsSymlink({ force: true });\n            if (shouldUseGlobalHooks()) {\n                await ensureGlobalHooksBootstrapped(packageRoot);\n                await reconcileGlobalClaudeHooks();\n                await reconcileGlobalPiHooks();\n            }\n            if (shouldUseGlobalSkills()) {\n                await printSkillsMigrationNudge(repoRoot);\n            }\n        }\n\n        const drift = await checkDrift(registryPath, userXtrmDir, opts.apply ? getGlobalSkillsOverrideRoots() : undefined);\n        const hasBeads = await hasBeadsDir(repoRoot);\n        const sharedServer = hasBeads\n            ? await ensureBeadsSharedServerEnabled(repoRoot, false)\n            : { changed: false, state: 'not-applicable' as const };\n        const bdPatch = hasBeads\n            ? await ensureBdAutoStagePatch(repoRoot, false)\n            : { changed: false, config: 'not-applicable' as const, hook: 'not-applicable' as const, warnings: [] };\n        const maintenancePlan = await runDependencyMaintenance(repoRoot, false);\n        const maintenanceNeedsApply = maintenancePlan.bdDoctor.state === 'failed'\n            || maintenancePlan.gitnexusIndex.state === 'outdated'\n            || maintenancePlan.tools.some(tool => tool.state === 'outdated' || tool.state === 'missing');\n        const registryChanges = drift.missing.length > 0 || drift.drifted.length > 0 || sharedServer.changed;\n        const hasChanges = registryChanges || bdPatch.changed || maintenanceNeedsApply;\n\n        if (!opts.apply) {\n            return {\n                repo: repoRoot,\n                status: hasChanges ? 'refreshed' : 'already-current',\n                reason: hasChanges ? `missing=${drift.missing.length}, drifted=${drift.drifted.length}, ${summarizeBdAutoStagePatch(bdPatch)}` : undefined,\n                maintenance: maintenancePlan,\n            };\n        }\n\n        if (registryChanges) {\n            await runInstall({\n                force: true,\n                yes: true,\n                dryRun: false,\n                projectRoot: repoRoot,\n                skipMachineBootstrap: true,\n                skipClaudeRuntimeSync: true,\n                strictRegistry: isStrictRegistryMode(opts),\n            });\n        }\n\n        // Foolproof service-skills migration: runs AFTER skills install so the latest\n        // migrator is present. Registry-gated + idempotent — a no-op in non-service\n        // repos and on already-migrated ones, but it still migrates a package-current\n        // repo that is on the OLD service layout (which xt update otherwise misses).\n        const serviceSkills = await ensureServiceSkills(repoRoot, { apply: true });\n        await fs.remove(path.join(repoRoot, '.xtrm', 'skills', 'active'));\n        await ensureAgentsSkillsSymlink(repoRoot);\n\n        // Reconcile .claude/settings.json hooks against canonical hooks.json on every\n        // apply. runInstall is invoked with skipClaudeRuntimeSync (and is not invoked at\n        // all when no registry files drifted), so newly-added xtrm-managed hooks — e.g.\n        // the service-skills activation/cataloger/drift hooks shipped in 0.8.2 — would\n        // otherwise stay dormant in existing consumers (xtrm-0p7bp). This is idempotent:\n        // a no-op when the wired hooks already match canonical, so already-current repos\n        // self-heal without churn.\n        const hookSync = await reconcileProjectClaudeHooks(repoRoot, { dryRun: false });\n\n        if (!hasChanges && serviceSkills.alreadyCurrent && !hookSync.changed) {\n            return { repo: repoRoot, status: 'already-current', maintenance: maintenancePlan };\n        }\n\n        const appliedPatch = hasBeads ? await ensureBdAutoStagePatch(repoRoot, true) : bdPatch;\n        const maintenance = await runDependencyMaintenance(repoRoot, true);\n\n        const serviceSkillsReason = serviceSkills.migratedPacks.length > 0\n            ? `, service-skills migrated: ${serviceSkills.migratedPacks.join(',')}`\n            : '';\n        const hookSyncReason = hookSync.changed ? ', claude hooks rewired' : '';\n        return {\n            repo: repoRoot,\n            status: 'refreshed',\n            reason: `missing=${drift.missing.length}, drifted=${drift.drifted.length}, ${summarizeBdAutoStagePatch(appliedPatch)}${serviceSkillsReason}${hookSyncReason}`,\n            maintenance,\n        };\n    } catch (error) {\n        return {\n            repo: repoRoot,\n            status: 'failed',\n            reason: formatRegistrySourceMismatchReason(error, isStrictRegistryMode(opts)),\n        };\n    }\n}\n\nfunction formatRegistrySourceMismatchReason(error: unknown, strictRegistry: boolean): string {\n    const message = error instanceof Error ? error.message : String(error);\n    const prefix = 'Registry/source mismatch: missing package source files.';\n    if (!message.startsWith(prefix)) {\n        return message;\n    }\n\n    if (strictRegistry || process.env.DEBUG === 'true') {\n        return message;\n    }\n\n    const paths = message\n        .split('\\n')\n        .slice(1)\n        .map(line => line.trim().replace(/^•\\s*/, ''))\n        .filter(Boolean);\n    const visiblePaths = paths.slice(0, 3);\n    const remaining = paths.length - visiblePaths.length;\n    return `${prefix} ${visiblePaths.join(', ')}${remaining > 0 ? ` (+${remaining} more)` : ''}`;\n}\n\nfunction printPiPackages(packageAssurance: Awaited<ReturnType<typeof assureXtManagedPiPackages>>): void {\n    if (packageAssurance.missing.length === 0 && packageAssurance.outdated.length === 0) {\n        return;\n    }\n\n    console.log(kleur.bold('\\n  Pi Packages'));\n    console.log(kleur.dim('  ' + '-'.repeat(50)));\n    for (const status of packageAssurance.statuses) {\n        if (status.state === 'current') continue;\n        console.log(`${status.state.padEnd(10)} ${status.pkg.displayName}`);\n    }\n}\n\nfunction commitAllReposPatch(repoRoot: string): { ok: boolean; message: string } | null {\n    const status = spawnGit(repoRoot, ['status', '--short']);\n    if (status.status !== 0) return { ok: false, message: `git status failed: ${(status.stderr || status.stdout || '').trim()}` };\n    if (!status.stdout.trim()) return null;\n\n    const add = spawnGit(repoRoot, ['add', '-A']);\n    if (add.status !== 0) return { ok: false, message: `git add failed: ${(add.stderr || add.stdout || '').trim()}` };\n\n    const commit = spawnGit(repoRoot, ['commit', '-m', 'chore: apply bd auto-stage patch (xtrm-tools auto-applied)']);\n    if (commit.status !== 0) return { ok: false, message: `git commit failed: ${(commit.stderr || commit.stdout || '').trim()}` };\n    const hash = spawnGit(repoRoot, ['rev-parse', '--short', 'HEAD']);\n    return { ok: true, message: `committed ${hash.stdout.trim()}` };\n}\n\nfunction spawnGit(repoRoot: string, args: string[]) {\n    return spawnSync('git', args, {\n        cwd: repoRoot,\n        encoding: 'utf8',\n        stdio: 'pipe',\n        timeout: 120000,\n    });\n}\n\nfunction printTable(rows: RepoUpdateResult[]): void {\n    const widths = rows.reduce((acc, row) => ({\n        repo: Math.max(acc.repo, row.repo.length),\n        status: Math.max(acc.status, row.status.length),\n    }), { repo: 4, status: 6 });\n\n    console.log(kleur.bold(`  ${'repo'.padEnd(widths.repo)}  ${'status'.padEnd(widths.status)}  reason`));\n    for (const row of rows) {\n        console.log(`${row.repo.padEnd(widths.repo)}  ${row.status.padEnd(widths.status)}  ${row.reason ?? ''}`);\n    }\n}\n\nexport function createUpdateCommand(): Command {\n    return new Command('update')\n        .description('Refresh xtrm-managed files and assure global xt Pi packages for one repo or many; missing or outdated packages are refreshed on --apply. Alias for init-era repo refresh; see xtrm init for full bootstrap.')\n        .option('--apply', 'Write changes with install force mode', false)\n        .option('--strict-registry', 'Fail on registry/source mismatch or missing registry source files', false)\n        .option('--root <dir>', 'Walk root and update every repo with .xtrm/registry.json')\n        .option('--all-repos', 'Sweep ~/dev and ~/projects for xtrm-managed repos (dry-run by default; --apply patches and commits each changed repo)', false)\n        .option('--repo <path>', 'Target one repo path instead of cwd')\n        .option('--json', 'Print JSON output', false)\n        .action(async (opts) => {\n            const typedOpts = opts as UpdateOpts;\n            const { targets, incomplete } = await resolveTargetRepos(typedOpts);\n            const rows: RepoUpdateResult[] = [];\n            for (const repo of targets) {\n                const row = await updateRepo(repo, typedOpts);\n                if (typedOpts.allRepos && typedOpts.apply && row.status === 'refreshed') {\n                    const commitResult = commitAllReposPatch(repo);\n                    if (commitResult) {\n                        row.reason = [row.reason, commitResult.message].filter(Boolean).join('; ');\n                        if (!commitResult.ok) row.status = 'failed';\n                    }\n                }\n                rows.push(row);\n            }\n\n            // Surface incomplete repos (have .xtrm/ but no registry.json).\n            // Never auto-fix — would be destructive without explicit opt-in.\n            for (const repo of incomplete) {\n                rows.push({\n                    repo,\n                    status: 'incomplete',\n                    reason: 'missing .xtrm/registry.json — run `xt init` or `xt install` to repair',\n                });\n            }\n\n            const packageAssurance = await assureXtManagedPiPackages(Boolean(typedOpts.apply));\n\n            if (opts.json) {\n                console.log(JSON.stringify({ repos: rows, packages: packageAssurance }, null, 2));\n            } else {\n                printTable(rows);\n                for (const row of rows) {\n                    if (row.maintenance) printDependencyMaintenanceSummary(row.maintenance);\n                }\n                printPiPackages(packageAssurance);\n            }\n\n            if (rows.some(row => row.status === 'failed') || packageAssurance.failed.length > 0) {\n                process.exitCode = 1;\n            }\n        });\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\n\n// Skipped during recursive scan:\n// - .git, node_modules: standard.\n// - .worktrees: specialists' worktree provisioning path (e.g. <repo>/.worktrees/<bead>/<role>).\n// - worktrees: xt-claude / xt-pi worktree path (e.g. <repo>/.xtrm/worktrees/<name>).\n//   Both contain transient checkouts that inherit their parent's .xtrm/, so descending\n//   into them over-reports the same repo many times in `xt update --root` sweeps.\nconst SKIP_DIRS = new Set(['.git', 'node_modules', '.worktrees', 'worktrees']);\nconst XTRM_DIR = '.xtrm';\nconst REGISTRY_MARKER = path.join(XTRM_DIR, 'registry.json');\n\n/**\n * Result of a recursive scan under a root directory.\n *\n * - `managed`: repos with both `.xtrm/` and `.xtrm/registry.json`. Ready for\n *   the normal update flow.\n * - `incomplete`: repos with `.xtrm/` but no `.xtrm/registry.json`. Partial\n *   installs, mid-migration, or corrupted scaffolds. Operators should be\n *   made aware so they can run `xt init` or `xt install` to repair.\n */\nexport interface XtrmRepoScan {\n    managed: string[];\n    incomplete: string[];\n}\n\n/**\n * Backward-compatible: returns only the managed-repo list (same as previous\n * behavior). New callers that need visibility into partial installs should\n * use `scanXtrmRepos` instead.\n */\nexport async function findManagedRepos(rootDir: string): Promise<string[]> {\n    const scan = await scanXtrmRepos(rootDir);\n    return scan.managed;\n}\n\n/**\n * Walk `rootDir` and discover every directory that contains a `.xtrm/`\n * folder. Split into `managed` (has `registry.json`) and `incomplete`\n * (does not). Sorted alphabetically within each group.\n */\nexport async function scanXtrmRepos(rootDir: string): Promise<XtrmRepoScan> {\n    const managed = new Set<string>();\n    const incomplete = new Set<string>();\n    await walk(rootDir, managed, incomplete);\n    return {\n        managed: [...managed].sort(),\n        incomplete: [...incomplete].sort(),\n    };\n}\n\nasync function walk(currentDir: string, managed: Set<string>, incomplete: Set<string>): Promise<void> {\n    const xtrmPath = path.join(currentDir, XTRM_DIR);\n    if (await fs.pathExists(xtrmPath)) {\n        const registryPath = path.join(currentDir, REGISTRY_MARKER);\n        if (await fs.pathExists(registryPath)) {\n            managed.add(currentDir);\n        } else {\n            incomplete.add(currentDir);\n        }\n    }\n\n    const entries = await fs.readdir(currentDir, { withFileTypes: true }).catch(() => [] as Array<{ isDirectory(): boolean; name: string }>);\n    for (const entry of entries) {\n        if (!entry.isDirectory()) continue;\n        if (SKIP_DIRS.has(entry.name)) continue;\n        await walk(path.join(currentDir, entry.name), managed, incomplete);\n    }\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { resolveMainProjectRoot } from '../utils/repo-root.js';\nimport { getContext } from '../core/context.js';\nimport { t } from '../utils/theme.js';\nimport { runPiInstall } from './pi-install.js';\nimport { runClaudeRuntimeSyncPhase } from '../core/claude-runtime-sync.js';\nimport { runPluginEraCleanup } from '../core/plugin-era-cleanup.js';\nimport { ensureAgentsSkillsSymlink, ensureUserAgentsSkillsSymlink } from '../core/skills-scaffold.js';\nimport { ensureGlobalSkillsBootstrapped, logBootstrapTrigger } from '../core/global-skills-bootstrap.js';\nimport { ensureGlobalHooksBootstrapped } from '../core/global-hooks-bootstrap.js';\nimport { reconcileGlobalClaudeHooks } from '../core/claude-runtime-sync.js';\nimport { reconcileGlobalPiHooks } from '../core/pi-runtime-hooks.js';\nimport { shouldUseGlobalHooks } from '../core/global-hooks-flag.js';\nimport { assertRuntimeSkillsViews } from '../core/skills-runtime-views.js';\nimport { getGlobalSkillsOverrideRoots, shouldUseGlobalSkills } from '../core/global-skills-flag.js';\nimport {\n    runMachineBootstrapPhase,\n} from '../core/machine-bootstrap.js';\nimport {\n    installFromRegistry,\n    resolvePackageRoot,\n    scaffoldSkillsDefaultFromPackage,\n    pruneRetiredManagedSkills,\n    type InstallStats,\n    type RegistryManifest,\n} from '../core/registry-scaffold.js';\nimport { syncPiMcpConfig, syncProjectMcpConfig } from '../core/project-mcp-sync.js';\nimport { ensureBeadsSharedServerEnabled } from '../core/beads-shared-server.js';\n\nexport interface InstallOpts {\n    dryRun?: boolean;\n    yes?: boolean;\n    force?: boolean;\n    prune?: boolean;\n    backport?: boolean;\n    global?: boolean;\n    strictRegistry?: boolean;\n    projectRoot?: string;\n    /** Override the resolved package root (source of .xtrm/registry.json + skills payload). Test hermetics; production callers omit this. */\n    packageRoot?: string;\n    /** Skip machine bootstrap (beads/dolt/bv/deepwiki) — used by the init orchestrator which handles it in a dedicated phase. */\n    skipMachineBootstrap?: boolean;\n    /** Skip Claude runtime sync (hooks/settings wiring). */\n    skipClaudeRuntimeSync?: boolean;\n}\n\nfunction printNextSteps(): void {\n    const d = (s: string) => kleur.dim(s);\n    const b = (s: string) => kleur.bold(s);\n\n    console.log(b('  Next steps\\n'));\n\n    console.log(d('  In your project:'));\n    console.log(`  xtrm init                     ${d('initialize beads + gitnexus for this repo')}`);\n    console.log(`  bd prime                      ${d('load session context and available work')}`);\n    console.log(`  bv --robot-triage             ${d('graph-aware triage — find highest-impact work')}`);\n    console.log(`  bd update <id> --claim        ${d('claim an issue before editing any file')}`);\n    console.log(`  bd close <id>                 ${d('close when done')}`);\n\n    console.log('');\n    console.log(d('  Worktree workflow:'));\n    console.log(`  xt claude                     ${d('launch Claude Code in a sandboxed worktree')}`);\n    console.log(`  xt end --dry-run              ${d('preview PR title, body, and linked issues')}`);\n    console.log(`  xt end                        ${d('push branch, open PR, clean up worktree')}`);\n\n    console.log('');\n    console.log(d('  Reference:'));\n    console.log(`  xtrm status                   ${d('check installed vs repo')}`);\n    console.log(`  xtrm docs show                ${d('browse all documentation')}`);\n    console.log('');\n}\n\nasync function renderSummaryCard(stats: InstallStats, isDryRun: boolean): Promise<void> {\n    const boxen = (await import('boxen')).default;\n\n    const lines = [\n        kleur.bold('  ✓ Install complete'),\n        '',\n        `  ${t.label('Expected installs')} ${stats.expectedInstalls}`,\n        `  ${t.label('Installed')} ${stats.installed}`,\n        `  ${t.label('Up-to-date')} ${stats.upToDate}`,\n        `  ${t.label('Drift skipped')} ${stats.driftedSkipped}`,\n        `  ${t.label('Forced')} ${stats.forced}`,\n        `  ${t.label('Missing source skipped')} ${stats.missingSourceSkipped}`,\n        ...(isDryRun ? ['', kleur.dim('  Dry run — no changes written')] : []),\n    ];\n\n    console.log('\\n' + boxen(lines.join('\\n'), {\n        padding: { top: 1, bottom: 1, left: 1, right: 3 },\n        borderStyle: 'round',\n        borderColor: 'gray',\n    }) + '\\n');\n}\n\nexport { isBeadsInstalled, isDoltInstalled, isDeepwikiInstalled, isBvInstalled } from '../core/machine-bootstrap.js';\n\nexport function createInstallAllCommand(): Command {\n    return new Command('all')\n        .description('[deprecated] Use xtrm install')\n        .option('--dry-run', 'Preview changes without making any modifications', false)\n        .option('-y, --yes', 'Skip confirmation prompts', false)\n        .option('--no-mcp', 'Skip MCP server registration', false)\n        .option('--force', 'Overwrite locally drifted files', false)\n        .action(async (_opts) => {\n            console.log('xtrm install all is deprecated — use: xtrm install');\n        });\n}\n\nexport function createInstallBasicCommand(): Command {\n    return new Command('basic')\n        .description('[deprecated] Use xtrm install')\n        .option('--dry-run', 'Preview changes without making any modifications', false)\n        .option('-y, --yes', 'Skip confirmation prompts', false)\n        .option('--no-mcp', 'Skip MCP server registration', false)\n        .option('--force', 'Overwrite locally drifted files', false)\n        .action(async (_opts) => {\n            console.log('xtrm install basic is deprecated — use: xtrm install');\n        });\n}\n\nexport async function runMachineBootstrap(opts: { yes?: boolean } = {}): Promise<void> {\n    await runMachineBootstrapPhase({ dryRun: false });\n}\n\nfunction getProjectRoot(): string {\n    // xtrm-6ofgm: must resolve the MAIN checkout, not the worktree dir, so\n    // hook command paths in .claude/settings.json never bake a worktree path.\n    return resolveMainProjectRoot(process.cwd());\n}\n\nexport function isStrictRegistryMode(opts: { strictRegistry?: boolean }): boolean {\n    return opts.strictRegistry ?? process.env.XTRM_STRICT_REGISTRY === '1';\n}\n\nexport async function runInstall(opts: InstallOpts = {}): Promise<void> {\n    const {\n        dryRun = false,\n        yes = false,\n        force = false,\n        backport = false,\n        prune = false,\n        global: isGlobal = false,\n        skipMachineBootstrap = false,\n        skipClaudeRuntimeSync = false,\n    } = opts;\n    const strictRegistry = isStrictRegistryMode(opts);\n\n    if (backport) {\n        console.log(kleur.yellow('  ⚠ xtrm install --backport is no longer supported in registry mode.'));\n        return;\n    }\n\n    const effectiveYes = yes || process.argv.includes('--yes') || process.argv.includes('-y');\n    const packageRoot = opts.packageRoot ?? resolvePackageRoot();\n    const projectRoot = opts.projectRoot ?? getProjectRoot();\n\n    if (!skipMachineBootstrap) {\n        await runMachineBootstrap({ yes: effectiveYes });\n    }\n\n    const ctx = await getContext({\n        createMissingDirs: !dryRun,\n        isGlobal,\n        projectRoot,\n    });\n    const userXtrmDir = ctx.targets[0];\n\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    const pkgJson = await fs.readJson(path.join(packageRoot, 'package.json')) as { version?: string };\n    await logBootstrapTrigger({\n        command: 'install',\n        cwd: process.cwd(),\n        pkgVersion: pkgJson.version ?? '0.0.0',\n    });\n    if (!dryRun) {\n        await ensureGlobalSkillsBootstrapped(packageRoot, force ? { force: true } : {});\n        if (shouldUseGlobalHooks()) {\n            await ensureGlobalHooksBootstrapped(packageRoot, force ? { force: true } : {});\n            await reconcileGlobalClaudeHooks();\n            await reconcileGlobalPiHooks();\n        }\n    }\n\n    // nosemgrep: javascript.lang.security.audit.path-traversal.path-join-resolve-traversal.path-join-resolve-traversal\n    const registryPath = path.join(packageRoot, '.xtrm', 'registry.json');\n    const registry = await fs.readJson(registryPath) as RegistryManifest;\n\n    console.log(kleur.bold('\\n  ⚙  xtrm install (.xtrm registry scaffold)'));\n    console.log(kleur.dim(`  • registry: ${registryPath}`));\n    console.log(kleur.dim(`  • target: ${userXtrmDir}`));\n\n    const scaffoldResult = await scaffoldSkillsDefaultFromPackage({\n        packageRoot,\n        userXtrmDir,\n        dryRun,\n    });\n    if (scaffoldResult === 'copy') {\n        console.log(kleur.dim('  • Repaired .xtrm/skills/default from package payload'));\n    }\n\n    const pruneResult = await pruneRetiredManagedSkills({\n        userXtrmDir,\n        registry,\n        dryRun,\n        overrideRoots: getGlobalSkillsOverrideRoots(),\n    });\n    if (pruneResult.removed.length > 0) {\n        const verb = dryRun ? 'Would remove' : 'Removed';\n        console.log(kleur.dim(`  • ${verb} ${pruneResult.removed.length} retired managed skill(s): ${pruneResult.removed.join(', ')}`));\n    }\n\n    const stats = await installFromRegistry({\n        packageRoot,\n        registry,\n        userXtrmDir,\n        dryRun,\n        force,\n        yes: effectiveYes,\n        strictRegistry,\n        overrideRoots: getGlobalSkillsOverrideRoots(),\n    });\n\n    if (prune) {\n        await runPluginEraCleanup({\n            dryRun,\n            yes: effectiveYes,\n            scope: 'all',\n            repoRoot: projectRoot,\n        });\n    }\n\n    const mcpSync = await syncProjectMcpConfig(projectRoot, { dryRun });\n    if (mcpSync.wroteFile) {\n        const verb = mcpSync.createdFile ? 'Created' : 'Updated';\n        console.log(kleur.dim(`  • ${verb} ${mcpSync.mcpPath} (+${mcpSync.addedServers.length} server${mcpSync.addedServers.length === 1 ? '' : 's'})`));\n    } else {\n        console.log(kleur.dim(`  • ${mcpSync.mcpPath} already up to date`));\n    }\n    for (const warning of mcpSync.missingEnvWarnings) {\n        console.log(kleur.yellow(`  ⚠ MCP server ${warning}`));\n    }\n\n    const piMcpSync = await syncPiMcpConfig(projectRoot, { dryRun });\n    if (piMcpSync.wroteFile) {\n        const verb = piMcpSync.createdFile ? 'Created' : 'Updated';\n        console.log(kleur.dim(`  • ${verb} ${piMcpSync.mcpPath} (+${piMcpSync.addedServers.length} server${piMcpSync.addedServers.length === 1 ? '' : 's'})`));\n    } else {\n        console.log(kleur.dim(`  • ${piMcpSync.mcpPath} already up to date`));\n    }\n    for (const warning of piMcpSync.missingEnvWarnings) {\n        console.log(kleur.yellow(`  ⚠ Pi MCP server ${warning}`));\n    }\n\n    if (!skipClaudeRuntimeSync) {\n        await runClaudeRuntimeSyncPhase({ repoRoot: projectRoot, dryRun, isGlobal, prune });\n    }\n\n    await runPiInstall(dryRun, isGlobal, projectRoot);\n\n    if (!dryRun) {\n        if (force) {\n            await ensureUserAgentsSkillsSymlink({ force: true });\n            await ensureAgentsSkillsSymlink(projectRoot, { force: true });\n        } else {\n            await ensureUserAgentsSkillsSymlink();\n            await ensureAgentsSkillsSymlink(projectRoot);\n        }\n        await assertRuntimeSkillsViews(projectRoot, { scope: shouldUseGlobalSkills() ? 'global' : 'both' });\n        await ensureBeadsSharedServerEnabled(projectRoot, true);\n    }\n\n    await renderSummaryCard(stats, dryRun);\n\n    if (stats.missingSourceSkipped > 0) {\n        const mismatchMessage = `Registry/source mismatch: ${stats.missingSourceSkipped} expected file${stats.missingSourceSkipped === 1 ? '' : 's'} were missing from package payload.`;\n        if (strictRegistry) {\n            throw new Error(mismatchMessage);\n        }\n        console.log(kleur.yellow(`  ⚠ ${mismatchMessage}`));\n        console.log(kleur.yellow('    Install continued, but your runtime may be incomplete. Regenerate/publish registry assets to resolve.'));\n        console.log('');\n    }\n\n    if (!dryRun) {\n        printNextSteps();\n    }\n}\n\nexport function createInstallCommand(): Command {\n    const installCmd = new Command('install')\n        .description('[deprecated] Use xtrm init — project-scoped setup in one command')\n        .option('--dry-run', 'Preview changes without making any modifications', false)\n        .option('-y, --yes', 'Skip confirmation prompts', false)\n        .option('--prune', 'Remove items not in the canonical repository', false)\n        .option('--backport', 'Backport drifted local changes back to the repository', false)\n        .option('--force', 'Overwrite locally drifted files', false)\n        .option('--global', 'Install to user-global scope (~/.xtrm) instead of project-local', false)\n        .option('--strict-registry', 'Fail on registry/source mismatch or missing registry source files', false)\n        .action(async (opts) => {\n            console.log(kleur.yellow('  ⚠  xtrm install is deprecated — use xtrm init\\n'));\n            await runInstall(opts);\n        });\n\n    installCmd.addCommand(createInstallAllCommand());\n    installCmd.addCommand(createInstallBasicCommand());\n\n    return installCmd;\n}\n","import fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\n\nconst printedNudges = new Set<string>();\n\nfunction getNudgeStatePath(key: string): string {\n  return path.join(os.homedir(), '.xtrm', 'nudges', `${key}.json`);\n}\n\nexport async function printNudgeOnce(key: string, lines: readonly string[]): Promise<boolean> {\n  if (printedNudges.has(key)) {\n    return false;\n  }\n\n  printedNudges.add(key);\n  console.log(lines.join('\\n'));\n\n  const statePath = getNudgeStatePath(key);\n  await fs.ensureDir(path.dirname(statePath));\n  await fs.writeJson(statePath, {\n    key,\n    shownAt: new Date().toISOString(),\n  }, { spaces: 2 });\n  await fs.appendFile(statePath, '\\n');\n  return true;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { readFileSync } from 'node:fs';\nimport { spawnSync } from 'node:child_process';\nimport path from 'node:path';\nimport { buildReportBundle, listXtReports } from '../core/xt-reports.js';\n\nconst RELEASE_SCOPE_PATTERNS = [\n  /^CHANGELOG\\.md$/,\n  /^cli\\/package\\.json$/,\n  /^cli\\/dist(?:\\/|$)/,\n  /^dist(?:\\/|$)/,\n];\n\nfunction run(cmd: string, args: string[], cwd: string): { status: number; stdout: string; stderr: string } {\n  const result = spawnSync(cmd, args, { cwd, encoding: 'utf8', stdio: 'pipe' });\n  return {\n    status: result.status ?? 1,\n    stdout: result.stdout ?? '',\n    stderr: result.stderr ?? '',\n  };\n}\n\nexport function getLatestTag(cwd: string): string {\n  const tagged = run('git', ['describe', '--tags', '--abbrev=0'], cwd);\n  if (tagged.status === 0 && tagged.stdout.trim()) return tagged.stdout.trim();\n  return 'HEAD~1';\n}\n\nexport function getPackageVersion(cwd: string): string {\n  return JSON.parse(readFileSync(path.join(cwd, 'cli', 'package.json'), 'utf8')).version as string;\n}\n\nexport function getReleaseTag(cwd: string): string {\n  return `v${getPackageVersion(cwd)}`;\n}\n\nexport function buildReleaseTemplate(options: { from: string; to: string; bundle: string; versionMode: string }): string {\n  return [\n    `version_mode=${options.versionMode}`,\n    `range=${options.from}..${options.to}`,\n    '',\n    'xt_reports:',\n    options.bundle,\n  ].join('\\n');\n}\n\nexport function getReleaseScopeViolations(cwd: string): string[] {\n  const changedPaths = collectChangedPaths(cwd);\n  return changedPaths.filter((file) => !RELEASE_SCOPE_PATTERNS.some((pattern) => pattern.test(file)));\n}\n\nexport function assertReleaseScopeClean(cwd: string): void {\n  const disallowed = getReleaseScopeViolations(cwd);\n  if (disallowed.length > 0) {\n    console.error(kleur.red(`\\n  ✗ Release scope violation. Allowed only CHANGELOG.md, cli/package.json, cli/dist/**, dist/**.\\n  Offending paths:\\n  ${disallowed.map((file) => `- ${file}`).join('\\n  ')}\\n`));\n    process.exit(1);\n  }\n}\n\nfunction collectChangedPaths(cwd: string): string[] {\n  const outputs = [\n    run('git', ['diff', '--name-only'], cwd).stdout,\n    run('git', ['diff', '--name-only', '--cached'], cwd).stdout,\n    run('git', ['status', '--porcelain'], cwd).stdout.replace(/^.. /gm, ''),\n  ];\n  return [...new Set(outputs.flatMap((output) => output.split('\\n').map((line) => line.trim()).filter(Boolean)))].sort();\n}\n\nfunction invokeChangelogKeeper(cwd: string, template: string): void {\n  const result = run('sp', ['script', 'changelog-keeper', '--read-only', '--template', template], cwd);\n  if (result.stdout.trim()) process.stdout.write(result.stdout);\n  if (result.stderr.trim()) process.stderr.write(result.stderr);\n  if (result.status !== 0) process.exit(result.status);\n}\n\nexport function createReleaseCommand(): Command {\n  return new Command('release')\n    .description('Release flow for CHANGELOG.md, package.json, and dist/')\n    .addCommand(createReleasePrepareCommand())\n    .addCommand(createReleasePublishCommand());\n}\n\nfunction createReleasePrepareCommand(): Command {\n  return new Command('prepare')\n    .option('--major', 'Bump major version', false)\n    .option('--minor', 'Bump minor version', false)\n    .option('--patch', 'Bump patch version', false)\n    .option('--from <ref>', 'Start ref for report range')\n    .option('--to <ref>', 'End ref for report range')\n    .action((opts: { major: boolean; minor: boolean; patch: boolean; from?: string; to?: string }) => {\n      const cwd = process.cwd();\n      assertReleaseScopeClean(cwd);\n      const from = opts.from ?? getLatestTag(cwd);\n      const to = opts.to ?? 'HEAD';\n      const versionMode = opts.major ? 'major' : opts.minor ? 'minor' : 'patch';\n      const reports = listXtReports({ since: from, to, rootDir: cwd });\n      const bundle = buildReportBundle(reports);\n      if (bundle.reports.length === 0) {\n        console.error(kleur.red('\\n  ✗ No xt reports in range.\\n'));\n        process.exit(1);\n      }\n\n      const template = buildReleaseTemplate({ from, to, bundle: bundle.output, versionMode });\n      invokeChangelogKeeper(cwd, template);\n    });\n}\n\nfunction createReleasePublishCommand(): Command {\n  return new Command('publish')\n    .option('--gh-release', 'Create GitHub release after tag push', false)\n    .action((opts: { ghRelease: boolean }) => {\n      const cwd = process.cwd();\n      assertReleaseScopeClean(cwd);\n      const tag = getReleaseTag(cwd);\n\n      const tagResult = run('git', ['tag', '-a', tag, '-m', `release: ${tag}`], cwd);\n      if (tagResult.status !== 0) {\n        process.stderr.write(tagResult.stderr || tagResult.stdout);\n        process.exit(tagResult.status);\n      }\n\n      const pushResult = run('git', ['push', '--follow-tags'], cwd);\n      if (pushResult.stdout.trim()) process.stdout.write(pushResult.stdout);\n      if (pushResult.stderr.trim()) process.stderr.write(pushResult.stderr);\n      if (pushResult.status !== 0) process.exit(pushResult.status);\n\n      if (opts.ghRelease) {\n        const ghResult = run('gh', ['release', 'create', tag, '--generate-notes'], cwd);\n        if (ghResult.stdout.trim()) process.stdout.write(ghResult.stdout);\n        if (ghResult.stderr.trim()) process.stderr.write(ghResult.stderr);\n        if (ghResult.status !== 0) process.exit(ghResult.status);\n      }\n    });\n}\n","import { readFileSync, readdirSync } from 'node:fs';\nimport { execFileSync } from 'node:child_process';\nimport path from 'node:path';\n\nexport type XtReportRecord = {\n  file: string;\n  date: string;\n  bytes: number;\n  content: string;\n};\n\nexport type XtReportBundle = {\n  reports: XtReportRecord[];\n  output: string;\n  capped: boolean;\n  capBytes: number;\n};\n\nexport type ListXtReportsOptions = {\n  since: string;\n  to: string;\n  rootDir?: string;\n  capBytes?: number;\n};\n\nconst DEFAULT_CAP_BYTES = 50_000;\nconst REPORT_DIR = '.xtrm/reports';\n\nexport function getCommitDate(ref: string, cwd: string): string {\n  return execFileSync('git', ['log', '-1', '--format=%cs', ref], {\n    cwd,\n    encoding: 'utf8',\n  }).trim();\n}\n\nfunction listReportFiles(rootDir: string): string[] {\n  return readdirSync(path.join(rootDir, REPORT_DIR))\n    .filter((entry) => entry.endsWith('.md'))\n    .sort()\n    .map((entry) => path.join(REPORT_DIR, entry));\n}\n\nfunction isDateInRange(date: string, since: string, to: string): boolean {\n  return date >= since && date <= to;\n}\n\nexport function listXtReports(options: ListXtReportsOptions): XtReportRecord[] {\n  const rootDir = options.rootDir ?? process.cwd();\n  const sinceDate = getCommitDate(options.since, rootDir);\n  const toDate = getCommitDate(options.to, rootDir);\n\n  return listReportFiles(rootDir)\n    .map((relativePath) => {\n      const file = path.basename(relativePath);\n      const date = file.slice(0, 10);\n      return { file: relativePath, date, bytes: 0, content: '' } satisfies XtReportRecord;\n    })\n    .filter((report) => isDateInRange(report.date, sinceDate, toDate))\n    .map((report) => {\n      const content = readFileSync(path.join(rootDir, report.file), 'utf8');\n      return {\n        ...report,\n        bytes: Buffer.byteLength(content, 'utf8'),\n        content,\n      };\n    });\n}\n\nexport function buildReportBundle(reports: XtReportRecord[], capBytes = DEFAULT_CAP_BYTES): XtReportBundle {\n  const selected: XtReportRecord[] = [];\n  const chunks: string[] = [];\n  let bytesUsed = 0;\n\n  for (const report of [...reports].sort((left, right) => right.date.localeCompare(left.date))) {\n    const block = `## ${report.file}\\n\\n${report.content.trim()}\\n`;\n    const blockBytes = Buffer.byteLength(block, 'utf8');\n    if (selected.length > 0 && bytesUsed + blockBytes > capBytes) continue;\n    if (selected.length === 0 && blockBytes > capBytes) {\n      selected.push(report);\n      chunks.push(block);\n      bytesUsed += blockBytes;\n      break;\n    }\n    selected.push(report);\n    chunks.push(block);\n    bytesUsed += blockBytes;\n  }\n\n  const capped = selected.length < reports.length;\n  const note = capped ? `# xt reports capped at ${capBytes} bytes; oldest reports dropped\\n\\n` : '';\n\n  return {\n    reports: selected,\n    output: `${note}${chunks.join('\\n')}`.trimEnd(),\n    capped,\n    capBytes,\n  };\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { renderTemplate, type TemplateName } from '../../spec/templates.js';\nimport { slugify } from '../../spec/slug.js';\nimport { logEvent } from '../../spec/log.js';\nimport { SpecV1Schema } from '../../spec/schema.js';\nimport { parse as parseYaml } from 'yaml';\n\ninterface DraftOptions {\n    template: TemplateName;\n    out?: string;\n    force?: boolean;\n}\n\nexport function createSpecDraftCommand(): Command {\n    return new Command('draft')\n        .description('Scaffold a spec.yaml from a free-text feature description')\n        .argument('<description>', 'Short feature description (becomes title + slug)')\n        .option('--template <name>', 'Template variant (minimal|full)', 'full')\n        .option('--out <path>', 'Output path; defaults to docs/specs/<slug>/spec.yaml')\n        .option('--force', 'Overwrite if the output already exists', false)\n        .action(async (description: string, opts: DraftOptions) => {\n            const title = description.trim();\n            if (!title) {\n                console.error(kleur.red('error: description must not be empty'));\n                process.exit(64);\n            }\n            if (opts.template !== 'minimal' && opts.template !== 'full') {\n                console.error(kleur.red(`error: --template must be \"minimal\" or \"full\" (got \"${opts.template}\")`));\n                process.exit(64);\n            }\n\n            const slug = slugify(title);\n            const outPath = path.resolve(opts.out ?? path.join('docs/specs', slug, 'spec.yaml'));\n            const outDir = path.dirname(outPath);\n\n            if (await fs.pathExists(outPath) && !opts.force) {\n                console.error(kleur.red(`error: ${outPath} already exists. Use --force to overwrite.`));\n                process.exit(1);\n            }\n\n            await fs.ensureDir(outDir);\n            // schema URL is the stable $id from cli/src/spec/schema.ts; editors\n            // with yaml-language-server resolve it via the schema-store cache.\n            const schemaPath = 'https://xtrm.dev/schemas/spec-v1.json';\n            const content = renderTemplate(opts.template, { slug, title, schemaPath });\n\n            // Round-trip self-check: drafted yaml must parse and satisfy schema shape\n            // (template placeholders are intentional TODO strings — we only verify shape).\n            const parsed = parseYaml(content);\n            const shapeCheck = SpecV1Schema.safeParse(parsed);\n            if (!shapeCheck.success) {\n                console.error(kleur.red('internal error: template failed schema shape check'));\n                console.error(JSON.stringify(shapeCheck.error.issues, null, 2));\n                process.exit(70);\n            }\n\n            await fs.writeFile(outPath, content, 'utf8');\n            logEvent({ event: 'spec_drafted', spec_id: slug, path: outPath, template: opts.template });\n\n            console.log(kleur.green('✓ drafted ') + outPath);\n            console.log(kleur.dim('  next: edit the TODO blocks, then `xt spec validate ' + path.relative(process.cwd(), outPath) + '`'));\n        });\n}\n","// Templates inlined as TS strings so tsup bundles them into dist/.\n// SSOT lives here. A test asserts renderTemplate output parses + zod-validates.\n\nexport const MINIMAL_TEMPLATE = `# yaml-language-server: $schema=__SCHEMA_PATH__\nschema_version: 1\nid: __SLUG__\ntitle: __TITLE__\nstatus: draft\nscrutiny: medium\n\nproblem: >\n  TODO — describe the user/project problem this spec exists to solve.\n\nsuccess:\n  - TODO — observable end-state\n\nscope:\n  include:\n    - TODO — cli/src/foo/bar.ts\n  exclude: []\n\nnon_goals: []\nconstraints: []\n\nrequirements:\n  - id: R1\n    story: TODO — as a <role> I want <capability> so that <outcome>\n    behavior: TODO — behavior in observable terms\n    acceptance:\n      - TODO — concrete falsifiable check\n    layer_hint: shell\n\nvalidation: []\ndependencies: []\nopen_questions: []\n\nlinks:\n  parent_epic: null\n  planner_bead: null\n  epic: null\n  children: []\n  test_issues: []\n`;\n\nexport const FULL_TEMPLATE = `# yaml-language-server: $schema=__SCHEMA_PATH__\nschema_version: 1\nid: __SLUG__\ntitle: __TITLE__\nstatus: draft\nscrutiny: medium\n\nproblem: >\n  TODO — describe the user/project problem this spec exists to solve.\n  Why now. What breaks if we don't ship it.\n\nsuccess:\n  - TODO — observable end-state 1\n  - TODO — observable end-state 2\n\nscope:\n  include:\n    - TODO — cli/src/foo/bar.ts\n    - TODO — cli/src/foo/baz.ts\n  exclude:\n    - TODO — adjacent surface explicitly left out\n\nnon_goals:\n  - TODO — related improvement explicitly out of scope\n\nconstraints:\n  - TODO — API / wire-format compatibility rule\n  - TODO — logging contract (event names, fields, redaction)\n  - TODO — do-not-touch boundary\n\nrequirements:\n  - id: R1\n    story: TODO — as a <role> I want <capability> so that <outcome>\n    behavior: TODO — behavior in observable terms\n    acceptance:\n      - TODO — concrete falsifiable check\n      - TODO — regression-prevention assertion\n    layer_hint: shell\n    priority: 2\n    risks:\n      - TODO — known failure mode to design against\n  - id: R2\n    story: TODO — second user story\n    behavior: TODO — behavior\n    acceptance:\n      - TODO — concrete falsifiable check\n    layer_hint: operational\n\nvalidation:\n  - kind: unit\n    target: TODO — what unit-tests cover\n  - kind: integration\n    target: TODO — what integration-tests cover\n  - kind: telemetry\n    target: TODO — which log/metric event presence is asserted\n\ndependencies:\n  - from: R2\n    requires: R1\n\nopen_questions:\n  - TODO — unresolved question (must be empty before xt spec apply at high/critical scrutiny)\n\nlinks:\n  parent_epic: null\n  planner_bead: null\n  epic: null\n  children: []\n  test_issues: []\n`;\n\nexport type TemplateName = 'minimal' | 'full';\n\nexport function getTemplate(name: TemplateName): string {\n    return name === 'full' ? FULL_TEMPLATE : MINIMAL_TEMPLATE;\n}\n\nexport interface TemplateVars {\n    slug: string;\n    title: string;\n    schemaPath: string;\n}\n\nexport function renderTemplate(name: TemplateName, vars: TemplateVars): string {\n    return getTemplate(name)\n        .replace(/__SLUG__/g, vars.slug)\n        .replace(/__TITLE__/g, vars.title)\n        .replace(/__SCHEMA_PATH__/g, vars.schemaPath);\n}\n","/**\n * Convert a free-text title to a stable kebab-case slug.\n * Output: lowercase ASCII, hyphenated, max 60 chars.\n * Always non-empty (falls back to \"spec\" if input is empty/non-ASCII).\n */\nexport function slugify(input: string): string {\n    const normalized = input\n        .normalize('NFKD')\n        .replace(/[̀-ͯ]/g, '') // strip diacritics\n        .toLowerCase()\n        .replace(/[^a-z0-9]+/g, '-')\n        .replace(/^-+|-+$/g, '');\n    const truncated = normalized.slice(0, 60).replace(/-+$/, '');\n    return truncated.length > 0 ? truncated : 'spec';\n}\n","/**\n * Structured stderr log channel for xt spec commands.\n * One JSON object per line, timestamp-prefixed. Consumed by CI / xt report.\n *\n * Keep this dependency-free so the validator core stays I/O-free\n * (logEvent is only called from CLI command surfaces, never from validate/checks/scrutiny).\n */\nexport interface LogFields {\n    event: string;\n    [key: string]: unknown;\n}\n\nexport function logEvent(fields: LogFields): void {\n    const ts = new Date().toISOString();\n    const line = JSON.stringify({ ts, component: 'xt.spec', ...fields });\n    process.stderr.write(line + '\\n');\n}\n","import { z } from 'zod';\n\nexport const CURRENT_SCHEMA_VERSION = 1 as const;\n\nconst kebab = z\n    .string()\n    .min(1)\n    .max(80)\n    .regex(/^[a-z][a-z0-9-]*$/, 'must be kebab-case lowercase ASCII');\n\nconst scrutinyEnum = z.enum(['low', 'medium', 'high', 'critical']);\nconst statusEnum = z.enum(['draft', 'validated', 'planned', 'archived']);\nconst layerEnum = z.enum(['core', 'boundary', 'shell', 'operational']);\nconst validationKindEnum = z.enum(['unit', 'integration', 'smoke', 'e2e', 'telemetry']);\n\nconst RequirementSchema = z.object({\n    id: z.string().regex(/^R\\d+$/, 'must match R<number> (R1, R2, ...)'),\n    story: z.string().min(1),\n    behavior: z.string().min(1),\n    acceptance: z.array(z.string().min(1)).min(1),\n    layer_hint: layerEnum.optional(),\n    priority: z.number().int().min(0).max(4).optional(),\n    risks: z.array(z.string()).optional(),\n});\n\nconst ValidationItemSchema = z.object({\n    kind: validationKindEnum,\n    target: z.string().min(1),\n});\n\nconst DependencySchema = z.object({\n    from: z.string().regex(/^R\\d+$/),\n    requires: z.string().regex(/^R\\d+$/),\n});\n\nconst LinksSchema = z.object({\n    parent_epic: z.string().nullable().optional(),\n    planner_bead: z.string().nullable().optional(),\n    epic: z.string().nullable().optional(),\n    children: z.array(z.string()).default([]),\n    test_issues: z.array(z.string()).default([]),\n});\n\nexport const SpecV1Schema = z.object({\n    schema_version: z.literal(CURRENT_SCHEMA_VERSION),\n    id: kebab,\n    title: z.string().min(1).max(200),\n    status: statusEnum,\n    scrutiny: scrutinyEnum,\n\n    problem: z.string().min(1),\n    success: z.array(z.string().min(1)).min(1),\n\n    scope: z.object({\n        include: z.array(z.string().min(1)).min(1),\n        exclude: z.array(z.string()).default([]),\n    }),\n\n    non_goals: z.array(z.string()).default([]),\n    constraints: z.array(z.string()).default([]),\n\n    requirements: z.array(RequirementSchema).min(1),\n    validation: z.array(ValidationItemSchema).default([]),\n    dependencies: z.array(DependencySchema).default([]),\n    open_questions: z.array(z.string()).default([]),\n\n    links: LinksSchema.default({ children: [], test_issues: [] }),\n});\n\nexport type SpecV1 = z.infer<typeof SpecV1Schema>;\nexport type Requirement = z.infer<typeof RequirementSchema>;\nexport type ValidationItem = z.infer<typeof ValidationItemSchema>;\nexport type Dependency = z.infer<typeof DependencySchema>;\nexport type Links = z.infer<typeof LinksSchema>;\nexport type Scrutiny = z.infer<typeof scrutinyEnum>;\nexport type SpecStatus = z.infer<typeof statusEnum>;\nexport type Layer = z.infer<typeof layerEnum>;\nexport type ValidationKind = z.infer<typeof validationKindEnum>;\n\nexport function toJSONSchemaV1(): Record<string, unknown> {\n    const schema = z.toJSONSchema(SpecV1Schema, { target: 'draft-7' }) as Record<string, unknown>;\n    schema.$id = 'https://xtrm.dev/schemas/spec-v1.json';\n    schema.title = 'xtrm spec.yaml v1';\n    schema.description =\n        'Versioned intent artifact for xt spec. PRD-level inputs that compile to a planner bead via xt spec apply.';\n    return schema;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport { validate } from '../../spec/validate.js';\nimport { renderHuman, renderJson } from '../../spec/report.js';\nimport { logEvent } from '../../spec/log.js';\n\ninterface ValidateCmdOptions {\n    json?: boolean;\n    strict?: boolean;\n}\n\nexport function createSpecValidateCommand(): Command {\n    return new Command('validate')\n        .description('Run all gates against a spec.yaml; report errors and warnings')\n        .argument('<path>', 'Path to spec.yaml')\n        .option('--json', 'Emit a structured JSON report instead of human text', false)\n        .option('--strict', 'Treat warnings as errors', false)\n        .action(async (specPath: string, opts: ValidateCmdOptions) => {\n            const absPath = path.resolve(specPath);\n            if (!(await fs.pathExists(absPath))) {\n                console.error(kleur.red(`error: ${absPath} not found`));\n                process.exit(64);\n            }\n\n            const started = Date.now();\n            const raw = await fs.readFile(absPath, 'utf8');\n            let parsed: unknown;\n            try {\n                parsed = parseYaml(raw);\n            } catch (err) {\n                const msg = err instanceof Error ? err.message : String(err);\n                if (opts.json) {\n                    process.stdout.write(JSON.stringify({\n                        schema: 'xt.spec.validate.v1',\n                        ok: false,\n                        source: absPath,\n                        errors: [{ code: 'yaml_parse_error', field_path: '(root)', severity: 'error', message: msg }],\n                        warnings: [],\n                        inferred: {},\n                    }, null, 2) + '\\n');\n                } else {\n                    console.error(kleur.red(`yaml parse error: ${msg}`));\n                }\n                logEvent({ event: 'spec_validated', spec_id: null, ok: false, error_count: 1, warning_count: 0, duration_ms: Date.now() - started, parse_error: true });\n                process.exit(1);\n            }\n\n            const result = validate(parsed, { strict: opts.strict });\n\n            if (opts.json) {\n                process.stdout.write(JSON.stringify(renderJson(result, absPath), null, 2) + '\\n');\n            } else {\n                process.stdout.write(renderHuman(result, absPath) + '\\n');\n            }\n\n            const specId = (parsed && typeof parsed === 'object' && 'id' in parsed) ? (parsed as { id?: unknown }).id ?? null : null;\n            logEvent({\n                event: 'spec_validated',\n                spec_id: specId,\n                ok: result.ok,\n                error_count: result.errors.length,\n                warning_count: result.warnings.length,\n                duration_ms: Date.now() - started,\n            });\n\n            if (!result.ok) process.exit(1);\n            if (result.warnings.length > 0) process.exit(2);\n            process.exit(0);\n        });\n}\n","import type { SpecV1, Scrutiny } from './schema.js';\n\nconst SCRUTINY_ORDER: Scrutiny[] = ['low', 'medium', 'high', 'critical'];\n\nexport function rank(s: Scrutiny): number {\n    return SCRUTINY_ORDER.indexOf(s);\n}\n\nexport function raiseScrutiny(explicit: Scrutiny, inferred: Scrutiny): Scrutiny {\n    return rank(inferred) > rank(explicit) ? inferred : explicit;\n}\n\ninterface InferenceSignal {\n    test: (spec: SpecV1) => boolean;\n    floor: Scrutiny;\n    label: string;\n}\n\nconst SIGNALS: InferenceSignal[] = [\n    {\n        label: 'security-sensitive scope keyword',\n        floor: 'high',\n        test: (s) => matchesAny(allText(s), /\\b(auth|crypto|secret|token|password|credential|tls|signing|cert)/i),\n    },\n    {\n        label: 'migration or schema-change keyword',\n        floor: 'high',\n        test: (s) => matchesAny(allText(s), /\\b(migration|migrate|schema-change|breaking-change|backfill)/i),\n    },\n    {\n        label: 'release / publish / dispatch surface',\n        floor: 'high',\n        test: (s) => matchesAny(allText(s), /\\b(release|publish|deploy|dispatch|merge-queue)/i),\n    },\n    {\n        label: 'more than 10 requirements',\n        floor: 'medium',\n        test: (s) => s.requirements.length > 10,\n    },\n    {\n        label: 'open questions present',\n        floor: 'medium',\n        test: (s) => s.open_questions.length > 0,\n    },\n    {\n        label: 'requirements declare risks',\n        floor: 'medium',\n        test: (s) => s.requirements.some((r) => (r.risks ?? []).length > 0),\n    },\n];\n\n/**\n * Compute the inferred SCRUTINY floor from spec content.\n * Returns the highest floor among matched signals, or 'low' if none match.\n */\nexport function inferScrutiny(spec: SpecV1): Scrutiny {\n    let floor: Scrutiny = 'low';\n    for (const sig of SIGNALS) {\n        if (sig.test(spec) && rank(sig.floor) > rank(floor)) {\n            floor = sig.floor;\n        }\n    }\n    return floor;\n}\n\nexport function explainInference(spec: SpecV1): string[] {\n    return SIGNALS.filter((s) => s.test(spec)).map((s) => `${s.label} → floor ${s.floor}`);\n}\n\nfunction allText(spec: SpecV1): string {\n    return [\n        spec.title,\n        spec.problem,\n        ...spec.success,\n        ...spec.scope.include,\n        ...(spec.scope.exclude ?? []),\n        ...(spec.non_goals ?? []),\n        ...(spec.constraints ?? []),\n        ...spec.requirements.flatMap((r) => [r.story, r.behavior, ...r.acceptance, ...(r.risks ?? [])]),\n        ...spec.open_questions,\n    ].join(' \\n ');\n}\n\nfunction matchesAny(haystack: string, re: RegExp): boolean {\n    return re.test(haystack);\n}\n","import { SpecV1Schema, type SpecV1, type Layer, type Scrutiny } from './schema.js';\nimport type { ValidationIssue } from './validate.js';\n\n/* ───────────────── schema ───────────────── */\n\nexport type SchemaCheckResult =\n    | { ok: true; spec: SpecV1 }\n    | { ok: false; errors: ValidationIssue[] };\n\nexport function checkSchema(input: unknown): SchemaCheckResult {\n    const parsed = SpecV1Schema.safeParse(input);\n    if (parsed.success) return { ok: true, spec: parsed.data };\n    const errors: ValidationIssue[] = parsed.error.issues.map((issue) => ({\n        code: 'schema_invalid',\n        field_path: issue.path.length ? issue.path.join('.') : '(root)',\n        severity: 'error',\n        message: issue.message,\n        fix: 'Run `xt spec validate` and follow the field-by-field hints.',\n    }));\n    return { ok: false, errors };\n}\n\n/* ───────────────── scope vagueness ───────────────── */\n\nconst VAGUE_SCOPE_PATTERNS: RegExp[] = [\n    /^src\\/?$/i,\n    /^lib\\/?$/i,\n    /^all\\b/i,\n    /^everything$/i,\n    /^\\*+$/,\n    /^\\*\\*\\/\\*$/,\n    /^the whole/i,\n];\n\nexport function checkScopeNotVague(spec: SpecV1): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    spec.scope.include.forEach((entry, idx) => {\n        const trimmed = entry.trim();\n        const isVague =\n            trimmed.length < 4 ||\n            VAGUE_SCOPE_PATTERNS.some((p) => p.test(trimmed)) ||\n            (!trimmed.includes('/') && !trimmed.includes('.') && trimmed.split(/\\s+/).length <= 2);\n        if (isVague) {\n            issues.push({\n                code: 'scope_too_vague',\n                field_path: `scope.include[${idx}]`,\n                severity: 'error',\n                message: `Scope entry \"${entry}\" is too vague to act on.`,\n                fix: 'Name specific files, modules, or symbol surfaces (e.g., cli/src/foo/bar.ts).',\n            });\n        }\n    });\n    return issues;\n}\n\n/* ───────────────── testability ───────────────── */\n\nconst UNTESTABLE_WORDS = [\n    'good', 'nice', 'better', 'cleaner', 'appropriate', 'as needed',\n    'etc', 'and so on', 'reasonable', 'sensible', 'sufficient',\n];\n\nexport function checkRequirementsTestable(spec: SpecV1): ValidationIssue[] {\n    const issues: ValidationIssue[] = [];\n    spec.requirements.forEach((req, rIdx) => {\n        req.acceptance.forEach((line, aIdx) => {\n            const lower = line.toLowerCase();\n            const hit = UNTESTABLE_WORDS.find((w) => lower.includes(w));\n            if (hit) {\n                issues.push({\n                    code: 'requirement_untestable',\n                    field_path: `requirements[${rIdx}].acceptance[${aIdx}]`,\n                    severity: 'error',\n                    message: `Acceptance criterion uses vague word \"${hit}\" — not falsifiable.`,\n                    fix: 'Rewrite as an observable assertion (numbers, exit codes, output strings, log events).',\n                });\n            }\n        });\n    });\n    return issues;\n}\n\n/* ───────────────── layer hints ───────────────── */\n\ninterface LayerCheckOutput {\n    issues: ValidationIssue[];\n    inferredLayers: Record<string, Layer>;\n}\n\nconst LAYER_KEYWORDS: Array<{ layer: Layer; pattern: RegExp }> = [\n    { layer: 'shell', pattern: /\\b(cli|command|subcommand|argv|exit code|stdout|stderr)\\b/i },\n    { layer: 'boundary', pattern: /\\b(api|endpoint|client|http|fetch|url|port|grpc|webhook)\\b/i },\n    { layer: 'operational', pattern: /\\b(deploy|hook|telemetry|metric|log event|runbook|health check)\\b/i },\n    { layer: 'core', pattern: /\\b(transform|compute|parse|validate|serialize|deserialize|state machine)\\b/i },\n];\n\nfunction inferLayer(req: SpecV1['requirements'][number]): Layer | null {\n    const text = `${req.story} ${req.behavior} ${req.acceptance.join(' ')}`;\n    for (const { layer, pattern } of LAYER_KEYWORDS) {\n        if (pattern.test(text)) return layer;\n    }\n    return null;\n}\n\nexport function checkLayerHints(spec: SpecV1): LayerCheckOutput {\n    const issues: ValidationIssue[] = [];\n    const inferredLayers: Record<string, Layer> = {};\n    spec.requirements.forEach((req, idx) => {\n        if (req.layer_hint) return;\n        const inferred = inferLayer(req);\n        if (inferred) {\n            inferredLayers[req.id] = inferred;\n            issues.push({\n                code: 'layer_missing',\n                field_path: `requirements[${idx}].layer_hint`,\n                severity: 'warning',\n                message: `Missing layer_hint for ${req.id}; inferred \"${inferred}\" from content.`,\n                fix: `Set layer_hint: ${inferred} explicitly.`,\n            });\n        } else {\n            issues.push({\n                code: 'layer_missing',\n                field_path: `requirements[${idx}].layer_hint`,\n                severity: 'error',\n                message: `Missing layer_hint for ${req.id} and cannot infer from content.`,\n                fix: 'Set layer_hint to one of: core | boundary | shell | operational.',\n            });\n        }\n    });\n    return { issues, inferredLayers };\n}\n\n/* ───────────────── dependency cycles (Kahn) ───────────────── */\n\nexport function checkDependencyCycles(spec: SpecV1): ValidationIssue[] {\n    const reqIds = new Set(spec.requirements.map((r) => r.id));\n    const edges = spec.dependencies.filter((d) => reqIds.has(d.from) && reqIds.has(d.requires));\n\n    const inDegree = new Map<string, number>();\n    const adj = new Map<string, string[]>();\n    for (const id of reqIds) {\n        inDegree.set(id, 0);\n        adj.set(id, []);\n    }\n    for (const e of edges) {\n        // `from` depends on `requires` → edge from requires → from\n        adj.get(e.requires)!.push(e.from);\n        inDegree.set(e.from, (inDegree.get(e.from) ?? 0) + 1);\n    }\n\n    const queue = [...reqIds].filter((id) => (inDegree.get(id) ?? 0) === 0);\n    let visited = 0;\n    while (queue.length) {\n        const node = queue.shift()!;\n        visited++;\n        for (const next of adj.get(node) ?? []) {\n            inDegree.set(next, (inDegree.get(next) ?? 0) - 1);\n            if (inDegree.get(next) === 0) queue.push(next);\n        }\n    }\n\n    if (visited === reqIds.size) return [];\n\n    const stuck = [...reqIds].filter((id) => (inDegree.get(id) ?? 0) > 0);\n    return [\n        {\n            code: 'cycle_detected',\n            field_path: 'dependencies',\n            severity: 'error',\n            message: `Dependency cycle detected involving: ${stuck.join(', ')}.`,\n            fix: 'Break the cycle by removing one dependency edge or splitting a requirement.',\n        },\n    ];\n}\n\n/* ───────────────── open questions for high/critical scrutiny ───────────────── */\n\nexport function checkOpenQuestionsForHighScrutiny(\n    spec: SpecV1,\n    effective: Scrutiny,\n): ValidationIssue[] {\n    if (effective !== 'high' && effective !== 'critical') return [];\n    if (spec.open_questions.length === 0) return [];\n    return [\n        {\n            code: 'open_question_unresolved',\n            field_path: 'open_questions',\n            severity: 'error',\n            message: `Effective scrutiny is \"${effective}\" but ${spec.open_questions.length} open question(s) remain.`,\n            fix: 'Resolve open questions before xt spec apply, or accept downgrade in a separate review pass.',\n        },\n    ];\n}\n","import type { SpecV1, Scrutiny, Layer } from './schema.js';\nexport type { Scrutiny, Layer } from './schema.js';\nimport { inferScrutiny, raiseScrutiny } from './scrutiny.js';\nimport {\n    checkSchema,\n    checkScopeNotVague,\n    checkRequirementsTestable,\n    checkLayerHints,\n    checkDependencyCycles,\n    checkOpenQuestionsForHighScrutiny,\n} from './checks.js';\n\nexport type ErrorCode =\n    | 'schema_invalid'\n    | 'scope_too_vague'\n    | 'requirement_untestable'\n    | 'layer_missing'\n    | 'cycle_detected'\n    | 'scrutiny_lower_than_inferred'\n    | 'open_question_unresolved';\n\nexport type Severity = 'error' | 'warning';\n\nexport interface ValidationIssue {\n    code: ErrorCode;\n    field_path: string;\n    message: string;\n    severity: Severity;\n    fix?: string;\n}\n\nexport interface InferredFields {\n    scrutiny?: { explicit: Scrutiny; inferred: Scrutiny; effective: Scrutiny };\n    layer_hints?: Record<string, Layer>;\n}\n\nexport interface ValidationResult {\n    ok: boolean;\n    errors: ValidationIssue[];\n    warnings: ValidationIssue[];\n    inferred: InferredFields;\n}\n\nexport interface ValidateOptions {\n    /** Treat warnings as errors. Default false. */\n    strict?: boolean;\n}\n\n/**\n * Pure validator: input is an arbitrary parsed object (likely from yaml).\n * No I/O. No console output. Caller is responsible for rendering.\n */\nexport function validate(input: unknown, opts: ValidateOptions = {}): ValidationResult {\n    const issues: ValidationIssue[] = [];\n    const inferred: InferredFields = {};\n\n    const schemaResult = checkSchema(input);\n    if (!schemaResult.ok) {\n        return {\n            ok: false,\n            errors: schemaResult.errors,\n            warnings: [],\n            inferred,\n        };\n    }\n    const spec: SpecV1 = schemaResult.spec;\n\n    issues.push(...checkScopeNotVague(spec));\n    issues.push(...checkRequirementsTestable(spec));\n\n    const layerCheck = checkLayerHints(spec);\n    issues.push(...layerCheck.issues);\n    if (Object.keys(layerCheck.inferredLayers).length > 0) {\n        inferred.layer_hints = layerCheck.inferredLayers;\n    }\n\n    issues.push(...checkDependencyCycles(spec));\n\n    const inferredScrutiny = inferScrutiny(spec);\n    const effectiveScrutiny = raiseScrutiny(spec.scrutiny, inferredScrutiny);\n    inferred.scrutiny = {\n        explicit: spec.scrutiny,\n        inferred: inferredScrutiny,\n        effective: effectiveScrutiny,\n    };\n    if (effectiveScrutiny !== spec.scrutiny) {\n        issues.push({\n            code: 'scrutiny_lower_than_inferred',\n            field_path: 'scrutiny',\n            severity: 'warning',\n            message: `Explicit scrutiny \"${spec.scrutiny}\" raised to \"${effectiveScrutiny}\" by inference signals.`,\n            fix: `Set scrutiny: ${effectiveScrutiny} to acknowledge the inferred floor.`,\n        });\n    }\n\n    issues.push(...checkOpenQuestionsForHighScrutiny(spec, effectiveScrutiny));\n\n    const errors = issues.filter((i) => i.severity === 'error');\n    const warnings = issues.filter((i) => i.severity === 'warning');\n    const ok = errors.length === 0 && (!opts.strict || warnings.length === 0);\n\n    return { ok, errors, warnings, inferred };\n}\n","import kleur from 'kleur';\nimport type { ValidationResult, ValidationIssue } from './validate.js';\n\nexport function renderHuman(result: ValidationResult, sourcePath: string): string {\n    const lines: string[] = [];\n    lines.push(kleur.bold(`xt spec validate: ${sourcePath}`));\n\n    if (result.inferred.scrutiny) {\n        const s = result.inferred.scrutiny;\n        const arrow = s.effective === s.explicit ? '' : kleur.yellow(` → raised to ${s.effective}`);\n        lines.push(kleur.dim(`  scrutiny: ${s.explicit} (inferred ${s.inferred})${arrow}`));\n    }\n\n    if (result.errors.length === 0 && result.warnings.length === 0) {\n        lines.push(kleur.green('  ✓ no issues'));\n        return lines.join('\\n');\n    }\n\n    if (result.errors.length > 0) {\n        lines.push('');\n        lines.push(kleur.red(`  ${result.errors.length} error${result.errors.length === 1 ? '' : 's'}`));\n        for (const e of result.errors) lines.push(...formatIssue(e, 'error'));\n    }\n    if (result.warnings.length > 0) {\n        lines.push('');\n        lines.push(kleur.yellow(`  ${result.warnings.length} warning${result.warnings.length === 1 ? '' : 's'}`));\n        for (const w of result.warnings) lines.push(...formatIssue(w, 'warning'));\n    }\n    return lines.join('\\n');\n}\n\nfunction formatIssue(issue: ValidationIssue, kind: 'error' | 'warning'): string[] {\n    const tag = kind === 'error' ? kleur.red('  ✗') : kleur.yellow('  ⚠');\n    const out: string[] = [];\n    out.push(`${tag} ${kleur.bold(issue.code)} at ${kleur.cyan(issue.field_path)}`);\n    out.push(`     ${issue.message}`);\n    if (issue.fix) out.push(`     ${kleur.dim('fix: ' + issue.fix)}`);\n    return out;\n}\n\nexport interface JsonReport {\n    schema: 'xt.spec.validate.v1';\n    ok: boolean;\n    source: string;\n    errors: ValidationIssue[];\n    warnings: ValidationIssue[];\n    inferred: ValidationResult['inferred'];\n}\n\nexport function renderJson(result: ValidationResult, sourcePath: string): JsonReport {\n    return {\n        schema: 'xt.spec.validate.v1',\n        ok: result.ok,\n        source: sourcePath,\n        errors: result.errors,\n        warnings: result.warnings,\n        inferred: result.inferred,\n    };\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport { findRepoRoot } from '../../utils/repo-root.js';\nimport { probe } from '../../spec/readiness/probe.js';\nimport { logEvent } from '../../spec/log.js';\n\ninterface DoctorOptions {\n    json?: boolean;\n}\n\nexport function createSpecDoctorCommand(): Command {\n    return new Command('doctor')\n        .description('Check planning + test-planning skill readiness for `xt spec apply`')\n        .option('--json', 'Emit a structured JSON report', false)\n        .action(async (opts: DoctorOptions) => {\n            const repoRoot = process.env.XT_SPEC_REPO_ROOT\n                ?? (await findRepoRoot().catch(() => null))\n                ?? process.cwd();\n            const report = await probe(repoRoot);\n\n            for (const r of report.results) {\n                logEvent({\n                    event: 'readiness_probe',\n                    capability: r.capability.key,\n                    present: r.present,\n                    required_for: r.capability.required_for,\n                    source_file: r.capability.source,\n                });\n            }\n\n            if (opts.json) {\n                process.stdout.write(JSON.stringify(report, null, 2) + '\\n');\n            } else {\n                renderHuman(report);\n            }\n\n            process.exit(report.ready ? 0 : 1);\n        });\n}\n\nfunction renderHuman(report: { results: { capability: { key: string; title: string; upstream_ref: string }; present: boolean; detail: string }[]; ready: boolean }): void {\n    console.log(kleur.bold(`xt spec doctor — planner/test-planning readiness for xt spec apply`));\n    for (const r of report.results) {\n        const mark = r.present ? kleur.green('✓') : kleur.red('✗');\n        console.log(`  ${mark} ${r.capability.title}`);\n        if (!r.present) {\n            console.log(`     ${kleur.dim('upstream: ' + r.capability.upstream_ref)}`);\n            console.log(`     ${kleur.dim(r.detail)}`);\n        }\n    }\n    if (report.ready) {\n        console.log(kleur.green('\\n✓ all capabilities present — xt spec apply is unblocked'));\n    } else {\n        const missing = report.results.filter((r) => !r.present).length;\n        console.log(kleur.red(`\\n✗ ${missing} capability(s) missing — xt spec apply will refuse with exit 65`));\n        console.log(kleur.dim('   See docs/specs/UPSTREAM-DEPENDENCIES.md for the alignment plan.'));\n    }\n}\n","import fs from 'fs-extra';\nimport path from 'node:path';\nimport { CAPABILITY_MATRIX, type Capability, type CapabilityProbeResult } from './matrix.js';\n\nexport interface ProbeReport {\n    schema: 'xt.spec.readiness.v1';\n    repo_root: string;\n    results: CapabilityProbeResult[];\n    ready: boolean;\n}\n\n/**\n * Probe each capability against deployed skill / config files.\n * Read-only; no network; <1s; pure function of the filesystem.\n */\nexport async function probe(repoRoot: string): Promise<ProbeReport> {\n    const results: CapabilityProbeResult[] = [];\n    for (const capability of CAPABILITY_MATRIX) {\n        results.push(await probeOne(capability, repoRoot));\n    }\n    const ready = results.every((r) => r.present);\n    return { schema: 'xt.spec.readiness.v1', repo_root: repoRoot, results, ready };\n}\n\nasync function probeOne(capability: Capability, repoRoot: string): Promise<CapabilityProbeResult> {\n    const sourcePath = path.resolve(repoRoot, capability.source);\n    if (!(await fs.pathExists(sourcePath))) {\n        return {\n            capability,\n            present: false,\n            detail: `source not found: ${capability.source}`,\n        };\n    }\n    const text = await fs.readFile(sourcePath, 'utf8');\n    const match = capability.marker.exec(text);\n    if (!match) {\n        return {\n            capability,\n            present: false,\n            detail: `marker ${capability.marker.source} absent from ${capability.source}`,\n        };\n    }\n    return {\n        capability,\n        present: true,\n        detail: `matched at offset ${match.index}`,\n    };\n}\n","/**\n * Capability matrix for the planner + test-planning skills.\n * Probed by `xt spec doctor` and `xt spec apply --check-only`.\n *\n * Each capability has:\n *   - key: stable id (used by status output + apply gate)\n *   - title: human-readable label\n *   - required_for: which xt spec feature depends on it\n *   - upstream_ref: which specialists-roadmap bead/decision ships it\n *   - source: path (relative to repo root) to grep\n *   - marker: regex that proves presence\n */\n\nexport interface Capability {\n    key: string;\n    title: string;\n    required_for: string;\n    upstream_ref: string;\n    source: string;\n    marker: RegExp;\n}\n\nexport const CAPABILITY_MATRIX: Capability[] = [\n    {\n        key: 'planning_uses_bd_swarm',\n        title: 'Planning skill teaches `bd swarm` (epic + DAG validation)',\n        required_for: 'xt spec apply (planner produces bd swarm rather than raw bd create loops)',\n        upstream_ref: 'specialists-roadmap §0 (bd surface inventory) + D26',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /\\bbd\\s+swarm\\b/i,\n    },\n    {\n        key: 'planning_uses_bd_mol_pour',\n        title: 'Planning skill teaches `bd mol pour` (chain-molecule pour)',\n        required_for: 'xt spec apply (planner pours chain-molecules per child chain)',\n        upstream_ref: 'specialists-roadmap §0 absorbed molecule model + §13',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /\\bbd\\s+mol\\s+pour\\b/i,\n    },\n    {\n        key: 'planning_emits_xml_contracts',\n        title: 'Planning skill emits XML `<change-contract>` / `<step-contract>` per D30',\n        required_for: 'xt spec apply XML-contract transform',\n        upstream_ref: 'specialists-roadmap Opp 12 / D30',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /<change-contract>|<step-contract>/,\n    },\n    {\n        key: 'planning_recommends_template',\n        title: 'Planning Pass-2 annotates `recommended_template` per child root',\n        required_for: 'xt spec apply preview + sp chain review handoff',\n        upstream_ref: 'specialists-roadmap D23 / D26',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /recommended_template/,\n    },\n    {\n        key: 'planning_typed_edge_fluency',\n        title: 'Planning skill uses typed `bd dep` edges (validates/discovered-from/etc)',\n        required_for: 'apply produces dep graph with correct typed edges, not flattened blocks',\n        upstream_ref: 'specialists-roadmap D28 / using-specialists-v4',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /--type\\s+(validates|discovered-from|tracks|supersedes)/,\n    },\n    {\n        key: 'planning_scrutiny_enforcement',\n        title: 'Planning skill enforces SCRUTINY in 7-section contracts',\n        required_for: 'xt spec apply SCRUTINY propagation',\n        upstream_ref: 'specialists-roadmap Opp 16',\n        source: '.xtrm/skills/default/planning/SKILL.md',\n        marker: /\\bSCRUTINY\\b/,\n    },\n    {\n        key: 'testplanning_uses_bd_gate',\n        title: 'test-planning skill picks `bd gate` types by SCRUTINY',\n        required_for: 'xt spec apply produces typed bd gates instead of bare validates edges',\n        upstream_ref: 'specialists-roadmap §0 (bd gate primitive) + Opp 16',\n        source: '.xtrm/skills/default/test-planning/SKILL.md',\n        marker: /\\bbd\\s+gate\\b/i,\n    },\n    {\n        key: 'testplanning_layer_classification',\n        title: 'test-planning skill classifies by core/boundary/shell layer',\n        required_for: 'xt spec apply test-issue batching',\n        upstream_ref: 'specialists-roadmap §13 chain templates layer model',\n        source: '.xtrm/skills/default/test-planning/SKILL.md',\n        marker: /\\b(core|boundary|shell)\\s+layer\\b/i,\n    },\n];\n\nexport interface CapabilityProbeResult {\n    capability: Capability;\n    present: boolean;\n    detail: string;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { spawnSync } from 'node:child_process';\nimport { parse as parseYaml } from 'yaml';\nimport { findRepoRoot } from '../../utils/repo-root.js';\nimport { probe } from '../../spec/readiness/probe.js';\nimport { validate } from '../../spec/validate.js';\nimport { toChangeContractXml } from '../../spec/transform/to-change-contract.js';\nimport { dispatchPlanner } from '../../spec/dispatch.js';\nimport { writeApplyState, sidecarPath } from '../../spec/apply-state.js';\nimport { logEvent } from '../../spec/log.js';\n\ninterface ApplyOptions {\n    checkOnly?: boolean;\n    json?: boolean;\n    /** Print the planner-bead XML to stdout; skip readiness + bd writes. */\n    dryRun?: boolean;\n    /** Reconcile mode: read sp result for the persisted sidecar and write links back to spec.yaml. */\n    reconcile?: boolean;\n}\n\nconst BD_DESCRIPTION_LIMIT_BYTES = 60_000;\n\nexport function createSpecApplyCommand(): Command {\n    return new Command('apply')\n        .description('Transform a validated spec.yaml into a planner bead and dispatch the planner specialist')\n        .argument('<path>', 'Path to spec.yaml')\n        .option('--check-only', 'Run readiness probe + validate, do not create any bead', false)\n        .option('--json', 'Emit structured JSON output', false)\n        .option('--dry-run', 'Print the planner-bead XML to stdout; do not create the bead', false)\n        .option('--reconcile', 'Read sp result for the persisted planner job and write links back to spec.yaml', false)\n        .action(async (specPath: string, opts: ApplyOptions) => {\n            const absPath = path.resolve(specPath);\n            if (!(await fs.pathExists(absPath))) {\n                console.error(kleur.red(`error: ${absPath} not found`));\n                process.exit(64);\n            }\n\n            // --reconcile is a separate phase that runs after the planner completes;\n            // it does not re-run the readiness probe or re-validate the spec.\n            if (opts.reconcile) {\n                const { readApplyState } = await import('../../spec/apply-state.js');\n                const { reconcile } = await import('../../spec/reconcile.js');\n                const state = await readApplyState(absPath);\n                if (!state) {\n                    console.error(kleur.red('error: no .apply-state.json sidecar found next to ') + absPath);\n                    console.error(kleur.dim('  run `xt spec apply <path>` first to create the planner bead and dispatch.'));\n                    process.exit(1);\n                }\n                const result = await reconcile(absPath, state);\n                if (!result.ok) {\n                    console.error(kleur.red('✗ reconcile failed: ') + result.error);\n                    logEvent({ event: 'apply_reconcile_failed', error: result.error, orphan_ids: result.orphan_ids });\n                    process.exit(1);\n                }\n                logEvent({\n                    event: 'apply_reconciled',\n                    planner_bead_id: state.planner_bead_id,\n                    epic_id: result.planner_result!.epic_id,\n                    children_count: result.planner_result!.children.length,\n                    test_issues_count: result.planner_result!.test_issues.length,\n                });\n                const { renderReconcileHandoff } = await import('../../spec/handoff.js');\n                console.log(renderReconcileHandoff({\n                    plannerBeadId: state.planner_bead_id,\n                    plannerJobId: state.planner_job_id,\n                    epicId: result.planner_result!.epic_id,\n                    childrenCount: result.planner_result!.children.length,\n                    testIssuesCount: result.planner_result!.test_issues.length,\n                }));\n                logEvent({\n                    event: 'apply_handoff_emitted',\n                    epic_id: result.planner_result!.epic_id,\n                    next_command: `sp chain review ${result.planner_result!.epic_id}`,\n                });\n                process.exit(0);\n            }\n\n            const repoRoot = process.env.XT_SPEC_REPO_ROOT\n                ?? (await findRepoRoot().catch(() => null))\n                ?? process.cwd();\n\n            // --dry-run prints XML for inspection; no bd writes; no dispatch.\n            // Readiness probe only gates real dispatch (the planner specialist won't\n            // produce correct output if the deployed skills don't speak bd-native primitives).\n            const probeReport = opts.dryRun ? { ready: true, results: [] as Array<{ present: boolean; capability: { key: string } }> } : await probe(repoRoot);\n            if (!probeReport.ready) {\n                const missing = probeReport.results.filter((r) => !r.present).map((r) => r.capability.key);\n                if (opts.json) {\n                    process.stdout.write(JSON.stringify({\n                        schema: 'xt.spec.apply.v1',\n                        ok: false,\n                        phase: 'readiness',\n                        missing_capabilities: missing,\n                    }, null, 2) + '\\n');\n                } else {\n                    console.error(kleur.red('✗ readiness probe failed — xt spec apply refuses to dispatch.'));\n                    console.error(kleur.dim('  Run `xt spec doctor` for the full capability report.'));\n                    for (const m of missing) console.error(kleur.dim('   - missing: ' + m));\n                }\n                logEvent({ event: 'apply_refused', reason: 'readiness', missing_capabilities: missing });\n                process.exit(65);\n            }\n\n            const raw = await fs.readFile(absPath, 'utf8');\n            const parsed = parseYaml(raw);\n            const vr = validate(parsed);\n            if (!vr.ok) {\n                if (opts.json) {\n                    process.stdout.write(JSON.stringify({\n                        schema: 'xt.spec.apply.v1',\n                        ok: false,\n                        phase: 'validate',\n                        errors: vr.errors,\n                    }, null, 2) + '\\n');\n                } else {\n                    console.error(kleur.red('✗ validate failed — apply refuses to dispatch.'));\n                    for (const e of vr.errors) console.error(kleur.dim(`   ${e.code} at ${e.field_path}: ${e.message}`));\n                }\n                logEvent({ event: 'apply_refused', reason: 'validate', error_count: vr.errors.length });\n                process.exit(1);\n            }\n\n            if (opts.checkOnly) {\n                if (opts.json) {\n                    process.stdout.write(JSON.stringify({ schema: 'xt.spec.apply.v1', ok: true, phase: 'check-only' }, null, 2) + '\\n');\n                } else {\n                    console.log(kleur.green('✓ readiness + validate passed — xt spec apply is unblocked'));\n                }\n                process.exit(0);\n            }\n\n            const spec = vr.errors.length === 0 && vr.warnings.length >= 0 ? (parsed as ReturnType<typeof Object>) : null;\n            // re-parse cleanly via validator return inferred fields\n            const effectiveScrutiny = vr.inferred.scrutiny?.effective ?? (parsed as { scrutiny: 'low' | 'medium' | 'high' | 'critical' }).scrutiny;\n\n            const xml = toChangeContractXml({\n                spec: parsed as Parameters<typeof toChangeContractXml>[0]['spec'],\n                effectiveScrutiny,\n                sourcePath: absPath,\n            });\n            const bytes = Buffer.byteLength(xml, 'utf8');\n            if (bytes > BD_DESCRIPTION_LIMIT_BYTES) {\n                console.error(kleur.red(`✗ spec_too_large: planner-bead description would be ${bytes} bytes (limit ${BD_DESCRIPTION_LIMIT_BYTES}).`));\n                console.error(kleur.dim('  Split the spec into smaller scopes and run xt spec apply on each.'));\n                logEvent({ event: 'apply_refused', reason: 'spec_too_large', bytes });\n                process.exit(1);\n            }\n\n            if (opts.dryRun) {\n                process.stdout.write(xml);\n                logEvent({ event: 'apply_dry_run', spec_id: (parsed as { id: string }).id, xml_byte_size: bytes });\n                process.exit(0);\n            }\n\n            const title = `Plan: ${(parsed as { title: string }).title}`;\n            const created = bdCreatePlannerBead({ title, description: xml });\n            if (!created.ok) {\n                console.error(kleur.red('✗ bd create failed:'));\n                console.error(created.stderr);\n                logEvent({ event: 'apply_planner_bead_create_failed', stderr: created.stderr });\n                process.exit(created.exitCode ?? 1);\n            }\n            logEvent({\n                event: 'apply_planner_bead_created',\n                spec_id: (parsed as { id: string }).id,\n                planner_bead_id: created.id,\n                xml_byte_size: bytes,\n            });\n            console.log(kleur.green('✓ planner bead created: ') + created.id);\n\n            // Phase 2 (xtrm-ai9xl.11) — dispatch planner specialist, persist sidecar.\n            const dispatched = dispatchPlanner(created.id!);\n            if (!dispatched.ok) {\n                console.error(kleur.red('✗ sp dispatch failed:'));\n                console.error(dispatched.stderr);\n                logEvent({\n                    event: 'apply_dispatch_failed',\n                    planner_bead_id: created.id,\n                    stderr: dispatched.stderr,\n                });\n                process.exit(dispatched.exit_code ?? 1);\n            }\n            const state = {\n                schema: 'xt.spec.apply-state.v1' as const,\n                spec_id: (parsed as { id: string }).id,\n                spec_path: absPath,\n                planner_bead_id: created.id!,\n                planner_job_id: dispatched.job_id!,\n                dispatched_at: new Date().toISOString(),\n            };\n            await writeApplyState(absPath, state);\n            logEvent({\n                event: 'apply_planner_dispatched',\n                planner_bead_id: created.id,\n                planner_job_id: dispatched.job_id,\n                sidecar_path: sidecarPath(absPath),\n            });\n            console.log(kleur.green('✓ planner dispatched: ') + dispatched.job_id);\n            console.log(kleur.dim('  follow: ') + `sp feed ${dispatched.job_id}`);\n            console.log(kleur.dim('  reconcile once planner completes: ') + `xt spec apply ${path.relative(process.cwd(), absPath)} --reconcile`);\n            console.log(kleur.dim('  (reconcile + composition handoff land in xtrm-ai9xl.12–.13)'));\n\n            // Suppress unused\n            void spec;\n        });\n}\n\ninterface BdCreateResult {\n    ok: boolean;\n    id?: string;\n    stderr?: string;\n    exitCode?: number;\n}\n\nfunction bdCreatePlannerBead(args: { title: string; description: string }): BdCreateResult {\n    const bd = process.env.XT_SPEC_BD_BINARY ?? 'bd';\n    const r = spawnSync(\n        bd,\n        ['create', '--type', 'task', '--priority', '1', '--title', args.title, '--description', args.description, '--json'],\n        { encoding: 'utf8' },\n    );\n    if (r.status !== 0) {\n        return { ok: false, stderr: r.stderr || r.stdout, exitCode: r.status ?? 1 };\n    }\n    try {\n        const parsed = JSON.parse(r.stdout);\n        return { ok: true, id: parsed.id };\n    } catch {\n        return { ok: false, stderr: 'failed to parse bd create JSON output: ' + r.stdout };\n    }\n}\n","/**\n * Tiny safe XML builder for bd description payloads.\n *\n * Substrate (specialists-roadmap D30) expects deterministic XML tags inside\n * the bd description so the dispatcher's Stage-1 validator can parse them.\n * We never accept raw user input without escaping; we never construct via\n * template-string concatenation.\n *\n * Output is intentionally minimal: no namespaces, no attributes for now,\n * 2-space indent, LF newlines.\n */\n\nexport interface XmlNode {\n    tag: string;\n    children?: Array<XmlNode | string>;\n}\n\nexport function elem(tag: string, children?: Array<XmlNode | string>): XmlNode {\n    return { tag, children };\n}\n\nexport function text(t: string): string {\n    return t;\n}\n\nexport function render(node: XmlNode, indent = 0): string {\n    const pad = '  '.repeat(indent);\n    if (!node.children || node.children.length === 0) {\n        return `${pad}<${node.tag}/>`;\n    }\n    const allText = node.children.every((c) => typeof c === 'string');\n    if (allText) {\n        const body = (node.children as string[]).map(escape).join('').trim();\n        if (body.length === 0) return `${pad}<${node.tag}/>`;\n        if (!body.includes('\\n') && body.length < 80) {\n            return `${pad}<${node.tag}>${body}</${node.tag}>`;\n        }\n        return `${pad}<${node.tag}>\\n${reindentText(body, indent + 1)}\\n${pad}</${node.tag}>`;\n    }\n    const inner = node.children.map((c) => {\n        if (typeof c === 'string') return reindentText(escape(c), indent + 1);\n        return render(c, indent + 1);\n    }).join('\\n');\n    return `${pad}<${node.tag}>\\n${inner}\\n${pad}</${node.tag}>`;\n}\n\nexport function escape(s: string): string {\n    return s\n        .replace(/&/g, '&amp;')\n        .replace(/</g, '&lt;')\n        .replace(/>/g, '&gt;')\n        .replace(/\"/g, '&quot;')\n        .replace(/'/g, '&apos;');\n}\n\nfunction reindentText(s: string, indentLevel: number): string {\n    const pad = '  '.repeat(indentLevel);\n    return s\n        .split('\\n')\n        .map((line) => (line.trim().length === 0 ? '' : pad + line.trim()))\n        .join('\\n');\n}\n\n/** Convenience: build a `<bullets>` block from a string[] as `<item>…</item>` children. */\nexport function bullets(items: string[]): XmlNode[] {\n    return items.map((i) => elem('item', [i]));\n}\n","import type { SpecV1 } from '../schema.js';\nimport { elem, bullets, render, type XmlNode } from '../xml.js';\n\n/**\n * Transform spec.yaml → planner-bead `<change-contract>` XML per D30.\n *\n * Field mapping (also in docs/specs/CHANGE-CONTRACT-SHAPE.md):\n *   spec.problem                    → <problem>\n *   spec.success                    → <success><item>…</item>…</success>\n *   spec.scrutiny (effective)       → <scrutiny>\n *   spec.scope.include              → <scope><item>…</item>…</scope>\n *   spec.scope.exclude + non_goals  → <non-goals><item>…</item>…</non-goals>\n *   spec.constraints                → <constraints><item>…</item>…</constraints>\n *   requirements + validation       → <validation><item>…</item>…</validation>\n *   (reserved for planner)          → <output/>\n */\nexport interface ChangeContractInputs {\n    spec: SpecV1;\n    /**\n     * Effective SCRUTINY chosen by the validator (>= spec.scrutiny).\n     * Required because the apply pipeline runs `validate` first and we want\n     * the planner bead to carry the inferred floor, not the operator's\n     * possibly-stale explicit value.\n     */\n    effectiveScrutiny: SpecV1['scrutiny'];\n    /** Optional: the spec.yaml source path (recorded as a comment hint). */\n    sourcePath?: string;\n}\n\nexport function toChangeContractXml(inputs: ChangeContractInputs): string {\n    const root = toChangeContractNode(inputs);\n    return render(root) + '\\n';\n}\n\nexport function toChangeContractNode({ spec, effectiveScrutiny }: ChangeContractInputs): XmlNode {\n    const nonGoals = [\n        ...spec.scope.exclude,\n        ...spec.non_goals,\n    ];\n\n    const validationItems = [\n        ...spec.requirements.flatMap((r) =>\n            r.acceptance.map((a) => `${r.id}: ${a}`),\n        ),\n        ...spec.validation.map((v) => `${v.kind}: ${v.target}`),\n    ];\n\n    return elem('change-contract', [\n        elem('problem', [spec.problem]),\n        elem('success', bullets(spec.success)),\n        elem('scrutiny', [effectiveScrutiny]),\n        elem('scope', bullets(spec.scope.include)),\n        elem('non-goals', bullets(nonGoals)),\n        elem('constraints', bullets(spec.constraints)),\n        elem('validation', bullets(validationItems)),\n        elem('output'),\n    ]);\n}\n\n/** Field count exposed for transform-table parity tests. */\nexport function changeContractFieldCount(): number {\n    return 8; // problem, success, scrutiny, scope, non-goals, constraints, validation, output\n}\n","import { spawnSync } from 'node:child_process';\n\nexport interface DispatchResult {\n    ok: boolean;\n    job_id?: string;\n    stderr?: string;\n    exit_code?: number;\n}\n\nexport interface DispatchOptions {\n    /** Override the sp binary path (used by tests via env). */\n    spBinary?: string;\n}\n\n/**\n * Dispatch the planner specialist against an existing planner bead.\n * Background only — the operator follows via `sp feed <job-id>`.\n *\n * Honors XT_SPEC_SP_BINARY env to support test injection of a mock sp.\n */\nexport function dispatchPlanner(plannerBeadId: string, opts: DispatchOptions = {}): DispatchResult {\n    const sp = opts.spBinary ?? process.env.XT_SPEC_SP_BINARY ?? 'sp';\n    const r = spawnSync(sp, ['run', 'planner', '--bead', plannerBeadId, '--background', '--json'], {\n        encoding: 'utf8',\n    });\n    if (r.status !== 0) {\n        return { ok: false, stderr: r.stderr || r.stdout, exit_code: r.status ?? 1 };\n    }\n    try {\n        const parsed = JSON.parse(r.stdout);\n        const jobId = parsed.job_id ?? parsed.id;\n        if (typeof jobId !== 'string') {\n            return { ok: false, stderr: 'sp returned no job_id field: ' + r.stdout };\n        }\n        return { ok: true, job_id: jobId };\n    } catch {\n        // Some sp builds may print plain text containing the id; try a fallback regex.\n        const m = /job[_-]?id[:= ]+([a-z0-9-]+)/i.exec(r.stdout);\n        if (m) return { ok: true, job_id: m[1] };\n        return { ok: false, stderr: 'failed to parse sp output: ' + r.stdout };\n    }\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { parse as parseYaml } from 'yaml';\nimport { SpecV1Schema } from '../../spec/schema.js';\nimport { computeStatus, type StatusReport } from '../../spec/drift.js';\nimport { logEvent } from '../../spec/log.js';\n\ninterface StatusOpts {\n    json?: boolean;\n}\n\nexport function createSpecStatusCommand(): Command {\n    return new Command('status')\n        .description('Compare spec.yaml.links against current bd state and report drift')\n        .argument('<path>', 'Path to spec.yaml')\n        .option('--json', 'Emit a structured JSON report', false)\n        .action(async (specPath: string, opts: StatusOpts) => {\n            const absPath = path.resolve(specPath);\n            if (!(await fs.pathExists(absPath))) {\n                console.error(kleur.red(`error: ${absPath} not found`));\n                process.exit(64);\n            }\n            const parsed = parseYaml(await fs.readFile(absPath, 'utf8'));\n            const shape = SpecV1Schema.safeParse(parsed);\n            if (!shape.success) {\n                console.error(kleur.red('error: spec.yaml does not match schema; run `xt spec validate ' + absPath + '`'));\n                process.exit(1);\n            }\n            const report = await computeStatus(shape.data);\n            if (opts.json) {\n                process.stdout.write(JSON.stringify(report, null, 2) + '\\n');\n            } else {\n                renderHuman(report);\n            }\n            logEvent({\n                event: 'spec_status',\n                spec_id: shape.data.id,\n                open_count: report.open_count,\n                closed_count: report.closed_count,\n                drift_kind: report.drift.map((d) => d.kind),\n            });\n            if (!report.ok) process.exit(1);\n            if (report.warning_only) process.exit(2);\n            process.exit(0);\n        });\n}\n\nfunction renderHuman(report: StatusReport): void {\n    console.log(kleur.bold(`xt spec status: ${report.spec_id}`));\n    console.log(kleur.dim(`  spec.status = ${report.spec_status}`));\n    console.log(kleur.dim(`  linked: epic=${report.links.epic ?? 'null'}, planner=${report.links.planner_bead ?? 'null'}, children=${report.links.children.length}, tests=${report.links.test_issues.length}`));\n    console.log(kleur.dim(`  bd state: ${report.open_count} open, ${report.closed_count} closed`));\n\n    if (report.drift.length === 0) {\n        console.log(kleur.green('  ✓ in sync'));\n        return;\n    }\n    for (const d of report.drift) {\n        const tag = d.severity === 'error' ? kleur.red('  ✗') : kleur.yellow('  ⚠');\n        console.log(`${tag} ${kleur.bold(d.kind)} ${kleur.cyan(d.id)} ${d.detail ?? ''}`);\n    }\n}\n","import { spawnSync } from 'node:child_process';\nimport type { SpecV1 } from './schema.js';\n\nexport type DriftKind =\n    | 'orphan_link'\n    | 'new_child'\n    | 'cycle'\n    | 'linked_open'\n    | 'linked_closed';\n\nexport interface DriftIssue {\n    kind: DriftKind;\n    id: string;\n    detail?: string;\n    severity: 'warning' | 'error';\n}\n\nexport interface StatusReport {\n    schema: 'xt.spec.status.v1';\n    spec_id: string;\n    spec_status: SpecV1['status'];\n    links: {\n        epic: string | null | undefined;\n        planner_bead: string | null | undefined;\n        children: string[];\n        test_issues: string[];\n    };\n    open_count: number;\n    closed_count: number;\n    drift: DriftIssue[];\n    ok: boolean;\n    warning_only: boolean;\n}\n\ninterface BdShow {\n    id: string;\n    status?: string;\n}\n\ninterface StatusOptions {\n    bdBinary?: string;\n}\n\nexport async function computeStatus(spec: SpecV1, opts: StatusOptions = {}): Promise<StatusReport> {\n    const bd = opts.bdBinary ?? process.env.XT_SPEC_BD_BINARY ?? 'bd';\n    const epic = spec.links.epic ?? null;\n    const plannerBead = spec.links.planner_bead ?? null;\n    const ids = [\n        ...(epic ? [epic] : []),\n        ...(plannerBead ? [plannerBead] : []),\n        ...spec.links.children,\n        ...spec.links.test_issues,\n    ];\n\n    const drift: DriftIssue[] = [];\n    let openCount = 0;\n    let closedCount = 0;\n\n    for (const id of ids) {\n        const show = bdShow(bd, id);\n        if (!show) {\n            drift.push({ kind: 'orphan_link', id, severity: 'error', detail: `bd show ${id} failed` });\n            continue;\n        }\n        if (show.status === 'closed') closedCount++;\n        else openCount++;\n    }\n\n    if (epic) {\n        const newChildren = bdChildrenDiff(bd, epic, spec.links.children);\n        for (const id of newChildren) {\n            drift.push({ kind: 'new_child', id, severity: 'warning', detail: `bd shows ${id} as child of ${epic}; not in spec.links.children` });\n        }\n        const cycles = bdCycles(bd, epic);\n        for (const c of cycles) {\n            drift.push({ kind: 'cycle', id: c, severity: 'error', detail: `cycle detected involving ${c}` });\n        }\n    }\n\n    const errCount = drift.filter((d) => d.severity === 'error').length;\n    const warnCount = drift.filter((d) => d.severity === 'warning').length;\n    const ok = errCount === 0;\n    const warningOnly = ok && warnCount > 0;\n\n    return {\n        schema: 'xt.spec.status.v1',\n        spec_id: spec.id,\n        spec_status: spec.status,\n        links: { epic, planner_bead: plannerBead, children: spec.links.children, test_issues: spec.links.test_issues },\n        open_count: openCount,\n        closed_count: closedCount,\n        drift,\n        ok,\n        warning_only: warningOnly,\n    };\n}\n\nfunction bdShow(bd: string, id: string): BdShow | null {\n    const r = spawnSync(bd, ['show', id, '--json'], { encoding: 'utf8' });\n    if (r.status !== 0) return null;\n    try {\n        return JSON.parse(r.stdout);\n    } catch {\n        return null;\n    }\n}\n\nfunction bdChildrenDiff(bd: string, epic: string, knownChildren: string[]): string[] {\n    const r = spawnSync(bd, ['children', epic, '--json'], { encoding: 'utf8' });\n    if (r.status !== 0) return [];\n    try {\n        const parsed = JSON.parse(r.stdout) as Array<{ id: string }>;\n        const seen = new Set(knownChildren);\n        return parsed.map((c) => c.id).filter((id) => !seen.has(id));\n    } catch {\n        return [];\n    }\n}\n\nfunction bdCycles(bd: string, epic: string): string[] {\n    const r = spawnSync(bd, ['dep', 'cycles', '--scope', epic, '--json'], { encoding: 'utf8' });\n    if (r.status !== 0) return [];\n    try {\n        const parsed = JSON.parse(r.stdout);\n        if (Array.isArray(parsed) && parsed.length > 0) {\n            return parsed.map((c) => (typeof c === 'string' ? c : JSON.stringify(c)));\n        }\n        return [];\n    } catch {\n        return [];\n    }\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport { parse as parseYaml, parseDocument } from 'yaml';\nimport { SpecV1Schema } from '../../spec/schema.js';\nimport { checkArchiveGate } from '../../spec/archive-gate.js';\nimport { logEvent } from '../../spec/log.js';\n\ninterface ArchiveOpts {\n    json?: boolean;\n}\n\nexport function createSpecArchiveCommand(): Command {\n    return new Command('archive')\n        .description('Archive a completed spec; refuses unless epic + children are closed (and review evidence for high/critical)')\n        .argument('<path>', 'Path to spec.yaml')\n        .option('--json', 'Emit a structured JSON report', false)\n        .action(async (specPath: string, opts: ArchiveOpts) => {\n            const absPath = path.resolve(specPath);\n            if (!(await fs.pathExists(absPath))) {\n                console.error(kleur.red(`error: ${absPath} not found`));\n                process.exit(64);\n            }\n            const raw = await fs.readFile(absPath, 'utf8');\n            const parsed = parseYaml(raw);\n            const shape = SpecV1Schema.safeParse(parsed);\n            if (!shape.success) {\n                console.error(kleur.red('error: spec.yaml does not match schema; run `xt spec validate ' + absPath + '`'));\n                process.exit(1);\n            }\n            const gate = await checkArchiveGate(shape.data);\n            if (!gate.ok) {\n                if (opts.json) {\n                    process.stdout.write(JSON.stringify({ schema: 'xt.spec.archive.v1', ok: false, failures: gate.failures }, null, 2) + '\\n');\n                } else {\n                    console.error(kleur.red('✗ archive refused — gate failures:'));\n                    for (const f of gate.failures) {\n                        console.error(kleur.red(`  ${f.code}: `) + f.detail);\n                    }\n                }\n                logEvent({ event: 'spec_archive_refused', spec_id: shape.data.id, gates: gate.failures.map((f) => f.code) });\n                process.exit(1);\n            }\n\n            // Snapshot under <spec-dir>/archive/<slug>.yaml; never overwrites.\n            const archiveDir = path.join(path.dirname(absPath), 'archive');\n            const snapshot = path.join(archiveDir, `${shape.data.id}.yaml`);\n            await fs.ensureDir(archiveDir);\n            if (await fs.pathExists(snapshot)) {\n                console.error(kleur.red(`error: archive snapshot already exists at ${snapshot}`));\n                process.exit(1);\n            }\n            await fs.writeFile(snapshot, raw, 'utf8');\n\n            // Mutate spec.status = archived in place (preserving comments).\n            const doc = parseDocument(raw);\n            doc.set('status', 'archived');\n            const out = String(doc);\n            const tmp = `${absPath}.tmp`;\n            await fs.writeFile(tmp, out.endsWith('\\n') ? out : out + '\\n', 'utf8');\n            await fs.rename(tmp, absPath);\n\n            logEvent({ event: 'spec_archived', spec_id: shape.data.id, snapshot });\n            console.log(kleur.green('✓ archived: ') + path.relative(process.cwd(), absPath));\n            console.log(kleur.dim('  snapshot: ') + path.relative(process.cwd(), snapshot));\n            process.exit(0);\n        });\n}\n","import { spawnSync } from 'node:child_process';\nimport type { SpecV1 } from './schema.js';\nimport { computeStatus } from './drift.js';\n\nexport type GateFailureCode =\n    | 'wrong_status'\n    | 'epic_missing'\n    | 'epic_open'\n    | 'child_open'\n    | 'test_open'\n    | 'review_missing'\n    | 'drift_present'\n    | 'already_archived';\n\nexport interface GateFailure {\n    code: GateFailureCode;\n    detail: string;\n}\n\nexport interface GateResult {\n    ok: boolean;\n    failures: GateFailure[];\n}\n\ninterface GateOptions {\n    bdBinary?: string;\n}\n\n/**\n * Decide whether a spec is archive-ready.\n * Read-only against bd; no state mutation.\n */\nexport async function checkArchiveGate(spec: SpecV1, opts: GateOptions = {}): Promise<GateResult> {\n    const bd = opts.bdBinary ?? process.env.XT_SPEC_BD_BINARY ?? 'bd';\n    const failures: GateFailure[] = [];\n\n    if (spec.status === 'archived') {\n        failures.push({ code: 'already_archived', detail: 'spec.status is already archived' });\n        return { ok: false, failures };\n    }\n    if (spec.status !== 'planned') {\n        failures.push({ code: 'wrong_status', detail: `spec.status must be \"planned\" to archive (current: \"${spec.status}\")` });\n    }\n\n    const epic = spec.links.epic;\n    if (!epic) {\n        failures.push({ code: 'epic_missing', detail: 'spec.links.epic is null — apply was never reconciled' });\n        return { ok: failures.length === 0, failures };\n    }\n\n    const epicStatus = bdStatus(bd, epic);\n    if (epicStatus !== 'closed') {\n        failures.push({ code: 'epic_open', detail: `epic ${epic} status is \"${epicStatus ?? 'unknown'}\" (need \"closed\")` });\n    }\n\n    for (const id of spec.links.children) {\n        const s = bdStatus(bd, id);\n        if (s !== 'closed') failures.push({ code: 'child_open', detail: `child ${id} status \"${s ?? 'unknown'}\"` });\n    }\n    for (const id of spec.links.test_issues) {\n        const s = bdStatus(bd, id);\n        if (s !== 'closed') failures.push({ code: 'test_open', detail: `test issue ${id} status \"${s ?? 'unknown'}\"` });\n    }\n\n    if (spec.scrutiny === 'high' || spec.scrutiny === 'critical') {\n        const marker = bdKv(bd, `reviewed:${epic}`);\n        if (!marker) {\n            failures.push({\n                code: 'review_missing',\n                detail: `scrutiny=${spec.scrutiny} requires \\`bd kv set reviewed:${epic} <evidence>\\` before archive`,\n            });\n        }\n    }\n\n    const status = await computeStatus(spec, { bdBinary: bd });\n    if (!status.ok || status.drift.length > 0) {\n        const driftKinds = status.drift.map((d) => d.kind).join(', ');\n        failures.push({ code: 'drift_present', detail: `xt spec status reports drift: ${driftKinds || 'unspecified'}` });\n    }\n\n    return { ok: failures.length === 0, failures };\n}\n\nfunction bdStatus(bd: string, id: string): string | null {\n    const r = spawnSync(bd, ['show', id, '--json'], { encoding: 'utf8' });\n    if (r.status !== 0) return null;\n    try {\n        return (JSON.parse(r.stdout) as { status?: string }).status ?? null;\n    } catch {\n        return null;\n    }\n}\n\nfunction bdKv(bd: string, key: string): string | null {\n    const r = spawnSync(bd, ['kv', 'get', key], { encoding: 'utf8' });\n    if (r.status !== 0) return null;\n    const value = r.stdout.trim();\n    return value.length > 0 ? value : null;\n}\n","import { Command } from 'commander';\nimport { createSpecDraftCommand } from './spec/draft.js';\nimport { createSpecValidateCommand } from './spec/validate.js';\nimport { createSpecDoctorCommand } from './spec/doctor.js';\nimport { createSpecApplyCommand } from './spec/apply.js';\nimport { createSpecStatusCommand } from './spec/status.js';\nimport { createSpecArchiveCommand } from './spec/archive.js';\n\nexport function createSpecCommand(): Command {\n    const cmd = new Command('spec')\n        .description('xtrm spec — PRD-level intent artifacts that compile to bd issues via the planner specialist');\n    cmd.addCommand(createSpecDraftCommand());\n    cmd.addCommand(createSpecValidateCommand());\n    cmd.addCommand(createSpecDoctorCommand());\n    cmd.addCommand(createSpecApplyCommand());\n    cmd.addCommand(createSpecStatusCommand());\n    cmd.addCommand(createSpecArchiveCommand());\n    return cmd;\n}\n","import { Command } from 'commander';\nimport kleur from 'kleur';\nimport fs from 'fs-extra';\nimport path from 'node:path';\nimport crypto from 'node:crypto';\nimport os from 'node:os';\nimport { spawnSync } from 'child_process';\nimport {\n  resolveGlobalSkillsRoot,\n  resolveDefaultTierRoot,\n  resolveOptionalTierRoot,\n  RESERVED_PACK_NAMES,\n} from '../core/skills-layout.js';\nimport { resolveGlobalHooksRoot } from '../core/global-hooks-bootstrap.js';\nimport { isRepoMigrated, markRepoMigrated } from '../utils/known-repos.js';\nimport { shouldUseGlobalSkills } from '../core/global-skills-flag.js';\nimport { shouldUseGlobalHooks } from '../core/global-hooks-flag.js';\n\ninterface MigrateOptions {\n  dryRun?: boolean;\n  apply?: boolean;\n  repo?: string;\n  yes?: boolean;\n  forceSource?: boolean;\n  restore?: string;\n  force?: boolean;\n}\n\nfunction detectRestoreComponent(backupPath: string): 'skills' | 'hooks' | null {\n  const base = path.basename(backupPath);\n  if (base.startsWith('skills-')) return 'skills';\n  if (base.startsWith('hooks-')) return 'hooks';\n  return null;\n}\n\nasync function restoreBackup(\n  repoPath: string,\n  backupPath: string,\n  opts: { dryRun: boolean; force: boolean },\n): Promise<{ component: 'skills' | 'hooks'; targetDir: string }> {\n  if (!path.isAbsolute(backupPath) && !backupPath.startsWith('~')) {\n    throw new Error(`Backup path must be absolute or ~-expandable: ${backupPath}`);\n  }\n  const resolvedBackup = backupPath.startsWith('~')\n    ? path.join(os.homedir(), backupPath.slice(1).replace(/^\\//, ''))\n    : backupPath;\n\n  if (!(await fs.pathExists(resolvedBackup))) {\n    throw new Error(`Backup not found: ${resolvedBackup}`);\n  }\n\n  const component = detectRestoreComponent(resolvedBackup);\n  if (!component) {\n    throw new Error(\n      `Cannot detect component from backup filename (expected skills-* or hooks-*): ${path.basename(resolvedBackup)}`,\n    );\n  }\n\n  const targetDir = path.join(repoPath, '.xtrm', component);\n  const collisionProbe = component === 'skills'\n    ? path.join(targetDir, 'default')\n    : targetDir;\n  if (await fs.pathExists(collisionProbe)) {\n    if (!opts.force) {\n      throw new Error(\n        `Target already exists: ${collisionProbe}. Rerun with --force to overwrite.`,\n      );\n    }\n  }\n\n  if (opts.dryRun) {\n    console.log(kleur.dim(`  would extract ${resolvedBackup}`));\n    console.log(kleur.dim(`  into ${path.join(repoPath, '.xtrm')}`));\n    return { component, targetDir };\n  }\n\n  if (await fs.pathExists(targetDir)) {\n    await fs.remove(targetDir);\n  }\n\n  const extractInto = path.join(repoPath, '.xtrm');\n  await fs.ensureDir(extractInto);\n\n  const result = spawnSync('tar', ['-xzf', resolvedBackup, '-C', extractInto], {\n    stdio: 'pipe',\n  });\n  if (result.status !== 0) {\n    throw new Error(\n      `Failed to extract backup: ${result.stderr.toString() || 'unknown error'}`,\n    );\n  }\n\n  const realExtractInto = await fs.realpath(extractInto);\n  const realTarget = await fs.realpath(targetDir);\n  const rel = path.relative(realExtractInto, realTarget);\n  if (rel.startsWith('..') || path.isAbsolute(rel)) {\n    throw new Error(\n      `Restore path traversal detected: ${realTarget} escaped ${realExtractInto}`,\n    );\n  }\n\n  return { component, targetDir };\n}\n\nasync function detectSourceRepoMarker(repoPath: string): Promise<string | null> {\n  const pkgPath = path.join(repoPath, 'package.json');\n  if (await fs.pathExists(pkgPath)) {\n    try {\n      const pkg = await fs.readJson(pkgPath);\n      if (pkg?.name === 'xtrm-tools') return \"package.json name === 'xtrm-tools'\";\n    } catch { /* unreadable package.json → not a match */ }\n  }\n  if (await fs.pathExists(path.join(repoPath, 'scripts', 'gen-registry.mjs'))) {\n    return 'scripts/gen-registry.mjs present';\n  }\n  if (await fs.pathExists(path.join(repoPath, 'scripts', 'vendor-specialists-skills.mjs'))) {\n    return 'scripts/vendor-specialists-skills.mjs present';\n  }\n  return null;\n}\n\ninterface MigrationLogEvent {\n  timestamp: string;\n  component: 'skills-migration' | 'hooks-migration';\n  event: string;\n  repo?: string;\n  action?: string;\n  backupPath?: string;\n  filesRemoved?: string[];\n  outcome?: 'ok' | 'skipped' | 'error' | 'diverged';\n  reason?: string;\n  divergedFiles?: string[];\n}\n\nfunction resolveLogPath(): string {\n  return path.join(os.homedir(), '.xtrm', 'logs', 'skills-migration.jsonl');\n}\n\nasync function appendMigrationLog(event: MigrationLogEvent): Promise<void> {\n  const logPath = resolveLogPath();\n  await fs.ensureDir(path.dirname(logPath));\n  await fs.appendFile(logPath, `${JSON.stringify(event)}\\n`);\n}\n\nfunction hashFile(filePath: string): string {\n  const content = fs.readFileSync(filePath);\n  return crypto.createHash('sha256').update(content).digest('hex');\n}\n\nfunction hashValue(value: string): string {\n  return crypto.createHash('sha256').update(value).digest('hex');\n}\n\nasync function createTarballBackup(\n  sourceDir: string,\n  backupName: string,\n): Promise<string> {\n  const backupRoot = path.join(os.homedir(), '.xtrm', 'migration-backups');\n  await fs.ensureDir(backupRoot);\n\n  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');\n  const backupPath = path.join(backupRoot, `${backupName}-${timestamp}.tgz`);\n\n  const sourceBasename = path.basename(sourceDir);\n  const parentDir = path.dirname(sourceDir);\n\n  const result = spawnSync('tar', [\n    '-czf',\n    backupPath,\n    '-C',\n    parentDir,\n    sourceBasename,\n  ], {\n    stdio: 'pipe',\n  });\n\n  if (result.status !== 0) {\n    throw new Error(\n      `Failed to create backup tarball: ${result.stderr.toString() || 'unknown error'}`,\n    );\n  }\n\n  return backupPath;\n}\n\nasync function verifySkillsIdentity(\n  repoSkillsRoot: string,\n  assetType: 'default' | 'optional',\n): Promise<{ identical: boolean; divergedFiles: string[] }> {\n  const globalSkillsRoot = resolveGlobalSkillsRoot();\n  const globalTierRoot =\n    assetType === 'default'\n      ? resolveDefaultTierRoot(globalSkillsRoot)\n      : resolveOptionalTierRoot(globalSkillsRoot);\n\n  const repoTierRoot =\n    assetType === 'default'\n      ? resolveDefaultTierRoot(repoSkillsRoot)\n      : resolveOptionalTierRoot(repoSkillsRoot);\n\n  const divergedFiles: string[] = [];\n\n  if (!(await fs.pathExists(repoTierRoot))) {\n    return { identical: true, divergedFiles: [] };\n  }\n\n  if (!(await fs.pathExists(globalTierRoot))) {\n    const localFiles = await walkDir(repoTierRoot);\n    const tierPrefix = assetType === 'default' ? 'default/' : 'optional/';\n    return {\n      identical: false,\n      divergedFiles: localFiles.map(file => `${tierPrefix}${path.relative(repoTierRoot, file)}`),\n    };\n  }\n\n  const repoFiles = await walkDir(repoTierRoot);\n  const globalFiles = await walkDir(globalTierRoot);\n\n  const repoFileSet = new Set(repoFiles.map((f) => path.relative(repoTierRoot, f)));\n  const globalFileSet = new Set(globalFiles.map((f) => path.relative(globalTierRoot, f)));\n\n  const tierPrefix = assetType === 'default' ? 'default/' : 'optional/';\n\n  for (const relPath of repoFileSet) {\n    const prefixedRelPath = tierPrefix + relPath;\n    if (!globalFileSet.has(relPath)) {\n      divergedFiles.push(prefixedRelPath);\n      continue;\n    }\n\n    const repoFilePath = path.join(repoTierRoot, relPath);\n    const globalFilePath = path.join(globalTierRoot, relPath);\n\n    const repoHash = hashFile(repoFilePath);\n    const globalHash = hashFile(globalFilePath);\n\n    if (repoHash !== globalHash) {\n      divergedFiles.push(prefixedRelPath);\n    }\n  }\n\n  return {\n    identical: divergedFiles.length === 0,\n    divergedFiles,\n  };\n}\n\nasync function walkDir(dir: string): Promise<string[]> {\n  const files: string[] = [];\n  const entries = await fs.readdir(dir, { withFileTypes: true });\n\n  for (const entry of entries) {\n    const entryPath = path.join(dir, entry.name);\n    if (entry.isDirectory()) {\n      files.push(...(await walkDir(entryPath)));\n    } else {\n      files.push(entryPath);\n    }\n  }\n\n  return files;\n}\n\nexport async function migrateSkillsLayout(\n  repoPath: string,\n  opts: { dryRun: boolean; apply?: boolean },\n): Promise<void> {\n  const dryRun = opts.dryRun || opts.apply === false;\n  const skillsRoot = path.join(repoPath, '.xtrm', 'skills');\n  const legacyRoot = path.join(skillsRoot, 'user', 'packs');\n  const moves: Array<{ source: string; target: string }> = [];\n  const legacyEntries = await fs.readdir(legacyRoot, { withFileTypes: true }).catch(() => [] as fs.Dirent[]);\n  const unexpectedEntries = legacyEntries.filter((entry) => !entry.isDirectory() || entry.isSymbolicLink());\n  if (unexpectedEntries.length > 0) {\n    throw new Error(\n      `Refusing skills-layout migration: legacy root contains non-pack entries: ${unexpectedEntries.map((entry) => entry.name).join(', ')}`,\n    );\n  }\n\n  for (const entry of legacyEntries) {\n    if (RESERVED_PACK_NAMES.has(entry.name) && entry.name !== 'local-legacy') {\n      throw new Error(`Refusing skills-layout migration: reserved v1 pack name '${entry.name}' cannot be flattened.`);\n    }\n    const source = path.join(legacyRoot, entry.name);\n    const target = path.join(skillsRoot, entry.name);\n    moves.push({ source, target });\n  }\n\n  for (const { source, target } of moves) {\n    if (await fs.pathExists(target)) {\n      throw new Error(`Cannot flatten pack '${path.basename(source)}': target already exists at ${target}.`);\n    }\n  }\n\n  const activeRoot = path.join(skillsRoot, 'active');\n  const danglingRuntimeSymlinks: string[] = [];\n  for (const runtimeRel of ['.claude/skills', '.pi/skills']) {\n    const runtimeDir = path.join(repoPath, runtimeRel);\n    const stat = await fs.lstat(runtimeDir).catch(() => null);\n    if (!stat?.isSymbolicLink()) continue;\n    const linkTarget = await fs.readlink(runtimeDir);\n    const resolvedTarget = path.resolve(path.dirname(runtimeDir), linkTarget);\n    if (resolvedTarget === activeRoot) danglingRuntimeSymlinks.push(runtimeDir);\n  }\n  if (moves.length === 0 && !await fs.pathExists(activeRoot) && danglingRuntimeSymlinks.length === 0) {\n    console.log(kleur.dim('  skills-layout: already flat'));\n    return;\n  }\n\n  for (const { source, target } of moves) {\n    if (dryRun) {\n      console.log(kleur.cyan(`  skills-layout: would move ${source} → ${target}`));\n      continue;\n    }\n    await fs.rename(source, target);\n    await fs.remove(path.join(target, 'PACK.json'));\n    console.log(kleur.green(`  skills-layout: moved ${source} → ${target}`));\n  }\n\n  if (dryRun) {\n    if (await fs.pathExists(activeRoot)) console.log(kleur.cyan(`  skills-layout: would remove ${activeRoot}`));\n    for (const runtimeDir of danglingRuntimeSymlinks) {\n      console.log(kleur.cyan(`  skills-layout: would remove dangling ${path.relative(repoPath, runtimeDir)} symlink`));\n    }\n    return;\n  }\n\n  if (await fs.pathExists(activeRoot)) {\n    await fs.remove(activeRoot);\n    console.log(kleur.green(`  skills-layout: removed ${activeRoot}`));\n  }\n  await fs.remove(legacyRoot);\n  await fs.remove(path.join(skillsRoot, 'user'));\n\n  for (const runtimeDir of danglingRuntimeSymlinks) {\n    await fs.remove(runtimeDir);\n    console.log(kleur.green(`  skills-layout: removed dangling ${path.relative(repoPath, runtimeDir)} symlink`));\n  }\n}\n\nasync function migrateSkills(\n  repoPath: string,\n  opts: { dryRun: boolean; apply: boolean },\n): Promise<{ migrated: boolean; backupPath?: string; divergedFiles: string[] }> {\n  const repoSkillsRoot = path.join(repoPath, '.xtrm', 'skills');\n  const divergedFiles: string[] = [];\n\n  const alreadyMigrated = await isRepoMigrated(repoPath, { skills: true });\n  if (alreadyMigrated) {\n    console.log(kleur.dim('  skills: already migrated'));\n    return { migrated: false, backupPath: undefined, divergedFiles: [] };\n  }\n\n  const defaultVerification = await verifySkillsIdentity(repoSkillsRoot, 'default');\n  const optionalVerification = await verifySkillsIdentity(repoSkillsRoot, 'optional');\n\n  divergedFiles.push(...defaultVerification.divergedFiles);\n  divergedFiles.push(...optionalVerification.divergedFiles);\n\n  if (divergedFiles.length > 0) {\n    console.log(\n      kleur.yellow(\n        `  skills: ${divergedFiles.length} file(s) diverged from global — preserving as override`,\n      ),\n    );\n    await appendMigrationLog({\n      timestamp: new Date().toISOString(),\n      component: 'skills-migration',\n      event: 'skills.migrate.diverged',\n      repo: repoPath,\n      action: 'preserve-override',\n      divergedFiles,\n      outcome: 'diverged',\n      reason: 'Local files differ from global canonical',\n    });\n\n    if (!opts.dryRun && opts.apply) {\n      const legacyRoot = path.join(\n        repoSkillsRoot,\n        'local-legacy',\n      );\n      await fs.ensureDir(legacyRoot);\n\n      const defaultTierRoot = resolveDefaultTierRoot(repoSkillsRoot);\n      const optionalTierRoot = resolveOptionalTierRoot(repoSkillsRoot);\n\n      for (const relPath of divergedFiles) {\n        const tierPrefix = relPath.startsWith('optional/') ? 'optional/' : 'default/';\n        const pathInTier = relPath.slice(tierPrefix.length);\n          // Ignore retired pack metadata while preserving all skill files.\n        if (path.basename(pathInTier) === 'PACK.json' && !pathInTier.includes('/')) continue;\n        const sourcePath = relPath.startsWith('optional/')\n          ? path.join(optionalTierRoot, pathInTier)\n          : path.join(defaultTierRoot, pathInTier);\n\n        const destPath = path.join(legacyRoot, pathInTier);\n        if (await fs.pathExists(sourcePath)) {\n          await fs.ensureDir(path.dirname(destPath));\n          await fs.copy(sourcePath, destPath);\n        }\n      }\n\n      // local-legacy is identified by its filesystem shape; no PACK.json is emitted.\n    }\n  }\n\n  const skillsToRemove: string[] = [];\n  const defaultTierRoot = resolveDefaultTierRoot(repoSkillsRoot);\n  const optionalTierRoot = resolveOptionalTierRoot(repoSkillsRoot);\n\n  if (await fs.pathExists(defaultTierRoot)) {\n    skillsToRemove.push(defaultTierRoot);\n  }\n\n  if (await fs.pathExists(optionalTierRoot)) {\n    skillsToRemove.push(optionalTierRoot);\n  }\n\n  if (skillsToRemove.length === 0) {\n    console.log(kleur.dim('  skills: no per-repo default/optional to migrate'));\n    return { migrated: false, backupPath: undefined, divergedFiles };\n  }\n\n  if (opts.dryRun) {\n    console.log(kleur.cyan('  skills: would remove:'));\n    for (const p of skillsToRemove) {\n      console.log(kleur.gray(`    - ${p}`));\n    }\n    return { migrated: false, backupPath: undefined, divergedFiles };\n  }\n\n  if (!opts.apply) {\n    console.log(kleur.yellow('  skills: dry-run (use --apply to execute)'));\n    return { migrated: false, backupPath: undefined, divergedFiles };\n  }\n\n  const backupPath = await createTarballBackup(\n    repoSkillsRoot,\n    `skills-${path.basename(repoPath)}`,\n  );\n  console.log(kleur.green(`  skills: backup created at ${backupPath}`));\n\n  for (const p of skillsToRemove) {\n    await fs.remove(p);\n    console.log(kleur.green(`  skills: removed ${p}`));\n  }\n\n  await appendMigrationLog({\n    timestamp: new Date().toISOString(),\n    component: 'skills-migration',\n    event: 'skills.migrate.ok',\n    repo: repoPath,\n    action: 'delete',\n    backupPath,\n    filesRemoved: skillsToRemove,\n    outcome: 'ok',\n  });\n\n  await markRepoMigrated(repoPath, { skillsMigrated: true, backupPath });\n\n  return { migrated: true, backupPath, divergedFiles };\n}\n\nasync function verifyHooksIdentity(repoPath: string): Promise<{ identical: boolean; divergedFiles: string[] }> {\n  const globalHooksRoot = resolveGlobalHooksRoot();\n  const repoHooksRoot = path.join(repoPath, '.xtrm', 'hooks');\n\n  const divergedFiles: string[] = [];\n\n  if (!(await fs.pathExists(repoHooksRoot))) {\n    return { identical: true, divergedFiles: [] };\n  }\n\n  if (!(await fs.pathExists(globalHooksRoot))) {\n    return { identical: false, divergedFiles: [] };\n  }\n\n  const repoFiles = await walkDir(repoHooksRoot);\n  const globalFiles = await walkDir(globalHooksRoot);\n\n  const repoFileSet = new Set(repoFiles.map((f) => path.relative(repoHooksRoot, f)));\n  const globalFileSet = new Set(globalFiles.map((f) => path.relative(globalHooksRoot, f)));\n\n  for (const relPath of repoFileSet) {\n    if (!globalFileSet.has(relPath)) {\n      divergedFiles.push(relPath);\n      continue;\n    }\n\n    const repoFilePath = path.join(repoHooksRoot, relPath);\n    const globalFilePath = path.join(globalHooksRoot, relPath);\n\n    const repoHash = hashFile(repoFilePath);\n    const globalHash = hashFile(globalFilePath);\n\n    if (repoHash !== globalHash) {\n      divergedFiles.push(relPath);\n    }\n  }\n\n  return {\n    identical: divergedFiles.length === 0,\n    divergedFiles,\n  };\n}\n\nasync function migrateHooks(\n  repoPath: string,\n  opts: { dryRun: boolean; apply: boolean },\n): Promise<{ migrated: boolean; backupPath?: string; divergedFiles: string[]; skipped: boolean }> {\n  const repoHooksRoot = path.join(repoPath, '.xtrm', 'hooks');\n\n  const alreadyMigrated = await isRepoMigrated(repoPath, { hooks: true });\n  if (alreadyMigrated) {\n    console.log(kleur.dim('  hooks: already migrated'));\n    return { migrated: false, backupPath: undefined, divergedFiles: [], skipped: false };\n  }\n\n  const verification = await verifyHooksIdentity(repoPath);\n\n  if (verification.divergedFiles.length > 0) {\n    console.log(\n      kleur.yellow(\n        `  hooks: ${verification.divergedFiles.length} file(s) diverged — skipping removal, keeping as override`,\n      ),\n    );\n    await appendMigrationLog({\n      timestamp: new Date().toISOString(),\n      component: 'hooks-migration',\n      event: 'hooks.migrate.diverged',\n      repo: repoPath,\n      action: 'skip',\n      divergedFiles: verification.divergedFiles,\n      outcome: 'diverged',\n      reason: 'Local hooks differ from global canonical',\n    });\n    return { migrated: false, backupPath: undefined, divergedFiles: verification.divergedFiles, skipped: true };\n  }\n\n  if (!(await fs.pathExists(repoHooksRoot))) {\n    console.log(kleur.dim('  hooks: no per-repo hooks to migrate'));\n    return { migrated: false, backupPath: undefined, divergedFiles: [], skipped: false };\n  }\n\n  if (opts.dryRun) {\n    console.log(kleur.cyan('  hooks: would remove:'));\n    console.log(kleur.gray(`    - ${repoHooksRoot}`));\n    return { migrated: false, backupPath: undefined, divergedFiles: [], skipped: false };\n  }\n\n  if (!opts.apply) {\n    console.log(kleur.yellow('  hooks: dry-run (use --apply to execute)'));\n    return { migrated: false, backupPath: undefined, divergedFiles: [], skipped: false };\n  }\n\n  const backupPath = await createTarballBackup(\n    repoHooksRoot,\n    `hooks-${path.basename(repoPath)}`,\n  );\n  console.log(kleur.green(`  hooks: backup created at ${backupPath}`));\n\n  await fs.remove(repoHooksRoot);\n  console.log(kleur.green(`  hooks: removed ${repoHooksRoot}`));\n\n  await appendMigrationLog({\n    timestamp: new Date().toISOString(),\n    component: 'hooks-migration',\n    event: 'hooks.migrate.ok',\n    repo: repoPath,\n    action: 'delete',\n    backupPath,\n    filesRemoved: [repoHooksRoot],\n    outcome: 'ok',\n  });\n\n  await markRepoMigrated(repoPath, { hooksMigrated: true, backupPath });\n\n  return { migrated: true, backupPath, divergedFiles: [], skipped: false };\n}\n\nfunction settingsSidecarPath(hooksBackupPath: string): string {\n  return `${hooksBackupPath}.settings.json`;\n}\n\nasync function cleanSettingsJsonEntries(\n  repoPath: string,\n  opts: { dryRun: boolean; apply: boolean; hooksBackupPath?: string },\n): Promise<void> {\n  const claudeSettingsPath = path.join(repoPath, '.claude', 'settings.json');\n  const preCleanSnapshot: Record<string, unknown> = {};\n\n  const piAgentSettingsPath = path.join(repoPath, '.pi', 'agent', 'settings.json');\n  for (const settingsPath of [claudeSettingsPath, piAgentSettingsPath]) {\n    if (!(await fs.pathExists(settingsPath))) {\n      continue;\n    }\n\n    try {\n      const settings = await fs.readJson(settingsPath) as Record<string, unknown>;\n      const hooks = settings.hooks as Record<string, unknown[]> | undefined;\n\n      if (!hooks) {\n        continue;\n      }\n\n      let changed = false;\n      const cleanedHooks: Record<string, unknown[]> = {};\n\n      for (const [phase, entries] of Object.entries(hooks)) {\n        if (!Array.isArray(entries)) {\n          cleanedHooks[phase] = entries;\n          continue;\n        }\n\n        const cleanedEntries = entries.filter((entry) => {\n          if (typeof entry !== 'object' || entry === null) {\n            return true;\n          }\n\n          const hookEntry = entry as Record<string, unknown>;\n          const source = hookEntry._source as string | undefined;\n          const xtrm = hookEntry._xtrm as Record<string, unknown> | undefined;\n\n          if (source === 'xtrm-global') {\n            changed = true;\n            return false;\n          }\n\n          if (xtrm && typeof xtrm === 'object' && 'hash' in xtrm) {\n            changed = true;\n            return false;\n          }\n\n          return true;\n        });\n\n        cleanedHooks[phase] = cleanedEntries;\n      }\n\n      if (changed) {\n        if (opts.dryRun) {\n          console.log(kleur.cyan(`  settings: would clean xtrm-owned entries from ${path.relative(repoPath, settingsPath)}`));\n        } else if (opts.apply) {\n          preCleanSnapshot[path.relative(repoPath, settingsPath)] = JSON.parse(JSON.stringify(settings));\n          settings.hooks = cleanedHooks;\n          await fs.writeJson(settingsPath, settings, { spaces: 2 });\n          await fs.appendFile(settingsPath, '\\n');\n          console.log(kleur.green(`  settings: cleaned xtrm-owned entries from ${path.relative(repoPath, settingsPath)}`));\n        }\n      }\n    } catch {\n      // Ignore malformed settings files\n    }\n  }\n\n  if (opts.apply && opts.hooksBackupPath && Object.keys(preCleanSnapshot).length > 0) {\n    await fs.writeJson(settingsSidecarPath(opts.hooksBackupPath), preCleanSnapshot, { spaces: 2 });\n    await fs.appendFile(settingsSidecarPath(opts.hooksBackupPath), '\\n');\n  }\n}\n\nasync function restoreSettingsSidecar(\n  repoPath: string,\n  hooksBackupPath: string,\n): Promise<string[]> {\n  const sidecar = settingsSidecarPath(hooksBackupPath);\n  if (!(await fs.pathExists(sidecar))) return [];\n  const snapshot = await fs.readJson(sidecar) as Record<string, unknown>;\n  const restoredFiles: string[] = [];\n  const realRepo = await fs.realpath(repoPath);\n  for (const [relPath, contents] of Object.entries(snapshot)) {\n    const targetPath = path.join(repoPath, relPath);\n    const targetDir = path.dirname(targetPath);\n    await fs.ensureDir(targetDir);\n    const realTargetDir = await fs.realpath(targetDir);\n    const rel = path.relative(realRepo, realTargetDir);\n    if (rel.startsWith('..') || path.isAbsolute(rel)) {\n      throw new Error(`Settings sidecar path escaped repo root: ${targetPath}`);\n    }\n    await fs.writeJson(targetPath, contents, { spaces: 2 });\n    await fs.appendFile(targetPath, '\\n');\n    restoredFiles.push(relPath);\n  }\n  return restoredFiles;\n}\n\nexport function createMigrateCommand(): Command {\n  return new Command('migrate')\n    .description('One-time per-repo cleanup: migrate skills/hooks to global scope')\n    .argument('[target]', 'Migration target: skills | hooks | all', 'all')\n    .option('--dry-run', 'Preview changes without making any modifications', false)\n    .option('--apply', 'Execute migration (destructive)', false)\n    .option('--repo <path>', 'Target repository path (default: current working directory)')\n    .option('-y, --yes', 'Skip confirmation prompt', false)\n    .option('--force-source', 'Override source-repo guard (maintainer escape hatch)', false)\n    .option('--restore <backup>', 'Restore per-repo skills/hooks from a migration tarball')\n    .option('--force', 'Override target-exists refusal on --restore', false)\n    .action(async (target: string, opts: MigrateOptions) => {\n      try {\n        const validTargets = ['skills', 'hooks', 'skills-layout', 'all'];\n        if (!validTargets.includes(target)) {\n          console.error(\n            kleur.red(\n              `Invalid target '${target}'. Must be one of: ${validTargets.join(', ')}`,\n            ),\n          );\n          process.exitCode = 1;\n          return;\n        }\n\n        if (!opts.dryRun && !opts.apply) {\n          console.log(kleur.yellow('\\n  ⚠  This is a DRY RUN. No changes will be made.'));\n          console.log(kleur.yellow('  Use --apply to execute the migration.\\n'));\n          opts.dryRun = true;\n        }\n\n        const repoPath = opts.repo ? path.resolve(opts.repo) : process.cwd();\n\n        const xtrmDir = path.join(repoPath, '.xtrm');\n        if (!(await fs.pathExists(xtrmDir))) {\n          console.error(\n            kleur.red(`Not an xtrm-managed repository: ${repoPath}`),\n          );\n          process.exitCode = 1;\n          return;\n        }\n\n        if (opts.apply && !opts.forceSource) {\n          const sourceMarker = await detectSourceRepoMarker(repoPath);\n          if (sourceMarker) {\n            console.error(\n              kleur.red(\n                `Refusing to migrate xtrm-tools source repo ${repoPath}: ${sourceMarker}. Migration is intended for consumers.`,\n              ),\n            );\n            process.exitCode = 1;\n            return;\n          }\n        }\n\n        if (opts.restore) {\n          if (!opts.forceSource) {\n            const sourceMarker = await detectSourceRepoMarker(repoPath);\n            if (sourceMarker) {\n              console.error(\n                kleur.red(\n                  `Refusing to restore into xtrm-tools source repo ${repoPath}: ${sourceMarker}.`,\n                ),\n              );\n              process.exitCode = 1;\n              return;\n            }\n          }\n          try {\n            const { component, targetDir } = await restoreBackup(repoPath, opts.restore, {\n              dryRun: opts.dryRun ?? false,\n              force: opts.force ?? false,\n            });\n            if (opts.dryRun) {\n              console.log(kleur.green(`\\n  ✓ Restore dry-run complete (${component})\\n`));\n            } else {\n              console.log(kleur.green(`  ${component}: restored to ${targetDir}`));\n              if (component === 'hooks') {\n                const restoredSettings = await restoreSettingsSidecar(repoPath, opts.restore);\n                for (const rel of restoredSettings) {\n                  console.log(kleur.green(`  settings: restored ${rel}`));\n                }\n              }\n              await markRepoMigrated(repoPath, {\n                skillsMigrated: component === 'skills' ? false : undefined,\n                hooksMigrated: component === 'hooks' ? false : undefined,\n              });\n              await appendMigrationLog({\n                timestamp: new Date().toISOString(),\n                component: component === 'skills' ? 'skills-migration' : 'hooks-migration',\n                event: `${component}.restore.ok`,\n                repo: repoPath,\n                backupPath: opts.restore,\n                outcome: 'ok',\n              });\n              console.log(kleur.green(`\\n  ✓ Restore complete\\n`));\n            }\n            process.exitCode = 0;\n            return;\n          } catch (error) {\n            console.error(\n              kleur.red(`✗ Restore failed: ${error instanceof Error ? error.message : String(error)}`),\n            );\n            process.exitCode = 1;\n            return;\n          }\n        }\n\n        if (target === 'skills-layout') {\n          if (opts.apply && !opts.yes) {\n            console.error(kleur.red('  skills-layout: --apply requires --yes because migration moves packs and removes legacy paths.'));\n            process.exitCode = 1;\n            return;\n          }\n          await migrateSkillsLayout(repoPath, {\n            dryRun: opts.dryRun ?? false,\n            apply: opts.apply ?? false,\n          });\n          process.exitCode = 0;\n          return;\n        }\n\n        console.log(kleur.bold(`\\n  Migrating ${path.basename(repoPath)}`));\n        console.log(kleur.dim(`  Target: ${target}`));\n        console.log(kleur.dim(`  Mode: ${opts.dryRun ? 'dry-run' : 'apply'}`));\n        console.log(kleur.dim(`  Repo: ${repoPath}\\n`));\n\n        if (!opts.dryRun && opts.apply && !opts.yes) {\n          const readline = await import('node:readline');\n          const rl = readline.createInterface({\n            input: process.stdin,\n            output: process.stdout,\n          });\n\n          const answer = await new Promise<string>((resolve) => {\n            rl.question(\n              kleur.yellow('  ⚠  This will DELETE per-repo skills/hooks. Continue? [y/N] '),\n              resolve,\n            );\n          });\n          rl.close();\n\n          if (answer.toLowerCase() !== 'y') {\n            console.log(kleur.dim('  Migration cancelled.'));\n            process.exitCode = 0;\n            return;\n          }\n        }\n\n        let skillsResult: { migrated: boolean; backupPath?: string; divergedFiles: string[] } = { migrated: false, backupPath: undefined, divergedFiles: [] };\n        let hooksResult: { migrated: boolean; backupPath?: string; divergedFiles: string[]; skipped: boolean } = { migrated: false, backupPath: undefined, divergedFiles: [], skipped: false };\n\n        if (target === 'skills' || target === 'all') {\n          if (!shouldUseGlobalSkills()) {\n            console.log(\n              kleur.yellow(\n                '  ⚠  XTRM_GLOBAL_SKILLS not set. Migration may be premature.',\n              ),\n            );\n          }\n          skillsResult = await migrateSkills(repoPath, {\n            dryRun: opts.dryRun ?? false,\n            apply: opts.apply ?? false,\n          });\n        }\n\n        if (target === 'hooks' || target === 'all') {\n          if (!shouldUseGlobalHooks()) {\n            console.log(\n              kleur.yellow(\n                '  ⚠  XTRM_GLOBAL_HOOKS not set. Migration may be premature.',\n              ),\n            );\n          }\n          hooksResult = await migrateHooks(repoPath, {\n            dryRun: opts.dryRun ?? false,\n            apply: opts.apply ?? false,\n          });\n        }\n\n        if ((target === 'hooks' || target === 'all') && hooksResult.migrated) {\n          await cleanSettingsJsonEntries(repoPath, {\n            dryRun: opts.dryRun ?? false,\n            apply: opts.apply ?? false,\n            hooksBackupPath: hooksResult.backupPath,\n          });\n        }\n\n        console.log(kleur.green('\\n  ✓ Migration complete\\n'));\n\n        if (opts.dryRun) {\n          console.log(\n            kleur.dim(\n              '  Run with --apply to execute. Backups will be created at ~/.xtrm/migration-backups/',\n            ),\n          );\n        }\n\n        process.exitCode = 0;\n      } catch (error) {\n        console.error(\n          kleur.red(`✗ Migration failed: ${error instanceof Error ? error.message : String(error)}`),\n        );\n        await appendMigrationLog({\n          timestamp: new Date().toISOString(),\n          component: 'skills-migration',\n          event: 'migrate.error',\n          repo: opts?.repo ?? process.cwd(),\n          outcome: 'error',\n          reason: error instanceof Error ? error.message : String(error),\n        });\n        process.exitCode = 1;\n      }\n    });\n}\n","import fs from 'fs-extra';\nimport os from 'node:os';\nimport path from 'node:path';\n\ninterface KnownRepoEntry {\n  migratedAt: string;\n  skillsMigrated: boolean;\n  hooksMigrated: boolean;\n  backupPath?: string;\n}\n\ninterface KnownReposData {\n  repos: Record<string, KnownRepoEntry>;\n}\n\nfunction resolveKnownReposPath(): string {\n  return path.join(os.homedir(), '.xtrm', 'known-repos.json');\n}\n\nasync function readKnownRepos(): Promise<KnownReposData> {\n  const knownReposPath = resolveKnownReposPath();\n  if (!await fs.pathExists(knownReposPath)) {\n    return { repos: {} };\n  }\n\n  try {\n    const data = await fs.readJson(knownReposPath) as KnownReposData;\n    return { repos: data.repos ?? {} };\n  } catch {\n    return { repos: {} };\n  }\n}\n\nasync function writeKnownRepos(data: KnownReposData): Promise<void> {\n  const knownReposPath = resolveKnownReposPath();\n  await fs.ensureDir(path.dirname(knownReposPath));\n  await fs.writeJson(knownReposPath, data, { spaces: 2 });\n  await fs.appendFile(knownReposPath, '\\n');\n}\n\nexport async function markRepoMigrated(\n  repoPath: string,\n  opts: { skillsMigrated?: boolean; hooksMigrated?: boolean; backupPath?: string },\n): Promise<void> {\n  const data = await readKnownRepos();\n  const normalizedPath = path.resolve(repoPath);\n\n  const existing = data.repos[normalizedPath] ?? {\n    migratedAt: new Date().toISOString(),\n    skillsMigrated: false,\n    hooksMigrated: false,\n  };\n\n  data.repos[normalizedPath] = {\n    ...existing,\n    migratedAt: new Date().toISOString(),\n    skillsMigrated: opts.skillsMigrated ?? existing.skillsMigrated,\n    hooksMigrated: opts.hooksMigrated ?? existing.hooksMigrated,\n    backupPath: opts.backupPath ?? existing.backupPath,\n  };\n\n  await writeKnownRepos(data);\n}\n\nexport async function isRepoMigrated(\n  repoPath: string,\n  opts: { skills?: boolean; hooks?: boolean },\n): Promise<boolean> {\n  const data = await readKnownRepos();\n  const normalizedPath = path.resolve(repoPath);\n  const entry = data.repos[normalizedPath];\n\n  if (!entry) {\n    return false;\n  }\n\n  if (opts.skills && !entry.skillsMigrated) {\n    return false;\n  }\n\n  if (opts.hooks && !entry.hooksMigrated) {\n    return false;\n  }\n\n  return true;\n}\n\nexport async function getKnownRepos(): Promise<Record<string, KnownRepoEntry>> {\n  const data = await readKnownRepos();\n  return data.repos;\n}\n","import kleur from 'kleur';\n\n// ── ASCII art ───────────────────────────────────────────────────────────────\nconst ART = [\n    ' ██╗  ██╗████████╗██████╗ ███╗   ███╗    ████████╗ ██████╗  ██████╗ ██╗     ███████╗',\n    ' ╚██╗██╔╝╚══██╔══╝██╔══██╗████╗ ████║    ╚══██╔══╝██╔═══██╗██╔═══██╗██║     ██╔════╝',\n    '  ╚███╔╝    ██║   ██████╔╝██╔████╔██║       ██║   ██║   ██║██║   ██║██║     ███████╗',\n    '  ██╔██╗    ██║   ██╔══██╗██║╚██╔╝██║       ██║   ██║   ██║██║   ██║██║     ╚════██║',\n    ' ██╔╝ ██╗   ██║   ██║  ██║██║ ╚═╝ ██║       ██║   ╚██████╔╝╚██████╔╝███████╗███████║',\n    ' ╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝     ╚═╝       ╚═╝    ╚═════╝  ╚═════╝ ╚══════╝╚══════╝',\n];\n\nconst ART_WIDTH = 84;\nconst TAGLINE = 'agent infrastructure layer — runtimes, skills,\\n  hooks, extensions, packages';\n\n// ── Detection helpers ───────────────────────────────────────────────────────\n\nfunction isTTY(): boolean { return Boolean(process.stdout.isTTY); }\n\nfunction hasColor(): boolean {\n    if (process.env.NO_COLOR !== undefined) return false;\n    if (process.env.FORCE_COLOR !== undefined) return true;\n    if (process.env.TERM === 'dumb') return false;\n    return isTTY();\n}\n\nfunction isCI(): boolean { return Boolean(process.env.CI); }\nfunction isDumb(): boolean { return process.env.TERM === 'dumb'; }\nfunction columns(): number { return process.stdout.columns ?? 80; }\n\nfunction hasUnicode(): boolean {\n    if (process.platform === 'win32') {\n        return Boolean(process.env.WT_SESSION || process.env.TERM_PROGRAM);\n    }\n    const lang = (process.env.LANG ?? process.env.LC_ALL ?? process.env.LC_CTYPE ?? '').toUpperCase();\n    return lang.includes('UTF') || lang === '';\n}\n\nfunction hasTruecolor(): boolean {\n    const ct = (process.env.COLORTERM ?? '').toLowerCase();\n    return ct === 'truecolor' || ct === '24bit';\n}\n\n// ── Tier selection ──────────────────────────────────────────────────────────\n\ntype Tier = 0 | 1 | 2 | 3 | 4;\n\nfunction selectTier(): Tier {\n    if (!isTTY() || isDumb() || isCI()) return 4;\n    if (!hasColor()) return 4;\n    if (!hasUnicode()) return 3;\n    const cols = columns();\n    if (cols < 40) return 4;\n    if (cols < 85) return 2;\n    if (hasTruecolor()) return 0;\n    return 1;\n}\n\n// ── Typewriter tagline (bold-white, 42ms per char) ─────────────────────────\n\nfunction delay(ms: number): Promise<void> {\n    return new Promise(r => setTimeout(r, ms));\n}\n\nasync function typewriterTagline(text: string): Promise<void> {\n    const CHAR_DELAY = 42; // ms per character\n    const prefix = `  \\x1b[2m\\u2014\\x1b[0m  \\x1b[1m\\x1b[37m`;\n    const suffix = `\\x1b[0m  \\x1b[2m\\u2014\\x1b[0m`;\n\n    for (const line of text.split('\\n')) {\n        process.stdout.write(prefix);\n        for (const ch of line) {\n            process.stdout.write(ch);\n            await delay(CHAR_DELAY);\n        }\n        process.stdout.write(suffix + '\\n');\n    }\n}\n\n// ── Truecolor gradient (item 7: 170°→230° teal→indigo, sat=0.6) ───────────\n\nconst HUE_START = 170;\nconst HUE_END   = 230;\nconst SAT       = 0.6;\nconst LIG       = 0.72;\n\nfunction hslToRgb(h: number, s: number, l: number): [number, number, number] {\n    const a = s * Math.min(l, 1 - l);\n    const f = (n: number): number => {\n        const k = (n + h / 30) % 12;\n        return l - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));\n    };\n    return [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n}\n\nconst RESET = '\\x1b[0m';\n\nfunction gradientLine(line: string): string {\n    let out = '';\n    const len = line.length;\n    for (let i = 0; i < len; i++) {\n        const t = len > 1 ? i / (len - 1) : 0;\n        const hue = HUE_START + t * (HUE_END - HUE_START);\n        const [r, g, b] = hslToRgb(hue, SAT, LIG);\n        out += `\\x1b[38;2;${r};${g};${b}m` + line[i];\n    }\n    return out + RESET;\n}\n\n// ── Renderers ───────────────────────────────────────────────────────────────\n\nasync function renderTier0(version: string): Promise<void> {\n    const rule = '\\x1b[2m ' + '─'.repeat(ART_WIDTH - 1) + '\\x1b[0m';\n\n    process.stdout.write('\\n');\n    for (const line of ART) {\n        process.stdout.write(gradientLine(line) + '\\n');\n    }\n    process.stdout.write(rule + '\\n');\n    process.stdout.write('  \\x1b[2mv' + version + '\\x1b[0m\\n');\n    await typewriterTagline(TAGLINE);\n}\n\nfunction renderTier1(version: string): void {\n    console.log('');\n    for (const line of ART) { console.log(kleur.cyan(line)); }\n    console.log(kleur.dim(' ' + '─'.repeat(ART_WIDTH - 1)));\n    console.log(kleur.dim('  v' + version));\n    console.log(\n        '  ' + kleur.dim('\\u2014') + '  ' +\n        kleur.bold().white(TAGLINE) +\n        '  ' + kleur.dim('\\u2014'),\n    );\n    console.log('');\n}\n\nfunction renderTier2(version: string): void {\n    console.log('');\n    console.log(\n        kleur.cyan('  ◈  ') +\n        kleur.bold().white('xtrm-tools') +\n        kleur.dim('  v' + version),\n    );\n    console.log(kleur.dim(`     ${TAGLINE}`));\n    console.log('');\n}\n\nfunction renderTier3(version: string): void {\n    console.log('');\n    console.log(kleur.bold('  xtrm-tools') + kleur.dim(' v' + version));\n    console.log(kleur.dim(`  ${TAGLINE}`));\n    console.log('');\n}\n\nfunction renderTier4(version: string): void {\n    console.log('');\n    console.log('xtrm-tools v' + version);\n    console.log(TAGLINE);\n    console.log('');\n}\n\n// ── Public API ──────────────────────────────────────────────────────────────\n\nexport async function printBanner(version: string): Promise<void> {\n    const tier = selectTier();\n    switch (tier) {\n        case 0: await renderTier0(version); break;\n        case 1: renderTier1(version); break;\n        case 2: renderTier2(version); break;\n        case 3: renderTier3(version); break;\n        case 4: renderTier4(version); return;\n    }\n}\n"],"mappings":"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,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,SAAS,OAAO;AAG5jE,IAAM,kBAAkB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAGjE,IAAM,kBAAkB,CAAC,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK;AAGvH,IAAM,eAAe,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,OAAO,OAAO,KAAK;AAGjG,IAAM,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,MAAM;AAAA;AAAA;;;ACfrwD,IAOa;AAPb,IAAAC,kBAAA;AAAA;AAAA;AAOO,IAAM,YAAY,CAAC,QAAQ,cAAc;AAC/C,UAAI,MAAM;AACV,UAAI,OAAO,KAAK,MAAM,OAAO,SAAS,CAAC,IAAI;AAC3C,aAAO,OAAO,MAAM;AACnB,cAAM,MAAM,KAAK,OAAO,MAAM,QAAQ,CAAC;AACvC,cAAM,IAAI,MAAM;AAChB,YAAI,YAAY,OAAO,CAAC,GAAG;AAC1B,iBAAO,MAAM;AAAA,QACd,WAAW,YAAY,OAAO,IAAI,CAAC,GAAG;AACrC,gBAAM,MAAM;AAAA,QACb,OAAO;AACN,iBAAO;AAAA,QACR;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAAA;AAAA;;;ACGA,SAAS,sBAAsB,QAAQ;AACtC,MAAI,gBAAgB,OAAO,CAAC;AAC5B,MAAI,cAAc,OAAO,CAAC;AAE1B,WAAS,QAAQ,GAAG,QAAQ,OAAO,QAAQ,SAAS,GAAG;AACtD,UAAM,QAAQ,OAAO,KAAK;AAC1B,UAAM,MAAM,OAAO,QAAQ,CAAC;AAE5B,QACC,sBAAsB,SACnB,sBAAsB,KACxB;AACD,aAAO,CAAC,OAAO,GAAG;AAAA,IACnB;AAEA,QAAK,MAAM,QAAU,cAAc,eAAgB;AAClD,sBAAgB;AAChB,oBAAc;AAAA,IACf;AAAA,EACD;AAEA,SAAO,CAAC,eAAe,WAAW;AACnC;AAhDA,IASM,2BACA,2BACA,2BACA,2BACA,2BACA,2BACA,wBACA,wBACA,sBACA,sBAEA,oBACC,mBAAmB,iBA6Bb,aAWA,aAiCA;AA9Fb;AAAA;AAAA;AAAA;AAOA,IAAAC;AAEA,IAAM,4BAA4B,gBAAgB,CAAC;AACnD,IAAM,4BAA4B,gBAAgB,GAAG,EAAE;AACvD,IAAM,4BAA4B,gBAAgB,CAAC;AACnD,IAAM,4BAA4B,gBAAgB,GAAG,EAAE;AACvD,IAAM,4BAA4B,gBAAgB,CAAC;AACnD,IAAM,4BAA4B,gBAAgB,GAAG,EAAE;AACvD,IAAM,yBAAyB,aAAa,CAAC;AAC7C,IAAM,yBAAyB,aAAa,GAAG,EAAE;AACjD,IAAM,uBAAuB,WAAW,CAAC;AACzC,IAAM,uBAAuB,WAAW,GAAG,EAAE;AAE7C,IAAM,qBAAqB;AAC3B,IAAM,CAAC,mBAAmB,mBAAmB,sBAAsB,UAAU;AA6BtE,IAAM,cAAc,eAAa;AACvC,UACC,YAAY,6BACT,YAAY,2BACd;AACD,eAAO;AAAA,MACR;AAEA,aAAO,UAAU,iBAAiB,SAAS;AAAA,IAC5C;AAEO,IAAM,cAAc,eAAa;AACvC,UACC,YAAY,6BACT,YAAY,2BACd;AACD,eAAO;AAAA,MACR;AAEA,aAAO,UAAU,iBAAiB,SAAS;AAAA,IAC5C;AAwBO,IAAM,SAAS,eAAa;AAClC,UACC,aAAa,qBACV,aAAa,iBACf;AACD,eAAO;AAAA,MACR;AAEA,UACC,YAAY,wBACT,YAAY,sBACd;AACD,eAAO;AAAA,MACR;AAEA,aAAO,UAAU,YAAY,SAAS;AAAA,IACvC;AAAA;AAAA;;;AC5GA,SAAS,SAAS,WAAW;AAC5B,MAAI,CAAC,OAAO,cAAc,SAAS,GAAG;AACrC,UAAM,IAAI,UAAU,gCAAgC,OAAO,SAAS,KAAK;AAAA,EAC1E;AACD;AAQO,SAAS,eAAe,WAAW,EAAC,kBAAkB,MAAK,IAAI,CAAC,GAAG;AACzE,WAAS,SAAS;AAElB,MACC,YAAY,SAAS,KAClB,OAAO,SAAS,KACf,mBAAmB,YAAY,SAAS,GAC3C;AACD,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AA1BA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA,qCAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACE,MAAQ;AAAA,MACR,SAAW;AAAA,MACX,aAAe;AAAA,MACf,MAAQ;AAAA,MACR,OAAS;AAAA,MACT,SAAW;AAAA,QACT,KAAK;AAAA,UACH,OAAS;AAAA,UACT,SAAW;AAAA,UACX,SAAW;AAAA,QACb;AAAA,QACA,YAAY;AAAA,QACZ,eAAe;AAAA,QACf,qBAAqB;AAAA,QACrB,wBAAwB;AAAA,QACxB,qBAAqB;AAAA,QACrB,wBAAwB;AAAA,QACxB,kBAAkB;AAAA,MACpB;AAAA,MACA,SAAW;AAAA,QACT,aAAa;AAAA,QACb,MAAQ;AAAA,QACR,SAAW;AAAA,QACX,MAAQ;AAAA,QACR,iBAAiB;AAAA,QACjB,YAAc;AAAA,QACd,SAAW;AAAA,MACb;AAAA,MACA,YAAc;AAAA,QACZ,MAAQ;AAAA,QACR,KAAO;AAAA,MACT;AAAA,MACA,UAAY;AAAA,MACZ,SAAW;AAAA,MACX,UAAY;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA,gBAAkB;AAAA,MAClB,SAAW;AAAA,MACX,iBAAmB;AAAA,QACjB,eAAe;AAAA,QACf,SAAW;AAAA,QACX,OAAS;AAAA,QACT,UAAY;AAAA,QACZ,oBAAoB;AAAA,QACpB,KAAO;AAAA,QACP,YAAc;AAAA,MAChB;AAAA,MACA,SAAW;AAAA,QACT,MAAQ;AAAA,MACV;AAAA,MACA,SAAW;AAAA,QACT,IAAM;AAAA,MACR;AAAA,IACF;AAAA;AAAA;;;AC7DA;AAAA,oCAAAC,UAAAC,SAAA;AAAA;AAAA,QAAMC,OAAK,QAAQ,IAAI;AACvB,QAAMC,SAAO,QAAQ,MAAM;AAC3B,QAAMC,OAAK,QAAQ,IAAI;AACvB,QAAMC,UAAS,QAAQ,QAAQ;AAC/B,QAAM,cAAc;AAEpB,QAAMC,WAAU,YAAY;AAE5B,QAAM,OAAO;AAGb,aAASC,OAAO,KAAK;AACnB,YAAM,MAAM,CAAC;AAGb,UAAI,QAAQ,IAAI,SAAS;AAGzB,cAAQ,MAAM,QAAQ,WAAW,IAAI;AAErC,UAAI;AACJ,cAAQ,QAAQ,KAAK,KAAK,KAAK,MAAM,MAAM;AACzC,cAAM,MAAM,MAAM,CAAC;AAGnB,YAAI,QAAS,MAAM,CAAC,KAAK;AAGzB,gBAAQ,MAAM,KAAK;AAGnB,cAAM,aAAa,MAAM,CAAC;AAG1B,gBAAQ,MAAM,QAAQ,0BAA0B,IAAI;AAGpD,YAAI,eAAe,KAAK;AACtB,kBAAQ,MAAM,QAAQ,QAAQ,IAAI;AAClC,kBAAQ,MAAM,QAAQ,QAAQ,IAAI;AAAA,QACpC;AAGA,YAAI,GAAG,IAAI;AAAA,MACb;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,YAAa,SAAS;AAC7B,gBAAU,WAAW,CAAC;AAEtB,YAAM,YAAY,WAAW,OAAO;AACpC,cAAQ,OAAO;AACf,YAAM,SAAS,aAAa,aAAa,OAAO;AAChD,UAAI,CAAC,OAAO,QAAQ;AAClB,cAAM,MAAM,IAAI,MAAM,8BAA8B,SAAS,wBAAwB;AACrF,YAAI,OAAO;AACX,cAAM;AAAA,MACR;AAIA,YAAM,OAAO,WAAW,OAAO,EAAE,MAAM,GAAG;AAC1C,YAAM,SAAS,KAAK;AAEpB,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,YAAI;AAEF,gBAAM,MAAM,KAAK,CAAC,EAAE,KAAK;AAGzB,gBAAM,QAAQ,cAAc,QAAQ,GAAG;AAGvC,sBAAY,aAAa,QAAQ,MAAM,YAAY,MAAM,GAAG;AAE5D;AAAA,QACF,SAASC,SAAO;AAEd,cAAI,IAAI,KAAK,QAAQ;AACnB,kBAAMA;AAAA,UACR;AAAA,QAEF;AAAA,MACF;AAGA,aAAO,aAAa,MAAM,SAAS;AAAA,IACrC;AAEA,aAAS,MAAO,SAAS;AACvB,cAAQ,IAAI,WAAWF,QAAO,WAAW,OAAO,EAAE;AAAA,IACpD;AAEA,aAAS,OAAQ,SAAS;AACxB,cAAQ,IAAI,WAAWA,QAAO,YAAY,OAAO,EAAE;AAAA,IACrD;AAEA,aAAS,KAAM,SAAS;AACtB,cAAQ,IAAI,WAAWA,QAAO,KAAK,OAAO,EAAE;AAAA,IAC9C;AAEA,aAAS,WAAY,SAAS;AAE5B,UAAI,WAAW,QAAQ,cAAc,QAAQ,WAAW,SAAS,GAAG;AAClE,eAAO,QAAQ;AAAA,MACjB;AAGA,UAAI,QAAQ,IAAI,cAAc,QAAQ,IAAI,WAAW,SAAS,GAAG;AAC/D,eAAO,QAAQ,IAAI;AAAA,MACrB;AAGA,aAAO;AAAA,IACT;AAEA,aAAS,cAAe,QAAQ,WAAW;AAEzC,UAAI;AACJ,UAAI;AACF,cAAM,IAAI,IAAI,SAAS;AAAA,MACzB,SAASE,SAAO;AACd,YAAIA,QAAM,SAAS,mBAAmB;AACpC,gBAAM,MAAM,IAAI,MAAM,4IAA4I;AAClK,cAAI,OAAO;AACX,gBAAM;AAAA,QACR;AAEA,cAAMA;AAAA,MACR;AAGA,YAAM,MAAM,IAAI;AAChB,UAAI,CAAC,KAAK;AACR,cAAM,MAAM,IAAI,MAAM,sCAAsC;AAC5D,YAAI,OAAO;AACX,cAAM;AAAA,MACR;AAGA,YAAM,cAAc,IAAI,aAAa,IAAI,aAAa;AACtD,UAAI,CAAC,aAAa;AAChB,cAAM,MAAM,IAAI,MAAM,8CAA8C;AACpE,YAAI,OAAO;AACX,cAAM;AAAA,MACR;AAGA,YAAM,iBAAiB,gBAAgB,YAAY,YAAY,CAAC;AAChE,YAAM,aAAa,OAAO,OAAO,cAAc;AAC/C,UAAI,CAAC,YAAY;AACf,cAAM,MAAM,IAAI,MAAM,2DAA2D,cAAc,2BAA2B;AAC1H,YAAI,OAAO;AACX,cAAM;AAAA,MACR;AAEA,aAAO,EAAE,YAAY,IAAI;AAAA,IAC3B;AAEA,aAAS,WAAY,SAAS;AAC5B,UAAI,oBAAoB;AAExB,UAAI,WAAW,QAAQ,QAAQ,QAAQ,KAAK,SAAS,GAAG;AACtD,YAAI,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC/B,qBAAW,YAAY,QAAQ,MAAM;AACnC,gBAAIN,KAAG,WAAW,QAAQ,GAAG;AAC3B,kCAAoB,SAAS,SAAS,QAAQ,IAAI,WAAW,GAAG,QAAQ;AAAA,YAC1E;AAAA,UACF;AAAA,QACF,OAAO;AACL,8BAAoB,QAAQ,KAAK,SAAS,QAAQ,IAAI,QAAQ,OAAO,GAAG,QAAQ,IAAI;AAAA,QACtF;AAAA,MACF,OAAO;AACL,4BAAoBC,OAAK,QAAQ,QAAQ,IAAI,GAAG,YAAY;AAAA,MAC9D;AAEA,UAAID,KAAG,WAAW,iBAAiB,GAAG;AACpC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,aAAc,SAAS;AAC9B,aAAO,QAAQ,CAAC,MAAM,MAAMC,OAAK,KAAKC,KAAG,QAAQ,GAAG,QAAQ,MAAM,CAAC,CAAC,IAAI;AAAA,IAC1E;AAEA,aAAS,aAAc,SAAS;AAC9B,YAAM,QAAQ,QAAQ,WAAW,QAAQ,KAAK;AAC9C,YAAM,QAAQ,WAAW,WAAW,UAAU,QAAQ,QAAQ;AAE9D,UAAI,SAAS,CAAC,OAAO;AACnB,aAAK,uCAAuC;AAAA,MAC9C;AAEA,YAAM,SAAS,aAAa,YAAY,OAAO;AAE/C,UAAI,aAAa,QAAQ;AACzB,UAAI,WAAW,QAAQ,cAAc,MAAM;AACzC,qBAAa,QAAQ;AAAA,MACvB;AAEA,mBAAa,SAAS,YAAY,QAAQ,OAAO;AAEjD,aAAO,EAAE,OAAO;AAAA,IAClB;AAEA,aAAS,aAAc,SAAS;AAC9B,YAAM,aAAaD,OAAK,QAAQ,QAAQ,IAAI,GAAG,MAAM;AACrD,UAAI,WAAW;AACf,YAAM,QAAQ,QAAQ,WAAW,QAAQ,KAAK;AAC9C,YAAM,QAAQ,WAAW,WAAW,UAAU,QAAQ,QAAQ;AAE9D,UAAI,WAAW,QAAQ,UAAU;AAC/B,mBAAW,QAAQ;AAAA,MACrB,OAAO;AACL,YAAI,OAAO;AACT,iBAAO,oDAAoD;AAAA,QAC7D;AAAA,MACF;AAEA,UAAI,cAAc,CAAC,UAAU;AAC7B,UAAI,WAAW,QAAQ,MAAM;AAC3B,YAAI,CAAC,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAChC,wBAAc,CAAC,aAAa,QAAQ,IAAI,CAAC;AAAA,QAC3C,OAAO;AACL,wBAAc,CAAC;AACf,qBAAW,YAAY,QAAQ,MAAM;AACnC,wBAAY,KAAK,aAAa,QAAQ,CAAC;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAIA,UAAI;AACJ,YAAM,YAAY,CAAC;AACnB,iBAAWA,UAAQ,aAAa;AAC9B,YAAI;AAEF,gBAAM,SAAS,aAAa,MAAMD,KAAG,aAAaC,QAAM,EAAE,SAAS,CAAC,CAAC;AAErE,uBAAa,SAAS,WAAW,QAAQ,OAAO;AAAA,QAClD,SAAS,GAAG;AACV,cAAI,OAAO;AACT,mBAAO,kBAAkBA,MAAI,IAAI,EAAE,OAAO,EAAE;AAAA,UAC9C;AACA,sBAAY;AAAA,QACd;AAAA,MACF;AAEA,UAAI,aAAa,QAAQ;AACzB,UAAI,WAAW,QAAQ,cAAc,MAAM;AACzC,qBAAa,QAAQ;AAAA,MACvB;AAEA,mBAAa,SAAS,YAAY,WAAW,OAAO;AAEpD,UAAI,SAAS,CAAC,OAAO;AACnB,cAAM,YAAY,OAAO,KAAK,SAAS,EAAE;AACzC,cAAM,aAAa,CAAC;AACpB,mBAAW,YAAY,aAAa;AAClC,cAAI;AACF,kBAAM,WAAWA,OAAK,SAAS,QAAQ,IAAI,GAAG,QAAQ;AACtD,uBAAW,KAAK,QAAQ;AAAA,UAC1B,SAAS,GAAG;AACV,gBAAI,OAAO;AACT,qBAAO,kBAAkB,QAAQ,IAAI,EAAE,OAAO,EAAE;AAAA,YAClD;AACA,wBAAY;AAAA,UACd;AAAA,QACF;AAEA,aAAK,kBAAkB,SAAS,UAAU,WAAW,KAAK,GAAG,CAAC,EAAE;AAAA,MAClE;AAEA,UAAI,WAAW;AACb,eAAO,EAAE,QAAQ,WAAW,OAAO,UAAU;AAAA,MAC/C,OAAO;AACL,eAAO,EAAE,QAAQ,UAAU;AAAA,MAC7B;AAAA,IACF;AAGA,aAASM,QAAQ,SAAS;AAExB,UAAI,WAAW,OAAO,EAAE,WAAW,GAAG;AACpC,eAAO,aAAa,aAAa,OAAO;AAAA,MAC1C;AAEA,YAAM,YAAY,WAAW,OAAO;AAGpC,UAAI,CAAC,WAAW;AACd,cAAM,+DAA+D,SAAS,+BAA+B;AAE7G,eAAO,aAAa,aAAa,OAAO;AAAA,MAC1C;AAEA,aAAO,aAAa,aAAa,OAAO;AAAA,IAC1C;AAEA,aAAS,QAAS,WAAW,QAAQ;AACnC,YAAM,MAAM,OAAO,KAAK,OAAO,MAAM,GAAG,GAAG,KAAK;AAChD,UAAI,aAAa,OAAO,KAAK,WAAW,QAAQ;AAEhD,YAAM,QAAQ,WAAW,SAAS,GAAG,EAAE;AACvC,YAAM,UAAU,WAAW,SAAS,GAAG;AACvC,mBAAa,WAAW,SAAS,IAAI,GAAG;AAExC,UAAI;AACF,cAAM,SAASJ,QAAO,iBAAiB,eAAe,KAAK,KAAK;AAChE,eAAO,WAAW,OAAO;AACzB,eAAO,GAAG,OAAO,OAAO,UAAU,CAAC,GAAG,OAAO,MAAM,CAAC;AAAA,MACtD,SAASG,SAAO;AACd,cAAM,UAAUA,mBAAiB;AACjC,cAAM,mBAAmBA,QAAM,YAAY;AAC3C,cAAM,mBAAmBA,QAAM,YAAY;AAE3C,YAAI,WAAW,kBAAkB;AAC/B,gBAAM,MAAM,IAAI,MAAM,6DAA6D;AACnF,cAAI,OAAO;AACX,gBAAM;AAAA,QACR,WAAW,kBAAkB;AAC3B,gBAAM,MAAM,IAAI,MAAM,iDAAiD;AACvE,cAAI,OAAO;AACX,gBAAM;AAAA,QACR,OAAO;AACL,gBAAMA;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAGA,aAAS,SAAU,YAAY,QAAQ,UAAU,CAAC,GAAG;AACnD,YAAM,QAAQ,QAAQ,WAAW,QAAQ,KAAK;AAC9C,YAAM,WAAW,QAAQ,WAAW,QAAQ,QAAQ;AAEpD,UAAI,OAAO,WAAW,UAAU;AAC9B,cAAM,MAAM,IAAI,MAAM,gFAAgF;AACtG,YAAI,OAAO;AACX,cAAM;AAAA,MACR;AAGA,iBAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACrC,YAAI,OAAO,UAAU,eAAe,KAAK,YAAY,GAAG,GAAG;AACzD,cAAI,aAAa,MAAM;AACrB,uBAAW,GAAG,IAAI,OAAO,GAAG;AAAA,UAC9B;AAEA,cAAI,OAAO;AACT,gBAAI,aAAa,MAAM;AACrB,qBAAO,IAAI,GAAG,0CAA0C;AAAA,YAC1D,OAAO;AACL,qBAAO,IAAI,GAAG,8CAA8C;AAAA,YAC9D;AAAA,UACF;AAAA,QACF,OAAO;AACL,qBAAW,GAAG,IAAI,OAAO,GAAG;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,QAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAAC;AAAA,MACA;AAAA,MACA,OAAAF;AAAA,MACA;AAAA,IACF;AAEA,IAAAN,QAAO,QAAQ,eAAe,aAAa;AAC3C,IAAAA,QAAO,QAAQ,eAAe,aAAa;AAC3C,IAAAA,QAAO,QAAQ,cAAc,aAAa;AAC1C,IAAAA,QAAO,QAAQ,SAAS,aAAa;AACrC,IAAAA,QAAO,QAAQ,UAAU,aAAa;AACtC,IAAAA,QAAO,QAAQ,QAAQ,aAAa;AACpC,IAAAA,QAAO,QAAQ,WAAW,aAAa;AAEvC,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACjYjB,IAAAS,iBAAA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAAA,QAAI,WAAW,CAAC;AAChB,QAAI,QAAQ;AAEZ,QAAM,QAAQ,CAAC,KAAK,QAAQ;AAC1B,UAAI,SAAS,KAAK;AAChB,iBAAS,KAAK,GAAG;AAAA,MACnB;AAAA,IACF;AAEA,UAAM,OAAO;AACb,UAAM,OAAO;AACb,UAAM,QAAQ;AAEd,UAAM,QAAQ,MAAM;AAClB,iBAAW,CAAC;AAAA,IACd;AAEA,UAAM,gBAAgB,CAAC,MAAM;AAC3B,cAAQ;AAAA,IACV;AAEA,UAAM,OAAO,CAAC,QAAQ,MAAM,KAAK,MAAM,IAAI;AAC3C,UAAM,OAAO,CAAC,QAAQ,MAAM,KAAK,MAAM,IAAI;AAC3C,UAAM,QAAQ,CAAC,QAAQ,MAAM,KAAK,MAAM,KAAK;AAE7C,UAAM,gBAAgB,MAAM;AAE5B,IAAAA,QAAO,UAAU;AAAA;AAAA;;;AC3BjB;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,CAAC,EAAC,YAAY,MAAK,IAAI,CAAC,MAAM;AAC9C,YAAM,UAAU;AAAA,QACf;AAAA,QACA;AAAA,MACD,EAAE,KAAK,GAAG;AAEV,aAAO,IAAI,OAAO,SAAS,YAAY,SAAY,GAAG;AAAA,IACvD;AAAA;AAAA;;;ACTA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,aAAY;AAElB,IAAAD,QAAO,UAAU,CAAAE,YAAU,OAAOA,YAAW,WAAWA,QAAO,QAAQD,WAAU,GAAG,EAAE,IAAIC;AAAA;AAAA;;;ACH1F;AAAA,6EAAAC,UAAAC,SAAA;AAAA;AAGA,QAAM,uBAAuB,eAAa;AACzC,UAAI,OAAO,MAAM,SAAS,GAAG;AAC5B,eAAO;AAAA,MACR;AAIA,UACC,aAAa,SACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc;AAAA;AAAA,MAEb,SAAU,aAAa,aAAa,SAAU,cAAc;AAAA,MAE5D,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa,SACpC,SAAU,aAAa,aAAa;AAAA,MAEpC,UAAW,aAAa,aAAa;AAAA,MAErC,UAAW,aAAa,aAAa;AAAA,MAErC,UAAW,aAAa,aAAa,SAEtC;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU;AACjB,IAAAA,QAAO,QAAQ,UAAU;AAAA;AAAA;;;ACjDzB;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,WAAY;AAE3B,aAAO;AAAA,IACT;AAAA;AAAA;;;ACLA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,aAAY;AAClB,QAAM,uBAAuB;AAC7B,QAAM,aAAa;AAEnB,QAAMC,eAAc,CAAAC,YAAU;AAC7B,UAAI,OAAOA,YAAW,YAAYA,QAAO,WAAW,GAAG;AACtD,eAAO;AAAA,MACR;AAEA,MAAAA,UAASF,WAAUE,OAAM;AAEzB,UAAIA,QAAO,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AAEA,MAAAA,UAASA,QAAO,QAAQ,WAAW,GAAG,IAAI;AAE1C,UAAI,QAAQ;AAEZ,eAAS,IAAI,GAAG,IAAIA,QAAO,QAAQ,KAAK;AACvC,cAAM,OAAOA,QAAO,YAAY,CAAC;AAGjC,YAAI,QAAQ,MAAS,QAAQ,OAAQ,QAAQ,KAAO;AACnD;AAAA,QACD;AAGA,YAAI,QAAQ,OAAS,QAAQ,KAAO;AACnC;AAAA,QACD;AAGA,YAAI,OAAO,OAAQ;AAClB;AAAA,QACD;AAEA,iBAAS,qBAAqB,IAAI,IAAI,IAAI;AAAA,MAC3C;AAEA,aAAO;AAAA,IACR;AAEA,IAAAH,QAAO,UAAUE;AAEjB,IAAAF,QAAO,QAAQ,UAAUE;AAAA;AAAA;;;AC9CzB,IAAAE,iBAAA;AAAA,4CAAAC,UAAAC,SAAA;AAAA;AAAA,QAAMC,eAAc;AAEpB,aAAS,UAAU,SAAS;AAC1B,aAAO,UAAU,iCAAiC;AAAA,IACpD;AAEA,aAAS,OAAO,KAAK;AACnB,UAAI,OAAO,UAAU;AACrB,UAAI,YAAY,KAAK,KAAK,QAAQ,MAAM,EAAE;AAC1C,UAAI,QAAQ,SAAS,MAAM,IAAI;AAC/B,aAAO,MAAM,OAAO,SAAU,MAAM,GAAG;AACrC,eAAOA,aAAY,CAAC,IAAI,OAAOA,aAAY,CAAC,IAAI;AAAA,MAClD,GAAG,CAAC;AAAA,IACN;AAEA,aAAS,OAAO,KAAK,OAAO;AAC1B,aAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,GAAG;AAAA,IAClC;AAEA,aAAS,IAAI,KAAK,KAAKC,MAAK,KAAK;AAC/B,UAAI,SAAS,OAAO,GAAG;AACvB,UAAI,MAAM,KAAK,QAAQ;AACrB,YAAI,SAAS,MAAM;AACnB,gBAAQ,KAAK;AAAA,UACX,KAAK,SAAS;AACZ,kBAAM,OAAOA,MAAK,MAAM,IAAI;AAC5B;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,gBAAI,QAAQ,KAAK,KAAK,SAAS,CAAC;AAChC,gBAAI,OAAO,SAAS;AACpB,kBAAM,OAAOA,MAAK,IAAI,IAAI,MAAM,OAAOA,MAAK,KAAK;AACjD;AAAA,UACF;AAAA,UACA,SAAS;AACP,kBAAM,MAAM,OAAOA,MAAK,MAAM;AAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,YAAY,CAAC;AAEjB,aAAS,eAAe,MAAM,IAAI,KAAK;AACrC,WAAK,UAAY,KAAK;AACtB,YAAM,UAAY,MAAM;AACxB,gBAAU,EAAE,IAAI,EAAE,KAAK,MAAM,IAAI,KAAK;AACtC,gBAAU,GAAG,IAAI,EAAE,KAAK,MAAM,IAAI,MAAM;AACxC,gBAAU,IAAI,IAAI,EAAE,IAAQ,IAAS;AAAA,IACvC;AAGA,mBAAe,QAAQ,GAAG,EAAE;AAC5B,mBAAe,WAAW,GAAG,EAAE;AAC/B,mBAAe,aAAa,GAAG,EAAE;AACjC,mBAAe,WAAW,GAAG,EAAE;AAC/B,mBAAe,iBAAiB,GAAG,EAAE;AAErC,aAAS,YAAY,OAAO,cAAc;AACxC,UAAI,cAAc,aAAa,CAAC,IAAI,SAAS,aAAa,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI;AAC9E,UAAK,eAAe,MAAM,eAAe,MAAQ,eAAe,MAAM,eAAe,IAAK;AACxF,cAAM,sBAAsB,aAAa,CAAC;AAC1C;AAAA,MACF;AACA,UAAK,eAAe,MAAM,eAAe,MAAQ,eAAe,OAAO,eAAe,KAAM;AAC1F,cAAM,sBAAsB,aAAa,CAAC;AAC1C;AAAA,MACF;AACA,UAAI,gBAAgB,GAAG;AACrB,iBAAS,KAAK,OAAO;AAEnB,cAAI,OAAO,UAAU,eAAe,KAAK,OAAO,CAAC,GAAG;AAClD,mBAAO,MAAM,CAAC;AAAA,UAChB;AAAA,QACF;AACA;AAAA,MACF;AACA,UAAI,OAAO,UAAU,aAAa,CAAC,CAAC;AACpC,UAAI,MAAM;AACR,cAAM,KAAK,GAAG,IAAI,KAAK;AAAA,MACzB;AAAA,IACF;AAEA,aAAS,UAAU,MAAM;AACvB,UAAI,OAAO,UAAU,IAAI;AACzB,UAAI,eAAe,KAAK,KAAK,IAAI;AACjC,UAAI,QAAQ,CAAC;AACb,aAAO,iBAAiB,MAAM;AAC5B,oBAAY,OAAO,YAAY;AAC/B,uBAAe,KAAK,KAAK,IAAI;AAAA,MAC/B;AACA,aAAO;AAAA,IACT;AAEA,aAAS,YAAY,OAAO,KAAK;AAC/B,UAAI,sBAAsB,MAAM;AAChC,UAAI,sBAAsB,MAAM;AAEhC,aAAO,MAAM;AACb,aAAO,MAAM;AAEb,aAAO,KAAK,KAAK,EAAE,QAAQ,SAAU,KAAK;AACxC,YAAI,MAAM,GAAG,GAAG;AACd,iBAAO,UAAU,GAAG,EAAE;AAAA,QACxB;AAAA,MACF,CAAC;AAED,UAAI,uBAAuB,uBAAuB,YAAc;AAC9D,eAAO;AAAA,MACT;AACA,UAAI,uBAAuB,uBAAuB,YAAc;AAC9D,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,YAAY,OAAO,KAAK;AAC/B,UAAI,sBAAsB,MAAM;AAChC,UAAI,sBAAsB,MAAM;AAEhC,aAAO,MAAM;AACb,aAAO,MAAM;AAEb,aAAO,KAAK,KAAK,EAAE,QAAQ,SAAU,KAAK;AACxC,YAAI,MAAM,GAAG,GAAG;AACd,gBAAM,UAAU,GAAG,EAAE,KAAK;AAAA,QAC5B;AAAA,MACF,CAAC;AAED,UAAI,uBAAuB,uBAAuB,YAAc;AAC9D,cAAM,sBAAsB;AAAA,MAC9B;AACA,UAAI,uBAAuB,uBAAuB,YAAc;AAC9D,cAAM,sBAAsB;AAAA,MAC9B;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,cAAc,KAAK,eAAe;AACzC,UAAI,IAAI,WAAW,OAAO,GAAG,GAAG;AAC9B,eAAO,IAAI,OAAO,GAAG,aAAa;AAAA,MACpC;AAEA,aAAO,OAAO,GAAG,IAAI,eAAe;AAClC,cAAM,IAAI,MAAM,GAAG,EAAE;AAAA,MACvB;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,sBAAsB,KAAK,eAAe;AACjD,UAAI,OAAO,UAAU,IAAI;AACzB,UAAI,QAAQ,IAAI,MAAM,UAAU,CAAC;AACjC,UAAI,aAAa;AACjB,UAAI,SAAS;AACb,UAAI,MAAM;AACV,UAAI;AACJ,UAAI,QAAQ,CAAC;AAEb,aAAO,SAAS,eAAe;AAC7B,kBAAU,KAAK,KAAK,GAAG;AACvB,YAAI,QAAQ,MAAM,UAAU;AAC5B;AACA,YAAI,SAAS,OAAO,KAAK,IAAI,eAAe;AAC1C,kBAAQ,cAAc,OAAO,gBAAgB,MAAM;AAAA,QACrD;AACA,eAAO;AACP,kBAAU,OAAO,KAAK;AAEtB,YAAI,SAAS,eAAe;AAC1B,cAAI,CAAC,SAAS;AACZ;AAAA,UACF;AACA,iBAAO,QAAQ,CAAC;AAChB,sBAAY,OAAO,OAAO;AAAA,QAC5B;AAAA,MACF;AAEA,aAAO,YAAY,OAAO,GAAG;AAAA,IAC/B;AAEA,aAAS,SAAS,KAAK,eAAe,cAAc;AAClD,qBAAe,gBAAgB;AAC/B,UAAI,cAAc,OAAO,GAAG;AAC5B,UAAI,eAAe,eAAe;AAChC,eAAO;AAAA,MACT;AACA,uBAAiB,OAAO,YAAY;AAEpC,UAAI,MAAM,sBAAsB,KAAK,aAAa;AAElD,aAAO;AAEP,YAAM,UAAU;AAEhB,UAAI,IAAI,SAAS,OAAO,KAAK,CAAC,IAAI,SAAS,OAAO,GAAG;AACnD,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,iBAAiB;AACxB,aAAO;AAAA,QACL,OAAO;AAAA,UACL,KAAK;AAAA,UACL,WAAW;AAAA,UACX,YAAY;AAAA,UACZ,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,cAAc;AAAA,UACd,eAAe;AAAA,UACf,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,KAAK;AAAA,UACL,WAAW;AAAA,UACX,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ;AAAA,QACV;AAAA,QACA,UAAU;AAAA,QACV,WAAW,CAAC;AAAA,QACZ,YAAY,CAAC;AAAA,QACb,WAAW,CAAC;AAAA,QACZ,WAAW,CAAC;AAAA,QACZ,OAAO;AAAA,UACL,gBAAgB;AAAA,UAChB,iBAAiB;AAAA,UACjB,MAAM,CAAC,KAAK;AAAA,UACZ,QAAQ,CAAC,MAAM;AAAA,UACf,SAAS;AAAA,QACX;AAAA,QACA,MAAM,CAAC;AAAA,MACT;AAAA,IACF;AAEA,aAAS,aAAa,SAAS,UAAU;AACvC,gBAAU,WAAW,CAAC;AACtB,iBAAW,YAAY,eAAe;AACtC,UAAI,MAAM,OAAO,OAAO,CAAC,GAAG,UAAU,OAAO;AAC7C,UAAI,QAAQ,OAAO,OAAO,CAAC,GAAG,SAAS,OAAO,QAAQ,KAAK;AAC3D,UAAI,QAAQ,OAAO,OAAO,CAAC,GAAG,SAAS,OAAO,QAAQ,KAAK;AAC3D,aAAO;AAAA,IACT;AAGA,aAAS,SAAS,WAAW,OAAO;AAClC,UAAI,QAAQ,CAAC;AACb,UAAI,QAAQ,MAAM,MAAM,QAAQ;AAChC,UAAI,OAAO,CAAC;AACZ,UAAI,aAAa;AACjB,UAAI;AACJ,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,YAAI,OAAO,MAAM,CAAC;AAClB,YAAI,YAAY,aAAa,OAAO,IAAI;AACxC,YAAI,aAAa,KAAK,YAAY;AAChC,uBAAa,WAAW;AAAA,QAC1B;AACA,YAAI,YAAY,WAAW;AACzB,cAAI,eAAe,GAAG;AACpB,kBAAM,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,UAC1B;AACA,iBAAO,CAAC,IAAI;AACZ,uBAAa,OAAO,IAAI;AAAA,QAC1B,OAAO;AACL,eAAK,KAAK,cAAc,IAAI,IAAI;AAChC,uBAAa;AAAA,QACf;AACA,qBAAa,MAAM,IAAI,CAAC;AAAA,MAC1B;AACA,UAAI,YAAY;AACd,cAAM,KAAK,KAAK,KAAK,EAAE,CAAC;AAAA,MAC1B;AACA,aAAO;AAAA,IACT;AAGA,aAAS,SAAS,WAAW,OAAO;AAClC,UAAI,QAAQ,CAAC;AACb,UAAI,OAAO;AACX,eAAS,SAAS,KAAK,IAAI;AACzB,YAAI,KAAK,UAAU,GAAI,SAAQ;AAC/B,gBAAQ;AACR,eAAO,KAAK,SAAS,WAAW;AAC9B,gBAAM,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;AACnC,iBAAO,KAAK,MAAM,SAAS;AAAA,QAC7B;AAAA,MACF;AACA,UAAI,QAAQ,MAAM,MAAM,QAAQ;AAChC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACxC,iBAAS,MAAM,CAAC,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC;AAAA,MACtC;AACA,UAAI,KAAK,OAAQ,OAAM,KAAK,IAAI;AAChC,aAAO;AAAA,IACT;AAEA,aAAS,kBAAkB,WAAW,OAAO,qBAAqB,MAAM;AACtE,UAAI,SAAS,CAAC;AACd,cAAQ,MAAM,MAAM,IAAI;AACxB,YAAM,UAAU,qBAAqB,WAAW;AAChD,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,eAAO,KAAK,MAAM,QAAQ,QAAQ,WAAW,MAAM,CAAC,CAAC,CAAC;AAAA,MACxD;AACA,aAAO;AAAA,IACT;AAEA,aAAS,cAAc,OAAO;AAC5B,UAAI,QAAQ,CAAC;AACb,UAAI,SAAS,CAAC;AACd,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,OAAO,YAAY,OAAO,MAAM,CAAC,CAAC;AACtC,gBAAQ,UAAU,IAAI;AACtB,YAAI,OAAO,OAAO,OAAO,CAAC,GAAG,KAAK;AAClC,eAAO,KAAK,YAAY,MAAM,IAAI,CAAC;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAKA,aAAS,UAAUC,MAAK,MAAM;AAC5B,YAAM,MAAM;AACZ,YAAM,MAAM;AACZ,YAAM,MAAM;AAEZ,aAAO,CAAC,KAAK,KAAK,KAAK,KAAKA,QAAO,MAAM,KAAK,MAAM,KAAK,KAAK,KAAK,KAAK,GAAG,EAAE,KAAK,EAAE;AAAA,IACtF;AAEA,IAAAH,QAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACvVA;AAAA,iDAAAI,UAAAC,SAAA;AAAA;AAyBA,QAAIC,UAAS,CAAC;AACd,IAAAD,QAAO,SAAS,IAAIC;AAEpB,QAAI,QAAQ;AAAA,MACV,OAAO,CAAC,GAAG,CAAC;AAAA,MAEZ,MAAM,CAAC,GAAG,EAAE;AAAA,MACZ,KAAK,CAAC,GAAG,EAAE;AAAA,MACX,QAAQ,CAAC,GAAG,EAAE;AAAA,MACd,WAAW,CAAC,GAAG,EAAE;AAAA,MACjB,SAAS,CAAC,GAAG,EAAE;AAAA,MACf,QAAQ,CAAC,GAAG,EAAE;AAAA,MACd,eAAe,CAAC,GAAG,EAAE;AAAA,MAErB,OAAO,CAAC,IAAI,EAAE;AAAA,MACd,KAAK,CAAC,IAAI,EAAE;AAAA,MACZ,OAAO,CAAC,IAAI,EAAE;AAAA,MACd,QAAQ,CAAC,IAAI,EAAE;AAAA,MACf,MAAM,CAAC,IAAI,EAAE;AAAA,MACb,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,MAAM,CAAC,IAAI,EAAE;AAAA,MACb,OAAO,CAAC,IAAI,EAAE;AAAA,MACd,MAAM,CAAC,IAAI,EAAE;AAAA,MACb,MAAM,CAAC,IAAI,EAAE;AAAA,MAEb,WAAW,CAAC,IAAI,EAAE;AAAA,MAClB,aAAa,CAAC,IAAI,EAAE;AAAA,MACpB,cAAc,CAAC,IAAI,EAAE;AAAA,MACrB,YAAY,CAAC,IAAI,EAAE;AAAA,MACnB,eAAe,CAAC,IAAI,EAAE;AAAA,MACtB,YAAY,CAAC,IAAI,EAAE;AAAA,MACnB,aAAa,CAAC,IAAI,EAAE;AAAA,MAEpB,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,OAAO,CAAC,IAAI,EAAE;AAAA,MACd,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,UAAU,CAAC,IAAI,EAAE;AAAA,MACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,MACf,WAAW,CAAC,IAAI,EAAE;AAAA,MAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,MACf,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,QAAQ,CAAC,KAAK,EAAE;AAAA,MAChB,QAAQ,CAAC,KAAK,EAAE;AAAA,MAEhB,aAAa,CAAC,KAAK,EAAE;AAAA,MACrB,eAAe,CAAC,KAAK,EAAE;AAAA,MACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,MACxB,cAAc,CAAC,KAAK,EAAE;AAAA,MACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,MACzB,cAAc,CAAC,KAAK,EAAE;AAAA,MACtB,eAAe,CAAC,KAAK,EAAE;AAAA;AAAA,MAGvB,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,OAAO,CAAC,IAAI,EAAE;AAAA,MACd,SAAS,CAAC,IAAI,EAAE;AAAA,MAChB,UAAU,CAAC,IAAI,EAAE;AAAA,MACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,MACf,WAAW,CAAC,IAAI,EAAE;AAAA,MAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,MACf,SAAS,CAAC,IAAI,EAAE;AAAA,IAElB;AAEA,WAAO,KAAK,KAAK,EAAE,QAAQ,SAAS,KAAK;AACvC,UAAI,MAAM,MAAM,GAAG;AACnB,UAAI,QAAQA,QAAO,GAAG,IAAI,CAAC;AAC3B,YAAM,OAAO,UAAY,IAAI,CAAC,IAAI;AAClC,YAAM,QAAQ,UAAY,IAAI,CAAC,IAAI;AAAA,IACrC,CAAC;AAAA;AAAA;;;AC9FD;AAAA,0DAAAC,UAAAC,SAAA;AAAA;AA0BA,IAAAA,QAAO,UAAU,SAAS,MAAM,MAAM;AACpC,aAAO,QAAQ,QAAQ;AAEvB,UAAI,gBAAgB,KAAK,QAAQ,IAAI;AACrC,UAAI,SAAS,UAAU,KAAK,IAAI,IAAI,KAAK;AACzC,UAAI,MAAM,KAAK,QAAQ,SAAS,IAAI;AAEpC,aAAO,QAAQ,OAAO,kBAAkB,KAAK,OAAO,MAAM;AAAA,IAC5D;AAAA;AAAA;;;AClCA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AA2BA,QAAIC,OAAK,QAAQ,IAAI;AACrB,QAAIC,WAAU;AAEd,QAAIC,OAAM,QAAQ;AAElB,QAAI,aAAa;AACjB,QAAID,SAAQ,UAAU,KAAKA,SAAQ,WAAW,KAAKA,SAAQ,aAAa,GAAG;AACzE,mBAAa;AAAA,IACf,WAAWA,SAAQ,OAAO,KAAKA,SAAQ,QAAQ,KAAKA,SAAQ,YAAY,KAC1DA,SAAQ,cAAc,GAAG;AACrC,mBAAa;AAAA,IACf;AACA,QAAI,iBAAiBC,MAAK;AACxB,mBAAaA,KAAI,YAAY,WAAW,KACnC,SAASA,KAAI,aAAa,EAAE,MAAM;AAAA,IACzC;AAEA,aAASC,gBAAe,OAAO;AAC7B,UAAI,UAAU,GAAG;AACf,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,QACL;AAAA,QACA,UAAU;AAAA,QACV,QAAQ,SAAS;AAAA,QACjB,QAAQ,SAAS;AAAA,MACnB;AAAA,IACF;AAEA,aAASC,eAAc,QAAQ;AAC7B,UAAI,eAAe,OAAO;AACxB,eAAO;AAAA,MACT;AAEA,UAAIH,SAAQ,WAAW,KAAKA,SAAQ,YAAY,KACzCA,SAAQ,iBAAiB,GAAG;AACjC,eAAO;AAAA,MACT;AAEA,UAAIA,SAAQ,WAAW,GAAG;AACxB,eAAO;AAAA,MACT;AAEA,UAAI,UAAU,CAAC,OAAO,SAAS,eAAe,MAAM;AAClD,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,aAAa,IAAI;AAE3B,UAAI,QAAQ,aAAa,SAAS;AAOhC,YAAI,YAAYD,KAAG,QAAQ,EAAE,MAAM,GAAG;AACtC,YAAI,OAAO,QAAQ,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC,KAAK,KAC5C,OAAO,UAAU,CAAC,CAAC,KAAK,MAAM,OAAO,UAAU,CAAC,CAAC,KAAK,OAAO;AAClE,iBAAO,OAAO,UAAU,CAAC,CAAC,KAAK,QAAQ,IAAI;AAAA,QAC7C;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQE,MAAK;AACf,YAAI,CAAC,UAAU,YAAY,YAAY,WAAW,EAAE,KAAK,SAAS,MAAM;AACtE,iBAAO,QAAQA;AAAA,QACjB,CAAC,KAAKA,KAAI,YAAY,YAAY;AAChC,iBAAO;AAAA,QACT;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,sBAAsBA,MAAK;AAC7B,eAAQ,gCAAgC,KAAKA,KAAI,gBAAgB,IAAI,IAAI;AAAA,MAE3E;AAEA,UAAI,kBAAkBA,MAAK;AACzB,YAAIG,WAAU,UAAUH,KAAI,wBAAwB,IAAI,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAEzE,gBAAQA,KAAI,cAAc;AAAA,UACxB,KAAK;AACH,mBAAOG,YAAW,IAAI,IAAI;AAAA,UAC5B,KAAK;AACH,mBAAO;AAAA,UACT,KAAK;AACH,mBAAO;AAAA,QAEX;AAAA,MACF;AAEA,UAAI,iBAAiB,KAAKH,KAAI,IAAI,GAAG;AACnC,eAAO;AAAA,MACT;AAEA,UAAI,uDAAuD,KAAKA,KAAI,IAAI,GAAG;AACzE,eAAO;AAAA,MACT;AAEA,UAAI,eAAeA,MAAK;AACtB,eAAO;AAAA,MACT;AAEA,UAAIA,KAAI,SAAS,QAAQ;AACvB,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAEA,aAAS,gBAAgB,QAAQ;AAC/B,UAAI,QAAQE,eAAc,MAAM;AAChC,aAAOD,gBAAe,KAAK;AAAA,IAC7B;AAEA,IAAAJ,QAAO,UAAU;AAAA,MACf,eAAe;AAAA,MACf,QAAQ,gBAAgB,QAAQ,MAAM;AAAA,MACtC,QAAQ,gBAAgB,QAAQ,MAAM;AAAA,IACxC;AAAA;AAAA;;;ACtJA;AAAA,sDAAAO,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,SAAS,IAAI,SAAS,WAAW,MAAM,SAAS;AACrD,UAAI,SAAS;AACb,aAAO,QAAQ;AACf,aAAO,KAAK,MAAM,EAAE;AACpB,UAAI,OAAO;AAAA,QACT,GAAG,CAAC,KAAU,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QACxE,GAAG,CAAC,QAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG,CAAC,QAAU,UAAU,QAAQ;AAAA,QAChC,GAAG,CAAC,QAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG;AAAA,UAAC;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAC9D;AAAA,QAAQ;AAAA,QACV,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC1C,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG,CAAC,QAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG;AAAA,UAAC;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAAU;AAAA,UAC9D;AAAA,UAAU;AAAA,QAAQ;AAAA,QACpB,GAAG,CAAC,UAAU,QAAQ;AAAA,QACtB,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,QAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC9D,GAAG,CAAC,QAAU,UAAU,UAAU,QAAQ;AAAA,QAC1C,GAAG,CAAC,UAAU,UAAU,QAAQ;AAAA,QAChC,GAAG,CAAC,UAAU,QAAQ;AAAA,QACtB,GAAG,CAAC,QAAQ;AAAA,QACZ,GAAG,CAAC,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC1C,GAAG,CAAC,UAAU,UAAU,UAAU,QAAQ;AAAA,QAC1C,GAAG,CAAC,QAAU,UAAU,QAAQ;AAAA,QAChC,GAAG,CAAC,UAAU,QAAQ;AAAA,MACxB;AACA,WAAK,QAAQ,SAAS,GAAG;AACvB,YAAI,EAAE,YAAY;AAClB,YAAI,QAAQ,KAAK,CAAC,KAAK,CAAC,GAAG;AAC3B,YAAI,OAAO,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM;AAClD,YAAI,OAAO,KAAK,CAAC,MAAM,aAAa;AAClC,oBAAU,KAAK,CAAC,EAAE,IAAI;AAAA,QACxB,OAAO;AACL,oBAAU;AAAA,QACZ;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAAA;AAAA;;;AC7CA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AACA,IAAAA,QAAO,SAAS,IAAI,SAAS,MAAM,MAAM,SAAS;AAChD,aAAO,QAAQ;AACf,UAAI,OAAO;AAAA,QACT,MAAM;AAAA,UACJ;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,QACP;AAAA,QACA,QAAQ;AAAA,UACN;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,QACjB;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,UACV;AAAA,UAAK;AAAA,UAAK;AAAA,UAAK;AAAA,UACf;AAAA,UAAK;AAAA,UAAK;AAAA,QACZ;AAAA,MACF;AACA,UAAI,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,KAAK,MAAM,KAAK,GAAG;AAEhD,eAAS,aAAa,OAAO;AAC3B,YAAI,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,KAAK;AACxC,eAAO;AAAA,MACT;AAEA,eAAS,OAAO,WAAW;AACzB,YAAI,OAAO;AACX,YAAI,OAAO,SAAS,GAAG;AACrB,iBAAQ,MAAM;AAAA,QAChB,CAAC;AACD,eAAO;AAAA,MACT;AAGA,eAAS,QAAQC,OAAMC,UAAS;AAC9B,YAAI,SAAS;AACb,YAAI;AACJ,YAAI;AACJ,QAAAA,WAAUA,YAAW,CAAC;AACtB,QAAAA,SAAQ,IAAI,IACV,OAAOA,SAAQ,IAAI,MAAM,cAAcA,SAAQ,IAAI,IAAI;AACzD,QAAAA,SAAQ,KAAK,IACX,OAAOA,SAAQ,KAAK,MAAM,cAAcA,SAAQ,KAAK,IAAI;AAC3D,QAAAA,SAAQ,MAAM,IACZ,OAAOA,SAAQ,MAAM,MAAM,cAAcA,SAAQ,MAAM,IAAI;AAC7D,QAAAA,SAAQ,MAAM,IACZ,OAAOA,SAAQ,MAAM,MAAM,cAAcA,SAAQ,MAAM,IAAI;AAC7D,QAAAD,QAAOA,MAAK,MAAM,EAAE;AACpB,aAAK,KAAKA,OAAM;AACd,cAAI,OAAO,CAAC,GAAG;AACb;AAAA,UACF;AACA,mBAAS,SAASA,MAAK,CAAC;AACxB,mBAAS,EAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAC;AACtC,kBAAQC,SAAQ,MAAM;AAAA,YACpB,KAAK;AACH,qBAAO,KAAK,aAAa,CAAC;AAC1B,qBAAO,MAAM,aAAa,CAAC;AAC3B,qBAAO,OAAO,aAAa,CAAC;AAC5B;AAAA,YACF,KAAK;AACH,qBAAO,KAAK,aAAa,EAAE,IAAI;AAC/B,qBAAO,MAAM,aAAa,CAAC,IAAI;AAC/B,qBAAO,OAAO,aAAa,EAAE,IAAI;AACjC;AAAA,YACF;AACE,qBAAO,KAAK,aAAa,CAAC,IAAI;AAC9B,qBAAO,MAAM,aAAa,CAAC,IAAI;AAC/B,qBAAO,OAAO,aAAa,CAAC,IAAI;AAChC;AAAA,UACJ;AAEA,cAAI,MAAM,CAAC,MAAM,OAAO,MAAM;AAC9B,mBAAS,KAAK,KAAK;AACjB,gBAAI,QAAQ,IAAI,CAAC;AACjB,qBAAS,IAAI,GAAG,KAAK,OAAO,KAAK,GAAG,KAAK;AACvC,kBAAIA,SAAQ,KAAK,GAAG;AAClB,yBAAS,SAAS,KAAK,KAAK,EAAE,aAAa,KAAK,KAAK,EAAE,MAAM,CAAC;AAAA,cAChE;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,QAAQ,MAAM,OAAO;AAAA,IAC9B;AAAA;AAAA;;;AC5GA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,SAAS,IAAI,SAAS,QAAQ;AACnC,aAAO,SAAS,QAAQ,GAAG,UAAU;AACnC,YAAI,WAAW,IAAK,QAAO;AAC3B,gBAAQ,IAAE,GAAG;AAAA,UACX,KAAK;AAAG,mBAAO,OAAO,IAAI,MAAM;AAAA,UAChC,KAAK;AAAG,mBAAO,OAAO,MAAM,MAAM;AAAA,UAClC,KAAK;AAAG,mBAAO,OAAO,KAAK,MAAM;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACTA;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,SAAS,IAAI,SAAS,QAAQ;AACnC,aAAO,SAAS,QAAQ,GAAG,UAAU;AACnC,eAAO,IAAI,MAAM,IAAI,SAAS,OAAO,QAAQ,MAAM;AAAA,MACrD;AAAA,IACF;AAAA;AAAA;;;ACJA;AAAA,uDAAAC,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,SAAS,IAAI,SAAS,QAAQ;AAEnC,UAAI,gBAAgB,CAAC,OAAO,UAAU,SAAS,QAAQ,SAAS;AAChE,aAAO,SAAS,QAAQ,GAAG,UAAU;AACnC,YAAI,WAAW,KAAK;AAClB,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,OAAO,cAAc,MAAM,cAAc,MAAM,CAAC,EAAE,MAAM;AAAA,QACjE;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACVA;AAAA,sDAAAC,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,SAAS,IAAI,SAAS,QAAQ;AACnC,UAAI,YAAY;AAAA,QAAC;AAAA,QAAa;AAAA,QAAW;AAAA,QAAQ;AAAA,QAAU;AAAA,QAAO;AAAA,QAChE;AAAA,QAAQ;AAAA,QAAS;AAAA,QAAQ;AAAA,QAAW;AAAA,QAAgB;AAAA,QACpD;AAAA,QAAe;AAAA,QAAc;AAAA,QAAe;AAAA,QAAc;AAAA,MAAe;AAC3E,aAAO,SAAS,QAAQ,GAAG,UAAU;AACnC,eAAO,WAAW,MAAM,SACtB,OACI,UAAU,KAAK,MAAM,KAAK,OAAO,KAAK,UAAU,SAAS,EAAE,CAAC,CAChE,EAAE,MAAM;AAAA,MACZ;AAAA,IACF;AAAA;AAAA;;;ACVA;AAAA,iDAAAC,UAAAC,SAAA;AAAA;AA8BA,QAAI,SAAS,CAAC;AACd,IAAAA,QAAO,SAAS,IAAI;AAEpB,WAAO,SAAS,CAAC;AAEjB,QAAI,OAAO,QAAQ,MAAM;AACzB,QAAIC,cAAa,OAAO,SAAS;AACjC,QAAI,cAAc,OAAO;AACzB,QAAI,eAAe,IAAI,OAAO,UAAU;AAExC,WAAO,gBAAgB,0BAAoC;AAE3D,QAAI,OAAO,OAAO,YAAY,aAAa;AACzC,aAAO,UAAU,OAAO,cAAc,MAAM;AAAA,IAC9C;AAEA,WAAO,SAAS,WAAW;AACzB,aAAO,UAAU;AAAA,IACnB;AAEA,WAAO,UAAU,WAAW;AAC1B,aAAO,UAAU;AAAA,IACnB;AAEA,WAAO,cAAc,OAAO,QAAQ,SAAS,KAAK;AAChD,cAAQ,KAAK,KAAK,QAAQ,eAAe,EAAE;AAAA,IAC7C;AAGA,QAAI,UAAU,OAAO,UAAU,SAASC,SAAQ,KAAK,OAAO;AAC1D,UAAI,CAAC,OAAO,SAAS;AACnB,eAAO,MAAI;AAAA,MACb;AAEA,UAAI,WAAWD,YAAW,KAAK;AAG/B,UAAI,CAAC,YAAY,SAAS,QAAQ;AAGhC,eAAO,OAAO,KAAK,EAAE,GAAG;AAAA,MAC1B;AAEA,aAAO,SAAS,OAAO,MAAM,SAAS;AAAA,IACxC;AAEA,QAAI,mBAAmB;AACvB,QAAI,qBAAqB,SAAS,KAAK;AACrC,UAAI,OAAO,QAAQ,UAAU;AAC3B,cAAM,IAAI,UAAU,mBAAmB;AAAA,MACzC;AACA,aAAO,IAAI,QAAQ,kBAAkB,MAAM;AAAA,IAC7C;AAEA,aAAS,MAAM,SAAS;AACtB,UAAI,UAAU,SAASE,WAAU;AAC/B,eAAOC,YAAW,MAAMD,UAAS,SAAS;AAAA,MAC5C;AACA,cAAQ,UAAU;AAGlB,cAAQ,YAAYE;AACpB,aAAO;AAAA,IACT;AAEA,QAAIC,WAAU,WAAW;AACvB,UAAI,MAAM,CAAC;AACX,MAAAL,YAAW,OAAOA,YAAW;AAC7B,aAAO,KAAKA,WAAU,EAAE,QAAQ,SAAS,KAAK;AAC5C,QAAAA,YAAW,GAAG,EAAE,UACd,IAAI,OAAO,mBAAmBA,YAAW,GAAG,EAAE,KAAK,GAAG,GAAG;AAC3D,YAAI,GAAG,IAAI;AAAA,UACT,KAAK,WAAW;AACd,mBAAO,MAAM,KAAK,QAAQ,OAAO,GAAG,CAAC;AAAA,UACvC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT,GAAG;AAEH,QAAII,SAAQ,YAAY,SAASE,UAAS;AAAA,IAAC,GAAGD,OAAM;AAEpD,aAASF,cAAa;AACpB,UAAI,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS;AAE/C,UAAI,MAAM,KAAK,IAAI,SAAS,KAAK;AAE/B,YAAI,OAAO,QAAQ,IAAI,gBAAgB,QAAQ;AAC7C,iBAAO;AAAA,QACT,OAAO;AACL,iBAAO,KAAK,QAAQ,GAAG;AAAA,QACzB;AAAA,MACF,CAAC,EAAE,KAAK,GAAG;AAEX,UAAI,CAAC,OAAO,WAAW,CAAC,KAAK;AAC3B,eAAO;AAAA,MACT;AAEA,UAAI,kBAAkB,IAAI,QAAQ,IAAI,KAAK;AAE3C,UAAI,eAAe,KAAK;AAExB,UAAI,IAAI,aAAa;AACrB,aAAO,KAAK;AACV,YAAI,OAAOH,YAAW,aAAa,CAAC,CAAC;AACrC,cAAM,KAAK,OAAO,IAAI,QAAQ,KAAK,SAAS,KAAK,IAAI,IAAI,KAAK;AAC9D,YAAI,iBAAiB;AACnB,gBAAM,IAAI,QAAQ,cAAc,SAAS,OAAO;AAC9C,mBAAO,KAAK,QAAQ,QAAQ,KAAK;AAAA,UACnC,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,WAAO,WAAW,SAAS,OAAO;AAChC,UAAI,OAAO,UAAU,UAAU;AAC7B,gBAAQ,IAAI,uWAM4B;AACxC;AAAA,MACF;AACA,eAAS,SAAS,OAAO;AACvB,SAAC,SAASO,QAAO;AACf,iBAAOA,MAAK,IAAI,SAAS,KAAK;AAC5B,gBAAI,OAAO,MAAMA,MAAK,MAAM,UAAU;AACpC,kBAAI,MAAM;AACV,uBAAS,KAAK,MAAMA,MAAK,GAAG;AAC1B,sBAAM,OAAO,MAAMA,MAAK,EAAE,CAAC,CAAC,EAAE,GAAG;AAAA,cACnC;AACA,qBAAO;AAAA,YACT;AACA,mBAAO,OAAO,MAAMA,MAAK,CAAC,EAAE,GAAG;AAAA,UACjC;AAAA,QACF,GAAG,KAAK;AAAA,MACV;AAAA,IACF;AAEA,aAASC,QAAO;AACd,UAAI,MAAM,CAAC;AACX,aAAO,KAAKH,OAAM,EAAE,QAAQ,SAAS,MAAM;AACzC,YAAI,IAAI,IAAI;AAAA,UACV,KAAK,WAAW;AACd,mBAAO,MAAM,CAAC,IAAI,CAAC;AAAA,UACrB;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AAEA,QAAI,YAAY,SAASI,WAAUC,MAAK,KAAK;AAC3C,UAAI,WAAW,IAAI,MAAM,EAAE;AAC3B,iBAAW,SAAS,IAAIA,IAAG;AAC3B,aAAO,SAAS,KAAK,EAAE;AAAA,IACzB;AAGA,WAAO,OAAO;AACd,WAAO,QAAQ;AAGf,WAAO,OAAO,CAAC;AACf,WAAO,KAAK,UAAU,kBAA0B,MAAM;AACtD,WAAO,KAAK,QAAQ,gBAAwB,MAAM;AAClD,WAAO,KAAK,UAAU,kBAA0B,MAAM;AACtD,WAAO,KAAK,SAAS,iBAAyB,MAAM;AAEpD,SAASA,QAAO,OAAO,MAAM;AAC3B,OAAC,SAASA,MAAK;AACb,eAAOA,IAAG,IAAI,SAAS,KAAK;AAC1B,iBAAO,UAAU,OAAO,KAAKA,IAAG,GAAG,GAAG;AAAA,QACxC;AAAA,MACF,GAAGA,IAAG;AAAA,IACR;AANS,QAAAA;AAQT,gBAAY,QAAQF,MAAK,CAAC;AAAA;AAAA;;;AClN1B;AAAA,2CAAAG,UAAAC,SAAA;AAAA;AAQA,QAAI,SAAS;AACb,IAAAA,QAAO,SAAS,IAAI;AAAA;AAAA;;;ACTpB;AAAA,2CAAAC,UAAAC,SAAA;AAAA;AAAA,QAAM,EAAE,MAAM,MAAM,IAAI;AACxB,QAAM,QAAQ;AAEd,QAAM,OAAN,MAAM,MAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQT,YAAY,SAAS;AACnB,aAAK,WAAW,OAAO;AAOvB,aAAK,IAAI;AACT,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,WAAW,SAAS;AAClB,YAAI,CAAC,WAAW,UAAU,UAAU,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,IAAI;AAC5E,oBAAU,EAAE,SAAS,KAAK,QAAQ;AAAA,QACpC;AACA,kBAAU,WAAW,CAAC;AACtB,aAAK,UAAU;AACf,YAAI,UAAU,QAAQ;AACtB,YAAI,CAAC,WAAW,UAAU,UAAU,QAAQ,EAAE,QAAQ,OAAO,OAAO,MAAM,IAAI;AAC5E,eAAK,UAAU,OAAO,OAAO;AAAA,QAC/B,WAAW,CAAC,SAAS;AACnB,eAAK,UAAU,KAAK,QAAQ,QAAQ;AAAA,QACtC,OAAO;AACL,gBAAM,IAAI,MAAM,2CAA2C,OAAO,OAAO;AAAA,QAC3E;AACA,aAAK,UAAU,QAAQ,WAAW;AAClC,aAAK,UAAU,QAAQ,WAAW;AAClC,YAAI,KAAK,QAAQ,MAAM;AACrB,iBAAO,eAAe,MAAM,QAAQ;AAAA,YAClC,MAAM;AACJ,qBAAO,KAAK,QAAQ;AAAA,YACtB;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,kBAAkB,cAAc,OAAO;AACrC,aAAK,QAAQ;AAEb,YAAI,eAAe,KAAK,QAAQ,SAAS,CAAC;AAC1C,YAAI,aAAa,aAAa;AAC9B,YAAI,QAAS,KAAK,QAAQ,CAAC;AAC3B,mBAAW,QAAQ,SAAU,MAAM;AACjC,oBAAU,cAAc,YAAY,MAAM,KAAK;AAAA,QACjD,CAAC;AAED,aAAK,WAAW,KAAK,QAAQ,YAAY,aAAa;AAEtD,YAAI,QAAS,KAAK,QAAQ,QAAQ,KAAK,QAAQ,SAAS,CAAC;AACzD,YAAI,aAAa,aAAa;AAC9B,kBAAU,OAAO,YAAY,gBAAgB,IAAI;AACjD,kBAAU,OAAO,YAAY,iBAAiB,IAAI;AAClD,aAAK,OAAO,MAAM,QAAQ,WAAW;AACrC,aAAK,SAAS,MAAM,UAAU,WAAW;AAEzC,aAAK,aAAa,aAAa,UAAU,KAAK,CAAC;AAC/C,aAAK,QAAQ,KAAK,aAAa,YAAY;AAE3C,aAAK,eAAe,MAAM,OAAO,KAAK,OAAO,IAAI,KAAK,cAAc,KAAK;AACzE,aAAK,gBAAgB,KAAK,MAAM;AAAA,MAClC;AAAA,MAEA,aAAa,cAAc;AACzB,cAAM,gBAAgB,aAAa,YAAY,aAAa;AAC5D,cAAM,EAAE,WAAW,cAAc,IAAI,KAAK;AAC1C,YAAI,KAAK,cAAc,UAAU;AAC/B,eAAK,cAAc,KAAK,cAAc,KAAK;AAC3C,cAAI,KAAK,SAAS;AAChB,gBAAI,IAAI;AACR,mBAAO,IAAI,KAAK,SAAS;AACvB,mBAAK,cAAc,aAAa,UAAU,KAAK,IAAI,CAAC;AACpD;AAAA,YACF;AAAA,UACF;AACA,gBAAM,EAAE,oBAAoB,0BAA0B,KAAK,IAAI;AAC/D,gBAAM,EAAE,qBAAqB,wBAAwB,IAAI,KAAK;AAC9D,iBAAO,KAAK,UAAU,MAAM,SAAS,KAAK,YAAY,KAAK,SAAS,kBAAkB,CAAC;AAAA,QACzF;AACA,eAAO,KAAK,UAAU,KAAK,QAAQ,MAAM,IAAI,CAAC;AAAA,MAChD;AAAA,MAEA,UAAU,eAAe;AACvB,cAAM,QAAQ,MAAM,cAAc,aAAa;AAC/C,YAAI,KAAK,MAAM;AACb,iBAAO,MAAM,IAAI,CAAC,SAAS,MAAM,UAAU,KAAK,MAAM,IAAI,CAAC;AAAA,QAC7D;AACA,eAAO;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,KAAK,cAAc;AACjB,YAAI,IAAI,KAAK;AACb,YAAI,IAAI,KAAK;AACb,aAAK,SAAS,aAAa,UAAU,MAAM,GAAG,IAAI,KAAK,OAAO;AAC9D,aAAK,UAAU,aAAa,WAAW,MAAM,GAAG,IAAI,KAAK,OAAO;AAChE,aAAK,QAAQ,KAAK,OAAO,OAAO,YAAY,EAAE;AAC9C,aAAK,SAAS,KAAK,QAAQ,OAAO,YAAY,EAAE;AAEhD,aAAK,SAAS,KAAK,QAAQ,UAAU,aAAa,UAAU,CAAC;AAC7D,aAAK,SAAS,KAAK,QAAQ,UAAU,aAAa,UAAU,CAAC;AAE7D,aAAK,YAAY,IAAI,KAAK,WAAW,aAAa,UAAU;AAAA,MAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,KAAK,SAAS,cAAc;AAC1B,YAAI,WAAW,MAAO,QAAO,KAAK,QAAQ,KAAK,SAAS;AACxD,YAAI,WAAW,SAAU,QAAO,KAAK,WAAW,KAAK,SAAS;AAC9D,YAAI,UAAU,MAAM,SAAS,KAAK,SAAS,IAAI,KAAK,QAAQ;AAC5D,YAAI,CAAC,SAAS;AACZ,eAAK,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,OAAO,IAAI,KAAK,OAAO,SAAS,OAAO,EAAE;AAAA,QACvF,OAAO;AAAA,QAEP;AACA,YAAI,SAAS,KAAK,IAAI,KAAK,SAAS,KAAK,MAAM,QAAQ,CAAC;AACxD,YAAI;AACJ,gBAAQ,KAAK,QAAQ;AAAA,UACnB,KAAK;AACH,qBAAS,KAAK,KAAK,SAAS,CAAC;AAC7B;AAAA,UACF,KAAK;AACH,qBAAS;AACT;AAAA,UACF;AACE,qBAAS;AAAA,QACb;AACA,YAAI,UAAU,UAAU,WAAW,SAAS,KAAK,MAAM,QAAQ;AAC7D,iBAAO,KAAK,UAAU,KAAK,WAAW,YAAY;AAAA,QACpD;AACA,YAAI,kBAAkB,KAAK,MAAM,SAAS,KAAK,UAAU,UAAU,KAAK,KAAK;AAC7E,eAAO,KAAK,SAAS,UAAU,QAAQ,KAAK,WAAW,iBAAiB,YAAY;AAAA,MACtF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAQ,WAAW;AACjB,YAAI,UAAU,CAAC;AACf,YAAI,KAAK,OAAO;AAEd,eAAK,OAAO,QAAQ,SAAU,OAAO,OAAO;AAC1C,oBAAQ,KAAK,KAAK,aAAa,KAAK,CAAC;AACrC,oBAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,GAAG,KAAK,CAAC;AAAA,UAC3E,GAAG,IAAI;AAAA,QACT,OAAO;AACL,kBAAQ,KAAK,KAAK,aAAa,CAAC,CAAC;AACjC,kBAAQ,KAAK,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,QAAQ,KAAK,GAAG,KAAK,KAAK,CAAC;AAAA,QAChF;AACA,YAAI,WAAW;AACb,kBAAQ,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI,aAAa,UAAU,CAAC;AAAA,QAChE;AACA,eAAO,KAAK,oBAAoB,UAAU,QAAQ,KAAK,EAAE,CAAC;AAAA,MAC5D;AAAA,MAEA,aAAa,QAAQ;AACnB,YAAI,IAAI,KAAK,IAAI;AACjB,YAAI;AACJ,YAAI,KAAK,KAAK,GAAG;AACf,qBAAW,KAAK,IAAI,YAAY,UAAU,IAAI,WAAW;AAAA,QAC3D,OAAO;AACL,cAAI,KAAK,GAAG;AACV,uBAAW;AAAA,UACb,OAAO;AACL,uBAAW,UAAU,IAAI,WAAW;AACpC,gBAAI,KAAK,OAAO;AAEd,kBAAI,YAAY,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,MAAK;AAC1D,kBAAI,WAAW;AACb,2BAAW,UAAU,IAAI,WAAW;AAAA,cACtC;AACA,kBAAI,UAAU,GAAG;AACf,oBAAI,IAAI;AACR,uBAAO,KAAK,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,MAAK,aAAa;AAC5D;AAAA,gBACF;AACA,oBAAI,KAAK,MAAM,KAAK,CAAC,EAAE,IAAI,CAAC,aAAa,MAAK,aAAa;AACzD,6BAAW;AAAA,gBACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,eAAO,KAAK,MAAM,QAAQ;AAAA,MAC5B;AAAA,MAEA,oBAAoB,eAAe,SAAS;AAC1C,YAAI,KAAK,aAAa,KAAK,KAAK,aAAa,EAAE,QAAQ;AACrD,cAAI;AACF,gBAAI,SAAS;AACb,qBAAS,IAAI,KAAK,aAAa,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,uBAAS,OAAO,KAAK,aAAa,EAAE,CAAC,CAAC;AAAA,YACxC;AACA,mBAAO,OAAO,OAAO;AAAA,UACvB,SAAS,GAAG;AACV,mBAAO;AAAA,UACT;AAAA,QACF,OAAO;AACL,iBAAO;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAaA,SAAS,SAAS,WAAW,uBAAuB,cAAc;AAChE,YAAI,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,SAAS,QAAQ;AACrD,YAAI,KAAK,KAAK,gBAAgB,KAAK,OAAO;AACxC,cAAI,WAAW,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,CAAC;AAC3D,iBAAO,oBAAoB,aAAa;AACtC,uBAAW,KAAK,MAAM,SAAS,CAAC,EAAE,SAAS,IAAI,CAAC;AAAA,UAClD;AACA,cAAI,EAAE,oBAAoB,cAAc;AACtC,mBAAO,KAAK,MAAM,UAAU;AAAA,UAC9B;AAAA,QACF;AACA,YAAI,cAAc,MAAM,OAAO,KAAK,KAAK,WAAW;AACpD,YAAI,QAAQ,YAAY,KAAK,MAAM,OAAO,IAAI;AAC9C,YAAI,eAAe,MAAM,OAAO,KAAK,KAAK,YAAY;AACtD,YAAI,OAAO,KAAK,MAAM,OAAO;AAC7B,YAAI,MAAM,KAAK,SAAS,KAAK,cAAc,KAAK;AAChD,YAAI,sBAAuB,SAAQ,KAAK,YAAY;AACpD,YAAI,UAAU,MAAM,SAAS,MAAM,KAAK,KAAK,QAAQ;AACrD,kBAAU,MAAM,IAAI,SAAS,KAAK,KAAK,KAAK,MAAM;AAClD,kBAAU,cAAc,UAAU;AAClC,eAAO,KAAK,YAAY,MAAM,SAAS,KAAK;AAAA,MAC9C;AAAA,MAEA,YAAY,MAAM,SAAS,OAAO;AAChC,eAAO,KAAK,oBAAoB,UAAU,IAAI;AAC9C,gBAAQ,KAAK,oBAAoB,UAAU,KAAK;AAChD,YAAI,KAAK,MAAM,GAAG;AAChB,oBAAU,KAAK,oBAAoB,QAAQ,OAAO;AAAA,QACpD;AACA,eAAO,OAAO,UAAU;AAAA,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,WAAW;AACpB,YAAI,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,eAAe,WAAW;AAC9D,YAAI,UAAU,MAAM,OAAO,KAAK,MAAM,QAAQ,KAAK,KAAK;AACxD,YAAI,QAAQ,YAAY,KAAK,MAAM,aAAa,IAAI;AACpD,eAAO,KAAK,oBAAoB,UAAU,OAAO,UAAU,KAAK;AAAA,MAClE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,UAAU,WAAW,cAAc;AACjC,YAAI,OAAO,KAAK,MAAM,KAAK,KAAK,IAAI,SAAS,QAAQ;AACrD,YAAI,KAAK,KAAK,gBAAgB,KAAK,OAAO;AACxC,cAAI,WAAW,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,CAAC;AAC3D,iBAAO,oBAAoB,aAAa;AACtC,uBAAW,KAAK,MAAM,SAAS,CAAC,EAAE,SAAS,IAAI,CAAC;AAAA,UAClD;AACA,cAAI,EAAE,oBAAoB,cAAc;AACtC,mBAAO,KAAK,MAAM,UAAU;AAAA,UAC9B;AAAA,QACF;AACA,YAAI,QAAQ,YAAY,KAAK,MAAM,OAAO,IAAI;AAC9C,YAAI,UAAU,MAAM,OAAO,KAAK,KAAK,KAAK;AAC1C,eAAO,KAAK,YAAY,MAAM,SAAS,KAAK;AAAA,MAC9C;AAAA,IACF;AAEA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhB,cAAc;AAAA,MAAC;AAAA,MAEf,KAAK,SAAS;AACZ,YAAI,OAAO,YAAY,UAAU;AAC/B,gBAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,mBAAmB;AAAA,QAC9C;AACA,eAAO;AAAA,MACT;AAAA,MAEA,OAAO;AAAA,MAAC;AAAA,MAER,oBAAoB;AAAA,MAAC;AAAA,IACvB;AAEA,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOhB,YAAY,cAAc;AACxB,aAAK,eAAe;AAAA,MACtB;AAAA,MAEA,KAAK,cAAc;AACjB,YAAI,IAAI,KAAK;AACb,YAAI,YAAY,KAAK,aAAa;AAClC,aAAK,aAAa,IAAI;AACtB,aAAK,SAAS,cAAc,aAAa,YAAY,WAAW,KAAK,UAAU;AAAA,MACjF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,WAAW,OAAO;AACpB,iBAAO,KAAK,aAAa,KAAK,KAAK,QAAQ,KAAK,UAAU;AAAA,QAC5D;AACA,YAAI,WAAW,UAAU;AACvB,iBAAO,KAAK,aAAa,KAAK,QAAQ;AAAA,QACxC;AACA,cAAM,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,oBAAoB,KAAK,aAAa,OAAO,EAAE;AAC3F,eAAO,KAAK,aAAa,KAAK,KAAK,SAAS,IAAI,OAAO;AAAA,MACzD;AAAA,MAEA,oBAAoB;AAAA,MAAC;AAAA,IACvB;AAEA,aAAS,gBAAgB,MAAM;AAC7B,aAAO,KAAK,OAAO,CAAC,MAAM,MAAM,UAAa,MAAM,IAAI,EAAE,MAAM;AAAA,IACjE;AAGA,aAAS,UAAU,MAAM,MAAM,OAAO,WAAW;AAC/C,UAAI,QAAQ,MAAM,MAAM,GAAG;AAC3B,UAAI,MAAM,SAAS,GAAG;AACpB,cAAM,CAAC,IAAI,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,MAAM,CAAC,EAAE,OAAO,CAAC;AAC/D,gBAAQ,MAAM,KAAK,EAAE;AACrB,kBAAU,KAAK,IAAI,aAAa,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AAAA,MACpF,OAAO;AACL,kBAAU,KAAK,IAAI,aAAa,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AAAA,MAC1D;AAAA,IACF;AAEA,aAAS,cAAc,gBAAgB,eAAe,MAAM;AAC1D,UAAI,MAAM,eAAe,aAAa;AACtC,eAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,eAAO,IAAI,eAAe,gBAAgB,CAAC;AAAA,MAC7C;AACA,aAAO;AAAA,IACT;AAEA,aAAS,WAAW,GAAG,GAAG;AACxB,aAAO,IAAI,IAAI;AAAA,IACjB;AAEA,QAAI,aAAa;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,IAAAA,QAAO,UAAU;AACjB,IAAAA,QAAO,QAAQ,cAAc;AAC7B,IAAAA,QAAO,QAAQ,cAAc;AAAA;AAAA;;;ACxZ7B;AAAA,qDAAAC,UAAAC,SAAA;AAAA;AAAA,QAAM,EAAE,MAAAC,OAAM,MAAM,IAAI;AACxB,QAAM,OAAO;AACb,QAAM,EAAE,aAAa,YAAY,IAAI;AAErC,KAAC,WAAY;AACX,eAAS,KAAK,OAAO,KAAK;AACxB,YAAI,MAAM,GAAG,IAAI,GAAG;AAClB,iBAAO,KAAK,OAAO,MAAM,CAAC;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AAEA,eAAS,YAAY,OAAO;AAC1B,YAAI,QAAQ,CAAC;AACb,cAAM,QAAQ,SAAU,KAAK,UAAU;AACrC,cAAI,MAAM;AACV,cAAI,QAAQ,SAAU,MAAM;AAC1B,iBAAK,IAAI;AAET,iBAAK,IAAI,WAAW,KAAK,OAAO,GAAG,IAAI;AACvC,kBAAM,UAAU,KAAK,WAAW;AAChC,kBAAM,UAAU,KAAK,WAAW;AAChC,gBAAI,UAAU,GAAG;AACf,uBAAS,KAAK,GAAG,KAAK,SAAS,MAAM;AACnC,sBAAM,KAAK,IAAI,EAAE,IAAI;AAAA,cACvB;AAAA,YACF;AACA,kBAAM,KAAK,IAAI;AAAA,UACjB,CAAC;AACD,iBAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAClC,kBAAM,GAAG;AACT,gBAAI,MAAM,GAAG,IAAI,EAAG,QAAO,MAAM,GAAG;AAAA,UACtC,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,eAAS,SAAS,OAAO;AACvB,YAAI,KAAK;AACT,cAAM,QAAQ,SAAU,KAAK;AAC3B,cAAI,QAAQ,SAAU,MAAM;AAC1B,iBAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,WAAW,EAAE;AAAA,UAChD,CAAC;AAAA,QACH,CAAC;AACD,eAAO;AAAA,MACT;AAEA,eAAS,UAAU,OAAO;AACxB,eAAO,MAAM;AAAA,MACf;AAEA,eAAS,cAAc,OAAO,OAAO;AACnC,YAAI,QAAQ,MAAM;AAClB,YAAI,QAAQ,MAAM,IAAI,KAAK,MAAM,WAAW;AAC5C,YAAI,QAAQ,MAAM;AAClB,YAAI,QAAQ,MAAM,IAAI,KAAK,MAAM,WAAW;AAC5C,YAAI,YAAY,EAAE,QAAQ,SAAS,QAAQ;AAE3C,YAAI,QAAQ,MAAM;AAClB,YAAI,QAAQ,MAAM,IAAI,KAAK,MAAM,WAAW;AAC5C,YAAI,QAAQ,MAAM;AAClB,YAAI,QAAQ,MAAM,IAAI,KAAK,MAAM,WAAW;AAC5C,YAAI,YAAY,EAAE,QAAQ,SAAS,QAAQ;AAE3C,eAAO,aAAa;AAAA,MACtB;AAEA,eAAS,eAAe,MAAM,GAAG,GAAG;AAClC,YAAI,QAAQ,KAAK,IAAI,KAAK,SAAS,GAAG,CAAC;AACvC,YAAI,OAAO,EAAE,GAAM,EAAK;AACxB,iBAAS,IAAI,GAAG,KAAK,OAAO,KAAK;AAC/B,cAAI,MAAM,KAAK,CAAC;AAChB,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAI,cAAc,MAAM,IAAI,CAAC,CAAC,GAAG;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAAS,SAAS,MAAM,GAAG,MAAM,MAAM;AACrC,iBAAS,IAAI,MAAM,IAAI,MAAM,KAAK;AAChC,cAAI,eAAe,MAAM,GAAG,CAAC,GAAG;AAC9B,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAAS,gBAAgB,OAAO;AAC9B,cAAM,QAAQ,SAAU,KAAK,UAAU;AACrC,cAAI,QAAQ,SAAU,MAAM;AAC1B,qBAAS,IAAI,GAAG,IAAI,KAAK,SAAS,KAAK;AACrC,kBAAI,cAAc,IAAI,YAAY,IAAI;AACtC,0BAAY,IAAI,KAAK;AACrB,0BAAY,IAAI,KAAK,IAAI;AACzB,0BAAY,UAAU,KAAK;AAC3B,yBAAW,aAAa,MAAM,WAAW,CAAC,CAAC;AAAA,YAC7C;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,eAAS,gBAAgB,UAAU;AACjC,iBAAS,WAAW,SAAS,SAAS,GAAG,YAAY,GAAG,YAAY;AAClE,cAAI,cAAc,SAAS,QAAQ;AACnC,mBAAS,cAAc,GAAG,cAAc,YAAY,QAAQ,eAAe;AACzE,gBAAI,OAAO,YAAY,WAAW;AAClC,qBAAS,IAAI,GAAG,IAAI,KAAK,SAAS,KAAK;AACrC,kBAAI,cAAc,IAAI,YAAY;AAClC,0BAAY,IAAI,KAAK,IAAI;AACzB,0BAAY,IAAI,KAAK;AACrB,0BAAY,OAAO,cAAc,GAAG,GAAG,WAAW;AAAA,YACpD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,eAAS,WAAW,MAAM,KAAK;AAC7B,YAAI,IAAI;AACR,eAAO,IAAI,IAAI,UAAU,IAAI,CAAC,EAAE,IAAI,KAAK,GAAG;AAC1C;AAAA,QACF;AACA,YAAI,OAAO,GAAG,GAAG,IAAI;AAAA,MACvB;AAEA,eAAS,YAAY,OAAO;AAC1B,YAAI,QAAQ,UAAU,KAAK;AAC3B,YAAI,QAAQ,SAAS,KAAK;AAC1B,cAAM,aAAa,KAAK,eAAe,KAAK,EAAE;AAC9C,iBAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,mBAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,gBAAI,CAAC,eAAe,OAAO,GAAG,CAAC,GAAG;AAChC,kBAAI,OAAO,EAAE,GAAM,GAAM,SAAS,GAAG,SAAS,EAAE;AAChD;AACA,qBAAO,IAAI,SAAS,CAAC,eAAe,OAAO,GAAG,CAAC,GAAG;AAChD,qBAAK;AACL;AAAA,cACF;AACA,kBAAI,KAAK,IAAI;AACb,qBAAO,KAAK,SAAS,SAAS,OAAO,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,OAAO,GAAG;AACvE,qBAAK;AACL;AAAA,cACF;AACA,kBAAI,OAAO,IAAI,KAAK,IAAI;AACxB,mBAAK,IAAI,KAAK;AACd,mBAAK,IAAI,KAAK;AACd,cAAAA,MAAK,mBAAmB,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG;AAC3C,yBAAW,MAAM,MAAM,CAAC,CAAC;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,eAAS,cAAc,MAAM;AAC3B,eAAO,KAAK,IAAI,SAAU,KAAK;AAC7B,cAAI,CAAC,MAAM,QAAQ,GAAG,GAAG;AACvB,gBAAI,MAAM,OAAO,KAAK,GAAG,EAAE,CAAC;AAC5B,kBAAM,IAAI,GAAG;AACb,gBAAI,MAAM,QAAQ,GAAG,GAAG;AACtB,oBAAM,IAAI,MAAM;AAChB,kBAAI,QAAQ,GAAG;AAAA,YACjB,OAAO;AACL,oBAAM,CAAC,KAAK,GAAG;AAAA,YACjB;AAAA,UACF;AACA,iBAAO,IAAI,IAAI,SAAU,MAAM;AAC7B,mBAAO,IAAI,KAAK,IAAI;AAAA,UACtB,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,eAAS,gBAAgB,MAAM;AAC7B,YAAI,WAAW,cAAc,IAAI;AACjC,oBAAY,QAAQ;AACpB,oBAAY,QAAQ;AACpB,wBAAgB,QAAQ;AACxB,wBAAgB,QAAQ;AACxB,eAAO;AAAA,MACT;AAEA,MAAAD,QAAO,UAAU;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe,kBAAkB,WAAW,gBAAgB,KAAK,CAAC;AAAA,QAClE,gBAAgB,kBAAkB,WAAW,iBAAiB,KAAK,CAAC;AAAA,MACtE;AAAA,IACF,GAAG;AAEH,aAAS,kBAAkB,SAAS,cAAc,GAAG,WAAW;AAC9D,aAAO,SAAU,MAAM,OAAO;AAC5B,YAAI,SAAS,CAAC;AACd,YAAI,WAAW,CAAC;AAChB,YAAI,OAAO,CAAC;AACZ,cAAM,QAAQ,SAAU,KAAK;AAC3B,cAAI,QAAQ,SAAU,MAAM;AAC1B,iBAAK,KAAK,OAAO,KAAK,KAAK,GAAG;AAC5B,uBAAS,KAAK,IAAI;AAAA,YACpB,OAAO;AACL,qBAAO,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,YAAY,KAAK,GAAG,SAAS;AAAA,YACrF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAED,aAAK,QAAQ,SAAU,KAAK,OAAO;AACjC,cAAI,OAAO,QAAQ,UAAU;AAC3B,mBAAO,KAAK,IAAI;AAAA,UAClB;AAAA,QACF,CAAC;AAGD,iBAAS,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7C,cAAI,OAAO,SAAS,CAAC;AACrB,cAAI,OAAO,KAAK,OAAO;AACvB,cAAI,MAAM,KAAK,CAAC;AAChB,cAAI,gBAAgB,OAAO,GAAG;AAC9B,cAAI,eAAe,OAAO,KAAK,GAAG,MAAM,WAAW,IAAI;AACvD,cAAI,OAAO,kBAAkB,UAAU;AACrC,qBAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,+BAAiB,IAAI,OAAO,MAAM,CAAC;AACnC,kBAAI,OAAO,KAAK,MAAM,CAAC,MAAM,UAAU;AACrC;AAAA,cACF;AAAA,YACF;AAAA,UACF,OAAO;AACL,4BAAgB,iBAAiB,iBAAiB,KAAK,eAAe,IAAI;AAC1E,gBAAI,CAAC,KAAK,GAAG,KAAK,KAAK,GAAG,IAAI,eAAe;AAC3C,mBAAK,GAAG,IAAI;AAAA,YACd;AAAA,UACF;AAEA,cAAI,KAAK,YAAY,IAAI,eAAe;AACtC,gBAAI,IAAI;AACR,mBAAO,eAAe,KAAK,KAAK,YAAY,IAAI,eAAe;AAC7D,kBAAI,OAAO,KAAK,MAAM,CAAC,MAAM,UAAU;AACrC,oBAAI,MAAM,KAAK,OAAO,KAAK,YAAY,IAAI,iBAAiB,YAAY;AACxE,iCAAiB;AACjB,uBAAO,MAAM,CAAC,KAAK;AACnB;AAAA,cACF;AACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,eAAO,OAAO,MAAM,QAAQ,IAAI;AAChC,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,eAAK,CAAC,IAAI,KAAK,IAAI,WAAW,KAAK,CAAC,KAAK,CAAC;AAAA,QAC5C;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC7PA;AAAA,4CAAAE,UAAAC,SAAA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,cAAc;AAEpB,QAAMC,SAAN,cAAoB,MAAM;AAAA,MACxB,YAAY,MAAM;AAChB,cAAM;AAEN,cAAM,UAAU,MAAM,aAAa,IAAI;AACvC,eAAO,eAAe,MAAM,WAAW;AAAA,UACrC,OAAO;AAAA,UACP,YAAY,QAAQ;AAAA,QACtB,CAAC;AAED,YAAI,QAAQ,OAAO;AACjB,kBAAQ,OAAO,QAAQ,OAAO;AAAA,YAC5B,KAAK;AACH,oBAAM,cAAc,MAAM,IAAI;AAC9B;AAAA,YACF,KAAK;AACH,oBAAM,cAAc,QAAQ,KAAK;AACjC;AAAA,YACF,KAAK;AACH,oBAAM,cAAc,SAAS,QAAQ,OAAO,EAAE,CAAC;AAC/C;AAAA,YACF;AACE,oBAAM,cAAc,MAAM,IAAI;AAC9B,oBAAM,KAAK,yEAAyE,OAAO,QAAQ,KAAK,EAAE;AAAA,UAC9G;AACA,iBAAO,eAAe,MAAM,YAAY;AAAA,YACtC,MAAM;AACJ,qBAAO,MAAM,cAAc;AAAA,YAC7B;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,WAAW;AACT,YAAIC,SAAQ;AACZ,YAAI,iBAAiB,KAAK,QAAQ,QAAQ,KAAK,QAAQ,KAAK;AAC5D,YAAI,gBAAgB;AAClB,UAAAA,SAAQ,CAAC,KAAK,QAAQ,IAAI;AAC1B,cAAI,KAAK,QAAQ;AACf,YAAAA,OAAM,KAAK,MAAMA,QAAO,IAAI;AAAA,UAC9B;AAAA,QACF,OAAO;AACL,eAAK,QAAQ,MAAM,OAAO,CAAC;AAAA,QAC7B;AAEA,YAAI,QAAQ,YAAY,gBAAgBA,MAAK;AAE7C,cAAM,QAAQ,SAAU,KAAK;AAC3B,cAAI,QAAQ,SAAU,MAAM;AAC1B,iBAAK,kBAAkB,KAAK,SAAS,KAAK;AAAA,UAC5C,GAAG,IAAI;AAAA,QACT,GAAG,IAAI;AAEP,oBAAY,cAAc,KAAK,QAAQ,WAAW,KAAK;AACvD,oBAAY,eAAe,KAAK,QAAQ,YAAY,KAAK;AAEzD,cAAM,QAAQ,SAAU,KAAK;AAC3B,cAAI,QAAQ,SAAU,MAAM;AAC1B,iBAAK,KAAK,KAAK,OAAO;AAAA,UACxB,GAAG,IAAI;AAAA,QACT,GAAG,IAAI;AAEP,YAAI,SAAS,CAAC;AAEd,iBAAS,WAAW,GAAG,WAAW,MAAM,QAAQ,YAAY;AAC1D,cAAI,MAAM,MAAM,QAAQ;AACxB,cAAI,cAAc,KAAK,QAAQ,WAAW,QAAQ;AAElD,cAAI,aAAa,KAAK,CAAC,KAAK,QAAQ,MAAM,WAAY,YAAY,KAAK,gBAAiB;AACtF,mBAAO,KAAK,OAAO,MAAM;AAAA,UAC3B;AAEA,mBAAS,UAAU,GAAG,UAAU,aAAa,WAAW;AACtD,mBAAO,KAAK,SAAS,MAAM;AAAA,UAC7B;AAEA,cAAI,WAAW,KAAK,MAAM,QAAQ;AAChC,mBAAO,KAAK,UAAU,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,eAAO,OAAO,KAAK,IAAI;AAAA,MACzB;AAAA,MAEA,IAAI,QAAQ;AACV,YAAI,MAAM,KAAK,SAAS,EAAE,MAAM,IAAI;AACpC,eAAO,IAAI,CAAC,EAAE;AAAA,MAChB;AAAA,IACF;AAEA,IAAAD,OAAM,QAAQ,MAAM,MAAM,MAAM;AAEhC,aAAS,OAAO,KAAK,SAAS,QAAQ;AACpC,UAAI,OAAO,CAAC;AACZ,UAAI,QAAQ,SAAU,MAAM;AAC1B,aAAK,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,MAC9B,CAAC;AACD,UAAI,MAAM,KAAK,KAAK,EAAE;AACtB,UAAI,IAAI,OAAQ,QAAO,KAAK,GAAG;AAAA,IACjC;AAEA,IAAAD,QAAO,UAAUC;AAAA;AAAA;;;ACzGjB;AAAA,wCAAAE,UAAAC,SAAA;AAAA;AAAA,IAAAA,QAAO,UAAU;AAAA;AAAA;;;ACAjB,IAAO;AAAP;AAAA;AAAA;AAAA,IAAO,sBAAQ,MAAM;AAEpB,aAAO;AAAA,IACR;AAAA;AAAA;;;ACKe,SAAR,YAA6BC,SAAQ,UAAU,CAAC,GAAG;AACzD,MAAI,OAAOA,YAAW,YAAYA,QAAO,WAAW,GAAG;AACtD,WAAO;AAAA,EACR;AAEA,QAAM;AAAA,IACL,oBAAoB;AAAA,IACpB,uBAAuB;AAAA,EACxB,IAAI;AAEJ,MAAI,CAAC,sBAAsB;AAC1B,IAAAA,UAAS,UAAUA,OAAM;AAAA,EAC1B;AAEA,MAAIA,QAAO,WAAW,GAAG;AACxB,WAAO;AAAA,EACR;AAEA,MAAI,QAAQ;AACZ,QAAM,wBAAwB,EAAC,iBAAiB,CAAC,kBAAiB;AAElE,aAAW,EAAC,SAAS,UAAS,KAAK,UAAU,QAAQA,OAAM,GAAG;AAC7D,UAAM,YAAY,UAAU,YAAY,CAAC;AAGzC,QAAI,aAAa,MAAS,aAAa,OAAQ,aAAa,KAAO;AAClE;AAAA,IACD;AAGA,QACE,aAAa,QAAW,aAAa,QACnC,cAAc,OAChB;AACD;AAAA,IACD;AAGA,QACE,aAAa,OAAU,aAAa,OACjC,aAAa,QAAW,aAAa,QACrC,aAAa,QAAW,aAAa,QACrC,aAAa,QAAW,aAAa,QACrC,aAAa,SAAW,aAAa,OACxC;AACD;AAAA,IACD;AAGA,QAAI,aAAa,SAAW,aAAa,OAAS;AACjD;AAAA,IACD;AAGA,QAAI,aAAa,SAAW,aAAa,OAAS;AACjD;AAAA,IACD;AAGA,QAAI,+BAA+B,KAAK,SAAS,GAAG;AACnD;AAAA,IACD;AAGA,QAAI,oBAAW,EAAE,KAAK,SAAS,GAAG;AACjC,eAAS;AACT;AAAA,IACD;AAEA,aAAS,eAAe,WAAW,qBAAqB;AAAA,EACzD;AAEA,SAAO;AACR;AAjFA,IAIM,WAEA;AANN;AAAA;AAAA;AAAA;AACA;AACA;AAEA,IAAM,YAAY,IAAI,KAAK,UAAU;AAErC,IAAM,iCAAiC,WAAC,uCAAmC,GAAC;AAAA;AAAA;;;ACJ7D,SAAR,WAA4BC,SAAQ;AAC1C,MAAI,YAAY;AAEhB,aAAW,QAAQA,QAAO,MAAM,IAAI,GAAG;AACtC,gBAAY,KAAK,IAAI,WAAW,YAAY,IAAI,CAAC;AAAA,EAClD;AAEA,SAAO;AACR;AAVA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA,yCAAAC,UAAAC,SAAA;AAAA,IAAAA,QAAA;AAAA,MACC,QAAU;AAAA,QACT,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,QAAU;AAAA,QACT,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,OAAS;AAAA,QACR,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,MAAQ;AAAA,QACP,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,cAAgB;AAAA,QACf,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,cAAgB;AAAA,QACf,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,SAAW;AAAA,QACV,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,MACA,OAAS;AAAA,QACR,SAAW;AAAA,QACX,KAAO;AAAA,QACP,UAAY;AAAA,QACZ,OAAS;AAAA,QACT,aAAe;AAAA,QACf,QAAU;AAAA,QACV,YAAc;AAAA,QACd,MAAQ;AAAA,MACT;AAAA,IACD;AAAA;AAAA;;;ACjFA;AAAA,uCAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,YAAW;AAEjB,IAAAD,QAAO,UAAUC;AAEjB,IAAAD,QAAO,QAAQ,UAAUC;AAAA;AAAA;;;ACmDV,SAAR,UAA2B,OAAO,SAAS;AACjD,MAAI,EAAE,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,IAAI;AACzD,UAAM,IAAI,UAAU,8CAA8C;AAAA,EACnE;AAEA,YAAU;AAAA,IACT,YAAY;AAAA,IACZ,8BAA8B;AAAA,IAC9B,GAAG;AAAA,EACJ;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,YAAQ,MAAM,IAAI,OAAK,EAAE,KAAK,CAAC,EAC7B,OAAO,OAAK,EAAE,MAAM,EACpB,KAAK,GAAG;AAAA,EACX,OAAO;AACN,YAAQ,MAAM,KAAK;AAAA,EACpB;AAEA,MAAI,MAAM,WAAW,GAAG;AACvB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,QAAQ,WAAW,QACpC,CAAAC,YAAUA,QAAO,YAAY,IAC7B,CAAAA,YAAUA,QAAO,kBAAkB,QAAQ,MAAM;AAEpD,QAAM,cAAc,QAAQ,WAAW,QACpC,CAAAA,YAAUA,QAAO,YAAY,IAC7B,CAAAA,YAAUA,QAAO,kBAAkB,QAAQ,MAAM;AAEpD,MAAI,MAAM,WAAW,GAAG;AACvB,QAAI,WAAW,KAAK,KAAK,GAAG;AAC3B,aAAO;AAAA,IACR;AAEA,WAAO,QAAQ,aAAa,YAAY,KAAK,IAAI,YAAY,KAAK;AAAA,EACnE;AAEA,QAAM,eAAe,UAAU,YAAY,KAAK;AAEhD,MAAI,cAAc;AACjB,YAAQ,kBAAkB,OAAO,aAAa,aAAa,QAAQ,4BAA4B;AAAA,EAChG;AAEA,UAAQ,MAAM,QAAQ,oBAAoB,EAAE;AAC5C,UAAQ,QAAQ,+BAA+B,6BAA6B,OAAO,WAAW,IAAI,YAAY,KAAK;AAEnH,MAAI,QAAQ,YAAY;AACvB,YAAQ,YAAY,MAAM,OAAO,CAAC,CAAC,IAAI,MAAM,MAAM,CAAC;AAAA,EACrD;AAEA,SAAO,YAAY,OAAO,WAAW;AACtC;AA7GA,IAAM,WACA,WACA,iBACA,YACA,YAEA,oBACA,2BACA,wBAEA,mBA+BA,8BAMA;AA/CN;AAAA;AAAA;AAAA,IAAM,YAAY;AAClB,IAAM,YAAY;AAClB,IAAM,kBAAkB;AACxB,IAAM,aAAa;AACnB,IAAM,aAAa;AAEnB,IAAM,qBAAqB,IAAI,OAAO,MAAM,WAAW,MAAM;AAC7D,IAAM,4BAA4B,IAAI,OAAO,WAAW,SAAS,WAAW,QAAQ,IAAI;AACxF,IAAM,yBAAyB,IAAI,OAAO,SAAS,WAAW,QAAQ,IAAI;AAE1E,IAAM,oBAAoB,CAACA,SAAQ,aAAa,aAAaC,kCAAiC;AAC7F,UAAI,kBAAkB;AACtB,UAAI,kBAAkB;AACtB,UAAI,sBAAsB;AAC1B,UAAI,0BAA0B;AAE9B,eAAS,QAAQ,GAAG,QAAQD,QAAO,QAAQ,SAAS;AACnD,cAAM,YAAYA,QAAO,KAAK;AAC9B,kCAA0B,QAAQ,IAAIA,QAAO,QAAQ,CAAC,MAAM,MAAM;AAElE,YAAI,mBAAmB,UAAU,KAAK,SAAS,GAAG;AACjD,UAAAA,UAASA,QAAO,MAAM,GAAG,KAAK,IAAI,MAAMA,QAAO,MAAM,KAAK;AAC1D,4BAAkB;AAClB,gCAAsB;AACtB,4BAAkB;AAClB;AAAA,QACD,WAAW,mBAAmB,uBAAuB,UAAU,KAAK,SAAS,MAAM,CAAC,2BAA2BC,gCAA+B;AAC7I,UAAAD,UAASA,QAAO,MAAM,GAAG,QAAQ,CAAC,IAAI,MAAMA,QAAO,MAAM,QAAQ,CAAC;AAClE,gCAAsB;AACtB,4BAAkB;AAClB,4BAAkB;AAAA,QACnB,OAAO;AACN,4BAAkB,YAAY,SAAS,MAAM,aAAa,YAAY,SAAS,MAAM;AACrF,gCAAsB;AACtB,4BAAkB,YAAY,SAAS,MAAM,aAAa,YAAY,SAAS,MAAM;AAAA,QACtF;AAAA,MACD;AAEA,aAAOA;AAAA,IACR;AAEA,IAAM,+BAA+B,CAAC,OAAO,gBAAgB;AAC5D,sBAAgB,YAAY;AAE5B,aAAO,MAAM,WAAW,iBAAiB,WAAS,YAAY,KAAK,CAAC;AAAA,IACrE;AAEA,IAAM,cAAc,CAAC,OAAO,gBAAgB;AAC3C,gCAA0B,YAAY;AACtC,6BAAuB,YAAY;AAEnC,aAAO,MACL,WAAW,wBAAwB,CAAC,OAAO,SAAS,WAAW,CAAC,KAAK,GAAG,EAAE,SAAS,MAAM,OAAO,SAAS,MAAM,MAAM,CAAC,IAAI,QAAQ,YAAY,KAAK,CAAC,EACpJ,WAAW,2BAA2B,CAAC,GAAG,eAAe,YAAY,UAAU,CAAC;AAAA,IACnF;AAAA;AAAA;;;ACtDA,IAAAE,sBAAA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,CAAC,EAAC,YAAY,MAAK,IAAI,CAAC,MAAM;AAC9C,YAAM,UAAU;AAAA,QACf;AAAA,QACA;AAAA,MACD,EAAE,KAAK,GAAG;AAEV,aAAO,IAAI,OAAO,SAAS,YAAY,SAAY,GAAG;AAAA,IACvD;AAAA;AAAA;;;ACTA,IAAAC,sBAAA;AAAA,gEAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,aAAY;AAElB,IAAAD,QAAO,UAAU,CAAAE,YAAU,OAAOA,YAAW,WAAWA,QAAO,QAAQD,WAAU,GAAG,EAAE,IAAIC;AAAA;AAAA;;;ACH1F,IAAAC,mCAAA;AAAA,6EAAAC,UAAAC,SAAA;AAAA;AAGA,QAAM,uBAAuB,eAAa;AACzC,UAAI,OAAO,MAAM,SAAS,GAAG;AAC5B,eAAO;AAAA,MACR;AAIA,UACC,aAAa,SACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd,cAAc;AAAA;AAAA,MAEb,SAAU,aAAa,aAAa,SAAU,cAAc;AAAA,MAE5D,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa;AAAA,MAEpC,SAAU,aAAa,aAAa,SACpC,SAAU,aAAa,aAAa;AAAA,MAEpC,UAAW,aAAa,aAAa;AAAA,MAErC,UAAW,aAAa,aAAa;AAAA,MAErC,UAAW,aAAa,aAAa,SAEtC;AACD,eAAO;AAAA,MACR;AAEA,aAAO;AAAA,IACR;AAEA,IAAAA,QAAO,UAAU;AACjB,IAAAA,QAAO,QAAQ,UAAU;AAAA;AAAA;;;ACjDzB,IAAAC,uBAAA;AAAA,iEAAAC,UAAAC,SAAA;AAAA;AAEA,IAAAA,QAAO,UAAU,WAAY;AAE3B,aAAO;AAAA,IACT;AAAA;AAAA;;;ACLA,IAAAC,wBAAA;AAAA,kEAAAC,UAAAC,SAAA;AAAA;AACA,QAAMC,aAAY;AAClB,QAAM,uBAAuB;AAC7B,QAAM,aAAa;AAEnB,QAAMC,eAAc,CAAAC,YAAU;AAC7B,UAAI,OAAOA,YAAW,YAAYA,QAAO,WAAW,GAAG;AACtD,eAAO;AAAA,MACR;AAEA,MAAAA,UAASF,WAAUE,OAAM;AAEzB,UAAIA,QAAO,WAAW,GAAG;AACxB,eAAO;AAAA,MACR;AAEA,MAAAA,UAASA,QAAO,QAAQ,WAAW,GAAG,IAAI;AAE1C,UAAI,QAAQ;AAEZ,eAAS,IAAI,GAAG,IAAIA,QAAO,QAAQ,KAAK;AACvC,cAAM,OAAOA,QAAO,YAAY,CAAC;AAGjC,YAAI,QAAQ,MAAS,QAAQ,OAAQ,QAAQ,KAAO;AACnD;AAAA,QACD;AAGA,YAAI,QAAQ,OAAS,QAAQ,KAAO;AACnC;AAAA,QACD;AAGA,YAAI,OAAO,OAAQ;AAClB;AAAA,QACD;AAEA,iBAAS,qBAAqB,IAAI,IAAI,IAAI;AAAA,MAC3C;AAEA,aAAO;AAAA,IACR;AAEA,IAAAH,QAAO,UAAUE;AAEjB,IAAAF,QAAO,QAAQ,UAAUE;AAAA;AAAA;;;AC9CzB;AAAA,wCAAAE,UAAAC,SAAA;AAAA;AAEA,QAAMC,eAAc;AAEpB,aAASC,WAAW,MAAM,MAAM;AAC9B,UAAI,CAAC,KAAM,QAAO;AAElB,aAAO,QAAQ,CAAC;AAChB,YAAM,QAAQ,KAAK,SAAS;AAG5B,UAAI,UAAU,OAAQ,QAAO;AAE7B,YAAM,QAAQ,KAAK,SAAS;AAC5B,YAAM,MAAM,KAAK,OAAO;AACxB,YAAM,cAAc,UAAU,UAAU,WAAW;AAEnD,UAAI,eAAe;AACnB,UAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,uBAAe;AACf,eAAO,OAAO,IAAI,EAAE,MAAM,KAAK;AAAA,MACjC;AAEA,UAAI;AACJ,UAAI,WAAW;AACf,aAAO,KAAK,IAAI,SAAU,KAAK;AAC7B,cAAM,OAAO,GAAG;AAChB,gBAAQD,aAAY,GAAG;AACvB,mBAAW,KAAK,IAAI,OAAO,QAAQ;AACnC,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF,CAAC,EAAE,IAAI,SAAU,KAAK;AACpB,eAAO,IAAI,MAAM,YAAY,UAAU,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,IAAI;AAAA,MACzE,CAAC;AAED,aAAO,eAAe,KAAK,KAAK,KAAK,IAAI;AAAA,IAC3C;AAEA,IAAAC,WAAU,OAAO,SAAS,KAAM,MAAM;AACpC,aAAOA,WAAU,MAAM,EAAE,OAAO,OAAO,CAAC;AAAA,IAC1C;AAEA,IAAAA,WAAU,SAAS,SAAS,OAAQ,MAAM;AACxC,aAAOA,WAAU,MAAM,EAAE,OAAO,SAAS,CAAC;AAAA,IAC5C;AAEA,IAAAA,WAAU,QAAQ,SAAS,MAAO,MAAM;AACtC,aAAOA,WAAU,MAAM,EAAE,OAAO,QAAQ,CAAC;AAAA,IAC3C;AAEA,IAAAF,QAAO,UAAUE;AAEjB,aAAS,SAAU,UAAU,UAAU;AACrC,aAAO,KAAK,OAAO,WAAW,YAAY,CAAC;AAAA,IAC7C;AAEA,aAAS,SAAU,UAAU,UAAU;AACrC,aAAO,WAAW;AAAA,IACpB;AAAA;AAAA;;;ACYA,SAASC,kBAAiB;AACzB,QAAM,QAAQ,oBAAI,IAAI;AAEtB,aAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQC,OAAM,GAAG;AACxD,eAAW,CAAC,WAAW,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AACvD,MAAAA,QAAO,SAAS,IAAI;AAAA,QACnB,MAAM,QAAU,MAAM,CAAC,CAAC;AAAA,QACxB,OAAO,QAAU,MAAM,CAAC,CAAC;AAAA,MAC1B;AAEA,YAAM,SAAS,IAAIA,QAAO,SAAS;AAEnC,YAAM,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,IAC7B;AAEA,WAAO,eAAeA,SAAQ,WAAW;AAAA,MACxC,OAAO;AAAA,MACP,YAAY;AAAA,IACb,CAAC;AAAA,EACF;AAEA,SAAO,eAAeA,SAAQ,SAAS;AAAA,IACtC,OAAO;AAAA,IACP,YAAY;AAAA,EACb,CAAC;AAED,EAAAA,QAAO,MAAM,QAAQ;AACrB,EAAAA,QAAO,QAAQ,QAAQ;AAEvB,EAAAA,QAAO,MAAM,OAAOC,YAAW;AAC/B,EAAAD,QAAO,MAAM,UAAUE,aAAY;AACnC,EAAAF,QAAO,MAAM,UAAUG,aAAY;AACnC,EAAAH,QAAO,QAAQ,OAAOC,YAAWG,uBAAsB;AACvD,EAAAJ,QAAO,QAAQ,UAAUE,aAAYE,uBAAsB;AAC3D,EAAAJ,QAAO,QAAQ,UAAUG,aAAYC,uBAAsB;AAG3D,SAAO,iBAAiBJ,SAAQ;AAAA,IAC/B,cAAc;AAAA,MACb,MAAM,KAAK,OAAO,MAAM;AAGvB,YAAI,QAAQ,SAAS,UAAU,MAAM;AACpC,cAAI,MAAM,GAAG;AACZ,mBAAO;AAAA,UACR;AAEA,cAAI,MAAM,KAAK;AACd,mBAAO;AAAA,UACR;AAEA,iBAAO,KAAK,OAAQ,MAAM,KAAK,MAAO,EAAE,IAAI;AAAA,QAC7C;AAEA,eAAO,KACH,KAAK,KAAK,MAAM,MAAM,MAAM,CAAC,IAC7B,IAAI,KAAK,MAAM,QAAQ,MAAM,CAAC,IAC/B,KAAK,MAAM,OAAO,MAAM,CAAC;AAAA,MAC7B;AAAA,MACA,YAAY;AAAA,IACb;AAAA,IACA,UAAU;AAAA,MACT,MAAMK,MAAK;AACV,cAAM,UAAU,yBAAyB,KAAKA,KAAI,SAAS,EAAE,CAAC;AAC9D,YAAI,CAAC,SAAS;AACb,iBAAO,CAAC,GAAG,GAAG,CAAC;AAAA,QAChB;AAEA,YAAI,CAAC,WAAW,IAAI;AAEpB,YAAI,YAAY,WAAW,GAAG;AAC7B,wBAAc,CAAC,GAAG,WAAW,EAAE,IAAI,eAAa,YAAY,SAAS,EAAE,KAAK,EAAE;AAAA,QAC/E;AAEA,cAAMC,WAAU,OAAO,SAAS,aAAa,EAAE;AAE/C,eAAO;AAAA;AAAA,UAELA,YAAW,KAAM;AAAA,UACjBA,YAAW,IAAK;AAAA,UACjBA,WAAU;AAAA;AAAA,QAEX;AAAA,MACD;AAAA,MACA,YAAY;AAAA,IACb;AAAA,IACA,cAAc;AAAA,MACb,OAAO,CAAAD,SAAOL,QAAO,aAAa,GAAGA,QAAO,SAASK,IAAG,CAAC;AAAA,MACzD,YAAY;AAAA,IACb;AAAA,IACA,eAAe;AAAA,MACd,MAAM,MAAM;AACX,YAAI,OAAO,GAAG;AACb,iBAAO,KAAK;AAAA,QACb;AAEA,YAAI,OAAO,IAAI;AACd,iBAAO,MAAM,OAAO;AAAA,QACrB;AAEA,YAAI;AACJ,YAAI;AACJ,YAAI;AAEJ,YAAI,QAAQ,KAAK;AAChB,kBAAS,OAAO,OAAO,KAAM,KAAK;AAClC,kBAAQ;AACR,iBAAO;AAAA,QACR,OAAO;AACN,kBAAQ;AAER,gBAAM,YAAY,OAAO;AAEzB,gBAAM,KAAK,MAAM,OAAO,EAAE,IAAI;AAC9B,kBAAQ,KAAK,MAAM,YAAY,CAAC,IAAI;AACpC,iBAAQ,YAAY,IAAK;AAAA,QAC1B;AAEA,cAAM,QAAQ,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI;AAE3C,YAAI,UAAU,GAAG;AAChB,iBAAO;AAAA,QACR;AAGA,YAAI,SAAS,MAAO,KAAK,MAAM,IAAI,KAAK,IAAM,KAAK,MAAM,KAAK,KAAK,IAAK,KAAK,MAAM,GAAG;AAEtF,YAAI,UAAU,GAAG;AAChB,oBAAU;AAAA,QACX;AAEA,eAAO;AAAA,MACR;AAAA,MACA,YAAY;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACV,OAAO,CAAC,KAAK,OAAO,SAASL,QAAO,cAAcA,QAAO,aAAa,KAAK,OAAO,IAAI,CAAC;AAAA,MACvF,YAAY;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACV,OAAO,CAAAK,SAAOL,QAAO,cAAcA,QAAO,aAAaK,IAAG,CAAC;AAAA,MAC3D,YAAY;AAAA,IACb;AAAA,EACD,CAAC;AAED,SAAOL;AACR;AA1NA,IAAMI,yBAEAH,aAEAC,cAEAC,cAEAH,SA2DOO,gBACAC,uBACAC,uBACAC,aAsJPC,aAECC;AA9NP,IAAAC,oBAAA;AAAA;AAAA;AAAA,IAAMT,0BAAyB;AAE/B,IAAMH,cAAa,CAAC,SAAS,MAAM,UAAQ,QAAU,OAAO,MAAM;AAElE,IAAMC,eAAc,CAAC,SAAS,MAAM,UAAQ,QAAU,KAAK,MAAM,MAAM,IAAI;AAE3E,IAAMC,eAAc,CAAC,SAAS,MAAM,CAAC,KAAK,OAAO,SAAS,QAAU,KAAK,MAAM,MAAM,GAAG,IAAI,KAAK,IAAI,IAAI;AAEzG,IAAMH,UAAS;AAAA,MACd,UAAU;AAAA,QACT,OAAO,CAAC,GAAG,CAAC;AAAA;AAAA,QAEZ,MAAM,CAAC,GAAG,EAAE;AAAA,QACZ,KAAK,CAAC,GAAG,EAAE;AAAA,QACX,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,WAAW,CAAC,GAAG,EAAE;AAAA,QACjB,UAAU,CAAC,IAAI,EAAE;AAAA,QACjB,SAAS,CAAC,GAAG,EAAE;AAAA,QACf,QAAQ,CAAC,GAAG,EAAE;AAAA,QACd,eAAe,CAAC,GAAG,EAAE;AAAA,MACtB;AAAA,MACA,OAAO;AAAA,QACN,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,KAAK,CAAC,IAAI,EAAE;AAAA,QACZ,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,MAAM,CAAC,IAAI,EAAE;AAAA,QACb,OAAO,CAAC,IAAI,EAAE;AAAA;AAAA,QAGd,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,MAAM,CAAC,IAAI,EAAE;AAAA;AAAA,QACb,MAAM,CAAC,IAAI,EAAE;AAAA;AAAA,QACb,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,aAAa,CAAC,IAAI,EAAE;AAAA,QACpB,cAAc,CAAC,IAAI,EAAE;AAAA,QACrB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,eAAe,CAAC,IAAI,EAAE;AAAA,QACtB,YAAY,CAAC,IAAI,EAAE;AAAA,QACnB,aAAa,CAAC,IAAI,EAAE;AAAA,MACrB;AAAA,MACA,SAAS;AAAA,QACR,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,OAAO,CAAC,IAAI,EAAE;AAAA,QACd,SAAS,CAAC,IAAI,EAAE;AAAA,QAChB,UAAU,CAAC,IAAI,EAAE;AAAA,QACjB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,WAAW,CAAC,IAAI,EAAE;AAAA,QAClB,QAAQ,CAAC,IAAI,EAAE;AAAA,QACf,SAAS,CAAC,IAAI,EAAE;AAAA;AAAA,QAGhB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,QAAQ,CAAC,KAAK,EAAE;AAAA;AAAA,QAChB,QAAQ,CAAC,KAAK,EAAE;AAAA;AAAA,QAChB,aAAa,CAAC,KAAK,EAAE;AAAA,QACrB,eAAe,CAAC,KAAK,EAAE;AAAA,QACvB,gBAAgB,CAAC,KAAK,EAAE;AAAA,QACxB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,iBAAiB,CAAC,KAAK,EAAE;AAAA,QACzB,cAAc,CAAC,KAAK,EAAE;AAAA,QACtB,eAAe,CAAC,KAAK,EAAE;AAAA,MACxB;AAAA,IACD;AAEO,IAAMO,iBAAgB,OAAO,KAAKP,QAAO,QAAQ;AACjD,IAAMQ,wBAAuB,OAAO,KAAKR,QAAO,KAAK;AACrD,IAAMS,wBAAuB,OAAO,KAAKT,QAAO,OAAO;AACvD,IAAMU,cAAa,CAAC,GAAGF,uBAAsB,GAAGC,qBAAoB;AAsJ3E,IAAME,cAAaZ,gBAAe;AAElC,IAAOa,uBAAQD;AAAA;AAAA;;;ACRA,SAAR,SAA0BG,SAAQC,UAAS,SAAS;AAC1D,SAAO,OAAOD,OAAM,EAClB,UAAU,EACV,WAAW,QAAQ,IAAI,EACvB,MAAM,IAAI,EACV,IAAI,UAAQE,MAAK,MAAMD,UAAS,OAAO,CAAC,EACxC,KAAK,IAAI;AACZ;AA7NA,IAIM,SAKA,UACA,kBACA,UACA,UACA,qBACA,kBAEA,cACA,mBAIA,aAIA,UAqDA,8BAwBAC;AAtGN;AAAA;AAAA;AAAA;AACA;AACA,IAAAC;AAEA,IAAM,UAAU,oBAAI,IAAI;AAAA,MACvB;AAAA,MACA;AAAA,IACD,CAAC;AAED,IAAM,WAAW;AACjB,IAAM,mBAAmB;AACzB,IAAM,WAAW;AACjB,IAAM,WAAW;AACjB,IAAM,sBAAsB;AAC5B,IAAM,mBAAmB,GAAG,QAAQ;AAEpC,IAAM,eAAe,UAAQ,GAAG,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,GAAG,mBAAmB;AACrG,IAAM,oBAAoB,CAAAC,SAAO,GAAG,QAAQ,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,gBAAgB,GAAGA,IAAG,GAAG,gBAAgB;AAI7G,IAAM,cAAc,CAAAJ,YAAUA,QAAO,MAAM,GAAG,EAAE,IAAI,eAAa,YAAY,SAAS,CAAC;AAIvF,IAAM,WAAW,CAAC,MAAM,MAAMC,aAAY;AACzC,YAAM,aAAa,CAAC,GAAG,IAAI;AAE3B,UAAI,iBAAiB;AACrB,UAAI,qBAAqB;AACzB,UAAI,UAAU,YAAY,UAAU,KAAK,GAAG,EAAE,CAAC,CAAC;AAEhD,iBAAW,CAAC,OAAO,SAAS,KAAK,WAAW,QAAQ,GAAG;AACtD,cAAM,kBAAkB,YAAY,SAAS;AAE7C,YAAI,UAAU,mBAAmBA,UAAS;AACzC,eAAK,KAAK,SAAS,CAAC,KAAK;AAAA,QAC1B,OAAO;AACN,eAAK,KAAK,SAAS;AACnB,oBAAU;AAAA,QACX;AAEA,YAAI,QAAQ,IAAI,SAAS,GAAG;AAC3B,2BAAiB;AAEjB,gBAAM,0BAA0B,WAAW,MAAM,QAAQ,GAAG,QAAQ,IAAI,iBAAiB,MAAM,EAAE,KAAK,EAAE;AACxG,+BAAqB,4BAA4B;AAAA,QAClD;AAEA,YAAI,gBAAgB;AACnB,cAAI,oBAAoB;AACvB,gBAAI,cAAc,kBAAkB;AACnC,+BAAiB;AACjB,mCAAqB;AAAA,YACtB;AAAA,UACD,WAAW,cAAc,qBAAqB;AAC7C,6BAAiB;AAAA,UAClB;AAEA;AAAA,QACD;AAEA,mBAAW;AAEX,YAAI,YAAYA,YAAW,QAAQ,WAAW,SAAS,GAAG;AACzD,eAAK,KAAK,EAAE;AACZ,oBAAU;AAAA,QACX;AAAA,MACD;AAIA,UAAI,CAAC,WAAW,KAAK,GAAG,EAAE,EAAE,SAAS,KAAK,KAAK,SAAS,GAAG;AAC1D,aAAK,KAAK,SAAS,CAAC,KAAK,KAAK,IAAI;AAAA,MACnC;AAAA,IACD;AAGA,IAAM,+BAA+B,CAAAD,YAAU;AAC9C,YAAM,QAAQA,QAAO,MAAM,GAAG;AAC9B,UAAI,OAAO,MAAM;AAEjB,aAAO,OAAO,GAAG;AAChB,YAAI,YAAY,MAAM,OAAO,CAAC,CAAC,IAAI,GAAG;AACrC;AAAA,QACD;AAEA;AAAA,MACD;AAEA,UAAI,SAAS,MAAM,QAAQ;AAC1B,eAAOA;AAAA,MACR;AAEA,aAAO,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,MAAM,IAAI,EAAE,KAAK,EAAE;AAAA,IAClE;AAOA,IAAME,QAAO,CAACF,SAAQC,UAAS,UAAU,CAAC,MAAM;AAC/C,UAAI,QAAQ,SAAS,SAASD,QAAO,KAAK,MAAM,IAAI;AACnD,eAAO;AAAA,MACR;AAEA,UAAI,cAAc;AAClB,UAAI;AACJ,UAAI;AAEJ,YAAM,UAAU,YAAYA,OAAM;AAClC,UAAI,OAAO,CAAC,EAAE;AAEd,iBAAW,CAAC,OAAO,IAAI,KAAKA,QAAO,MAAM,GAAG,EAAE,QAAQ,GAAG;AACxD,YAAI,QAAQ,SAAS,OAAO;AAC3B,eAAK,KAAK,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,UAAU;AAAA,QAC/C;AAEA,YAAI,YAAY,YAAY,KAAK,GAAG,EAAE,CAAC;AAEvC,YAAI,UAAU,GAAG;AAChB,cAAI,aAAaC,aAAY,QAAQ,aAAa,SAAS,QAAQ,SAAS,QAAQ;AAEnF,iBAAK,KAAK,EAAE;AACZ,wBAAY;AAAA,UACb;AAEA,cAAI,YAAY,KAAK,QAAQ,SAAS,OAAO;AAC5C,iBAAK,KAAK,SAAS,CAAC,KAAK;AACzB;AAAA,UACD;AAAA,QACD;AAGA,YAAI,QAAQ,QAAQ,QAAQ,KAAK,IAAIA,UAAS;AAC7C,gBAAM,mBAAoBA,WAAU;AACpC,gBAAM,yBAAyB,IAAI,KAAK,OAAO,QAAQ,KAAK,IAAI,mBAAmB,KAAKA,QAAO;AAC/F,gBAAM,yBAAyB,KAAK,OAAO,QAAQ,KAAK,IAAI,KAAKA,QAAO;AACxE,cAAI,yBAAyB,wBAAwB;AACpD,iBAAK,KAAK,EAAE;AAAA,UACb;AAEA,mBAAS,MAAM,MAAMA,QAAO;AAC5B;AAAA,QACD;AAEA,YAAI,YAAY,QAAQ,KAAK,IAAIA,YAAW,YAAY,KAAK,QAAQ,KAAK,IAAI,GAAG;AAChF,cAAI,QAAQ,aAAa,SAAS,YAAYA,UAAS;AACtD,qBAAS,MAAM,MAAMA,QAAO;AAC5B;AAAA,UACD;AAEA,eAAK,KAAK,EAAE;AAAA,QACb;AAEA,YAAI,YAAY,QAAQ,KAAK,IAAIA,YAAW,QAAQ,aAAa,OAAO;AACvE,mBAAS,MAAM,MAAMA,QAAO;AAC5B;AAAA,QACD;AAEA,aAAK,KAAK,SAAS,CAAC,KAAK;AAAA,MAC1B;AAEA,UAAI,QAAQ,SAAS,OAAO;AAC3B,eAAO,KAAK,IAAI,SAAO,6BAA6B,GAAG,CAAC;AAAA,MACzD;AAEA,YAAM,YAAY,KAAK,KAAK,IAAI;AAChC,YAAM,MAAM,CAAC,GAAG,SAAS;AAGzB,UAAI,iBAAiB;AAErB,iBAAW,CAAC,OAAO,SAAS,KAAK,IAAI,QAAQ,GAAG;AAC/C,uBAAe;AAEf,YAAI,QAAQ,IAAI,SAAS,GAAG;AAC3B,gBAAM,EAAC,OAAM,IAAI,IAAI,OAAO,QAAQ,QAAQ,oBAAoB,gBAAgB,aAAa,gBAAgB,GAAG,EAAE,KAAK,UAAU,MAAM,cAAc,CAAC,KAAK,EAAC,QAAQ,CAAC,EAAC;AACtK,cAAI,OAAO,SAAS,QAAW;AAC9B,kBAAMI,QAAO,OAAO,WAAW,OAAO,IAAI;AAC1C,yBAAaA,UAAS,WAAW,SAAYA;AAAA,UAC9C,WAAW,OAAO,QAAQ,QAAW;AACpC,wBAAY,OAAO,IAAI,WAAW,IAAI,SAAY,OAAO;AAAA,UAC1D;AAAA,QACD;AAEA,cAAM,OAAOC,qBAAW,MAAM,IAAI,OAAO,UAAU,CAAC;AAEpD,YAAI,IAAI,QAAQ,CAAC,MAAM,MAAM;AAC5B,cAAI,WAAW;AACd,2BAAe,kBAAkB,EAAE;AAAA,UACpC;AAEA,cAAI,cAAc,MAAM;AACvB,2BAAe,aAAa,IAAI;AAAA,UACjC;AAAA,QACD,WAAW,cAAc,MAAM;AAC9B,cAAI,cAAc,MAAM;AACvB,2BAAe,aAAa,UAAU;AAAA,UACvC;AAEA,cAAI,WAAW;AACd,2BAAe,kBAAkB,SAAS;AAAA,UAC3C;AAAA,QACD;AAEA,0BAAkB,UAAU;AAAA,MAC7B;AAEA,aAAO;AAAA,IACR;AAAA;AAAA;;;ACnNA;AAAA;AAAA;AAAA;AAAA;AAqVe,SAAR,MAAuB,MAAM,SAAS;AAC5C,YAAU;AAAA,IACT,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,eAAe;AAAA,IACf,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,GAAG;AAAA,EACJ;AAGA,MAAI,QAAQ,OAAO;AAClB,YAAQ,gBAAgB,QAAQ;AAAA,EACjC;AAEA,MAAI,QAAQ,eAAe,CAAC,aAAa,QAAQ,WAAW,GAAG;AAC9D,UAAM,IAAI,MAAM,GAAG,QAAQ,WAAW,6BAA6B;AAAA,EACpE;AAEA,MAAI,QAAQ,mBAAmB,CAAC,aAAa,QAAQ,eAAe,GAAG;AACtE,UAAM,IAAI,MAAM,GAAG,QAAQ,eAAe,iCAAiC;AAAA,EAC5E;AAEA,UAAQ,UAAU,UAAU,QAAQ,OAAO;AAC3C,UAAQ,SAAS,UAAU,QAAQ,MAAM;AAEzC,YAAU,oBAAoB,MAAM,OAAO;AAE3C,SAAO,gBAAgB,MAAM,OAAO;AAEpC,SAAO,WAAW,MAAM,QAAQ,OAAO,OAAO;AAC/C;AArXA,IAAAC,sBAIA,kBAEA,mBAiXAC,mBA9WM,SACA,KACA,MAEA,iBAkBA,WAaA,gBAEA,gBAqDA,WAkCA,iBAyEA,YA6CA,iBAuBA,aAEA,qBA4DA,OACA,cACA,kBACA;AAnVN;AAAA;AAAA;AAAA,IAAAD,uBAAoB;AACpB;AACA;AACA;AACA,uBAAqB;AACrB;AACA,wBAAsB;AACtB;AAgXA,IAAAC,oBAAuC;AA9WvC,IAAM,UAAU;AAChB,IAAM,MAAM;AACZ,IAAM,OAAO;AAEb,IAAM,kBAAkB,MAAM;AAC7B,YAAM,EAAC,KAAAC,MAAK,QAAQ,OAAM,IAAI,qBAAAC;AAE9B,UAAI,QAAQ,SAAS;AACpB,eAAO,OAAO;AAAA,MACf;AAEA,UAAI,QAAQ,SAAS;AACpB,eAAO,OAAO;AAAA,MACf;AAEA,UAAID,KAAI,SAAS;AAChB,eAAO,OAAO,SAASA,KAAI,SAAS,EAAE;AAAA,MACvC;AAEA,aAAO;AAAA,IACR;AAEA,IAAM,YAAY,YAAU,OAAO,WAAW,WAAW;AAAA,MACxD,KAAK;AAAA,MACL,OAAO,SAAS;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM,SAAS;AAAA,IAChB,IAAI;AAAA,MACH,KAAK;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,GAAG;AAAA,IACJ;AAEA,IAAM,iBAAiB,iBAAe,gBAAgB,OAAO,IAAI;AAEjE,IAAM,iBAAiB,iBAAe;AACrC,YAAM,QAAQ;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACD;AAEA,UAAI;AAGJ,UAAI,gBAAgB,MAAM;AACzB,sBAAc,CAAC;AACf,mBAAW,QAAQ,OAAO;AACzB,sBAAY,IAAI,IAAI;AAAA,QACrB;AAAA,MACD;AAEA,UAAI,OAAO,gBAAgB,UAAU;AACpC,qBAAa,iBAAAE,QAAS,WAAW;AAEjC,YAAI,CAAC,YAAY;AAChB,gBAAM,IAAI,UAAU,yBAAyB,WAAW,EAAE;AAAA,QAC3D;AAAA,MACD,OAAO;AAEN,YAAI,OAAO,aAAa,aAAa,UAAU;AAC9C,sBAAY,OAAO,YAAY;AAC/B,sBAAY,QAAQ,YAAY;AAAA,QACjC;AAGA,YAAI,OAAO,aAAa,eAAe,UAAU;AAChD,sBAAY,MAAM,YAAY;AAC9B,sBAAY,SAAS,YAAY;AAAA,QAClC;AAEA,mBAAW,QAAQ,OAAO;AACzB,cAAI,YAAY,IAAI,MAAM,QAAQ,OAAO,YAAY,IAAI,MAAM,UAAU;AACxE,kBAAM,IAAI,UAAU,yBAAyB,IAAI,EAAE;AAAA,UACpD;AAAA,QACD;AAEA,qBAAa;AAAA,MACd;AAEA,aAAO;AAAA,IACR;AAEA,IAAM,YAAY,CAAC,MAAM,YAAY,cAAc;AAClD,UAAI,QAAQ;AAEZ,YAAM,YAAY,YAAY,IAAI;AAElC,cAAQ,WAAW;AAAA,QAClB,KAAK,QAAQ;AACZ,kBAAQ,OAAO,WAAW,MAAM,SAAS;AACzC;AAAA,QACD;AAAA,QAEA,KAAK,SAAS;AACb,kBAAQ,WAAW,MAAM,SAAS,IAAI;AACtC;AAAA,QACD;AAAA,QAEA,SAAS;AACR,uBAAa,WAAW,MAAM,SAAS;AAEvC,cAAI,WAAW,SAAS,MAAM,GAAG;AAChC,yBAAa,WAAW,MAAM,KAAK,MAAM,WAAW,SAAS,CAAC,CAAC;AAC/D,oBAAQ,WAAW,MAAM,CAAC,IAAI,OAAO;AAAA,UACtC,OAAO;AACN,yBAAa,WAAW,MAAM,WAAW,SAAS,CAAC;AACnD,oBAAQ,aAAa,OAAO;AAAA,UAC7B;AAEA;AAAA,QACD;AAAA,MACD;AAEA,aAAO;AAAA,IACR;AAEA,IAAM,kBAAkB,CAAC,MAAM,EAAC,SAAS,OAAO,eAAe,OAAM,MAAM;AAC1E,iBAAO,kBAAAC,SAAU,MAAM,EAAC,OAAO,cAAa,CAAC;AAC7C,UAAI,QAAQ,KAAK,MAAM,OAAO;AAC9B,YAAM,YAAY,WAAW,IAAI;AAEjC,YAAM,MAAM,QAAQ,QAAQ,OAAO,QAAQ;AAE3C,UAAI,YAAY,KAAK;AACpB,cAAM,WAAW,CAAC;AAClB,mBAAW,QAAQ,OAAO;AACzB,gBAAM,eAAe,SAAS,MAAM,KAAK,EAAC,MAAM,KAAI,CAAC;AACrD,gBAAM,mBAAe,kBAAAA,SAAU,cAAc,EAAC,OAAO,cAAa,CAAC;AACnE,gBAAM,oBAAoB,aAAa,MAAM,IAAI;AACjD,gBAAM,gBAAgB,KAAK,IAAI,GAAG,kBAAkB,IAAI,OAAK,YAAY,CAAC,CAAC,CAAC;AAE5E,qBAAW,eAAe,mBAAmB;AAC5C,gBAAI;AACJ,oBAAQ,eAAe;AAAA,cACtB,KAAK,UAAU;AACd,6BAAa,IAAI,QAAQ,MAAM,iBAAiB,CAAC,IAAI;AACrD;AAAA,cACD;AAAA,cAEA,KAAK,SAAS;AACb,6BAAa,IAAI,OAAO,MAAM,aAAa,IAAI;AAC/C;AAAA,cACD;AAAA,cAEA,SAAS;AACR,6BAAa;AACb;AAAA,cACD;AAAA,YACD;AAEA,qBAAS,KAAK,UAAU;AAAA,UACzB;AAAA,QACD;AAEA,gBAAQ;AAAA,MACT;AAEA,UAAI,kBAAkB,YAAY,YAAY,KAAK;AAClD,gBAAQ,MAAM,IAAI,UAAQ,IAAI,QAAQ,MAAM,aAAa,CAAC,IAAI,IAAI;AAAA,MACnE,WAAW,kBAAkB,WAAW,YAAY,KAAK;AACxD,gBAAQ,MAAM,IAAI,UAAQ,IAAI,OAAO,MAAM,SAAS,IAAI,IAAI;AAAA,MAC7D;AAEA,YAAM,cAAc,IAAI,OAAO,QAAQ,IAAI;AAC3C,YAAM,eAAe,IAAI,OAAO,QAAQ,KAAK;AAE7C,cAAQ,MAAM,IAAI,UAAQ;AACzB,cAAM,UAAU,cAAc,OAAO;AAErC,eAAO,UAAU,IAAI,OAAO,QAAQ,YAAY,OAAO,CAAC;AAAA,MACzD,CAAC;AAED,UAAI,QAAQ,MAAM,GAAG;AACpB,gBAAQ,CAAC,GAAG,MAAM,KAAK,EAAC,QAAQ,QAAQ,IAAG,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,GAAG,GAAG,KAAK;AAAA,MAChF;AAEA,UAAI,QAAQ,SAAS,GAAG;AACvB,gBAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,KAAK,EAAC,QAAQ,QAAQ,OAAM,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AAAA,MACnF;AAEA,UAAI,UAAU,MAAM,SAAS,QAAQ;AACpC,gBAAQ,MAAM,MAAM,GAAG,MAAM;AAAA,MAC9B,WAAW,UAAU,MAAM,SAAS,QAAQ;AAC3C,gBAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,KAAK,EAAC,QAAQ,SAAS,MAAM,OAAM,CAAC,EAAE,KAAK,IAAI,OAAO,KAAK,CAAC,CAAC;AAAA,MAC1F;AAEA,aAAO,MAAM,KAAK,OAAO;AAAA,IAC1B;AAEA,IAAM,aAAa,CAAC,SAAS,cAAc,YAAY;AACtD,YAAM,iBAAiB,YAAU;AAChC,cAAM,YAAY,QAAQ,cAAc,iBAAiB,QAAQ,WAAW,EAAE,MAAM,IAAI;AACxF,eAAO,QAAQ,YAAY,eAAM,IAAI,SAAS,IAAI;AAAA,MACnD;AAEA,YAAM,kBAAkB,CAAAC,aAAW,QAAQ,kBAAkB,mBAAmB,QAAQ,eAAe,EAAEA,QAAO,IAAIA;AAEpH,YAAM,QAAQ,eAAe,QAAQ,WAAW;AAChD,YAAMC,WAAU,gBAAgB;AAChC,UAAI,aAAa,IAAI,OAAO,QAAQ,OAAO,IAAI;AAE/C,UAAI,QAAQ,UAAU,UAAU;AAC/B,cAAM,cAAc,KAAK,KAAKA,WAAU,eAAe,eAAe,QAAQ,WAAW,KAAK,GAAG,CAAC;AAClG,qBAAa,IAAI,OAAO,WAAW;AAAA,MACpC,WAAW,QAAQ,UAAU,SAAS;AACrC,cAAM,cAAc,KAAK,IAAIA,WAAU,eAAe,QAAQ,OAAO,QAAQ,eAAe,QAAQ,WAAW,GAAG,CAAC;AACnH,qBAAa,IAAI,OAAO,WAAW;AAAA,MACpC;AAEA,UAAI,SAAS;AAEb,UAAI,QAAQ,OAAO,KAAK;AACvB,kBAAU,QAAQ,OAAO,QAAQ,OAAO,GAAG;AAAA,MAC5C;AAEA,UAAI,QAAQ,gBAAgB,QAAQ,QAAQ,OAAO;AAClD,kBAAU,eAAe,aAAa,MAAM,WAAW,QAAQ,QAAQ,UAAU,QAAQ,OAAO,MAAM,IAAI,OAAO,YAAY,GAAG,QAAQ,cAAc,IAAI,MAAM,IAAI,OAAO,YAAY,KAAK,MAAM,QAAQ,IAAI;AAAA,MAC/M;AAEA,YAAM,QAAQ,QAAQ,MAAM,OAAO;AAEnC,gBAAU,MAAM,IAAI,UAAQ,aAAa,eAAe,MAAM,IAAI,IAAI,gBAAgB,IAAI,IAAI,eAAe,MAAM,KAAK,CAAC,EAAE,KAAK,OAAO;AAEvI,UAAI,QAAQ,gBAAgB,MAAM;AACjC,kBAAU,UAAU,eAAe,aAAa,MAAM,aAAa,MAAM,OAAO,OAAO,YAAY,IAAI,MAAM,WAAW;AAAA,MACzH;AAEA,UAAI,QAAQ,OAAO,QAAQ;AAC1B,kBAAU,QAAQ,OAAO,QAAQ,OAAO,MAAM;AAAA,MAC/C;AAEA,aAAO;AAAA,IACR;AAEA,IAAM,kBAAkB,aAAW;AAElC,UAAI,QAAQ,cAAc,qBAAAJ,SAAS,QAAQ;AAC1C,YAAI,gBAAgB,CAAC,qBAAAA,QAAQ,OAAO,SAAS,qBAAAA,QAAQ,OAAO,IAAI;AAEhE,YAAI,OAAO,QAAQ,eAAe,YAAY;AAC7C,0BAAgB,QAAQ,WAAW,GAAG,aAAa;AAAA,QACpD;AAEA,gBAAQ,UAAU,cAAc,CAAC;AAEjC,gBAAQ,WAAW,cAAc,CAAC;AAAA,MACnC;AAGA,cAAQ,UAAU,KAAK,IAAI,GAAG,QAAQ,QAAQ,eAAe,QAAQ,WAAW,CAAC;AAGjF,cAAQ,WAAW,KAAK,IAAI,GAAG,QAAQ,SAAS,eAAe,QAAQ,WAAW,CAAC;AAEnF,aAAO;AAAA,IACR;AAEA,IAAM,cAAc,CAAC,OAAO,gBAAgB,gBAAgB,OAAO,QAAQ,IAAI,KAAK;AAEpF,IAAM,sBAAsB,CAAC,MAAM,YAAY;AAC9C,gBAAU,gBAAgB,OAAO;AACjC,YAAM,gBAAgB,QAAQ,UAAU;AACxC,YAAMI,WAAU,gBAAgB;AAChC,YAAM,cAAc,eAAe,QAAQ,WAAW;AACtD,YAAM,WAAWA,WAAU,QAAQ,OAAO,OAAO,QAAQ,OAAO,QAAQ;AAExE,YAAM,SAAS,WAAW,SAAS,MAAMA,WAAU,aAAa,EAAC,MAAM,MAAM,MAAM,MAAK,CAAC,CAAC,IAAI,QAAQ,QAAQ,OAAO,QAAQ,QAAQ;AAGrI,UAAI,QAAQ,SAAS,eAAe;AACnC,gBAAQ,QAAQ,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,QAAQ,QAAQ,CAAC,CAAC;AACrE,gBAAQ,UAAU,YAAY,QAAQ,OAAO,QAAQ,WAAW;AAAA,MACjE,WAAW,QAAQ,OAAO;AACzB,gBAAQ,QAAQ,QAAQ,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,WAAW,CAAC,CAAC;AAGhE,YAAI,QAAQ,OAAO;AAClB,kBAAQ,QAAQ,YAAY,QAAQ,OAAO,QAAQ,WAAW;AAE9D,cAAI,YAAY,QAAQ,KAAK,IAAI,QAAQ;AACxC,oBAAQ,QAAQ,YAAY,QAAQ,KAAK;AAAA,UAC1C;AAAA,QACD;AAAA,MACD;AAGA,cAAQ,UAAU;AAElB,UAAI,CAAC,eAAe;AACnB,YAAK,QAAQ,OAAO,QAAQ,QAAQ,OAAO,SAAU,QAAQ,QAAQ,UAAU;AAE9E,gBAAM,kBAAkBA,WAAU,QAAQ,QAAQ;AAElD,gBAAM,aAAa,mBAAmB,QAAQ,OAAO,OAAO,QAAQ,OAAO;AAE3E,kBAAQ,OAAO,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,OAAO,OAAO,UAAU,CAAC;AAC9E,kBAAQ,OAAO,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,OAAO,QAAQ,UAAU,CAAC;AAAA,QAGjF;AAGA,gBAAQ,QAAQ,KAAK,IAAI,QAAQ,OAAOA,WAAU,cAAc,QAAQ,OAAO,OAAO,QAAQ,OAAO,KAAK;AAAA,MAC3G;AAGA,UAAI,QAAQ,SAAS,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,UAAU,GAAG;AACxE,gBAAQ,QAAQ,OAAO;AACvB,gBAAQ,QAAQ,QAAQ;AAAA,MACzB;AAEA,UAAI,QAAQ,UAAU,QAAQ,UAAU,QAAQ,QAAQ,MAAM,QAAQ,QAAQ,WAAW,GAAG;AAC3F,gBAAQ,QAAQ,MAAM;AACtB,gBAAQ,QAAQ,SAAS;AAAA,MAC1B;AAEA,aAAO;AAAA,IACR;AAEA,IAAM,QAAQ,WAAS,MAAM,MAAM,uBAAuB;AAC1D,IAAM,eAAe,WAAS,OAAO,UAAU,aAAa,eAAM,KAAK,KAAK,MAAM,KAAK;AACvF,IAAM,mBAAmB,WAAS,MAAM,KAAK,IAAI,eAAM,IAAI,KAAK,IAAI,eAAM,KAAK;AAC/E,IAAM,qBAAqB,WAAS,MAAM,KAAK,IAAI,eAAM,MAAM,KAAK,IAAI,eAAM,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AAAA;AAAA;;;ACnVtG;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAAS,YAAY,UAA0B;AAClD,SAAO,mBAAAC,QAAK,KAAK,mBAAAA,QAAK,QAAQ,QAAQ,GAAG,mBAAmB;AAChE;AAMA,eAAsB,gBAAgB,UAAkB,OAAkC;AACtF,QAAM,YAAY,YAAY,QAAQ;AACtC,QAAM,UAAU,GAAG,SAAS;AAC5B,QAAM,UAAU,KAAK,UAAU,OAAO,MAAM,CAAC,IAAI;AACjD,QAAM,kBAAAC,QAAG,UAAU,SAAS,SAAS,MAAM;AAC3C,MAAI;AACA,UAAM,kBAAAA,QAAG,OAAO,SAAS,SAAS;AAAA,EACtC,SAAS,KAAK;AACV,UAAM,kBAAAA,QAAG,OAAO,OAAO,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AACvC,UAAM;AAAA,EACV;AACJ;AAEA,eAAsB,eAAe,UAA8C;AAC/E,QAAM,IAAI,YAAY,QAAQ;AAC9B,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,CAAC,EAAI,QAAO;AACtC,QAAM,MAAM,MAAM,kBAAAA,QAAG,SAAS,GAAG,MAAM;AACvC,SAAO,KAAK,MAAM,GAAG;AACzB;AA3CA,IAAAC,mBACAC;AADA;AAAA;AAAA;AAAA,IAAAD,oBAAe;AACf,IAAAC,qBAAiB;AAAA;AAAA;;;ACDjB;AAAA;AAAA;AAAA;AAAA;AAkCA,eAAsB,UAClB,UACA,OACA,OAAyB,CAAC,GACF;AACxB,QAAM,KAAK,KAAK,YAAY,QAAQ,IAAI,qBAAqB;AAC7D,QAAMC,MAAK,KAAK,YAAY,QAAQ,IAAI,qBAAqB;AAE7D,QAAM,QAAI,uCAAU,IAAI,CAAC,UAAU,MAAM,gBAAgB,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AACxF,MAAI,EAAE,WAAW,GAAG;AAChB,WAAO,EAAE,IAAI,OAAO,OAAO,qBAAqB,EAAE,UAAU,EAAE,MAAM,GAAG;AAAA,EAC3E;AACA,MAAI;AACJ,MAAI;AACA,aAAS,KAAK,MAAM,EAAE,MAAM;AAAA,EAChC,SAAS,KAAK;AACV,WAAO,EAAE,IAAI,OAAO,OAAO,mCAAmC,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,GAAG;AAAA,EACpH;AACA,QAAM,gBAAgB,qBAAqB,MAAM;AACjD,MAAI,CAAC,eAAe;AAChB,WAAO,EAAE,IAAI,OAAO,OAAO,qEAAqE;AAAA,EACpG;AAEA,QAAM,UAAU,MAAM,iBAAiB,CAAC,cAAc,SAAS,GAAG,cAAc,UAAU,GAAG,cAAc,WAAW,GAAGA,GAAE;AAC3H,MAAI,QAAQ,SAAS,GAAG;AACpB,WAAO,EAAE,IAAI,OAAO,OAAO,0BAA0B,QAAQ,KAAK,IAAI,CAAC,IAAI,YAAY,QAAQ;AAAA,EACnG;AAEA,QAAM,kBAAkB,UAAU;AAAA,IAC9B,aAAa;AAAA,IACb,cAAc,MAAM;AAAA,IACpB,MAAM,cAAc;AAAA,IACpB,UAAU,cAAc;AAAA,IACxB,aAAa,cAAc;AAAA,EAC/B,CAAC;AAED,SAAO,EAAE,IAAI,MAAM,gBAAgB,cAAc;AACrD;AAEA,SAAS,qBAAqB,QAAuC;AACjE,MAAI,CAAC,UAAU,OAAO,WAAW,SAAU,QAAO;AAClD,QAAM,MAAM;AACZ,QAAM,SAAS,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAC/D,QAAM,WAAW,MAAM,QAAQ,IAAI,QAAQ,KAAK,IAAI,SAAS,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAAK,IAAI,WAAwB;AAChI,QAAM,aAAa,MAAM,QAAQ,IAAI,WAAW,KAAK,IAAI,YAAY,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAAK,IAAI,cAA2B;AAC3I,MAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAY,QAAO;AAChD,QAAM,YAAY,OAAO,IAAI,eAAe,WAAW,IAAI,aAAa;AACxE,SAAO,EAAE,SAAS,QAAQ,UAAU,aAAa,YAAY,YAAY,UAAU;AACvF;AAEA,eAAe,iBAAiB,KAAe,OAAkC;AAC7E,QAAM,UAAoB,CAAC;AAC3B,aAAW,MAAM,KAAK;AAClB,UAAM,QAAI,uCAAU,OAAO,CAAC,QAAQ,IAAI,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AACvE,QAAI,EAAE,WAAW,EAAG,SAAQ,KAAK,EAAE;AAAA,EACvC;AACA,SAAO;AACX;AAUA,eAAe,kBAAkB,UAAkB,OAAkC;AACjF,QAAM,MAAM,MAAM,kBAAAC,QAAG,SAAS,UAAU,MAAM;AAC9C,QAAM,UAAM,4BAAc,GAAG;AAC7B,MAAI,IAAI,SAAS,KAAK;AACtB,MAAI,IAAI,UAAU,SAAS;AAC3B,QAAM,MAAM,OAAO,GAAG;AACtB,QAAM,WAAW,IAAI,SAAS,IAAI,IAAI,MAAM,MAAM;AAElD,QAAM,UAAU,GAAG,QAAQ;AAC3B,QAAM,kBAAAA,QAAG,UAAU,SAAS,UAAU,MAAM;AAC5C,MAAI;AACA,UAAM,kBAAAA,QAAG,OAAO,SAAS,QAAQ;AAAA,EACrC,SAAS,KAAK;AACV,UAAM,kBAAAA,QAAG,OAAO,OAAO,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AACvC,UAAM;AAAA,EACV;AACJ;AAGO,SAAS,oBAAoB,UAA0B;AAC1D,SAAO,mBAAAC,QAAK,KAAK,mBAAAA,QAAK,QAAQ,QAAQ,GAAG,mBAAmB;AAChE;AA1HA,IAAAC,6BACAC,mBACAC,oBACAC;AAHA;AAAA;AAAA;AAAA,IAAAH,8BAA0B;AAC1B,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,eAA8B;AAAA;AAAA;;;ACH9B;AAAA;AAAA;AAAA;AAkBO,SAAS,uBAAuB,QAA+B;AAClE,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,cAAM,MAAM,2BAAsB,OAAO,MAAM,KAAK,OAAO,aAAa,cAAc,OAAO,eAAe,eAAe,CAAC;AACvI,QAAM,KAAK,cAAM,IAAI,oDAA+C,CAAC;AACrE,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,cAAM,KAAK,UAAU,IAAI,cAAM,KAAK,mBAAmB,OAAO,MAAM,EAAE,CAAC;AAClF,QAAM,KAAK,cAAM,IAAI,wFAAwF,CAAC;AAC9G,QAAM,KAAK,cAAM,IAAI,mFAAmF,CAAC;AACzG,SAAO,MAAM,KAAK,IAAI;AAC1B;AA3BA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAC,mBAA6B;AAC7B,IAAAC,qBAAwB;;;ACDxB,mBAAsB;AAGf,IAAM;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAI,aAAAC;;;ADZJ;;;AEFA;AACA,IAAAC,6BAAyB;AACzB,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;;;ACJjB,sBAAe;AACf,kBAAiB;AACjB,2BAA0B;AAI1B,eAAe,OAAO,UAAkB,WAAsE;AAC5G,MAAI,MAAM,YAAAC,QAAK,QAAQ,QAAQ;AAE/B,SAAO,MAAM;AACX,QAAI,MAAM,UAAU,GAAG,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,YAAAA,QAAK,QAAQ,GAAG;AAC/B,QAAI,WAAW,KAAK;AAClB,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,EACR;AACF;AAEA,SAAS,+BAA8C;AACrD,QAAM,aAAa;AAAA,IACjB,YAAAA,QAAK,QAAQ,WAAW,OAAO;AAAA,IAC/B,YAAAA,QAAK,QAAQ,WAAW,UAAU;AAAA,EACpC;AAEA,aAAW,aAAa,YAAY;AAClC,QAAI,gBAAAC,QAAG,WAAW,YAAAD,QAAK,KAAK,WAAW,SAAS,eAAe,CAAC,GAAG;AACjE,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,uBAAuB,KAA+B;AACnE,QAAM,eAAe,YAAAA,QAAK,KAAK,KAAK,SAAS,eAAe;AAC5D,QAAM,oBAAoB,YAAAA,QAAK,KAAK,KAAK,SAAS,QAAQ;AAE1D,QAAM,CAAC,cAAc,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,IACnD,gBAAAC,QAAG,MAAM,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,IACvC,gBAAAA,QAAG,MAAM,iBAAiB,EAAE,MAAM,MAAM,IAAI;AAAA,EAC9C,CAAC;AACD,MAAI,CAAC,gBAAgB,CAAC,cAAc,aAAa,eAAe,KAAK,WAAW,eAAe,GAAG;AAChG,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,cAAc,YAAY,OAAO,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC5D,gBAAAA,QAAG,SAAS,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,IAC1C,gBAAAA,QAAG,SAAS,iBAAiB,EAAE,MAAM,MAAM,IAAI;AAAA,IAC/C,gBAAAA,QAAG,SAAS,GAAG,EAAE,MAAM,MAAM,IAAI;AAAA,EACnC,CAAC;AAED,MAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS;AAC5C,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,GAAG,OAAO,GAAG,YAAAD,QAAK,GAAG;AACxC,SAAO,aAAa,WAAW,UAAU,KAAK,WAAW,WAAW,UAAU;AAChF;AAEA,eAAe,iBAAiB,KAA+B;AAC7D,QAAM,mBAAmB,YAAAA,QAAK,KAAK,KAAK,QAAQ;AAChD,QAAM,kBAAkB,YAAAA,QAAK,KAAK,KAAK,OAAO;AAC9C,MAAK,MAAM,gBAAAC,QAAG,WAAW,gBAAgB,KAAO,MAAM,gBAAAA,QAAG,WAAW,eAAe,GAAI;AACrF,WAAO;AAAA,EACT;AAEA,SAAO,uBAAuB,GAAG;AACnC;AAEA,eAAe,cAAc,KAA+B;AAC1D,QAAM,WAAW,YAAAD,QAAK,KAAK,KAAK,OAAO;AACvC,QAAM,UAAU,YAAAA,QAAK,KAAK,KAAK,MAAM;AACrC,SAAQ,MAAM,gBAAAC,QAAG,WAAW,QAAQ,KAAO,MAAM,gBAAAA,QAAG,WAAW,OAAO;AACxE;AAKA,eAAsB,eAAgC;AACpD,QAAM,aAAa,6BAA6B;AAChD,MAAI,cAAc,MAAM,iBAAiB,UAAU,GAAG;AACpD,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,MAAM,OAAO,QAAQ,IAAI,GAAG,gBAAgB;AAC5D,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,QAAM,IAAI;AAAA,IACR;AAAA,EAGF;AACF;AAUA,eAAsB,kBAAmC;AACvD,QAAM,UAAU,MAAM,OAAO,QAAQ,IAAI,GAAG,aAAa;AACzD,MAAI,SAAS;AACX,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,IAAI;AACrB;AAoBO,SAAS,uBAAuB,MAAc,QAAQ,IAAI,GAAW;AAC1E,QAAM,gBAAY,gCAAU,OAAO,CAAC,aAAa,kBAAkB,GAAG;AAAA,IACpE;AAAA,IAAK,UAAU;AAAA,IAAQ,OAAO;AAAA,EAChC,CAAC;AACD,MAAI,UAAU,WAAW,GAAG;AAC1B,UAAM,aAAa,UAAU,UAAU,IAAI,KAAK;AAChD,QAAI,WAAW;AAIb,YAAM,YAAY,YAAAD,QAAK,WAAW,SAAS,IAAI,YAAY,YAAAA,QAAK,KAAK,KAAK,SAAS;AAEnF,aAAO,YAAAA,QAAK,QAAQ,SAAS;AAAA,IAC/B;AAAA,EACF;AACA,QAAM,UAAM,gCAAU,OAAO,CAAC,aAAa,iBAAiB,GAAG;AAAA,IAC7D;AAAA,IAAK,UAAU;AAAA,IAAQ,OAAO;AAAA,EAChC,CAAC;AACD,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,UAAU,IAAI,UAAU,IAAI,KAAK;AACvC,QAAI,OAAQ,QAAO;AAAA,EACrB;AACA,SAAO;AACT;;;AC/JA;AAGO,IAAM,IAAI;AAAA;AAAA,EAEb,SAAW,CAAC,MAAc,cAAM,MAAM,CAAC;AAAA,EACvC,OAAW,CAAC,MAAc,cAAM,IAAI,CAAC;AAAA,EACrC,SAAW,CAAC,MAAc,cAAM,OAAO,CAAC;AAAA,EACxC,MAAW,CAAC,MAAc,cAAM,KAAK,CAAC;AAAA;AAAA;AAAA,EAGtC,QAAW,CAAC,MAAc,cAAM,KAAK,EAAE,MAAM,CAAC;AAAA;AAAA,EAC9C,OAAW,CAAC,MAAc,cAAM,IAAI,CAAC;AAAA;AAAA,EACrC,OAAW,CAAC,MAAc,cAAM,KAAK,CAAC;AAAA,EACtC,QAAW,CAAC,MAAc,cAAM,KAAK,CAAC;AAAA,EACtC,MAAW,CAAC,MAAc,cAAM,KAAK,CAAC;AAAA,EACtC,KAAW,CAAC,MAAc,cAAM,IAAI,CAAC;AAAA;AAAA,EAGrC,WAAW,CAAC,MAAc,cAAM,KAAK,EAAE,MAAM,CAAC;AAAA,EAC9C,SAAW,CAAC,MAAc,cAAM,KAAK,EAAE,IAAI,CAAC;AAChD;AAGO,IAAM,MAAM;AAAA,EACf,IAAU,cAAM,MAAM,QAAG;AAAA,EACzB,MAAU,cAAM,IAAI,QAAG;AAAA,EACvB,MAAU,cAAM,OAAO,QAAG;AAAA;AAAA,EAG1B,SAAU,cAAM,MAAM,GAAG;AAAA,EACzB,UAAU,cAAM,OAAO,QAAG;AAAA,EAC1B,SAAU,cAAM,QAAQ,QAAG;AAAA;AAAA,EAE3B,OAAU,cAAM,KAAK,QAAG;AAAA,EACxB,QAAU,cAAM,KAAK,QAAG;AAC5B;;;ACpCA,IAAAE,sBAAmB;AACnB;AACA,IAAAC,mBAAe;AACf,qBAAmB;AACnB,gBAAe;AACf,IAAAC,eAAiB;AACjB,IAAAC,wBAA0B;;;ACN1B,IAAAC,sBAAmB;AACnB,IAAAC,mBAAe;AACf,qBAAe;AACf,IAAAC,oBAAiB;;;ACHjB,IAAAC,mBAAe;AACf,uBAAiB;AACjB,yBAAmB;AAYnB,eAAsB,gBAClB,YACA,MACA,OAAmD,CAAC,GACvC;AACb,QAAM,EAAE,SAAS,GAAG,aAAa,IAAI;AACrC,QAAM,YAAY,iBAAAC,QAAK,QAAQ,UAAU;AAEzC,QAAM,iBAAAC,QAAG,UAAU,SAAS;AAE5B,MAAI,cAAc;AACd,UAAM,CAAC,YAAY,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC7C,iBAAAA,QAAG,SAAS,SAAS;AAAA,MACrB,iBAAAA,QAAG,SAAS,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,IAC9C,CAAC;AACD,QAAI,aAAa,MAAM;AACnB,YAAM,IAAI,MAAM,qBAAqB,UAAU,kBAAkB,YAAY,iBAAiB;AAAA,IAClG;AACA,UAAM,MAAM,iBAAAD,QAAK,SAAS,UAAU,UAAU;AAC9C,QAAI,QAAQ,OAAO,IAAI,WAAW,IAAI,KAAK,iBAAAA,QAAK,WAAW,GAAG,IAAI;AAC9D,YAAM,IAAI;AAAA,QACN,qBAAqB,UAAU,qBAAqB,UAAU,yBAAyB,QAAQ;AAAA,MACnG;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,SAAS,QAAQ,QAAQ,GAAG,IAAI,mBAAAE,QAAO,YAAY,CAAC,EAAE,SAAS,KAAK,CAAC;AAC3E,QAAM,UAAU,GAAG,UAAU,GAAG,MAAM;AACtC,QAAM,UAAU,GAAG,KAAK,UAAU,MAAM,MAAM,MAAM,CAAC;AAAA;AAErD,MAAI;AACA,UAAM,iBAAAD,QAAG,UAAU,SAAS,SAAS,MAAM;AAC3C,UAAM,iBAAAA,QAAG,OAAO,SAAS,UAAU;AAAA,EACvC,SAAS,KAAK;AACV,UAAM,iBAAAA,QAAG,OAAO,OAAO,EAAE,MAAM,MAAM,MAAS;AAC9C,UAAM;AAAA,EACV;AACJ;;;ADzBA,IAAM,cAAc,CAAC,eAAgC,CAAC,WAAW,SAAS,aAAa;AAEvF,SAAS,UAAU,OAAuB;AACxC,SAAO,oBAAAE,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAC/D;AAEA,SAAS,yBAAiC;AACxC,SAAO,kBAAAC,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,SAAS,OAAO;AACjD;AAEA,SAAS,+BAAuC;AAC9C,SAAO,kBAAAD,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,SAAS,UAAU,YAAY;AAChE;AAEA,SAAS,mBAA2B;AAClC,SAAO,kBAAAD,QAAK,KAAK,uBAAuB,GAAG,YAAY;AACzD;AAEA,SAAS,iBAAyB;AAChC,SAAO,kBAAAA,QAAK,KAAK,eAAAC,QAAG,QAAQ,GAAG,SAAS,QAAQ,wBAAwB;AAC1E;AAEA,eAAe,cAAc,OAAoC;AAC/D,QAAM,UAAU,eAAe;AAC/B,QAAM,iBAAAC,QAAG,UAAU,kBAAAF,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,iBAAAE,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,CAAI;AAC3D;AAEA,eAAe,uBAA+C;AAC5D,QAAM,YAAY,iBAAiB;AACnC,MAAI,CAAC,MAAM,iBAAAA,QAAG,WAAW,SAAS,GAAG;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,MAAM,iBAAAA,QAAG,SAAS,SAAS;AACzC,SAAO,OAAO,MAAM,qBAAqB,WAAW,MAAM,mBAAmB;AAC/E;AAEA,eAAsB,8BAA8B,SAAiB,OAAoC,CAAC,GAAwC;AAChJ,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,kBAAkB,kBAAAF,QAAK,KAAK,SAAS,cAAc;AACzD,QAAM,cAAc,MAAM,iBAAAE,QAAG,SAAS,eAAe;AACrD,QAAM,mBAAmB,YAAY;AAErC,MAAI,CAAC,kBAAkB;AACrB,UAAM,IAAI,MAAM,uCAAuC,eAAe,GAAG;AAAA,EAC3E;AAEA,QAAM,kBAAkB,kBAAAF,QAAK,KAAK,SAAS,SAAS,OAAO;AAC3D,QAAM,wBAAwB,kBAAAA,QAAK,KAAK,SAAS,SAAS,UAAU,YAAY;AAChF,QAAM,kBAAkB,uBAAuB;AAC/C,QAAM,wBAAwB,6BAA6B;AAC3D,QAAM,YAAY,iBAAiB;AAEnC,QAAM,cAAc;AAAA,IAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ,UAAU,eAAe;AAAA,IACjC,SAAS;AAAA,IACT,YAAY;AAAA,EACd,CAAC;AAED,QAAM,iBAAiB,MAAM,qBAAqB;AAClD,MAAI,CAAC,KAAK,SAAS,mBAAmB,oBAAoB,MAAM,iBAAAE,QAAG,WAAW,eAAe,KAAK,MAAM,iBAAAA,QAAG,WAAW,qBAAqB,GAAG;AAC5I,UAAM,cAAc;AAAA,MAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,UAAU,eAAe;AAAA,MACjC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,KAAK,IAAI,IAAI;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,kBAAkB,SAAS,MAAM;AAAA,EAC5C;AAEA,MAAI;AACF,UAAM,iBAAAA,QAAG,OAAO,eAAe;AAC/B,UAAM,iBAAAA,QAAG,KAAK,iBAAiB,iBAAiB,EAAE,QAAQ,YAAY,CAAC;AACvE,UAAM,iBAAAA,QAAG,UAAU,kBAAAF,QAAK,QAAQ,qBAAqB,CAAC;AACtD,UAAM,iBAAAE,QAAG,KAAK,uBAAuB,qBAAqB;AAC1D,UAAM,gBAAgB,WAAW;AAAA,MAC/B;AAAA,MACA,eAAe;AAAA,IACjB,GAAG,EAAE,cAAc,gBAAgB,CAAC;AAEpC,UAAM,cAAc;AAAA,MAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,UAAU,eAAe;AAAA,MACjC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,KAAK,IAAI,IAAI;AAAA,IAC3B,CAAC;AAED,WAAO,EAAE,kBAAkB,SAAS,KAAK;AAAA,EAC3C,SAASC,SAAO;AACd,UAAM,cAAc;AAAA,MAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,UAAU,eAAe;AAAA,MACjC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,KAAK,IAAI,IAAI;AAAA,IAC3B,CAAC;AACD,UAAMA;AAAA,EACR;AACF;;;AExIO,SAAS,uBAAgC;AAC9C,SAAO,QAAQ,IAAI,sBAAsB;AAC3C;;;AH2FA,IAAM,qBAAqB;AAEpB,SAAS,iCAAuC;AACnD,UAAQ,IAAI,cAAM,KAAK,yBAAyB,CAAC;AACjD,UAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,iDAAiD;AACjF,UAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,oDAAoD;AACpF,UAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,mDAAmD;AACnF,UAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,mEAAmE;AACvG;AAEA,eAAsB,0BAA0B,MAAkE;AAC9G,QAAM,EAAE,UAAU,SAAS,OAAO,WAAW,OAAO,QAAQ,MAAM,IAAI;AAEtE,UAAQ,IAAI,EAAE,KAAK,+CAA0C,CAAC;AAC9D,iBAAe;AAEf,MAAI,UAAU;AACV,UAAMC,gBAAe,aAAAC,QAAK,KAAK,UAAAC,QAAG,QAAQ,GAAG,WAAW,eAAe;AACvE,QAAI,qBAAqB,GAAG;AACxB,YAAM,aAAa,MAAM,2BAA2B,EAAE,OAAO,CAAC;AAC9D,aAAO;AAAA,QACH,cAAc,WAAW;AAAA,QACzB,oBAAoB,WAAW,UAAU,IAAI;AAAA,QAC7C,qBAAqB,WAAW;AAAA,QAChC,eAAe,WAAW;AAAA,MAC9B;AAAA,IACJ;AAEA,YAAQ,IAAI,EAAE,MAAM,wFAAmF,CAAC;AACxG,YAAQ,IAAI,EAAE,MAAM,uCAAkCF,aAAY,EAAE,CAAC;AACrE,UAAM,uBAAuB;AAC7B,WAAO;AAAA,MACH,cAAAA;AAAA,MACA,oBAAoB;AAAA,MACpB,qBAAqB;AAAA,MACrB,eAAe;AAAA,IACnB;AAAA,EACJ;AAEA,QAAM,cAAc,MAAM,mBAAmB;AAC7C,QAAM,kBAAkB,aAAAC,QAAK,KAAK,aAAa,SAAS,UAAU,YAAY;AAC9E,QAAM,uBAAuB,aAAAA,QAAK,KAAK,aAAa,SAAS,UAAU,eAAe;AACtF,QAAM,cAAc,MAAM,iBAAAE,QAAG,SAAS,eAAe;AACrD,QAAM,kBAAkB,aAAAF,QAAK,KAAK,UAAU,SAAS,OAAO;AAC5D,QAAM,iBAAiB,8BAA8B,YAAY,SAAS,CAAC,GAAG,eAAe;AAC7F,QAAM,sBAAsB,mCAAmC,YAAY,YAAY,eAAe;AACtG,QAAM,eAAe,aAAAA,QAAK,KAAK,UAAU,WAAW,eAAe;AAEnE,QAAM,sBAAsB,MAAM,iBAAAE,QAAG,WAAW,YAAY;AAC5D,QAAM,eAAe,MAAM,iBAAiB,oBAAoB;AAChE,QAAM,mBAAmB,sBAAsB,MAAM,aAAa,YAAY,IAAI,CAAC;AACnF,QAAM,gBAAgB,qBAAqB,IACrC,8BAA8B,iBAAiB,SAAS,CAAC,GAAG,cAAc,IAC1E;AAEN,QAAM,iBAAiC,sBACjC,EAAE,GAAG,kBAAkB,OAAO,cAAc,IAC5C,EAAE,GAAG,cAAc,OAAO,cAAc;AAE9C,MAAI,qBAAqB;AACrB,mBAAe,aAAa;AAAA,EAChC;AAEA,MAAI,OAAO;AACP,WAAO,eAAe;AACtB,WAAO,eAAe;AAAA,EAC1B;AAEA,QAAM,qBAAqB,OAAO,KAAK,aAAa,EAAE;AACtD,QAAM,sBAAsB,iBAAiB,aAAa;AAE1D,MAAI,QAAQ;AACR,WAAO,EAAE,cAAc,oBAAoB,qBAAqB,eAAe,MAAM;AAAA,EACzF;AAEA,QAAM,qBAAqB,sBAAsB,KAAK,UAAU,gBAAgB,IAAI;AACpF,QAAM,mBAAmB,KAAK,UAAU,cAAc;AACtD,MAAI,uBAAuB,kBAAkB;AACzC,UAAM,uBAAuB;AAC7B,WAAO,EAAE,cAAc,oBAAoB,qBAAqB,eAAe,MAAM;AAAA,EACzF;AAEA,QAAM,gBAAgB,cAAc,cAAc;AAClD,QAAM,uBAAuB;AAE7B,SAAO,EAAE,cAAc,oBAAoB,qBAAqB,eAAe,KAAK;AACxF;AAEA,eAAsB,4BAClB,UACA,OAA6B,CAAC,GACM;AACpC,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,cAAc,MAAM,mBAAmB;AAC7C,QAAM,kBAAkB,aAAAF,QAAK,KAAK,aAAa,SAAS,UAAU,YAAY;AAC9E,QAAM,uBAAuB,aAAAA,QAAK,KAAK,aAAa,SAAS,UAAU,eAAe;AAEtF,QAAM,eAAe,aAAAA,QAAK,KAAK,UAAU,WAAW,eAAe;AAEnE,QAAM,cAAc,MAAM,iBAAAE,QAAG,SAAS,eAAe;AACrD,QAAM,kBAAkB,aAAAF,QAAK,KAAK,UAAU,SAAS,OAAO;AAC5D,QAAM,iBAAiB,8BAA8B,YAAY,SAAS,CAAC,GAAG,eAAe;AAC7F,QAAM,sBAAsB,mCAAmC,YAAY,YAAY,eAAe;AACtG,QAAM,eAAe,qBAAqB,IACpC,8BAA8B,MAAM,kBAAkB,YAAY,GAAG,cAAc,IACnF;AACN,QAAM,eAAe,iBAAiB,YAAY;AAElD,QAAM,sBAAsB,MAAM,iBAAAE,QAAG,WAAW,YAAY;AAC5D,QAAM,mBAAmB,sBAAsB,MAAM,aAAa,YAAY,IAAI,CAAC;AACnF,QAAM,eAAe,sBAAsB,mBAAmB,MAAM,iBAAiB,oBAAoB;AACzG,QAAM,eAA+B,EAAE,GAAG,cAAc,OAAO,aAAa;AAC5E,MAAI,uBAAuB,CAAC,aAAa,YAAY;AACjD,iBAAa,aAAa;AAAA,EAC9B;AAEA,MAAI,KAAK,UAAU,gBAAgB,MAAM,KAAK,UAAU,YAAY,GAAG;AACnE,WAAO,EAAE,cAAc,SAAS,OAAO,aAAa;AAAA,EACxD;AAEA,MAAI,QAAQ;AACR,WAAO,EAAE,cAAc,SAAS,MAAM,aAAa;AAAA,EACvD;AAEA,QAAM,gBAAgB,cAAc,YAAY;AAChD,SAAO,EAAE,cAAc,SAAS,MAAM,aAAa;AACvD;AAEA,eAAsB,2BAA2B,OAA6B,CAAC,GAA8C;AACzH,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,eAAe,aAAAF,QAAK,KAAK,UAAAC,QAAG,QAAQ,GAAG,WAAW,eAAe;AACvE,QAAM,cAAc,MAAM,sBAAsB,6BAA6B,CAAC;AAC9E,QAAM,iBAAiB,6BAA6B,YAAY,SAAS,CAAC,GAAG,uBAAuB,CAAC;AAErG,QAAM,cAAc;AAAA,IAChB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ,UAAU,YAAY;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,EAChB,CAAC;AAED,QAAM,kBAAkB,MAAM,aAAa,YAAY;AACvD,QAAM,cAAc,MAAM,2BAA2B,iBAAiB,gBAAgB,EAAE,OAAO,CAAC;AAChG,MAAI,CAAC,YAAY,SAAS;AACtB,UAAM,uBAAuB;AAC7B,UAAM,cAAc;AAAA,MAChB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,UAAU,YAAY;AAAA,MAC9B,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,KAAK,IAAI,IAAI;AAAA,IAC7B,CAAC;AACD,WAAO,EAAE,cAAc,SAAS,OAAO,cAAc,YAAY,aAAa;AAAA,EAClF;AAEA,MAAI,CAAC,QAAQ;AACT,UAAM,gBAAgB,cAAc,YAAY,QAAQ;AAAA,EAC5D;AAEA,QAAM,uBAAuB;AAC7B,QAAM,cAAc;AAAA,IAChB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ,UAAU,YAAY;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,KAAK,IAAI,IAAI;AAAA,EAC7B,CAAC;AACD,SAAO,EAAE,cAAc,SAAS,CAAC,QAAQ,cAAc,YAAY,aAAa;AACpF;AAEA,eAAe,yBAAwC;AACnD,QAAM,UAAU,UAAAA,QAAG,QAAQ;AAC3B,QAAM,qBAAqB,aAAAD,QAAK,KAAK,SAAS,SAAS,SAAS,gBAAgB;AAChF,QAAM,qBAAqB,aAAAA,QAAK,KAAK,SAAS,WAAW,eAAe;AACxE,MAAI,CAAC,MAAM,iBAAAE,QAAG,WAAW,kBAAkB,GAAG;AAC1C;AAAA,EACJ;AAEA,QAAM,WAAW,MAAM,aAAa,kBAAkB;AACtD,QAAM,kBAAkB,SAAS,kBAAkB;AACnD,QAAM,iBAAkB,SAAS,YAAiD;AAClF,MAAI,mBAAmB,iBAAiB;AACpC;AAAA,EACJ;AAEA,WAAS,aAAa,EAAE,MAAM,WAAW,SAAS,gBAAgB;AAClE,QAAM,gBAAgB,oBAAoB,QAAQ;AACtD;AAEA,eAAsB,sBAAsB,iBAAqD;AAC7F,SAAO,MAAM,iBAAAA,QAAG,SAAS,eAAe;AAC5C;AAEO,SAAS,6BAA6B,OAAsC,gBAAuD;AACtI,QAAM,qBAAqB,yBAAyB,cAAc;AAClE,SAAO,uBAAuB,OAAO,kBAAkB;AAC3D;AAEA,SAAS,8BAA8B,OAAsC,iBAAwD;AACjI,QAAM,qBAAqB,yBAAyB,eAAe;AACnE,SAAO,uBAAuB,OAAO,kBAAkB;AAC3D;AAEA,SAAS,uBAAuB,OAAsC,UAAiD;AACnH,QAAM,iBAAgD,CAAC;AACvD,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,KAAK,GAAG;AACvD,UAAM,cAAc,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAuB;AACjF,mBAAe,SAAS,IAAI,YAAY,IAAI,CAAC,aAAa;AAAA,MACtD,GAAG;AAAA,MACH,OAAO,QAAQ,MAAM,IAAI,CAAC,SAAS,KAAK,SAAS,YAC3C,OACA,EAAE,GAAG,MAAM,SAAS,0CAA0C,KAAK,SAAS,QAAQ,EAAE,CAAC;AAAA,IACjG,EAAE;AAAA,EACN;AACA,SAAO;AACX;AAEA,SAAS,mCAAmC,kBAAmD,iBAAmE;AAC9J,MAAI,CAAC,kBAAkB,QAAQ;AAC3B,WAAO;AAAA,EACX;AAEA,QAAM,qBAAqB,yBAAyB,eAAe;AACnE,QAAM,qBAAqB,4BAA4B,iBAAiB,QAAQ,kBAAkB;AAElG,SAAO;AAAA,IACH,MAAM;AAAA,IACN,SAAS,mBAAmB,iBAAiB,QAAQ,kBAAkB;AAAA,EAC3E;AACJ;AAEA,SAAS,4BAA4B,QAAgB,oBAAoC;AACrF,QAAM,oBAAoB;AAC1B,QAAM,kBAAkB,OAAO,MAAM,iBAAiB;AACtD,MAAI,kBAAkB,CAAC,GAAG;AACtB,WAAO,yBAAyB,aAAAF,QAAK,KAAK,oBAAoB,gBAAgB,CAAC,CAAC,CAAC;AAAA,EACrF;AAEA,SAAO,yBAAyB,aAAAA,QAAK,KAAK,oBAAoB,MAAM,CAAC;AACzE;AAEA,SAAS,mBAAmB,YAAoB,cAA8B;AAC1E,QAAM,MAAM,aAAAA,QAAK,QAAQ,UAAU,EAAE,YAAY;AACjD,MAAI,QAAQ,SAAS,QAAQ,UAAU,QAAQ,QAAQ;AACnD,WAAO,SAAS,YAAY;AAAA,EAChC;AACA,MAAI,QAAQ,OAAO;AACf,WAAO,SAAS,YAAY;AAAA,EAChC;AAEA,QAAM,YAAY,QAAQ,aAAa,UAAU,WAAW;AAC5D,SAAO,GAAG,SAAS,KAAK,YAAY;AACxC;AAEA,SAAS,0CAA0C,SAAiB,oBAAoC;AACpG,QAAM,qBAAqB;AAAA,IACvB;AAAA,IACA;AAAA,EACJ;AAEA,MAAI,mBAAmB;AACvB,aAAW,WAAW,oBAAoB;AACtC,uBAAmB,iBAAiB,QAAQ,SAAS,CAAC,QAAQ,iBAAyB;AACnF,YAAM,yBAAyB,aAAa,QAAQ,OAAO,GAAG;AAC9D,YAAM,mBAAmB,aAAAA,QAAK,KAAK,oBAAoB,sBAAsB;AAC7E,aAAO,IAAI,yBAAyB,gBAAgB,CAAC;AAAA,IACzD,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,SAAS,yBAAyB,YAA4B;AAC1D,SAAO,WAAW,QAAQ,OAAO,GAAG;AACxC;AAEA,SAAS,iBAAiB,OAA8C;AACpE,SAAO,OAAO,OAAO,KAAK,EAAE,OAAO,CAAC,OAAO,aAAa,QAAQ,SAAS,QAAQ,CAAC;AACtF;AAEA,SAAS,eAAe,SAA8B;AAClD,QAAM,YAAY;AAAA,IACd,SAAS,QAAQ,WAAW;AAAA,IAC5B,OAAO,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,SAAS,KAAK,SAAS,SAAS,KAAK,WAAW,KAAK,EAAE;AAAA,EAClH;AACA,SAAO,oBAAAG,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,UAAU,SAAS,CAAC,EAAE,OAAO,KAAK;AACrF;AAEA,SAAS,gBACL,SACA,kBACA,kBACW;AACX,SAAO;AAAA,IACH,GAAG;AAAA,IACH,SAAS;AAAA,IACT,OAAO;AAAA,MACH,SAAS;AAAA,MACT,MAAM,eAAe,OAAO;AAAA,IAChC;AAAA,IACA,OAAO,QAAQ,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,EAAE;AAAA,EACpD;AACJ;AAEA,SAAS,sBAAsB,MAAoB,OAA8B;AAC7E,MAAI,CAAC,QAAQ,CAAC,OAAO;AACjB,WAAO;AAAA,EACX;AAEA,SAAO,eAAe,IAAI,MAAM,eAAe,KAAK;AACxD;AAEA,SAAS,eAAe,SAAsB,iBAAuC;AACjF,MAAI,QAAQ,YAAY,oBAAoB;AACxC,WAAO;AAAA,EACX;AAEA,QAAM,cAAc,QAAQ,OAAO,QAAQ,eAAe,OAAO;AACjE,SAAO,gBAAgB,IAAI,WAAW;AAC1C;AAEA,SAAS,8BAA8B,eAA8C,gBAA8E;AAC/J,QAAM,kBAAkB,IAAI,IAAI,OAAO,OAAO,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,eAAe,OAAO,CAAC,CAAC;AAC9G,QAAM,WAA0C,CAAC;AAEjD,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,aAAa,GAAG;AAC/D,UAAM,OAAO,SAAS,OAAO,CAAC,YAAY,CAAC,eAAe,SAAS,eAAe,CAAC;AACnF,QAAI,KAAK,SAAS,GAAG;AACjB,eAAS,SAAS,IAAI;AAAA,IAC1B;AAAA,EACJ;AAEA,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,cAAc,GAAG;AAChE,aAAS,SAAS,IAAI,SAAS,SAAS,IAAI,CAAC,GAAG,UAAU,GAAG,SAAS,SAAS,CAAC,IAAI;AAAA,EACxF;AAEA,SAAO;AACX;AAEA,eAAsB,2BAClB,iBACA,gBACA,OAA6B,CAAC,GACN;AACxB,QAAM,mBAAmB,MAAMC,sBAAqB;AACpD,QAAM,eAAe,gBAAgB,SAAS,CAAC;AAC/C,QAAM,cAAc,OAAO;AAAA,IACvB,OAAO,QAAQ,cAAc,EAAE,IAAI,CAAC,CAAC,WAAW,QAAQ,MAAM;AAC1D,YAAM,mBAAmB,aAAa,SAAS,KAAK,CAAC;AACrD,aAAO;AAAA,QACH;AAAA,QACA,SAAS,IAAI,CAAC,YAAY;AAAA,UACtB;AAAA,UACA;AAAA,UACA,iBAAiB,KAAK,CAAC,oBAAoB,sBAAsB,iBAAiB,OAAO,CAAC;AAAA,QAC9F,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AACA,QAAM,kBAAkB,IAAI,IAAI,OAAO,OAAO,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,QAAQ,OAAO,QAAQ,eAAe,OAAO,CAAC,CAAC;AAClI,QAAM,cAA6C,CAAC;AACpD,QAAM,kBAAkB,aAAAJ,QAAK,QAAQ,UAAAC,QAAG,QAAQ,GAAG,SAAS,OAAO;AAEnE,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC7D,gBAAY,SAAS,IAAI,CAAC,GAAG,QAAQ;AAAA,EACzC;AAEA,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,YAAY,GAAG;AAC9D,UAAM,iBAAiB,YAAY,SAAS,KAAK,CAAC;AAClD,eAAW,WAAW,UAAU;AAC5B,YAAM,YAAY,eAAe,OAAO;AACxC,UAAI,QAAQ,YAAY,sBAAsB,gBAAgB,IAAI,SAAS,KAAK,gBAAgB,IAAI,QAAQ,OAAO,QAAQ,EAAE,GAAG;AAC5H,cAAM,cAAc,EAAE,YAAW,oBAAI,KAAK,GAAE,YAAY,GAAG,WAAW,mBAAmB,OAAO,6BAA6B,UAAU,WAAW,QAAQ,UAAU,SAAS,GAAG,QAAQ,WAAW,SAAS,MAAM,YAAY,EAAE,CAAC;AACjO;AAAA,MACJ;AAEA,UAAI,uBAAuB,SAAS,eAAe,GAAG;AAClD,gBAAQ,KAAK,wBAAwB,SAAS,IAAI,UAAU,SAAS,CAAC,EAAE;AACxE,cAAM,cAAc,EAAE,YAAW,oBAAI,KAAK,GAAE,YAAY,GAAG,WAAW,mBAAmB,OAAO,gCAAgC,UAAU,WAAW,QAAQ,UAAU,SAAS,GAAG,QAAQ,YAAY,SAAS,MAAM,YAAY,EAAE,CAAC;AAAA,MACzO;AAEA,qBAAe,KAAK,OAAO;AAAA,IAC/B;AAEA,QAAI,eAAe,SAAS,GAAG;AAC3B,kBAAY,SAAS,IAAI;AAAA,IAC7B;AAAA,EACJ;AAEA,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,WAAW,GAAG;AAC7D,eAAW,WAAW,UAAU;AAC5B,YAAM,cAAc,EAAE,YAAW,oBAAI,KAAK,GAAE,YAAY,GAAG,WAAW,mBAAmB,OAAO,wBAAwB,UAAU,WAAW,QAAQ,UAAU,QAAQ,OAAO,QAAQ,eAAe,OAAO,CAAC,GAAG,QAAQ,OAAO,SAAS,MAAM,YAAY,EAAE,CAAC;AAAA,IACjQ;AAAA,EACJ;AAEA,QAAM,eAAyC,EAAE,GAAG,iBAAiB,OAAO,YAAY;AACxF,QAAM,UAAU,KAAK,UAAU,eAAe,MAAM,KAAK,UAAU,YAAY;AAC/E,SAAO,EAAE,UAAU,cAAc,SAAS,WAAW,CAAC,KAAK,QAAQ,cAAc,iBAAiB,WAAW,EAAE;AACnH;AAEA,SAAS,uBAAuB,SAAsB,iBAAkC;AACpF,MAAI,QAAQ,YAAY,oBAAoB;AACxC,WAAO;AAAA,EACX;AAEA,MAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,GAAG;AAC/B,WAAO;AAAA,EACX;AAEA,SAAO,QAAQ,MAAM,KAAK,CAAC,SAAS,OAAO,KAAK,YAAY,YAAY,yBAAyB,KAAK,SAAS,eAAe,CAAC;AACnI;AAEA,SAAS,yBAAyB,SAAiB,iBAAkC;AACjF,MAAI;AACJ,MAAI;AACA,eAAW,eAAAI,QAAO,aAAa,eAAe;AAAA,EAClD,QAAQ;AAEJ,eAAW,aAAAL,QAAK,QAAQ,eAAe;AAAA,EAC3C;AAEA,aAAW,SAAS,yBAAyB,OAAO,GAAG;AAEnD,UAAM,oBAAoB,aAAAA,QAAK,QAAQ,YAAY,KAAK,CAAC;AACzD,QAAI;AACJ,QAAI;AACA,sBAAgB,eAAAK,QAAO,aAAa,iBAAiB;AAAA,IACzD,QAAQ;AAIJ,sBAAgB;AAAA,IACpB;AAEA,UAAM,eAAe,aAAAL,QAAK,SAAS,UAAU,aAAa;AAC1D,QAAI,iBAAiB,MAAM,CAAC,aAAa,WAAW,IAAI,KAAK,CAAC,aAAAA,QAAK,WAAW,YAAY,GAAG;AACzF,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,yBAAyB,SAA2B;AACzD,QAAM,UAAU,QAAQ,MAAM,+BAA+B,KAAK,CAAC;AACnE,SAAO,QACF,IAAI,CAAC,UAAU,MAAM,QAAQ,gBAAgB,EAAE,CAAC,EAChD,OAAO,CAAC,UAAU,MAAM,SAAS,cAAc,CAAC;AACzD;AAEA,SAAS,YAAY,YAA4B;AAC7C,MAAI,CAAC,WAAW,WAAW,IAAI,GAAG;AAC9B,WAAO;AAAA,EACX;AAGA,SAAO,aAAAA,QAAK,KAAK,UAAAC,QAAG,QAAQ,GAAG,WAAW,MAAM,CAAC,CAAC;AACtD;AAEA,eAAe,kBAAkB,cAA8D;AAC3F,QAAM,WAAW,MAAM,aAAa,YAAY;AAChD,SAAO,SAAS,SAAS,CAAC;AAC9B;AAEA,eAAeG,wBAAwC;AACnD,QAAM,cAAc,MAAM,mBAAmB;AAC7C,QAAM,MAAM,MAAM,iBAAAF,QAAG,SAAS,aAAAF,QAAK,KAAK,aAAa,cAAc,CAAC;AACpE,SAAO,IAAI,WAAW;AAC1B;AAEA,eAAe,aAAa,cAA+C;AACvE,MAAI;AACA,WAAO,MAAM,iBAAAE,QAAG,SAAS,YAAY;AAAA,EACzC,QAAQ;AACJ,WAAO,CAAC;AAAA,EACZ;AACJ;AAEA,eAAe,iBAAiB,sBAAuD;AACnF,MAAI;AACA,WAAO,MAAM,iBAAAA,QAAG,SAAS,oBAAoB;AAAA,EACjD,QAAQ;AACJ,WAAO,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,aAAa,UAAU,GAAG,kBAAkB,EAAE,SAAS,KAAK,EAAE;AAAA,EACrG;AACJ;AAEA,eAAe,qBAAsC;AACjD,QAAM,aAAa,CAAC,aAAAF,QAAK,QAAQ,WAAW,OAAO,GAAG,aAAAA,QAAK,QAAQ,WAAW,UAAU,CAAC;AACzF,aAAW,aAAa,YAAY;AAChC,UAAM,kBAAkB,aAAAA,QAAK,KAAK,WAAW,SAAS,UAAU,YAAY;AAC5E,QAAI,MAAM,iBAAAE,QAAG,WAAW,eAAe,GAAG;AACtC,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,IAAI,MAAM,+EAA+E;AACnG;AAEA,SAAS,iBAAuB;AAC5B,MAAI;AACA,UAAM,WAAW,KAAK,MAAM,iBAAAA,QAAG,aAAa,aAAAF,QAAK,QAAQ,WAAW,iBAAiB,GAAG,MAAM,CAAC;AAC/F,UAAM,aAAS,iCAAU,OAAO,CAAC,QAAQ,cAAc,WAAW,QAAQ,GAAG,EAAE,UAAU,QAAQ,OAAO,QAAQ,SAAS,IAAK,CAAC;AAC/H,QAAI,OAAO,WAAW,KAAK,CAAC,OAAO,OAAQ;AAE3C,UAAM,aAAqB,KAAK,MAAM,OAAO,OAAO,KAAK,CAAC;AAC1D,UAAMM,SAAQ,CAAC,UAAkB,MAAM,MAAM,GAAG,EAAE,IAAI,MAAM;AAC5D,UAAM,CAAC,MAAM,MAAM,IAAI,IAAIA,OAAM,SAAS,OAAO;AACjD,UAAM,CAAC,MAAM,MAAM,IAAI,IAAIA,OAAM,UAAU;AAC3C,UAAM,UAAU,OAAO,QAAS,SAAS,QAAQ,OAAO,QAAU,SAAS,QAAQ,SAAS,QAAQ,OAAO;AAC3G,QAAI,SAAS;AACT,cAAQ,IAAI,EAAE,QAAQ,sCAAiC,UAAU,MAAM,SAAS,OAAO,GAAG,CAAC;AAC3F,cAAQ,IAAI,EAAE,MAAM,4CAA4C,CAAC;AAAA,IACrE;AAAA,EACJ,QAAQ;AAAA,EAER;AACJ;;;AIzmBA;AACA,IAAAC,kBAAe;AACf,IAAAC,oBAAiB;AACjB,gCAA0B;AAC1B,IAAAC,kBAA0I;;;ACJ1I,IAAAC,oBAAiB;;;ACAjB,IAAAC,kBAAe;AACf,IAAAC,oBAAiB;AAEV,IAAM,8BAA8B;AAEpC,IAAM,kBAAkB,CAAC,UAAU,IAAI;AAMvC,IAAM,uBAAuB,CAAC,WAAW,WAAW,KAAK;AAEzD,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AAEvB,IAAM,sBAAsB,oBAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,kBAAkB;AAExB,SAAS,kBAAkB,WAA2B;AAC3D,SAAO,kBAAAC,QAAK,KAAK,WAAW,SAAS,QAAQ;AAC/C;AAEO,SAAS,0BAAkC;AAChD,SAAO,kBAAAA,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,SAAS,QAAQ;AAClD;AAEO,SAAS,uBAAuB,YAA4B;AACjE,SAAO,kBAAAD,QAAK,KAAK,YAAY,SAAS;AACxC;AAEO,SAAS,wBAAwB,YAA4B;AAClE,SAAO,kBAAAA,QAAK,KAAK,YAAY,UAAU;AACzC;AAGO,SAAS,qBAAqB,YAA4B;AAC/D,SAAO,kBAAAA,QAAK,KAAK,YAAY,QAAQ,OAAO;AAC9C;AAEO,SAAS,sBAAsB,UAAwB;AAC5D,MAAI,CAAC,6BAA6B,KAAK,QAAQ,GAAG;AAChD,UAAM,IAAI,MAAM,sBAAsB,QAAQ,kDAAkD;AAAA,EAClG;AACA,MAAI,oBAAoB,IAAI,QAAQ,GAAG;AACrC,UAAM,IAAI,MAAM,cAAc,QAAQ,qCAAqC;AAAA,EAC7E;AACF;AAEO,SAAS,oBAAoB,YAAoB,UAA0B;AAChF,wBAAsB,QAAQ;AAC9B,SAAO,kBAAAA,QAAK,KAAK,YAAY,QAAQ;AACvC;AAMO,SAAS,qBAAqB,YAA4B;AAC/D,SAAO,kBAAAE,QAAK,KAAK,YAAY,eAAe;AAC9C;;;ADhEO,SAAS,wBAAiC;AAC7C,SAAO,QAAQ,IAAI,uBAAuB;AAC9C;AAEO,SAAS,+BAAmE;AAC/E,MAAI,CAAC,sBAAsB,GAAG;AAC1B,WAAO;AAAA,EACX;AAEA,QAAM,mBAAmB,wBAAwB;AACjD,SAAO;AAAA,IACH,QAAQ,kBAAAC,QAAK,KAAK,kBAAkB,SAAS;AAAA,IAC7C,iBAAiB,kBAAAA,QAAK,KAAK,kBAAkB,UAAU;AAAA,EAC3D;AACJ;;;AEjBA,IAAAC,kBAAe;AACf,IAAAC,oBAAiB;AACjB,IAAAC,mBAAe;;;ACFf,IAAAC,mBAAe;AACf,IAAAC,oBAAiB;;;ACDjB,IAAAC,mBAAe;;;ACAf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,aAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,WAAAC;AAAA,EAAA;AAAA;;;ACAA,IAAAC,gBAAA;AAAA,SAAAA,eAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAI;AAEG,IAAM,QAAsB,uBAAO,OAAO;AAAA,EAC7C,QAAQ;AACZ,CAAC;AAAA;AAC+B,SAAS,aAAa,MAAMC,cAAa,QAAQ;AAC7E,WAASC,MAAK,MAAM,KAAK;AACrB,QAAI,CAAC,KAAK,MAAM;AACZ,aAAO,eAAe,MAAM,QAAQ;AAAA,QAChC,OAAO;AAAA,UACH;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ,oBAAI,IAAI;AAAA,QACpB;AAAA,QACA,YAAY;AAAA,MAChB,CAAC;AAAA,IACL;AACA,QAAI,KAAK,KAAK,OAAO,IAAI,IAAI,GAAG;AAC5B;AAAA,IACJ;AACA,SAAK,KAAK,OAAO,IAAI,IAAI;AACzB,IAAAD,aAAY,MAAM,GAAG;AAErB,UAAME,SAAQ,EAAE;AAChB,UAAM,OAAO,OAAO,KAAKA,MAAK;AAC9B,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,YAAM,IAAI,KAAK,CAAC;AAChB,UAAI,EAAE,KAAK,OAAO;AACd,aAAK,CAAC,IAAIA,OAAM,CAAC,EAAE,KAAK,IAAI;AAAA,MAChC;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,SAAS,QAAQ,UAAU;AAAA,EACjC,MAAM,mBAAmB,OAAO;AAAA,EAChC;AACA,SAAO,eAAe,YAAY,QAAQ,EAAE,OAAO,KAAK,CAAC;AACzD,WAAS,EAAE,KAAK;AACZ,QAAIC;AACJ,UAAM,OAAO,QAAQ,SAAS,IAAI,WAAW,IAAI;AACjD,IAAAF,MAAK,MAAM,GAAG;AACd,KAACE,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AAC7C,eAAW,MAAM,KAAK,KAAK,UAAU;AACjC,SAAG;AAAA,IACP;AACA,WAAO;AAAA,EACX;AACA,SAAO,eAAe,GAAG,QAAQ,EAAE,OAAOF,MAAK,CAAC;AAChD,SAAO,eAAe,GAAG,OAAO,aAAa;AAAA,IACzC,OAAO,CAAC,SAAS;AACb,UAAI,QAAQ,UAAU,gBAAgB,OAAO;AACzC,eAAO;AACX,aAAO,MAAM,MAAM,QAAQ,IAAI,IAAI;AAAA,IACvC;AAAA,EACJ,CAAC;AACD,SAAO,eAAe,GAAG,QAAQ,EAAE,OAAO,KAAK,CAAC;AAChD,SAAO;AACX;AAEO,IAAM,SAAS,uBAAO,WAAW;AACjC,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACtC,cAAc;AACV,UAAM,0EAA0E;AAAA,EACpF;AACJ;AACO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACvC,YAAY,MAAM;AACd,UAAM,uDAAuD,IAAI,EAAE;AACnE,SAAK,OAAO;AAAA,EAChB;AACJ;AAAA,CACC,KAAK,YAAY,uBAAuB,GAAG,qBAAqB,CAAC;AAC3D,IAAM,eAAe,WAAW;AAChC,SAAS,OAAO,WAAW;AAC9B,MAAI;AACA,WAAO,OAAO,cAAc,SAAS;AACzC,SAAO;AACX;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,SAAS,YAAY,KAAK;AAC7B,SAAO;AACX;AACO,SAAS,eAAe,KAAK;AAChC,SAAO;AACX;AACO,SAAS,SAAS,MAAM;AAAE;AAC1B,SAAS,YAAY,IAAI;AAC5B,QAAM,IAAI,MAAM,sCAAsC;AAC1D;AACO,SAAS,OAAO,GAAG;AAAE;AACrB,SAAS,cAAc,SAAS;AACnC,QAAM,gBAAgB,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,QAAQ;AAChF,QAAM,SAAS,OAAO,QAAQ,OAAO,EAChC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,cAAc,QAAQ,CAAC,CAAC,MAAM,EAAE,EACnD,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB,SAAO;AACX;AACO,SAAS,WAAWG,QAAO,YAAY,KAAK;AAC/C,SAAOA,OAAM,IAAI,CAAC,QAAQ,mBAAmB,GAAG,CAAC,EAAE,KAAK,SAAS;AACrE;AACO,SAAS,sBAAsB,GAAG,OAAO;AAC5C,MAAI,OAAO,UAAU;AACjB,WAAO,MAAM,SAAS;AAC1B,SAAO;AACX;AACO,SAAS,OAAO,QAAQ;AAC3B,QAAMC,OAAM;AACZ,SAAO;AAAA,IACH,IAAI,QAAQ;AACR,UAAI,CAACA,MAAK;AACN,cAAM,QAAQ,OAAO;AACrB,eAAO,eAAe,MAAM,SAAS,EAAE,MAAM,CAAC;AAC9C,eAAO;AAAA,MACX;AACA,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC9C;AAAA,EACJ;AACJ;AACO,SAAS,QAAQ,OAAO;AAC3B,SAAO,UAAU,QAAQ,UAAU;AACvC;AACO,SAAS,WAAW,QAAQ;AAC/B,QAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAC3C,QAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAC9D,SAAO,OAAO,MAAM,OAAO,GAAG;AAClC;AACO,SAAS,mBAAmB,KAAK,MAAM;AAC1C,QAAM,QAAQ,MAAM;AACpB,QAAM,eAAe,KAAK,MAAM,KAAK;AAErC,QAAM,YAAY,OAAO,UAAU,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC;AAC9D,MAAI,KAAK,IAAI,QAAQ,YAAY,IAAI;AACjC,WAAO;AACX,SAAO,QAAQ;AACnB;AACA,IAAM,aAA4B,uBAAO,YAAY;AAC9C,SAAS,WAAWC,SAAQ,KAAK,QAAQ;AAC5C,MAAI,QAAQ;AACZ,SAAO,eAAeA,SAAQ,KAAK;AAAA,IAC/B,MAAM;AACF,UAAI,UAAU,YAAY;AAEtB,eAAO;AAAA,MACX;AACA,UAAI,UAAU,QAAW;AACrB,gBAAQ;AACR,gBAAQ,OAAO;AAAA,MACnB;AACA,aAAO;AAAA,IACX;AAAA,IACA,IAAI,GAAG;AACH,aAAO,eAAeA,SAAQ,KAAK;AAAA,QAC/B,OAAO;AAAA;AAAA,MAEX,CAAC;AAAA,IAEL;AAAA,IACA,cAAc;AAAA,EAClB,CAAC;AACL;AACO,SAAS,YAAY,KAAK;AAC7B,SAAO,OAAO,OAAO,OAAO,eAAe,GAAG,GAAG,OAAO,0BAA0B,GAAG,CAAC;AAC1F;AACO,SAAS,WAAW,QAAQ,MAAM,OAAO;AAC5C,SAAO,eAAe,QAAQ,MAAM;AAAA,IAChC;AAAA,IACA,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,cAAc;AAAA,EAClB,CAAC;AACL;AACO,SAAS,aAAa,MAAM;AAC/B,QAAM,oBAAoB,CAAC;AAC3B,aAAW,OAAO,MAAM;AACpB,UAAM,cAAc,OAAO,0BAA0B,GAAG;AACxD,WAAO,OAAO,mBAAmB,WAAW;AAAA,EAChD;AACA,SAAO,OAAO,iBAAiB,CAAC,GAAG,iBAAiB;AACxD;AACO,SAAS,SAAS,QAAQ;AAC7B,SAAO,UAAU,OAAO,KAAK,GAAG;AACpC;AACO,SAAS,iBAAiB,KAAKC,QAAM;AACxC,MAAI,CAACA;AACD,WAAO;AACX,SAAOA,OAAK,OAAO,CAAC,KAAK,QAAQ,MAAM,GAAG,GAAG,GAAG;AACpD;AACO,SAAS,iBAAiB,aAAa;AAC1C,QAAM,OAAO,OAAO,KAAK,WAAW;AACpC,QAAM,WAAW,KAAK,IAAI,CAAC,QAAQ,YAAY,GAAG,CAAC;AACnD,SAAO,QAAQ,IAAI,QAAQ,EAAE,KAAK,CAAC,YAAY;AAC3C,UAAM,cAAc,CAAC;AACrB,aAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AAClC,kBAAY,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC;AAAA,IACpC;AACA,WAAO;AAAA,EACX,CAAC;AACL;AACO,SAAS,aAAa,SAAS,IAAI;AACtC,QAAM,QAAQ;AACd,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC7B,WAAO,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI,MAAM,MAAM,CAAC;AAAA,EACzD;AACA,SAAO;AACX;AACO,SAAS,IAAI,KAAK;AACrB,SAAO,KAAK,UAAU,GAAG;AAC7B;AACO,SAAS,QAAQ,OAAO;AAC3B,SAAO,MACF,YAAY,EACZ,KAAK,EACL,QAAQ,aAAa,EAAE,EACvB,QAAQ,YAAY,GAAG,EACvB,QAAQ,YAAY,EAAE;AAC/B;AACO,IAAM,oBAAqB,uBAAuB,QAAQ,MAAM,oBAAoB,IAAI,UAAU;AAAE;AACpG,SAAS,SAAS,MAAM;AAC3B,SAAO,OAAO,SAAS,YAAY,SAAS,QAAQ,CAAC,MAAM,QAAQ,IAAI;AAC3E;AACO,IAAM,aAA4B,uBAAO,MAAM;AAGlD,MAAI,aAAa,SAAS;AACtB,WAAO;AAAA,EACX;AAEA,MAAI,OAAO,cAAc,eAAe,WAAW,WAAW,SAAS,YAAY,GAAG;AAClF,WAAO;AAAA,EACX;AACA,MAAI;AACA,UAAM,IAAI;AACV,QAAI,EAAE,EAAE;AACR,WAAO;AAAA,EACX,SACO,GAAG;AACN,WAAO;AAAA,EACX;AACJ,CAAC;AACM,SAAS,cAAc,GAAG;AAC7B,MAAI,SAAS,CAAC,MAAM;AAChB,WAAO;AAEX,QAAM,OAAO,EAAE;AACf,MAAI,SAAS;AACT,WAAO;AACX,MAAI,OAAO,SAAS;AAChB,WAAO;AAEX,QAAM,OAAO,KAAK;AAClB,MAAI,SAAS,IAAI,MAAM;AACnB,WAAO;AAEX,MAAI,OAAO,UAAU,eAAe,KAAK,MAAM,eAAe,MAAM,OAAO;AACvE,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACO,SAAS,aAAa,GAAG;AAC5B,MAAI,cAAc,CAAC;AACf,WAAO,EAAE,GAAG,EAAE;AAClB,MAAI,MAAM,QAAQ,CAAC;AACf,WAAO,CAAC,GAAG,CAAC;AAChB,MAAI,aAAa;AACb,WAAO,IAAI,IAAI,CAAC;AACpB,MAAI,aAAa;AACb,WAAO,IAAI,IAAI,CAAC;AACpB,SAAO;AACX;AACO,SAAS,QAAQ,MAAM;AAC1B,MAAI,WAAW;AACf,aAAW,OAAO,MAAM;AACpB,QAAI,OAAO,UAAU,eAAe,KAAK,MAAM,GAAG,GAAG;AACjD;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,IAAM,gBAAgB,CAAC,SAAS;AACnC,QAAMC,KAAI,OAAO;AACjB,UAAQA,IAAG;AAAA,IACP,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,IACxC,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,eAAO;AAAA,MACX;AACA,UAAI,SAAS,MAAM;AACf,eAAO;AAAA,MACX;AACA,UAAI,KAAK,QAAQ,OAAO,KAAK,SAAS,cAAc,KAAK,SAAS,OAAO,KAAK,UAAU,YAAY;AAChG,eAAO;AAAA,MACX;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO;AAAA,MACX;AACA,UAAI,OAAO,QAAQ,eAAe,gBAAgB,KAAK;AACnD,eAAO;AAAA,MACX;AACA,UAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AACrD,eAAO;AAAA,MACX;AAEA,UAAI,OAAO,SAAS,eAAe,gBAAgB,MAAM;AACrD,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AACI,YAAM,IAAI,MAAM,sBAAsBA,EAAC,EAAE;AAAA,EACjD;AACJ;AACO,IAAM,mBAAkC,oBAAI,IAAI,CAAC,UAAU,UAAU,QAAQ,CAAC;AAC9E,IAAM,iBAAgC,oBAAI,IAAI;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACM,SAAS,YAAY,KAAK;AAC7B,SAAO,IAAI,QAAQ,uBAAuB,MAAM;AACpD;AAEO,SAAS,MAAM,MAAM,KAAK,QAAQ;AACrC,QAAM,KAAK,IAAI,KAAK,KAAK,OAAO,OAAO,KAAK,KAAK,GAAG;AACpD,MAAI,CAAC,OAAO,QAAQ;AAChB,OAAG,KAAK,SAAS;AACrB,SAAO;AACX;AACO,SAAS,gBAAgB,SAAS;AACrC,QAAM,SAAS;AACf,MAAI,CAAC;AACD,WAAO,CAAC;AACZ,MAAI,OAAO,WAAW;AAClB,WAAO,EAAE,OAAO,MAAM,OAAO;AACjC,MAAI,QAAQ,YAAY,QAAW;AAC/B,QAAI,QAAQ,UAAU;AAClB,YAAM,IAAI,MAAM,kDAAkD;AACtE,WAAO,QAAQ,OAAO;AAAA,EAC1B;AACA,SAAO,OAAO;AACd,MAAI,OAAO,OAAO,UAAU;AACxB,WAAO,EAAE,GAAG,QAAQ,OAAO,MAAM,OAAO,MAAM;AAClD,SAAO;AACX;AACO,SAAS,uBAAuB,QAAQ;AAC3C,MAAI;AACJ,SAAO,IAAI,MAAM,CAAC,GAAG;AAAA,IACjB,IAAI,GAAG,MAAM,UAAU;AACnB,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,IAC7C;AAAA,IACA,IAAI,GAAG,MAAM,OAAO,UAAU;AAC1B,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,MAAM,OAAO,QAAQ;AAAA,IACpD;AAAA,IACA,IAAI,GAAG,MAAM;AACT,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,IAAI,QAAQ,IAAI;AAAA,IACnC;AAAA,IACA,eAAe,GAAG,MAAM;AACpB,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,eAAe,QAAQ,IAAI;AAAA,IAC9C;AAAA,IACA,QAAQ,GAAG;AACP,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,QAAQ,MAAM;AAAA,IACjC;AAAA,IACA,yBAAyB,GAAG,MAAM;AAC9B,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,yBAAyB,QAAQ,IAAI;AAAA,IACxD;AAAA,IACA,eAAe,GAAG,MAAM,YAAY;AAChC,iBAAW,SAAS,OAAO;AAC3B,aAAO,QAAQ,eAAe,QAAQ,MAAM,UAAU;AAAA,IAC1D;AAAA,EACJ,CAAC;AACL;AACO,SAAS,mBAAmB,OAAO;AACtC,MAAI,OAAO,UAAU;AACjB,WAAO,MAAM,SAAS,IAAI;AAC9B,MAAI,OAAO,UAAU;AACjB,WAAO,IAAI,KAAK;AACpB,SAAO,GAAG,KAAK;AACnB;AACO,SAAS,aAAa,OAAO;AAChC,SAAO,OAAO,KAAK,KAAK,EAAE,OAAO,CAAC,MAAM;AACpC,WAAO,MAAM,CAAC,EAAE,KAAK,UAAU,cAAc,MAAM,CAAC,EAAE,KAAK,WAAW;AAAA,EAC1E,CAAC;AACL;AACO,IAAM,uBAAuB;AAAA,EAChC,SAAS,CAAC,OAAO,kBAAkB,OAAO,gBAAgB;AAAA,EAC1D,OAAO,CAAC,aAAa,UAAU;AAAA,EAC/B,QAAQ,CAAC,GAAG,UAAU;AAAA,EACtB,SAAS,CAAC,uBAAwB,oBAAqB;AAAA,EACvD,SAAS,CAAC,CAAC,OAAO,WAAW,OAAO,SAAS;AACjD;AACO,IAAM,uBAAuB;AAAA,EAChC,OAAO,CAAgB,uBAAO,sBAAsB,GAAkB,uBAAO,qBAAqB,CAAC;AAAA,EACnG,QAAQ,CAAgB,uBAAO,CAAC,GAAkB,uBAAO,sBAAsB,CAAC;AACpF;AACO,SAAS,KAAK,QAAQ,MAAM;AAC/B,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,CAAC;AAClB,iBAAW,OAAO,MAAM;AACpB,YAAI,EAAE,OAAO,QAAQ,QAAQ;AACzB,gBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,QAChD;AACA,YAAI,CAAC,KAAK,GAAG;AACT;AACJ,iBAAS,GAAG,IAAI,QAAQ,MAAM,GAAG;AAAA,MACrC;AACA,iBAAW,MAAM,SAAS,QAAQ;AAClC,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,KAAK,QAAQ,MAAM;AAC/B,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,iEAAiE;AAAA,EACrF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,EAAE,GAAG,OAAO,KAAK,IAAI,MAAM;AAC5C,iBAAW,OAAO,MAAM;AACpB,YAAI,EAAE,OAAO,QAAQ,QAAQ;AACzB,gBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,QAChD;AACA,YAAI,CAAC,KAAK,GAAG;AACT;AACJ,eAAO,SAAS,GAAG;AAAA,MACvB;AACA,iBAAW,MAAM,SAAS,QAAQ;AAClC,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,OAAO,QAAQ,OAAO;AAClC,MAAI,CAAC,cAAc,KAAK,GAAG;AACvB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACtE;AACA,QAAM,SAAS,OAAO,KAAK,IAAI;AAC/B,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AAGX,UAAM,gBAAgB,OAAO,KAAK,IAAI;AACtC,eAAW,OAAO,OAAO;AACrB,UAAI,OAAO,yBAAyB,eAAe,GAAG,MAAM,QAAW;AACnE,cAAM,IAAI,MAAM,8FAA8F;AAAA,MAClH;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,OAAO,KAAK,IAAI,OAAO,GAAG,MAAM;AACpD,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,WAAW,QAAQ,OAAO;AACtC,MAAI,CAAC,cAAc,KAAK,GAAG;AACvB,UAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,OAAO,KAAK,IAAI,OAAO,GAAG,MAAM;AACpD,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,MAAM,GAAG,GAAG;AACxB,MAAI,EAAE,KAAK,IAAI,QAAQ,QAAQ;AAC3B,UAAM,IAAI,MAAM,8FAA8F;AAAA,EAClH;AACA,QAAM,MAAM,UAAU,EAAE,KAAK,KAAK;AAAA,IAC9B,IAAI,QAAQ;AACR,YAAM,SAAS,EAAE,GAAG,EAAE,KAAK,IAAI,OAAO,GAAG,EAAE,KAAK,IAAI,MAAM;AAC1D,iBAAW,MAAM,SAAS,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,IACA,IAAI,WAAW;AACX,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAAA,IACA,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC;AAAA,EAClC,CAAC;AACD,SAAO,MAAM,GAAG,GAAG;AACvB;AACO,SAAS,QAAQC,QAAO,QAAQ,MAAM;AACzC,QAAM,UAAU,OAAO,KAAK;AAC5B,QAAM,SAAS,QAAQ;AACvB,QAAM,YAAY,UAAU,OAAO,SAAS;AAC5C,MAAI,WAAW;AACX,UAAM,IAAI,MAAM,oEAAoE;AAAA,EACxF;AACA,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,OAAO,KAAK,IAAI;AACjC,YAAM,QAAQ,EAAE,GAAG,SAAS;AAC5B,UAAI,MAAM;AACN,mBAAW,OAAO,MAAM;AACpB,cAAI,EAAE,OAAO,WAAW;AACpB,kBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,UAChD;AACA,cAAI,CAAC,KAAK,GAAG;AACT;AAEJ,gBAAM,GAAG,IAAIA,SACP,IAAIA,OAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC,IACC,SAAS,GAAG;AAAA,QACtB;AAAA,MACJ,OACK;AACD,mBAAW,OAAO,UAAU;AAExB,gBAAM,GAAG,IAAIA,SACP,IAAIA,OAAM;AAAA,YACR,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC,IACC,SAAS,GAAG;AAAA,QACtB;AAAA,MACJ;AACA,iBAAW,MAAM,SAAS,KAAK;AAC/B,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,CAAC;AAAA,EACb,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AACO,SAAS,SAASA,QAAO,QAAQ,MAAM;AAC1C,QAAM,MAAM,UAAU,OAAO,KAAK,KAAK;AAAA,IACnC,IAAI,QAAQ;AACR,YAAM,WAAW,OAAO,KAAK,IAAI;AACjC,YAAM,QAAQ,EAAE,GAAG,SAAS;AAC5B,UAAI,MAAM;AACN,mBAAW,OAAO,MAAM;AACpB,cAAI,EAAE,OAAO,QAAQ;AACjB,kBAAM,IAAI,MAAM,sBAAsB,GAAG,GAAG;AAAA,UAChD;AACA,cAAI,CAAC,KAAK,GAAG;AACT;AAEJ,gBAAM,GAAG,IAAI,IAAIA,OAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC;AAAA,QACL;AAAA,MACJ,OACK;AACD,mBAAW,OAAO,UAAU;AAExB,gBAAM,GAAG,IAAI,IAAIA,OAAM;AAAA,YACnB,MAAM;AAAA,YACN,WAAW,SAAS,GAAG;AAAA,UAC3B,CAAC;AAAA,QACL;AAAA,MACJ;AACA,iBAAW,MAAM,SAAS,KAAK;AAC/B,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,SAAO,MAAM,QAAQ,GAAG;AAC5B;AAEO,SAAS,QAAQ,GAAG,aAAa,GAAG;AACvC,MAAI,EAAE,YAAY;AACd,WAAO;AACX,WAAS,IAAI,YAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAC/C,QAAI,EAAE,OAAO,CAAC,GAAG,aAAa,MAAM;AAChC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AAGO,SAAS,kBAAkB,GAAG,aAAa,GAAG;AACjD,MAAI,EAAE,YAAY;AACd,WAAO;AACX,WAAS,IAAI,YAAY,IAAI,EAAE,OAAO,QAAQ,KAAK;AAC/C,QAAI,EAAE,OAAO,CAAC,GAAG,aAAa,OAAO;AACjC,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO;AACX;AACO,SAAS,aAAaF,QAAM,QAAQ;AACvC,SAAO,OAAO,IAAI,CAAC,QAAQ;AACvB,QAAIG;AACJ,KAACA,MAAK,KAAK,SAASA,IAAG,OAAO,CAAC;AAC/B,QAAI,KAAK,QAAQH,MAAI;AACrB,WAAO;AAAA,EACX,CAAC;AACL;AACO,SAAS,cAAc,SAAS;AACnC,SAAO,OAAO,YAAY,WAAW,UAAU,SAAS;AAC5D;AACO,SAAS,cAAc,KAAK,KAAKI,SAAQ;AAC5C,QAAM,UAAU,IAAI,UACd,IAAI,UACH,cAAc,IAAI,MAAM,KAAK,KAAK,QAAQ,GAAG,CAAC,KAC7C,cAAc,KAAK,QAAQ,GAAG,CAAC,KAC/B,cAAcA,QAAO,cAAc,GAAG,CAAC,KACvC,cAAcA,QAAO,cAAc,GAAG,CAAC,KACvC;AACR,QAAM,EAAE,MAAM,OAAO,UAAU,WAAW,OAAO,QAAQ,GAAG,KAAK,IAAI;AACrE,OAAK,SAAS,KAAK,OAAO,CAAC;AAC3B,OAAK,UAAU;AACf,MAAI,KAAK,aAAa;AAClB,SAAK,QAAQ;AAAA,EACjB;AACA,SAAO;AACX;AACO,SAAS,iBAAiB,OAAO;AACpC,MAAI,iBAAiB;AACjB,WAAO;AACX,MAAI,iBAAiB;AACjB,WAAO;AAEX,MAAI,iBAAiB;AACjB,WAAO;AACX,SAAO;AACX;AACO,SAAS,oBAAoB,OAAO;AACvC,MAAI,MAAM,QAAQ,KAAK;AACnB,WAAO;AACX,MAAI,OAAO,UAAU;AACjB,WAAO;AACX,SAAO;AACX;AACO,SAAS,WAAW,MAAM;AAC7B,QAAMH,KAAI,OAAO;AACjB,UAAQA,IAAG;AAAA,IACP,KAAK,UAAU;AACX,aAAO,OAAO,MAAM,IAAI,IAAI,QAAQ;AAAA,IACxC;AAAA,IACA,KAAK,UAAU;AACX,UAAI,SAAS,MAAM;AACf,eAAO;AAAA,MACX;AACA,UAAI,MAAM,QAAQ,IAAI,GAAG;AACrB,eAAO;AAAA,MACX;AACA,YAAM,MAAM;AACZ,UAAI,OAAO,OAAO,eAAe,GAAG,MAAM,OAAO,aAAa,iBAAiB,OAAO,IAAI,aAAa;AACnG,eAAO,IAAI,YAAY;AAAA,MAC3B;AAAA,IACJ;AAAA,EACJ;AACA,SAAOA;AACX;AACO,SAAS,SAAS,MAAM;AAC3B,QAAM,CAAC,KAAK,OAAO,IAAI,IAAI;AAC3B,MAAI,OAAO,QAAQ,UAAU;AACzB,WAAO;AAAA,MACH,SAAS;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AACA,SAAO,EAAE,GAAG,IAAI;AACpB;AACO,SAAS,UAAU,KAAK;AAC3B,SAAO,OAAO,QAAQ,GAAG,EACpB,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM;AAEpB,WAAO,OAAO,MAAM,OAAO,SAAS,GAAG,EAAE,CAAC;AAAA,EAC9C,CAAC,EACI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B;AAEO,SAAS,mBAAmBI,SAAQ;AACvC,QAAM,eAAe,KAAKA,OAAM;AAChC,QAAM,QAAQ,IAAI,WAAW,aAAa,MAAM;AAChD,WAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC1C,UAAM,CAAC,IAAI,aAAa,WAAW,CAAC;AAAA,EACxC;AACA,SAAO;AACX;AACO,SAAS,mBAAmB,OAAO;AACtC,MAAI,eAAe;AACnB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,oBAAgB,OAAO,aAAa,MAAM,CAAC,CAAC;AAAA,EAChD;AACA,SAAO,KAAK,YAAY;AAC5B;AACO,SAAS,sBAAsBC,YAAW;AAC7C,QAAMD,UAASC,WAAU,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AAC7D,QAAM,UAAU,IAAI,QAAQ,IAAKD,QAAO,SAAS,KAAM,CAAC;AACxD,SAAO,mBAAmBA,UAAS,OAAO;AAC9C;AACO,SAAS,sBAAsB,OAAO;AACzC,SAAO,mBAAmB,KAAK,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,MAAM,EAAE;AAC7F;AACO,SAAS,gBAAgBE,MAAK;AACjC,QAAM,WAAWA,KAAI,QAAQ,OAAO,EAAE;AACtC,MAAI,SAAS,SAAS,MAAM,GAAG;AAC3B,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC/C;AACA,QAAM,QAAQ,IAAI,WAAW,SAAS,SAAS,CAAC;AAChD,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK,GAAG;AACzC,UAAM,IAAI,CAAC,IAAI,OAAO,SAAS,SAAS,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE;AAAA,EAC/D;AACA,SAAO;AACX;AACO,SAAS,gBAAgB,OAAO;AACnC,SAAO,MAAM,KAAK,KAAK,EAClB,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAC1C,KAAK,EAAE;AAChB;AAEO,IAAM,QAAN,MAAY;AAAA,EACf,eAAe,OAAO;AAAA,EAAE;AAC5B;;;AC/pBA,IAAM,cAAc,CAAC,MAAM,QAAQ;AAC/B,OAAK,OAAO;AACZ,SAAO,eAAe,MAAM,QAAQ;AAAA,IAChC,OAAO,KAAK;AAAA,IACZ,YAAY;AAAA,EAChB,CAAC;AACD,SAAO,eAAe,MAAM,UAAU;AAAA,IAClC,OAAO;AAAA,IACP,YAAY;AAAA,EAChB,CAAC;AACD,OAAK,UAAU,KAAK,UAAU,KAAU,uBAAuB,CAAC;AAChE,SAAO,eAAe,MAAM,YAAY;AAAA,IACpC,OAAO,MAAM,KAAK;AAAA,IAClB,YAAY;AAAA,EAChB,CAAC;AACL;AACO,IAAM,YAAY,aAAa,aAAa,WAAW;AACvD,IAAM,gBAAgB,aAAa,aAAa,aAAa,EAAE,QAAQ,MAAM,CAAC;AAC9E,SAAS,aAAaC,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AACnE,QAAM,cAAc,CAAC;AACrB,QAAM,aAAa,CAAC;AACpB,aAAW,OAAOD,QAAM,QAAQ;AAC5B,QAAI,IAAI,KAAK,SAAS,GAAG;AACrB,kBAAY,IAAI,KAAK,CAAC,CAAC,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC,KAAK,CAAC;AACxD,kBAAY,IAAI,KAAK,CAAC,CAAC,EAAE,KAAK,OAAO,GAAG,CAAC;AAAA,IAC7C,OACK;AACD,iBAAW,KAAK,OAAO,GAAG,CAAC;AAAA,IAC/B;AAAA,EACJ;AACA,SAAO,EAAE,YAAY,YAAY;AACrC;AACO,SAAS,YAAYA,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AAClE,QAAM,cAAc,EAAE,SAAS,CAAC,EAAE;AAClC,QAAM,eAAe,CAACD,SAAOE,SAAO,CAAC,MAAM;AACvC,eAAWD,UAASD,QAAM,QAAQ;AAC9B,UAAIC,OAAM,SAAS,mBAAmBA,OAAM,OAAO,QAAQ;AACvD,QAAAA,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,WACSA,OAAM,SAAS,eAAe;AACnC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,WACSA,OAAM,SAAS,mBAAmB;AACvC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,OACK;AACD,cAAM,WAAW,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI;AACxC,YAAI,SAAS,WAAW,GAAG;AACvB,sBAAY,QAAQ,KAAK,OAAOA,MAAK,CAAC;AAAA,QAC1C,OACK;AACD,cAAI,OAAO;AACX,cAAI,IAAI;AACR,iBAAO,IAAI,SAAS,QAAQ;AACxB,kBAAM,KAAK,SAAS,CAAC;AACrB,kBAAM,WAAW,MAAM,SAAS,SAAS;AACzC,gBAAI,CAAC,UAAU;AACX,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AAAA,YACzC,OACK;AACD,mBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE;AACrC,mBAAK,EAAE,EAAE,QAAQ,KAAK,OAAOA,MAAK,CAAC;AAAA,YACvC;AACA,mBAAO,KAAK,EAAE;AACd;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,eAAaD,OAAK;AAClB,SAAO;AACX;AACO,SAAS,aAAaA,SAAO,SAAS,CAACC,WAAUA,OAAM,SAAS;AACnE,QAAM,SAAS,EAAE,QAAQ,CAAC,EAAE;AAC5B,QAAM,eAAe,CAACD,SAAOE,SAAO,CAAC,MAAM;AACvC,QAAIC,KAAI;AACR,eAAWF,UAASD,QAAM,QAAQ;AAC9B,UAAIC,OAAM,SAAS,mBAAmBA,OAAM,OAAO,QAAQ;AAEvD,QAAAA,OAAM,OAAO,IAAI,CAAC,WAAW,aAAa,EAAE,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC,CAAC;AAAA,MACnF,WACSA,OAAM,SAAS,eAAe;AACnC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,WACSA,OAAM,SAAS,mBAAmB;AACvC,qBAAa,EAAE,QAAQA,OAAM,OAAO,GAAG,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI,CAAC;AAAA,MACnE,OACK;AACD,cAAM,WAAW,CAAC,GAAGC,QAAM,GAAGD,OAAM,IAAI;AACxC,YAAI,SAAS,WAAW,GAAG;AACvB,iBAAO,OAAO,KAAK,OAAOA,MAAK,CAAC;AAChC;AAAA,QACJ;AACA,YAAI,OAAO;AACX,YAAI,IAAI;AACR,eAAO,IAAI,SAAS,QAAQ;AACxB,gBAAM,KAAK,SAAS,CAAC;AACrB,gBAAM,WAAW,MAAM,SAAS,SAAS;AACzC,cAAI,OAAO,OAAO,UAAU;AACxB,iBAAK,eAAe,KAAK,aAAa,CAAC;AACvC,aAACE,MAAK,KAAK,YAAY,EAAE,MAAMA,IAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;AACrD,mBAAO,KAAK,WAAW,EAAE;AAAA,UAC7B,OACK;AACD,iBAAK,UAAU,KAAK,QAAQ,CAAC;AAC7B,aAAC,KAAK,KAAK,OAAO,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;AAChD,mBAAO,KAAK,MAAM,EAAE;AAAA,UACxB;AACA,cAAI,UAAU;AACV,iBAAK,OAAO,KAAK,OAAOF,MAAK,CAAC;AAAA,UAClC;AACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,eAAaD,OAAK;AAClB,SAAO;AACX;AAiCO,SAAS,UAAU,OAAO;AAC7B,QAAM,OAAO,CAAC;AACd,QAAME,SAAO,MAAM,IAAI,CAAC,QAAS,OAAO,QAAQ,WAAW,IAAI,MAAM,GAAI;AACzE,aAAW,OAAOA,QAAM;AACpB,QAAI,OAAO,QAAQ;AACf,WAAK,KAAK,IAAI,GAAG,GAAG;AAAA,aACf,OAAO,QAAQ;AACpB,WAAK,KAAK,IAAI,KAAK,UAAU,OAAO,GAAG,CAAC,CAAC,GAAG;AAAA,aACvC,SAAS,KAAK,GAAG;AACtB,WAAK,KAAK,IAAI,KAAK,UAAU,GAAG,CAAC,GAAG;AAAA,SACnC;AACD,UAAI,KAAK;AACL,aAAK,KAAK,GAAG;AACjB,WAAK,KAAK,GAAG;AAAA,IACjB;AAAA,EACJ;AACA,SAAO,KAAK,KAAK,EAAE;AACvB;AACO,SAAS,cAAcF,SAAO;AACjC,QAAM,QAAQ,CAAC;AAEf,QAAM,SAAS,CAAC,GAAGA,QAAM,MAAM,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,QAAQ,CAAC,GAAG,UAAU,EAAE,QAAQ,CAAC,GAAG,MAAM;AAE7F,aAAWC,UAAS,QAAQ;AACxB,UAAM,KAAK,UAAKA,OAAM,OAAO,EAAE;AAC/B,QAAIA,OAAM,MAAM;AACZ,YAAM,KAAK,eAAU,UAAUA,OAAM,IAAI,CAAC,EAAE;AAAA,EACpD;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;;;ACrLO,IAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,OAAO,MAAM,YAAY;AAC9D,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAC9D,QAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACzD,MAAI,kBAAkB,SAAS;AAC3B,UAAM,IAAS,eAAe;AAAA,EAClC;AACA,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,IAAI,KAAK,SAAS,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAC5G,IAAK,kBAAkB,GAAG,SAAS,MAAM;AACzC,UAAM;AAAA,EACV;AACA,SAAO,OAAO;AAClB;AACO,IAAM,QAAuB,uBAAc,aAAa;AACxD,IAAM,cAAc,CAAC,SAAS,OAAO,QAAQ,OAAO,MAAM,WAAW;AACxE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5D,MAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACvD,MAAI,kBAAkB;AAClB,aAAS,MAAM;AACnB,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,IAAI,KAAK,QAAQ,OAAO,MAAM,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAC3G,IAAK,kBAAkB,GAAG,QAAQ,MAAM;AACxC,UAAM;AAAA,EACV;AACA,SAAO,OAAO;AAClB;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,aAAa,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACzD,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,MAAM,IAAI,EAAE,OAAO,MAAM;AAC9D,QAAM,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACzD,MAAI,kBAAkB,SAAS;AAC3B,UAAM,IAAS,eAAe;AAAA,EAClC;AACA,SAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,KAAK,QAAe,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EACjH,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAC9C;AACO,IAAM,YAA2B,2BAAkB,aAAa;AAChE,IAAM,kBAAkB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACpE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK;AAC5D,MAAI,SAAS,OAAO,KAAK,IAAI,EAAE,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AACvD,MAAI,kBAAkB;AAClB,aAAS,MAAM;AACnB,SAAO,OAAO,OAAO,SACf;AAAA,IACE,SAAS;AAAA,IACT,OAAO,IAAI,KAAK,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3F,IACE,EAAE,SAAS,MAAM,MAAM,OAAO,MAAM;AAC9C;AACO,IAAM,iBAAgC,gCAAuB,aAAa;AAC1E,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACtD,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC1C;AACO,IAAM,SAAwB,wBAAe,aAAa;AAC1D,IAAM,UAAU,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AACtD,SAAO,OAAO,IAAI,EAAE,QAAQ,OAAO,IAAI;AAC3C;AACO,IAAM,SAAwB,wBAAe,aAAa;AAC1D,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACjE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC/C;AACO,IAAM,cAA6B,6BAAoB,aAAa;AACpE,IAAM,eAAe,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACjE,SAAO,YAAY,IAAI,EAAE,QAAQ,OAAO,IAAI;AAChD;AACO,IAAM,cAA6B,6BAAoB,aAAa;AACpE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAC1D,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,GAAG;AAC9C;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,cAAc,CAAC,SAAS,CAAC,QAAQ,OAAO,SAAS;AAC1D,SAAO,WAAW,IAAI,EAAE,QAAQ,OAAO,IAAI;AAC/C;AACO,IAAM,aAA4B,4BAAmB,aAAa;AAClE,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACrE,QAAM,MAAM,OAAO,EAAE,GAAG,MAAM,WAAW,WAAW,IAAI,EAAE,WAAW,WAAW;AAChF,SAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,GAAG;AACnD;AACO,IAAM,kBAAiC,iCAAwB,aAAa;AAC5E,IAAM,mBAAmB,CAAC,SAAS,OAAO,QAAQ,OAAO,SAAS;AACrE,SAAO,gBAAgB,IAAI,EAAE,QAAQ,OAAO,IAAI;AACpD;AACO,IAAM,kBAAiC,iCAAwB,aAAa;;;AC5FnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMO,IAAM,OAAO;AACb,IAAM,QAAQ;AACd,IAAM,OAAO;AACb,IAAM,MAAM;AACZ,IAAM,QAAQ;AACd,IAAM,SAAS;AAEf,IAAM,WAAW;AAEjB,IAAM,mBAAmB;AAEzB,IAAM,OAAO;AAIb,IAAM,OAAO,CAACG,aAAY;AAC7B,MAAI,CAACA;AACD,WAAO;AACX,SAAO,IAAI,OAAO,mCAAmCA,QAAO,yDAAyD;AACzH;AACO,IAAM,QAAsB,qBAAK,CAAC;AAClC,IAAM,QAAsB,qBAAK,CAAC;AAClC,IAAM,QAAsB,qBAAK,CAAC;AAElC,IAAM,QAAQ;AAEd,IAAM,aAAa;AAEnB,IAAM,eAAe;AAErB,IAAM,eAAe;AACrB,IAAM,WAAW;AACjB,IAAM,eAAe;AAE5B,IAAM,SAAS;AACR,SAAS,QAAQ;AACpB,SAAO,IAAI,OAAO,QAAQ,GAAG;AACjC;AACO,IAAM,OAAO;AACb,IAAM,OAAO;AACb,IAAM,MAAM,CAAC,cAAc;AAC9B,QAAM,eAAoB,YAAY,aAAa,GAAG;AACtD,SAAO,IAAI,OAAO,kBAAkB,YAAY,mCAAmC,YAAY,kBAAkB;AACrH;AACO,IAAM,SAAS;AACf,IAAM,SAAS;AAEf,IAAM,SAAS;AACf,IAAM,YAAY;AAGlB,IAAM,WAAW;AACjB,IAAM,SAAS;AACf,IAAM,eAAe;AAGrB,IAAM,OAAO;AAEpB,IAAM,aAAa;AACZ,IAAM,OAAqB,oBAAI,OAAO,IAAI,UAAU,GAAG;AAC9D,SAAS,WAAW,MAAM;AACtB,QAAM,OAAO;AACb,QAAMC,SAAQ,OAAO,KAAK,cAAc,WAClC,KAAK,cAAc,KACf,GAAG,IAAI,KACP,KAAK,cAAc,IACf,GAAG,IAAI,cACP,GAAG,IAAI,mBAAmB,KAAK,SAAS,MAChD,GAAG,IAAI;AACb,SAAOA;AACX;AACO,SAAS,KAAK,MAAM;AACvB,SAAO,IAAI,OAAO,IAAI,WAAW,IAAI,CAAC,GAAG;AAC7C;AAEO,SAAS,SAAS,MAAM;AAC3B,QAAMC,QAAO,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC;AACrD,QAAM,OAAO,CAAC,GAAG;AACjB,MAAI,KAAK;AACL,SAAK,KAAK,EAAE;AAEhB,MAAI,KAAK;AACL,SAAK,KAAK,mCAAmC;AACjD,QAAM,YAAY,GAAGA,KAAI,MAAM,KAAK,KAAK,GAAG,CAAC;AAC7C,SAAO,IAAI,OAAO,IAAI,UAAU,OAAO,SAAS,IAAI;AACxD;AACO,IAAM,SAAS,CAAC,WAAW;AAC9B,QAAMD,SAAQ,SAAS,YAAY,QAAQ,WAAW,CAAC,IAAI,QAAQ,WAAW,EAAE,MAAM;AACtF,SAAO,IAAI,OAAO,IAAIA,MAAK,GAAG;AAClC;AACO,IAAM,SAAS;AACf,IAAM,UAAU;AAChB,IAAM,SAAS;AACf,IAAM,UAAU;AACvB,IAAM,QAAQ;AAEd,IAAM,aAAa;AAGZ,IAAM,YAAY;AAElB,IAAM,YAAY;AAElB,IAAM,MAAM;AAGnB,SAAS,YAAY,YAAY,SAAS;AACtC,SAAO,IAAI,OAAO,kBAAkB,UAAU,IAAI,OAAO,GAAG;AAChE;AAEA,SAAS,eAAe,QAAQ;AAC5B,SAAO,IAAI,OAAO,kBAAkB,MAAM,IAAI;AAClD;AAEO,IAAM,UAAU;AAChB,IAAM,aAA2B,4BAAY,IAAI,IAAI;AACrD,IAAM,gBAA8B,+BAAe,EAAE;AAErD,IAAM,WAAW;AACjB,IAAM,cAA4B,4BAAY,IAAI,GAAG;AACrD,IAAM,iBAA+B,+BAAe,EAAE;AAEtD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,GAAG;AACvD,IAAM,mBAAiC,+BAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,EAAE;AACtD,IAAM,mBAAiC,+BAAe,EAAE;AAExD,IAAM,aAAa;AACnB,IAAM,gBAA8B,4BAAY,IAAI,IAAI;AACxD,IAAM,mBAAiC,+BAAe,EAAE;;;ACtIxD,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAIE;AACJ,OAAK,SAAS,KAAK,OAAO,CAAC;AAC3B,OAAK,KAAK,MAAM;AAChB,GAACA,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AACjD,CAAC;AACD,IAAM,mBAAmB;AAAA,EACrB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AACZ;AACO,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,iBAAiB,OAAO,IAAI,KAAK;AAChD,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,UAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAC5E,QAAI,IAAI,QAAQ,MAAM;AAClB,UAAI,IAAI;AACJ,YAAI,UAAU,IAAI;AAAA;AAElB,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,EACJ,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AACxE;AAAA,IACJ;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,uBAAqC,gBAAK,aAAa,wBAAwB,CAAC,MAAM,QAAQ;AACvG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,iBAAiB,OAAO,IAAI,KAAK;AAChD,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,UAAM,QAAQ,IAAI,YAAY,IAAI,UAAU,IAAI,qBAAqB,OAAO;AAC5E,QAAI,IAAI,QAAQ,MAAM;AAClB,UAAI,IAAI;AACJ,YAAI,UAAU,IAAI;AAAA;AAElB,YAAI,mBAAmB,IAAI;AAAA,IACnC;AAAA,EACJ,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,YAAY,QAAQ,SAAS,IAAI,QAAQ,QAAQ,QAAQ,IAAI,OAAO;AACxE;AAAA,IACJ;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,OAAO,IAAI,UAAU,WAAW,IAAI,MAAM,QAAQ,IAAI,IAAI;AAAA,MACnE,OAAO,QAAQ;AAAA,MACf,WAAW,IAAI;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBACC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AAClE,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,QAAID;AACJ,KAACA,MAAKC,MAAK,KAAK,KAAK,eAAeD,IAAG,aAAa,IAAI;AAAA,EAC5D,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,OAAO,QAAQ,UAAU,OAAO,IAAI;AACpC,YAAM,IAAI,MAAM,oDAAoD;AACxE,UAAM,aAAa,OAAO,QAAQ,UAAU,WACtC,QAAQ,QAAQ,IAAI,UAAU,OAAO,CAAC,IACjC,mBAAmB,QAAQ,OAAO,IAAI,KAAK,MAAM;AAC5D,QAAI;AACA;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ,OAAO,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,YAAU,KAAK,MAAM,GAAG;AACxB,MAAI,SAAS,IAAI,UAAU;AAC3B,QAAM,QAAQ,IAAI,QAAQ,SAAS,KAAK;AACxC,QAAM,SAAS,QAAQ,QAAQ;AAC/B,QAAM,CAAC,SAAS,OAAO,IAAS,qBAAqB,IAAI,MAAM;AAC/D,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,UAAU;AACd,QAAI,UAAU;AACd,QAAI;AACA,UAAI,UAAkB;AAAA,EAC9B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO;AACP,UAAI,CAAC,OAAO,UAAU,KAAK,GAAG;AAU1B,gBAAQ,OAAO,KAAK;AAAA,UAChB,UAAU;AAAA,UACV,QAAQ,IAAI;AAAA,UACZ,MAAM;AAAA,UACN,UAAU;AAAA,UACV;AAAA,UACA;AAAA,QACJ,CAAC;AACD;AAAA,MASJ;AACA,UAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAC9B,YAAI,QAAQ,GAAG;AAEX,kBAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL,OACK;AAED,kBAAQ,OAAO,KAAK;AAAA,YAChB;AAAA,YACA,MAAM;AAAA,YACN,SAAS,OAAO;AAAA,YAChB,MAAM;AAAA,YACN;AAAA,YACA;AAAA,YACA,WAAW;AAAA,YACX,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AACA;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,CAAC,SAAS,OAAO,IAAS,qBAAqB,IAAI,MAAM;AAC/D,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,UAAU;AACd,QAAI,UAAU;AAAA,EAClB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AACA,QAAI,QAAQ,SAAS;AACjB,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR;AAAA,QACA,MAAM;AAAA,QACN;AAAA,QACA,WAAW;AAAA,QACX;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,IAAI;AACZ;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,QAAQ,IAAI;AACZ;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAAA,EAC9C;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,UAAU,IAAI;AAClB,QAAI,UAAU,IAAI;AAClB,QAAI,OAAO,IAAI;AAAA,EACnB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,QAAI,SAAS,IAAI;AACb;AACJ,UAAM,SAAS,OAAO,IAAI;AAC1B,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAa,iBAAiB,KAAK;AAAA,MACnC,GAAI,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,KAAK,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,KAAK;AAAA,MAC7F,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,UAAU,IAAI;AACd;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,OAAQA,MAAK,KAAK,IAAI,WAAW,OAAO;AAC9C,QAAI,IAAI,UAAU;AACd,MAAAA,MAAK,KAAK,IAAI,UAAU,IAAI;AAAA,EACpC,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,UAAU,IAAI;AACd;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,MACN,SAAS,IAAI;AAAA,MACb,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,MAAID;AACJ,YAAU,KAAK,MAAM,GAAG;AACxB,GAACA,MAAK,KAAK,KAAK,KAAK,SAASA,IAAG,OAAO,CAAC,YAAY;AACjD,UAAM,MAAM,QAAQ;AACpB,WAAO,CAAM,QAAQ,GAAG,KAAK,IAAI,WAAW;AAAA,EAChD;AACA,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,UAAU,IAAI;AAClB,QAAI,UAAU,IAAI;AAClB,QAAI,SAAS,IAAI;AAAA,EACrB,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,MAAM;AACrB,QAAI,WAAW,IAAI;AACf;AACJ,UAAM,SAAc,oBAAoB,KAAK;AAC7C,UAAM,SAAS,SAAS,IAAI;AAC5B,YAAQ,OAAO,KAAK;AAAA,MAChB;AAAA,MACA,GAAI,SAAS,EAAE,MAAM,WAAW,SAAS,IAAI,OAAO,IAAI,EAAE,MAAM,aAAa,SAAS,IAAI,OAAO;AAAA,MACjG,WAAW;AAAA,MACX,OAAO;AAAA,MACP,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,MAAID,KAAI;AACR,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,SAAS,IAAI;AACjB,QAAI,IAAI,SAAS;AACb,UAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,UAAI,SAAS,IAAI,IAAI,OAAO;AAAA,IAChC;AAAA,EACJ,CAAC;AACD,MAAI,IAAI;AACJ,KAACD,MAAK,KAAK,MAAM,UAAUA,IAAG,QAAQ,CAAC,YAAY;AAC/C,UAAI,QAAQ,YAAY;AACxB,UAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAC9B;AACJ,cAAQ,OAAO,KAAK;AAAA,QAChB,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ,IAAI;AAAA,QACZ,OAAO,QAAQ;AAAA,QACf,GAAI,IAAI,UAAU,EAAE,SAAS,IAAI,QAAQ,SAAS,EAAE,IAAI,CAAC;AAAA,QACzD;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA;AAEA,KAAC,KAAK,KAAK,MAAM,UAAU,GAAG,QAAQ,MAAM;AAAA,IAAE;AACtD,CAAC;AACM,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,wBAAsB,KAAK,MAAM,GAAG;AACpC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,YAAY;AACxB,QAAI,IAAI,QAAQ,KAAK,QAAQ,KAAK;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf,SAAS,IAAI,QAAQ,SAAS;AAAA,MAC9B;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAI,YAAY,IAAI,UAAkB;AACtC,wBAAsB,KAAK,MAAM,GAAG;AACxC,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,MAAI,YAAY,IAAI,UAAkB;AACtC,wBAAsB,KAAK,MAAM,GAAG;AACxC,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,eAAoB,YAAY,IAAI,QAAQ;AAClD,QAAM,UAAU,IAAI,OAAO,OAAO,IAAI,aAAa,WAAW,MAAM,IAAI,QAAQ,IAAI,YAAY,KAAK,YAAY;AACjH,MAAI,UAAU;AACd,OAAK,KAAK,SAAS,KAAK,CAACC,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,SAAS,IAAI,UAAU,IAAI,QAAQ;AACjD;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,IAAI;AAAA,MACd,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,OAAO,IAAS,YAAY,IAAI,MAAM,CAAC,IAAI;AAC/D,MAAI,YAAY,IAAI,UAAU;AAC9B,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,WAAW,IAAI,MAAM;AACnC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,OAAO,KAAU,YAAY,IAAI,MAAM,CAAC,GAAG;AAC/D,MAAI,YAAY,IAAI,UAAU;AAC9B,OAAK,KAAK,SAAS,KAAK,CAACA,UAAS;AAC9B,UAAM,MAAMA,MAAK,KAAK;AACtB,QAAI,aAAa,IAAI,WAAW,oBAAI,IAAI;AACxC,QAAI,SAAS,IAAI,OAAO;AAAA,EAC5B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,MAAM,SAAS,IAAI,MAAM;AACjC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AAID,SAAS,0BAA0B,QAAQ,SAAS,UAAU;AAC1D,MAAI,OAAO,OAAO,QAAQ;AACtB,YAAQ,OAAO,KAAK,GAAQ,aAAa,UAAU,OAAO,MAAM,CAAC;AAAA,EACrE;AACJ;AACO,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,SAAS,IAAI,OAAO,KAAK,IAAI;AAAA,MAC/B,OAAO,QAAQ,MAAM,IAAI,QAAQ;AAAA,MACjC,QAAQ,CAAC;AAAA,IACb,GAAG,CAAC,CAAC;AACL,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACC,YAAW,0BAA0BA,SAAQ,SAAS,IAAI,QAAQ,CAAC;AAAA,IAC3F;AACA,8BAA0B,QAAQ,SAAS,IAAI,QAAQ;AACvD;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AACjG,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,UAAU,IAAI,IAAI,IAAI,IAAI;AAChC,OAAK,KAAK,SAAS,KAAK,CAACD,UAAS;AAC9B,IAAAA,MAAK,KAAK,IAAI,OAAO,IAAI;AAAA,EAC7B,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,QAAQ,IAAI,QAAQ,MAAM,IAAI;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ,MAAM;AAAA,MACrB;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,YAAU,KAAK,MAAM,GAAG;AACxB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,YAAQ,QAAQ,IAAI,GAAG,QAAQ,KAAK;AAAA,EACxC;AACJ,CAAC;;;AC9jBM,IAAM,MAAN,MAAU;AAAA,EACb,YAAY,OAAO,CAAC,GAAG;AACnB,SAAK,UAAU,CAAC;AAChB,SAAK,SAAS;AACd,QAAI;AACA,WAAK,OAAO;AAAA,EACpB;AAAA,EACA,SAAS,IAAI;AACT,SAAK,UAAU;AACf,OAAG,IAAI;AACP,SAAK,UAAU;AAAA,EACnB;AAAA,EACA,MAAM,KAAK;AACP,QAAI,OAAO,QAAQ,YAAY;AAC3B,UAAI,MAAM,EAAE,WAAW,OAAO,CAAC;AAC/B,UAAI,MAAM,EAAE,WAAW,QAAQ,CAAC;AAChC;AAAA,IACJ;AACA,UAAM,UAAU;AAChB,UAAM,QAAQ,QAAQ,MAAM,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;AACjD,UAAM,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AAC/E,UAAM,WAAW,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,SAAS,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC;AAChG,eAAW,QAAQ,UAAU;AACzB,WAAK,QAAQ,KAAK,IAAI;AAAA,IAC1B;AAAA,EACJ;AAAA,EACA,UAAU;AACN,UAAM,IAAI;AACV,UAAM,OAAO,MAAM;AACnB,UAAM,UAAU,MAAM,WAAW,CAAC,EAAE;AACpC,UAAM,QAAQ,CAAC,GAAG,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;AAE9C,WAAO,IAAI,EAAE,GAAG,MAAM,MAAM,KAAK,IAAI,CAAC;AAAA,EAC1C;AACJ;;;AClCO,IAAM,UAAU;AAAA,EACnB,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AACX;;;ACGO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAIE;AACJ,WAAS,OAAO,CAAC;AACjB,OAAK,KAAK,MAAM;AAChB,OAAK,KAAK,MAAM,KAAK,KAAK,OAAO,CAAC;AAClC,OAAK,KAAK,UAAU;AACpB,QAAM,SAAS,CAAC,GAAI,KAAK,KAAK,IAAI,UAAU,CAAC,CAAE;AAE/C,MAAI,KAAK,KAAK,OAAO,IAAI,WAAW,GAAG;AACnC,WAAO,QAAQ,IAAI;AAAA,EACvB;AACA,aAAW,MAAM,QAAQ;AACrB,eAAW,MAAM,GAAG,KAAK,UAAU;AAC/B,SAAG,IAAI;AAAA,IACX;AAAA,EACJ;AACA,MAAI,OAAO,WAAW,GAAG;AAGrB,KAACA,MAAK,KAAK,MAAM,aAAaA,IAAG,WAAW,CAAC;AAC7C,SAAK,KAAK,UAAU,KAAK,MAAM;AAC3B,WAAK,KAAK,MAAM,KAAK,KAAK;AAAA,IAC9B,CAAC;AAAA,EACL,OACK;AACD,UAAM,YAAY,CAAC,SAASC,SAAQ,QAAQ;AACxC,UAAI,YAAiB,QAAQ,OAAO;AACpC,UAAI;AACJ,iBAAW,MAAMA,SAAQ;AACrB,YAAI,GAAG,KAAK,IAAI,MAAM;AAClB,cAAS,kBAAkB,OAAO;AAC9B;AACJ,gBAAM,YAAY,GAAG,KAAK,IAAI,KAAK,OAAO;AAC1C,cAAI,CAAC;AACD;AAAA,QACR,WACS,WAAW;AAChB;AAAA,QACJ;AACA,cAAM,UAAU,QAAQ,OAAO;AAC/B,cAAM,IAAI,GAAG,KAAK,MAAM,OAAO;AAC/B,YAAI,aAAa,WAAW,KAAK,UAAU,OAAO;AAC9C,gBAAM,IAAS,eAAe;AAAA,QAClC;AACA,YAAI,eAAe,aAAa,SAAS;AACrC,yBAAe,eAAe,QAAQ,QAAQ,GAAG,KAAK,YAAY;AAC9D,kBAAM;AACN,kBAAM,UAAU,QAAQ,OAAO;AAC/B,gBAAI,YAAY;AACZ;AACJ,gBAAI,CAAC;AACD,0BAAiB,QAAQ,SAAS,OAAO;AAAA,UACjD,CAAC;AAAA,QACL,OACK;AACD,gBAAM,UAAU,QAAQ,OAAO;AAC/B,cAAI,YAAY;AACZ;AACJ,cAAI,CAAC;AACD,wBAAiB,QAAQ,SAAS,OAAO;AAAA,QACjD;AAAA,MACJ;AACA,UAAI,aAAa;AACb,eAAO,YAAY,KAAK,MAAM;AAC1B,iBAAO;AAAA,QACX,CAAC;AAAA,MACL;AACA,aAAO;AAAA,IACX;AACA,UAAM,qBAAqB,CAAC,QAAQ,SAAS,QAAQ;AAEjD,UAAS,QAAQ,MAAM,GAAG;AACtB,eAAO,UAAU;AACjB,eAAO;AAAA,MACX;AAEA,YAAM,cAAc,UAAU,SAAS,QAAQ,GAAG;AAClD,UAAI,uBAAuB,SAAS;AAChC,YAAI,IAAI,UAAU;AACd,gBAAM,IAAS,eAAe;AAClC,eAAO,YAAY,KAAK,CAACC,iBAAgB,KAAK,KAAK,MAAMA,cAAa,GAAG,CAAC;AAAA,MAC9E;AACA,aAAO,KAAK,KAAK,MAAM,aAAa,GAAG;AAAA,IAC3C;AACA,SAAK,KAAK,MAAM,CAAC,SAAS,QAAQ;AAC9B,UAAI,IAAI,YAAY;AAChB,eAAO,KAAK,KAAK,MAAM,SAAS,GAAG;AAAA,MACvC;AACA,UAAI,IAAI,cAAc,YAAY;AAG9B,cAAM,SAAS,KAAK,KAAK,MAAM,EAAE,OAAO,QAAQ,OAAO,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK,YAAY,KAAK,CAAC;AACjG,YAAI,kBAAkB,SAAS;AAC3B,iBAAO,OAAO,KAAK,CAACC,YAAW;AAC3B,mBAAO,mBAAmBA,SAAQ,SAAS,GAAG;AAAA,UAClD,CAAC;AAAA,QACL;AACA,eAAO,mBAAmB,QAAQ,SAAS,GAAG;AAAA,MAClD;AAEA,YAAM,SAAS,KAAK,KAAK,MAAM,SAAS,GAAG;AAC3C,UAAI,kBAAkB,SAAS;AAC3B,YAAI,IAAI,UAAU;AACd,gBAAM,IAAS,eAAe;AAClC,eAAO,OAAO,KAAK,CAACC,YAAW,UAAUA,SAAQ,QAAQ,GAAG,CAAC;AAAA,MACjE;AACA,aAAO,UAAU,QAAQ,QAAQ,GAAG;AAAA,IACxC;AAAA,EACJ;AAEA,EAAK,WAAW,MAAM,aAAa,OAAO;AAAA,IACtC,UAAU,CAAC,UAAU;AACjB,UAAI;AACA,cAAM,IAAI,UAAU,MAAM,KAAK;AAC/B,eAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO;AAAA,MACrE,SACO,GAAG;AACN,eAAO,eAAe,MAAM,KAAK,EAAE,KAAK,CAAC,MAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,QAAQ,EAAE,OAAO,OAAO,CAAE;AAAA,MAChH;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IACR,SAAS;AAAA,EACb,EAAE;AACN,CAAC;AAEM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAU,CAAC,GAAI,MAAM,KAAK,KAAK,YAAY,CAAC,CAAE,EAAE,IAAI,KAAa,OAAO,KAAK,KAAK,GAAG;AAC/F,OAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAC9B,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACOC,IAAG;AAAA,MAAE;AAChB,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAE/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,IAAI,SAAS;AACb,UAAM,aAAa;AAAA,MACf,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IACR;AACA,UAAM,IAAI,WAAW,IAAI,OAAO;AAChC,QAAI,MAAM;AACN,YAAM,IAAI,MAAM,0BAA0B,IAAI,OAAO,GAAG;AAC5D,QAAI,YAAY,IAAI,UAAkB,KAAK,CAAC;AAAA,EAChD;AAEI,QAAI,YAAY,IAAI,UAAkB,KAAK;AAC/C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI;AAEA,YAAM,UAAU,QAAQ,MAAM,KAAK;AAGnC,UAAI,CAAC,IAAI,aAAa,IAAI,UAAU,WAAmB,aAAa,QAAQ;AACxE,YAAI,CAAC,gBAAgB,KAAK,OAAO,GAAG;AAChC,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AACD;AAAA,QACJ;AAAA,MACJ;AAEA,YAAMC,OAAM,IAAI,IAAI,OAAO;AAC3B,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,YAAY;AACzB,YAAI,CAAC,IAAI,SAAS,KAAKA,KAAI,QAAQ,GAAG;AAClC,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AACA,UAAI,IAAI,UAAU;AACd,YAAI,SAAS,YAAY;AACzB,YAAI,CAAC,IAAI,SAAS,KAAKA,KAAI,SAAS,SAAS,GAAG,IAAIA,KAAI,SAAS,MAAM,GAAG,EAAE,IAAIA,KAAI,QAAQ,GAAG;AAC3F,kBAAQ,OAAO,KAAK;AAAA,YAChB,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,SAAS,IAAI,SAAS;AAAA,YACtB,OAAO,QAAQ;AAAA,YACf;AAAA,YACA,UAAU,CAAC,IAAI;AAAA,UACnB,CAAC;AAAA,QACL;AAAA,MACJ;AAEA,UAAI,IAAI,WAAW;AAEf,gBAAQ,QAAQA,KAAI;AAAA,MACxB,OACK;AAED,gBAAQ,QAAQ;AAAA,MACpB;AACA;AAAA,IACJ,SACO,GAAG;AACN,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB,MAAM;AAC5C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AAMM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,MAAI,YAAY,IAAI,UAAkB,SAAS,GAAG;AAClD,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,MAAI,YAAY,IAAI,UAAkB,KAAK,GAAG;AAC9C,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AAC3B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI;AAEA,UAAI,IAAI,WAAW,QAAQ,KAAK,GAAG;AAAA,IAEvC,QACM;AACF,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,MAAI,YAAY,IAAI,UAAkB,IAAI,IAAI,SAAS;AACvD,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,SAAS;AAC3B,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ,MAAM,MAAM,GAAG;AACrC,QAAI;AACA,UAAI,MAAM,WAAW;AACjB,cAAM,IAAI,MAAM;AACpB,YAAM,CAAC,SAAS,MAAM,IAAI;AAC1B,UAAI,CAAC;AACD,cAAM,IAAI,MAAM;AACpB,YAAM,YAAY,OAAO,MAAM;AAC/B,UAAI,GAAG,SAAS,OAAO;AACnB,cAAM,IAAI,MAAM;AACpB,UAAI,YAAY,KAAK,YAAY;AAC7B,cAAM,IAAI,MAAM;AAEpB,UAAI,IAAI,WAAW,OAAO,GAAG;AAAA,IACjC,QACM;AACF,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU,CAAC,IAAI;AAAA,MACnB,CAAC;AAAA,IACL;AAAA,EACJ;AACJ,CAAC;AAEM,SAAS,cAAc,MAAM;AAChC,MAAI,SAAS;AACT,WAAO;AAEX,MAAI,KAAK,KAAK,IAAI;AACd,WAAO;AACX,MAAI,KAAK,SAAS,MAAM;AACpB,WAAO;AACX,MAAI;AAEA,SAAK,IAAI;AACT,WAAO;AAAA,EACX,QACM;AACF,WAAO;AAAA,EACX;AACJ;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,kBAAkB;AAChC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,cAAc,QAAQ,KAAK;AAC3B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AAEM,SAAS,iBAAiB,MAAM;AACnC,MAAI,CAAS,UAAU,KAAK,IAAI;AAC5B,WAAO;AACX,QAAMC,UAAS,KAAK,QAAQ,SAAS,CAAC,MAAO,MAAM,MAAM,MAAM,GAAI;AACnE,QAAM,SAASA,QAAO,OAAO,KAAK,KAAKA,QAAO,SAAS,CAAC,IAAI,GAAG,GAAG;AAClE,SAAO,cAAc,MAAM;AAC/B;AACO,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,IAAI,kBAAkB;AAChC,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,iBAAiB,QAAQ,KAAK;AAC9B;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,MAAI,YAAY,IAAI,UAAkB;AACtC,mBAAiB,KAAK,MAAM,GAAG;AACnC,CAAC;AAEM,SAAS,WAAW,OAAO,YAAY,MAAM;AAChD,MAAI;AACA,UAAM,cAAc,MAAM,MAAM,GAAG;AACnC,QAAI,YAAY,WAAW;AACvB,aAAO;AACX,UAAM,CAAC,MAAM,IAAI;AACjB,QAAI,CAAC;AACD,aAAO;AAEX,UAAM,eAAe,KAAK,MAAM,KAAK,MAAM,CAAC;AAC5C,QAAI,SAAS,gBAAgB,cAAc,QAAQ;AAC/C,aAAO;AACX,QAAI,CAAC,aAAa;AACd,aAAO;AACX,QAAI,cAAc,EAAE,SAAS,iBAAiB,aAAa,QAAQ;AAC/D,aAAO;AACX,WAAO;AAAA,EACX,QACM;AACF,WAAO;AAAA,EACX;AACJ;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,WAAW,QAAQ,OAAO,IAAI,GAAG;AACjC;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,yBAAuC,gBAAK,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AAC3G,mBAAiB,KAAK,MAAM,GAAG;AAC/B,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,IAAI,GAAG,QAAQ,KAAK;AACpB;AACJ,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ,OAAO,QAAQ;AAAA,MACf;AAAA,MACA,UAAU,CAAC,IAAI;AAAA,IACnB,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAU,KAAK,KAAK,IAAI,WAAmB;AACrD,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACO,GAAG;AAAA,MAAE;AAChB,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU,YAAY,CAAC,OAAO,MAAM,KAAK,KAAK,OAAO,SAAS,KAAK,GAAG;AAC7E,aAAO;AAAA,IACX;AACA,UAAM,WAAW,OAAO,UAAU,WAC5B,OAAO,MAAM,KAAK,IACd,QACA,CAAC,OAAO,SAAS,KAAK,IAClB,aACA,SACR;AACN,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,GAAI,WAAW,EAAE,SAAS,IAAI,CAAC;AAAA,IACnC,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,QAAQ,QAAQ,KAAK;AAAA,MACzC,SACO,GAAG;AAAA,MAAE;AAChB,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI;AACJ,UAAI;AACA,gBAAQ,QAAQ,OAAO,QAAQ,KAAK;AAAA,MACxC,SACO,GAAG;AAAA,MAAE;AAChB,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAO,sBAAsB,KAAK,MAAM,GAAG;AAC3C,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,SAAS,oBAAI,IAAI,CAAC,MAAS,CAAC;AACtC,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,UAAkB;AAC5B,OAAK,KAAK,SAAS,oBAAI,IAAI,CAAC,IAAI,CAAC;AACjC,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU;AACV,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AACnC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,YAAY;AACnC,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,UAAU;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,IAAI,QAAQ;AACZ,UAAI;AACA,gBAAQ,QAAQ,IAAI,KAAK,QAAQ,KAAK;AAAA,MAC1C,SACO,MAAM;AAAA,MAAE;AAAA,IACnB;AACA,UAAM,QAAQ,QAAQ;AACtB,UAAM,SAAS,iBAAiB;AAChC,UAAM,cAAc,UAAU,CAAC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC3D,QAAI;AACA,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA,GAAI,SAAS,EAAE,UAAU,eAAe,IAAI,CAAC;AAAA,MAC7C;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,kBAAkB,QAAQ,OAAO,OAAO;AAC7C,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AACA,QAAM,MAAM,KAAK,IAAI,OAAO;AAChC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,MAAM,MAAM,MAAM;AAClC,UAAM,QAAQ,CAAC;AACf,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAM,OAAO,MAAM,CAAC;AACpB,YAAM,SAAS,IAAI,QAAQ,KAAK,IAAI;AAAA,QAChC,OAAO;AAAA,QACP,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,cAAM,KAAK,OAAO,KAAK,CAACH,YAAW,kBAAkBA,SAAQ,SAAS,CAAC,CAAC,CAAC;AAAA,MAC7E,OACK;AACD,0BAAkB,QAAQ,SAAS,CAAC;AAAA,MACxC;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,qBAAqB,QAAQ,OAAO,KAAK,OAAO,cAAc,eAAe;AAClF,QAAM,YAAY,OAAO;AACzB,MAAI,OAAO,OAAO,QAAQ;AAEtB,QAAI,gBAAgB,iBAAiB,CAAC,WAAW;AAC7C;AAAA,IACJ;AACA,UAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,EAC9D;AACA,MAAI,CAAC,aAAa,CAAC,cAAc;AAC7B,QAAI,CAAC,OAAO,OAAO,QAAQ;AACvB,YAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,QACP,MAAM,CAAC,GAAG;AAAA,MACd,CAAC;AAAA,IACL;AACA;AAAA,EACJ;AACA,MAAI,OAAO,UAAU,QAAW;AAC5B,QAAI,WAAW;AACX,YAAM,MAAM,GAAG,IAAI;AAAA,IACvB;AAAA,EACJ,OACK;AACD,UAAM,MAAM,GAAG,IAAI,OAAO;AAAA,EAC9B;AACJ;AACA,SAAS,aAAa,KAAK;AACvB,QAAM,OAAO,OAAO,KAAK,IAAI,KAAK;AAClC,aAAW,KAAK,MAAM;AAClB,QAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,MAAM,QAAQ,IAAI,UAAU,GAAG;AAChD,YAAM,IAAI,MAAM,2BAA2B,CAAC,0BAA0B;AAAA,IAC1E;AAAA,EACJ;AACA,QAAM,QAAa,aAAa,IAAI,KAAK;AACzC,SAAO;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA,QAAQ,IAAI,IAAI,IAAI;AAAA,IACpB,SAAS,KAAK;AAAA,IACd,cAAc,IAAI,IAAI,KAAK;AAAA,EAC/B;AACJ;AACA,SAAS,eAAe,OAAO,OAAO,SAAS,KAAK,KAAK,MAAM;AAC3D,QAAM,eAAe,CAAC;AACtB,QAAM,SAAS,IAAI;AACnB,QAAM,YAAY,IAAI,SAAS;AAC/B,QAAMI,KAAI,UAAU,IAAI;AACxB,QAAM,eAAe,UAAU,UAAU;AACzC,QAAM,gBAAgB,UAAU,WAAW;AAC3C,aAAW,OAAO,OAAO;AAGrB,QAAI,QAAQ;AACR;AACJ,QAAI,OAAO,IAAI,GAAG;AACd;AACJ,QAAIA,OAAM,SAAS;AACf,mBAAa,KAAK,GAAG;AACrB;AAAA,IACJ;AACA,UAAM,IAAI,UAAU,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC9D,QAAI,aAAa,SAAS;AACtB,YAAM,KAAK,EAAE,KAAK,CAACC,OAAM,qBAAqBA,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,IACvG,OACK;AACD,2BAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA,IAC5E;AAAA,EACJ;AACA,MAAI,aAAa,QAAQ;AACrB,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AACA,MAAI,CAAC,MAAM;AACP,WAAO;AACX,SAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM;AACjC,WAAO;AAAA,EACX,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AAEnF,WAAS,KAAK,MAAM,GAAG;AAEvB,QAAM,OAAO,OAAO,yBAAyB,KAAK,OAAO;AACzD,MAAI,CAAC,MAAM,KAAK;AACZ,UAAM,KAAK,IAAI;AACf,WAAO,eAAe,KAAK,SAAS;AAAA,MAChC,KAAK,MAAM;AACP,cAAM,QAAQ,EAAE,GAAG,GAAG;AACtB,eAAO,eAAe,KAAK,SAAS;AAAA,UAChC,OAAO;AAAA,QACX,CAAC;AACD,eAAO;AAAA,MACX;AAAA,IACJ,CAAC;AAAA,EACL;AACA,QAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AACvD,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM;AAC3C,UAAM,QAAQ,IAAI;AAClB,UAAM,aAAa,CAAC;AACpB,eAAW,OAAO,OAAO;AACrB,YAAM,QAAQ,MAAM,GAAG,EAAE;AACzB,UAAI,MAAM,QAAQ;AACd,mBAAW,GAAG,MAAM,WAAW,GAAG,IAAI,oBAAI,IAAI;AAC9C,mBAAW,KAAK,MAAM;AAClB,qBAAW,GAAG,EAAE,IAAI,CAAC;AAAA,MAC7B;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAMC,YAAgB;AACtB,QAAM,WAAW,IAAI;AACrB,MAAI;AACJ,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,cAAU,QAAQ,YAAY;AAC9B,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAACA,UAAS,KAAK,GAAG;AAClB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,CAAC;AACjB,UAAM,QAAQ,CAAC;AACf,UAAM,QAAQ,MAAM;AACpB,eAAW,OAAO,MAAM,MAAM;AAC1B,YAAM,KAAK,MAAM,GAAG;AACpB,YAAM,eAAe,GAAG,KAAK,UAAU;AACvC,YAAM,gBAAgB,GAAG,KAAK,WAAW;AACzC,YAAM,IAAI,GAAG,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5D,UAAI,aAAa,SAAS;AACtB,cAAM,KAAK,EAAE,KAAK,CAACD,OAAM,qBAAqBA,IAAG,SAAS,KAAK,OAAO,cAAc,aAAa,CAAC,CAAC;AAAA,MACvG,OACK;AACD,6BAAqB,GAAG,SAAS,KAAK,OAAO,cAAc,aAAa;AAAA,MAC5E;AAAA,IACJ;AACA,QAAI,CAAC,UAAU;AACX,aAAO,MAAM,SAAS,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO,IAAI;AAAA,IACnE;AACA,WAAO,eAAe,OAAO,OAAO,SAAS,KAAK,YAAY,OAAO,IAAI;AAAA,EAC7E;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AAEzF,aAAW,KAAK,MAAM,GAAG;AACzB,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,cAAmB,OAAO,MAAM,aAAa,GAAG,CAAC;AACvD,QAAM,mBAAmB,CAAC,UAAU;AAChC,UAAM,MAAM,IAAI,IAAI,CAAC,SAAS,WAAW,KAAK,CAAC;AAC/C,UAAM,aAAa,YAAY;AAC/B,UAAM,WAAW,CAAC,QAAQ;AACtB,YAAM,IAAS,IAAI,GAAG;AACtB,aAAO,SAAS,CAAC,6BAA6B,CAAC;AAAA,IACnD;AACA,QAAI,MAAM,8BAA8B;AACxC,UAAM,MAAM,uBAAO,OAAO,IAAI;AAC9B,QAAI,UAAU;AACd,eAAW,OAAO,WAAW,MAAM;AAC/B,UAAI,GAAG,IAAI,OAAO,SAAS;AAAA,IAC/B;AAEA,QAAI,MAAM,uBAAuB;AACjC,eAAW,OAAO,WAAW,MAAM;AAC/B,YAAM,KAAK,IAAI,GAAG;AAClB,YAAM,IAAS,IAAI,GAAG;AACtB,YAAM,SAAS,MAAM,GAAG;AACxB,YAAM,eAAe,QAAQ,MAAM,UAAU;AAC7C,YAAM,gBAAgB,QAAQ,MAAM,WAAW;AAC/C,UAAI,MAAM,SAAS,EAAE,MAAM,SAAS,GAAG,CAAC,GAAG;AAC3C,UAAI,gBAAgB,eAAe;AAE/B,YAAI,MAAM;AAAA,cACZ,EAAE;AAAA,gBACA,CAAC;AAAA,qDACoC,EAAE;AAAA;AAAA,kCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,cAK3C,EAAE;AAAA,gBACA,CAAC;AAAA,wBACO,CAAC;AAAA;AAAA;AAAA,sBAGH,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA,OAGzB;AAAA,MACK,WACS,CAAC,cAAc;AACpB,YAAI,MAAM;AAAA,gBACV,EAAE,cAAc,CAAC;AAAA,cACnB,EAAE;AAAA,mDACmC,EAAE;AAAA;AAAA,gCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA,eAGxC,EAAE,gBAAgB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,qBAKd,CAAC;AAAA;AAAA;AAAA;AAAA,cAIR,EAAE;AAAA,gBACA,EAAE;AAAA,wBACM,CAAC;AAAA;AAAA,wBAED,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA;AAAA,OAI3B;AAAA,MACK,OACK;AACD,YAAI,MAAM;AAAA,cACZ,EAAE;AAAA,mDACmC,EAAE;AAAA;AAAA,gCAErB,CAAC,qBAAqB,CAAC;AAAA;AAAA;AAAA;AAAA,cAIzC,EAAE;AAAA,gBACA,CAAC;AAAA,wBACO,CAAC;AAAA;AAAA;AAAA,sBAGH,CAAC,OAAO,EAAE;AAAA;AAAA;AAAA,OAGzB;AAAA,MACK;AAAA,IACJ;AACA,QAAI,MAAM,4BAA4B;AACtC,QAAI,MAAM,iBAAiB;AAC3B,UAAM,KAAK,IAAI,QAAQ;AACvB,WAAO,CAAC,SAAS,QAAQ,GAAG,OAAO,SAAS,GAAG;AAAA,EACnD;AACA,MAAI;AACJ,QAAMC,YAAgB;AACtB,QAAM,MAAM,CAAM,aAAa;AAC/B,QAAMC,cAAkB;AACxB,QAAM,cAAc,OAAOA,YAAW;AACtC,QAAM,WAAW,IAAI;AACrB,MAAI;AACJ,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,cAAU,QAAQ,YAAY;AAC9B,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAACD,UAAS,KAAK,GAAG;AAClB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,QAAI,OAAO,eAAe,KAAK,UAAU,SAAS,IAAI,YAAY,MAAM;AAEpE,UAAI,CAAC;AACD,mBAAW,iBAAiB,IAAI,KAAK;AACzC,gBAAU,SAAS,SAAS,GAAG;AAC/B,UAAI,CAAC;AACD,eAAO;AACX,aAAO,eAAe,CAAC,GAAG,OAAO,SAAS,KAAK,OAAO,IAAI;AAAA,IAC9D;AACA,WAAO,WAAW,SAAS,GAAG;AAAA,EAClC;AACJ,CAAC;AACD,SAAS,mBAAmB,SAAS,OAAO,MAAM,KAAK;AACnD,aAAW,UAAU,SAAS;AAC1B,QAAI,OAAO,OAAO,WAAW,GAAG;AAC5B,YAAM,QAAQ,OAAO;AACrB,aAAO;AAAA,IACX;AAAA,EACJ;AACA,QAAM,aAAa,QAAQ,OAAO,CAAC,MAAM,CAAM,QAAQ,CAAC,CAAC;AACzD,MAAI,WAAW,WAAW,GAAG;AACzB,UAAM,QAAQ,WAAW,CAAC,EAAE;AAC5B,WAAO,WAAW,CAAC;AAAA,EACvB;AACA,QAAM,OAAO,KAAK;AAAA,IACd,MAAM;AAAA,IACN,OAAO,MAAM;AAAA,IACb;AAAA,IACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,EAC3G,CAAC;AACD,SAAO;AACX;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,UAAU,UAAU,IAAI,aAAa,MAAS;AACvH,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,WAAW,UAAU,IAAI,aAAa,MAAS;AACzH,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,QAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,MAAM,GAAG;AACzC,aAAO,IAAI,IAAI,IAAI,QAAQ,QAAQ,CAAC,WAAW,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC;AAAA,IAClF;AACA,WAAO;AAAA,EACX,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,QAAI,IAAI,QAAQ,MAAM,CAAC,MAAM,EAAE,KAAK,OAAO,GAAG;AAC1C,YAAM,WAAW,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,KAAK,OAAO;AACtD,aAAO,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAW,WAAW,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI;AAAA,IACvF;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM;AACnE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,OAAO;AACP,aAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AACA,QAAI,QAAQ;AACZ,UAAM,UAAU,CAAC;AACjB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,gBAAQ,KAAK,MAAM;AACnB,gBAAQ;AAAA,MACZ,OACK;AACD,YAAI,OAAO,OAAO,WAAW;AACzB,iBAAO;AACX,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,CAAC;AACD,aAAO,mBAAmB,SAAS,SAAS,MAAM,GAAG;AACzD,WAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAACE,aAAY;AAC1C,aAAO,mBAAmBA,UAAS,SAAS,MAAM,GAAG;AAAA,IACzD,CAAC;AAAA,EACL;AACJ,CAAC;AACD,SAAS,4BAA4B,SAAS,OAAO,MAAM,KAAK;AAC5D,QAAM,YAAY,QAAQ,OAAO,CAAC,MAAM,EAAE,OAAO,WAAW,CAAC;AAC7D,MAAI,UAAU,WAAW,GAAG;AACxB,UAAM,QAAQ,UAAU,CAAC,EAAE;AAC3B,WAAO;AAAA,EACX;AACA,MAAI,UAAU,WAAW,GAAG;AAExB,UAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,QAAQ,IAAI,CAAC,WAAW,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC,CAAC;AAAA,IAC3G,CAAC;AAAA,EACL,OACK;AAED,UAAM,OAAO,KAAK;AAAA,MACd,MAAM;AAAA,MACN,OAAO,MAAM;AAAA,MACb;AAAA,MACA,QAAQ,CAAC;AAAA,MACT,WAAW;AAAA,IACf,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,YAAU,KAAK,MAAM,GAAG;AACxB,MAAI,YAAY;AAChB,QAAM,QAAQ,IAAI,QAAQ,WAAW,IAAI,IAAI,QAAQ,CAAC,EAAE,KAAK,MAAM;AACnE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,OAAO;AACP,aAAO,MAAM,SAAS,GAAG;AAAA,IAC7B;AACA,QAAI,QAAQ;AACZ,UAAM,UAAU,CAAC;AACjB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,SAAS,OAAO,KAAK,IAAI;AAAA,QAC3B,OAAO,QAAQ;AAAA,QACf,QAAQ,CAAC;AAAA,MACb,GAAG,GAAG;AACN,UAAI,kBAAkB,SAAS;AAC3B,gBAAQ,KAAK,MAAM;AACnB,gBAAQ;AAAA,MACZ,OACK;AACD,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,IACJ;AACA,QAAI,CAAC;AACD,aAAO,4BAA4B,SAAS,SAAS,MAAM,GAAG;AAClE,WAAO,QAAQ,IAAI,OAAO,EAAE,KAAK,CAACA,aAAY;AAC1C,aAAO,4BAA4BA,UAAS,SAAS,MAAM,GAAG;AAAA,IAClE,CAAC;AAAA,EACL;AACJ,CAAC;AACM,IAAM,yBAEb,gBAAK,aAAa,0BAA0B,CAAC,MAAM,QAAQ;AACvD,MAAI,YAAY;AAChB,YAAU,KAAK,MAAM,GAAG;AACxB,QAAM,SAAS,KAAK,KAAK;AACzB,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM;AAC3C,UAAM,aAAa,CAAC;AACpB,eAAW,UAAU,IAAI,SAAS;AAC9B,YAAM,KAAK,OAAO,KAAK;AACvB,UAAI,CAAC,MAAM,OAAO,KAAK,EAAE,EAAE,WAAW;AAClC,cAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,MAAM,CAAC,GAAG;AAClG,iBAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,EAAE,GAAG;AACrC,YAAI,CAAC,WAAW,CAAC;AACb,qBAAW,CAAC,IAAI,oBAAI,IAAI;AAC5B,mBAAW,OAAO,GAAG;AACjB,qBAAW,CAAC,EAAE,IAAI,GAAG;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAM,OAAY,OAAO,MAAM;AAC3B,UAAM,OAAO,IAAI;AACjB,UAAMC,OAAM,oBAAI,IAAI;AACpB,eAAW,KAAK,MAAM;AAClB,YAAM,SAAS,EAAE,KAAK,aAAa,IAAI,aAAa;AACpD,UAAI,CAAC,UAAU,OAAO,SAAS;AAC3B,cAAM,IAAI,MAAM,gDAAgD,IAAI,QAAQ,QAAQ,CAAC,CAAC,GAAG;AAC7F,iBAAW,KAAK,QAAQ;AACpB,YAAIA,KAAI,IAAI,CAAC,GAAG;AACZ,gBAAM,IAAI,MAAM,kCAAkC,OAAO,CAAC,CAAC,GAAG;AAAA,QAClE;AACA,QAAAA,KAAI,IAAI,GAAG,CAAC;AAAA,MAChB;AAAA,IACJ;AACA,WAAOA;AAAA,EACX,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAM,SAAS,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,MAAM,KAAK,MAAM,IAAI,QAAQ,IAAI,aAAa,CAAC;AACrD,QAAI,KAAK;AACL,aAAO,IAAI,KAAK,IAAI,SAAS,GAAG;AAAA,IACpC;AAKA,QAAI,IAAI,iBAAiB,IAAI,cAAc,YAAY;AACnD,aAAO,OAAO,SAAS,GAAG;AAAA,IAC9B;AAEA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,MACT,MAAM;AAAA,MACN,eAAe,IAAI;AAAA,MACnB,SAAS,MAAM,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,MACrC;AAAA,MACA,MAAM,CAAC,IAAI,aAAa;AAAA,MACxB;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChE,UAAM,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG;AAClE,UAAM,QAAQ,gBAAgB,WAAW,iBAAiB;AAC1D,QAAI,OAAO;AACP,aAAO,QAAQ,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,KAAK,CAAC,CAACC,OAAMC,MAAK,MAAM;AACtD,eAAO,0BAA0B,SAASD,OAAMC,MAAK;AAAA,MACzD,CAAC;AAAA,IACL;AACA,WAAO,0BAA0B,SAAS,MAAM,KAAK;AAAA,EACzD;AACJ,CAAC;AACD,SAAS,YAAY,GAAG,GAAG;AAGvB,MAAI,MAAM,GAAG;AACT,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AACA,MAAI,aAAa,QAAQ,aAAa,QAAQ,CAAC,MAAM,CAAC,GAAG;AACrD,WAAO,EAAE,OAAO,MAAM,MAAM,EAAE;AAAA,EAClC;AACA,MAAS,cAAc,CAAC,KAAU,cAAc,CAAC,GAAG;AAChD,UAAM,QAAQ,OAAO,KAAK,CAAC;AAC3B,UAAM,aAAa,OAAO,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,MAAM,QAAQ,GAAG,MAAM,EAAE;AAC3E,UAAM,SAAS,EAAE,GAAG,GAAG,GAAG,EAAE;AAC5B,eAAW,OAAO,YAAY;AAC1B,YAAM,cAAc,YAAY,EAAE,GAAG,GAAG,EAAE,GAAG,CAAC;AAC9C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,KAAK,GAAG,YAAY,cAAc;AAAA,QACvD;AAAA,MACJ;AACA,aAAO,GAAG,IAAI,YAAY;AAAA,IAC9B;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,OAAO;AAAA,EACvC;AACA,MAAI,MAAM,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,GAAG;AACtC,QAAI,EAAE,WAAW,EAAE,QAAQ;AACvB,aAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAAA,IAC9C;AACA,UAAM,WAAW,CAAC;AAClB,aAAS,QAAQ,GAAG,QAAQ,EAAE,QAAQ,SAAS;AAC3C,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,QAAQ,EAAE,KAAK;AACrB,YAAM,cAAc,YAAY,OAAO,KAAK;AAC5C,UAAI,CAAC,YAAY,OAAO;AACpB,eAAO;AAAA,UACH,OAAO;AAAA,UACP,gBAAgB,CAAC,OAAO,GAAG,YAAY,cAAc;AAAA,QACzD;AAAA,MACJ;AACA,eAAS,KAAK,YAAY,IAAI;AAAA,IAClC;AACA,WAAO,EAAE,OAAO,MAAM,MAAM,SAAS;AAAA,EACzC;AACA,SAAO,EAAE,OAAO,OAAO,gBAAgB,CAAC,EAAE;AAC9C;AACA,SAAS,0BAA0B,QAAQ,MAAM,OAAO;AAEpD,QAAM,YAAY,oBAAI,IAAI;AAC1B,MAAI;AACJ,aAAW,OAAO,KAAK,QAAQ;AAC3B,QAAI,IAAI,SAAS,qBAAqB;AAClC,qBAAe,aAAa;AAC5B,iBAAW,KAAK,IAAI,MAAM;AACtB,YAAI,CAAC,UAAU,IAAI,CAAC;AAChB,oBAAU,IAAI,GAAG,CAAC,CAAC;AACvB,kBAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,OACK;AACD,aAAO,OAAO,KAAK,GAAG;AAAA,IAC1B;AAAA,EACJ;AACA,aAAW,OAAO,MAAM,QAAQ;AAC5B,QAAI,IAAI,SAAS,qBAAqB;AAClC,iBAAW,KAAK,IAAI,MAAM;AACtB,YAAI,CAAC,UAAU,IAAI,CAAC;AAChB,oBAAU,IAAI,GAAG,CAAC,CAAC;AACvB,kBAAU,IAAI,CAAC,EAAE,IAAI;AAAA,MACzB;AAAA,IACJ,OACK;AACD,aAAO,OAAO,KAAK,GAAG;AAAA,IAC1B;AAAA,EACJ;AAEA,QAAM,WAAW,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5E,MAAI,SAAS,UAAU,YAAY;AAC/B,WAAO,OAAO,KAAK,EAAE,GAAG,YAAY,MAAM,SAAS,CAAC;AAAA,EACxD;AACA,MAAS,QAAQ,MAAM;AACnB,WAAO;AACX,QAAM,SAAS,YAAY,KAAK,OAAO,MAAM,KAAK;AAClD,MAAI,CAAC,OAAO,OAAO;AACf,UAAM,IAAI,MAAM,wCAA6C,KAAK,UAAU,OAAO,cAAc,CAAC,EAAE;AAAA,EACxG;AACA,SAAO,QAAQ,OAAO;AACtB,SAAO;AACX;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,QAAQ,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACvB,cAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,YAAQ,QAAQ,CAAC;AACjB,UAAM,QAAQ,CAAC;AACf,UAAM,aAAa,iBAAiB,OAAO,OAAO;AAClD,UAAM,cAAc,iBAAiB,OAAO,QAAQ;AACpD,QAAI,CAAC,IAAI,MAAM;AACX,UAAI,MAAM,SAAS,YAAY;AAC3B,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AACD,eAAO;AAAA,MACX;AACA,UAAI,MAAM,SAAS,MAAM,QAAQ;AAC7B,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,SAAS,MAAM;AAAA,UACf,WAAW;AAAA,UACX;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACZ,CAAC;AAAA,MACL;AAAA,IACJ;AAKA,UAAM,cAAc,IAAI,MAAM,MAAM,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,YAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,OAAO,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChE,UAAI,aAAa,SAAS;AACtB,cAAM,KAAK,EAAE,KAAK,CAAC,OAAO;AACtB,sBAAY,CAAC,IAAI;AAAA,QACrB,CAAC,CAAC;AAAA,MACN,OACK;AACD,oBAAY,CAAC,IAAI;AAAA,MACrB;AAAA,IACJ;AACA,QAAI,IAAI,MAAM;AACV,UAAI,IAAI,MAAM,SAAS;AACvB,YAAM,OAAO,MAAM,MAAM,MAAM,MAAM;AACrC,iBAAW,MAAM,MAAM;AACnB;AACA,cAAM,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,OAAO,IAAI,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC/D,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,KAAK,OAAO,KAAK,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC;AAAA,QACnE,OACK;AACD,4BAAkB,QAAQ,SAAS,CAAC;AAAA,QACxC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW,CAAC;AAAA,IAC5G;AACA,WAAO,mBAAmB,aAAa,SAAS,OAAO,OAAO,WAAW;AAAA,EAC7E;AACJ,CAAC;AACD,SAAS,iBAAiB,OAAO,KAAK;AAClC,WAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,QAAI,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM;AACvB,aAAO,IAAI;AAAA,EACnB;AACA,SAAO;AACX;AACA,SAAS,kBAAkB,QAAQ,OAAO,OAAO;AAC7C,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAQ,aAAa,OAAO,OAAO,MAAM,CAAC;AAAA,EAChE;AACA,QAAM,MAAM,KAAK,IAAI,OAAO;AAChC;AACA,SAAS,mBAAmB,aAAa,OAAO,OAAO,OAAO,aAAa;AAIvE,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,UAAM,IAAI,YAAY,CAAC;AACvB,UAAM,YAAY,IAAI,MAAM;AAC5B,QAAI,EAAE,OAAO,QAAQ;AACjB,UAAI,CAAC,aAAa,KAAK,aAAa;AAChC,cAAM,MAAM,SAAS;AACrB;AAAA,MACJ;AACA,YAAM,OAAO,KAAK,GAAQ,aAAa,GAAG,EAAE,MAAM,CAAC;AAAA,IACvD;AACA,UAAM,MAAM,CAAC,IAAI,EAAE;AAAA,EACvB;AAOA,WAAS,IAAI,MAAM,MAAM,SAAS,GAAG,KAAK,MAAM,QAAQ,KAAK;AACzD,QAAI,MAAM,CAAC,EAAE,KAAK,WAAW,cAAc,MAAM,MAAM,CAAC,MAAM,QAAW;AACrE,YAAM,MAAM,SAAS;AAAA,IACzB,OACK;AACD;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,CAAM,cAAc,KAAK,GAAG;AAC5B,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,UAAM,SAAS,IAAI,QAAQ,KAAK;AAChC,QAAI,QAAQ;AACR,cAAQ,QAAQ,CAAC;AACjB,YAAM,aAAa,oBAAI,IAAI;AAC3B,iBAAW,OAAO,QAAQ;AACtB,YAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AAC/E,qBAAW,IAAI,OAAO,QAAQ,WAAW,IAAI,SAAS,IAAI,GAAG;AAC7D,gBAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,cAAI,qBAAqB,SAAS;AAC9B,kBAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AACA,cAAI,UAAU,OAAO,QAAQ;AACzB,oBAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AACD;AAAA,UACJ;AACA,gBAAM,SAAS,UAAU;AACzB,gBAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,cAAI,kBAAkB,SAAS;AAC3B,kBAAM,KAAK,OAAO,KAAK,CAACX,YAAW;AAC/B,kBAAIA,QAAO,OAAO,QAAQ;AACtB,wBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAKA,QAAO,MAAM,CAAC;AAAA,cAChE;AACA,sBAAQ,MAAM,MAAM,IAAIA,QAAO;AAAA,YACnC,CAAC,CAAC;AAAA,UACN,OACK;AACD,gBAAI,OAAO,OAAO,QAAQ;AACtB,sBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,YAChE;AACA,oBAAQ,MAAM,MAAM,IAAI,OAAO;AAAA,UACnC;AAAA,QACJ;AAAA,MACJ;AACA,UAAI;AACJ,iBAAW,OAAO,OAAO;AACrB,YAAI,CAAC,WAAW,IAAI,GAAG,GAAG;AACtB,yBAAe,gBAAgB,CAAC;AAChC,uBAAa,KAAK,GAAG;AAAA,QACzB;AAAA,MACJ;AACA,UAAI,gBAAgB,aAAa,SAAS,GAAG;AACzC,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA,MAAM;AAAA,QACV,CAAC;AAAA,MACL;AAAA,IACJ,OACK;AACD,cAAQ,QAAQ,CAAC;AAEjB,iBAAW,OAAO,QAAQ,QAAQ,KAAK,GAAG;AACtC,YAAI,QAAQ;AACR;AACJ,YAAI,CAAC,OAAO,UAAU,qBAAqB,KAAK,OAAO,GAAG;AACtD;AACJ,YAAI,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACpE,YAAI,qBAAqB,SAAS;AAC9B,gBAAM,IAAI,MAAM,sDAAsD;AAAA,QAC1E;AAGA,cAAM,kBAAkB,OAAO,QAAQ,YAAoB,OAAO,KAAK,GAAG,KAAK,UAAU,OAAO;AAChG,YAAI,iBAAiB;AACjB,gBAAM,cAAc,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,OAAO,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAChF,cAAI,uBAAuB,SAAS;AAChC,kBAAM,IAAI,MAAM,sDAAsD;AAAA,UAC1E;AACA,cAAI,YAAY,OAAO,WAAW,GAAG;AACjC,wBAAY;AAAA,UAChB;AAAA,QACJ;AACA,YAAI,UAAU,OAAO,QAAQ;AACzB,cAAI,IAAI,SAAS,SAAS;AAEtB,oBAAQ,MAAM,GAAG,IAAI,MAAM,GAAG;AAAA,UAClC,OACK;AAED,oBAAQ,OAAO,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,QAAQ;AAAA,cACR,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,cACjF,OAAO;AAAA,cACP,MAAM,CAAC,GAAG;AAAA,cACV;AAAA,YACJ,CAAC;AAAA,UACL;AACA;AAAA,QACJ;AACA,cAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,YAAI,kBAAkB,SAAS;AAC3B,gBAAM,KAAK,OAAO,KAAK,CAACA,YAAW;AAC/B,gBAAIA,QAAO,OAAO,QAAQ;AACtB,sBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAKA,QAAO,MAAM,CAAC;AAAA,YAChE;AACA,oBAAQ,MAAM,UAAU,KAAK,IAAIA,QAAO;AAAA,UAC5C,CAAC,CAAC;AAAA,QACN,OACK;AACD,cAAI,OAAO,OAAO,QAAQ;AACtB,oBAAQ,OAAO,KAAK,GAAQ,aAAa,KAAK,OAAO,MAAM,CAAC;AAAA,UAChE;AACA,kBAAQ,MAAM,UAAU,KAAK,IAAI,OAAO;AAAA,QAC5C;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,MAAM,QAAQ;AACd,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,EAAE,iBAAiB,MAAM;AACzB,cAAQ,OAAO,KAAK;AAAA,QAChB,UAAU;AAAA,QACV,MAAM;AAAA,QACN;AAAA,QACA;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,YAAQ,QAAQ,oBAAI,IAAI;AACxB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO;AAC9B,YAAM,YAAY,IAAI,QAAQ,KAAK,IAAI,EAAE,OAAO,KAAK,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,YAAM,cAAc,IAAI,UAAU,KAAK,IAAI,EAAE,OAAc,QAAQ,CAAC,EAAE,GAAG,GAAG;AAC5E,UAAI,qBAAqB,WAAW,uBAAuB,SAAS;AAChE,cAAM,KAAK,QAAQ,IAAI,CAAC,WAAW,WAAW,CAAC,EAAE,KAAK,CAAC,CAACY,YAAWC,YAAW,MAAM;AAChF,0BAAgBD,YAAWC,cAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,QAC1E,CAAC,CAAC;AAAA,MACN,OACK;AACD,wBAAgB,WAAW,aAAa,SAAS,KAAK,OAAO,MAAM,GAAG;AAAA,MAC1E;AAAA,IACJ;AACA,QAAI,MAAM;AACN,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAChD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,gBAAgB,WAAW,aAAa,OAAO,KAAK,OAAO,MAAM,KAAK;AAC3E,MAAI,UAAU,OAAO,QAAQ;AACzB,QAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AACvC,YAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,UAAU,MAAM,CAAC;AAAA,IACjE,OACK;AACD,YAAM,OAAO,KAAK;AAAA,QACd,MAAM;AAAA,QACN,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,UAAU,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACrF,CAAC;AAAA,IACL;AAAA,EACJ;AACA,MAAI,YAAY,OAAO,QAAQ;AAC3B,QAAS,iBAAiB,IAAI,OAAO,GAAG,GAAG;AACvC,YAAM,OAAO,KAAK,GAAQ,aAAa,KAAK,YAAY,MAAM,CAAC;AAAA,IACnE,OACK;AACD,YAAM,OAAO,KAAK;AAAA,QACd,QAAQ;AAAA,QACR,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ,YAAY,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,MACvF,CAAC;AAAA,IACL;AAAA,EACJ;AACA,QAAM,MAAM,IAAI,UAAU,OAAO,YAAY,KAAK;AACtD;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,QAAQ;AACtB,QAAI,EAAE,iBAAiB,MAAM;AACzB,cAAQ,OAAO,KAAK;AAAA,QAChB;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,UAAM,QAAQ,CAAC;AACf,YAAQ,QAAQ,oBAAI,IAAI;AACxB,eAAW,QAAQ,OAAO;AACtB,YAAM,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,MAAM,QAAQ,CAAC,EAAE,GAAG,GAAG;AACtE,UAAI,kBAAkB,SAAS;AAC3B,cAAM,KAAK,OAAO,KAAK,CAACb,YAAW,gBAAgBA,SAAQ,OAAO,CAAC,CAAC;AAAA,MACxE;AAEI,wBAAgB,QAAQ,OAAO;AAAA,IACvC;AACA,QAAI,MAAM;AACN,aAAO,QAAQ,IAAI,KAAK,EAAE,KAAK,MAAM,OAAO;AAChD,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,gBAAgB,QAAQ,OAAO;AACpC,MAAI,OAAO,OAAO,QAAQ;AACtB,UAAM,OAAO,KAAK,GAAG,OAAO,MAAM;AAAA,EACtC;AACA,QAAM,MAAM,IAAI,OAAO,KAAK;AAChC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,SAAc,cAAc,IAAI,OAAO;AAC7C,QAAM,YAAY,IAAI,IAAI,MAAM;AAChC,OAAK,KAAK,SAAS;AACnB,OAAK,KAAK,UAAU,IAAI,OAAO,KAAK,OAC/B,OAAO,CAAC,MAAW,iBAAiB,IAAI,OAAO,CAAC,CAAC,EACjD,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,CAAE,EACvE,KAAK,GAAG,CAAC,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,UAAU,IAAI,KAAK,GAAG;AACtB,aAAO;AAAA,IACX;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,MAAI,IAAI,OAAO,WAAW,GAAG;AACzB,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AACA,QAAM,SAAS,IAAI,IAAI,IAAI,MAAM;AACjC,OAAK,KAAK,SAAS;AACnB,OAAK,KAAK,UAAU,IAAI,OAAO,KAAK,IAAI,OACnC,IAAI,CAAC,MAAO,OAAO,MAAM,WAAgB,YAAY,CAAC,IAAI,IAAS,YAAY,EAAE,SAAS,CAAC,IAAI,OAAO,CAAC,CAAE,EACzG,KAAK,GAAG,CAAC,IAAI;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AACtB,QAAI,OAAO,IAAI,KAAK,GAAG;AACnB,aAAO;AAAA,IACX;AACA,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,UAAM,QAAQ,QAAQ;AAEtB,QAAI,iBAAiB;AACjB,aAAO;AACX,YAAQ,OAAO,KAAK;AAAA,MAChB,UAAU;AAAA,MACV,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACJ,CAAC;AACD,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AACA,UAAM,OAAO,IAAI,UAAU,QAAQ,OAAO,OAAO;AACjD,QAAI,IAAI,OAAO;AACX,YAAM,SAAS,gBAAgB,UAAU,OAAO,QAAQ,QAAQ,IAAI;AACpE,aAAO,OAAO,KAAK,CAACc,YAAW;AAC3B,gBAAQ,QAAQA;AAChB,gBAAQ,WAAW;AACnB,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,QAAI,gBAAgB,SAAS;AACzB,YAAM,IAAS,eAAe;AAAA,IAClC;AACA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,WAAO;AAAA,EACX;AACJ,CAAC;AACD,SAAS,qBAAqB,QAAQ,OAAO;AACzC,MAAI,UAAU,WAAc,OAAO,OAAO,UAAU,OAAO,WAAW;AAClE,WAAO,EAAE,QAAQ,CAAC,GAAG,OAAO,OAAU;AAAA,EAC1C;AACA,SAAO;AACX;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,OAAK,KAAK,SAAS;AACnB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,WAAO,IAAI,UAAU,KAAK,SAAS,oBAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,MAAS,CAAC,IAAI;AAAA,EAC5F,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,UAAM,UAAU,IAAI,UAAU,KAAK;AACnC,WAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,CAAC,KAAK,IAAI;AAAA,EAC7E,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,UAAU,KAAK,UAAU,YAAY;AACzC,YAAM,QAAQ,QAAQ;AACtB,YAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,UAAI,kBAAkB;AAClB,eAAO,OAAO,KAAK,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC5D,aAAO,qBAAqB,QAAQ,KAAK;AAAA,IAC7C;AACA,QAAI,QAAQ,UAAU,QAAW;AAC7B,aAAO;AAAA,IACX;AACA,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,oBAAkC,gBAAK,aAAa,qBAAqB,CAAC,MAAM,QAAQ;AAEjG,eAAa,KAAK,MAAM,GAAG;AAE3B,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM,IAAI,UAAU,KAAK,OAAO;AAEtE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,UAAU,KAAK,KAAK;AAClE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM;AACxC,UAAM,UAAU,IAAI,UAAU,KAAK;AACnC,WAAO,UAAU,IAAI,OAAO,KAAU,WAAW,QAAQ,MAAM,CAAC,SAAS,IAAI;AAAA,EACjF,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,WAAO,IAAI,UAAU,KAAK,SAAS,oBAAI,IAAI,CAAC,GAAG,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI;AAAA,EACvF,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAEhC,QAAI,QAAQ,UAAU;AAClB,aAAO;AACX,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AAEvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,QAAI,QAAQ,UAAU,QAAW;AAC7B,cAAQ,QAAQ,IAAI;AAIpB,aAAO;AAAA,IACX;AAEA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACd,YAAW,oBAAoBA,SAAQ,GAAG,CAAC;AAAA,IACnE;AACA,WAAO,oBAAoB,QAAQ,GAAG;AAAA,EAC1C;AACJ,CAAC;AACD,SAAS,oBAAoB,SAAS,KAAK;AACvC,MAAI,QAAQ,UAAU,QAAW;AAC7B,YAAQ,QAAQ,IAAI;AAAA,EACxB;AACA,SAAO;AACX;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,QAAI,QAAQ,UAAU,QAAW;AAC7B,cAAQ,QAAQ,IAAI;AAAA,IACxB;AACA,WAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,EAC9C;AACJ,CAAC;AACM,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM;AACvC,UAAM,IAAI,IAAI,UAAU,KAAK;AAC7B,WAAO,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,CAAC,IAAI;AAAA,EAChE,CAAC;AACD,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW,wBAAwBA,SAAQ,IAAI,CAAC;AAAA,IACxE;AACA,WAAO,wBAAwB,QAAQ,IAAI;AAAA,EAC/C;AACJ,CAAC;AACD,SAAS,wBAAwB,SAAS,MAAM;AAC5C,MAAI,CAAC,QAAQ,OAAO,UAAU,QAAQ,UAAU,QAAW;AACvD,YAAQ,OAAO,KAAK;AAAA,MAChB,MAAM;AAAA,MACN,UAAU;AAAA,MACV,OAAO,QAAQ;AAAA,MACf;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,IAAS,gBAAgB,YAAY;AAAA,IAC/C;AACA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW;AAC3B,gBAAQ,QAAQA,QAAO,OAAO,WAAW;AACzC,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ,OAAO,OAAO,WAAW;AACzC,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ;AAClB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AAEA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACA,YAAW;AAC3B,gBAAQ,QAAQA,QAAO;AACvB,YAAIA,QAAO,OAAO,QAAQ;AACtB,kBAAQ,QAAQ,IAAI,WAAW;AAAA,YAC3B,GAAG;AAAA,YACH,OAAO;AAAA,cACH,QAAQA,QAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,YAClF;AAAA,YACA,OAAO,QAAQ;AAAA,UACnB,CAAC;AACD,kBAAQ,SAAS,CAAC;AAClB,kBAAQ,WAAW;AAAA,QACvB;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ,OAAO;AACvB,QAAI,OAAO,OAAO,QAAQ;AACtB,cAAQ,QAAQ,IAAI,WAAW;AAAA,QAC3B,GAAG;AAAA,QACH,OAAO;AAAA,UACH,QAAQ,OAAO,OAAO,IAAI,CAAC,QAAa,cAAc,KAAK,KAAU,OAAO,CAAC,CAAC;AAAA,QAClF;AAAA,QACA,OAAO,QAAQ;AAAA,MACnB,CAAC;AACD,cAAQ,SAAS,CAAC;AAClB,cAAQ,WAAW;AAAA,IACvB;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,YAAY,CAAC,OAAO,MAAM,QAAQ,KAAK,GAAG;AACnE,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAC7D,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAC3D,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAC9D,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AACrE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,YAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAC3C,UAAI,iBAAiB,SAAS;AAC1B,eAAO,MAAM,KAAK,CAACW,WAAU,iBAAiBA,QAAO,IAAI,IAAI,GAAG,CAAC;AAAA,MACrE;AACA,aAAO,iBAAiB,OAAO,IAAI,IAAI,GAAG;AAAA,IAC9C;AACA,UAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AACzC,QAAI,gBAAgB,SAAS;AACzB,aAAO,KAAK,KAAK,CAACD,UAAS,iBAAiBA,OAAM,IAAI,KAAK,GAAG,CAAC;AAAA,IACnE;AACA,WAAO,iBAAiB,MAAM,IAAI,KAAK,GAAG;AAAA,EAC9C;AACJ,CAAC;AACD,SAAS,iBAAiB,MAAM,MAAM,KAAK;AACvC,MAAI,KAAK,OAAO,QAAQ;AAEpB,SAAK,UAAU;AACf,WAAO;AAAA,EACX;AACA,SAAO,KAAK,KAAK,IAAI,EAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,UAAU,KAAK,SAAS,GAAG,GAAG;AACjG;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,GAAG,KAAK,MAAM;AAC7D,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,GAAG,KAAK,KAAK;AAC3D,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,IAAI,KAAK,MAAM;AAC9D,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,GAAG,KAAK,UAAU;AACrE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,YAAY,IAAI,aAAa;AACnC,QAAI,cAAc,WAAW;AACzB,YAAM,OAAO,IAAI,GAAG,KAAK,IAAI,SAAS,GAAG;AACzC,UAAI,gBAAgB,SAAS;AACzB,eAAO,KAAK,KAAK,CAACA,UAAS,mBAAmBA,OAAM,KAAK,GAAG,CAAC;AAAA,MACjE;AACA,aAAO,mBAAmB,MAAM,KAAK,GAAG;AAAA,IAC5C,OACK;AACD,YAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,SAAS,GAAG;AAC3C,UAAI,iBAAiB,SAAS;AAC1B,eAAO,MAAM,KAAK,CAACC,WAAU,mBAAmBA,QAAO,KAAK,GAAG,CAAC;AAAA,MACpE;AACA,aAAO,mBAAmB,OAAO,KAAK,GAAG;AAAA,IAC7C;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,mBAAmB,QAAQ,KAAK,KAAK;AAC1C,MAAI,OAAO,OAAO,QAAQ;AAEtB,WAAO,UAAU;AACjB,WAAO;AAAA,EACX;AACA,QAAM,YAAY,IAAI,aAAa;AACnC,MAAI,cAAc,WAAW;AACzB,UAAM,cAAc,IAAI,UAAU,OAAO,OAAO,MAAM;AACtD,QAAI,uBAAuB,SAAS;AAChC,aAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,KAAK,GAAG,CAAC;AAAA,IACvF;AACA,WAAO,oBAAoB,QAAQ,aAAa,IAAI,KAAK,GAAG;AAAA,EAChE,OACK;AACD,UAAM,cAAc,IAAI,iBAAiB,OAAO,OAAO,MAAM;AAC7D,QAAI,uBAAuB,SAAS;AAChC,aAAO,YAAY,KAAK,CAAC,UAAU,oBAAoB,QAAQ,OAAO,IAAI,IAAI,GAAG,CAAC;AAAA,IACtF;AACA,WAAO,oBAAoB,QAAQ,aAAa,IAAI,IAAI,GAAG;AAAA,EAC/D;AACJ;AACA,SAAS,oBAAoB,MAAM,OAAO,YAAY,KAAK;AAEvD,MAAI,KAAK,OAAO,QAAQ;AACpB,SAAK,UAAU;AACf,WAAO;AAAA,EACX;AACA,SAAO,WAAW,KAAK,IAAI,EAAE,OAAO,QAAQ,KAAK,OAAO,GAAG,GAAG;AAClE;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,WAAS,KAAK,MAAM,GAAG;AAC3B,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,IAAI,UAAU,KAAK,UAAU;AAC5E,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,UAAU,KAAK,MAAM;AACpE,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,IAAI,WAAW,MAAM,KAAK;AACpE,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,IAAI,WAAW,MAAM,MAAM;AACtE,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,QAAI,IAAI,cAAc,YAAY;AAC9B,aAAO,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAAA,IAC9C;AACA,UAAM,SAAS,IAAI,UAAU,KAAK,IAAI,SAAS,GAAG;AAClD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,oBAAoB;AAAA,IAC3C;AACA,WAAO,qBAAqB,MAAM;AAAA,EACtC;AACJ,CAAC;AACD,SAAS,qBAAqB,SAAS;AACnC,UAAQ,QAAQ,OAAO,OAAO,QAAQ,KAAK;AAC3C,SAAO;AACX;AACO,IAAM,sBAAoC,gBAAK,aAAa,uBAAuB,CAAC,MAAM,QAAQ;AACrG,WAAS,KAAK,MAAM,GAAG;AACvB,QAAM,aAAa,CAAC;AACpB,aAAW,QAAQ,IAAI,OAAO;AAC1B,QAAI,OAAO,SAAS,YAAY,SAAS,MAAM;AAE3C,UAAI,CAAC,KAAK,KAAK,SAAS;AAEpB,cAAM,IAAI,MAAM,oDAAoD,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,MAAM,CAAC,EAAE;AAAA,MACvG;AACA,YAAM,SAAS,KAAK,KAAK,mBAAmB,SAAS,KAAK,KAAK,QAAQ,SAAS,KAAK,KAAK;AAC1F,UAAI,CAAC;AACD,cAAM,IAAI,MAAM,kCAAkC,KAAK,KAAK,MAAM,EAAE;AACxE,YAAM,QAAQ,OAAO,WAAW,GAAG,IAAI,IAAI;AAC3C,YAAM,MAAM,OAAO,SAAS,GAAG,IAAI,OAAO,SAAS,IAAI,OAAO;AAC9D,iBAAW,KAAK,OAAO,MAAM,OAAO,GAAG,CAAC;AAAA,IAC5C,WACS,SAAS,QAAa,eAAe,IAAI,OAAO,IAAI,GAAG;AAC5D,iBAAW,KAAU,YAAY,GAAG,IAAI,EAAE,CAAC;AAAA,IAC/C,OACK;AACD,YAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,IAC5D;AAAA,EACJ;AACA,OAAK,KAAK,UAAU,IAAI,OAAO,IAAI,WAAW,KAAK,EAAE,CAAC,GAAG;AACzD,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,UAAU;AACnC,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,MACV,CAAC;AACD,aAAO;AAAA,IACX;AACA,SAAK,KAAK,QAAQ,YAAY;AAC9B,QAAI,CAAC,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,GAAG;AACxC,cAAQ,OAAO,KAAK;AAAA,QAChB,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM;AAAA,QACN,QAAQ,IAAI,UAAU;AAAA,QACtB,SAAS,KAAK,KAAK,QAAQ;AAAA,MAC/B,CAAC;AACD,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AACJ,CAAC;AACM,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,OAAO;AACZ,OAAK,KAAK,MAAM;AAChB,OAAK,YAAY,CAAC,SAAS;AACvB,QAAI,OAAO,SAAS,YAAY;AAC5B,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAChE;AACA,WAAO,YAAa,MAAM;AACtB,YAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,OAAO,IAAI,IAAI;AACpE,YAAM,SAAS,QAAQ,MAAM,MAAM,MAAM,UAAU;AACnD,UAAI,KAAK,KAAK,QAAQ;AAClB,eAAO,MAAM,KAAK,KAAK,QAAQ,MAAM;AAAA,MACzC;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,OAAK,iBAAiB,CAAC,SAAS;AAC5B,QAAI,OAAO,SAAS,YAAY;AAC5B,YAAM,IAAI,MAAM,iDAAiD;AAAA,IACrE;AACA,WAAO,kBAAmB,MAAM;AAC5B,YAAM,aAAa,KAAK,KAAK,QAAQ,MAAM,WAAW,KAAK,KAAK,OAAO,IAAI,IAAI;AAC/E,YAAM,SAAS,MAAM,QAAQ,MAAM,MAAM,MAAM,UAAU;AACzD,UAAI,KAAK,KAAK,QAAQ;AAClB,eAAO,MAAM,WAAW,KAAK,KAAK,QAAQ,MAAM;AAAA,MACpD;AACA,aAAO;AAAA,IACX;AAAA,EACJ;AACA,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,OAAO,QAAQ,UAAU,YAAY;AACrC,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO,QAAQ;AAAA,QACf;AAAA,MACJ,CAAC;AACD,aAAO;AAAA,IACX;AAEA,UAAM,mBAAmB,KAAK,KAAK,UAAU,KAAK,KAAK,OAAO,KAAK,IAAI,SAAS;AAChF,QAAI,kBAAkB;AAClB,cAAQ,QAAQ,KAAK,eAAe,QAAQ,KAAK;AAAA,IACrD,OACK;AACD,cAAQ,QAAQ,KAAK,UAAU,QAAQ,KAAK;AAAA,IAChD;AACA,WAAO;AAAA,EACX;AACA,OAAK,QAAQ,IAAI,SAAS;AACtB,UAAM,IAAI,KAAK;AACf,QAAI,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AACxB,aAAO,IAAI,EAAE;AAAA,QACT,MAAM;AAAA,QACN,OAAO,IAAI,UAAU;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,KAAK,CAAC;AAAA,UACb,MAAM,KAAK,CAAC;AAAA,QAChB,CAAC;AAAA,QACD,QAAQ,KAAK,KAAK;AAAA,MACtB,CAAC;AAAA,IACL;AACA,WAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK,CAAC;AAAA,MACb,QAAQ,KAAK,KAAK;AAAA,IACtB,CAAC;AAAA,EACL;AACA,OAAK,SAAS,CAAC,WAAW;AACtB,UAAM,IAAI,KAAK;AACf,WAAO,IAAI,EAAE;AAAA,MACT,MAAM;AAAA,MACN,OAAO,KAAK,KAAK;AAAA,MACjB;AAAA,IACJ,CAAC;AAAA,EACL;AACA,SAAO;AACX,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,WAAO,QAAQ,QAAQ,QAAQ,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,OAAO,QAAQ,CAAC,EAAE,GAAG,GAAG,CAAC;AAAA,EACnH;AACJ,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,WAAS,KAAK,MAAM,GAAG;AAIvB,EAAK,WAAW,KAAK,MAAM,aAAa,MAAM;AAC1C,UAAM,IAAI;AACV,QAAI,CAAC,EAAE;AACH,QAAE,eAAe,IAAI,OAAO;AAChC,WAAO,EAAE;AAAA,EACb,CAAC;AACD,EAAK,WAAW,KAAK,MAAM,WAAW,MAAM,KAAK,KAAK,WAAW,MAAM,OAAO;AAC9E,EAAK,WAAW,KAAK,MAAM,cAAc,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU;AACpF,EAAK,WAAW,KAAK,MAAM,SAAS,MAAM,KAAK,KAAK,WAAW,MAAM,SAAS,MAAS;AACvF,EAAK,WAAW,KAAK,MAAM,UAAU,MAAM,KAAK,KAAK,WAAW,MAAM,UAAU,MAAS;AACzF,OAAK,KAAK,QAAQ,CAAC,SAAS,QAAQ;AAChC,UAAM,QAAQ,KAAK,KAAK;AACxB,WAAO,MAAM,KAAK,IAAI,SAAS,GAAG;AAAA,EACtC;AACJ,CAAC;AACM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAO,UAAU,KAAK,MAAM,GAAG;AAC/B,WAAS,KAAK,MAAM,GAAG;AACvB,OAAK,KAAK,QAAQ,CAAC,SAAS,MAAM;AAC9B,WAAO;AAAA,EACX;AACA,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,IAAI,GAAG,KAAK;AACtB,QAAI,aAAa,SAAS;AACtB,aAAO,EAAE,KAAK,CAACN,OAAM,mBAAmBA,IAAG,SAAS,OAAO,IAAI,CAAC;AAAA,IACpE;AACA,uBAAmB,GAAG,SAAS,OAAO,IAAI;AAC1C;AAAA,EACJ;AACJ,CAAC;AACD,SAAS,mBAAmB,QAAQ,SAAS,OAAO,MAAM;AACtD,MAAI,CAAC,QAAQ;AACT,UAAM,OAAO;AAAA,MACT,MAAM;AAAA,MACN;AAAA,MACA;AAAA;AAAA,MACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA;AAAA,MACpC,UAAU,CAAC,KAAK,KAAK,IAAI;AAAA;AAAA,IAE7B;AACA,QAAI,KAAK,KAAK,IAAI;AACd,WAAK,SAAS,KAAK,KAAK,IAAI;AAChC,YAAQ,OAAO,KAAU,MAAM,IAAI,CAAC;AAAA,EACxC;AACJ;;;AC9rEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCA,IAAM,QAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,sBAAO,MAAM,wCAAU;AAAA,IACvC,MAAM,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,IACtC,OAAO,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,IACvC,KAAK,EAAE,MAAM,4BAAQ,MAAM,wCAAU;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACU,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0KAA6CA,OAAM,QAAQ,+EAAmB,QAAQ;AAAA,QACjG;AACA,eAAO,+JAAkC,QAAQ,+EAAmB,QAAQ;AAAA,MAChF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,+JAAuC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACrF,eAAO,uPAAyD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,qJAAkCA,OAAM,UAAU,sCAAQ,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AACjI,eAAO,oJAAiCA,OAAM,UAAU,sCAAQ,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2HAA4BA,OAAM,MAAM,0CAAY,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC7G;AACA,eAAO,2HAA4BA,OAAM,MAAM,0CAAY,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gJAAkCA,OAAM,MAAM;AACzD,YAAI,OAAO,WAAW;AAClB,iBAAO,sJAAmC,OAAO,MAAM;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,qJAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uKAAqC,OAAO,OAAO;AAC9D,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,0LAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,iBAAO,EAAE,4BAAQA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,SAAI,CAAC;AAAA,MACjI,KAAK;AACD,eAAO,2FAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2FAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAa,MAAM;AAAA,EACvB;AACJ;;;ACxGA,IAAMC,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,sBAAY;AAAA,IAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IACxC,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAY;AAAA,IAC5C,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAY;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wEAAuCA,OAAM,QAAQ,gBAAgB,QAAQ;AAAA,QACxF;AACA,eAAO,6DAA4B,QAAQ,gBAAgB,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6DAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,4FAAsD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+CAAyBA,OAAM,UAAU,iBAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,SAAS;AACzH,eAAO,+CAAyBA,OAAM,UAAU,iBAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4CAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACjG,eAAO,4CAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAAiB,OAAO,QAAQ;AAC3C,YAAI,OAAO,WAAW;AAClB,iBAAO,+BAAgB,OAAO,OAAO;AACzC,eAAO,oBAAU,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACpE;AAAA,MACA,KAAK;AACD,eAAO,oCAAgBA,OAAM,OAAO;AAAA,MACxC,KAAK;AACD,eAAO,0BAAkBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACvGA,SAAS,oBAAoB,OAAO,KAAK,KAAK,MAAM;AAChD,QAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,QAAM,YAAY,WAAW;AAC7B,QAAM,gBAAgB,WAAW;AACjC,MAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAC5C,WAAO;AAAA,EACX;AACA,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACX;AACA,MAAI,aAAa,KAAK,aAAa,GAAG;AAClC,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sJAAwCA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACvF;AACA,eAAO,2IAA6B,QAAQ,sDAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iJAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,mMAA6C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACrF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC7F,iBAAO,yJAAiCA,OAAM,UAAU,kDAAU,+CAAY,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvI;AACA,eAAO,yJAAiCA,OAAM,UAAU,kDAAU,wEAAiB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,oBAAoB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC7F,iBAAO,6IAA+BA,OAAM,MAAM,+CAAY,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvH;AACA,eAAO,6IAA+BA,OAAM,MAAM,wEAAiB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,gNAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,kOAA8C,OAAO,MAAM;AACtE,YAAI,OAAO,WAAW;AAClB,iBAAO,mMAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,yPAAiD,OAAO,OAAO;AAC1E,eAAO,sEAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,yMAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,4EAAgBA,OAAM,KAAK,SAAS,IAAI,mCAAU,0BAAM,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzG,KAAK;AACD,eAAO,sGAAsBA,OAAM,MAAM;AAAA,MAC7C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oIAA2BA,OAAM,MAAM;AAAA,MAClD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC1JA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,0DAAa;AAAA,IAC9C,MAAM,EAAE,MAAM,kCAAS,MAAM,0DAAa;AAAA,IAC1C,OAAO,EAAE,MAAM,oDAAY,MAAM,0DAAa;AAAA,IAC9C,KAAK,EAAE,MAAM,oDAAY,MAAM,0DAAa;AAAA,EAChD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0IAAsCA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QACpF;AACA,eAAO,+HAA2B,QAAQ,gDAAa,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,+HAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,iLAA0C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gIAA4BA,OAAM,UAAU,kDAAU,4DAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AAC3I,eAAO,gIAA4BA,OAAM,UAAU,kDAAU,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0HAA2BA,OAAM,MAAM,4DAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC9G;AACA,eAAO,0HAA2BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,mLAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,yLAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4KAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,kLAAsC,OAAO,OAAO;AAC/D,YAAI,cAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,YAAI,OAAO,WAAW;AAClB,wBAAc;AAClB,eAAO,GAAG,WAAW,IAAI,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,eAAO,uNAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,qEAAcA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,4BAAQA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,0FAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kHAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACtHA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAa,MAAM,WAAW;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2CAAwCA,OAAM,QAAQ,gBAAgB,QAAQ;AAAA,QACzF;AACA,eAAO,gCAA6B,QAAQ,gBAAgB,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,2CAA0C,WAAWA,OAAM,QAAQ,KAAK,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,mBAAgB;AAC9C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA8BA,OAAM,UAAU,UAAU,kBAAe,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC9I,eAAO,8BAA8BA,OAAM,UAAU,UAAU,QAAQ,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,mBAAgB;AAC9C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+BAA+BA,OAAM,MAAM,kBAAe,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACnH;AACA,eAAO,+BAA+BA,OAAM,MAAM,QAAQ,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,6CAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,uCAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,sDAAgD,OAAO,OAAO;AACzE,eAAO,2BAAwB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClF;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,OAAOA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,iBAAiBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA;AAAA,MACX,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACrC,MAAM,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACnC,OAAO,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,IACpC,KAAK,EAAE,MAAM,cAAS,MAAM,SAAM;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sDAAwCA,OAAM,QAAQ,mBAAc,QAAQ;AAAA,QACvF;AACA,eAAO,2CAA6B,QAAQ,mBAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2CAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,iEAAmD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC3F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4CAA4BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAO;AAAA,QACrI;AACA,eAAO,4CAA4BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2CAA2BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAO;AAAA,QACpI;AACA,eAAO,2CAA2BA,OAAM,UAAU,SAAS,mBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8DAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,0DAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAA0C,OAAO,OAAO;AACnE,eAAO,yBAAmB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,eAAO,yDAAqCA,OAAM,OAAO;AAAA,MAC7D,KAAK;AACD,eAAO,gCAAuB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9D,KAAK;AACD,eAAO,8BAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC7GA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACtC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,IAC9C,KAAK,EAAE,MAAM,aAAa,MAAM,YAAY;AAAA,EAChD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAyCA,OAAM,QAAQ,SAAS,QAAQ;AAAA,QACnF;AACA,eAAO,8BAA8B,QAAQ,SAAS,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,+CAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,wBAAwB,UAAU,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACpI,eAAO,wBAAwB,UAAU,OAAO,UAAU,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,yBAAyB,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,yBAAyB,MAAM,UAAU,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,kCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAyC,OAAO,OAAO;AAClE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,2CAAwCA,OAAM,OAAO;AAAA,MAChE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,iBAAc,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7G,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;ACjHA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,WAAW;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,WAAW;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,EAC9C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6CAA0CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACzF;AACA,eAAO,kCAA+B,QAAQ,cAAc,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kCAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,0CAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA2BA,OAAM,UAAU,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC3H,eAAO,8BAA2BA,OAAM,UAAU,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4BAA4BA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACpG;AACA,eAAO,4BAA4BA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,+BAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,OAAO;AAC/D,eAAO,gBAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,8CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,4BAAyB,0BAAuB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5H,KAAK;AACD,eAAO,iCAA2BA,OAAM,MAAM;AAAA,MAClD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,SAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gEAAc,MAAM,wCAAU;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,wCAAU;AAAA,IACvC,OAAO,EAAE,MAAM,oDAAY,MAAM,wCAAU;AAAA,IAC3C,KAAK,EAAE,MAAM,oDAAY,MAAM,wCAAU;AAAA,IACzC,KAAK,EAAE,MAAM,4EAAgB,MAAM,wCAAU;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,OAAOA,OAAM,aAAa,YAAY,SAAS,KAAKA,OAAM,QAAQ,GAAG;AACrE,iBAAO,yKAA4CA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QAC1F;AACA,eAAO,8JAAiC,QAAQ,gDAAa,QAAQ;AAAA,MACzE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8JAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,oMAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+HAA2BA,OAAM,UAAU,0BAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AACnI,eAAO,+HAA2BA,OAAM,UAAU,0BAAM,gDAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yHAA0BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC1G;AACA,eAAO,yHAA0BA,OAAM,MAAM,gDAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oOAAgD,OAAO,MAAM;AAAA,QACxE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,sPAAmD,OAAO,MAAM;AAC3E,YAAI,OAAO,WAAW;AAClB,iBAAO,mOAA+C,OAAO,QAAQ;AACzE,YAAI,OAAO,WAAW;AAClB,iBAAO,uSAA4D,OAAO,OAAO;AACrF,eAAO,sDAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,8QAAuDA,OAAM,OAAO;AAAA,MAC/E,KAAK;AACD,eAAO,uCAASA,OAAM,KAAK,SAAS,IAAI,WAAM,QAAG,kCAASA,OAAM,KAAK,SAAS,IAAI,iBAAO,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtI,KAAK;AACD,eAAO,6GAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,iGAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,OAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,UAAU;AAAA,IAC9C,MAAM,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACvC,OAAO,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACxC,KAAK,EAAE,MAAM,SAAS,MAAM,UAAU;AAAA,IACtC,KAAK,EAAE,MAAM,WAAW,MAAM,UAAU;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AAEA,QAAM,iBAAiB;AAAA;AAAA,IAEnB,KAAK;AAAA;AAAA,EAET;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,eAAO,2BAA2B,QAAQ,cAAc,QAAQ;AAAA,MACpE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2BAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,mCAAwC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,qBAAqBA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC9H,eAAO,qBAAqBA,OAAM,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uBAAuBA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvG;AACA,eAAO,uBAAuBA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oCAAoC,OAAO,MAAM;AAAA,QAC5D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,kCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,iCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAsC,OAAO,OAAO;AAC/D,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,yCAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,kBAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,YAAIA,OAAM,WAAW,MAAM,QAAQA,OAAM,OAAO,KAAKA,OAAM,QAAQ,SAAS,GAAG;AAC3E,gBAAM,OAAOA,OAAM,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK;AAC1D,iBAAO,yCAAyC,IAAI;AAAA,QACxD;AACA,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oBAAoBA,OAAM,MAAM;AAAA,MAC3C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC/GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC3C,MAAM,EAAE,MAAM,WAAW,MAAM,OAAO;AAAA,IACtC,OAAO,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,IAC1C,KAAK,EAAE,MAAM,cAAc,MAAM,OAAO;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6CAAwCA,OAAM,QAAQ,oBAAe,QAAQ;AAAA,QACxF;AACA,eAAO,kCAA6B,QAAQ,oBAAe,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,yCAAyC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,iCAA4BA,OAAM,UAAU,QAAQ,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,YAAY;AACrI,eAAO,iCAA4BA,OAAM,UAAU,QAAQ,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA+BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC5G;AACA,eAAO,oCAA+BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,kDAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,+CAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,QAAQ;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,oDAAoD,OAAO,OAAO;AAC7E,eAAO,YAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,uCAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,WAAWA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAWA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACvI,KAAK;AACD,eAAO,4BAAuBA,OAAM,MAAM;AAAA,MAC9C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sBAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAA4CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,oCAAiC,QAAQ,cAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oCAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,6CAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,qCAAqC,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACzI,eAAO,qCAAqC,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,yCAAsC,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,yCAAsC,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAuC,OAAO,MAAM;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAiD,OAAO,OAAO;AAC1E,eAAO,eAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,eAAeA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAqB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AClIA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,0DAAa;AAAA,IAC9C,MAAM,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,IACzC,OAAO,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,IAC1C,KAAK,EAAE,MAAM,4BAAQ,MAAM,0DAAa;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,0IAAsCA,OAAM,QAAQ,+CAAY,QAAQ;AAAA,QACnF;AACA,eAAO,+HAA2B,QAAQ,+CAAY,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,+HAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QAC9E;AACA,eAAO,+JAAuC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AAAA,QAChH;AACA,eAAO,sDAAcA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3F;AACA,eAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+GAA0B,OAAO,MAAM;AAAA,QAClD;AACA,YAAI,OAAO,WAAW,aAAa;AAC/B,iBAAO,+GAA0B,OAAO,MAAM;AAAA,QAClD;AACA,YAAI,OAAO,WAAW,YAAY;AAC9B,iBAAO,2HAA4B,OAAO,QAAQ;AAAA,QACtD;AACA,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,6IAA+B,OAAO,OAAO;AAAA,QACxD;AACA,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,oHAA0BA,OAAM,OAAO;AAAA,MAClD,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,0CAAiB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjG,KAAK;AACD,eAAO,8EAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,0FAAoBA,OAAM,MAAM;AAAA,MAC3C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AChHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAW,SAAS,cAAc;AAAA,IAClD,MAAM,EAAE,MAAM,SAAS,SAAS,YAAY;AAAA,IAC5C,OAAO,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC5C,KAAK,EAAE,MAAM,WAAW,SAAS,SAAS;AAAA,IAC1C,QAAQ,EAAE,MAAM,IAAI,SAAS,QAAQ;AAAA,IACrC,QAAQ,EAAE,MAAM,IAAI,SAAS,uBAAuB;AAAA,IACpD,KAAK,EAAE,MAAM,IAAI,SAAS,gBAAgB;AAAA,IAC1C,MAAM,EAAE,MAAM,IAAI,SAAS,6BAAc;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8CAA8CA,OAAM,QAAQ,SAAS,QAAQ;AAAA,QACxF;AACA,eAAO,mCAAmC,QAAQ,SAAS,QAAQ;AAAA,MACvE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,yCAAwC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACtF,eAAO,0DAA4D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gBAAgB,OAAO,OAAO,mBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,GAAG,KAAK;AAAA,QAC9G;AACA,eAAO,qCAAkC,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gBAAgB,OAAO,OAAO,mBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,GAAG,KAAK;AAAA,QAC9G;AACA,eAAO,qCAAkC,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,gFAA8D,OAAO,OAAO;AAAA,QACvF;AACA,eAAO,gBAAgB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,eAAO,2CAAwCA,OAAM,OAAO;AAAA,MAChE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,0BAA0B,kBAAkB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxH,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC9GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,aAAa;AAAA,IACb,KAAK;AAAA,IACL,UAAU;AAAA,EACd;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,mCAAgCA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QAC9E;AACA,eAAO,wBAAqB,QAAQ,aAAa,QAAQ;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wBAA0B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACxE,eAAO,sCAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,SAAS,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kBAAY;AACxJ,eAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,SAAS,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACxI,eAAO,gBAAgB,eAAeA,OAAM,MAAM,KAAK,QAAQ,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC/G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAiD,OAAO,OAAO;AAC1E,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,iDAA8CA,OAAM,OAAO;AAAA,MACtE,KAAK;AACD,eAAO,SAAMA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,MAAW,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3HA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAc,MAAM,QAAQ;AAAA,IAC5C,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,kBAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2CAAwCA,OAAM,QAAQ,aAAU,QAAQ;AAAA,QACnF;AACA,eAAO,gCAA6B,QAAQ,aAAU,QAAQ;AAAA,MAClE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gCAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,yDAA8D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,WAAM;AACpC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4BAA4BA,OAAM,UAAU,WAAW,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACvH,eAAO,4BAA4BA,OAAM,UAAU,WAAW,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,WAAM;AACpC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,4BAA4BA,OAAM,MAAM,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACxG;AACA,eAAO,4BAA4BA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,4CAAyC,OAAO,MAAM;AAAA,QACjE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAgD,OAAO,OAAO;AACzE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,iDAA8CA,OAAM,OAAO;AAAA,MACtE,KAAK;AACD,eAAO,SAAMA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,MAAW,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAEhB,QAAM,YAAY;AAAA,IACd,QAAQ,EAAE,OAAO,wCAAU,QAAQ,IAAI;AAAA,IACvC,QAAQ,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACrC,SAAS,EAAE,OAAO,iEAAe,QAAQ,IAAI;AAAA,IAC7C,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,kCAAS,QAAQ,IAAI;AAAA,IACpC,OAAO,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACpC,QAAQ,EAAE,OAAO,8CAAW,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,gDAAkB,QAAQ,IAAI;AAAA,IAC7C,WAAW,EAAE,OAAO,8EAA4B,QAAQ,IAAI;AAAA,IAC5D,QAAQ,EAAE,OAAO,iDAAmB,QAAQ,IAAI;AAAA,IAChD,UAAU,EAAE,OAAO,8CAAW,QAAQ,IAAI;AAAA,IAC1C,KAAK,EAAE,OAAO,4BAAa,QAAQ,IAAI;AAAA,IACvC,KAAK,EAAE,OAAO,wCAAe,QAAQ,IAAI;AAAA,IACzC,MAAM,EAAE,OAAO,4BAAQ,QAAQ,IAAI;AAAA,IACnC,SAAS,EAAE,OAAO,WAAW,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,SAAS,EAAE,OAAO,4DAAe,QAAQ,IAAI;AAAA,IAC7C,OAAO,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,EACvC;AAEA,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAS,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC9D,MAAM,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC7D,OAAO,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC9D,KAAK,EAAE,MAAM,wCAAU,YAAY,sBAAO,WAAW,2BAAO;AAAA,IAC5D,QAAQ,EAAE,MAAM,IAAI,YAAY,sBAAO,WAAW,2BAAO;AAAA;AAAA,EAC7D;AAEA,QAAM,YAAY,CAACC,OAAOA,KAAI,UAAUA,EAAC,IAAI;AAC7C,QAAM,YAAY,CAACA,OAAM;AACrB,UAAM,IAAI,UAAUA,EAAC;AACrB,QAAI;AACA,aAAO,EAAE;AAEb,WAAOA,MAAK,UAAU,QAAQ;AAAA,EAClC;AACA,QAAM,eAAe,CAACA,OAAM,SAAI,UAAUA,EAAC,CAAC;AAC5C,QAAM,UAAU,CAACA,OAAM;AACnB,UAAM,IAAI,UAAUA,EAAC;AACrB,UAAM,SAAS,GAAG,UAAU;AAC5B,WAAO,WAAW,MAAM,kEAAgB;AAAA,EAC5C;AACA,QAAM,YAAY,CAAC,WAAW;AAC1B,QAAI,CAAC;AACD,aAAO;AACX,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,uEAAgB,QAAQ,IAAI;AAAA,IAC5C,KAAK,EAAE,OAAO,qDAAa,QAAQ,IAAI;AAAA,IACvC,OAAO,EAAE,OAAO,yCAAW,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,QAAQ,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,IACvC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,MAAM,EAAE,OAAO,QAAQ,QAAQ,IAAI;AAAA,IACnC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,OAAO,EAAE,OAAO,SAAS,QAAQ,IAAI;AAAA,IACrC,UAAU,EAAE,OAAO,+DAAkB,QAAQ,IAAI;AAAA,IACjD,MAAM,EAAE,OAAO,sCAAa,QAAQ,IAAI;AAAA,IACxC,MAAM,EAAE,OAAO,0BAAW,QAAQ,IAAI;AAAA,IACtC,UAAU,EAAE,OAAO,6CAAe,QAAQ,IAAI;AAAA,IAC9C,MAAM,EAAE,OAAO,uCAAc,QAAQ,IAAI;AAAA,IACzC,MAAM,EAAE,OAAO,uCAAc,QAAQ,IAAI;AAAA,IACzC,QAAQ,EAAE,OAAO,iCAAa,QAAQ,IAAI;AAAA,IAC1C,QAAQ,EAAE,OAAO,iCAAa,QAAQ,IAAI;AAAA,IAC1C,QAAQ,EAAE,OAAO,0EAAmB,QAAQ,IAAI;AAAA,IAChD,WAAW,EAAE,OAAO,wIAA+B,QAAQ,IAAI;AAAA,IAC/D,aAAa,EAAE,OAAO,6CAAe,QAAQ,IAAI;AAAA,IACjD,MAAM,EAAE,OAAO,kCAAc,QAAQ,IAAI;AAAA,IACzC,KAAK,EAAE,OAAO,OAAO,QAAQ,IAAI;AAAA,IACjC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACvC,UAAU,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACtC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACvC,aAAa,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,IACzC,WAAW,EAAE,OAAO,sBAAO,QAAQ,IAAI;AAAA,EAC3C;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AAEjB,cAAM,cAAcA,OAAM;AAC1B,cAAM,WAAW,eAAe,eAAe,EAAE,KAAK,UAAU,WAAW;AAE3E,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK,UAAU,YAAY,GAAG,SAAS;AACnF,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gIAAsCA,OAAM,QAAQ,oCAAW,QAAQ;AAAA,QAClF;AACA,eAAO,qHAA2B,QAAQ,oCAAW,QAAQ;AAAA,MACjE;AAAA,MACA,KAAK,iBAAiB;AAClB,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,8IAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QACnF;AAEA,cAAM,cAAcA,OAAM,OAAO,IAAI,CAAC,MAAW,mBAAmB,CAAC,CAAC;AACtE,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,kLAAsC,YAAY,CAAC,CAAC,iBAAO,YAAY,CAAC,CAAC;AAAA,QACpF;AAEA,cAAM,YAAY,YAAY,YAAY,SAAS,CAAC;AACpD,cAAM,aAAa,YAAY,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI;AACrD,eAAO,kLAAsC,UAAU,iBAAO,SAAS;AAAA,MAC3E;AAAA,MACA,KAAK,WAAW;AACZ,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,UAAU,aAAaA,OAAM,UAAU,OAAO;AACpD,YAAIA,OAAM,WAAW,UAAU;AAE3B,iBAAO,GAAG,QAAQ,aAAa,0BAAM,wBAAS,OAAO,kEAAgBA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,QAAQ,EAAE,IAAIA,OAAM,YAAY,0CAAY,mDAAW,GAAG,KAAK;AAAA,QAC5K;AACA,YAAIA,OAAM,WAAW,UAAU;AAE3B,gBAAM,aAAaA,OAAM,YAAY,mEAAiBA,OAAM,OAAO,KAAK,6BAASA,OAAM,OAAO;AAC9F,iBAAO,gDAAa,OAAO,4DAAe,UAAU;AAAA,QACxD;AACA,YAAIA,OAAM,WAAW,WAAWA,OAAM,WAAW,OAAO;AAEpD,gBAAM,OAAOA,OAAM,WAAW,QAAQ,mCAAU;AAChD,gBAAM,aAAaA,OAAM,YACnB,GAAGA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE,2CACtC,mCAAUA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE;AACnD,iBAAO,gDAAa,OAAO,IAAI,IAAI,mCAAU,UAAU,GAAG,KAAK;AAAA,QACnE;AACA,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,KAAK,QAAQA,OAAM,UAAU,OAAO;AAC1C,YAAI,QAAQ,MAAM;AACd,iBAAO,GAAG,OAAO,SAAS,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACrG;AACA,eAAO,GAAG,QAAQ,aAAa,0BAAM,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,UAAU,aAAaA,OAAM,UAAU,OAAO;AACpD,YAAIA,OAAM,WAAW,UAAU;AAE3B,iBAAO,GAAG,QAAQ,cAAc,oBAAK,wBAAS,OAAO,kEAAgBA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,QAAQ,EAAE,IAAIA,OAAM,YAAY,0CAAY,gCAAO,GAAG,KAAK;AAAA,QACxK;AACA,YAAIA,OAAM,WAAW,UAAU;AAE3B,gBAAM,aAAaA,OAAM,YAAY,yEAAkBA,OAAM,OAAO,KAAK,mCAAUA,OAAM,OAAO;AAChG,iBAAO,0CAAY,OAAO,4DAAe,UAAU;AAAA,QACvD;AACA,YAAIA,OAAM,WAAW,WAAWA,OAAM,WAAW,OAAO;AAEpD,gBAAM,OAAOA,OAAM,WAAW,QAAQ,mCAAU;AAEhD,cAAIA,OAAM,YAAY,KAAKA,OAAM,WAAW;AACxC,kBAAM,iBAAiBA,OAAM,WAAW,QAAQ,+EAAmB;AACnE,mBAAO,0CAAY,OAAO,IAAI,IAAI,mCAAU,cAAc;AAAA,UAC9D;AACA,gBAAM,aAAaA,OAAM,YACnB,GAAGA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE,2CACtC,mCAAUA,OAAM,OAAO,IAAI,QAAQ,QAAQ,EAAE;AACnD,iBAAO,0CAAY,OAAO,IAAI,IAAI,mCAAU,UAAU,GAAG,KAAK;AAAA,QAClE;AACA,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,KAAK,QAAQA,OAAM,UAAU,OAAO;AAC1C,YAAI,QAAQ,MAAM;AACd,iBAAO,GAAG,OAAO,UAAU,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtG;AACA,eAAO,GAAG,QAAQ,cAAc,oBAAK,wBAAS,OAAO,IAAI,EAAE,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AAEf,YAAI,OAAO,WAAW;AAClB,iBAAO,0HAA2B,OAAO,MAAM;AACnD,YAAI,OAAO,WAAW;AAClB,iBAAO,gIAA4B,OAAO,MAAM;AACpD,YAAI,OAAO,WAAW;AAClB,iBAAO,6GAAwB,OAAO,QAAQ;AAClD,YAAI,OAAO,WAAW;AAClB,iBAAO,uJAA+B,OAAO,OAAO;AAExD,cAAM,YAAY,iBAAiB,OAAO,MAAM;AAChD,cAAM,OAAO,WAAW,SAAS,OAAO;AACxC,cAAM,SAAS,WAAW,UAAU;AACpC,cAAM,YAAY,WAAW,MAAM,mCAAU;AAC7C,eAAO,GAAG,IAAI,iBAAO,SAAS;AAAA,MAClC;AAAA,MACA,KAAK;AACD,eAAO,uKAAqCA,OAAM,OAAO;AAAA,MAC7D,KAAK;AACD,eAAO,2BAAOA,OAAM,KAAK,SAAS,IAAI,iBAAO,EAAE,yCAAWA,OAAM,KAAK,SAAS,IAAI,iBAAO,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtI,KAAK,eAAe;AAChB,eAAO;AAAA,MACX;AAAA,MACA,KAAK;AACD,eAAO;AAAA,MACX,KAAK,mBAAmB;AACpB,cAAM,QAAQ,aAAaA,OAAM,UAAU,OAAO;AAClD,eAAO,kEAAgB,KAAK;AAAA,MAChC;AAAA,MACA;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaF,QAAM;AAAA,EACvB;AACJ;;;ACpNA,IAAMG,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACzC,MAAM,EAAE,MAAM,WAAW,MAAM,QAAQ;AAAA,IACvC,OAAO,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACvC,KAAK,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,UAAU;AAAA,IACV,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAA0CA,OAAM,QAAQ,oBAAoB,QAAQ;AAAA,QAC/F;AACA,eAAO,oCAA+B,QAAQ,oBAAoB,QAAQ;AAAA,MAC9E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,yCAAyC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACvF,eAAO,8CAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI;AACA,iBAAO,gCAA2B,UAAU,YAAY,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AAChI,eAAO,gCAA2B,UAAU,YAAY,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,YAAI,QAAQ;AACR,iBAAO,8BAAyB,MAAM,QAAQ,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/F;AACA,eAAO,8BAAyB,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAsC,OAAO,QAAQ;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAA4C,OAAO,OAAO;AACrE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,kDAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,cAAcA,OAAM,KAAK,SAAS,IAAI,oBAAe,aAAQ,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9G,KAAK;AACD,eAAO,2BAAsB,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2BAA2B,eAAeA,OAAM,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClF;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACxHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,SAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACrC,OAAO,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,IACtC,KAAK,EAAE,MAAM,QAAQ,MAAM,SAAS;AAAA,EACxC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+DAAgDA,OAAM,QAAQ,0BAAoB,QAAQ;AAAA,QACrG;AACA,eAAO,oDAAqC,QAAQ,0BAAoB,QAAQ;AAAA,MACpF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oDAA0C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACxF,eAAO,8DAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gBAAaA,OAAM,UAAU,aAAO,0BAAoB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,MAAM;AAC1H,eAAO,uCAA8BA,OAAM,UAAU,aAAO,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,wCAA+BA,OAAM,MAAM,2BAAqB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACxH;AACA,eAAO,wCAA+BA,OAAM,MAAM,iBAAc,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,MAAM;AAChD,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,MAAM;AAChD,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAwB,OAAO,QAAQ;AAClD,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAAuB,OAAO,OAAO;AAChD,eAAO,qBAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,8BAAqBA,OAAM,OAAO;AAAA,MAC7C,KAAK;AACD,eAAO,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,2BAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kCAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,SAAS,kBAAkB,OAAO,KAAK,MAAM;AACzC,SAAO,KAAK,IAAI,KAAK,MAAM,IAAI,MAAM;AACzC;AACA,SAAS,oBAAoB,MAAM;AAC/B,MAAI,CAAC;AACD,WAAO;AACX,QAAM,SAAS,CAAC,UAAK,UAAK,UAAK,UAAK,UAAK,gBAAM,QAAG;AAClD,QAAM,WAAW,KAAK,KAAK,SAAS,CAAC;AACrC,SAAO,QAAQ,OAAO,SAAS,QAAQ,IAAI,WAAM;AACrD;AACA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8KAA4CA,OAAM,QAAQ,uDAAe,QAAQ;AAAA,QAC5F;AACA,eAAO,mKAAiC,QAAQ,uDAAe,QAAQ;AAAA,MAC3E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mKAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,yPAAsD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1E,iBAAO,kLAAsC,oBAAoBA,OAAM,UAAU,gCAAO,CAAC,+CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QAC/I;AACA,eAAO,kLAAsC,oBAAoBA,OAAM,UAAU,gCAAO,CAAC,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACpI;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,kBAAkB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1E,iBAAO,wLAAuC,oBAAoBA,OAAM,MAAM,CAAC,+CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACrI;AACA,eAAO,wLAAuC,oBAAoBA,OAAM,MAAM,CAAC,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1H;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qHAA2B,OAAO,MAAM;AACnD,YAAI,OAAO,WAAW;AAClB,iBAAO,iIAA6B,OAAO,MAAM;AACrD,YAAI,OAAO,WAAW;AAClB,iBAAO,6IAA+B,OAAO,QAAQ;AACzD,YAAI,OAAO,WAAW;AAClB,iBAAO,oKAAkC,OAAO,OAAO;AAC3D,eAAO,4BAAQ,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAClE;AAAA,MACA,KAAK;AACD,eAAO,2KAAoCA,OAAM,OAAO;AAAA,MAC5D,KAAK;AACD,eAAO,8FAAmBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtG,KAAK;AACD,eAAO,iEAAe,oBAAoBA,OAAM,MAAM,CAAC;AAAA,MAC3D,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,2DAAc,oBAAoBA,OAAM,MAAM,CAAC;AAAA,MAC1D;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACjJA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,WAAW;AAAA,IAC7C,MAAM,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACvC,OAAO,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,IACxC,KAAK,EAAE,MAAM,QAAQ,MAAM,WAAW;AAAA,EAC1C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,4CAA4CA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,iCAAiC,QAAQ,cAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iCAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,mDAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,6BAA6BA,OAAM,UAAU,OAAO,aAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,QAAQ;AACrI,eAAO,6BAA6BA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,6BAA6BA,OAAM,MAAM,aAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC9G;AACA,eAAO,6BAA6BA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,8CAA8C,OAAO,MAAM;AACtE,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAA0C,OAAO,QAAQ;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,OAAO;AAClE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,2CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,wBAAwBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzG,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACxGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,IACzC,MAAM,EAAE,MAAM,WAAQ,MAAM,aAAU;AAAA,IACtC,OAAO,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,IACxC,KAAK,EAAE,MAAM,SAAS,MAAM,aAAU;AAAA,EAC1C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,sCAA6B,QAAQ,0CAAiCA,OAAM,QAAQ;AAAA,QAC/F;AACA,eAAO,sCAA6B,QAAQ,+BAAsB,QAAQ;AAAA,MAC9E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qCAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,iDAAgD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACxF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAkCA,OAAM,UAAU,OAAO,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,OAAO;AACrI,eAAO,8CAAkCA,OAAM,UAAU,OAAO,UAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,iDAAkCA,OAAM,MAAM,SAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,iDAAkCA,OAAM,MAAM,UAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,oDAAwC,OAAO,MAAM;AAAA,QAChE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAuC,OAAO,MAAM;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAA0C,OAAO,QAAQ;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAA8C,OAAO,OAAO;AACvE,eAAO,SAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,mDAA0CA,OAAM,OAAO;AAAA,MAClE,KAAK;AACD,eAAO,gBAAUA,OAAM,KAAK,SAAS,IAAI,cAAc,WAAW,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5G,KAAK;AACD,eAAO,sBAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,oBAAiBA,OAAM,MAAM;AAAA,MACxC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,IACzC,KAAK,EAAE,MAAM,YAAY,MAAM,QAAQ;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,uCAAuCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACtF;AACA,eAAO,4BAA4B,QAAQ,cAAc,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,4BAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,sCAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,kBAAkBA,OAAM,UAAU,QAAQ,eAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC/H,eAAO,kBAAkBA,OAAM,UAAU,QAAQ,gBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mBAAmBA,OAAM,MAAM,eAAe,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtG;AACA,eAAO,mBAAmBA,OAAM,MAAM,gBAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,uCAAuC,OAAO,QAAQ;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAAqD,OAAO,OAAO;AAC9E,eAAO,qBAAqB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/E;AAAA,MACA,KAAK;AACD,eAAO,iDAAiDA,OAAM,OAAO;AAAA,MACzE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,GAAG,mBAAmBA,OAAM,KAAK,SAAS,IAAI,MAAM,GAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9I,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,IAClC,MAAM,EAAE,MAAM,sBAAO,MAAM,qBAAM;AAAA,IACjC,OAAO,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,IACjC,KAAK,EAAE,MAAM,gBAAM,MAAM,qBAAM;AAAA,EACnC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8CAAqBA,OAAM,QAAQ,+DAAa,QAAQ;AAAA,QACnE;AACA,eAAO,mCAAU,QAAQ,+DAAa,QAAQ;AAAA,MAClD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mCAAe,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC7D,eAAO,mCAAe,WAAWA,OAAM,QAAQ,QAAG,CAAC;AAAA,MACvD,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,mCAAU;AACxC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yCAAWA,OAAM,UAAU,QAAG,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,OAAO,QAAQ,cAAI,GAAG,GAAG;AACjG,eAAO,yCAAWA,OAAM,UAAU,QAAG,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,GAAG;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,mCAAU;AACxC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yCAAWA,OAAM,MAAM,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,OAAO,IAAI,GAAG,GAAG;AAClF,eAAO,yCAAWA,OAAM,MAAM,SAAIA,OAAM,QAAQ,SAAS,CAAC,GAAG,GAAG;AAAA,MACpE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,MAAM;AACpC,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,MAAM;AACpC,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAY,OAAO,QAAQ;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,OAAO;AACxC,eAAO,qBAAM,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAChE;AAAA,MACA,KAAK;AACD,eAAO,mCAAUA,OAAM,OAAO;AAAA,MAClC,KAAK;AACD,eAAO,+DAAaA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,QAAG,CAAC;AAAA,MAC7F,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,kFAAiB;AAAA,IAClD,MAAM,EAAE,MAAM,kCAAS,MAAM,kFAAiB;AAAA,IAC9C,OAAO,EAAE,MAAM,oDAAY,MAAM,kFAAiB;AAAA,IAClD,KAAK,EAAE,MAAM,oDAAY,MAAM,kFAAiB;AAAA,EACpD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,8KAA4CA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QAC3F;AACA,eAAO,mKAAiC,QAAQ,sDAAc,QAAQ;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,mKAAsC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACpF,eAAO,2NAAiD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,iJAA8BA,OAAM,UAAU,oEAAa,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AACtI,eAAO,iJAA8BA,OAAM,UAAU,oEAAa,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,6JAAgCA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvH;AACA,eAAO,6JAAgCA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+JAAkC,OAAO,MAAM;AAAA,QAC1D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,iLAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,+JAAkC,OAAO,QAAQ;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,uOAA8C,OAAO,OAAO;AACvE,eAAO,oDAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,4IAA8BA,OAAM,OAAO;AAAA,MACtD,KAAK;AACD,eAAO,kFAAiBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,QAAG,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrG,KAAK;AACD,eAAO,qGAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uHAAwBA,OAAM,MAAM;AAAA,MAC/C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC9GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,8CAAW,MAAM,uCAAS;AAAA,IAC1C,MAAM,EAAE,MAAM,gBAAM,MAAM,uCAAS;AAAA,IACnC,OAAO,EAAE,MAAM,4BAAQ,MAAM,uCAAS;AAAA,IACtC,KAAK,EAAE,MAAM,4BAAQ,MAAM,uCAAS;AAAA,EACxC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wOAAoDA,OAAM,QAAQ,yFAAmB,QAAQ;AAAA,QACxG;AACA,eAAO,6NAAyC,QAAQ,yFAAmB,QAAQ;AAAA,MACvF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6NAA8C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC5F,eAAO,qPAAkD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,yFAAmBA,OAAM,UAAU,gCAAO,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,0BAAM;AACjH,eAAO,yFAAmBA,OAAM,UAAU,gCAAO,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+FAAoBA,OAAM,MAAM,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC7F;AACA,eAAO,+FAAoBA,OAAM,MAAM,IAAI,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,sPAA8C,OAAO,MAAM;AAAA,QACtE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,oOAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,gMAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,iWAA+D,OAAO,OAAO;AACxF,eAAO,wFAAkB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,eAAO,iNAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,0GAA0B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjE,KAAK;AACD,eAAO,wIAA0BA,OAAM,MAAM;AAAA,MACjD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,4KAAgCA,OAAM,MAAM;AAAA,MACvD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3Ge,SAAR,aAAoB;AACvB,SAAO,WAAG;AACd;;;ACHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,UAAU;AAAA,IACtC,MAAM,EAAE,MAAM,sBAAO,MAAM,UAAU;AAAA,IACrC,OAAO,EAAE,MAAM,UAAK,MAAM,UAAU;AAAA,IACpC,KAAK,EAAE,MAAM,UAAK,MAAM,UAAU;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+EAA6BA,OAAM,QAAQ,qCAAY,QAAQ;AAAA,QAC1E;AACA,eAAO,oEAAkB,QAAQ,qCAAY,QAAQ;AAAA,MACzD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iDAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,oCAAgB,WAAWA,OAAM,QAAQ,eAAK,CAAC;AAAA,MAC1D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,iBAAO;AACrC,cAAM,SAAS,QAAQ,iBAAO,0CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,OAAO,QAAQ,QAAQ;AAC7B,YAAI;AACA,iBAAO,GAAGA,OAAM,UAAU,QAAG,2CAAaA,OAAM,QAAQ,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,MAAM;AAC7F,eAAO,GAAGA,OAAM,UAAU,QAAG,2CAAaA,OAAM,QAAQ,SAAS,CAAC,IAAI,GAAG,GAAG,MAAM;AAAA,MACtF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,iBAAO;AACrC,cAAM,SAAS,QAAQ,iBAAO,0CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,OAAO,QAAQ,QAAQ;AAC7B,YAAI,QAAQ;AACR,iBAAO,GAAGA,OAAM,UAAU,QAAG,iDAAcA,OAAM,QAAQ,SAAS,CAAC,GAAG,IAAI,IAAI,GAAG,GAAG,MAAM;AAAA,QAC9F;AACA,eAAO,GAAGA,OAAM,UAAU,QAAG,iDAAcA,OAAM,QAAQ,SAAS,CAAC,IAAI,GAAG,GAAG,MAAM;AAAA,MACvF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2CAAa,OAAO,MAAM;AAAA,QACrC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAa,OAAO,MAAM;AACrC,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAa,OAAO,QAAQ;AACvC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,OAAO;AACzC,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,oCAAWA,OAAM,OAAO;AAAA,MACnC,KAAK;AACD,eAAO,kDAAoB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3D,KAAK;AACD,eAAO,8BAAUA,OAAM,MAAM;AAAA,MACjC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,8BAAUA,OAAM,MAAM;AAAA,MACjC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC7GA,IAAM,2BAA2B,CAAC,SAAS;AACvC,SAAO,KAAK,OAAO,CAAC,EAAE,YAAY,IAAI,KAAK,MAAM,CAAC;AACtD;AACA,SAAS,sBAAsBE,SAAQ;AACnC,QAAM,MAAM,KAAK,IAAIA,OAAM;AAC3B,QAAM,OAAO,MAAM;AACnB,QAAM,QAAQ,MAAM;AACpB,MAAK,SAAS,MAAM,SAAS,MAAO,SAAS;AACzC,WAAO;AACX,MAAI,SAAS;AACT,WAAO;AACX,SAAO;AACX;AACA,IAAMC,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,QACF,SAAS;AAAA,UACL,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,QACA,QAAQ;AAAA,UACJ,WAAW;AAAA,UACX,cAAc;AAAA,QAClB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ,UAAU,WAAW,gBAAgB;AAC5D,UAAM,SAAS,QAAQ,MAAM,KAAK;AAClC,QAAI,WAAW;AACX,aAAO;AACX,WAAO;AAAA,MACH,MAAM,OAAO,KAAK,QAAQ;AAAA,MAC1B,MAAM,OAAO,KAAK,cAAc,EAAE,YAAY,cAAc,cAAc;AAAA,IAC9E;AAAA,EACJ;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gBAAgB,QAAQ,kCAA6BA,OAAM,QAAQ;AAAA,QAC9E;AACA,eAAO,gBAAgB,QAAQ,uBAAkB,QAAQ;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qBAAqB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnE,eAAO,oCAA+B,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACvE,KAAK,WAAW;AACZ,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,cAAM,SAAS,UAAUA,OAAM,QAAQ,sBAAsB,OAAOA,OAAM,OAAO,CAAC,GAAGA,OAAM,aAAa,OAAO,SAAS;AACxH,YAAI,QAAQ;AACR,iBAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,IAAI,OAAO,IAAI,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,eAAU;AACnJ,cAAM,MAAMA,OAAM,YAAY,qBAAqB;AACnD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,mBAAc,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,IAAI;AAAA,MACxI;AAAA,MACA,KAAK,aAAa;AACd,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,cAAM,SAAS,UAAUA,OAAM,QAAQ,sBAAsB,OAAOA,OAAM,OAAO,CAAC,GAAGA,OAAM,aAAa,OAAO,QAAQ;AACvH,YAAI,QAAQ;AACR,iBAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,IAAI,OAAO,IAAI,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,eAAU;AACnJ,cAAM,MAAMA,OAAM,YAAY,0BAAqB;AACnD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC,mBAAc,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,QAAQ,IAAI;AAAA,MACxI;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,uCAA6B,OAAO,MAAM;AAAA,QACrD;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAA8B,OAAO,MAAM;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,sCAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,gCAA2B,OAAO,OAAO;AACpD,eAAO,eAAe,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACzE;AAAA,MACA,KAAK;AACD,eAAO,mCAAyBA,OAAM,OAAO;AAAA,MACjD,KAAK;AACD,eAAO,kBAAaA,OAAM,KAAK,SAAS,IAAI,MAAM,IAAI,QAAQA,OAAM,KAAK,SAAS,IAAI,OAAO,IAAI,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3I,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK,mBAAmB;AACpB,cAAM,SAAS,eAAeA,OAAM,MAAM,KAAKA,OAAM;AACrD,eAAO,GAAG,yBAAyB,UAAUA,OAAM,UAAU,mBAAS,CAAC;AAAA,MAC3E;AAAA,MACA;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzMA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,kCAAS,MAAM,8CAAW;AAAA,IAC1C,MAAM,EAAE,MAAM,kCAAS,MAAM,8CAAW;AAAA,IACxC,OAAO,EAAE,MAAM,wCAAU,MAAM,8CAAW;AAAA,IAC1C,KAAK,EAAE,MAAM,wCAAU,MAAM,8CAAW;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,qIAAsCA,OAAM,QAAQ,gDAAa,QAAQ;AAAA,QACpF;AACA,eAAO,0HAA2B,QAAQ,gDAAa,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,2BAAgC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9E,eAAO,qKAAwC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,4IAA8BA,OAAM,UAAU,wDAAW,oCAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,kDAAU;AAC1I,eAAO,4IAA8BA,OAAM,UAAU,wDAAW,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,gIAA4BA,OAAM,MAAM,oCAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,gIAA4BA,OAAM,MAAM,0CAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,+LAAyC,OAAO,MAAM;AAAA,QACjE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,yLAAwC,OAAO,MAAM;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,4KAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,mOAA+C,OAAO,OAAO;AACxE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,6KAAsCA,OAAM,OAAO;AAAA,MAC9D,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,8HAA0B,mGAAmB,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzH,KAAK;AACD,eAAO,8EAAkBA,OAAM,MAAM;AAAA,MACzC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,sGAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC5C,MAAM,EAAE,MAAM,QAAQ,MAAM,YAAY;AAAA,IACxC,OAAO,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,IAC3C,KAAK,EAAE,MAAM,UAAU,MAAM,YAAY;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,wCAAwCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACvF;AACA,eAAO,6BAA6B,QAAQ,cAAc,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,6BAAkC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAChF,eAAO,mDAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,2BAA2BA,OAAM,UAAU,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,QAAQ;AACzI,eAAO,2BAA2BA,OAAM,UAAU,OAAO,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2BAA2BA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAClH;AACA,eAAO,2BAA2BA,OAAM,MAAM,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,4CAA4C,OAAO,MAAM;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,wCAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,gDAAgD,OAAO,OAAO;AACzE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,mCAAmCA,OAAM,OAAO;AAAA,MAC3D,KAAK;AACD,eAAO,yBAA8B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACrE,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAQ;AAAA,IACrC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,EACZ;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAyCA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QACvF;AACA,eAAO,8BAA8B,QAAQ,aAAa,QAAQ;AAAA,MACtE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8BAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,2CAA0C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,WAAWA,OAAM,WAAW,SAAS,SAASA,OAAM,WAAW,WAAW,SAAS;AACzF,YAAI;AACA,iBAAO,MAAM,QAAQ,kBAAkBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW,IAAI,OAAO,IAAI;AAClJ,eAAO,MAAM,QAAQ,kBAAkBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,cAAM,YAAYA,OAAM,WAAW,SAAS,UAAUA,OAAM,WAAW,WAAW,SAAS;AAC3F,YAAI,QAAQ;AACR,iBAAO,MAAM,SAAS,kBAAkBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,QACxH;AACA,eAAO,MAAM,SAAS,kBAAkBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,8BAA8B,OAAO,MAAM;AAAA,QACtD;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAA6B,OAAO,MAAM;AACrD,YAAI,OAAO,WAAW;AAClB,iBAAO,0BAA0B,OAAO,QAAQ;AACpD,YAAI,OAAO,WAAW;AAClB,iBAAO,kDAAkD,OAAO,OAAO;AAC3E,eAAO,aAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,yCAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACjG,KAAK;AACD,eAAO,oBAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uBAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,UAAO;AAAA,IACrC,MAAM,EAAE,MAAM,SAAS,MAAM,UAAO;AAAA,IACpC,OAAO,EAAE,MAAM,aAAa,MAAM,iBAAc;AAAA,IAChD,KAAK,EAAE,MAAM,aAAa,MAAM,iBAAc;AAAA,EAClD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,uCAAuCA,OAAM,QAAQ,UAAU,QAAQ;AAAA,QAClF;AACA,eAAO,4BAA4B,QAAQ,UAAU,QAAQ;AAAA,MACjE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,4BAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,iCAAsC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC9E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,0BAA0BA,OAAM,UAAU,OAAO,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACrI,eAAO,0BAA0BA,OAAM,UAAU,OAAO,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0BAA0BA,OAAM,MAAM,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3G;AACA,eAAO,0BAA0BA,OAAM,MAAM,gBAAa,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qCAAkC,OAAO,MAAM;AAC1D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAgC,OAAO,MAAM;AACxD,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAuC,OAAO,OAAO;AAChE,eAAO,WAAW,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACrE;AAAA,MACA,KAAK;AACD,eAAO,+CAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,kBAAe,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC9G,KAAK;AACD,eAAO,uBAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,mBAAmBA,OAAM,MAAM;AAAA,MAC1C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IAC1C,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAY;AAAA,IACxC,OAAO,EAAE,MAAM,SAAS,MAAM,sBAAY;AAAA,IAC1C,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAY;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,qCAAkCA,OAAM,QAAQ,iBAAY,QAAQ;AAAA,QAC/E;AACA,eAAO,0BAAuB,QAAQ,iBAAY,QAAQ;AAAA,MAC9D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,0BAA4B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1E,eAAO,kCAAiC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACzE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sBAAgBA,OAAM,UAAU,OAAO,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAClH,eAAO,sBAAgBA,OAAM,UAAU,OAAO,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yBAAgBA,OAAM,MAAM,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACzF;AACA,eAAO,yBAAgBA,OAAM,MAAM,KAAK,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,MAAM;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,oBAAiB,OAAO,QAAQ;AAC3C,YAAI,OAAO,WAAW;AAClB,iBAAO,mBAAgB,OAAO,OAAO;AACzC,eAAO,YAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,uBAAeA,OAAM,OAAO;AAAA,MACvC,KAAK;AACD,eAAO,2BAAsBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACvG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,cAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACrC,MAAM,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACpC,OAAO,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACpC,KAAK,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gGAA+BA,OAAM,QAAQ,2CAAa,QAAQ;AAAA,QAC7E;AACA,eAAO,qFAAoB,QAAQ,2CAAa,QAAQ;AAAA,MAC5D;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW,GAAG;AAC3B,iBAAO,qFAAyB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAAA,QACvE;AACA,eAAO,qHAAgC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACxE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,0CAAYA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,4CAAS;AAAA,QACjH;AACA,eAAO,0CAAYA,OAAM,UAAU,gCAAO,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACrF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC3F;AACA,eAAO,sDAAcA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC5E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,iFAAqB,OAAO,MAAM;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,aAAa;AAC/B,iBAAO,iFAAqB,OAAO,MAAM;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,YAAY;AAC9B,iBAAO,0EAAmB,OAAO,QAAQ;AAAA,QAC7C;AACA,YAAI,OAAO,WAAW,SAAS;AAC3B,iBAAO,gFAAoB,OAAO,OAAO;AAAA,QAC7C;AACA,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,gFAAoBA,OAAM,OAAO;AAAA,MAC5C,KAAK;AACD,eAAO,4BAAQA,OAAM,KAAK,SAAS,IAAI,+CAAY,0BAAM,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnG,KAAK;AACD,eAAO,kEAAgBA,OAAM,MAAM;AAAA,MACvC,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,kEAAgBA,OAAM,MAAM;AAAA,MACvC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AChHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAU,MAAM,YAAO;AAAA,IACvC,MAAM,EAAE,MAAM,aAAU,MAAM,YAAO;AAAA,IACrC,OAAO,EAAE,MAAM,gBAAa,MAAM,YAAO;AAAA,IACzC,KAAK,EAAE,MAAM,gBAAa,MAAM,YAAO;AAAA,EAC3C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iEAAuDA,OAAM,QAAQ,eAAe,QAAQ;AAAA,QACvG;AACA,eAAO,sDAA4C,QAAQ,eAAe,QAAQ;AAAA,MACtF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sDAAiD,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/F,eAAO,+DAA0D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAClG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uDAAmCA,OAAM,UAAU,mBAAS,0BAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,cAAW;AAAA,QACnJ;AACA,eAAO,6CAAmCA,OAAM,UAAU,mBAAS,6BAAmB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uDAAmCA,OAAM,UAAU,mBAAS,0BAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,cAAW;AAAA,QACnJ;AACA,eAAO,6CAAmCA,OAAM,UAAU,mBAAS,6BAAmB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxH;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2EAAoD,OAAO,MAAM;AAC5E,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAAmD,OAAO,MAAM;AAC3E,YAAI,OAAO,WAAW;AAClB,iBAAO,+DAA6C,OAAO,QAAQ;AACvE,YAAI,OAAO,WAAW;AAClB,iBAAO,yEAAuD,OAAO,OAAO;AAChF,eAAO,4BAAuB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjF;AAAA,MACA,KAAK;AACD,eAAO,sEAAkDA,OAAM,OAAO;AAAA,MAC1E,KAAK;AACD,eAAO,uBAAuBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxG,KAAK;AACD,eAAO,8BAAyBA,OAAM,MAAM;AAAA,MAChD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,0CAA2BA,OAAM,MAAM;AAAA,MAClD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,cAAc,MAAM,MAAM;AAAA,IAC1C,MAAM,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACnC,OAAO,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,IACpC,KAAK,EAAE,MAAM,SAAS,MAAM,MAAM;AAAA,EACtC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yCAAsCA,OAAM,QAAQ,cAAc,QAAQ;AAAA,QACrF;AACA,eAAO,8BAA2B,QAAQ,cAAc,QAAQ;AAAA,MACpE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,6CAAyC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACjF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8BAA8BA,OAAM,UAAU,OAAO,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AACxI,eAAO,8BAA8BA,OAAM,UAAU,OAAO,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,+BAA+BA,OAAM,MAAM,YAAY,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,+BAA+BA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAqC,OAAO,MAAM;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,oCAAiC,OAAO,QAAQ;AAC3D,YAAI,OAAO,WAAW;AAClB,iBAAO,qDAA+C,OAAO,OAAO;AACxE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,kDAAyCA,OAAM,OAAO;AAAA,MACjE,KAAK;AACD,eAAO,QAAQA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,gBAAgBA,OAAM,KAAK,SAAS,IAAI,MAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACzI,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,wBAAqBA,OAAM,MAAM;AAAA,MAC5C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,aAAa,MAAM,oBAAU;AAAA,IAC7C,MAAM,EAAE,MAAM,eAAU,MAAM,oBAAU;AAAA,IACxC,OAAO,EAAE,MAAM,YAAY,MAAM,oBAAU;AAAA,IAC3C,KAAK,EAAE,MAAM,YAAY,MAAM,oBAAU;AAAA,IACzC,KAAK,EAAE,MAAM,gBAAW,MAAM,oBAAU;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,IACL,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,eAAO,wCAA8B,QAAQ,YAAY,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,wDAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+BAA0BA,OAAM,UAAU,UAAU,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,UAAU;AAC7I,eAAO,+BAA0BA,OAAM,UAAU,UAAU,gBAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8BAAyBA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,8BAAyBA,OAAM,MAAM,gBAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,yDAAuC,OAAO,MAAM;AAAA,QAC/D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,oDAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,oEAAqD,OAAO,OAAO;AAC9E,eAAO,mBAAmB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,eAAO,uDAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,uBAA4B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnE,KAAK;AACD,eAAO,6BAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,+BAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACrHA,SAAS,iBAAiB,OAAO,KAAK,KAAK,MAAM;AAC7C,QAAM,WAAW,KAAK,IAAI,KAAK;AAC/B,QAAM,YAAY,WAAW;AAC7B,QAAM,gBAAgB,WAAW;AACjC,MAAI,iBAAiB,MAAM,iBAAiB,IAAI;AAC5C,WAAO;AAAA,EACX;AACA,MAAI,cAAc,GAAG;AACjB,WAAO;AAAA,EACX;AACA,MAAI,aAAa,KAAK,aAAa,GAAG;AAClC,WAAO;AAAA,EACX;AACA,SAAO;AACX;AACA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ;AAAA,MACJ,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,MAAM;AAAA,MACF,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,OAAO;AAAA,MACH,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACD,MAAM;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,MACV;AAAA,MACA,MAAM;AAAA,IACV;AAAA,EACJ;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gJAAuCA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACtF;AACA,eAAO,qIAA4B,QAAQ,sDAAc,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qIAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,6LAA4C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACpF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1F,iBAAO,sNAA4CA,OAAM,UAAU,kDAAU,kEAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QACvI;AACA,eAAO,sNAA4CA,OAAM,UAAU,kDAAU,mCAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACzH;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,gBAAM,WAAW,OAAOA,OAAM,OAAO;AACrC,gBAAM,OAAO,iBAAiB,UAAU,OAAO,KAAK,KAAK,OAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAC1F,iBAAO,kOAA8CA,OAAM,MAAM,kEAAgB,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,IAAI;AAAA,QAC3H;AACA,eAAO,kOAA8CA,OAAM,MAAM,mCAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7G;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,oMAAyC,OAAO,MAAM;AACjE,YAAI,OAAO,WAAW;AAClB,iBAAO,4NAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,uLAAsC,OAAO,QAAQ;AAChE,YAAI,OAAO,WAAW;AAClB,iBAAO,qQAAmD,OAAO,OAAO;AAC5E,eAAO,oDAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,6LAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,2EAAeA,OAAM,KAAK,SAAS,IAAI,iBAAO,cAAI,4BAAQA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3I,KAAK;AACD,eAAO,oFAAmBA,OAAM,MAAM;AAAA,MAC1C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,4GAAuBA,OAAM,MAAM;AAAA,MAC9C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1JA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACxC,MAAM,EAAE,MAAM,UAAU,MAAM,QAAQ;AAAA,IACtC,OAAO,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,IAC1C,KAAK,EAAE,MAAM,aAAa,MAAM,QAAQ;AAAA,EAC5C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,gDAA2CA,OAAM,QAAQ,aAAa,QAAQ;AAAA,QACzF;AACA,eAAO,qCAAgC,QAAQ,aAAa,QAAQ;AAAA,MACxE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,qCAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnF,eAAO,uDAAkD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sCAAiCA,OAAM,UAAU,UAAU,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,WAAW;AAC5I,eAAO,sCAAiCA,OAAM,UAAU,UAAU,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACxG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sCAAiCA,OAAM,MAAM,UAAU,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,sCAAiCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,0CAAqC,OAAO,MAAM;AAAA,QAC7D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2CAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,mCAAmC,OAAO,QAAQ;AAC7D,YAAI,OAAO,WAAW;AAClB,iBAAO,yCAAyC,OAAO,OAAO;AAClE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,sDAA4CA,OAAM,OAAO;AAAA,MACpE,KAAK;AACD,eAAO,cAAcA,OAAM,KAAK,SAAS,IAAI,kBAAa,aAAQ,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5G,KAAK;AACD,eAAO,2BAAsBA,OAAM,MAAM;AAAA,MAC7C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,yBAAyBA,OAAM,MAAM;AAAA,MAChD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAU,MAAM,SAAS;AAAA,IACzC,MAAM,EAAE,MAAM,SAAS,MAAM,SAAS;AAAA,IACtC,OAAO,EAAE,MAAM,UAAU,MAAM,mBAAgB;AAAA,IAC/C,KAAK,EAAE,MAAM,UAAU,MAAM,mBAAgB;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iDAA2CA,OAAM,QAAQ,UAAU,QAAQ;AAAA,QACtF;AACA,eAAO,sCAAgC,QAAQ,UAAU,QAAQ;AAAA,MACrE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sCAAqC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACnF,eAAO,wCAAuC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,SAAS;AAAA,QACnI;AACA,eAAO,mCAA0BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtG;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtH;AACA,eAAO,oCAA2BA,OAAM,UAAU,WAAQ,WAAW,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,6CAAoC,OAAO,MAAM;AAAA,QAC5D;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,0CAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,6CAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,mDAA0C,OAAO,OAAO;AACnE,eAAO,cAAc,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACxE;AAAA,MACA,KAAK;AACD,eAAO,8CAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,GAAGA,OAAM,KAAK,SAAS,IAAI,sBAAmB,iBAAc,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7G,KAAK;AACD,eAAO,oBAAoBA,OAAM,UAAU,WAAQ;AAAA,MACvD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,uBAAoBA,OAAM,UAAU,WAAQ;AAAA,MACvD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4EAAgB,MAAM,sHAAuB;AAAA,IAC7D,MAAM,EAAE,MAAM,0DAAa,MAAM,sHAAuB;AAAA,IACxD,OAAO,EAAE,MAAM,gEAAc,MAAM,sHAAuB;AAAA,IAC1D,KAAK,EAAE,MAAM,gEAAc,MAAM,sHAAuB;AAAA,EAC5D;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,kNAAkDA,OAAM,QAAQ,wEAAiB,QAAQ;AAAA,QACpG;AACA,eAAO,uMAAuC,QAAQ,wEAAiB,QAAQ;AAAA,MACnF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,uMAA4C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1F,eAAO,mNAA8C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,2LAAqCA,OAAM,UAAU,4CAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,8DAAY;AAAA,QAC1I;AACA,eAAO,2LAAqCA,OAAM,UAAU,4CAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uMAAuCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC/G;AACA,eAAO,uMAAuCA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAChG;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,MAAM;AACxC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,MAAM;AACxC,YAAI,OAAO,WAAW;AAClB,iBAAO,6DAAgB,OAAO,QAAQ;AAC1C,YAAI,OAAO,WAAW;AAClB,iBAAO,4DAAe,OAAO,OAAO;AACxC,eAAO,kCAAS,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACnE;AAAA,MACA,KAAK;AACD,eAAO,sDAAcA,OAAM,OAAO;AAAA,MACtC,KAAK;AACD,eAAO,uHAAwBA,OAAM,KAAK,SAAS,IAAI,uBAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC3G,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAY,MAAM,iCAAQ;AAAA,IAC1C,MAAM,EAAE,MAAM,4BAAQ,MAAM,iCAAQ;AAAA,IACpC,OAAO,EAAE,MAAM,wCAAU,MAAM,iCAAQ;AAAA,IACvC,KAAK,EAAE,MAAM,wCAAU,MAAM,iCAAQ;AAAA,EACzC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+LAA8CA,OAAM,QAAQ,2DAAc,QAAQ;AAAA,QAC7F;AACA,eAAO,oLAAmC,QAAQ,2DAAc,QAAQ;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8HAA+B,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC7E,eAAO,sMAA2C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACnF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,+CAAY;AAC1C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,2DAAcA,OAAM,UAAU,oBAAK,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,sCAAQ;AACjH,eAAO,2DAAcA,OAAM,UAAU,oBAAK,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACtF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,2DAAc;AAC5C,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mFAAkBA,OAAM,MAAM,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAChG;AACA,eAAO,mFAAkBA,OAAM,MAAM,kCAAS,GAAG,IAAIA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACjF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2OAA6C,OAAO,MAAM;AAAA,QACrE;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,qOAA4C,OAAO,MAAM;AACpE,YAAI,OAAO,WAAW;AAClB,iBAAO,qLAAoC,OAAO,QAAQ;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,sPAA8C,OAAO,OAAO;AACvE,eAAO,qGAAqB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/E;AAAA,MACA,KAAK;AACD,eAAO,gPAA6CA,OAAM,OAAO;AAAA,MACrE,KAAK;AACD,eAAO,iHAA4B,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACnE,KAAK;AACD,eAAO,oGAAoBA,OAAM,MAAM;AAAA,MAC3C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,gHAAsBA,OAAM,MAAM;AAAA,MAC7C;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,YAAY,MAAM,cAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,QAAQ,MAAM,cAAS;AAAA,IACrC,OAAO,EAAE,MAAM,eAAO,MAAM,cAAS;AAAA,IACrC,KAAK,EAAE,MAAM,eAAO,MAAM,cAAS;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,+CAAuCA,OAAM,QAAQ,iBAAY,QAAQ;AAAA,QACpF;AACA,eAAO,oCAA4B,QAAQ,iBAAY,QAAQ;AAAA,MACnE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,oCAAiC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC/E,eAAO,4EAAuD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC/F,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,gCAAuBA,OAAM,UAAU,YAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,aAAK;AACnH,eAAO,gCAAuBA,OAAM,UAAU,YAAO,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,mCAAuBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAC/F,eAAO,mCAAuBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAChF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,uBAAoB,OAAO,QAAQ;AAC9C,YAAI,OAAO,WAAW;AAClB,iBAAO,sBAAmB,OAAO,OAAO;AAC5C,eAAO,eAAY,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACtE;AAAA,MACA,KAAK;AACD,eAAO,0BAAkBA,OAAM,OAAO;AAAA,MAC1C,KAAK;AACD,eAAO,0BAAqBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACxG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACvGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,oDAAY,MAAM,uCAAS;AAAA,IAC3C,MAAM,EAAE,MAAM,wCAAU,MAAM,uCAAS;AAAA,IACvC,OAAO,EAAE,MAAM,0DAAa,MAAM,uCAAS;AAAA,IAC3C,KAAK,EAAE,MAAM,0DAAa,MAAM,uCAAS;AAAA,EAC7C;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,6MAAkDA,OAAM,QAAQ,sDAAc,QAAQ;AAAA,QACjG;AACA,eAAO,kMAAuC,QAAQ,sDAAc,QAAQ;AAAA,MAChF;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,kMAA4C,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC1F,eAAO,mMAA6C,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACrF,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,+JAAkCA,OAAM,UAAU,kDAAU,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,wDAAW;AACtJ,eAAO,+JAAkCA,OAAM,UAAU,kDAAU,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9G;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,mJAAgCA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACvH;AACA,eAAO,mJAAgCA,OAAM,MAAM,6BAAS,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9F;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4NAA6C,OAAO,MAAM;AACrE,YAAI,OAAO,WAAW;AAClB,iBAAO,oPAAiD,OAAO,MAAM;AACzE,YAAI,OAAO,WAAW;AAClB,iBAAO,mMAAwC,OAAO,QAAQ;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,qQAAmD,OAAO,OAAO;AAC5E,eAAO,4EAAgB,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC1E;AAAA,MACA,KAAK;AACD,eAAO,qNAA2CA,OAAM,OAAO;AAAA,MACnE,KAAK;AACD,eAAO,0GAAqBA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACtG,KAAK;AACD,eAAO,4GAAuBA,OAAM,MAAM;AAAA,MAC9C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,8HAA0BA,OAAM,MAAM;AAAA,MACjD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGe,SAAR,aAAoB;AACvB,SAAO,WAAG;AACd;;;ACHA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,4BAAQ,MAAM,2BAAO;AAAA,IACrC,MAAM,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACpC,OAAO,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,IACrC,KAAK,EAAE,MAAM,kCAAS,MAAM,2BAAO;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,4DAAyBA,OAAM,QAAQ,4DAAe,QAAQ;AAAA,QACzE;AACA,eAAO,iDAAc,QAAQ,4DAAe,QAAQ;AAAA,MACxD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,iDAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,gDAAkB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC1D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,0CAAYA,OAAM,UAAU,gCAAO,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,gCAAO;AAC7G,eAAO,0CAAYA,OAAM,UAAU,gCAAO,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACnF;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,sDAAcA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACzF;AACA,eAAO,sDAAcA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC1E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,uDAAe,OAAO,MAAM;AAAA,QACvC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAe,OAAO,MAAM;AACvC,YAAI,OAAO,WAAW;AAClB,iBAAO,uDAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,qFAAoB,OAAO,OAAO;AAC7C,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,gDAAaA,OAAM,OAAO;AAAA,MACrC,KAAK;AACD,eAAO,oFAAmBA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,KAAU,WAAWA,OAAM,MAAM,SAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,SAAS,MAAM,sBAAiB;AAAA,IAChD,MAAM,EAAE,MAAM,QAAQ,MAAM,sBAAiB;AAAA,IAC7C,OAAO,EAAE,MAAM,WAAW,MAAM,sBAAiB;AAAA,IACjD,KAAK,EAAE,MAAM,WAAW,MAAM,sBAAiB;AAAA,IAC/C,KAAK,EAAE,MAAM,SAAS,MAAM,sBAAiB;AAAA,EACjD;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,mDAAyCA,OAAM,QAAQ,oBAAoB,QAAQ;AAAA,QAC9F;AACA,eAAO,wCAA8B,QAAQ,oBAAoB,QAAQ;AAAA,MAC7E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,wCAAmC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjF,eAAO,6DAAwD,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,wBAAwBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAC3H,eAAO,wBAAwBA,OAAM,UAAU,QAAQ,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC7F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,yBAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI,IAAI,OAAO,IAAI;AAAA,QAChH;AACA,eAAO,yBAAyBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAClF;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,MAAM;AAC5C,YAAI,OAAO,WAAW;AAClB,iBAAO,8BAAoB,OAAO,QAAQ;AAC9C,YAAI,OAAO,WAAW;AAClB,iBAAO,6BAAmB,OAAO,OAAO;AAC5C,eAAO,uBAAa,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACvE;AAAA,MACA,KAAK;AACD,eAAO,8BAAoBA,OAAM,OAAO;AAAA,MAC5C,KAAK;AACD,eAAO,sBAAiBA,OAAM,KAAK,SAAS,IAAI,QAAQ,EAAE,KAAU,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MACpG,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC5GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,iBAAS,MAAM,QAAK;AAAA,IACpC,MAAM,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,IACjC,OAAO,EAAE,MAAM,qBAAW,MAAM,QAAK;AAAA,IACrC,KAAK,EAAE,MAAM,qBAAW,MAAM,QAAK;AAAA,EACvC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,iFAA6CA,OAAM,QAAQ,mCAAe,QAAQ;AAAA,QAC7F;AACA,eAAO,sEAAkC,QAAQ,mCAAe,QAAQ;AAAA,MAC5E;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,sEAAuC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACrF,eAAO,wGAA8D,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MACtG,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,uCAAqBA,OAAM,UAAU,iBAAS,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,mBAAS;AACtI,eAAO,uCAAqBA,OAAM,UAAU,iBAAS,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3F;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,uCAAqBA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QAC5G;AACA,eAAO,uCAAqBA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,qFAA0C,OAAO,MAAM;AAClE,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAA2C,OAAO,MAAM;AACnE,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAqC,OAAO,QAAQ;AAC/D,YAAI,OAAO,WAAW;AAClB,iBAAO,+EAAyC,OAAO,OAAO;AAClE,eAAO,GAAG,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AACD,eAAO,gFAAuCA,OAAM,OAAO;AAAA,MAC/D,KAAK;AACD,eAAO,6DAAmC,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC1E,KAAK;AACD,eAAO,2CAA2BA,OAAM,MAAM;AAAA,MAClD,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,mDAA8BA,OAAM,MAAM;AAAA,MACrD;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IACjC,MAAM,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IAC/B,OAAO,EAAE,MAAM,UAAK,MAAM,eAAK;AAAA,IAC/B,KAAK,EAAE,MAAM,UAAK,MAAM,eAAK;AAAA,EACjC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,EACV;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,yDAAsBA,OAAM,QAAQ,kCAAS,QAAQ;AAAA,QAChE;AACA,eAAO,8CAAW,QAAQ,kCAAS,QAAQ;AAAA,MAC/C;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,8CAAgB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAC9D,eAAO,sEAAoB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC5D,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAWA,OAAM,UAAU,QAAG,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,oBAAK;AACnG,eAAO,8CAAWA,OAAM,UAAU,QAAG,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC3E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8CAAWA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACnF;AACA,eAAO,8CAAWA,OAAM,MAAM,IAAI,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACpE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,8FAAmB,OAAO,OAAO;AAC5C,eAAO,eAAK,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MAC/D;AAAA,MACA,KAAK;AACD,eAAO,oDAAYA,OAAM,OAAO;AAAA,MACpC,KAAK;AACD,eAAO,8CAAqB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC5D,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC3GA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IACjC,MAAM,EAAE,MAAM,sBAAO,MAAM,eAAK;AAAA,IAChC,OAAO,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,IAChC,KAAK,EAAE,MAAM,gBAAM,MAAM,eAAK;AAAA,EAClC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,EACT;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2EAAyBA,OAAM,QAAQ,4BAAQ,QAAQ;AAAA,QAClE;AACA,eAAO,gEAAc,QAAQ,4BAAQ,QAAQ;AAAA,MACjD;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gEAAmB,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AACjE,eAAO,8FAAwB,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAChE,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,8CAAWA,OAAM,UAAU,QAAG,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,QAAQ,oBAAK;AACtG,eAAO,8CAAWA,OAAM,UAAU,QAAG,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MAC9E;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI,QAAQ;AACR,iBAAO,8CAAWA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC,IAAI,OAAO,IAAI;AAAA,QACtF;AACA,eAAO,8CAAWA,OAAM,MAAM,iBAAO,GAAG,GAAGA,OAAM,QAAQ,SAAS,CAAC;AAAA,MACvE;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW,eAAe;AACjC,iBAAO,2DAAc,OAAO,MAAM;AAAA,QACtC;AACA,YAAI,OAAO,WAAW;AAClB,iBAAO,2DAAc,OAAO,MAAM;AACtC,YAAI,OAAO,WAAW;AAClB,iBAAO,iEAAe,OAAO,QAAQ;AACzC,YAAI,OAAO,WAAW;AAClB,iBAAO,4EAAgB,OAAO,OAAO;AACzC,eAAO,sBAAO,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACjE;AAAA,MACA,KAAK;AACD,eAAO,0DAAaA,OAAM,OAAO;AAAA,MACrC,KAAK;AACD,eAAO,6CAAUA,OAAM,KAAK,SAAS,IAAI,WAAM,EAAE,SAAS,WAAWA,OAAM,MAAM,QAAG,CAAC;AAAA,MACzF,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,GAAGA,OAAM,MAAM;AAAA,MAC1B;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,gBAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;ACzGA,IAAME,UAAQ,MAAM;AAChB,QAAM,UAAU;AAAA,IACZ,QAAQ,EAAE,MAAM,UAAO,MAAM,QAAK;AAAA,IAClC,MAAM,EAAE,MAAM,SAAS,MAAM,QAAK;AAAA,IAClC,OAAO,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,IAClC,KAAK,EAAE,MAAM,QAAQ,MAAM,QAAK;AAAA,EACpC;AACA,WAAS,UAAU,QAAQ;AACvB,WAAO,QAAQ,MAAM,KAAK;AAAA,EAC9B;AACA,QAAM,mBAAmB;AAAA,IACrB,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,MAAM;AAAA,IACN,KAAK;AAAA,IACL,kBAAkB;AAAA,EACtB;AACA,QAAM,iBAAiB;AAAA,IACnB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,OAAO;AAAA,EACX;AACA,SAAO,CAACC,WAAU;AACd,YAAQA,OAAM,MAAM;AAAA,MAChB,KAAK,gBAAgB;AACjB,cAAM,WAAW,eAAeA,OAAM,QAAQ,KAAKA,OAAM;AACzD,cAAM,eAAoB,WAAWA,OAAM,KAAK;AAChD,cAAM,WAAW,eAAe,YAAY,KAAK;AACjD,YAAI,SAAS,KAAKA,OAAM,QAAQ,GAAG;AAC/B,iBAAO,2EAA0CA,OAAM,QAAQ,+BAAe,QAAQ;AAAA,QAC1F;AACA,eAAO,gEAA+B,QAAQ,+BAAe,QAAQ;AAAA,MACzE;AAAA,MACA,KAAK;AACD,YAAIA,OAAM,OAAO,WAAW;AACxB,iBAAO,gEAAoC,mBAAmBA,OAAM,OAAO,CAAC,CAAC,CAAC;AAClF,eAAO,wEAAqC,WAAWA,OAAM,QAAQ,GAAG,CAAC;AAAA,MAC7E,KAAK,WAAW;AACZ,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,kEAA+BA,OAAM,UAAU,KAAK,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,OAAO,IAAI,OAAO,IAAI;AACpH,eAAO,4DAA4B,GAAG,GAAGA,OAAM,OAAO;AAAA,MAC1D;AAAA,MACA,KAAK,aAAa;AACd,cAAM,MAAMA,OAAM,YAAY,OAAO;AACrC,cAAM,SAAS,UAAUA,OAAM,MAAM;AACrC,YAAI;AACA,iBAAO,sDAA6BA,OAAM,MAAM,IAAI,OAAO,IAAI,IAAI,GAAG,GAAGA,OAAM,OAAO,IAAI,OAAO,IAAI;AACzG,eAAO,gDAA0B,GAAG,GAAGA,OAAM,OAAO;AAAA,MACxD;AAAA,MACA,KAAK,kBAAkB;AACnB,cAAM,SAASA;AACf,YAAI,OAAO,WAAW;AAClB,iBAAO,4HAAsC,OAAO,MAAM;AAC9D,YAAI,OAAO,WAAW;AAClB,iBAAO,yGAAoC,OAAO,MAAM;AAC5D,YAAI,OAAO,WAAW;AAClB,iBAAO,oFAA4B,OAAO,QAAQ;AACtD,YAAI,OAAO,WAAW;AAClB,iBAAO,+GAAqC,OAAO,OAAO;AAC9D,eAAO,uBAAU,iBAAiB,OAAO,MAAM,KAAKA,OAAM,MAAM;AAAA,MACpE;AAAA,MACA,KAAK;AACD,eAAO,8GAA0CA,OAAM,OAAO;AAAA,MAClE,KAAK;AACD,eAAO,4CAAsB,WAAWA,OAAM,MAAM,IAAI,CAAC;AAAA,MAC7D,KAAK;AACD,eAAO,mDAAqBA,OAAM,MAAM;AAAA,MAC5C,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO,qCAAkBA,OAAM,MAAM;AAAA,MACzC;AACI,eAAO;AAAA,IACf;AAAA,EACJ;AACJ;AACe,SAAR,aAAoB;AACvB,SAAO;AAAA,IACH,aAAaD,QAAM;AAAA,EACvB;AACJ;;;AC1GA,IAAIE;AACG,IAAM,UAAU,uBAAO,WAAW;AAClC,IAAM,SAAS,uBAAO,UAAU;AAChC,IAAM,eAAN,MAAmB;AAAA,EACtB,cAAc;AACV,SAAK,OAAO,oBAAI,QAAQ;AACxB,SAAK,SAAS,oBAAI,IAAI;AAAA,EAC1B;AAAA,EACA,IAAI,WAAW,OAAO;AAClB,UAAMC,QAAO,MAAM,CAAC;AACpB,SAAK,KAAK,IAAI,QAAQA,KAAI;AAC1B,QAAIA,SAAQ,OAAOA,UAAS,YAAY,QAAQA,OAAM;AAClD,WAAK,OAAO,IAAIA,MAAK,IAAI,MAAM;AAAA,IACnC;AACA,WAAO;AAAA,EACX;AAAA,EACA,QAAQ;AACJ,SAAK,OAAO,oBAAI,QAAQ;AACxB,SAAK,SAAS,oBAAI,IAAI;AACtB,WAAO;AAAA,EACX;AAAA,EACA,OAAO,QAAQ;AACX,UAAMA,QAAO,KAAK,KAAK,IAAI,MAAM;AACjC,QAAIA,SAAQ,OAAOA,UAAS,YAAY,QAAQA,OAAM;AAClD,WAAK,OAAO,OAAOA,MAAK,EAAE;AAAA,IAC9B;AACA,SAAK,KAAK,OAAO,MAAM;AACvB,WAAO;AAAA,EACX;AAAA,EACA,IAAI,QAAQ;AAGR,UAAM,IAAI,OAAO,KAAK;AACtB,QAAI,GAAG;AACH,YAAM,KAAK,EAAE,GAAI,KAAK,IAAI,CAAC,KAAK,CAAC,EAAG;AACpC,aAAO,GAAG;AACV,YAAM,IAAI,EAAE,GAAG,IAAI,GAAG,KAAK,KAAK,IAAI,MAAM,EAAE;AAC5C,aAAO,OAAO,KAAK,CAAC,EAAE,SAAS,IAAI;AAAA,IACvC;AACA,WAAO,KAAK,KAAK,IAAI,MAAM;AAAA,EAC/B;AAAA,EACA,IAAI,QAAQ;AACR,WAAO,KAAK,KAAK,IAAI,MAAM;AAAA,EAC/B;AACJ;AAEO,SAAS,WAAW;AACvB,SAAO,IAAI,aAAa;AAC5B;AAAA,CACCD,MAAK,YAAY,yBAAyBA,IAAG,uBAAuB,SAAS;AACvE,IAAM,iBAAiB,WAAW;;;;AC7ClC,SAAS,QAAQE,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,SAAS;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASC,QAAOD,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAOO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAWA,QAAO,QAAQ;AACtC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,gBAAgB;AAAA,EACzB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,aAAa;AACjB;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ,CAAC;AAAA,IACT,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,QAAQ;AACpC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,gBAAgBA,QAAO,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,eAAeA,QAAO,QAAQ;AAC1C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,QAAQ;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASE,YAAWF,QAAO,QAAQ;AACtC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAASG,OAAMH,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO;AACxB,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO;AAC5B,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,EACV,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,QAAQ;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,QAAQ;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,QAAQ;AAChC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,IAAI,OAAO,QAAQ;AAC/B,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,KAAK,OAAO,QAAQ;AAChC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;;AAKO,SAAS,IAAI,OAAO,QAAQ;AAC/B,SAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,KAAK,OAAO,QAAQ;AAChC,SAAO,IAAW,qBAAqB;AAAA,IACnC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA,WAAW;AAAA,EACf,CAAC;AACL;;AAKO,SAAS,UAAU,QAAQ;AAC9B,SAAO,oBAAI,GAAG,MAAM;AACxB;AAAA;AAGO,SAAS,UAAU,QAAQ;AAC9B,SAAO,oBAAI,GAAG,MAAM;AACxB;AAAA;AAGO,SAAS,aAAa,QAAQ;AACjC,SAAO,qBAAK,GAAG,MAAM;AACzB;AAAA;AAGO,SAAS,aAAa,QAAQ;AACjC,SAAO,qBAAK,GAAG,MAAM;AACzB;AAAA;AAEO,SAAS,YAAY,OAAO,QAAQ;AACvC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAAS,SAAS,QAAQ;AACtC,SAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAAS,SAAS,QAAQ;AACtC,SAAO,IAAW,iBAAiB;AAAA,IAC/B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,MAAM,MAAM,QAAQ;AAChC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,SAAS,QAAQ;AACxC,QAAM,KAAK,IAAW,mBAAmB;AAAA,IACrC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAAA;AAEO,SAAS,WAAW,SAAS,QAAQ;AACxC,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,QAAQ,QAAQ,QAAQ;AACpC,SAAO,IAAW,sBAAsB;AAAA,IACpC,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,OAAO,SAAS,QAAQ;AACpC,SAAO,IAAW,eAAe;AAAA,IAC7B,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,QAAQ;AAC/B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,QAAQ;AAC/B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,UAAU,QAAQ;AACxC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,YAAY,QAAQ,QAAQ;AACxC,SAAO,IAAW,oBAAoB;AAAA,IAClC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,QAAQ,QAAQ;AACtC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,GAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAU,UAAU,QAAQ,QAAQ;AAChD,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAM,OAAO,QAAQ;AACjC,SAAO,IAAW,kBAAkB;AAAA,IAChC,OAAO;AAAA,IACP,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAW,IAAI;AAC3B,SAAO,IAAW,mBAAmB;AAAA,IACjC,OAAO;AAAA,IACP;AAAA,EACJ,CAAC;AACL;AAAA;AAGO,SAAS,WAAW,MAAM;AAC7B,SAAO,2BAAW,CAAC,UAAU,MAAM,UAAU,IAAI,CAAC;AACtD;AAAA;AAGO,SAAS,QAAQ;AACpB,SAAO,2BAAW,CAAC,UAAU,MAAM,KAAK,CAAC;AAC7C;AAAA;AAGO,SAAS,eAAe;AAC3B,SAAO,2BAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AACpD;AAAA;AAGO,SAAS,eAAe;AAC3B,SAAO,2BAAW,CAAC,UAAU,MAAM,YAAY,CAAC;AACpD;AAAA;AAGO,SAAS,WAAW;AACvB,SAAO,2BAAW,CAAC,UAAe,QAAQ,KAAK,CAAC;AACpD;AAAA;AAEO,SAAS,OAAOI,QAAO,SAAS,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA;AAAA;AAAA;AAAA,IAIA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,SAAS,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,SAAS,KAAKA,QAAO,SAAS,QAAQ;AACzC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,oBAAoBA,QAAO,eAAe,SAAS,QAAQ;AACvE,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,cAAcA,QAAO,MAAM,OAAO;AAC9C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AAAA;AAOO,SAAS,OAAOA,QAAO,OAAO,eAAe,SAAS;AACzD,QAAM,UAAU,yBAAiC;AACjD,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,OAAO,UAAU,gBAAgB;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,SAAS,WAAW,QAAQ;AACvD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,SAAS,WAAW,QAAQ;AACpD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,KAAKA,QAAO,WAAW,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ,QAAQ;AACzC,QAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AAYxF,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AASO,SAAS,YAAYA,QAAO,SAAS,QAAQ;AAChD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,OAAO,QAAQ;AAC3C,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IAC7C,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,WAAWA,QAAO,IAAI;AAClC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW,cAAc;AACrD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAS,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,aAAaA,QAAO,WAAW,QAAQ;AACnD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,OAAOA,QAAO,WAAW,YAAY;AACjD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,KAAK,KAAK;AACnC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,UAAUA,QAAO,WAAW;AACxC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,iBAAiBA,QAAO,OAAO,QAAQ;AACnD,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,IACA,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAAA;AAEO,SAAS,MAAMA,QAAO,QAAQ;AACjC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,SAASA,QAAO,WAAW;AACvC,SAAO,IAAIA,OAAM;AAAA,IACb,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAAA;AAEO,SAAS,QAAQA,QAAO,IAAI,SAAS;AACxC,QAAM,OAAY,gBAAgB,OAAO;AACzC,OAAK,UAAU,KAAK,QAAQ;AAC5B,QAAM,SAAS,IAAIA,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,GAAG;AAAA,EACP,CAAC;AACD,SAAO;AACX;AAAA;AAGO,SAAS,QAAQA,QAAO,IAAI,SAAS;AACxC,QAAM,SAAS,IAAIA,OAAM;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP;AAAA,IACA,GAAQ,gBAAgB,OAAO;AAAA,EACnC,CAAC;AACD,SAAO;AACX;AAAA;AAEO,SAAS,aAAa,IAAI,QAAQ;AACrC,QAAM,KAAK,uBAAO,CAAC,YAAY;AAC3B,YAAQ,WAAW,CAACC,WAAU;AAC1B,UAAI,OAAOA,WAAU,UAAU;AAC3B,gBAAQ,OAAO,KAAU,MAAMA,QAAO,QAAQ,OAAO,GAAG,KAAK,GAAG,CAAC;AAAA,MACrE,OACK;AAED,cAAM,SAASA;AACf,YAAI,OAAO;AACP,iBAAO,WAAW;AACtB,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,UAAU,OAAO,QAAQ,QAAQ;AACxC,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,aAAa,OAAO,WAAW,CAAC,GAAG,KAAK,IAAI;AACnD,gBAAQ,OAAO,KAAU,MAAM,MAAM,CAAC;AAAA,MAC1C;AAAA,IACJ;AACA,WAAO,GAAG,QAAQ,OAAO,OAAO;AAAA,EACpC,GAAG,MAAM;AACT,SAAO;AACX;AAAA;AAEO,SAAS,OAAO,IAAI,QAAQ;AAC/B,QAAM,KAAK,IAAW,UAAU;AAAA,IAC5B,OAAO;AAAA,IACP,GAAQ,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACD,KAAG,KAAK,QAAQ;AAChB,SAAO;AACX;AAAA;AAEO,SAAS,SAAS,aAAa;AAClC,QAAM,KAAK,IAAW,UAAU,EAAE,OAAO,WAAW,CAAC;AACrD,KAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AACN,YAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AACzD,MAAW,eAAe,IAAI,MAAM,EAAE,GAAG,UAAU,YAAY,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,KAAG,KAAK,QAAQ,MAAM;AAAA,EAAE;AACxB,SAAO;AACX;AAAA;AAEO,SAAS,KAAK,UAAU;AAC3B,QAAM,KAAK,IAAW,UAAU,EAAE,OAAO,OAAO,CAAC;AACjD,KAAG,KAAK,WAAW;AAAA,IACf,CAAC,SAAS;AACN,YAAM,WAAsB,eAAe,IAAI,IAAI,KAAK,CAAC;AACzD,MAAW,eAAe,IAAI,MAAM,EAAE,GAAG,UAAU,GAAG,SAAS,CAAC;AAAA,IACpE;AAAA,EACJ;AACA,KAAG,KAAK,QAAQ,MAAM;AAAA,EAAE;AACxB,SAAO;AACX;AAAA;AAEO,SAAS,YAAY,SAAS,SAAS;AAC1C,QAAM,SAAc,gBAAgB,OAAO;AAC3C,MAAI,cAAc,OAAO,UAAU,CAAC,QAAQ,KAAK,OAAO,MAAM,KAAK,SAAS;AAC5E,MAAI,aAAa,OAAO,SAAS,CAAC,SAAS,KAAK,MAAM,OAAO,KAAK,UAAU;AAC5E,MAAI,OAAO,SAAS,aAAa;AAC7B,kBAAc,YAAY,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAClF,iBAAa,WAAW,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,YAAY,IAAI,CAAE;AAAA,EACpF;AACA,QAAM,YAAY,IAAI,IAAI,WAAW;AACrC,QAAM,WAAW,IAAI,IAAI,UAAU;AACnC,QAAM,SAAS,QAAQ,SAAiB;AACxC,QAAM,WAAW,QAAQ,WAAmB;AAC5C,QAAM,UAAU,QAAQ,UAAkB;AAC1C,QAAM,eAAe,IAAI,QAAQ,EAAE,MAAM,UAAU,OAAO,OAAO,MAAM,CAAC;AACxE,QAAM,gBAAgB,IAAI,SAAS,EAAE,MAAM,WAAW,OAAO,OAAO,MAAM,CAAC;AAC3E,QAAMC,SAAQ,IAAI,OAAO;AAAA,IACrB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,YAAY,CAAC,OAAO,YAAY;AAC5B,UAAI,OAAO;AACX,UAAI,OAAO,SAAS;AAChB,eAAO,KAAK,YAAY;AAC5B,UAAI,UAAU,IAAI,IAAI,GAAG;AACrB,eAAO;AAAA,MACX,WACS,SAAS,IAAI,IAAI,GAAG;AACzB,eAAO;AAAA,MACX,OACK;AACD,gBAAQ,OAAO,KAAK;AAAA,UAChB,MAAM;AAAA,UACN,UAAU;AAAA,UACV,QAAQ,CAAC,GAAG,WAAW,GAAG,QAAQ;AAAA,UAClC,OAAO,QAAQ;AAAA,UACf,MAAMA;AAAA,UACN,UAAU;AAAA,QACd,CAAC;AACD,eAAO,CAAC;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,mBAAmB,CAAC,OAAO,aAAa;AACpC,UAAI,UAAU,MAAM;AAChB,eAAO,YAAY,CAAC,KAAK;AAAA,MAC7B,OACK;AACD,eAAO,WAAW,CAAC,KAAK;AAAA,MAC5B;AAAA,IACJ;AAAA,IACA,OAAO,OAAO;AAAA,EAClB,CAAC;AACD,SAAOA;AACX;AAAA;AAEO,SAAS,cAAcF,QAAO,QAAQ,WAAW,UAAU,CAAC,GAAG;AAClE,QAAM,SAAc,gBAAgB,OAAO;AAC3C,QAAM,MAAM;AAAA,IACR,GAAQ,gBAAgB,OAAO;AAAA,IAC/B,OAAO;AAAA,IACP,MAAM;AAAA,IACN;AAAA,IACA,IAAI,OAAO,cAAc,aAAa,YAAY,CAAC,QAAQ,UAAU,KAAK,GAAG;AAAA,IAC7E,GAAG;AAAA,EACP;AACA,MAAI,qBAAqB,QAAQ;AAC7B,QAAI,UAAU;AAAA,EAClB;AACA,QAAM,OAAO,IAAIA,OAAM,GAAG;AAC1B,SAAO;AACX;;;ACrjCO,SAAS,kBAAkB,QAAQ;AAEtC,MAAI,SAAS,QAAQ,UAAU;AAC/B,MAAI,WAAW;AACX,aAAS;AACb,MAAI,WAAW;AACX,aAAS;AACb,SAAO;AAAA,IACH,YAAY,OAAO,cAAc,CAAC;AAAA,IAClC,kBAAkB,QAAQ,YAAY;AAAA,IACtC;AAAA,IACA,iBAAiB,QAAQ,mBAAmB;AAAA,IAC5C,UAAU,QAAQ,aAAa,MAAM;AAAA,IAAE;AAAA,IACvC,IAAI,QAAQ,MAAM;AAAA,IAClB,SAAS;AAAA,IACT,MAAM,oBAAI,IAAI;AAAA,IACd,QAAQ,QAAQ,UAAU;AAAA,IAC1B,QAAQ,QAAQ,UAAU;AAAA,IAC1B,UAAU,QAAQ,YAAY;AAAA,EAClC;AACJ;AACO,SAASG,SAAQ,QAAQ,KAAK,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AACzE,MAAIC;AACJ,QAAM,MAAM,OAAO,KAAK;AAExB,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,MAAM;AACN,SAAK;AAEL,UAAM,UAAU,QAAQ,WAAW,SAAS,MAAM;AAClD,QAAI,SAAS;AACT,WAAK,QAAQ,QAAQ;AAAA,IACzB;AACA,WAAO,KAAK;AAAA,EAChB;AAEA,QAAM,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,QAAW,MAAM,QAAQ,KAAK;AAC5E,MAAI,KAAK,IAAI,QAAQ,MAAM;AAE3B,QAAM,iBAAiB,OAAO,KAAK,eAAe;AAClD,MAAI,gBAAgB;AAChB,WAAO,SAAS;AAAA,EACpB,OACK;AACD,UAAM,SAAS;AAAA,MACX,GAAG;AAAA,MACH,YAAY,CAAC,GAAG,QAAQ,YAAY,MAAM;AAAA,MAC1C,MAAM,QAAQ;AAAA,IAClB;AACA,QAAI,OAAO,KAAK,mBAAmB;AAC/B,aAAO,KAAK,kBAAkB,KAAK,OAAO,QAAQ,MAAM;AAAA,IAC5D,OACK;AACD,YAAM,QAAQ,OAAO;AACrB,YAAM,YAAY,IAAI,WAAW,IAAI,IAAI;AACzC,UAAI,CAAC,WAAW;AACZ,cAAM,IAAI,MAAM,uDAAuD,IAAI,IAAI,EAAE;AAAA,MACrF;AACA,gBAAU,QAAQ,KAAK,OAAO,MAAM;AAAA,IACxC;AACA,UAAM,SAAS,OAAO,KAAK;AAC3B,QAAI,QAAQ;AAER,UAAI,CAAC,OAAO;AACR,eAAO,MAAM;AACjB,MAAAD,SAAQ,QAAQ,KAAK,MAAM;AAC3B,UAAI,KAAK,IAAI,MAAM,EAAE,WAAW;AAAA,IACpC;AAAA,EACJ;AAEA,QAAME,QAAO,IAAI,iBAAiB,IAAI,MAAM;AAC5C,MAAIA;AACA,WAAO,OAAO,OAAO,QAAQA,KAAI;AACrC,MAAI,IAAI,OAAO,WAAW,eAAe,MAAM,GAAG;AAE9C,WAAO,OAAO,OAAO;AACrB,WAAO,OAAO,OAAO;AAAA,EACzB;AAEA,MAAI,IAAI,OAAO,WAAW,eAAe,OAAO;AAC5C,KAACD,MAAK,OAAO,QAAQ,YAAYA,IAAG,UAAU,OAAO,OAAO;AAChE,SAAO,OAAO,OAAO;AAErB,QAAM,UAAU,IAAI,KAAK,IAAI,MAAM;AACnC,SAAO,QAAQ;AACnB;AACO,SAAS,YAAY,KAAK,QAE/B;AAEE,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,2CAA2C;AAE/D,QAAM,aAAa,oBAAI,IAAI;AAC3B,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,CAAC,CAAC,GAAG;AAC/C,QAAI,IAAI;AACJ,YAAM,WAAW,WAAW,IAAI,EAAE;AAClC,UAAI,YAAY,aAAa,MAAM,CAAC,GAAG;AACnC,cAAM,IAAI,MAAM,wBAAwB,EAAE,mHAAmH;AAAA,MACjK;AACA,iBAAW,IAAI,IAAI,MAAM,CAAC,CAAC;AAAA,IAC/B;AAAA,EACJ;AAGA,QAAM,UAAU,CAAC,UAAU;AAKvB,UAAM,cAAc,IAAI,WAAW,kBAAkB,UAAU;AAC/D,QAAI,IAAI,UAAU;AACd,YAAM,aAAa,IAAI,SAAS,SAAS,IAAI,MAAM,CAAC,CAAC,GAAG;AAExD,YAAM,eAAe,IAAI,SAAS,QAAQ,CAACE,QAAOA;AAClD,UAAI,YAAY;AACZ,eAAO,EAAE,KAAK,aAAa,UAAU,EAAE;AAAA,MAC3C;AAEA,YAAM,KAAK,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,OAAO,MAAM,SAAS,IAAI,SAAS;AACzE,YAAM,CAAC,EAAE,QAAQ;AACjB,aAAO,EAAE,OAAO,IAAI,KAAK,GAAG,aAAa,UAAU,CAAC,KAAK,WAAW,IAAI,EAAE,GAAG;AAAA,IACjF;AACA,QAAI,MAAM,CAAC,MAAM,MAAM;AACnB,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAEA,UAAM,YAAY;AAClB,UAAM,eAAe,GAAG,SAAS,IAAI,WAAW;AAChD,UAAM,QAAQ,MAAM,CAAC,EAAE,OAAO,MAAM,WAAW,IAAI,SAAS;AAC5D,WAAO,EAAE,OAAO,KAAK,eAAe,MAAM;AAAA,EAC9C;AAGA,QAAM,eAAe,CAAC,UAAU;AAE5B,QAAI,MAAM,CAAC,EAAE,OAAO,MAAM;AACtB;AAAA,IACJ;AACA,UAAM,OAAO,MAAM,CAAC;AACpB,UAAM,EAAE,KAAK,MAAM,IAAI,QAAQ,KAAK;AACpC,SAAK,MAAM,EAAE,GAAG,KAAK,OAAO;AAG5B,QAAI;AACA,WAAK,QAAQ;AAEjB,UAAMC,UAAS,KAAK;AACpB,eAAW,OAAOA,SAAQ;AACtB,aAAOA,QAAO,GAAG;AAAA,IACrB;AACA,IAAAA,QAAO,OAAO;AAAA,EAClB;AAGA,MAAI,IAAI,WAAW,SAAS;AACxB,eAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,YAAM,OAAO,MAAM,CAAC;AACpB,UAAI,KAAK,OAAO;AACZ,cAAM,IAAI,MAAM,qBACP,KAAK,OAAO,KAAK,GAAG,CAAC;AAAA;AAAA,iFACwD;AAAA,MAC1F;AAAA,IACJ;AAAA,EACJ;AAEA,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,OAAO,MAAM,CAAC;AAEpB,QAAI,WAAW,MAAM,CAAC,GAAG;AACrB,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,IAAI,UAAU;AACd,YAAM,MAAM,IAAI,SAAS,SAAS,IAAI,MAAM,CAAC,CAAC,GAAG;AACjD,UAAI,WAAW,MAAM,CAAC,KAAK,KAAK;AAC5B,qBAAa,KAAK;AAClB;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,KAAK,IAAI,iBAAiB,IAAI,MAAM,CAAC,CAAC,GAAG;AAC/C,QAAI,IAAI;AACJ,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,KAAK,OAAO;AAEZ,mBAAa,KAAK;AAClB;AAAA,IACJ;AAEA,QAAI,KAAK,QAAQ,GAAG;AAChB,UAAI,IAAI,WAAW,OAAO;AACtB,qBAAa,KAAK;AAElB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,SAAS,SAAS,KAAK,QAAQ;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,2CAA2C;AAE/D,QAAM,aAAa,CAAC,cAAc;AAC9B,UAAM,OAAO,IAAI,KAAK,IAAI,SAAS;AAEnC,QAAI,KAAK,QAAQ;AACb;AACJ,UAAMA,UAAS,KAAK,OAAO,KAAK;AAChC,UAAM,UAAU,EAAE,GAAGA,QAAO;AAC5B,UAAM,MAAM,KAAK;AACjB,SAAK,MAAM;AACX,QAAI,KAAK;AACL,iBAAW,GAAG;AACd,YAAM,UAAU,IAAI,KAAK,IAAI,GAAG;AAChC,YAAM,YAAY,QAAQ;AAE1B,UAAI,UAAU,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBAAgB;AAE5G,QAAAA,QAAO,QAAQA,QAAO,SAAS,CAAC;AAChC,QAAAA,QAAO,MAAM,KAAK,SAAS;AAAA,MAC/B,OACK;AACD,eAAO,OAAOA,SAAQ,SAAS;AAAA,MACnC;AAEA,aAAO,OAAOA,SAAQ,OAAO;AAC7B,YAAM,cAAc,UAAU,KAAK,WAAW;AAE9C,UAAI,aAAa;AACb,mBAAW,OAAOA,SAAQ;AACtB,cAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,cAAI,EAAE,OAAO,UAAU;AACnB,mBAAOA,QAAO,GAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,UAAU,QAAQ,QAAQ,KAAK;AAC/B,mBAAW,OAAOA,SAAQ;AACtB,cAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,cAAI,OAAO,QAAQ,OAAO,KAAK,UAAUA,QAAO,GAAG,CAAC,MAAM,KAAK,UAAU,QAAQ,IAAI,GAAG,CAAC,GAAG;AACxF,mBAAOA,QAAO,GAAG;AAAA,UACrB;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAIA,UAAM,SAAS,UAAU,KAAK;AAC9B,QAAI,UAAU,WAAW,KAAK;AAE1B,iBAAW,MAAM;AACjB,YAAM,aAAa,IAAI,KAAK,IAAI,MAAM;AACtC,UAAI,YAAY,OAAO,MAAM;AACzB,QAAAA,QAAO,OAAO,WAAW,OAAO;AAEhC,YAAI,WAAW,KAAK;AAChB,qBAAW,OAAOA,SAAQ;AACtB,gBAAI,QAAQ,UAAU,QAAQ;AAC1B;AACJ,gBAAI,OAAO,WAAW,OAAO,KAAK,UAAUA,QAAO,GAAG,CAAC,MAAM,KAAK,UAAU,WAAW,IAAI,GAAG,CAAC,GAAG;AAC9F,qBAAOA,QAAO,GAAG;AAAA,YACrB;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,SAAS;AAAA,MACT;AAAA,MACA,YAAYA;AAAA,MACZ,MAAM,KAAK,QAAQ,CAAC;AAAA,IACxB,CAAC;AAAA,EACL;AACA,aAAW,SAAS,CAAC,GAAG,IAAI,KAAK,QAAQ,CAAC,EAAE,QAAQ,GAAG;AACnD,eAAW,MAAM,CAAC,CAAC;AAAA,EACvB;AACA,QAAM,SAAS,CAAC;AAChB,MAAI,IAAI,WAAW,iBAAiB;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,YAAY;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,YAAY;AAChC,WAAO,UAAU;AAAA,EACrB,WACS,IAAI,WAAW,eAAe;AAAA,EAEvC,OACK;AAAA,EAEL;AACA,MAAI,IAAI,UAAU,KAAK;AACnB,UAAM,KAAK,IAAI,SAAS,SAAS,IAAI,MAAM,GAAG;AAC9C,QAAI,CAAC;AACD,YAAM,IAAI,MAAM,oCAAoC;AACxD,WAAO,MAAM,IAAI,SAAS,IAAI,EAAE;AAAA,EACpC;AACA,SAAO,OAAO,QAAQ,KAAK,OAAO,KAAK,MAAM;AAK7C,QAAM,aAAa,IAAI,iBAAiB,IAAI,MAAM,GAAG;AACrD,MAAI,eAAe,UAAa,OAAO,OAAO;AAC1C,WAAO,OAAO;AAElB,QAAM,OAAO,IAAI,UAAU,QAAQ,CAAC;AACpC,aAAW,SAAS,IAAI,KAAK,QAAQ,GAAG;AACpC,UAAM,OAAO,MAAM,CAAC;AACpB,QAAI,KAAK,OAAO,KAAK,OAAO;AACxB,UAAI,KAAK,IAAI,OAAO,KAAK;AACrB,eAAO,KAAK,IAAI;AACpB,WAAK,KAAK,KAAK,IAAI,KAAK;AAAA,IAC5B;AAAA,EACJ;AAEA,MAAI,IAAI,UAAU;AAAA,EAClB,OACK;AACD,QAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAC9B,UAAI,IAAI,WAAW,iBAAiB;AAChC,eAAO,QAAQ;AAAA,MACnB,OACK;AACD,eAAO,cAAc;AAAA,MACzB;AAAA,IACJ;AAAA,EACJ;AACA,MAAI;AAIA,UAAM,YAAY,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AACnD,WAAO,eAAe,WAAW,aAAa;AAAA,MAC1C,OAAO;AAAA,QACH,GAAG,OAAO,WAAW;AAAA,QACrB,YAAY;AAAA,UACR,OAAO,+BAA+B,QAAQ,SAAS,IAAI,UAAU;AAAA,UACrE,QAAQ,+BAA+B,QAAQ,UAAU,IAAI,UAAU;AAAA,QAC3E;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ,UAAU;AAAA,IACd,CAAC;AACD,WAAO;AAAA,EACX,SACO,MAAM;AACT,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACtD;AACJ;AACA,SAAS,eAAe,SAAS,MAAM;AACnC,QAAM,MAAM,QAAQ,EAAE,MAAM,oBAAI,IAAI,EAAE;AACtC,MAAI,IAAI,KAAK,IAAI,OAAO;AACpB,WAAO;AACX,MAAI,KAAK,IAAI,OAAO;AACpB,QAAM,MAAM,QAAQ,KAAK;AACzB,MAAI,IAAI,SAAS;AACb,WAAO;AACX,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,SAAS,GAAG;AAC1C,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,WAAW,GAAG;AAC5C,MAAI,IAAI,SAAS;AACb,WAAO,eAAe,IAAI,OAAO,GAAG,GAAG;AAC3C,MAAI,IAAI,SAAS,aACb,IAAI,SAAS,cACb,IAAI,SAAS,iBACb,IAAI,SAAS,cACb,IAAI,SAAS,cACb,IAAI,SAAS,aACb,IAAI,SAAS,YAAY;AACzB,WAAO,eAAe,IAAI,WAAW,GAAG;AAAA,EAC5C;AACA,MAAI,IAAI,SAAS,gBAAgB;AAC7B,WAAO,eAAe,IAAI,MAAM,GAAG,KAAK,eAAe,IAAI,OAAO,GAAG;AAAA,EACzE;AACA,MAAI,IAAI,SAAS,YAAY,IAAI,SAAS,OAAO;AAC7C,WAAO,eAAe,IAAI,SAAS,GAAG,KAAK,eAAe,IAAI,WAAW,GAAG;AAAA,EAChF;AACA,MAAI,IAAI,SAAS,QAAQ;AACrB,QAAI,QAAQ,KAAK,OAAO,IAAI,WAAW;AACnC,aAAO;AACX,WAAO,eAAe,IAAI,IAAI,GAAG,KAAK,eAAe,IAAI,KAAK,GAAG;AAAA,EACrE;AACA,MAAI,IAAI,SAAS,UAAU;AACvB,eAAW,OAAO,IAAI,OAAO;AACzB,UAAI,eAAe,IAAI,MAAM,GAAG,GAAG,GAAG;AAClC,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,SAAS;AACtB,eAAW,UAAU,IAAI,SAAS;AAC9B,UAAI,eAAe,QAAQ,GAAG;AAC1B,eAAO;AAAA,IACf;AACA,WAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,SAAS;AACtB,eAAW,QAAQ,IAAI,OAAO;AAC1B,UAAI,eAAe,MAAM,GAAG;AACxB,eAAO;AAAA,IACf;AACA,QAAI,IAAI,QAAQ,eAAe,IAAI,MAAM,GAAG;AACxC,aAAO;AACX,WAAO;AAAA,EACX;AACA,SAAO;AACX;AAKO,IAAM,2BAA2B,CAAC,QAAQ,aAAa,CAAC,MAAM,CAAC,WAAW;AAC7E,QAAM,MAAM,kBAAkB,EAAE,GAAG,QAAQ,WAAW,CAAC;AACvD,EAAAJ,SAAQ,QAAQ,GAAG;AACnB,cAAY,KAAK,MAAM;AACvB,SAAO,SAAS,KAAK,MAAM;AAC/B;AACO,IAAM,iCAAiC,CAAC,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC,WAAW;AACvF,QAAM,EAAE,gBAAgB,OAAO,IAAI,UAAU,CAAC;AAC9C,QAAM,MAAM,kBAAkB,EAAE,GAAI,kBAAkB,CAAC,GAAI,QAAQ,IAAI,WAAW,CAAC;AACnF,EAAAA,SAAQ,QAAQ,GAAG;AACnB,cAAY,KAAK,MAAM;AACvB,SAAO,SAAS,KAAK,MAAM;AAC/B;;;AC7bA,IAAM,YAAY;AAAA,EACd,MAAM;AAAA,EACN,KAAK;AAAA,EACL,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AAAA;AACX;AAEO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAC5D,QAAMK,QAAO;AACb,EAAAA,MAAK,OAAO;AACZ,QAAM,EAAE,SAAS,SAAS,QAAQ,UAAU,gBAAgB,IAAI,OAAO,KAClE;AACL,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,YAAY;AACrB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,YAAY;AAErB,MAAI,QAAQ;AACR,IAAAA,MAAK,SAAS,UAAU,MAAM,KAAK;AACnC,QAAIA,MAAK,WAAW;AAChB,aAAOA,MAAK;AAGhB,QAAI,WAAW,QAAQ;AACnB,aAAOA,MAAK;AAAA,IAChB;AAAA,EACJ;AACA,MAAI;AACA,IAAAA,MAAK,kBAAkB;AAC3B,MAAI,YAAY,SAAS,OAAO,GAAG;AAC/B,UAAM,UAAU,CAAC,GAAG,QAAQ;AAC5B,QAAI,QAAQ,WAAW;AACnB,MAAAA,MAAK,UAAU,QAAQ,CAAC,EAAE;AAAA,aACrB,QAAQ,SAAS,GAAG;AACzB,MAAAA,MAAK,QAAQ;AAAA,QACT,GAAG,QAAQ,IAAI,CAACC,YAAW;AAAA,UACvB,GAAI,IAAI,WAAW,cAAc,IAAI,WAAW,cAAc,IAAI,WAAW,gBACvE,EAAE,MAAM,SAAS,IACjB,CAAC;AAAA,UACP,SAASA,OAAM;AAAA,QACnB,EAAE;AAAA,MACN;AAAA,IACJ;AAAA,EACJ;AACJ;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,YAAY;AAC5D,QAAMD,QAAO;AACb,QAAM,EAAE,SAAS,SAAS,QAAQ,YAAY,kBAAkB,iBAAiB,IAAI,OAAO,KAAK;AACjG,MAAI,OAAO,WAAW,YAAY,OAAO,SAAS,KAAK;AACnD,IAAAA,MAAK,OAAO;AAAA;AAEZ,IAAAA,MAAK,OAAO;AAEhB,QAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAC7F,QAAM,QAAQ,OAAO,qBAAqB,YAAY,qBAAqB,WAAW,OAAO;AAC7F,QAAM,SAAS,IAAI,WAAW,cAAc,IAAI,WAAW;AAC3D,MAAI,OAAO;AACP,QAAI,QAAQ;AACR,MAAAA,MAAK,UAAU;AACf,MAAAA,MAAK,mBAAmB;AAAA,IAC5B,OACK;AACD,MAAAA,MAAK,mBAAmB;AAAA,IAC5B;AAAA,EACJ,WACS,OAAO,YAAY,UAAU;AAClC,IAAAA,MAAK,UAAU;AAAA,EACnB;AACA,MAAI,OAAO;AACP,QAAI,QAAQ;AACR,MAAAA,MAAK,UAAU;AACf,MAAAA,MAAK,mBAAmB;AAAA,IAC5B,OACK;AACD,MAAAA,MAAK,mBAAmB;AAAA,IAC5B;AAAA,EACJ,WACS,OAAO,YAAY,UAAU;AAClC,IAAAA,MAAK,UAAU;AAAA,EACnB;AACA,MAAI,OAAO,eAAe;AACtB,IAAAA,MAAK,aAAa;AAC1B;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAMA,OAAM,YAAY;AAC9D,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,6CAA6C;AAAA,EACjE;AACJ;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAClE;AACJ;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAKA,OAAM,YAAY;AAC1D,MAAI,IAAI,WAAW,eAAe;AAC9B,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,WAAW;AAChB,IAAAA,MAAK,OAAO,CAAC,IAAI;AAAA,EACrB,OACK;AACD,IAAAA,MAAK,OAAO;AAAA,EAChB;AACJ;AACO,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAChE,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,gDAAgD;AAAA,EACpE;AACJ;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC3D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AACJ;AACO,IAAM,iBAAiB,CAAC,SAAS,MAAMA,OAAM,YAAY;AAC5D,EAAAA,MAAK,MAAM,CAAC;AAChB;AACO,IAAM,eAAe,CAAC,SAAS,MAAM,OAAO,YAAY;AAE/D;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAM,OAAO,YAAY;AAEnE;AACO,IAAM,gBAAgB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC3D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,2CAA2C;AAAA,EAC/D;AACJ;AACO,IAAM,gBAAgB,CAAC,QAAQ,MAAMA,OAAM,YAAY;AAC1D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,cAAc,IAAI,OAAO;AAExC,MAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACzC,IAAAA,MAAK,OAAO;AAChB,MAAI,OAAO,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACzC,IAAAA,MAAK,OAAO;AAChB,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAKA,OAAM,YAAY;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,OAAO,CAAC;AACd,aAAW,OAAO,IAAI,QAAQ;AAC1B,QAAI,QAAQ,QAAW;AACnB,UAAI,IAAI,oBAAoB,SAAS;AACjC,cAAM,IAAI,MAAM,0DAA0D;AAAA,MAC9E,OACK;AAAA,MAEL;AAAA,IACJ,WACS,OAAO,QAAQ,UAAU;AAC9B,UAAI,IAAI,oBAAoB,SAAS;AACjC,cAAM,IAAI,MAAM,sDAAsD;AAAA,MAC1E,OACK;AACD,aAAK,KAAK,OAAO,GAAG,CAAC;AAAA,MACzB;AAAA,IACJ,OACK;AACD,WAAK,KAAK,GAAG;AAAA,IACjB;AAAA,EACJ;AACA,MAAI,KAAK,WAAW,GAAG;AAAA,EAEvB,WACS,KAAK,WAAW,GAAG;AACxB,UAAM,MAAM,KAAK,CAAC;AAClB,IAAAA,MAAK,OAAO,QAAQ,OAAO,SAAS,OAAO;AAC3C,QAAI,IAAI,WAAW,cAAc,IAAI,WAAW,eAAe;AAC3D,MAAAA,MAAK,OAAO,CAAC,GAAG;AAAA,IACpB,OACK;AACD,MAAAA,MAAK,QAAQ;AAAA,IACjB;AAAA,EACJ,OACK;AACD,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACvC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AACvC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,OAAO,MAAM,SAAS;AACxC,MAAAA,MAAK,OAAO;AAChB,QAAI,KAAK,MAAM,CAAC,MAAM,MAAM,IAAI;AAC5B,MAAAA,MAAK,OAAO;AAChB,IAAAA,MAAK,OAAO;AAAA,EAChB;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AACO,IAAM,2BAA2B,CAAC,QAAQ,MAAMA,OAAM,YAAY;AACrE,QAAM,QAAQA;AACd,QAAM,UAAU,OAAO,KAAK;AAC5B,MAAI,CAAC;AACD,UAAM,IAAI,MAAM,uCAAuC;AAC3D,QAAM,OAAO;AACb,QAAM,UAAU,QAAQ;AAC5B;AACO,IAAM,gBAAgB,CAAC,QAAQ,MAAMA,OAAM,YAAY;AAC1D,QAAM,QAAQA;AACd,QAAME,QAAO;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,iBAAiB;AAAA,EACrB;AACA,QAAM,EAAE,SAAS,SAAS,KAAK,IAAI,OAAO,KAAK;AAC/C,MAAI,YAAY;AACZ,IAAAA,MAAK,YAAY;AACrB,MAAI,YAAY;AACZ,IAAAA,MAAK,YAAY;AACrB,MAAI,MAAM;AACN,QAAI,KAAK,WAAW,GAAG;AACnB,MAAAA,MAAK,mBAAmB,KAAK,CAAC;AAC9B,aAAO,OAAO,OAAOA,KAAI;AAAA,IAC7B,OACK;AACD,aAAO,OAAO,OAAOA,KAAI;AACzB,YAAM,QAAQ,KAAK,IAAI,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE;AAAA,IAC3D;AAAA,EACJ,OACK;AACD,WAAO,OAAO,OAAOA,KAAI;AAAA,EAC7B;AACJ;AACO,IAAM,mBAAmB,CAAC,SAAS,MAAMF,OAAM,YAAY;AAC9D,EAAAA,MAAK,OAAO;AAChB;AACO,IAAM,kBAAkB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC7D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,mDAAmD;AAAA,EACvE;AACJ;AACO,IAAM,oBAAoB,CAAC,SAAS,KAAK,OAAO,YAAY;AAC/D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACzE;AACJ;AACO,IAAM,qBAAqB,CAAC,SAAS,KAAK,OAAO,YAAY;AAChE,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACrE;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AACO,IAAM,eAAe,CAAC,SAAS,KAAK,OAAO,YAAY;AAC1D,MAAI,IAAI,oBAAoB,SAAS;AACjC,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC9D;AACJ;AAEO,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC1D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,EAAE,SAAS,QAAQ,IAAI,OAAO,KAAK;AACzC,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,EAAAA,MAAK,OAAO;AACZ,EAAAA,MAAK,QAAQG,SAAQ,IAAI,SAAS,KAAK;AAAA,IACnC,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,OAAO;AAAA,EAClC,CAAC;AACL;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC3D,QAAMH,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AACZ,EAAAA,MAAK,aAAa,CAAC;AACnB,QAAM,QAAQ,IAAI;AAClB,aAAW,OAAO,OAAO;AACrB,IAAAA,MAAK,WAAW,GAAG,IAAIG,SAAQ,MAAM,GAAG,GAAG,KAAK;AAAA,MAC5C,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,GAAG;AAAA,IAC5C,CAAC;AAAA,EACL;AAEA,QAAM,UAAU,IAAI,IAAI,OAAO,KAAK,KAAK,CAAC;AAC1C,QAAM,eAAe,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,QAAQ;AACtD,UAAM,IAAI,IAAI,MAAM,GAAG,EAAE;AACzB,QAAI,IAAI,OAAO,SAAS;AACpB,aAAO,EAAE,UAAU;AAAA,IACvB,OACK;AACD,aAAO,EAAE,WAAW;AAAA,IACxB;AAAA,EACJ,CAAC,CAAC;AACF,MAAI,aAAa,OAAO,GAAG;AACvB,IAAAH,MAAK,WAAW,MAAM,KAAK,YAAY;AAAA,EAC3C;AAEA,MAAI,IAAI,UAAU,KAAK,IAAI,SAAS,SAAS;AAEzC,IAAAA,MAAK,uBAAuB;AAAA,EAChC,WACS,CAAC,IAAI,UAAU;AAEpB,QAAI,IAAI,OAAO;AACX,MAAAA,MAAK,uBAAuB;AAAA,EACpC,WACS,IAAI,UAAU;AACnB,IAAAA,MAAK,uBAAuBG,SAAQ,IAAI,UAAU,KAAK;AAAA,MACnD,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA,EACL;AACJ;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAKH,OAAM,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AAGxB,QAAM,cAAc,IAAI,cAAc;AACtC,QAAM,UAAU,IAAI,QAAQ,IAAI,CAAC,GAAG,MAAMG,SAAQ,GAAG,KAAK;AAAA,IACtD,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,cAAc,UAAU,SAAS,CAAC;AAAA,EAC7D,CAAC,CAAC;AACF,MAAI,aAAa;AACb,IAAAH,MAAK,QAAQ;AAAA,EACjB,OACK;AACD,IAAAA,MAAK,QAAQ;AAAA,EACjB;AACJ;AACO,IAAM,wBAAwB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAChE,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,IAAIG,SAAQ,IAAI,MAAM,KAAK;AAAA,IAC7B,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AACD,QAAM,IAAIA,SAAQ,IAAI,OAAO,KAAK;AAAA,IAC9B,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,SAAS,CAAC;AAAA,EACrC,CAAC;AACD,QAAM,uBAAuB,CAAC,QAAQ,WAAW,OAAO,OAAO,KAAK,GAAG,EAAE,WAAW;AACpF,QAAM,QAAQ;AAAA,IACV,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,IAC1C,GAAI,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC9C;AACA,EAAAH,MAAK,QAAQ;AACjB;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC1D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AACZ,QAAM,aAAa,IAAI,WAAW,kBAAkB,gBAAgB;AACpE,QAAM,WAAW,IAAI,WAAW,kBAAkB,UAAU,IAAI,WAAW,gBAAgB,UAAU;AACrG,QAAM,cAAc,IAAI,MAAM,IAAI,CAAC,GAAG,MAAMG,SAAQ,GAAG,KAAK;AAAA,IACxD,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,YAAY,CAAC;AAAA,EACxC,CAAC,CAAC;AACF,QAAM,OAAO,IAAI,OACXA,SAAQ,IAAI,MAAM,KAAK;AAAA,IACrB,GAAG;AAAA,IACH,MAAM,CAAC,GAAG,OAAO,MAAM,UAAU,GAAI,IAAI,WAAW,gBAAgB,CAAC,IAAI,MAAM,MAAM,IAAI,CAAC,CAAE;AAAA,EAChG,CAAC,IACC;AACN,MAAI,IAAI,WAAW,iBAAiB;AAChC,IAAAH,MAAK,cAAc;AACnB,QAAI,MAAM;AACN,MAAAA,MAAK,QAAQ;AAAA,IACjB;AAAA,EACJ,WACS,IAAI,WAAW,eAAe;AACnC,IAAAA,MAAK,QAAQ;AAAA,MACT,OAAO;AAAA,IACX;AACA,QAAI,MAAM;AACN,MAAAA,MAAK,MAAM,MAAM,KAAK,IAAI;AAAA,IAC9B;AACA,IAAAA,MAAK,WAAW,YAAY;AAC5B,QAAI,CAAC,MAAM;AACP,MAAAA,MAAK,WAAW,YAAY;AAAA,IAChC;AAAA,EACJ,OACK;AACD,IAAAA,MAAK,QAAQ;AACb,QAAI,MAAM;AACN,MAAAA,MAAK,kBAAkB;AAAA,IAC3B;AAAA,EACJ;AAEA,QAAM,EAAE,SAAS,QAAQ,IAAI,OAAO,KAAK;AACzC,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACpB,MAAI,OAAO,YAAY;AACnB,IAAAA,MAAK,WAAW;AACxB;AACO,IAAM,kBAAkB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC3D,QAAMA,QAAO;AACb,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,MAAK,OAAO;AAIZ,QAAM,UAAU,IAAI;AACpB,QAAM,SAAS,QAAQ,KAAK;AAC5B,QAAM,WAAW,QAAQ;AACzB,MAAI,IAAI,SAAS,WAAW,YAAY,SAAS,OAAO,GAAG;AAEvD,UAAM,cAAcG,SAAQ,IAAI,WAAW,KAAK;AAAA,MAC5C,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,qBAAqB,GAAG;AAAA,IACnD,CAAC;AACD,IAAAH,MAAK,oBAAoB,CAAC;AAC1B,eAAW,WAAW,UAAU;AAC5B,MAAAA,MAAK,kBAAkB,QAAQ,MAAM,IAAI;AAAA,IAC7C;AAAA,EACJ,OACK;AAED,QAAI,IAAI,WAAW,cAAc,IAAI,WAAW,iBAAiB;AAC7D,MAAAA,MAAK,gBAAgBG,SAAQ,IAAI,SAAS,KAAK;AAAA,QAC3C,GAAG;AAAA,QACH,MAAM,CAAC,GAAG,OAAO,MAAM,eAAe;AAAA,MAC1C,CAAC;AAAA,IACL;AACA,IAAAH,MAAK,uBAAuBG,SAAQ,IAAI,WAAW,KAAK;AAAA,MACpD,GAAG;AAAA,MACH,MAAM,CAAC,GAAG,OAAO,MAAM,sBAAsB;AAAA,IACjD,CAAC;AAAA,EACL;AAEA,QAAM,YAAY,QAAQ,KAAK;AAC/B,MAAI,WAAW;AACX,UAAM,iBAAiB,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,OAAO,MAAM,QAAQ;AAClG,QAAI,eAAe,SAAS,GAAG;AAC3B,MAAAH,MAAK,WAAW;AAAA,IACpB;AAAA,EACJ;AACJ;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,QAAQG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAChD,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,MAAI,IAAI,WAAW,eAAe;AAC9B,SAAK,MAAM,IAAI;AACf,IAAAH,MAAK,WAAW;AAAA,EACpB,OACK;AACD,IAAAA,MAAK,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;AAAA,EACzC;AACJ;AACO,IAAM,uBAAuB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAChE,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAKH,OAAM,WAAW;AAC3D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,EAAAH,MAAK,UAAU,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AAC9D;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,MAAI,IAAI,OAAO;AACX,IAAAH,MAAK,YAAY,KAAK,MAAM,KAAK,UAAU,IAAI,YAAY,CAAC;AACpE;AACO,IAAM,iBAAiB,CAAC,QAAQ,KAAKA,OAAM,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,MAAI;AACJ,MAAI;AACA,iBAAa,IAAI,WAAW,MAAS;AAAA,EACzC,QACM;AACF,UAAM,IAAI,MAAM,uDAAuD;AAAA,EAC3E;AACA,EAAAH,MAAK,UAAU;AACnB;AACO,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AACzD,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,gBAAgB,IAAI,GAAG,KAAK,OAAO,IAAI,eAAe;AAC5D,QAAM,YAAY,IAAI,OAAO,UAAW,gBAAgB,IAAI,MAAM,IAAI,KAAM,IAAI;AAChF,EAAAG,SAAQ,WAAW,KAAK,MAAM;AAC9B,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM;AACf;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAKH,OAAM,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACf,EAAAH,MAAK,WAAW;AACpB;AACO,IAAM,mBAAmB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC5D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAG,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,oBAAoB,CAAC,QAAQ,KAAK,OAAO,WAAW;AAC7D,QAAM,MAAM,OAAO,KAAK;AACxB,EAAAA,SAAQ,IAAI,WAAW,KAAK,MAAM;AAClC,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM,IAAI;AACnB;AACO,IAAM,gBAAgB,CAAC,QAAQ,KAAK,OAAO,WAAW;AACzD,QAAM,YAAY,OAAO,KAAK;AAC9B,EAAAA,SAAQ,WAAW,KAAK,MAAM;AAC9B,QAAM,OAAO,IAAI,KAAK,IAAI,MAAM;AAChC,OAAK,MAAM;AACf;AAEO,IAAM,gBAAgB;AAAA,EACzB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AAAA,EACL,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,KAAK;AAAA,EACL,kBAAkB;AAAA,EAClB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,KAAK;AAAA,EACL,KAAK;AAAA,EACL,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAAA,EACd,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,aAAa;AAAA,EACb,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,MAAM;AACV;AACO,SAAS,aAAa,OAAO,QAAQ;AACxC,MAAI,YAAY,OAAO;AAEnB,UAAMC,YAAW;AACjB,UAAMC,OAAM,kBAAkB,EAAE,GAAG,QAAQ,YAAY,cAAc,CAAC;AACtE,UAAM,OAAO,CAAC;AAEd,eAAW,SAASD,UAAS,OAAO,QAAQ,GAAG;AAC3C,YAAM,CAAC,GAAG,MAAM,IAAI;AACpB,MAAAD,SAAQ,QAAQE,IAAG;AAAA,IACvB;AACA,UAAM,UAAU,CAAC;AACjB,UAAM,WAAW;AAAA,MACb,UAAAD;AAAA,MACA,KAAK,QAAQ;AAAA,MACb;AAAA,IACJ;AAEA,IAAAC,KAAI,WAAW;AAEf,eAAW,SAASD,UAAS,OAAO,QAAQ,GAAG;AAC3C,YAAM,CAAC,KAAK,MAAM,IAAI;AACtB,kBAAYC,MAAK,MAAM;AACvB,cAAQ,GAAG,IAAI,SAASA,MAAK,MAAM;AAAA,IACvC;AACA,QAAI,OAAO,KAAK,IAAI,EAAE,SAAS,GAAG;AAC9B,YAAM,cAAcA,KAAI,WAAW,kBAAkB,UAAU;AAC/D,cAAQ,WAAW;AAAA,QACf,CAAC,WAAW,GAAG;AAAA,MACnB;AAAA,IACJ;AACA,WAAO,EAAE,QAAQ;AAAA,EACrB;AAEA,QAAM,MAAM,kBAAkB,EAAE,GAAG,QAAQ,YAAY,cAAc,CAAC;AACtE,EAAAF,SAAQ,OAAO,GAAG;AAClB,cAAY,KAAK,KAAK;AACtB,SAAO,SAAS,KAAK,KAAK;AAC9B;;;ACrkBO,IAAM,sBAAN,MAA0B;AAAA;AAAA,EAE7B,IAAI,mBAAmB;AACnB,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,SAAS;AACT,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,kBAAkB;AAClB,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,WAAW;AACX,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,KAAK;AACL,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA;AAAA,EAEA,IAAI,UAAU;AACV,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EACA,IAAI,QAAQ,OAAO;AACf,SAAK,IAAI,UAAU;AAAA,EACvB;AAAA;AAAA,EAEA,IAAI,OAAO;AACP,WAAO,KAAK,IAAI;AAAA,EACpB;AAAA,EACA,YAAY,QAAQ;AAEhB,QAAI,mBAAmB,QAAQ,UAAU;AACzC,QAAI,qBAAqB;AACrB,yBAAmB;AACvB,QAAI,qBAAqB;AACrB,yBAAmB;AACvB,SAAK,MAAM,kBAAkB;AAAA,MACzB,YAAY;AAAA,MACZ,QAAQ;AAAA,MACR,GAAI,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,MACpD,GAAI,QAAQ,mBAAmB,EAAE,iBAAiB,OAAO,gBAAgB;AAAA,MACzE,GAAI,QAAQ,YAAY,EAAE,UAAU,OAAO,SAAS;AAAA,MACpD,GAAI,QAAQ,MAAM,EAAE,IAAI,OAAO,GAAG;AAAA,IACtC,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,QAAQ,UAAU,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,EAAE,GAAG;AACpD,WAAOG,SAAQ,QAAQ,KAAK,KAAK,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,KAAK,QAAQ,SAAS;AAElB,QAAI,SAAS;AACT,UAAI,QAAQ;AACR,aAAK,IAAI,SAAS,QAAQ;AAC9B,UAAI,QAAQ;AACR,aAAK,IAAI,SAAS,QAAQ;AAC9B,UAAI,QAAQ;AACR,aAAK,IAAI,WAAW,QAAQ;AAAA,IACpC;AACA,gBAAY,KAAK,KAAK,MAAM;AAC5B,UAAM,SAAS,SAAS,KAAK,KAAK,MAAM;AAExC,UAAM,EAAE,aAAa,GAAG,GAAG,YAAY,IAAI;AAC3C,WAAO;AAAA,EACX;AACJ;;;AC9FA;;;ACAA,IAAAC,mBAAA;AAAA,SAAAA,kBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,aAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,eAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,aAAAC;AAAA,EAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA,iBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,iBAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,WAAAC;AAAA,EAAA;AAAA;;;ACAA,IAAAC,kBAAA;AAAA,SAAAA,iBAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,YAAAC;AAAA;AAEO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,UAAS,QAAQ;AAC7B,SAAY,aAAa,gBAAgB,MAAM;AACnD;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,EAAQ,gBAAgB,KAAK,MAAM,GAAG;AAC1C,CAAC;AACM,SAASC,UAAS,QAAQ;AAC7B,SAAY,aAAa,gBAAgB,MAAM;AACnD;;;AC1BA,IAAMC,eAAc,CAAC,MAAM,WAAW;AAClC,YAAU,KAAK,MAAM,MAAM;AAC3B,OAAK,OAAO;AACZ,SAAO,iBAAiB,MAAM;AAAA,IAC1B,QAAQ;AAAA,MACJ,OAAO,CAAC,WAAgB,YAAY,MAAM,MAAM;AAAA;AAAA,IAEpD;AAAA,IACA,SAAS;AAAA,MACL,OAAO,CAAC,WAAgB,aAAa,MAAM,MAAM;AAAA;AAAA,IAErD;AAAA,IACA,UAAU;AAAA,MACN,OAAO,CAACC,WAAU;AACd,aAAK,OAAO,KAAKA,MAAK;AACtB,aAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA,MAC5E;AAAA;AAAA,IAEJ;AAAA,IACA,WAAW;AAAA,MACP,OAAO,CAACC,YAAW;AACf,aAAK,OAAO,KAAK,GAAGA,OAAM;AAC1B,aAAK,UAAU,KAAK,UAAU,KAAK,QAAa,uBAAuB,CAAC;AAAA,MAC5E;AAAA;AAAA,IAEJ;AAAA,IACA,SAAS;AAAA,MACL,MAAM;AACF,eAAO,KAAK,OAAO,WAAW;AAAA,MAClC;AAAA;AAAA,IAEJ;AAAA,EACJ,CAAC;AAML;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAYF,YAAW;AACxE,IAAM,eAA6B,gBAAK,aAAa,YAAYA,cAAa;AAAA,EACjF,QAAQ;AACZ,CAAC;;;AC3CM,IAAMG,SAAwB,gBAAK,OAAO,YAAY;AACtD,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,aAA4B,gBAAK,WAAW,YAAY;AAC9D,IAAMC,kBAAiC,gBAAK,gBAAgB,YAAY;AAExE,IAAMC,UAAyB,gBAAK,QAAQ,YAAY;AACxD,IAAMC,UAAyB,gBAAK,QAAQ,YAAY;AACxD,IAAMC,eAA8B,gBAAK,aAAa,YAAY;AAClE,IAAMC,eAA8B,gBAAK,aAAa,YAAY;AAClE,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,cAA6B,gBAAK,YAAY,YAAY;AAChE,IAAMC,mBAAkC,gBAAK,iBAAiB,YAAY;AAC1E,IAAMC,mBAAkC,gBAAK,iBAAiB,YAAY;;;AJIjF,IAAM,mBAAmC,oBAAI,QAAQ;AACrD,SAAS,oBAAoB,MAAM,OAAO,SAAS;AAC/C,QAAMC,SAAQ,OAAO,eAAe,IAAI;AACxC,MAAI,YAAY,iBAAiB,IAAIA,MAAK;AAC1C,MAAI,CAAC,WAAW;AACZ,gBAAY,oBAAI,IAAI;AACpB,qBAAiB,IAAIA,QAAO,SAAS;AAAA,EACzC;AACA,MAAI,UAAU,IAAI,KAAK;AACnB;AACJ,YAAU,IAAI,KAAK;AACnB,aAAW,OAAO,SAAS;AACvB,UAAM,KAAK,QAAQ,GAAG;AACtB,WAAO,eAAeA,QAAO,KAAK;AAAA,MAC9B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,MAAM;AACF,cAAM,QAAQ,GAAG,KAAK,IAAI;AAC1B,eAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,IAAI,GAAG;AACH,eAAO,eAAe,MAAM,KAAK;AAAA,UAC7B,cAAc;AAAA,UACd,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,OAAO;AAAA,QACX,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL;AACJ;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,SAAO,OAAO,KAAK,WAAW,GAAG;AAAA,IAC7B,YAAY;AAAA,MACR,OAAO,+BAA+B,MAAM,OAAO;AAAA,MACnD,QAAQ,+BAA+B,MAAM,QAAQ;AAAA,IACzD;AAAA,EACJ,CAAC;AACD,OAAK,eAAe,yBAAyB,MAAM,CAAC,CAAC;AACrD,OAAK,MAAM;AACX,OAAK,OAAO,IAAI;AAChB,SAAO,eAAe,MAAM,QAAQ,EAAE,OAAO,IAAI,CAAC;AAMlD,OAAK,QAAQ,CAAC,MAAM,WAAiBC,OAAM,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,MAAM,CAAC;AACrF,OAAK,YAAY,CAAC,MAAM,WAAiBC,WAAU,MAAM,MAAM,MAAM;AACrE,OAAK,aAAa,OAAO,MAAM,WAAiBC,YAAW,MAAM,MAAM,QAAQ,EAAE,QAAQ,KAAK,WAAW,CAAC;AAC1G,OAAK,iBAAiB,OAAO,MAAM,WAAiBC,gBAAe,MAAM,MAAM,MAAM;AACrF,OAAK,MAAM,KAAK;AAChB,OAAK,SAAS,CAAC,MAAM,WAAiBC,QAAO,MAAM,MAAM,MAAM;AAC/D,OAAK,SAAS,CAAC,MAAM,WAAiBC,QAAO,MAAM,MAAM,MAAM;AAC/D,OAAK,cAAc,OAAO,MAAM,WAAiBC,aAAY,MAAM,MAAM,MAAM;AAC/E,OAAK,cAAc,OAAO,MAAM,WAAiBC,aAAY,MAAM,MAAM,MAAM;AAC/E,OAAK,aAAa,CAAC,MAAM,WAAiBC,YAAW,MAAM,MAAM,MAAM;AACvE,OAAK,aAAa,CAAC,MAAM,WAAiBC,YAAW,MAAM,MAAM,MAAM;AACvE,OAAK,kBAAkB,OAAO,MAAM,WAAiBC,iBAAgB,MAAM,MAAM,MAAM;AACvF,OAAK,kBAAkB,OAAO,MAAM,WAAiBC,iBAAgB,MAAM,MAAM,MAAM;AAOvF,sBAAoB,MAAM,WAAW;AAAA,IACjC,SAAS,MAAM;AACX,YAAMC,OAAM,KAAK;AACjB,aAAO,KAAK,MAAM,aAAK,UAAUA,MAAK;AAAA,QAClC,QAAQ;AAAA,UACJ,GAAIA,KAAI,UAAU,CAAC;AAAA,UACnB,GAAG,KAAK,IAAI,CAAC,OAAO,OAAO,OAAO,aAAa,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;AAAA,QACvH;AAAA,MACJ,CAAC,GAAG,EAAE,QAAQ,KAAK,CAAC;AAAA,IACxB;AAAA,IACA,QAAQ,MAAM;AACV,aAAO,KAAK,MAAM,GAAG,IAAI;AAAA,IAC7B;AAAA,IACA,MAAMA,MAAK,QAAQ;AACf,aAAY,MAAM,MAAMA,MAAK,MAAM;AAAA,IACvC;AAAA,IACA,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,IACA,SAAS,KAAKC,OAAM;AAChB,UAAI,IAAI,MAAMA,KAAI;AAClB,aAAO;AAAA,IACX;AAAA,IACA,OAAOC,QAAO,QAAQ;AAClB,aAAO,KAAK,MAAM,OAAOA,QAAO,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,YAAY,QAAQ;AAC5B,aAAO,KAAK,MAAM,YAAY,YAAY,MAAM,CAAC;AAAA,IACrD;AAAA,IACA,UAAU,IAAI;AACV,aAAO,KAAK,MAAa,WAAU,EAAE,CAAC;AAAA,IAC1C;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,gBAAgB;AACZ,aAAO,cAAc,IAAI;AAAA,IAC7B;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,UAAU;AACN,aAAO,SAAS,SAAS,IAAI,CAAC;AAAA,IAClC;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,YAAY,MAAM,MAAM;AAAA,IACnC;AAAA,IACA,QAAQ;AACJ,aAAO,MAAM,IAAI;AAAA,IACrB;AAAA,IACA,GAAG,KAAK;AACJ,aAAO,MAAM,CAAC,MAAM,GAAG,CAAC;AAAA,IAC5B;AAAA,IACA,IAAI,KAAK;AACL,aAAO,aAAa,MAAM,GAAG;AAAA,IACjC;AAAA,IACA,UAAU,IAAI;AACV,aAAO,KAAK,MAAM,UAAU,EAAE,CAAC;AAAA,IACnC;AAAA,IACA,QAAQ,GAAG;AACP,aAAOC,UAAS,MAAM,CAAC;AAAA,IAC3B;AAAA,IACA,SAAS,GAAG;AACR,aAAO,SAAS,MAAM,CAAC;AAAA,IAC3B;AAAA,IACA,MAAM,QAAQ;AACV,aAAOC,QAAO,MAAM,MAAM;AAAA,IAC9B;AAAA,IACA,KAAK,QAAQ;AACT,aAAO,KAAK,MAAM,MAAM;AAAA,IAC5B;AAAA,IACA,WAAW;AACP,aAAO,SAAS,IAAI;AAAA,IACxB;AAAA,IACA,SAAS,aAAa;AAClB,YAAM,KAAK,KAAK,MAAM;AACtB,MAAK,eAAe,IAAI,IAAI,EAAE,YAAY,CAAC;AAC3C,aAAO;AAAA,IACX;AAAA,IACA,QAAQ,MAAM;AAKV,UAAI,KAAK,WAAW;AAChB,eAAY,eAAe,IAAI,IAAI;AACvC,YAAM,KAAK,KAAK,MAAM;AACtB,MAAK,eAAe,IAAI,IAAI,KAAK,CAAC,CAAC;AACnC,aAAO;AAAA,IACX;AAAA,IACA,aAAa;AACT,aAAO,KAAK,UAAU,MAAS,EAAE;AAAA,IACrC;AAAA,IACA,aAAa;AACT,aAAO,KAAK,UAAU,IAAI,EAAE;AAAA,IAChC;AAAA,IACA,MAAM,IAAI;AACN,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACJ,CAAC;AACD,SAAO,eAAe,MAAM,eAAe;AAAA,IACvC,MAAM;AACF,aAAY,eAAe,IAAI,IAAI,GAAG;AAAA,IAC1C;AAAA,IACA,cAAc;AAAA,EAClB,CAAC;AACD,SAAO;AACX,CAAC;AAEM,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,SAAS,IAAI,UAAU;AAC5B,OAAK,YAAY,IAAI,WAAW;AAChC,OAAK,YAAY,IAAI,WAAW;AAChC,sBAAoB,MAAM,cAAc;AAAA,IACpC,SAAS,MAAM;AACX,aAAO,KAAK,MAAa,OAAM,GAAG,IAAI,CAAC;AAAA,IAC3C;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,cAAc,MAAM;AAChB,aAAO,KAAK,MAAa,YAAW,GAAG,IAAI,CAAC;AAAA,IAChD;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,UAAS,GAAG,IAAI,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO,MAAM;AACT,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,OAAO,MAAM;AACT,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,UAAU,MAAM;AACZ,aAAO,KAAK,MAAa,QAAO,GAAG,IAAI,CAAC;AAAA,IAC5C;AAAA,IACA,YAAY,MAAM;AACd,aAAO,KAAK,MAAa,WAAU,GAAG,GAAG,IAAI,CAAC;AAAA,IAClD;AAAA,IACA,UAAU,QAAQ;AACd,aAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,UAAU,QAAQ;AACd,aAAO,KAAK,MAAa,WAAU,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,OAAO;AACH,aAAO,KAAK,MAAa,MAAK,CAAC;AAAA,IACnC;AAAA,IACA,aAAa,MAAM;AACf,aAAO,KAAK,MAAa,WAAU,GAAG,IAAI,CAAC;AAAA,IAC/C;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAa,aAAY,CAAC;AAAA,IAC1C;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAa,aAAY,CAAC;AAAA,IAC1C;AAAA,IACA,UAAU;AACN,aAAO,KAAK,MAAa,SAAQ,CAAC;AAAA,IACtC;AAAA,EACJ,CAAC;AACL,CAAC;AACM,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,aAAW,KAAK,MAAM,GAAG;AACzB,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAWC,QAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,SAAS,MAAM,CAAC;AAClE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,YAAY,CAAC,WAAW,KAAK,MAAW,WAAW,cAAc,MAAM,CAAC;AAC7E,OAAK,MAAM,CAAC,WAAW,KAAK,MAAW,KAAK,QAAQ,MAAM,CAAC;AAC3D,OAAK,QAAQ,CAAC,WAAW,KAAK,MAAW,OAAO,UAAU,MAAM,CAAC;AACjE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAC9D,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,SAAS,CAAC,WAAW,KAAK,MAAW,QAAQ,WAAW,MAAM,CAAC;AACpE,OAAK,OAAO,CAAC,WAAW,KAAK,MAAW,MAAM,SAAS,MAAM,CAAC;AAE9D,OAAK,WAAW,CAAC,WAAW,KAAK,MAAUC,UAAS,MAAM,CAAC;AAC3D,OAAK,OAAO,CAAC,WAAW,KAAK,MAAUC,MAAK,MAAM,CAAC;AACnD,OAAK,OAAO,CAAC,WAAW,KAAK,MAAUC,MAAK,MAAM,CAAC;AACnD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAUC,UAAS,MAAM,CAAC;AAC/D,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,aAAW,KAAK,MAAM,GAAG;AAC7B,CAAC;AACM,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,SAAS,MAAM;AACvC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,KAAK,QAAQ;AAAA,IACrB,UAAe,gBAAQ;AAAA,IACvB,UAAe,gBAAQ;AAAA,IACvB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAYT,QAAO,UAAU,MAAM;AACvC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AAEjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASU,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AAMO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AAQM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,KAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAE/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,OAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,KAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AAEjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AAEvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,WAAU,QAAQ;AAC9B,SAAY,WAAW,cAAc,MAAM;AAC/C;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAE7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAE3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AAEzG,EAAK,uBAAuB,KAAK,MAAM,GAAG;AAC1C,kBAAgB,KAAK,MAAM,GAAG;AAClC,CAAC;AACM,SAAS,aAAa,QAAQ,WAAW,UAAU,CAAC,GAAG;AAC1D,SAAY,cAAc,uBAAuB,QAAQ,WAAW,OAAO;AAC/E;AACO,SAASC,UAAS,SAAS;AAC9B,SAAY,cAAc,uBAAuB,YAAiB,gBAAQ,UAAU,OAAO;AAC/F;AACO,SAASC,KAAI,SAAS;AACzB,SAAY,cAAc,uBAAuB,OAAY,gBAAQ,KAAK,OAAO;AACrF;AACO,SAAS,KAAK,KAAK,QAAQ;AAC9B,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,SAAS,GAAG,GAAG,IAAI,GAAG;AAC5B,QAAMC,SAAa,gBAAQ,MAAM;AACjC,MAAI,CAACA;AACD,UAAM,IAAI,MAAM,6BAA6B,MAAM,EAAE;AACzD,SAAY,cAAc,uBAAuB,QAAQA,QAAO,MAAM;AAC1E;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK3B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,sBAAoB,MAAM,aAAa;AAAA,IACnC,GAAG,OAAO,QAAQ;AACd,aAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,GAAG,OAAO,QAAQ;AACd,aAAO,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,OAAO,QAAQ;AACf,aAAO,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,IACA,IAAI,QAAQ;AACR,aAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,KAAK,QAAQ;AACT,aAAO,KAAK,MAAM,IAAI,MAAM,CAAC;AAAA,IACjC;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,IAAG,GAAG,MAAM,CAAC;AAAA,IAC1C;AAAA,IACA,YAAY,QAAQ;AAChB,aAAO,KAAK,MAAa,KAAI,GAAG,MAAM,CAAC;AAAA,IAC3C;AAAA,IACA,WAAW,OAAO,QAAQ;AACtB,aAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA,IACtD;AAAA,IACA,KAAK,OAAO,QAAQ;AAChB,aAAO,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAAA,IACtD;AAAA,IACA,SAAS;AACL,aAAO;AAAA,IACX;AAAA,EACJ,CAAC;AACD,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAC3G,OAAK,WACD,KAAK,IAAI,IAAI,WAAW,OAAO,mBAAmB,IAAI,oBAAoB,OAAO,iBAAiB,KAAK;AAC3G,OAAK,SAAS,IAAI,UAAU,IAAI,SAAS,KAAK,KAAK,OAAO,cAAc,IAAI,cAAc,GAAG;AAC7F,OAAK,WAAW;AAChB,OAAK,SAAS,IAAI,UAAU;AAChC,CAAC;AACM,SAAS4B,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,YAAU,KAAK,MAAM,GAAG;AAC5B,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,iBAAiB,MAAM;AAC5C;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,SAAS,iBAAiB,MAAM;AAChD;AACO,SAAS,QAAQ,QAAQ;AAC5B,SAAY,SAAS,iBAAiB,MAAM;AAChD;AACO,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,iBAAiB,MAAM;AAC9C;AACO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,iBAAiB,MAAM;AAC/C;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK5B,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AAC5G,CAAC;AACM,SAAS6B,SAAQ,QAAQ;AAC5B,SAAY,SAAS,YAAY,MAAM;AAC3C;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK7B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAChE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,KAAK,CAAC,OAAO,WAAW,KAAK,MAAa,IAAG,OAAO,MAAM,CAAC;AAChE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AACnE,OAAK,WAAW,CAAC,WAAW,KAAK,MAAa,IAAG,OAAO,CAAC,GAAG,MAAM,CAAC;AACnE,OAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AACvE,OAAK,cAAc,CAAC,WAAW,KAAK,MAAa,KAAI,OAAO,CAAC,GAAG,MAAM,CAAC;AACvE,OAAK,aAAa,CAAC,OAAO,WAAW,KAAK,MAAa,YAAW,OAAO,MAAM,CAAC;AAChF,QAAM,MAAM,KAAK,KAAK;AACtB,OAAK,WAAW,IAAI,WAAW;AAC/B,OAAK,WAAW,IAAI,WAAW;AAC/B,OAAK,SAAS,IAAI,UAAU;AAChC,CAAC;AACM,SAAS8B,QAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,YAAU,KAAK,MAAM,GAAG;AAC5B,CAAC;AAEM,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,iBAAiB,MAAM;AAC9C;AAEO,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,iBAAiB,MAAM;AAC/C;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAK9B,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AAC3G,CAAC;AACM,SAAS,OAAO,QAAQ;AAC3B,SAAY,QAAQ,WAAW,MAAM;AACzC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,mBAAmB,MAAM,KAAKA,OAAM,MAAM;AAC9G,CAAC;AACD,SAAS+B,YAAW,QAAQ;AACxB,SAAYA,YAAW,cAAc,MAAM;AAC/C;AAEO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACzG,CAAC;AACD,SAASC,OAAM,QAAQ;AACnB,SAAYA,OAAM,SAAS,MAAM;AACrC;AAEO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACxG,CAAC;AACM,SAAS,MAAM;AAClB,SAAY,KAAK,MAAM;AAC3B;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AAC5G,CAAC;AACM,SAAS,UAAU;AACtB,SAAY,SAAS,UAAU;AACnC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AAC1G,CAAC;AACM,SAAS,MAAM,QAAQ;AAC1B,SAAY,OAAO,UAAU,MAAM;AACvC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACzG,CAAC;AACD,SAASC,OAAM,QAAQ;AACnB,SAAY,MAAM,SAAS,MAAM;AACrC;AAEO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,OAAK,MAAM,CAAC,OAAO,WAAW,KAAK,MAAa,KAAI,OAAO,MAAM,CAAC;AAClE,QAAM,IAAI,KAAK,KAAK;AACpB,OAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AACjD,OAAK,UAAU,EAAE,UAAU,IAAI,KAAK,EAAE,OAAO,IAAI;AACrD,CAAC;AACM,SAASC,MAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKD,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACnB,sBAAoB,MAAM,YAAY;AAAA,IAClC,IAAI,GAAG,QAAQ;AACX,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,SAAS,QAAQ;AACb,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,IAAI,GAAG,QAAQ;AACX,aAAO,KAAK,MAAa,WAAU,GAAG,MAAM,CAAC;AAAA,IACjD;AAAA,IACA,OAAO,GAAG,QAAQ;AACd,aAAO,KAAK,MAAa,QAAO,GAAG,MAAM,CAAC;AAAA,IAC9C;AAAA,IACA,SAAS;AACL,aAAO,KAAK;AAAA,IAChB;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,MAAM,SAAS,QAAQ;AACnC,SAAY,OAAO,UAAU,SAAS,MAAM;AAChD;AAEO,SAAS,MAAM,QAAQ;AAC1B,QAAM,QAAQ,OAAO,KAAK,IAAI;AAC9B,SAAOE,OAAM,OAAO,KAAK,KAAK,CAAC;AACnC;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,eAAK,WAAW,MAAM,SAAS,MAAM;AACjC,WAAO,IAAI;AAAA,EACf,CAAC;AACD,sBAAoB,MAAM,aAAa;AAAA,IACnC,QAAQ;AACJ,aAAOE,OAAM,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC;AAAA,IACjD;AAAA,IACA,SAAS,UAAU;AACf,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,SAAmB,CAAC;AAAA,IAC9D;AAAA,IACA,cAAc;AACV,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,IAC/D;AAAA,IACA,QAAQ;AACJ,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,QAAQ,EAAE,CAAC;AAAA,IAC/D;AAAA,IACA,SAAS;AACL,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,MAAM,EAAE,CAAC;AAAA,IAC7D;AAAA,IACA,QAAQ;AACJ,aAAO,KAAK,MAAM,EAAE,GAAG,KAAK,KAAK,KAAK,UAAU,OAAU,CAAC;AAAA,IAC/D;AAAA,IACA,OAAO,UAAU;AACb,aAAO,aAAK,OAAO,MAAM,QAAQ;AAAA,IACrC;AAAA,IACA,WAAW,UAAU;AACjB,aAAO,aAAK,WAAW,MAAM,QAAQ;AAAA,IACzC;AAAA,IACA,MAAM,OAAO;AACT,aAAO,aAAK,MAAM,MAAM,KAAK;AAAA,IACjC;AAAA,IACA,KAAK,MAAM;AACP,aAAO,aAAK,KAAK,MAAM,IAAI;AAAA,IAC/B;AAAA,IACA,KAAK,MAAM;AACP,aAAO,aAAK,KAAK,MAAM,IAAI;AAAA,IAC/B;AAAA,IACA,WAAW,MAAM;AACb,aAAO,aAAK,QAAQ,aAAa,MAAM,KAAK,CAAC,CAAC;AAAA,IAClD;AAAA,IACA,YAAY,MAAM;AACd,aAAO,aAAK,SAAS,gBAAgB,MAAM,KAAK,CAAC,CAAC;AAAA,IACtD;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,OAAO,OAAO,QAAQ;AAClC,QAAM,MAAM;AAAA,IACR,MAAM;AAAA,IACN,OAAO,SAAS,CAAC;AAAA,IACjB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC;AACA,SAAO,IAAI,UAAU,GAAG;AAC5B;AAEO,SAAS,aAAa,OAAO,QAAQ;AACxC,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAEO,SAAS,YAAY,OAAO,QAAQ;AACvC,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA,UAAU,QAAQ;AAAA,IAClB,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACvB,CAAC;AACM,SAAS,MAAM,SAAS,QAAQ;AACnC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,UAAU,IAAI;AACvB,CAAC;AAIM,SAAS,IAAI,SAAS,QAAQ;AACjC,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,wBAAsC,gBAAK,aAAa,yBAAyB,CAAC,MAAM,QAAQ;AACzG,WAAS,KAAK,MAAM,GAAG;AACvB,EAAK,uBAAuB,KAAK,MAAM,GAAG;AAC9C,CAAC;AACM,SAAS,mBAAmB,eAAe,SAAS,QAAQ;AAE/D,SAAO,IAAI,sBAAsB;AAAA,IAC7B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,kBAAgC,gBAAK,aAAa,mBAAmB,CAAC,MAAM,QAAQ;AAC7F,EAAK,iBAAiB,KAAK,MAAM,GAAG;AACpC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,sBAAsB,MAAM,KAAKA,OAAM,MAAM;AACjH,CAAC;AACM,SAAS,aAAa,MAAM,OAAO;AACtC,SAAO,IAAI,gBAAgB;AAAA,IACvB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,OAAO,CAAC,SAAS,KAAK,MAAM;AAAA,IAC7B,GAAG,KAAK,KAAK;AAAA,IACb;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,MAAM,OAAO,eAAe,SAAS;AACjD,QAAM,UAAU,yBAA8B;AAC9C,QAAM,SAAS,UAAU,UAAU;AACnC,QAAM,OAAO,UAAU,gBAAgB;AACvC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AACvG,OAAK,UAAU,IAAI;AACnB,OAAK,YAAY,IAAI;AACzB,CAAC;AACM,SAAS,OAAO,SAAS,WAAW,QAAQ;AAE/C,MAAI,CAAC,aAAa,CAAC,UAAU,MAAM;AAC/B,WAAO,IAAI,UAAU;AAAA,MACjB,MAAM;AAAA,MACN,SAASG,QAAO;AAAA,MAChB,WAAW;AAAA,MACX,GAAG,aAAK,gBAAgB,SAAS;AAAA,IACrC,CAAC;AAAA,EACL;AACA,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AAEO,SAAS,cAAc,SAAS,WAAW,QAAQ;AACtD,QAAM,IAAS,MAAM,OAAO;AAC5B,IAAE,KAAK,SAAS;AAChB,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,SAAS,YAAY,SAAS,WAAW,QAAQ;AACpD,SAAO,IAAI,UAAU;AAAA,IACjB,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKH,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACpG,OAAK,UAAU,IAAI;AACnB,OAAK,YAAY,IAAI;AACrB,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAC3D,CAAC;AACM,SAAS,IAAI,SAAS,WAAW,QAAQ;AAC5C,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACpG,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,WAAW,CAAC,WAAW,KAAK,MAAW,SAAS,GAAG,MAAM,CAAC;AAC/D,OAAK,MAAM,IAAI,SAAS,KAAK,MAAW,SAAS,GAAG,IAAI,CAAC;AACzD,OAAK,OAAO,IAAI,SAAS,KAAK,MAAW,MAAM,GAAG,IAAI,CAAC;AAC3D,CAAC;AACM,SAAS,IAAI,WAAW,QAAQ;AACnC,SAAO,IAAI,OAAO;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,OAAO,IAAI;AAChB,OAAK,UAAU,OAAO,OAAO,IAAI,OAAO;AACxC,QAAM,OAAO,IAAI,IAAI,OAAO,KAAK,IAAI,OAAO,CAAC;AAC7C,OAAK,UAAU,CAAC,QAAQ,WAAW;AAC/B,UAAM,aAAa,CAAC;AACpB,eAAW,SAAS,QAAQ;AACxB,UAAI,KAAK,IAAI,KAAK,GAAG;AACjB,mBAAW,KAAK,IAAI,IAAI,QAAQ,KAAK;AAAA,MACzC;AAEI,cAAM,IAAI,MAAM,OAAO,KAAK,oBAAoB;AAAA,IACxD;AACA,WAAO,IAAI,QAAQ;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAC;AAAA,MACT,GAAG,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AACA,OAAK,UAAU,CAAC,QAAQ,WAAW;AAC/B,UAAM,aAAa,EAAE,GAAG,IAAI,QAAQ;AACpC,eAAW,SAAS,QAAQ;AACxB,UAAI,KAAK,IAAI,KAAK,GAAG;AACjB,eAAO,WAAW,KAAK;AAAA,MAC3B;AAEI,cAAM,IAAI,MAAM,OAAO,KAAK,oBAAoB;AAAA,IACxD;AACA,WAAO,IAAI,QAAQ;AAAA,MACf,GAAG;AAAA,MACH,QAAQ,CAAC;AAAA,MACT,GAAG,aAAK,gBAAgB,MAAM;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AACJ,CAAC;AACD,SAASE,OAAM,QAAQ,QAAQ;AAC3B,QAAM,UAAU,MAAM,QAAQ,MAAM,IAAI,OAAO,YAAY,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;AACxF,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AASO,SAAS,WAAW,SAAS,QAAQ;AACxC,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKE,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,IAAI,IAAI,IAAI,MAAM;AAChC,SAAO,eAAe,MAAM,SAAS;AAAA,IACjC,MAAM;AACF,UAAI,IAAI,OAAO,SAAS,GAAG;AACvB,cAAM,IAAI,MAAM,4EAA4E;AAAA,MAChG;AACA,aAAO,IAAI,OAAO,CAAC;AAAA,IACvB;AAAA,EACJ,CAAC;AACL,CAAC;AACM,SAAS,QAAQ,OAAO,QAAQ;AACnC,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN,QAAQ,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAAA,IAC7C,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AACnE,OAAK,MAAM,CAAC,MAAM,WAAW,KAAK,MAAW,SAAS,MAAM,MAAM,CAAC;AACnE,OAAK,OAAO,CAAC,OAAO,WAAW,KAAK,MAAW,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC;AACxG,CAAC;AACM,SAAS,KAAK,QAAQ;AACzB,SAAY,MAAM,SAAS,MAAM;AACrC;AACO,IAAM,eAA6B,gBAAK,aAAa,gBAAgB,CAAC,MAAM,QAAQ;AACvF,EAAK,cAAc,KAAK,MAAM,GAAG;AACjC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,mBAAmB,MAAM,KAAKA,OAAM,MAAM;AAC1G,OAAK,KAAK,QAAQ,CAAC,SAAS,SAAS;AACjC,QAAI,KAAK,cAAc,YAAY;AAC/B,YAAM,IAAS,gBAAgB,KAAK,YAAY,IAAI;AAAA,IACxD;AACA,YAAQ,WAAW,CAACC,WAAU;AAC1B,UAAI,OAAOA,WAAU,UAAU;AAC3B,gBAAQ,OAAO,KAAK,aAAK,MAAMA,QAAO,QAAQ,OAAO,GAAG,CAAC;AAAA,MAC7D,OACK;AAED,cAAM,SAASA;AACf,YAAI,OAAO;AACP,iBAAO,WAAW;AACtB,eAAO,SAAS,OAAO,OAAO;AAC9B,eAAO,UAAU,OAAO,QAAQ,QAAQ;AACxC,eAAO,SAAS,OAAO,OAAO;AAE9B,gBAAQ,OAAO,KAAK,aAAK,MAAM,MAAM,CAAC;AAAA,MAC1C;AAAA,IACJ;AACA,UAAM,SAAS,IAAI,UAAU,QAAQ,OAAO,OAAO;AACnD,QAAI,kBAAkB,SAAS;AAC3B,aAAO,OAAO,KAAK,CAACC,YAAW;AAC3B,gBAAQ,QAAQA;AAChB,gBAAQ,WAAW;AACnB,eAAO;AAAA,MACX,CAAC;AAAA,IACL;AACA,YAAQ,QAAQ;AAChB,YAAQ,WAAW;AACnB,WAAO;AAAA,EACX;AACJ,CAAC;AACM,SAAS,UAAU,IAAI;AAC1B,SAAO,IAAI,aAAa;AAAA,IACpB,MAAM;AAAA,IACN,WAAW;AAAA,EACf,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKF,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,mBAAiC,gBAAK,aAAa,oBAAoB,CAAC,MAAM,QAAQ;AAC/F,EAAK,kBAAkB,KAAK,MAAM,GAAG;AACrC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,cAAc,WAAW;AACrC,SAAO,IAAI,iBAAiB;AAAA,IACxB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AAEO,SAASG,SAAQ,WAAW;AAC/B,SAAO,SAAS,SAAS,SAAS,CAAC;AACvC;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKH,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAClC,OAAK,gBAAgB,KAAK;AAC9B,CAAC;AACM,SAASI,UAAS,WAAW,cAAc;AAC9C,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKJ,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW,cAAc;AAC9C,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,IACA,IAAI,eAAe;AACf,aAAO,OAAO,iBAAiB,aAAa,aAAa,IAAI,aAAK,aAAa,YAAY;AAAA,IAC/F;AAAA,EACJ,CAAC;AACL;AACO,IAAM,iBAA+B,gBAAK,aAAa,kBAAkB,CAAC,MAAM,QAAQ;AAC3F,EAAK,gBAAgB,KAAK,MAAM,GAAG;AACnC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,qBAAqB,MAAM,KAAKA,OAAM,MAAM;AAC5G,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,YAAY,WAAW,QAAQ;AAC3C,SAAO,IAAI,eAAe;AAAA,IACtB,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,QAAQ,WAAW;AAC/B,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,EAAK,UAAU,KAAK,MAAM,GAAG;AAC7B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,eAAe,MAAM,KAAKA,OAAM,MAAM;AACtG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AAClC,OAAK,cAAc,KAAK;AAC5B,CAAC;AACD,SAASK,QAAO,WAAW,YAAY;AACnC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN;AAAA,IACA,YAAa,OAAO,eAAe,aAAa,aAAa,MAAM;AAAA,EACvE,CAAC;AACL;AAEO,IAAM,SAAuB,gBAAK,aAAa,UAAU,CAAC,MAAM,QAAQ;AAC3E,EAAK,QAAQ,KAAK,MAAM,GAAG;AAC3B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKC,OAAM,WAAsB,aAAa,MAAM,KAAKA,OAAM,MAAM;AACxG,CAAC;AACM,SAAS,IAAI,QAAQ;AACxB,SAAY,KAAK,QAAQ,MAAM;AACnC;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,KAAK,IAAI;AACd,OAAK,MAAM,IAAI;AACnB,CAAC;AACM,SAAS,KAAK,KAAK,KAAK;AAC3B,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA;AAAA,EAEJ,CAAC;AACL;AACO,IAAM,WAAyB,gBAAK,aAAa,YAAY,CAAC,MAAM,QAAQ;AAC/E,UAAQ,KAAK,MAAM,GAAG;AACtB,EAAK,UAAU,KAAK,MAAM,GAAG;AACjC,CAAC;AACM,SAAS,MAAM,KAAK,KAAK,QAAQ;AACpC,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,IACA,WAAW,OAAO;AAAA,IAClB,kBAAkB,OAAO;AAAA,EAC7B,CAAC;AACL;AACO,SAAS,YAAYC,QAAO;AAC/B,QAAM,MAAMA,OAAM,KAAK;AACvB,SAAO,IAAI,SAAS;AAAA,IAChB,MAAM;AAAA,IACN,IAAI,IAAI;AAAA,IACR,KAAK,IAAI;AAAA,IACT,WAAW,IAAI;AAAA,IACf,kBAAkB,IAAI;AAAA,EAC1B,CAAC;AACL;AACO,IAAM,gBAA8B,gBAAK,aAAa,iBAAiB,CAAC,MAAM,QAAQ;AACzF,UAAQ,KAAK,MAAM,GAAG;AACtB,EAAK,eAAe,KAAK,MAAM,GAAG;AACtC,CAAC;AACM,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKD,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AACzG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,SAAS,WAAW;AAChC,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,qBAAmC,gBAAK,aAAa,sBAAsB,CAAC,MAAM,QAAQ;AACnG,EAAK,oBAAoB,KAAK,MAAM,GAAG;AACvC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,yBAAyB,MAAM,KAAKA,OAAM,MAAM;AACpH,CAAC;AACM,SAAS,gBAAgB,OAAO,QAAQ;AAC3C,SAAO,IAAI,mBAAmB;AAAA,IAC1B,MAAM;AAAA,IACN;AAAA,IACA,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACL;AACO,IAAM,UAAwB,gBAAK,aAAa,WAAW,CAAC,MAAM,QAAQ;AAC7E,EAAK,SAAS,KAAK,MAAM,GAAG;AAC5B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,cAAc,MAAM,KAAKA,OAAM,MAAM;AACrG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI,OAAO;AAC7C,CAAC;AACM,SAAS,KAAK,QAAQ;AACzB,SAAO,IAAI,QAAQ;AAAA,IACf,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,aAA2B,gBAAK,aAAa,cAAc,CAAC,MAAM,QAAQ;AACnF,EAAK,YAAY,KAAK,MAAM,GAAG;AAC/B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,iBAAiB,MAAM,KAAKA,OAAM,MAAM;AACxG,OAAK,SAAS,MAAM,KAAK,KAAK,IAAI;AACtC,CAAC;AACM,SAAS,QAAQ,WAAW;AAC/B,SAAO,IAAI,WAAW;AAAA,IAClB,MAAM;AAAA,IACN;AAAA,EACJ,CAAC;AACL;AACO,IAAM,cAA4B,gBAAK,aAAa,eAAe,CAAC,MAAM,QAAQ;AACrF,EAAK,aAAa,KAAK,MAAM,GAAG;AAChC,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKA,OAAM,WAAsB,kBAAkB,MAAM,KAAKA,OAAM,MAAM;AAC7G,CAAC;AACM,SAAS,UAAU,QAAQ;AAC9B,SAAO,IAAI,YAAY;AAAA,IACnB,MAAM;AAAA,IACN,OAAO,MAAM,QAAQ,QAAQ,KAAK,IAAI,MAAM,QAAQ,KAAK,IAAK,QAAQ,SAAS,MAAM,QAAQ,CAAC;AAAA,IAC9F,QAAQ,QAAQ,UAAU,QAAQ;AAAA,EACtC,CAAC;AACL;AAEO,IAAM,YAA0B,gBAAK,aAAa,aAAa,CAAC,MAAM,QAAQ;AACjF,EAAK,WAAW,KAAK,MAAM,GAAG;AAC9B,UAAQ,KAAK,MAAM,GAAG;AACtB,OAAK,KAAK,oBAAoB,CAAC,KAAKE,OAAM,WAAsB,gBAAgB,MAAM,KAAKA,OAAM,MAAM;AAC3G,CAAC;AAEM,SAAS,MAAM,IAAI;AACtB,QAAM,KAAK,IAAS,UAAU;AAAA,IAC1B,OAAO;AAAA;AAAA,EAEX,CAAC;AACD,KAAG,KAAK,QAAQ;AAChB,SAAO;AACX;AACO,SAAS,OAAO,IAAI,SAAS;AAChC,SAAY,QAAQ,WAAW,OAAO,MAAM,OAAO,OAAO;AAC9D;AACO,SAAS,OAAO,IAAI,UAAU,CAAC,GAAG;AACrC,SAAY,QAAQ,WAAW,IAAI,OAAO;AAC9C;AAEO,SAAS,YAAY,IAAI,QAAQ;AACpC,SAAY,aAAa,IAAI,MAAM;AACvC;AAEO,IAAMC,YAAgB;AACtB,IAAMC,QAAY;AACzB,SAAS,YAAY,KAAK,SAAS,CAAC,GAAG;AACnC,QAAM,OAAO,IAAI,UAAU;AAAA,IACvB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,IAAI,CAAC,SAAS,gBAAgB;AAAA,IAC9B,OAAO;AAAA,IACP,GAAG,aAAK,gBAAgB,MAAM;AAAA,EAClC,CAAC;AACD,OAAK,KAAK,IAAI,QAAQ;AAEtB,OAAK,KAAK,QAAQ,CAAC,YAAY;AAC3B,QAAI,EAAE,QAAQ,iBAAiB,MAAM;AACjC,cAAQ,OAAO,KAAK;AAAA,QAChB,MAAM;AAAA,QACN,UAAU,IAAI;AAAA,QACd,OAAO,QAAQ;AAAA,QACf;AAAA,QACA,MAAM,CAAC,GAAI,KAAK,KAAK,IAAI,QAAQ,CAAC,CAAE;AAAA,MACxC,CAAC;AAAA,IACL;AAAA,EACJ;AACA,SAAO;AACX;AAGO,IAAM,aAAa,IAAI,SAAc,YAAY;AAAA,EACpD,OAAO;AAAA,EACP,SAAS;AAAA,EACT,QAAQ;AACZ,GAAG,GAAG,IAAI;AACH,SAAS,KAAK,QAAQ;AACzB,QAAM,aAAa,KAAK,MAAM;AAC1B,WAAO,MAAM,CAACC,QAAO,MAAM,GAAGC,QAAO,GAAGC,SAAQ,GAAGC,OAAM,GAAG,MAAM,UAAU,GAAG,OAAOH,QAAO,GAAG,UAAU,CAAC,CAAC;AAAA,EAChH,CAAC;AACD,SAAO;AACX;AAEO,SAAS,WAAW,IAAI,QAAQ;AACnC,SAAO,IAAI,cAAc;AAAA,IACrB,MAAM;AAAA,IACN,IAAI,UAAU,EAAE;AAAA,IAChB,KAAK;AAAA,EACT,CAAC;AACL;;;AK/2CO,IAAM,eAAe;AAAA,EACxB,cAAc;AAAA,EACd,SAAS;AAAA,EACT,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,eAAe;AAAA,EACf,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,QAAQ;AACZ;AAGO,SAAS,YAAYI,MAAK;AAC7B,EAAK,OAAO;AAAA,IACR,aAAaA;AAAA,EACjB,CAAC;AACL;AAEO,SAAS,cAAc;AAC1B,SAAY,OAAO,EAAE;AACzB;AAEO,IAAI;AACV,0BAAUC,wBAAuB;AAClC,GAAG,0BAA0B,wBAAwB,CAAC,EAAE;;;ACzBxD,IAAM,IAAI;AAAA,EACN,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,KAAK;AACT;AAEA,IAAM,kBAAgC,oBAAI,IAAI;AAAA;AAAA,EAE1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AACJ,CAAC;AACD,SAAS,cAAc,QAAQ,eAAe;AAC1C,QAAM,UAAU,OAAO;AACvB,MAAI,YAAY,gDAAgD;AAC5D,WAAO;AAAA,EACX;AACA,MAAI,YAAY,2CAA2C;AACvD,WAAO;AAAA,EACX;AACA,MAAI,YAAY,2CAA2C;AACvD,WAAO;AAAA,EACX;AAEA,SAAO,iBAAiB;AAC5B;AACA,SAAS,WAAW,KAAK,KAAK;AAC1B,MAAI,CAAC,IAAI,WAAW,GAAG,GAAG;AACtB,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACzF;AACA,QAAMC,SAAO,IAAI,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;AAEnD,MAAIA,OAAK,WAAW,GAAG;AACnB,WAAO,IAAI;AAAA,EACf;AACA,QAAM,UAAU,IAAI,YAAY,kBAAkB,UAAU;AAC5D,MAAIA,OAAK,CAAC,MAAM,SAAS;AACrB,UAAM,MAAMA,OAAK,CAAC;AAClB,QAAI,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG;AACxB,YAAM,IAAI,MAAM,wBAAwB,GAAG,EAAE;AAAA,IACjD;AACA,WAAO,IAAI,KAAK,GAAG;AAAA,EACvB;AACA,QAAM,IAAI,MAAM,wBAAwB,GAAG,EAAE;AACjD;AACA,SAAS,kBAAkB,QAAQ,KAAK;AAEpC,MAAI,OAAO,QAAQ,QAAW;AAE1B,QAAI,OAAO,OAAO,QAAQ,YAAY,OAAO,KAAK,OAAO,GAAG,EAAE,WAAW,GAAG;AACxE,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,UAAM,IAAI,MAAM,4DAA4D;AAAA,EAChF;AACA,MAAI,OAAO,qBAAqB,QAAW;AACvC,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,MAAI,OAAO,0BAA0B,QAAW;AAC5C,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC5D;AACA,MAAI,OAAO,OAAO,UAAa,OAAO,SAAS,UAAa,OAAO,SAAS,QAAW;AACnF,UAAM,IAAI,MAAM,sDAAsD;AAAA,EAC1E;AACA,MAAI,OAAO,qBAAqB,UAAa,OAAO,sBAAsB,QAAW;AACjF,UAAM,IAAI,MAAM,0DAA0D;AAAA,EAC9E;AAEA,MAAI,OAAO,MAAM;AACb,UAAM,UAAU,OAAO;AACvB,QAAI,IAAI,KAAK,IAAI,OAAO,GAAG;AACvB,aAAO,IAAI,KAAK,IAAI,OAAO;AAAA,IAC/B;AACA,QAAI,IAAI,WAAW,IAAI,OAAO,GAAG;AAE7B,aAAO,EAAE,KAAK,MAAM;AAChB,YAAI,CAAC,IAAI,KAAK,IAAI,OAAO,GAAG;AACxB,gBAAM,IAAI,MAAM,oCAAoC,OAAO,EAAE;AAAA,QACjE;AACA,eAAO,IAAI,KAAK,IAAI,OAAO;AAAA,MAC/B,CAAC;AAAA,IACL;AACA,QAAI,WAAW,IAAI,OAAO;AAC1B,UAAM,WAAW,WAAW,SAAS,GAAG;AACxC,UAAMC,aAAY,cAAc,UAAU,GAAG;AAC7C,QAAI,KAAK,IAAI,SAASA,UAAS;AAC/B,QAAI,WAAW,OAAO,OAAO;AAC7B,WAAOA;AAAA,EACX;AAEA,MAAI,OAAO,SAAS,QAAW;AAC3B,UAAM,aAAa,OAAO;AAE1B,QAAI,IAAI,YAAY,iBAChB,OAAO,aAAa,QACpB,WAAW,WAAW,KACtB,WAAW,CAAC,MAAM,MAAM;AACxB,aAAO,EAAE,KAAK;AAAA,IAClB;AACA,QAAI,WAAW,WAAW,GAAG;AACzB,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,QAAI,WAAW,WAAW,GAAG;AACzB,aAAO,EAAE,QAAQ,WAAW,CAAC,CAAC;AAAA,IAClC;AAEA,QAAI,WAAW,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,GAAG;AAChD,aAAO,EAAE,KAAK,UAAU;AAAA,IAC5B;AAEA,UAAM,iBAAiB,WAAW,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAI,eAAe,SAAS,GAAG;AAC3B,aAAO,eAAe,CAAC;AAAA,IAC3B;AACA,WAAO,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,MAAM,CAAC,CAAC,CAAC;AAAA,EACrF;AAEA,MAAI,OAAO,UAAU,QAAW;AAC5B,WAAO,EAAE,QAAQ,OAAO,KAAK;AAAA,EACjC;AAEA,QAAM,OAAO,OAAO;AACpB,MAAI,MAAM,QAAQ,IAAI,GAAG;AAErB,UAAM,cAAc,KAAK,IAAI,CAACC,OAAM;AAChC,YAAM,aAAa,EAAE,GAAG,QAAQ,MAAMA,GAAE;AACxC,aAAO,kBAAkB,YAAY,GAAG;AAAA,IAC5C,CAAC;AACD,QAAI,YAAY,WAAW,GAAG;AAC1B,aAAO,EAAE,MAAM;AAAA,IACnB;AACA,QAAI,YAAY,WAAW,GAAG;AAC1B,aAAO,YAAY,CAAC;AAAA,IACxB;AACA,WAAO,EAAE,MAAM,WAAW;AAAA,EAC9B;AACA,MAAI,CAAC,MAAM;AAEP,WAAO,EAAE,IAAI;AAAA,EACjB;AACA,MAAI;AACJ,UAAQ,MAAM;AAAA,IACV,KAAK,UAAU;AACX,UAAI,eAAe,EAAE,OAAO;AAE5B,UAAI,OAAO,QAAQ;AACf,cAAM,SAAS,OAAO;AAEtB,YAAI,WAAW,SAAS;AACpB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,SAAS,WAAW,iBAAiB;AACrD,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,UAAU,WAAW,QAAQ;AAC7C,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,aAAa;AAC7B,yBAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,IAAI,KAAK,CAAC;AAAA,QAClD,WACS,WAAW,YAAY;AAC5B,yBAAe,aAAa,MAAM,EAAE,IAAI,SAAS,CAAC;AAAA,QACtD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,WAAW;AAC3B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,UAAU;AAC1B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,aAAa;AAC7B,yBAAe,aAAa,MAAM,EAAE,UAAU,CAAC;AAAA,QACnD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,UAAU;AAC1B,yBAAe,aAAa,MAAM,EAAE,OAAO,CAAC;AAAA,QAChD,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C,WACS,WAAW,QAAQ;AACxB,yBAAe,aAAa,MAAM,EAAE,KAAK,CAAC;AAAA,QAC9C,WACS,WAAW,OAAO;AACvB,yBAAe,aAAa,MAAM,EAAE,IAAI,CAAC;AAAA,QAC7C,WACS,WAAW,SAAS;AACzB,yBAAe,aAAa,MAAM,EAAE,MAAM,CAAC;AAAA,QAC/C;AAAA,MAGJ;AAEA,UAAI,OAAO,OAAO,cAAc,UAAU;AACtC,uBAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AACA,UAAI,OAAO,OAAO,cAAc,UAAU;AACtC,uBAAe,aAAa,IAAI,OAAO,SAAS;AAAA,MACpD;AACA,UAAI,OAAO,SAAS;AAEhB,uBAAe,aAAa,MAAM,IAAI,OAAO,OAAO,OAAO,CAAC;AAAA,MAChE;AACA,kBAAY;AACZ;AAAA,IACJ;AAAA,IACA,KAAK;AAAA,IACL,KAAK,WAAW;AACZ,UAAI,eAAe,SAAS,YAAY,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,OAAO;AAEpE,UAAI,OAAO,OAAO,YAAY,UAAU;AACpC,uBAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AACA,UAAI,OAAO,OAAO,YAAY,UAAU;AACpC,uBAAe,aAAa,IAAI,OAAO,OAAO;AAAA,MAClD;AACA,UAAI,OAAO,OAAO,qBAAqB,UAAU;AAC7C,uBAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,WACS,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAC7E,uBAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AACA,UAAI,OAAO,OAAO,qBAAqB,UAAU;AAC7C,uBAAe,aAAa,GAAG,OAAO,gBAAgB;AAAA,MAC1D,WACS,OAAO,qBAAqB,QAAQ,OAAO,OAAO,YAAY,UAAU;AAC7E,uBAAe,aAAa,GAAG,OAAO,OAAO;AAAA,MACjD;AACA,UAAI,OAAO,OAAO,eAAe,UAAU;AACvC,uBAAe,aAAa,WAAW,OAAO,UAAU;AAAA,MAC5D;AACA,kBAAY;AACZ;AAAA,IACJ;AAAA,IACA,KAAK,WAAW;AACZ,kBAAY,EAAE,QAAQ;AACtB;AAAA,IACJ;AAAA,IACA,KAAK,QAAQ;AACT,kBAAY,EAAE,KAAK;AACnB;AAAA,IACJ;AAAA,IACA,KAAK,UAAU;AACX,YAAM,QAAQ,CAAC;AACf,YAAM,aAAa,OAAO,cAAc,CAAC;AACzC,YAAM,cAAc,IAAI,IAAI,OAAO,YAAY,CAAC,CAAC;AAEjD,iBAAW,CAAC,KAAK,UAAU,KAAK,OAAO,QAAQ,UAAU,GAAG;AACxD,cAAM,gBAAgB,cAAc,YAAY,GAAG;AAEnD,cAAM,GAAG,IAAI,YAAY,IAAI,GAAG,IAAI,gBAAgB,cAAc,SAAS;AAAA,MAC/E;AAEA,UAAI,OAAO,eAAe;AACtB,cAAM,YAAY,cAAc,OAAO,eAAe,GAAG;AACzD,cAAM,cAAc,OAAO,wBAAwB,OAAO,OAAO,yBAAyB,WACpF,cAAc,OAAO,sBAAsB,GAAG,IAC9C,EAAE,IAAI;AAEZ,YAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AACjC,sBAAY,EAAE,OAAO,WAAW,WAAW;AAC3C;AAAA,QACJ;AAEA,cAAMC,gBAAe,EAAE,OAAO,KAAK,EAAE,YAAY;AACjD,cAAM,eAAe,EAAE,YAAY,WAAW,WAAW;AACzD,oBAAY,EAAE,aAAaA,eAAc,YAAY;AACrD;AAAA,MACJ;AAEA,UAAI,OAAO,mBAAmB;AAG1B,cAAM,eAAe,OAAO;AAC5B,cAAM,cAAc,OAAO,KAAK,YAAY;AAC5C,cAAM,eAAe,CAAC;AACtB,mBAAW,WAAW,aAAa;AAC/B,gBAAM,eAAe,cAAc,aAAa,OAAO,GAAG,GAAG;AAC7D,gBAAM,YAAY,EAAE,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC;AACtD,uBAAa,KAAK,EAAE,YAAY,WAAW,YAAY,CAAC;AAAA,QAC5D;AAEA,cAAM,qBAAqB,CAAC;AAC5B,YAAI,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAE/B,6BAAmB,KAAK,EAAE,OAAO,KAAK,EAAE,YAAY,CAAC;AAAA,QACzD;AACA,2BAAmB,KAAK,GAAG,YAAY;AACvC,YAAI,mBAAmB,WAAW,GAAG;AACjC,sBAAY,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY;AAAA,QACzC,WACS,mBAAmB,WAAW,GAAG;AACtC,sBAAY,mBAAmB,CAAC;AAAA,QACpC,OACK;AAED,cAAI,SAAS,EAAE,aAAa,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;AACxE,mBAAS,IAAI,GAAG,IAAI,mBAAmB,QAAQ,KAAK;AAChD,qBAAS,EAAE,aAAa,QAAQ,mBAAmB,CAAC,CAAC;AAAA,UACzD;AACA,sBAAY;AAAA,QAChB;AACA;AAAA,MACJ;AAIA,YAAM,eAAe,EAAE,OAAO,KAAK;AACnC,UAAI,OAAO,yBAAyB,OAAO;AAEvC,oBAAY,aAAa,OAAO;AAAA,MACpC,WACS,OAAO,OAAO,yBAAyB,UAAU;AAEtD,oBAAY,aAAa,SAAS,cAAc,OAAO,sBAAsB,GAAG,CAAC;AAAA,MACrF,OACK;AAED,oBAAY,aAAa,YAAY;AAAA,MACzC;AACA;AAAA,IACJ;AAAA,IACA,KAAK,SAAS;AAIV,YAAM,cAAc,OAAO;AAC3B,YAAM,QAAQ,OAAO;AACrB,UAAI,eAAe,MAAM,QAAQ,WAAW,GAAG;AAE3C,cAAM,aAAa,YAAY,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AACrE,cAAM,OAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACjE,cAAc,OAAO,GAAG,IACxB;AACN,YAAI,MAAM;AACN,sBAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,OACK;AACD,sBAAY,EAAE,MAAM,UAAU;AAAA,QAClC;AAEA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,WACS,MAAM,QAAQ,KAAK,GAAG;AAE3B,cAAM,aAAa,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,GAAG,CAAC;AAC/D,cAAM,OAAO,OAAO,mBAAmB,OAAO,OAAO,oBAAoB,WACnE,cAAc,OAAO,iBAAiB,GAAG,IACzC;AACN,YAAI,MAAM;AACN,sBAAY,EAAE,MAAM,UAAU,EAAE,KAAK,IAAI;AAAA,QAC7C,OACK;AACD,sBAAY,EAAE,MAAM,UAAU;AAAA,QAClC;AAEA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,sBAAY,UAAU,MAAM,EAAE,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC5D;AAAA,MACJ,WACS,UAAU,QAAW;AAE1B,cAAM,UAAU,cAAc,OAAO,GAAG;AACxC,YAAI,cAAc,EAAE,MAAM,OAAO;AAEjC,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,wBAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AACA,YAAI,OAAO,OAAO,aAAa,UAAU;AACrC,wBAAc,YAAY,IAAI,OAAO,QAAQ;AAAA,QACjD;AACA,oBAAY;AAAA,MAChB,OACK;AAED,oBAAY,EAAE,MAAM,EAAE,IAAI,CAAC;AAAA,MAC/B;AACA;AAAA,IACJ;AAAA,IACA;AACI,YAAM,IAAI,MAAM,qBAAqB,IAAI,EAAE;AAAA,EACnD;AACA,SAAO;AACX;AACA,SAAS,cAAc,QAAQ,KAAK;AAChC,MAAI,OAAO,WAAW,WAAW;AAC7B,WAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAEA,MAAI,aAAa,kBAAkB,QAAQ,GAAG;AAC9C,QAAM,kBAAkB,OAAO,QAAQ,OAAO,SAAS,UAAa,OAAO,UAAU;AAGrF,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,UAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC7D,UAAM,aAAa,EAAE,MAAM,OAAO;AAClC,iBAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAEA,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,UAAM,UAAU,OAAO,MAAM,IAAI,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAC7D,UAAM,aAAa,EAAE,IAAI,OAAO;AAChC,iBAAa,kBAAkB,EAAE,aAAa,YAAY,UAAU,IAAI;AAAA,EAC5E;AAEA,MAAI,OAAO,SAAS,MAAM,QAAQ,OAAO,KAAK,GAAG;AAC7C,QAAI,OAAO,MAAM,WAAW,GAAG;AAC3B,mBAAa,kBAAkB,aAAa,EAAE,IAAI;AAAA,IACtD,OACK;AACD,UAAI,SAAS,kBAAkB,aAAa,cAAc,OAAO,MAAM,CAAC,GAAG,GAAG;AAC9E,YAAM,WAAW,kBAAkB,IAAI;AACvC,eAAS,IAAI,UAAU,IAAI,OAAO,MAAM,QAAQ,KAAK;AACjD,iBAAS,EAAE,aAAa,QAAQ,cAAc,OAAO,MAAM,CAAC,GAAG,GAAG,CAAC;AAAA,MACvE;AACA,mBAAa;AAAA,IACjB;AAAA,EACJ;AAEA,MAAI,OAAO,aAAa,QAAQ,IAAI,YAAY,eAAe;AAC3D,iBAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAEA,MAAI,OAAO,aAAa,MAAM;AAC1B,iBAAa,EAAE,SAAS,UAAU;AAAA,EACtC;AAIA,MAAI,OAAO,YAAY,QAAW;AAC9B,iBAAa,WAAW,QAAQ,OAAO,OAAO;AAAA,EAClD;AAIA,QAAM,YAAY,CAAC;AACnB,QAAM,mBAAmB,CAAC,OAAO,MAAM,YAAY,WAAW,eAAe,eAAe,gBAAgB;AAC5G,aAAW,OAAO,kBAAkB;AAChC,QAAI,OAAO,QAAQ;AACf,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,QAAM,sBAAsB,CAAC,mBAAmB,oBAAoB,eAAe;AACnF,aAAW,OAAO,qBAAqB;AACnC,QAAI,OAAO,QAAQ;AACf,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,aAAW,OAAO,OAAO,KAAK,MAAM,GAAG;AACnC,QAAI,CAAC,gBAAgB,IAAI,GAAG,GAAG;AAC3B,gBAAU,GAAG,IAAI,OAAO,GAAG;AAAA,IAC/B;AAAA,EACJ;AACA,MAAI,OAAO,KAAK,SAAS,EAAE,SAAS,GAAG;AACnC,QAAI,SAAS,IAAI,YAAY,SAAS;AAAA,EAC1C;AAIA,MAAI,OAAO,aAAa;AACpB,iBAAa,WAAW,SAAS,OAAO,WAAW;AAAA,EACvD;AACA,SAAO;AACX;AAGO,SAAS,eAAe,QAAQ,QAAQ;AAE3C,MAAI,OAAO,WAAW,WAAW;AAC7B,WAAO,SAAS,EAAE,IAAI,IAAI,EAAE,MAAM;AAAA,EACtC;AAKA,MAAI;AACJ,MAAI;AACA,iBAAa,KAAK,MAAM,KAAK,UAAU,MAAM,CAAC;AAAA,EAClD,QACM;AACF,UAAM,IAAI,MAAM,gGAAgG;AAAA,EACpH;AACA,QAAMC,WAAU,cAAc,YAAY,QAAQ,aAAa;AAC/D,QAAM,OAAQ,WAAW,SAAS,WAAW,eAAe,CAAC;AAC7D,QAAM,MAAM;AAAA,IACR,SAAAA;AAAA,IACA;AAAA,IACA,MAAM,oBAAI,IAAI;AAAA,IACd,YAAY,oBAAI,IAAI;AAAA,IACpB,YAAY;AAAA,IACZ,UAAU,QAAQ,YAAY;AAAA,EAClC;AACA,SAAO,cAAc,YAAY,GAAG;AACxC;;;ACtlBA;AAAA;AAAA,gBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,YAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA;AAEO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,SAAQ,QAAQ;AAC5B,SAAY,gBAAwB,YAAY,MAAM;AAC1D;AACO,SAASC,QAAO,QAAQ;AAC3B,SAAY,eAAuB,WAAW,MAAM;AACxD;AACO,SAASC,MAAK,QAAQ;AACzB,SAAY,aAAqB,SAAS,MAAM;AACpD;;;A7EPA,OAAO,WAAG,CAAC;;;ADEX,IAAM,4BAA4B,iBAAE,OAAO;AAAA,EACzC,QAAQ,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC7C,IAAI,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAEM,SAAS,sBAAsB,MAAuB;AAC3D,MAAI,KAAK,WAAW,KAAK,KAAK,SAAS,IAAI,KAAK,QAAQ,KAAK,IAAI,EAAG,QAAO;AAC3E,SAAO,SAAS,OAAO,SAAS;AAClC;AAEO,SAAS,0BAA0B,MAAoB;AAC5D,MAAI,CAAC,sBAAsB,IAAI,GAAG;AAChC,UAAM,IAAI,MAAM,8BAA8B,IAAI,qCAAqC;AAAA,EACzF;AACF;AAEA,IAAM,wBAAwB,iBAAE,OAAO,iBAAE,OAAO,GAAG,iBAAE,OAAO,CAAC,EAAE,YAAY,CAAC,OAAO,YAAY;AAC7F,aAAW,QAAQ,OAAO,KAAK,KAAK,GAAG;AACrC,QAAI,CAAC,sBAAsB,IAAI,GAAG;AAChC,cAAQ,SAAS;AAAA,QACf,MAAM;AAAA,QACN,MAAM,CAAC,IAAI;AAAA,QACX,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACF,CAAC;AACD,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EAClC,QAAQ,sBAAsB,QAAQ,CAAC,CAAC;AAAA,EACxC,IAAI,sBAAsB,QAAQ,CAAC,CAAC;AACtC,CAAC;AACD,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EACjC,eAAe,iBAAE,MAAM,CAAC,iBAAE,QAAQ,GAAG,GAAG,iBAAE,QAAQ,GAAG,CAAC,CAAC;AAAA,EACvD,cAAc;AAAA,EACd,cAAc,mBAAmB,QAAQ,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AAAA,EAC/D,kBAAkB,iBAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC7C,eAAe,iBAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAC1C,aAAa,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC9C,CAAC;AAKD,SAAS,kBAAkB,OAAoC;AAC7D,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC9D;AAGA,SAAS,eAAe,OAAsC;AAC5D,SAAO;AAAA,IACL,GAAG;AAAA,IACH,eAAe;AAAA,IACf,cAAc,EAAE,QAAQ,kBAAkB,MAAM,aAAa,MAAM,GAAG,IAAI,kBAAkB,MAAM,aAAa,EAAE,EAAE;AAAA,IACnH,cAAc,EAAE,QAAQ,EAAE,GAAI,MAAM,cAAc,UAAU,CAAC,EAAG,GAAG,IAAI,EAAE,GAAI,MAAM,cAAc,MAAM,CAAC,EAAG,EAAE;AAAA,EAC/G;AACF;AAEO,SAAS,2BAAwC;AACtD,SAAO,EAAE,eAAe,6BAA6B,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE;AAClI;AAEA,eAAsB,0BAA0B,YAAmC;AACjF,QAAM,iBAAAC,QAAG,UAAU,uBAAuB,UAAU,CAAC;AACrD,QAAM,iBAAAA,QAAG,UAAU,wBAAwB,UAAU,CAAC;AACxD;AAEA,eAAsB,iBAAiB,YAAoB,OAA+C;AACxG,QAAM,YAAY,eAAe,kBAAkB,MAAM,KAAK,CAAC;AAC/D,QAAM,0BAA0B,UAAU;AAC1C,QAAM,YAAY,qBAAqB,UAAU;AACjD,QAAM,iBAAAA,QAAG,UAAU,WAAW,WAAW,EAAE,QAAQ,EAAE,CAAC;AACtD,QAAM,iBAAAA,QAAG,WAAW,WAAW,IAAI;AACnC,SAAO;AACT;AAEA,eAAsB,gBAAgB,YAA0C;AAC9E,QAAM,YAAY,qBAAqB,UAAU;AACjD,MAAI,CAAC,MAAM,iBAAAA,QAAG,WAAW,SAAS,EAAG,QAAO,iBAAiB,YAAY,yBAAyB,CAAC;AACnG,QAAM,MAAM,MAAM,iBAAAA,QAAG,SAAS,SAAS;AACvC,QAAM,SAAS,kBAAkB,UAAU,GAAG;AAC9C,MAAI,OAAO,SAAS;AAClB,UAAM,0BAA0B,UAAU;AAC1C,WAAO,eAAe,OAAO,IAAI;AAAA,EACnC;AACA,QAAM,kBAAkB,OAAO,QAAQ,YAAY,QAAQ,QAAQ,OAAO,UAAU,eAAe,KAAK,KAAK,cAAc;AAC3H,QAAM,SAAS,iBAAE,OAAO,EAAE,eAAe,iBAAE,MAAM,CAAC,iBAAE,QAAQ,GAAG,GAAG,iBAAE,QAAQ,2BAA2B,CAAC,CAAC,GAAG,cAAc,0BAA0B,CAAC,EAAE,UAAU,GAAG;AACpK,MAAI,mBAAmB,CAAC,OAAO,QAAS,OAAM,IAAI,MAAM,2BAA2B,SAAS,KAAK,OAAO,MAAM,OAAO,EAAE;AACvH,SAAO,iBAAiB,YAAY,EAAE,eAAe,6BAA6B,cAAc,OAAO,KAAK,cAAc,cAAc,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAClK;AAEA,eAAsB,uBAAuB,YAAoB,SAAwB,WAAoD;AAC3I,QAAM,QAAQ,MAAM,gBAAgB,UAAU;AAC9C,SAAO,iBAAiB,YAAY,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,GAAG,kBAAkB,SAAS,EAAE,EAAE,CAAC;AACpI;;;A+ExGA,IAAAC,mBAAe;AACf,IAAAC,oBAAiB;AAIjB,IAAM,qBAAqB,iBAAE,OAAO;AAAA,EAClC,eAAe,iBAAE,QAAQ,GAAG,EAAE,QAAQ,GAAG;AAAA,EACzC,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACtB,SAAS,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,aAAa,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC7B,QAAQ,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AASD,SAAS,eAAe,OAAoC;AAC1D,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AAC5E;AAEA,eAAsB,iBACpB,UACA,MACuB;AACvB,QAAM,eAAe,kBAAAC,QAAK,KAAK,UAAU,cAAc;AACvD,QAAM,WAAW,kBAAAA,QAAK,SAAS,QAAQ;AACvC,QAAM,WAAW,mBAAmB,MAAM,MAAM,iBAAAC,QAAG,SAAS,YAAY,CAAC;AAEzE,MAAI,SAAS,SAAS,UAAU;AAC9B,UAAM,IAAI,MAAM,4BAA4B,YAAY,gCAAgC,QAAQ,IAAI;AAAA,EACtG;AACA,MAAI,SAAS,UAAU,SAAS,KAAK,WAAW,UAAU,GAAG;AAC3D,UAAM,IAAI,MAAM,iCAAiC,YAAY,+BAA+B;AAAA,EAC9F;AAEA,SAAO,EAAE,GAAG,UAAU,QAAQ,eAAe,SAAS,MAAM,EAAE;AAChE;AAEO,SAAS,uBACd,gBACA,kBACsB;AACtB,QAAM,cAAc,IAAI,IAAI,cAAc;AAC1C,QAAM,gBAAgB,IAAI,IAAI,gBAAgB;AAC9C,SAAO;AAAA,IACL,oBAAoB,eAAe,eAAe,OAAO,UAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;AAAA,IAC1F,sBAAsB,eAAe,iBAAiB,OAAO,UAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;AAAA,EAC9F;AACF;;;AhFVA,IAAM,iBAAiB,oBAAI,IAAY;AAEvC,SAAS,SAAS,KAAa,SAAuB;AACpD,MAAI,eAAe,IAAI,GAAG,EAAG;AAC7B,iBAAe,IAAI,GAAG;AACtB,UAAQ,KAAK,mBAAmB,OAAO,EAAE;AAC3C;AAEA,eAAe,2BAA2B,MAAiC;AACzE,MAAI,CAAC,MAAM,iBAAAC,QAAG,WAAW,IAAI,EAAG,QAAO,CAAC;AACxC,QAAM,UAAU,MAAM,iBAAAA,QAAG,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAC9D,SAAO,QACJ,OAAO,WAAS,MAAM,YAAY,CAAC,EACnC,IAAI,WAAS,MAAM,IAAI,EACvB,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACtC;AAEA,eAAe,QAAQ,SAAiB,UAAoC;AAC1E,SAAO,iBAAAA,QAAG,WAAW,kBAAAC,QAAK,KAAK,SAAS,QAAQ,CAAC;AACnD;AAEA,eAAe,qBAAqB,SAAmC;AACrE,aAAW,UAAU,sBAAsB;AACzC,QAAI,MAAM,QAAQ,SAAS,MAAM,EAAG,QAAO;AAAA,EAC7C;AACA,SAAO;AACT;AAEA,eAAsB,uBAAuB,SAAmC;AAC9E,SAAO,QAAQ,SAAS,eAAe;AACzC;AAEA,eAAe,yBAAyB,eAA+C;AACrF,MAAI;AACJ,MAAI;AACF,cAAU,MAAM,iBAAAD,QAAG,SAAS,eAAe,MAAM;AAAA,EACnD,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,QAAQ,MAAM,6BAA6B;AAC/D,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,WAAW,YAAY,CAAC,EAAE,MAAM,OAAO,EAAE,KAAK,UAAQ,YAAY,KAAK,IAAI,CAAC;AAClF,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,SAAS,QAAQ,aAAa,EAAE,EAAE,KAAK,EAAE,QAAQ,gBAAgB,EAAE,EAAE,KAAK,KAAK;AACxF;AAEA,eAAe,cAAc,WAAmB,MAAwC;AACtF,QAAM,kBAAkB,MAAM,yBAAyB,kBAAAC,QAAK,KAAK,WAAW,eAAe,CAAC;AAC5F,QAAM,cAAc,mBAAmB;AACvC,4BAA0B,WAAW;AACrC,SAAO,EAAE,MAAM,aAAa,MAAM,UAAU;AAC9C;AAEA,eAAsB,qBAAqB,MAA0C;AACnF,QAAM,mBAAsC,CAAC;AAC7C,aAAW,kBAAkB,MAAM,2BAA2B,IAAI,GAAG;AACnE,UAAM,YAAY,kBAAAA,QAAK,KAAK,MAAM,cAAc;AAChD,QAAI,MAAM,uBAAuB,SAAS,GAAG;AAC3C,uBAAiB,KAAK,MAAM,cAAc,WAAW,cAAc,CAAC;AAAA,IACtE;AAAA,EACF;AACA,SAAO;AACT;AAEA,eAAe,mBAAmB,UAAkB,UAA8C;AAChG,QAAM,SAA4B,CAAC;AACnC,MAAI,MAAM,QAAQ,UAAU,eAAe,GAAG;AAC5C,WAAO,KAAK,MAAM,cAAc,UAAU,QAAQ,CAAC;AAAA,EACrD;AACA,SAAO,KAAK,GAAG,MAAM,qBAAqB,QAAQ,CAAC;AACnD,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAuB;AACjD,SAAO,oBAAoB,IAAI,IAAI;AACrC;AAEA,eAAe,aACb,UACA,MACA,kBACyB;AACzB,QAAM,WAAW,kBAAAA,QAAK,SAAS,QAAQ;AACvC,QAAM,eAAe,kBAAAA,QAAK,KAAK,UAAU,WAAW;AACpD,QAAM,SAAS,MAAM,mBAAmB,UAAU,QAAQ;AAC1D,MAAI;AAEJ,MAAI,oBAAoB,MAAM,iBAAAD,QAAG,WAAW,YAAY,GAAG;AACzD,UAAM,WAAW,MAAM,iBAAiB,UAAU,IAAI;AACtD,uBAAmB,uBAAuB,SAAS,QAAQ,OAAO,IAAI,WAAS,MAAM,IAAI,CAAC;AAAA,EAC5F;AACA,MAAI,CAAC,oBAAoB,MAAM,iBAAAA,QAAG,WAAW,YAAY,GAAG;AAC1D,aAAS,aAAa,kBAAAC,QAAK,QAAQ,QAAQ,CAAC,IAAI,GAAG,YAAY,0CAA0C;AAAA,EAC3G;AAEA,SAAO,EAAE,MAAM,UAAU,MAAM,UAAU,MAAM,QAAQ,iBAAiB;AAC1E;AAEA,eAAe,kBAAkB,YAA+C;AAC9E,QAAM,QAA0B,CAAC;AACjC,aAAW,YAAY,MAAM,2BAA2B,UAAU,GAAG;AACnE,QAAI,mBAAmB,QAAQ,EAAG;AAClC,UAAM,KAAK,MAAM,aAAa,kBAAAA,QAAK,KAAK,YAAY,QAAQ,GAAG,QAAQ,KAAK,CAAC;AAAA,EAC/E;AACA,SAAO;AACT;AAEA,eAAe,oBAAoB,YAA+C;AAChF,QAAM,aAAa,qBAAqB,UAAU;AAClD,QAAM,QAA0B,CAAC;AACjC,aAAW,YAAY,MAAM,2BAA2B,UAAU,GAAG;AACnE,QAAI,mBAAmB,QAAQ,EAAG;AAClC,UAAM,KAAK,MAAM,aAAa,kBAAAA,QAAK,KAAK,YAAY,QAAQ,GAAG,QAAQ,IAAI,CAAC;AAAA,EAC9E;AACA,SAAO;AACT;AAGA,eAAsB,kBAAkB,YAA+C;AACrF,QAAM,YAAY,MAAM,kBAAkB,UAAU;AACpD,QAAM,cAAc,MAAM,oBAAoB,UAAU;AACxD,MAAI,YAAY,SAAS,GAAG;AAC1B,aAAS,eAAe,kBAAAA,QAAK,QAAQ,UAAU,CAAC,IAAI,gCAAgC,qBAAqB,UAAU,CAAC,kDAAkD;AAAA,EACxK;AAEA,QAAM,YAAY,IAAI,IAAI,UAAU,IAAI,UAAQ,KAAK,IAAI,CAAC;AAC1D,aAAW,cAAc,aAAa;AACpC,QAAI,UAAU,IAAI,WAAW,IAAI,GAAG;AAClC;AAAA,QACE,aAAa,kBAAAA,QAAK,QAAQ,UAAU,CAAC,IAAI,WAAW,IAAI;AAAA,QACxD,YAAY,WAAW,IAAI,QAAQ,kBAAAA,QAAK,KAAK,YAAY,WAAW,IAAI,CAAC,yBAAyB,WAAW,IAAI;AAAA,MACnH;AACA;AAAA,IACF;AACA,cAAU,KAAK,UAAU;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC;AAC5E;AAGA,eAAsB,kBACpB,YACA,MAC2B;AAC3B,MAAI,SAAS,OAAQ,QAAO,kBAAkB,UAAU;AACxD,QAAM,QAA0B,CAAC;AACjC,aAAW,YAAY,MAAM,2BAA2B,wBAAwB,UAAU,CAAC,GAAG;AAC5F,UAAM,WAAW,kBAAAA,QAAK,KAAK,wBAAwB,UAAU,GAAG,QAAQ;AACxE,QAAI,CAAC,MAAM,iBAAAD,QAAG,WAAW,kBAAAC,QAAK,KAAK,UAAU,WAAW,CAAC,EAAG;AAC5D,UAAM,KAAK,MAAM,aAAa,UAAU,YAAY,IAAI,CAAC;AAAA,EAC3D;AACA,SAAO;AACT;AAEA,eAAsB,sBAAsB,YAAgD;AAC1F,SAAO,qBAAqB,uBAAuB,UAAU,CAAC;AAChE;AAEA,eAAsB,yBAAyB,YAAmD;AAChG,QAAM,aAAmC,CAAC;AAC1C,QAAM,gBAAgB,MAAM,sBAAsB,UAAU;AAC5D,aAAW,SAAS,eAAe;AACjC,QAAI,MAAM,qBAAqB,MAAM,IAAI,GAAG;AAC1C,iBAAW,KAAK,EAAE,MAAM,uBAAuB,MAAM,MAAM,MAAM,SAAS,UAAU,MAAM,IAAI,oEAAoE,CAAC;AAAA,IACrK;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,GAAI,MAAM,kBAAkB,YAAY,UAAU;AAAA,IAClD,GAAI,MAAM,kBAAkB,UAAU;AAAA,EACxC;AACA,QAAM,YAAY,oBAAI,IAAoB;AAC1C,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,UAAU,IAAI,KAAK,IAAI;AACxC,QAAI,UAAU;AACZ,iBAAW,KAAK,EAAE,MAAM,uBAAuB,MAAM,KAAK,MAAM,SAAS,SAAS,KAAK,IAAI,oBAAoB,QAAQ,KAAK,CAAC;AAAA,IAC/H,OAAO;AACL,gBAAU,IAAI,KAAK,MAAM,KAAK,IAAI;AAAA,IACpC;AACA,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI,MAAM,qBAAqB,MAAM,IAAI,GAAG;AAC1C,mBAAW,KAAK,EAAE,MAAM,uBAAuB,MAAM,MAAM,MAAM,SAAS,eAAe,KAAK,IAAI,IAAI,MAAM,IAAI,oEAAoE,CAAC;AAAA,MACvL;AAAA,IACF;AACA,UAAM,WAAW,KAAK;AACtB,QAAI,aAAa,SAAS,mBAAmB,SAAS,KAAK,SAAS,qBAAqB,SAAS,IAAI;AACpG,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,MAAM,KAAK;AAAA,QACX,SAAS,SAAS,KAAK,IAAI,6DAA6D,SAAS,mBAAmB,KAAK,IAAI,KAAK,MAAM,sBAAsB,SAAS,qBAAqB,KAAK,IAAI,KAAK,MAAM;AAAA,MAClN,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;;;AiF7OA,IAAAC,mBAAe;AACf,IAAAC,oBAAiB;AACjB,IAAAC,sBAA2B;AAuB3B,SAAS,SAAS,OAAe,QAAyB;AACxD,QAAM,WAAW,kBAAAC,QAAK,SAAS,kBAAAA,QAAK,QAAQ,MAAM,GAAG,kBAAAA,QAAK,QAAQ,KAAK,CAAC;AACxE,SAAO,aAAa,MAAO,CAAC,SAAS,WAAW,IAAI,KAAK,CAAC,kBAAAA,QAAK,WAAW,QAAQ;AACpF;AAEA,SAAS,uBAAuB,kBAA0B,MAAsB;AAC9E,4BAA0B,IAAI;AAC9B,QAAM,WAAW,kBAAAA,QAAK,QAAQ,kBAAkB,IAAI;AACpD,MAAI,CAAC,SAAS,UAAU,gBAAgB,GAAG;AACzC,UAAM,IAAI,MAAM,uBAAuB,IAAI,wCAAwC,gBAAgB,GAAG;AAAA,EACxG;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,aAAqB,QAAwB;AACvE,SAAO,kBAAAA,QAAK,SAAS,aAAa,MAAM,KAAK;AAC/C;AAEA,SAAS,cAAc,MAAsB,MAAiC;AAC5E,SAAO,KAAK,SAAS,OAAO,KAAK,SAAS,CAAC;AAC7C;AAEA,SAAS,qBAAqB,SAAuC,UAAyD;AAC5H,QAAM,eAAe,QAAQ,MAAM,aAAa,QAAQ,OAAO;AAC/D,QAAM,gBAAgB,QAAQ,gBAAgB,OAAO,CAAC,SAAS,aAAa,SAAS,KAAK,IAAI,CAAC;AAC/F,QAAM,SAAS,oBAAI,IAA4B;AAC/C,aAAW,QAAQ,eAAe;AAChC,UAAM,WAAW,OAAO,IAAI,KAAK,IAAI;AACrC,QAAI,YAAY,kBAAAA,QAAK,QAAQ,SAAS,IAAI,MAAM,kBAAAA,QAAK,QAAQ,KAAK,IAAI,GAAG;AACvE,YAAM,IAAI,MAAM,SAAS,KAAK,IAAI,gGAAgG;AAAA,IACpI;AACA,WAAO,IAAI,KAAK,MAAM,IAAI;AAAA,EAC5B;AAEA,QAAM,sBAAsB,cAAc,OAAO,CAAC,SAAS,kBAAAA,QAAK,QAAQ,kBAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC,MAAM,kBAAAA,QAAK,QAAQ,QAAQ,kBAAkB,CAAC;AAC7I,aAAW,QAAQ,eAAe;AAChC,QAAI,oBAAoB,KAAK,CAAC,eAAe,WAAW,SAAS,KAAK,QAAQ,kBAAAA,QAAK,QAAQ,WAAW,IAAI,MAAM,kBAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC,GAAG;AACxI,YAAM,IAAI,MAAM,SAAS,KAAK,IAAI,6DAA6D;AAAA,IACjG;AAAA,EACF;AAEA,QAAM,WAAW,cAAc,QAAQ,CAAC,SAAS,cAAc,MAAM,KAAK,IAAI,CAAC;AAC/E,QAAM,OAAO,oBAAI,IAAoB;AACrC,aAAW,SAAS,CAAC,GAAG,UAAU,GAAG,QAAQ,GAAG;AAC9C,8BAA0B,MAAM,WAAW;AAC3C,UAAM,QAAQ,KAAK,IAAI,MAAM,WAAW;AACxC,QAAI,SAAS,UAAU,MAAM,MAAM;AACjC,YAAM,UAAU,SAAS,KAAK,CAAC,UAAU,MAAM,gBAAgB,MAAM,WAAW,IAAI,mBAAmB;AACvG,YAAM,IAAI,MAAM,wBAAwB,MAAM,WAAW,SAAS,QAAQ,OAAO,wBAAwB,OAAO,KAAK,KAAK,OAAO,MAAM,IAAI,IAAI;AAAA,IACjJ;AACA,SAAK,IAAI,MAAM,aAAa,MAAM,IAAI;AAAA,EACxC;AACA,SAAO;AACT;AAEA,eAAe,uBAAuB,WAAkC;AACtE,QAAM,WAAW,MAAM,iBAAAC,QAAG,MAAM,SAAS,EAAE,MAAM,MAAM,IAAI;AAC3D,MAAI,UAAU,eAAe,GAAG;AAC9B,UAAM,IAAI,MAAM,oDAAoD,SAAS,GAAG;AAAA,EAClF;AACA,MAAI,YAAY,CAAC,SAAS,YAAY,GAAG;AACvC,UAAM,IAAI,MAAM,kDAAkD,SAAS,GAAG;AAAA,EAChF;AACA,QAAM,iBAAAA,QAAG,UAAU,SAAS;AAC9B;AAEA,eAAe,cAAc,QAAgB,UAAiC;AAC5E,QAAM,gBAAgB,GAAG,QAAQ,YAAQ,gCAAW,CAAC;AACrD,QAAM,iBAAAA,QAAG,QAAQ,QAAQ,aAAa;AACtC,MAAI;AACF,UAAM,iBAAAA,QAAG,OAAO,eAAe,QAAQ;AAAA,EACzC,UAAE;AACA,UAAM,iBAAAA,QAAG,OAAO,aAAa,EAAE,MAAM,MAAM,MAAS;AAAA,EACtD;AACF;AAEA,eAAe,qBACb,aACA,WACA,UACA,OACiC;AACjC,QAAM,SAAiC,CAAC;AACxC,QAAM,UAAU,MAAM,iBAAAA,QAAG,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC,CAAgB;AAClG,aAAW,SAAS,SAAS;AAC3B,UAAM,WAAW,uBAAuB,WAAW,MAAM,IAAI;AAC7D,UAAM,OAAO,MAAM,iBAAAA,QAAG,MAAM,QAAQ,EAAE,MAAM,MAAM,IAAI;AACtD,QAAI,CAAC,MAAM,eAAe,EAAG;AAC7B,UAAM,WAAW,kBAAAD,QAAK,QAAQ,WAAW,MAAM,iBAAAC,QAAG,SAAS,QAAQ,CAAC;AACpE,QAAI,OAAO,UAAU,eAAe,KAAK,UAAU,MAAM,IAAI,KAAK,MAAM,KAAK,CAAC,SAAS,SAAS,UAAU,IAAI,CAAC,GAAG;AAIhH,aAAO,MAAM,IAAI,IAAI,mBAAmB,aAAa,QAAQ;AAAA,IAC/D;AAAA,EACF;AACA,SAAO;AACT;AAcA,eAAsB,sBAAsB,SAA6E;AACvH,QAAM,EAAE,aAAa,SAAS,OAAO,mBAAmB,mBAAmB,IAAI;AAC/E,QAAM,mBAAmB,kBAAAC,QAAK,KAAK,aAAa,YAAY,WAAW,YAAY,OAAO,QAAQ;AAClG,QAAM,WAAW,MAAM,qBAAqB,iBAAiB;AAC7D,QAAM,WAAW,qBAAqB,SAAS,QAAQ;AACvD,QAAM,eAAuC,CAAC;AAC9C,aAAW,SAAS,UAAU;AAC5B,2BAAuB,kBAAkB,MAAM,WAAW;AAC1D,iBAAa,MAAM,WAAW,IAAI,kBAAAA,QAAK,QAAQ,MAAM,IAAI;AAAA,EAC3D;AAEA,QAAM,cAAc,MAAM,eAAe,OAAO,KAAK,CAAC;AACtD,aAAW,QAAQ,OAAO,KAAK,WAAW,EAAG,wBAAuB,kBAAkB,IAAI;AAC1F,QAAM,uBAAuB,gBAAgB;AAC7C,QAAM,QAAQ,CAAC,kBAAAA,QAAK,KAAK,aAAa,SAAS,QAAQ,GAAG,kBAAkB;AAC5E,QAAM,eAAe,OAAO,KAAK,WAAW,EAAE,WAAW,IACrD,MAAM,qBAAqB,aAAa,kBAAkB,cAAc,KAAK,IAC7E,CAAC;AACL,QAAM,UAAU,EAAE,GAAG,cAAc,GAAG,YAAY;AAClD,QAAM,eAAyB,CAAC;AAEhC,aAAW,CAAC,MAAM,cAAc,KAAK,OAAO,QAAQ,OAAO,GAAG;AAC5D,QAAI,aAAa,IAAI,EAAG;AACxB,UAAM,WAAW,uBAAuB,kBAAkB,IAAI;AAC9D,UAAM,OAAO,MAAM,iBAAAC,QAAG,MAAM,QAAQ,EAAE,MAAM,MAAM,IAAI;AACtD,QAAI,MAAM,eAAe,GAAG;AAC1B,YAAM,WAAW,kBAAAD,QAAK,QAAQ,kBAAkB,MAAM,iBAAAC,QAAG,SAAS,QAAQ,CAAC;AAC3E,YAAM,WAAW,kBAAAD,QAAK,QAAQ,aAAa,cAAc;AACzD,UAAI,aAAa,YAAY,MAAM,KAAK,CAAC,SAAS,SAAS,UAAU,IAAI,CAAC,EAAG,OAAM,iBAAAC,QAAG,OAAO,QAAQ;AAAA,IACvG;AACA,iBAAa,KAAK,IAAI;AAAA,EACxB;AAEA,aAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQ,YAAY,GAAG;AACzD,UAAM,WAAW,uBAAuB,kBAAkB,IAAI;AAC9D,UAAM,WAAW,MAAM,iBAAAA,QAAG,MAAM,QAAQ,EAAE,MAAM,MAAM,IAAI;AAC1D,UAAM,UAAU,OAAO,UAAU,eAAe,KAAK,SAAS,IAAI;AAClE,QAAI,YAAY,CAAC,SAAS;AACxB,UAAI,CAAC,SAAS,eAAe,KAAK,kBAAAD,QAAK,QAAQ,kBAAkB,MAAM,iBAAAC,QAAG,SAAS,QAAQ,CAAC,MAAM,QAAQ;AACxG,cAAM,IAAI,MAAM,wBAAwB,IAAI,MAAM,QAAQ,iBAAiB;AAAA,MAC7E;AAAA,IACF;AACA,QAAI,UAAU,eAAe,KAAK,kBAAAD,QAAK,QAAQ,kBAAkB,MAAM,iBAAAC,QAAG,SAAS,QAAQ,CAAC,MAAM,QAAQ;AAIxG,YAAM,eAAe,MAAM,iBAAAA,QAAG,WAAW,MAAM;AAC/C,UAAI,aAAc;AAClB,YAAM,iBAAAA,QAAG,OAAO,QAAQ;AAAA,IAC1B,WAAW,YAAY,CAAC,SAAS,eAAe,GAAG;AACjD,YAAM,IAAI,MAAM,4CAA4C,QAAQ,GAAG;AAAA,IACzE;AACA,UAAM,cAAc,QAAQ,QAAQ;AAAA,EACtC;AAEA,QAAM,cAAc,OAAO,YAAY,OAAO,QAAQ,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,mBAAmB,aAAa,MAAM,CAAC,CAAC,CAAC;AAC5I,QAAM,YAAyB,EAAE,GAAG,OAAO,cAAc,EAAE,GAAG,MAAM,cAAc,CAAC,OAAO,GAAG,YAAY,EAAE;AAC3G,QAAM,YAAY,MAAM,iBAAiB,kBAAkB,WAAW,GAAG,SAAS;AAClF,SAAO,OAAO,OAAO,SAAS;AAC9B,SAAO,EAAE,SAAS,cAAc,aAAa,cAAc,OAAO,UAAU;AAC9E;;;AlF3KA,eAAsB,8BAA8B,UAAsC,CAAC,GAAkB;AAC3G,QAAM,SAAS,uBAAuB,wBAAwB,CAAC;AAC/D,MAAI,CAAC,MAAM,iBAAAC,QAAG,WAAW,MAAM,EAAG,OAAM,IAAI,MAAM,uCAAuC,MAAM,EAAE;AACjG,aAAW,CAAC,MAAM,KAAK,KAAK;AAAA,IAC1B,CAAC,kBAAAC,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,WAAW,QAAQ,GAAG,kBAAkB;AAAA,IACjE,CAAC,kBAAAD,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,OAAO,SAAS,QAAQ,GAAG,oBAAoB;AAAA,EAC1E,GAAY;AACV,UAAM,WAAW,MAAM,iBAAAF,QAAG,MAAM,IAAI,EAAE,MAAM,MAAM,IAAI;AACtD,QAAI,YAAY,EAAE,SAAS,eAAe,KAAK,kBAAAC,QAAK,QAAQ,kBAAAA,QAAK,QAAQ,IAAI,GAAG,MAAM,iBAAAD,QAAG,SAAS,IAAI,CAAC,MAAM,kBAAAC,QAAK,QAAQ,MAAM,IAAI;AAClI,UAAI,CAAC,QAAQ,MAAO,OAAM,IAAI,MAAM,gCAAgC,KAAK,iBAAiB;AAC1F,YAAM,iBAAAD,QAAG,OAAO,IAAI;AAAA,IACtB;AACA,QAAI,CAAC,MAAM,iBAAAA,QAAG,WAAW,IAAI,GAAG;AAC9B,YAAM,iBAAAA,QAAG,UAAU,kBAAAC,QAAK,QAAQ,IAAI,CAAC;AACrC,YAAM,iBAAAD,QAAG,QAAQ,QAAQ,IAAI;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,eAAsB,0BAA0B,aAAqB,WAAuC,CAAC,GAAoC;AAC/I,QAAM,aAAa,kBAAkB,WAAW;AAChD,QAAM,aAAa,MAAM,yBAAyB,UAAU;AAC5D,MAAI,WAAW,SAAS,EAAG,OAAM,IAAI,MAAM,6BAA6B,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AACrI,QAAM,aAAa,wBAAwB;AAC3C,QAAM,QAAQ;AAAA,IACZ,GAAI,MAAM,kBAAkB,YAAY,UAAU;AAAA,IAClD,GAAI,MAAM,kBAAkB,YAAY,MAAM;AAAA,IAC9C,GAAI,MAAM,kBAAkB,YAAY,UAAU;AAAA,IAClD,GAAI,MAAM,kBAAkB,YAAY,MAAM;AAAA,EAChD;AACA,QAAM,QAAQ,MAAM,gBAAgB,UAAU;AAC9C,QAAM,UAAU,CAAC;AACjB,aAAW,WAAW,CAAC,UAAU,IAAI,GAAY;AAC/C,YAAQ,KAAK,MAAM,sBAAsB;AAAA,MACvC;AAAA,MACA;AAAA,MACA;AAAA,MACA,iBAAiB;AAAA,MACjB,mBAAmB,uBAAuB,UAAU;AAAA,MACpD,oBAAoB,kBAAAC,QAAK,KAAK,YAAY,UAAU;AAAA,IACtD,CAAC,CAAC;AAAA,EACJ;AACA,SAAO;AAAA,IACL,uBAAuB,OAAO,KAAK,QAAQ,CAAC,EAAE,YAAY,EAAE;AAAA,IAC5D,mBAAmB,OAAO,KAAK,QAAQ,CAAC,EAAE,YAAY,EAAE;AAAA,EAC1D;AACF;;;AmF1DA,IAAAE,wBAA0B;AAC1B,IAAAC,oBAAe;AACf;AACA,IAAAC,eAAiB;AACjB,IAAAC,kBAAwB;AAUxB,IAAM,yCAAyC;AAAA,EAC3C,CAAC,YAAY,iBAAiB,YAAY;AAAA,EAC1C,CAAC,SAAS,YAAY;AAC1B;AACA,IAAM,qCAAqC;AAAA,EACvC,CAAC,YAAY,iBAAiB,UAAU,SAAS;AAAA,EACjD,CAAC,SAAS,UAAU,SAAS;AACjC;AAEA,SAAS,yBACL,SACA,YACa;AACb,aAAW,aAAa,YAAY;AAChC,UAAM,gBAAgB,aAAAC,QAAK,KAAK,SAAS,GAAG,SAAS;AACrD,QAAI,kBAAAC,QAAG,WAAW,aAAa,GAAG;AAC9B,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,iBAAyB;AAC9B,QAAM,aAAa;AAAA,IACf,aAAAD,QAAK,QAAQ,WAAW,OAAO;AAAA,IAC/B,aAAAA,QAAK,QAAQ,WAAW,UAAU;AAAA,EACtC;AACA,aAAW,iBAAiB,YAAY;AACpC,QAAI,yBAAyB,eAAe,sCAAsC,GAAG;AACjF,aAAO;AAAA,IACX;AAAA,EACJ;AACA,SAAO,WAAW,CAAC;AACvB;AAEO,SAAS,oCAAoC,UAAkB,eAAe,GAAkB;AACnG,SAAO,yBAAyB,SAAS,sCAAsC;AACnF;AAEA,SAAS,gCAAgC,UAAkB,eAAe,GAAkB;AACxF,SAAO,yBAAyB,SAAS,kCAAkC;AAC/E;AAEO,SAAS,8BAA8B,UAAkB,eAAe,GAAkB;AAC7F,SAAO,yBAAyB,SAAS;AAAA,IACrC,CAAC,YAAY,iBAAiB,OAAO,MAAM;AAAA,IAC3C,CAAC,SAAS,cAAc,MAAM;AAAA,EAClC,CAAC;AACL;AAEA,IAAM,eAAe,QAAQ,IAAI,gBAAgB,aAAAA,QAAK,SAAK,yBAAQ,GAAG,OAAO,OAAO;AACpF,IAAM,2BAA2B;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,eAAsB,oBAClB,WACA,QACA,KACA,WAAW,aAAAA,QAAK,KAAK,cAAc,QAAQ,GAC9B;AACb,MAAI,CAAC,aAAa,CAAC,MAAM,kBAAAC,QAAG,WAAW,SAAS,EAAG;AAGnD,QAAM,UAAU,yBAAyB,OAAO,CAAC,SAAS,CAAC,kBAAAA,QAAG,WAAW,aAAAD,QAAK,KAAK,WAAW,IAAI,CAAC,CAAC;AACpG,MAAI,QAAQ,SAAS,GAAG;AACpB,UAAM,IAAI,MAAM,mCAAmC,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,EAC3E;AAEA,MAAI,QAAQ;AACR,UAAM,wCAAmC,QAAQ,EAAE;AACnD;AAAA,EACJ;AAEA,QAAM,kBAAAC,QAAG,UAAU,QAAQ;AAC3B,aAAW,QAAQ,0BAA0B;AAEzC,UAAM,SAAS,aAAAD,QAAK,KAAK,UAAU,IAAI;AACvC,UAAM,kBAAAC,QAAG,OAAO,MAAM;AAEtB,UAAM,kBAAAA,QAAG,QAAQ,aAAAD,QAAK,SAAS,UAAU,aAAAA,QAAK,KAAK,WAAW,IAAI,CAAC,GAAG,MAAM;AAAA,EAChF;AACA,QAAM,uBAAuB;AACjC;AAEA,IAAM,8BAA8B,aAAAA,QAAK,KAAK,cAAc,cAAc,gBAAgB;AAC1F,IAAM,gCAAgC;AAEtC,eAAe,0BAAkD;AAC7D,QAAM,aAAS,iCAAU,OAAO,CAAC,QAAQ,IAAI,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACnF,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAM,cAAc,OAAO,UAAU,IAAI,KAAK;AAC9C,SAAO,WAAW,SAAS,IAAI,aAAa;AAChD;AACA,IAAM,2BAA2B;AACjC,IAAM,6BAA6B,oBAAI,IAAI;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AACD,IAAM,+BAA+B;AACrC,IAAM,4BAA4C;AAAA,EAC9C,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,UAAU;AACd;AACA,IAAM,6BAA6B,oBAAI,IAAY,CAAC,YAAY,CAAC;AACjE,IAAM,mCAAmC,oBAAI,IAAY;AAAA,EACrD;AAAA,EACA;AACJ,CAAC;AAED,SAAS,uBAAuB,SAAiB,QAAiB,KAAuC;AACrG,QAAM,aAAa,aAAAA,QAAK,KAAK,SAAS,WAAW,6BAA6B;AAC9E,MAAI,CAAC,kBAAAC,QAAG,WAAW,UAAU,EAAG;AAEhC,MAAI,QAAQ;AACR,UAAM,kBAAkB,UAAU,EAAE;AACpC;AAAA,EACJ;AAEA,QAAM,aAAS,iCAAU,QAAQ,CAAC,UAAU,GAAG,EAAE,UAAU,OAAO,CAAC;AACnE,MAAI,OAAO,WAAW,GAAG;AACrB,UAAM,UAAU,OAAO,UAAU,IAAI,KAAK;AAC1C,QAAI,OAAQ,OAAM,+BAA+B,MAAM,EAAE;AAAA,EAC7D,OAAO;AACH,UAAM,+CAA+C;AAAA,EACzD;AACJ;AAeA,IAAM,qBAAyC;AAAA,EAC3C,EAAE,IAAI,QAAQ,aAAa,iBAAiB,WAAW,MAAM,UAAU,KAAK;AAAA,EAC5E,EAAE,IAAI,qBAAqB,aAAa,qBAAqB,UAAU,MAAM;AAAA,EAC7E,EAAE,IAAI,eAAe,aAAa,eAAe,UAAU,MAAM;AAAA,EACjE,EAAE,IAAI,SAAS,aAAa,SAAS,UAAU,KAAK;AAAA,EACpD,EAAE,IAAI,kBAAkB,aAAa,kBAAkB,UAAU,MAAM;AAAA,EACvE,EAAE,IAAI,iBAAiB,aAAa,iBAAiB,UAAU,KAAK;AAAA,EACpE,EAAE,IAAI,4BAA4B,aAAa,4BAA4B,UAAU,MAAM;AAAA,EAC3F,EAAE,IAAI,kBAAkB,aAAa,kBAAkB,UAAU,MAAM;AAAA,EACvE,EAAE,IAAI,iBAAiB,aAAa,iBAAiB,UAAU,MAAM;AAAA,EACrE,EAAE,IAAI,qBAAqB,aAAa,qBAAqB,UAAU,MAAM;AAAA;AAAA;AAAA,EAG7E,EAAE,IAAI,kBAAkB,aAAa,kBAAkB,UAAU,MAAM;AAAA,EACvE,EAAE,IAAI,gBAAgB,aAAa,gBAAgB,UAAU,KAAK;AAAA,EAClE,EAAE,IAAI,eAAe,aAAa,eAAe,UAAU,KAAK;AAAA,EAChE,EAAE,IAAI,WAAW,aAAa,WAAW,UAAU,KAAK;AAC5D;AAaA,IAAM,mBAAqC;AAAA,EACvC,EAAE,IAAI,mBAAmB,aAAa,eAAe,UAAU,KAAK;AAAA,EACpE,EAAE,IAAI,uBAAuB,aAAa,mBAAmB,UAAU,KAAK;AAAA,EAC5E,EAAE,IAAI,8BAA8B,aAAa,gBAAgB,UAAU,KAAK;AAAA,EAChF,EAAE,IAAI,uCAAuC,aAAa,wBAAwB,UAAU,KAAK;AAAA,EACjG,EAAE,IAAI,4BAA4B,aAAa,iBAAiB,UAAU,MAAM;AAAA,EAChF,EAAE,IAAI,2BAA2B,aAAa,gBAAgB,UAAU,KAAK;AAAA,EAC7E,EAAE,IAAI,sBAAsB,aAAa,kBAAkB,UAAU,KAAK;AAC9E;AAEA,IAAM,+BAA+B;AAAA,EACjC;AAAA,EACA,GAAG,iBAAiB,IAAI,SAAO,IAAI,EAAE;AACzC;AAEO,SAAS,yBAA2C;AACvD,SAAO,CAAC,2BAA2B,GAAG,gBAAgB;AAC1D;AAqFA,SAAS,yBAAmC;AACxC,QAAM,aAAS,iCAAU,MAAM,CAAC,MAAM,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC5E,MAAI,OAAO,WAAW,EAAG,QAAO,CAAC;AAEjC,QAAM,SAAS,OAAO;AACtB,QAAM,WAAqB,CAAC;AAI5B,aAAW,QAAQ,OAAO,MAAM,IAAI,GAAG;AACnC,UAAM,QAAQ,KAAK,MAAM,qBAAqB;AAC9C,QAAI,MAAO,UAAS,KAAK,MAAM,CAAC,CAAC;AAAA,EACrC;AAEA,SAAO,SAAS,KAAK;AACzB;AAKA,eAAe,wBAAwB,WAAsC;AACzE,MAAI,CAAC,MAAM,kBAAAA,QAAG,WAAW,SAAS,EAAG,QAAO,CAAC;AAC7C,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AACnE,SAAO,QACF,OAAO,OAAK,EAAE,YAAY,KAAK,EAAE,eAAe,CAAC,EACjD,IAAI,OAAK,EAAE,IAAI,EACf,KAAK;AACd;AAKA,eAAsB,mBAClB,WACA,WACsB;AAEtB,QAAM,oBAAoB,MAAM,wBAAwB,SAAS;AACjE,QAAM,oBAAuC,CAAC;AAC9C,QAAM,oBAAuC,CAAC;AAC9C,QAAM,kBAAqC,CAAC;AAC5C,QAAM,qBAA+B,CAAC;AAEtC,aAAW,OAAO,oBAAoB;AAClC,UAAM,UAAU,aAAAD,QAAK,KAAK,WAAW,IAAI,EAAE;AAC3C,UAAM,UAAU,aAAAA,QAAK,KAAK,WAAW,IAAI,EAAE;AAE3C,UAAM,YAAY,MAAM,kBAAAC,QAAG,WAAW,OAAO;AAC7C,UAAM,YAAY,MAAM,kBAAAA,QAAG,WAAW,OAAO;AAE7C,QAAI,CAAC,WAAW;AAEZ;AAAA,IACJ;AAEA,QAAI,CAAC,WAAW;AACZ,YAAMC,UAA0B,EAAE,KAAK,WAAW,MAAM;AACxD,wBAAkB,KAAKA,OAAM;AAC7B,wBAAkB,KAAKA,OAAM;AAC7B;AAAA,IACJ;AAMA,QAAI,UAAU;AACd,QAAI,YAAY,SAAS;AACrB,YAAM,UAAU,MAAM,kBAAAD,QAAG,MAAM,OAAO;AACtC,UAAI,QAAQ,eAAe,GAAG;AAC1B,cAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,OAAO;AAC5C,cAAM,iBAAiB,aAAAD,QAAK,QAAQ,aAAAA,QAAK,QAAQ,OAAO,GAAG,UAAU;AACrE,kBAAU,mBAAmB,aAAAA,QAAK,QAAQ,OAAO;AAAA,MACrD,OAAO;AAEH,kBAAU;AAAA,MACd;AAAA,IACJ;AACA,UAAM,SAA0B;AAAA,MAC5B;AAAA,MACA,WAAW;AAAA,MACX,OAAO;AAAA,IACX;AACA,sBAAkB,KAAK,MAAM;AAE7B,QAAI,SAAS;AACT,sBAAgB,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AAGA,QAAM,aAAa,IAAI,IAAI,mBAAmB,IAAI,OAAK,EAAE,EAAE,CAAC;AAC5D,aAAW,QAAQ,mBAAmB;AAClC,QAAI,CAAC,WAAW,IAAI,IAAI,GAAG;AACvB,yBAAmB,KAAK,IAAI;AAAA,IAChC;AAAA,EACJ;AAGA,QAAM,kBAAkB,uBAAuB;AAC/C,QAAM,kBAAmC,CAAC;AAC1C,QAAM,kBAAmC,CAAC;AAE1C,aAAW,OAAO,kBAAkB;AAChC,UAAM,cAAc,gBAAgB,SAAS,IAAI,EAAE;AACnD,UAAM,SAAwB,EAAE,KAAK,WAAW,YAAY;AAC5D,oBAAgB,KAAK,MAAM;AAE3B,QAAI,CAAC,aAAa;AACd,sBAAgB,KAAK,MAAM;AAAA,IAC/B;AAAA,EACJ;AAEA,QAAM,qBACF,kBAAkB,MAAM,OAAK,CAAC,EAAE,IAAI,QAAQ,KAC5C,gBAAgB,MAAM,OAAK,CAAC,EAAE,IAAI,QAAQ,KAC1C,gBAAgB,MAAM,OAAK,CAAC,EAAE,IAAI,QAAQ;AAE9C,QAAM,aACF,kBAAkB,WAAW,KAC7B,gBAAgB,WAAW,KAC3B,mBAAmB,WAAW,KAC9B,gBAAgB,WAAW;AAE/B,SAAO;AAAA,IACH,YAAY;AAAA,IACZ,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAIO,SAAS,oBAAoB,MAA2B;AAC3D,UAAQ,IAAI,cAAM,KAAK,gBAAgB,CAAC;AACxC,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAG5C,QAAM,WAAW,KAAK,WAAW;AACjC,QAAM,QAAQ,KAAK,WAAW,OAAO,OAAK,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE;AAEnE,UAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,IAAI,QAAQ,aAAa,CAAC;AAEtE,MAAI,KAAK,kBAAkB,SAAS,GAAG;AACnC,UAAM,QAAQ,KAAK,kBAAkB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AAC1E,YAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,EACtD;AAEA,MAAI,KAAK,gBAAgB,SAAS,GAAG;AACjC,UAAM,QAAQ,KAAK,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AACxE,YAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,EACtD;AAEA,MAAI,KAAK,mBAAmB,SAAS,GAAG;AACpC,UAAM,QAAQ,KAAK,mBAAmB,KAAK,IAAI;AAC/C,YAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,gBAAgB,CAAC;AAAA,EACjE;AAGA,QAAM,WAAW,KAAK,SAAS;AAC/B,QAAM,QAAQ,KAAK,SAAS,OAAO,OAAK,EAAE,SAAS,EAAE;AAErD,UAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,IAAI,QAAQ,YAAY,CAAC;AAErE,MAAI,KAAK,gBAAgB,SAAS,GAAG;AACjC,UAAM,QAAQ,KAAK,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AACxE,YAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,EACtD;AAEA,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,MAAI,KAAK,YAAY;AACjB,YAAQ,IAAI,EAAE,QAAQ,iDAA4C,CAAC;AAAA,EACvE,WAAW,KAAK,oBAAoB;AAChC,YAAQ,IAAI,EAAE,QAAQ,sCAAiC,CAAC;AACxD,UAAM,kBAAkB;AAAA,MACpB,GAAG,KAAK,kBAAkB,OAAO,OAAK,CAAC,EAAE,IAAI,QAAQ;AAAA,MACrD,GAAG,KAAK,gBAAgB,OAAO,OAAK,CAAC,EAAE,IAAI,QAAQ;AAAA,IACvD;AACA,QAAI,gBAAgB,SAAS,GAAG;AAC5B,YAAM,QAAQ,gBAAgB;AAAA,QAAI,OAC9B,SAAS,IAAI,EAAE,IAAI,cAAc,EAAE,IAAI;AAAA,MAC3C,EAAE,KAAK,IAAI;AACX,cAAQ,IAAI,cAAM,IAAI,oCAA+B,KAAK;AAAA,CAAI,CAAC;AAAA,IACnE,OAAO;AACH,cAAQ,IAAI,EAAE;AAAA,IAClB;AAAA,EACJ,OAAO;AACH,YAAQ,IAAI,cAAM,OAAO,oCAA+B,CAAC;AAAA,EAC7D;AACJ;AAyBA,SAAS,kCAAkC,iBAAqD;AAC5F,SAAO,6BAA6B,IAAI,CAAC,cAAc;AACnD,UAAM,UAAU,uBAAuB,EAAE,KAAK,CAACG,SAAQA,KAAI,OAAO,SAAS;AAC3E,UAAM,MAAsB,WAAW;AAEvC,WAAO;AAAA,MACH;AAAA,MACA,WAAW,gBAAgB,SAAS,SAAS;AAAA,IACjD;AAAA,EACJ,CAAC;AACL;AAYA,SAAS,oBAAoB,aAAoC;AAC7D,MAAI,CAAC,YAAY,WAAW,MAAM,EAAG,QAAO;AAC5C,QAAM,iBAAiB,YAAY,MAAM,CAAC,EAAE,KAAK;AACjD,SAAO,eAAe,SAAS,IAAI,iBAAiB;AACxD;AAEA,SAAS,2BAA2B,MAAqD;AACrF,MAAI,CAAC,KAAK,iBAAkB,QAAO;AACnC,MAAI,CAAC,KAAK,gBAAiB,QAAO;AAClC,SAAO,KAAK,qBAAqB,KAAK,kBAAkB,YAAY;AACxE;AAEA,SAAS,kCACL,UACA,gBACA,YACM;AAGN,QAAM,uBAAuB,aAAAC,QAAK,KAAK,UAAU,OAAO,gBAAgB,gBAAgB,cAAc;AACtG,MAAI,kBAAAC,QAAG,WAAW,oBAAoB,KAAK,CAAC,WAAY,QAAO;AAG/D,SAAO,aAAAD,QAAK,KAAK,YAAY,gBAAgB,cAAc;AAC/D;AAEA,eAAsB,6BAClB,UACA,gBACA,YACsB;AACtB,QAAM,kBAAkB,kCAAkC,UAAU,gBAAgB,UAAU;AAC9F,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,eAAe,EAAG,QAAO;AAElD,MAAI;AACA,UAAM,cAAc,MAAM,kBAAAA,QAAG,SAAS,eAAe;AACrD,WAAO,OAAO,YAAY,YAAY,WAAW,YAAY,UAAU;AAAA,EAC3E,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,IAAM,uCAAuC;AAE7C,eAAe,4BAA4B,gBAAgD;AACvF,QAAM,aAAS,iCAAU,OAAO,CAAC,QAAQ,gBAAgB,WAAW,cAAc,kBAAkB,GAAG;AAAA,IACnG,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACb,CAAC;AAED,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAMC,YAAW,OAAO,UAAU,IAAI,KAAK;AAC3C,SAAOA,SAAQ,SAAS,IAAIA,WAAU;AAC1C;AAEA,eAAsB,6BAClB,iBACA,WAAsC,uBAAuB,GAC1B;AACnC,QAAM,WAAuC,CAAC;AAE9C,aAAW,OAAO,UAAU;AACxB,UAAM,iBAAiB,oBAAoB,IAAI,EAAE;AACjD,QAAI,CAAC,gBAAgB;AACjB,eAAS,KAAK;AAAA,QACV;AAAA,QACA,gBAAgB;AAAA,QAChB,kBAAkB;AAAA,QAClB,iBAAiB;AAAA,QACjB,OAAO;AAAA,MACX,CAAC;AACD;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,gBAAgB,IAAI,IAAI,gBAAgB,GAAG;AAC9D,UAAM,mBAAmB,KAAK,oBAAoB;AAClD,UAAM,kBAAkB,KAAK,mBAAmB;AAEhD,aAAS,KAAK;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,2BAA2B,EAAE,kBAAkB,gBAAgB,CAAC;AAAA,IAC3E,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,eAAsB,0BAClB,UACA,aACA,YACgB;AAChB,QAAM,iBAAiB,oBAAoB,WAAW;AACtD,MAAI,CAAC,eAAgB,QAAO;AAI5B,QAAM,kBAAkB,aAAAF,QAAK,KAAK,UAAU,OAAO,gBAAgB,cAAc;AACjF,MAAI,MAAM,kBAAAC,QAAG,WAAW,eAAe,EAAG,QAAO;AACjD,MAAI,CAAC,WAAY,QAAO;AAGxB,SAAO,kBAAAA,QAAG,WAAW,aAAAD,QAAK,KAAK,YAAY,cAAc,CAAC;AAC9D;AAEA,IAAM,qBAAqB;AAgB3B,SAAS,oBAAoB,aAAqBG,MAAiD;AAC/F,QAAM,oBAAgB,iCAAU,MAAM,CAAC,WAAW,WAAW,GAAG;AAAA,IAC5D,OAAO;AAAA,IACP,UAAU;AAAA,IACV,KAAAA;AAAA,EACJ,CAAC;AAED,SAAO;AAAA,IACH,QAAQ,cAAc;AAAA,IACtB,QAAQ,cAAc,UAAU;AAAA,IAChC,QAAQ,cAAc,UAAU;AAAA,EACpC;AACJ;AAEA,SAAS,0BAA0B,QAAwC;AACvE,SAAO,GAAG,OAAO,MAAM;AAAA,EAAK,OAAO,MAAM,GAAG,KAAK;AACrD;AAEA,SAAS,sBAAsB,UAA6B,QAAQ,KAAwB;AACxF,SAAO;AAAA,IACH,GAAG;AAAA,IACH,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,EACzB;AACJ;AAEO,SAAS,6BAA6B,aAAqB,QAAyB;AACvF,MAAI,gBAAgB,6BAA8B,QAAO;AAEzD,QAAM,mBAAmB,OAAO,YAAY;AAC5C,SAAO,iBAAiB,SAAS,WAAW,KAAK,iBAAiB,SAAS,KAAK;AACpF;AAEO,SAAS,+BAA+B,aAAqB,QAA0B;AAC1F,MAAI,CAAC,6BAA6B,aAAa,MAAM,GAAG;AACpD,WAAO,CAAC;AAAA,EACZ;AAEA,SAAO;AAAA,IACH,oCAAoC,WAAW;AAAA,IAC/C,iDAAiD,kBAAkB;AAAA,EACvE;AACJ;AAEA,SAAS,6BACL,aACA,KACA,gBAAwC,qBACjB;AACvB,QAAM,gBAAgB,cAAc,WAAW;AAC/C,QAAM,gBAAgB,0BAA0B,aAAa;AAE7D,OAAK,cAAc,UAAU,OAAO,GAAG;AACnC,WAAO,EAAE,QAAQ,cAAc,QAAQ,QAAQ,eAAe,kBAAkB,MAAM;AAAA,EAC1F;AAEA,MAAI,CAAC,6BAA6B,aAAa,aAAa,GAAG;AAC3D,WAAO,EAAE,QAAQ,cAAc,QAAQ,QAAQ,eAAe,kBAAkB,MAAM;AAAA,EAC1F;AAEA,QAAM,cAAM,IAAI,8BAA8B,WAAW,kBAAkB,kBAAkB,EAAE,CAAC;AAChG,QAAM,gBAAgB,cAAc,aAAa,sBAAsB,CAAC;AACxE,QAAM,gBAAgB,0BAA0B,aAAa;AAE7D,SAAO;AAAA,IACH,QAAQ,cAAc;AAAA,IACtB,QAAQ,CAAC,eAAe,aAAa,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,IAChE,kBAAkB;AAAA,EACtB;AACJ;AAEA,eAAsB,6BAClB,QACA,KACA,WAAmB,cACnB,gBAAwC,qBACxC,YACkD;AAClD,QAAM,YAAsB,CAAC;AAC7B,QAAM,SAAmB,CAAC;AAE1B,QAAM,qBAAqB,eAAe,SAAY,MAAM,wBAAwB,IAAI;AAExF,aAAW,OAAO,uBAAuB,GAAG;AACxC,QAAI,MAAM,0BAA0B,UAAU,IAAI,IAAI,sBAAsB,MAAS,GAAG;AACpF;AAAA,IACJ;AAEA,QAAI,QAAQ;AACR,YAAM,wBAAwB,IAAI,EAAE,EAAE;AACtC;AAAA,IACJ;AAEA,UAAM,iBAAiB,6BAA6B,IAAI,IAAI,KAAK,aAAa;AAC9E,QAAI,eAAe,WAAW,GAAG;AAC7B,gBAAU,KAAK,IAAI,EAAE;AACrB,YAAM,GAAG,IAAI,EAAE,IAAI,IAAI,WAAW,WAAW,eAAe,mBAAmB,qBAAqB,EAAE,GAAG;AACzG;AAAA,IACJ;AAEA,WAAO,KAAK,IAAI,EAAE;AAClB,UAAM,cAAM,OAAO,UAAK,IAAI,WAAW,+BAA0B,CAAC;AAClE,eAAW,QAAQ,+BAA+B,IAAI,IAAI,eAAe,MAAM,GAAG;AAC9E,YAAM,cAAM,OAAO,YAAO,IAAI,EAAE,CAAC;AAAA,IACrC;AAAA,EACJ;AAEA,SAAO,EAAE,WAAW,OAAO;AAC/B;AAEA,eAAsB,0BAClB,QACA,KACA,WAAmB,cACnB,gBAAwC,qBACxC,iBACiC;AACjC,QAAM,aAAa,MAAM,wBAAwB;AACjD,QAAM,0BAA0B,oBAAoB,OAAO,cAAc,oBAAoB;AAAA,IACzF,kBAAkB,MAAM,6BAA6B,UAAU,gBAAgB,cAAc,MAAS;AAAA,IACtG,iBAAiB,MAAM,4BAA4B,cAAc;AAAA,EACrE;AAEA,QAAM,WAAW,MAAM,6BAA6B,uBAAuB;AAC3E,QAAM,UAAU,SAAS,OAAO,CAAC,WAAW,OAAO,UAAU,SAAS;AACtE,QAAM,WAAW,SAAS,OAAO,CAAC,WAAW,OAAO,UAAU,UAAU;AACxE,QAAM,YAAsB,CAAC;AAC7B,QAAM,YAAsB,CAAC;AAC7B,QAAM,SAAmB,CAAC;AAE1B,aAAW,UAAU,CAAC,GAAG,SAAS,GAAG,QAAQ,GAAG;AAC5C,QAAI,QAAQ;AACR,YAAM,0BAA0B,OAAO,IAAI,EAAE;AAC7C;AAAA,IACJ;AAEA,UAAM,iBAAiB,6BAA6B,OAAO,IAAI,IAAI,KAAK,aAAa;AACrF,QAAI,eAAe,WAAW,GAAG;AAC7B,UAAI,OAAO,UAAU,WAAW;AAC5B,kBAAU,KAAK,OAAO,IAAI,EAAE;AAC5B,cAAM,IAAI,KAAK,MAAM,OAAO,IAAI,WAAW;AAAA,MAC/C,OAAO;AACH,kBAAU,KAAK,OAAO,IAAI,EAAE;AAC5B,cAAM,IAAI,KAAK,MAAM,OAAO,IAAI,cAAc,cAAc;AAAA,MAChE;AACA;AAAA,IACJ;AAEA,WAAO,KAAK,OAAO,IAAI,EAAE;AACzB,UAAM,cAAM,OAAO,YAAO,OAAO,IAAI,cAAc,aAAQ,OAAO,QAAQ,wBAAwB,CAAC;AACnG,eAAW,QAAQ,+BAA+B,OAAO,IAAI,IAAI,eAAe,MAAM,GAAG;AACrF,YAAM,cAAM,OAAO,cAAS,IAAI,CAAC;AAAA,IACrC;AAAA,EACJ;AAEA,SAAO,EAAE,UAAU,SAAS,UAAU,WAAW,WAAW,OAAO;AACvE;AAEA,eAAsB,kCAClB,iBACuC;AACvC,QAAM,aAAa,MAAM,wBAAwB;AACjD,QAAM,0BAA0B,oBAAoB,OAAO,cAAc,oBAAoB;AAAA,IACzF,kBAAkB,MAAM,6BAA6B,cAAc,gBAAgB,cAAc,MAAS;AAAA,IAC1G,iBAAiB,MAAM,4BAA4B,cAAc;AAAA,EACrE;AAEA,QAAM,WAAW,MAAM,6BAA6B,yBAAyB,uBAAuB,CAAC;AACrG,QAAM,SAAS,SACV,OAAO,CAAC,WAAW,OAAO,UAAU,SAAS,EAC7C,IAAI,CAAC,YAAY;AAAA,IACd,GAAG;AAAA,IACH,aAAa,OAAO,UAAU,oBACxB,qDACA,gBAAgB,OAAO,IAAI;AAAA,EACrC,EAAE;AAEN,QAAM,UAAU,OAAO,OAAO,CAACC,WAAUA,OAAM,UAAU,SAAS;AAClE,QAAM,WAAW,OAAO,OAAO,CAACA,WAAUA,OAAM,UAAU,UAAU;AACpE,QAAMC,MAAK,SAAS,OAAO,CAAC,WAAW,OAAO,UAAU,SAAS,EAAE,IAAI,CAAC,YAAY;AAAA,IAChF,GAAG;AAAA,IACH,aAAa;AAAA,EACjB,EAAE;AAEF,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,IAAAA;AAAA,IACA,WAAW,OAAO,SAAS;AAAA,EAC/B;AACJ;AAQA,eAAsB,yBAClB,YACA,aACA,QACA,KAC0B;AAC1B,MAAI,CAAC,MAAM,kBAAAJ,QAAG,WAAW,UAAU,EAAG,QAAO;AAM7C,QAAM,gBAAgB,aAAAD,QAAK,KAAK,aAAa,SAAS,YAAY;AAClE,QAAM,iBAAiB,aAAAA,QAAK,KAAK,eAAe,gBAAgB,OAAO;AACvE,QAAM,cAAc,aAAAA,QAAK,KAAK,gBAAgB,SAAS;AACvD,QAAM,iBAAiB,aAAAA,QAAK,QAAQ,UAAU;AAG9C,QAAM,WAAW,MAAM,kBAAAC,QAAG,MAAM,WAAW,EAAE,MAAM,MAAM,IAAI;AAC7D,MAAI,UAAU;AACV,QAAI,SAAS,eAAe,GAAG;AAC3B,YAAM,oBAAoB,MAAM,kBAAAA,QAAG,SAAS,WAAW;AACvD,YAAM,iBAAiB,aAAAD,QAAK,QAAQ,aAAAA,QAAK,QAAQ,WAAW,GAAG,iBAAiB;AAChF,UAAI,mBAAmB,gBAAgB;AACnC,eAAO;AAAA,MACX;AAAA,IACJ;AAEA,QAAI,QAAQ;AACR,YAAM,cAAM,IAAI,qDAAqD,CAAC;AACtE,aAAO;AAAA,IACX;AAEA,UAAM,kBAAAC,QAAG,OAAO,WAAW;AAC3B,UAAM,kBAAAA,QAAG,UAAU,cAAc;AACjC,UAAMK,aAAY,aAAAN,QAAK,SAAS,gBAAgB,UAAU;AAC1D,UAAM,kBAAAC,QAAG,QAAQK,YAAW,WAAW;AACvC,UAAM,cAAM,IAAI,mFAA8E,CAAC;AAC/F,WAAO;AAAA,EACX;AAEA,MAAI,QAAQ;AACR,UAAM,cAAM,IAAI,8CAA8C,CAAC;AAC/D,WAAO;AAAA,EACX;AAEA,QAAM,kBAAAL,QAAG,UAAU,cAAc;AACjC,QAAM,YAAY,aAAAD,QAAK,SAAS,gBAAgB,UAAU;AAC1D,QAAM,kBAAAC,QAAG,QAAQ,WAAW,WAAW;AACvC,QAAM,cAAM,IAAI,kFAA6E,CAAC;AAC9F,SAAO;AACX;AAeA,eAAsB,mCAClB,QACA,KACkC;AAClC,QAAM,OAAO,MAAM,kBAAAA,QAAG,MAAM,2BAA2B,EAAE,MAAM,MAAM,IAAI;AACzE,MAAI,CAAC,MAAM;AACP,WAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,IAChB;AAAA,EACJ;AAEA,MAAI,KAAK,eAAe,GAAG;AACvB,WAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,IAChB;AAAA,EACJ;AAEA,QAAM,mBAAmB,MAAM,kBAAAA,QAAG,WAAW,aAAAD,QAAK,KAAK,6BAA6B,6BAA6B,CAAC;AAClH,MAAI,KAAK,YAAY,KAAK,kBAAkB;AACxC,WAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,IAChB;AAAA,EACJ;AAEA,QAAM,SAAS,KAAK,YAAY,IAC1B,WAAW,6BAA6B,KACxC;AAEN,MAAI,QAAQ;AACR,UAAM,cAAM,IAAI,yDAAyD,MAAM,GAAG,CAAC;AACnF,WAAO;AAAA,MACH,MAAM;AAAA,MACN,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YAAY;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AAEA,QAAM,kBAAAC,QAAG,OAAO,2BAA2B;AAC3C,QAAM,cAAM,IAAI,0CAA0C,MAAM,GAAG,CAAC;AACpE,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,YAAY;AAAA,IACZ;AAAA,EACJ;AACJ;AAEA,eAAsB,qBAClB,aACA,QACA,KACgC;AAChC,QAAM,oBAAoB,gCAAgC,GAAG,QAAQ,GAAG;AACxE,QAAM,gBAAgB,MAAM,mCAAmC,QAAQ,GAAG;AAC1E,QAAM,oBAAoB,MAAM;AAAA,IAC5B,aAAAD,QAAK,KAAK,aAAa,SAAS,cAAc,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,EACJ;AACJ;AAMA,SAAS,wBAAwB,OAAwB;AACrD,QAAM,kBAAkB,MAAM,WAAW,MAAM,GAAG,EAAE,QAAQ,OAAO,EAAE;AACrE,SAAO,oBAAoB,4BAA4B,oBAAoB;AAC/E;AAEA,eAAe,oCACX,aACA,QACA,KACgD;AAChD,QAAM,iBAAiB,aAAAA,QAAK,KAAK,aAAa,OAAO,eAAe;AAEpE,MAAI,mBAA8C,CAAC;AACnD,MAAI;AACA,uBAAmB,MAAM,kBAAAC,QAAG,SAAS,cAAc;AAAA,EACvD,QAAQ;AACJ,WAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EACrC;AAEA,QAAM,0BAA0B,iBAAiB,cAAc,CAAC,GAAG,KAAK,uBAAuB;AAC/F,MAAI,CAAC,uBAAwB,QAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE;AAE9D,QAAM,sBAAsB,aAAAD,QAAK,KAAK,aAAa,OAAO,YAAY;AACtE,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,mBAAmB,EAAG,QAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE;AAEhF,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAmB,CAAC;AAE1B,aAAW,OAAO,oBAAoB;AAClC,UAAM,gBAAgB,aAAAD,QAAK,KAAK,qBAAqB,IAAI,EAAE;AAC3D,UAAM,aAAa,MAAM,kBAAAC,QAAG,MAAM,aAAa,EAAE,MAAM,MAAM,IAAI;AACjE,QAAI,CAAC,cAAc,WAAW,eAAe,KAAK,CAAC,WAAW,YAAY,GAAG;AACzE;AAAA,IACJ;AAEA,QAAI,QAAQ;AACR,YAAM,cAAM,IAAI,8BAA8B,IAAI,EAAE,gBAAgB,CAAC;AACrE;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,kBAAAA,QAAG,OAAO,aAAa;AAC7B,cAAQ,KAAK,IAAI,EAAE;AACnB,YAAM,cAAM,IAAI,iCAAiC,IAAI,EAAE,EAAE,CAAC;AAAA,IAC9D,SAAS,KAAK;AACV,aAAO,KAAK,IAAI,EAAE;AAClB,YAAM,cAAM,IAAI,iDAA4C,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;AAAA,IACjF;AAAA,EACJ;AAEA,SAAO,EAAE,SAAS,OAAO;AAC7B;AAUA,IAAM,qBAA6C;AAAA,EAC/C,cAAc;AAAA,EACd,eAAe;AAAA,EACf,wBAAwB;AAAA,EACxB,yBAAyB;AAC7B;AAEA,SAAS,mBAAmB,OAAyB;AACjD,SAAO,OAAO,UAAU,WAAW,mBAAmB,KAAK,KAAK,QAAQ;AAC5E;AAEA,IAAM,+BAA+B,oBAAI,IAAI,CAAC,QAAQ,SAAS,QAAQ,MAAM,QAAQ,MAAM,CAAC;AAE5F,SAAS,qBAAqB,OAA0B;AACpD,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACnC,SAAO,MAAM,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ;AAC7E;AAEA,SAAS,gBAAgB,OAAyC;AAC9D,SAAO,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IAC3D,EAAE,GAAI,MAAkC,IACxC,CAAC;AACX;AAEA,SAAS,wBAAwB,OAAyC;AACtE,QAAM,SAAS,gBAAgB,KAAK;AACpC,QAAM,eAAe,qBAAqB,OAAO,YAAY;AAC7D,QAAM,qBAAqB,aAAa,KAAK,CAAC,aAAa,CAAC,6BAA6B,IAAI,QAAQ,CAAC;AAMtG,MAAI,CAAC,MAAM,QAAQ,OAAO,YAAY,KAAK,CAAC,oBAAoB;AAC5D,WAAO,eAAe,CAAC;AAAA,EAC3B;AAEA,SAAO;AACX;AAEA,SAAS,yBAAyB,gBAA6C;AAC3E,SAAO,eAAe,OAAO,CAAC,OAAO,UAAU,eAAe,QAAQ,KAAK,MAAM,SAAS,CAAC,2BAA2B,IAAI,KAAK,CAAC;AACpI;AAEA,eAAe,uBAAuB,OAMpB;AACd,QAAM,UAAU,aAAAD,QAAK,SAAK,yBAAQ,GAAG,SAAS,QAAQ,wBAAwB;AAC9E,QAAM,kBAAAC,QAAG,UAAU,aAAAD,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU;AAAA,IAC3C,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO,WAAW,MAAM,MAAM;AAAA,IAC9B,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,EACnB,CAAC,CAAC;AAAA,CAAI;AACV;AAEO,SAAS,iCAAiC,SAAmE;AAChH,QAAM,OAAiB,CAAC;AACxB,QAAM,UAAoB,CAAC;AAE3B,aAAW,SAAS,SAAS;AACzB,QAAI,2BAA2B,IAAI,KAAK,GAAG;AACvC,cAAQ,KAAK,KAAK;AAClB;AAAA,IACJ;AACA,SAAK,KAAK,KAAK;AAAA,EACnB;AAEA,SAAO,EAAE,MAAM,QAAQ;AAC3B;AAEA,eAAe,uCACX,cACA,YACA,QACA,yBAAyB,OACzB,KACiB;AACjB,MAAI,CAAC,MAAM,kBAAAA,QAAG,WAAW,YAAY,GAAG;AACpC,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI,mBAAoC,CAAC;AACzC,MAAI;AACA,uBAAmB,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAAA,EACrD,QAAQ;AACJ,WAAO,CAAC;AAAA,EACZ;AAEA,QAAM,mBAAmB,qBAAqB,iBAAiB,QAAQ;AACvE,QAAM,EAAE,MAAM,QAAQ,IAAI,iCAAiC,gBAAgB;AAC3E,QAAM,QAAQ,yBAAyB,mBAAmB,iBAAiB,KAAK,IAAI,iBAAiB;AACrG,QAAM,eAAe,UAAU,iBAAiB;AAChD,QAAM,4BAA4B,0BAA0B,yBAAyB;AACrF,MAAI,QAAQ,WAAW,KAAK,CAAC,gBAAgB,CAAC,2BAA2B;AACrE,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI,QAAQ;AACR,QAAI,QAAQ,SAAS,GAAG;AACpB,YAAM,cAAM,IAAI,yDAAyD,UAAU,KAAK,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,IACjH;AACA,QAAI,cAAc;AACd,YAAM,cAAM,IAAI,uCAAuC,UAAU,KAAK,OAAO,iBAAiB,KAAK,CAAC,WAAM,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,IAC9H;AACA,QAAI,2BAA2B;AAC3B,YAAM,cAAM,IAAI,4DAA4D,UAAU,EAAE,CAAC;AAAA,IAC7F;AACA,WAAO;AAAA,EACX;AAEA,QAAM,eAAgC,EAAE,GAAG,iBAAiB;AAC5D,MAAI,QAAQ,SAAS,EAAG,cAAa,WAAW;AAChD,MAAI,aAAc,cAAa,QAAQ;AACvC,MAAI,0BAA2B,QAAO,aAAa;AACnD,QAAM,kBAAAA,QAAG,UAAU,cAAc,cAAc,EAAE,QAAQ,EAAE,CAAC;AAC5D,MAAI,QAAQ,SAAS,GAAG;AACpB,UAAM,cAAM,IAAI,0CAA0C,UAAU,KAAK,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EAClG;AACA,MAAI,cAAc;AACd,UAAM,cAAM,IAAI,wBAAwB,UAAU,KAAK,OAAO,iBAAiB,KAAK,CAAC,WAAM,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,EAC/G;AACA,SAAO;AACX;AAEA,eAAsB,oCAClB,aACA,QACA,UACA,KACA,WAAW,cACE;AACb,QAAM;AAAA;AAAA,IAEF,aAAAD,QAAK,KAAK,UAAU,eAAe;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACA,QAAM;AAAA,IACF,aAAAA,QAAK,KAAK,aAAa,OAAO,eAAe;AAAA,IAC7C,GAAG,WAAW;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,eAAsB,iBAClB,aACA,QACA,KACa;AACb,QAAM,YAAY,aAAAA,QAAK,KAAK,aAAa,KAAK;AAC9C,QAAM,iBAAiB,aAAAA,QAAK,KAAK,WAAW,eAAe;AAE3D,MAAI,QAAQ;AACR,UAAM,cAAM,IAAI,iDAAiD,4BAA4B,EAAE,CAAC;AAChG;AAAA,EACJ;AAEA,QAAM,kBAAAC,QAAG,UAAU,SAAS;AAE5B,MAAI,mBAAoC,CAAC;AACzC,MAAI;AACA,uBAAmB,MAAM,kBAAAA,QAAG,SAAS,cAAc;AAAA,EACvD,SAASM,SAAO;AACZ,QAAKA,QAAgC,SAAS,SAAU,OAAMA;AAAA,EAClE;AAEA,QAAM,qBAAqB,oBAAI,IAAI,CAAC,2BAA2B,eAAe,CAAC;AAC/E,QAAM,0BAA0B,qBAAqB,iBAAiB,QAAQ,EACzE,OAAO,CAAC,UAAU,CAAC,mBAAmB,IAAI,KAAK,KAAK,CAAC,MAAM,WAAW,eAAe,CAAC;AAC3F,QAAM,EAAE,MAAM,iBAAiB,IAAI,iCAAiC,uBAAuB;AAC3F,MAAI,CAAC,iBAAiB,SAAS,4BAA4B,GAAG;AAC1D,qBAAiB,KAAK,4BAA4B;AAAA,EACtD;AAEA,QAAM,iBAAiB,qBAAqB,iBAAiB,MAAM;AACnE,QAAM,mBAAmB,yBAAyB,cAAc;AAChE,MAAI,KAAK,UAAU,cAAc,MAAM,KAAK,UAAU,gBAAgB,GAAG;AACrE,UAAM,uBAAuB;AAAA,MACzB,OAAO;AAAA,MACP,QAAQ,iBAAiB,KAAK,GAAG;AAAA,MACjC,UAAU,eAAe,KAAK,GAAG,KAAK;AAAA,MACtC,QAAQ;AAAA,MACR,SAAS;AAAA,IACb,CAAC;AAAA,EACL;AAEA,QAAM,qBAAqB,qBAAqB,iBAAiB,UAAU,EACtE,OAAO,CAAC,UAAU,CAAC,iCAAiC,IAAI,KAAK,CAAC;AAEnE,QAAM,eAAgC;AAAA,IAClC,GAAG;AAAA,IACH,YAAY;AAAA,IACZ,UAAU;AAAA,IACV,QAAQ,wBAAwB,iBAAiB,MAAM;AAAA,IACvD,OAAO,mBAAmB,iBAAiB,KAAK;AAAA,EACpD;AACA,MAAI,iBAAiB,SAAS,GAAG;AAC7B,iBAAa,SAAS;AAAA,EAC1B,OAAO;AACH,WAAO,aAAa;AAAA,EACxB;AACA,SAAO,aAAa;AAEpB,QAAM,kBAAAN,QAAG,UAAU,gBAAgB,cAAc,EAAE,QAAQ,EAAE,CAAC;AAC9D,QAAM,cAAM,IAAI,oCAA+B,4BAA4B,MAAM,iBAAiB,KAAK,KAAK,CAAC,EAAE,CAAC;AACpH;AAKA,eAAsB,cAClB,MACA,WACA,WACA,OAAsB,CAAC,GACF;AACrB,QAAM;AAAA,IACF,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM,CAAC,QAAQ,QAAQ,IAAI,cAAM,IAAI,OAAO,GAAG,EAAE,CAAC;AAAA,EACtD,IAAI;AAEJ,QAAM,SAAuB;AAAA,IACzB,iBAAiB,CAAC;AAAA,IAClB,mBAAmB,CAAC;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,QAAQ,CAAC;AAAA,EACb;AAGA,MAAI,CAAC,QAAQ;AACT,UAAM,kBAAAA,QAAG,UAAU,SAAS;AAAA,EAChC;AAGA,QAAM,SAAS,CAAC,GAAG,KAAK,mBAAmB,GAAG,KAAK,eAAe;AAElE,aAAW,UAAU,QAAQ;AACzB,UAAM,EAAE,IAAI,IAAI;AAChB,UAAM,UAAU,aAAAD,QAAK,KAAK,WAAW,IAAI,EAAE;AAC3C,UAAM,UAAU,aAAAA,QAAK,KAAK,WAAW,IAAI,EAAE;AAE3C,QAAI,QAAQ;AACR,UAAI,aAAa,OAAO,YAAY,WAAM,GAAG,IAAI,IAAI,WAAW,EAAE;AAClE;AAAA,IACJ;AAEA,QAAI;AAEA,YAAM,kBAAAC,QAAG,OAAO,OAAO;AACvB,YAAM,YAAY,aAAAD,QAAK,SAAS,WAAW,OAAO;AAClD,YAAM,kBAAAC,QAAG,QAAQ,WAAW,OAAO;AACnC,UAAI,OAAO,WAAW;AAClB,eAAO,kBAAkB,KAAK,IAAI,EAAE;AACpC,YAAI,UAAK,IAAI,WAAW,cAAc;AAAA,MAC1C,OAAO;AACH,eAAO,gBAAgB,KAAK,IAAI,EAAE;AAClC,YAAI,KAAK,IAAI,WAAW,cAAc;AAAA,MAC1C;AAAA,IACJ,SAAS,KAAK;AACV,aAAO,OAAO,KAAK,IAAI,EAAE;AACzB,UAAI,cAAM,IAAI,UAAK,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;AAAA,IACjD;AAAA,EACJ;AAGA,MAAI,kBAAkB,KAAK,mBAAmB,SAAS,GAAG;AACtD,eAAW,YAAY,KAAK,oBAAoB;AAC5C,YAAM,aAAa,aAAAD,QAAK,KAAK,WAAW,QAAQ;AAEhD,UAAI,QAAQ;AACR,YAAI,cAAM,IAAI,eAAe,QAAQ,aAAa,CAAC;AACnD;AAAA,MACJ;AAEA,UAAI;AACA,cAAM,kBAAAC,QAAG,OAAO,UAAU;AAC1B,eAAO,kBAAkB,KAAK,QAAQ;AACtC,YAAI,cAAM,IAAI,KAAK,QAAQ,aAAa,CAAC;AAAA,MAC7C,SAAS,KAAK;AACV,eAAO,OAAO,KAAK,QAAQ;AAC3B,YAAI,cAAM,IAAI,UAAK,QAAQ,KAAK,GAAG,EAAE,CAAC;AAAA,MAC1C;AAAA,IACJ;AAAA,EACJ;AAGA,aAAW,UAAU,KAAK,iBAAiB;AACvC,UAAM,EAAE,IAAI,IAAI;AAChB,UAAM,cAAc,CAAC,WAAW,IAAI,EAAE;AAEtC,QAAI,QAAQ;AACR,UAAI,gBAAgB,YAAY,KAAK,GAAG,CAAC,EAAE;AAC3C;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,iBAAiB,6BAA6B,IAAI,IAAI,GAAG;AAC/D,UAAI,eAAe,WAAW,GAAG;AAC7B,eAAO,kBAAkB,KAAK,IAAI,EAAE;AACpC,YAAI,GAAG,IAAI,EAAE,IAAI,IAAI,WAAW,GAAG,eAAe,mBAAmB,sBAAsB,EAAE,EAAE;AAAA,MACnG,OAAO;AACH,eAAO,OAAO,KAAK,IAAI,EAAE;AACzB,YAAI,cAAM,OAAO,UAAK,IAAI,WAAW,wBAAmB,CAAC;AACzD,mBAAW,QAAQ,+BAA+B,IAAI,IAAI,eAAe,MAAM,GAAG;AAC9E,cAAI,cAAM,OAAO,YAAO,IAAI,EAAE,CAAC;AAAA,QACnC;AAAA,MACJ;AAAA,IACJ,SAAS,KAAK;AACV,aAAO,OAAO,KAAK,IAAI,EAAE;AACzB,UAAI,cAAM,IAAI,UAAK,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;AAAA,IACjD;AAAA,EACJ;AAEA,SAAO;AACX;AAgBA,eAAsB,iBAAiB,OAAyB,CAAC,GAA0B;AACvF,QAAM,EAAE,SAAS,OAAO,WAAW,OAAO,YAAY,IAAI;AAE1D,QAAM,UAAU,eAAe;AAC/B,QAAM,YAAY,oCAAoC,OAAO;AAC7D,QAAM,sBAAsB,eAAe,QAAQ,IAAI;AACvD,QAAM,MAAM,CAAC,QAAgB,QAAQ,IAAI,cAAM,IAAI,OAAO,GAAG,EAAE,CAAC;AAEhE,QAAM,SAAuB;AAAA,IACzB,iBAAiB,CAAC;AAAA,IAClB,mBAAmB,CAAC;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,mBAAmB,CAAC;AAAA,IACpB,QAAQ,CAAC;AAAA,EACb;AAEA,MAAI,CAAC,aAAa,CAAC,MAAM,kBAAAA,QAAG,WAAW,SAAS,GAAG;AAC/C,YAAQ,IAAI,cAAM,IAAI,gEAAgE,CAAC;AACvF,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,MAAM,qBAAqB,qBAAqB,QAAQ,GAAG;AAC7E,MAAI,UAAU,cAAc,YAAY;AACpC,WAAO,kBAAkB,KAAK,gBAAgB;AAAA,EAClD;AAEA,QAAM,oCAAoC,qBAAqB,QAAQ,UAAU,GAAG;AAEpF,MAAI,UAAU;AACV,UAAM,YAAY,aAAAD,QAAK,KAAK,cAAc,YAAY;AACtD,UAAM,OAAO,MAAM,mBAAmB,WAAW,SAAS;AAC1D,wBAAoB,IAAI;AAExB,QAAI,CAAC,KAAK,YAAY;AAClB,YAAM,SAAS,MAAM,cAAc,MAAM,WAAW,WAAW;AAAA,QAC3D;AAAA,QACA,UAAU;AAAA,QACV,gBAAgB;AAAA,MACpB,CAAC;AACD,aAAO,gBAAgB,KAAK,GAAG,OAAO,eAAe;AACrD,aAAO,kBAAkB,KAAK,GAAG,OAAO,iBAAiB;AACzD,aAAO,kBAAkB,KAAK,GAAG,OAAO,iBAAiB;AACzD,aAAO,kBAAkB,KAAK,GAAG,OAAO,iBAAiB;AACzD,aAAO,OAAO,KAAK,GAAG,OAAO,MAAM;AAAA,IACvC;AAEA,UAAMQ,6BAA4B,MAAM,6BAA6B,QAAQ,GAAG;AAChF,WAAO,kBAAkB,KAAK,GAAGA,2BAA0B,SAAS;AACpE,WAAO,OAAO,KAAK,GAAGA,2BAA0B,MAAM;AACtD,WAAO;AAAA,EACX;AAEA,QAAM,kBAAkB,uBAAuB;AAC/C,QAAM,kBAAkB,kCAAkC,eAAe;AACzE,QAAM,kBAAkB,gBAAgB,OAAO,CAAC,WAAW,CAAC,OAAO,SAAS;AAE5E,UAAQ,IAAI,cAAM,KAAK,gBAAgB,CAAC;AACxC,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAC5C,QAAM,4BAA4B,gBAAgB;AAAA,IAC9C,CAAC,WAAW,OAAO,IAAI,OAAO,gCAAgC,OAAO;AAAA,EACzE;AACA,UAAQ,IAAI,cAAM,IAAI,iBAAiB,4BAA4B,sBAAsB,iBAAiB,KAAK,4BAA4B,GAAG,CAAC;AAC/I,QAAM,QAAQ,gBAAgB,OAAO,CAAC,WAAW,OAAO,SAAS,EAAE;AACnE,UAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,IAAI,gBAAgB,MAAM,YAAY,CAAC;AACnF,MAAI,gBAAgB,SAAS,GAAG;AAC5B,UAAM,QAAQ,gBAAgB,IAAI,CAAC,WAAW,OAAO,IAAI,WAAW,EAAE,KAAK,IAAI;AAC/E,YAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,EACtD;AACA,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,QAAM,gBAAgB,MAAM,oCAAoC,qBAAqB,QAAQ,GAAG;AAChG,SAAO,kBAAkB,KAAK,GAAG,cAAc,OAAO;AACtD,SAAO,OAAO,KAAK,GAAG,cAAc,MAAM;AAG1C,QAAM,eAAe,aAAAR,QAAK,KAAK,cAAc,YAAY;AACzD,MAAI,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACnC,UAAM,kBAAkB,IAAI,IAAI,mBAAmB,IAAI,OAAK,EAAE,EAAE,CAAC;AACjE,UAAM,iBAAiB,oBAAI,IAAI,CAAC,GAAG,iBAAiB,QAAQ,YAAY,QAAQ,CAAC;AACjF,UAAM,gBAAgB,MAAM,kBAAAA,QAAG,QAAQ,cAAc,EAAE,eAAe,KAAK,CAAC;AAC5E,eAAW,SAAS,eAAe;AAC/B,UAAI,MAAM,eAAe,KAAK,eAAe,IAAI,MAAM,IAAI,GAAG;AAC1D,YAAI,CAAC,QAAQ;AACT,gBAAM,kBAAAA,QAAG,OAAO,aAAAD,QAAK,KAAK,cAAc,MAAM,IAAI,CAAC;AAAA,QACvD;AACA,eAAO,kBAAkB,KAAK,MAAM,IAAI;AACxC,YAAI,iCAAiC,MAAM,IAAI,EAAE;AAAA,MACrD;AAAA,IACJ;AACA,UAAM,mBAAmB,aAAAA,QAAK,KAAK,cAAc,cAAc;AAC/D,QAAI,MAAM,kBAAAC,QAAG,WAAW,gBAAgB,GAAG;AACvC,UAAI,CAAC,QAAQ;AACT,cAAM,kBAAAA,QAAG,OAAO,gBAAgB;AAAA,MACpC;AACA,UAAI,8CAA8C;AAAA,IACtD;AAAA,EACJ;AAEA,aAAW,UAAU,iBAAiB;AAClC,UAAM,EAAE,IAAI,IAAI;AAChB,QAAI,QAAQ;AACR,UAAI,wBAAwB,IAAI,EAAE,EAAE;AACpC;AAAA,IACJ;AAEA,QAAI;AACA,YAAM,iBAAiB,6BAA6B,IAAI,IAAI,GAAG;AAC/D,UAAI,eAAe,WAAW,GAAG;AAC7B,eAAO,kBAAkB,KAAK,IAAI,EAAE;AACpC,YAAI,GAAG,IAAI,EAAE,IAAI,IAAI,WAAW,GAAG,eAAe,mBAAmB,sBAAsB,EAAE,EAAE;AAC/F;AAAA,MACJ;AAEA,aAAO,OAAO,KAAK,IAAI,EAAE;AACzB,UAAI,cAAM,OAAO,UAAK,IAAI,WAAW,wBAAmB,CAAC;AACzD,iBAAW,QAAQ,+BAA+B,IAAI,IAAI,eAAe,MAAM,GAAG;AAC9E,YAAI,cAAM,OAAO,YAAO,IAAI,EAAE,CAAC;AAAA,MACnC;AAAA,IACJ,SAAS,KAAK;AACV,aAAO,OAAO,KAAK,IAAI,EAAE;AACzB,UAAI,cAAM,IAAI,UAAK,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;AAAA,IACjD;AAAA,EACJ;AAEA,QAAM,4BAA4B,MAAM,6BAA6B,QAAQ,GAAG;AAChF,SAAO,kBAAkB,KAAK,GAAG,0BAA0B,SAAS;AACpE,SAAO,OAAO,KAAK,GAAG,0BAA0B,MAAM;AAEtD,QAAM,aAAa,kBAAkB,mBAAmB;AACxD,MAAI,MAAM,kBAAAA,QAAG,WAAW,aAAAD,QAAK,KAAK,YAAY,SAAS,CAAC,GAAG;AACvD,UAAM,sBAAsB,MAAM,yBAAyB,UAAU;AACrE,QAAI,oBAAoB,SAAS,GAAG;AAChC,YAAM,UAAU,oBAAoB,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,KAAK,UAAU,OAAO,EAAE,EAAE,KAAK,IAAI;AAC3G,YAAM,IAAI,MAAM,6BAA6B,OAAO,EAAE;AAAA,IAC1D;AAEA,QAAI,CAAC,QAAQ;AAET,YAAM,kBAAAC,QAAG,OAAO,aAAAD,QAAK,KAAK,YAAY,QAAQ,CAAC;AAAA,IACnD;AAAA,EACJ;AAEA,yBAAuB,SAAS,QAAQ,GAAG;AAE3C,QAAM,iBAAiB,qBAAqB,QAAQ,GAAG;AAEvD,QAAM,iBAAiB,gBAAgB,OAAO,CAAC,WAAW,OAAO,IAAI,YAAY,OAAO,OAAO,SAAS,OAAO,IAAI,EAAE,CAAC;AACtH,MAAI,eAAe,WAAW,GAAG;AAC7B,YAAQ,IAAI,EAAE,QAAQ,wCAAmC,CAAC;AAAA,EAC9D,OAAO;AACH,YAAQ,IAAI,cAAM,OAAO,oCAA+B,CAAC;AAAA,EAC7D;AAEA,SAAO;AACX;;;AtFthDA,SAAS,4BAA4B,cAA+B;AAChE,QAAM,gBAAgB,kBAAAS,QAAK,KAAK,cAAc,SAAS,UAAU,QAAQ,OAAO;AAChF,MAAI,KAAC,4BAAW,aAAa,GAAG;AAC5B,WAAO;AAAA,EACX;AAEA,aAAO,6BAAY,aAAa,EAAE,SAAS;AAC/C;AAEA,SAAS,sBAA4B;AACjC,QAAM,cAAc,kBAAAA,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,WAAW,QAAQ;AAC/D,QAAM,WAAO,2BAAU,WAAW;AAClC,MAAI,CAAC,KAAK,eAAe,GAAG;AACxB,UAAM,IAAI,MAAM,2CAA2C,WAAW,EAAE;AAAA,EAC5E;AAEA,QAAM,iBAAa,8BAAa,WAAW;AAC3C,QAAM,iBAAiB,kBAAAD,QAAK,QAAQ,kBAAAA,QAAK,QAAQ,WAAW,GAAG,UAAU;AACzE,MAAI,KAAC,4BAAW,cAAc,GAAG;AAC7B,UAAM,IAAI,MAAM,yCAAyC,cAAc,EAAE;AAAA,EAC7E;AACJ;AAkBA,IAAM,wBAA2C;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAKA,IAAM,wBAA2C;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AASO,SAAS,qBAAqB,aAA0C;AAC3E,QAAM,WAAqB,CAAC;AAC5B,QAAM,eAAyB,CAAC;AAChC,WAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AACzC,UAAM,MAAM,YAAY,CAAC;AACzB,UAAM,OAAO,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;AAChC,QAAI,sBAAsB,SAAS,IAAI,GAAG;AACtC,aAAO;AAAA,QACH,cAAc,iBAAiB,IAAI;AAAA,QACnC;AAAA,QACA,cAAc,CAAC;AAAA,MACnB;AAAA,IACJ;AACA,QAAI,sBAAsB,SAAS,IAAI,GAAG;AACtC,eAAS,KAAK,0BAA0B,IAAI,oDAA+C;AAE3F,UAAI,CAAC,IAAI,SAAS,GAAG,KAAK,IAAI,IAAI,YAAY,UAAU,CAAC,YAAY,IAAI,CAAC,EAAE,WAAW,GAAG,GAAG;AACzF,aAAK;AAAA,MACT;AACA;AAAA,IACJ;AACA,iBAAa,KAAK,GAAG;AAAA,EACzB;AACA,SAAO,EAAE,UAAU,aAAa;AACpC;AAqBO,SAAS,iBAAiB,cAAsB,SAAyB;AAC5E,MAAI,kBAAAA,QAAK,WAAW,OAAO,EAAG,QAAO;AACrC,MAAI,YAAY,IAAK,QAAO,gBAAAC,QAAG,QAAQ;AACvC,MAAI,QAAQ,WAAW,IAAI,EAAG,QAAO,kBAAAD,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,QAAQ,MAAM,CAAC,CAAC;AAC7E,QAAM,eAAe,kBAAAD,QAAK,QAAQ,cAAc,OAAO;AACvD,UAAI,4BAAW,YAAY,EAAG,QAAO;AACrC,QAAM,eAAe,kBAAAA,QAAK,QAAQ,gBAAAC,QAAG,QAAQ,GAAG,OAAO;AACvD,UAAI,4BAAW,YAAY,EAAG,QAAO;AACrC,SAAO;AACX;AAKO,SAAS,oBAAoB,MAAc,KAAa,eAAuB,QAAQ,IAAI,GAAiB;AAC/G,MAAI;AACJ,MAAI;AACA,aAAS,KAAK,MAAM,GAAG;AAAA,EAC3B,QAAQ;AACJ,UAAM,IAAI,MAAM,WAAW,IAAI,4BAA4B;AAAA,EAC/D;AACA,QAAM,OAAQ,QAA4D;AAC1E,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACnC,UAAM,IAAI,MAAM,SAAS,IAAI,0CAA0C;AAAA,EAC3E;AACA,QAAM,gBAAiB,KAA8B;AACrD,QAAM,eAAe,eAAe;AACpC,MAAI,OAAO,iBAAiB,YAAY,CAAC,aAAa,KAAK,GAAG;AAC1D,UAAM,IAAI,MAAM,SAAS,IAAI,sCAAsC;AAAA,EACvE;AACA,QAAM,gBAAiB,KAA8B;AACrD,QAAM,WAAW,eAAe;AAChC,QAAM,aAAa,MAAM,QAAQ,QAAQ,IACnC,SACG,OAAO,CAAC,MAAmB,OAAO,MAAM,YAAY,EAAE,SAAS,CAAC,EAChE,IAAI,CAAC,cAAc,iBAAiB,cAAc,SAAS,CAAC,IAC/D,CAAC;AACP,QAAM,OAAQ,KAA0C;AACxD,MAAI,SAAS,WAAW;AAEpB,YAAQ,OAAO,MAAM,cAAM;AAAA,MACvB,kBAAa,IAAI;AAAA;AAAA,IACrB,CAAC;AAAA,EACL;AAIA,QAAM,YAAa,KAAiC;AAGpD,QAAM,QAAQ,OAAO,WAAW,UAAU,YAAY,UAAU,QAAQ,UAAU,QAAQ;AAC1F,QAAM,gBAAgB,OAAO,WAAW,mBAAmB,YAAY,UAAU,iBAAiB,UAAU,iBAAiB;AAC7H,MAAI;AACJ,MAAI,WAAW,cAAc,OAAO,UAAU,eAAe,YAAY,CAAC,MAAM,QAAQ,UAAU,UAAU,GAAG;AAC3G,UAAMC,OAA+B,CAAC;AACtC,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,UAAU,UAAqC,GAAG;AAClF,UAAI,OAAO,MAAM,UAAW,CAAAA,KAAI,CAAC,IAAI;AAAA,IACzC;AACA,QAAI,OAAO,KAAKA,IAAG,EAAE,SAAS,EAAG,cAAaA;AAAA,EAClD;AACA,SAAO,EAAE,MAAM,cAAc,YAAY,OAAO,eAAe,WAAW;AAC9E;AAEO,SAAS,YAAY,MAAc,eAAuB,QAAQ,IAAI,GAAiB;AAC1F,QAAM,QAAI,qCAAU,MAAM,CAAC,QAAQ,MAAM,OAAO,GAAG;AAAA,IAC/C,UAAU;AAAA,IACV,OAAO;AAAA,EACX,CAAC;AACD,MAAI,EAAE,WAAW,GAAG;AAChB,UAAM,UAAU,EAAE,UAAU,IAAI,KAAK,KAAK;AAC1C,UAAM,IAAI,MAAM,SAAS,IAAI,4BAA4B,MAAM,GAAG;AAAA,EACtE;AACA,SAAO,oBAAoB,MAAM,EAAE,UAAU,IAAI,YAAY;AACjE;AAEA,SAAS,kBAAkB,OAAuB;AAC9C,QAAM,IAAI,MAAM,YAAY,EAAE,QAAQ,eAAe,GAAG,EAAE,QAAQ,YAAY,EAAE;AAChF,SAAO,EAAE,MAAM,GAAG,EAAE,KAAK;AAC7B;AAEA,SAAS,WAAW,GAAmB;AACnC,SAAO,IAAI,EAAE,QAAQ,MAAM,OAAO,CAAC;AACvC;AAcO,SAAS,oBAAoB,aAAqB,YAA+B;AACpF,SAAO,aACD,CAAC,iBAAiB,MAAM,WAAW,IACnC,CAAC,kBAAkB,MAAM,WAAW;AAC9C;AAEO,SAAS,kBAAkB,MAkBjB;AACb,QAAM,EAAE,SAAS,MAAM,MAAM,iBAAiB,YAAY,cAAc,eAAe,kBAAkB,YAAY,IAAI;AACzH,QAAM,WAAW,kBAAkB,KAAK,IAAI;AAO5C,QAAM,cAAc,OACd,QAAQ,OAAO,IAAI,QAAQ,IAAI,kBAAkB,IAAI,CAAC,KACtD,QAAQ,OAAO,IAAI,QAAQ;AAEjC,QAAM,cAAwB,CAAC;AAE/B,MAAI,YAAY,MAAM;AAGlB,gBAAY,KAAK,0BAA0B,UAAU;AACrD,eAAW,SAAS,KAAK,YAAY;AACjC,kBAAY,KAAK,WAAW,KAAK;AAAA,IACrC;AAAA,EAOJ,OAAO;AAKH,gBAAY,KAAK,0BAA0B,YAAY;AACvD,gBAAY,KAAK,gCAAgC;AAAA,EACrD;AAIA,QAAM,QAAQ,iBAAiB,KAAK;AACpC,MAAI,MAAO,aAAY,KAAK,WAAW,KAAK;AAI5C,MAAI,YAAY,MAAM;AAClB,UAAM,WAAW,oBAAoB,KAAK;AAC1C,QAAI,SAAU,aAAY,KAAK,cAAc,QAAQ;AAAA,EACzD;AAIA,MAAI,eAAe,YAAY,SAAS,GAAG;AACvC,gBAAY,KAAK,GAAG,WAAW;AAAA,EACnC;AAEA,QAAM,mBAAmB,CAAC,SAAS,GAAG,WAAW,EAAE,IAAI,UAAU,EAAE,KAAK,GAAG;AAO3E,QAAM,cAAqD;AAAA,IACvD,EAAE,KAAK,yBAAyB,OAAO,gBAAgB;AAAA,IACvD,EAAE,KAAK,eAAe,OAAO,QAAQ,KAAK,IAAI,GAAG;AAAA,IACjD,EAAE,KAAK,gBAAgB,OAAO,OAAO;AAAA,IACrC,EAAE,KAAK,sBAAsB,OAAO,WAAW;AAAA,EACnD;AACA,MAAI,KAAM,aAAY,KAAK,EAAE,KAAK,eAAe,OAAO,KAAK,CAAC;AAE9D,SAAO,EAAE,aAAa,YAAY,SAAS,aAAa,kBAAkB,YAAY;AAC1F;AASO,SAAS,cAAc,MAKH;AACvB,QAAM,EAAE,MAAM,MAAM,YAAY,gBAAgB,IAAI;AACpD,QAAMC,OAA8B;AAAA,IAChC,kBAAkB,QAAQ,IAAI;AAAA,IAC9B,yBAAyB;AAAA,IACzB,4BAA4B;AAAA,EAChC;AACA,MAAI,KAAM,CAAAA,KAAI,mBAAmB;AACjC,SAAOA;AACX;AAEA,SAAS,uBAA+B;AACpC,MAAI,CAAC,QAAQ,IAAI,KAAM,QAAO;AAC9B,QAAM,QAAI,qCAAU,QAAQ,CAAC,mBAAmB,MAAM,MAAM,eAAe,GAAG;AAAA,IAC1E,UAAU;AAAA,IACV,OAAO;AAAA,EACX,CAAC;AACD,SAAO,EAAE,WAAW,KAAK,EAAE,UAAU,IAAI,KAAK,IAAI;AACtD;AAEA,SAAS,WAAW,MAAc,GAAW;AACzC,SAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG;AACtD;AAEA,SAAS,YAAY,KAA4B;AAC7C,QAAM,QAAI,qCAAU,OAAO,CAAC,aAAa,iBAAiB,GAAG;AAAA,IACzD;AAAA,IAAK,OAAO;AAAA,IAAQ,UAAU;AAAA,EAClC,CAAC;AACD,SAAO,EAAE,WAAW,KAAK,EAAE,UAAU,IAAI,KAAK,IAAI;AACtD;AAEA,SAAS,gBAAgB,KAA4B;AACjD,QAAM,aAAS,qCAAU,OAAO,CAAC,aAAa,kBAAkB,GAAG;AAAA,IAC/D;AAAA,IACA,OAAO;AAAA,IACP,UAAU;AAAA,EACd,CAAC;AAED,MAAI,OAAO,WAAW,EAAG,QAAO;AAEhC,QAAM,OAAO,OAAO,UAAU,IAAI,KAAK;AACvC,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,YAAY,kBAAAH,QAAK,WAAW,GAAG,IAAI,MAAM,kBAAAA,QAAK,QAAQ,KAAK,GAAG;AACpE,SAAO,UAAU,SAAS,OAAO,KAAK,UAAU,SAAS,QAAQ,IAC3D,kBAAAA,QAAK,QAAQ,SAAS,IACtB;AACV;AAEA,SAAS,wBAAwB,cAAqC;AAClE,QAAM,kBAAkB,kBAAAA,QAAK,KAAK,cAAc,SAAS,SAAS,gBAAgB;AAClF,UAAI,4BAAW,eAAe,EAAG,QAAO;AAExC,QAAM,iBAAiB,kBAAAA,QAAK,KAAK,cAAc,SAAS,gBAAgB;AACxE,UAAI,4BAAW,cAAc,EAAG,QAAO;AAEvC,SAAO;AACX;AAEA,SAAS,0BAA0B,cAAsB,cAA4B;AACjF,QAAM,0BAA0B,kBAAAA,QAAK,KAAK,cAAc,cAAc;AACtE,iCAAU,yBAAyB,EAAE,WAAW,KAAK,CAAC;AAEtD,QAAM,iBAAiB,CAAC,WAAW,MAAM;AACzC,aAAW,WAAW,gBAAgB;AAClC,UAAM,YAAY,kBAAAA,QAAK,KAAK,cAAc,gBAAgB,OAAO;AACjE,QAAI,KAAC,4BAAW,SAAS,EAAG;AAE5B,UAAM,YAAY,kBAAAA,QAAK,KAAK,yBAAyB,OAAO;AAC5D,UAAM,gBAAgB,kBAAAA,QAAK,SAAS,kBAAAA,QAAK,QAAQ,SAAS,GAAG,SAAS;AAEtE,QAAI;AACA,YAAM,eAAW,2BAAU,SAAS;AACpC,UAAI,SAAS,eAAe,SAAK,8BAAa,SAAS,MAAM,eAAe;AACxE;AAAA,MACJ;AACA,kCAAO,WAAW,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,IACtD,QAAQ;AAAA,IAER;AAEA,qCAAY,eAAe,WAAW,KAAK;AAAA,EAC/C;AAQA,uBAAqB,cAAc,sBAAsB;AACzD,uBAAqB,cAAc,mBAAmB;AAC1D;AAcA,SAAS,yBAAyB,cAA4B;AAC1D,MAAI;AACA,UAAM,aAAS,qCAAU,OAAO,CAAC,MAAM,cAAc,UAAU,SAAS,gBAAgB,GAAG;AAAA,MACvF,OAAO;AAAA,MACP,UAAU;AAAA,IACd,CAAC;AACD,QAAI,OAAO,WAAW,EAAG;AACzB,UAAM,WAAW,OAAO,UAAU,IAAI,KAAK;AAC3C,QAAI,CAAC,QAAS;AACd,QAAI,kBAAAA,QAAK,WAAW,OAAO,EAAG;AAG9B,QAAI,YAAY,kBAAkB,YAAY,iBAAkB;AAChE,UAAM,WAAW,kBAAAA,QAAK,KAAK,cAAc,UAAU,OAAO;AAC1D,6CAAU,OAAO,CAAC,MAAM,cAAc,UAAU,kBAAkB,QAAQ,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,EAClG,QAAQ;AAAA,EAER;AACJ;AAaA,SAAS,qBAAqB,cAAsB,UAAwB;AACxE,MAAI;AACA,UAAM,oBAAgB,qCAAU,OAAO,CAAC,MAAM,cAAc,YAAY,MAAM,QAAQ,GAAG;AAAA,MACrF,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACd,CAAC;AACD,QAAI,cAAc,WAAW,EAAG;AAEhC,UAAM,gBAAgB,cAAc,UAAU,IACzC,MAAM,OAAO,EACb,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EACzB,OAAO,OAAO;AACnB,QAAI,aAAa,WAAW,EAAG;AAE/B,6CAAU,OAAO,CAAC,MAAM,cAAc,gBAAgB,mBAAmB,MAAM,GAAG,YAAY,GAAG;AAAA,MAC7F,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACd,CAAC;AAAA,EACL,QAAQ;AAAA,EAER;AACJ;AAQA,SAAS,gBAAgB,cAA8B;AACnD,SAAO,kBAAAA,QAAK,KAAK,cAAc,SAAS,mBAAmB;AAC/D;AAEO,SAAS,iBAAiB,cAAsB,SAAgC;AACnF,MAAI;AACA,UAAMI,QAAoB,EAAE,SAAS,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE;AAC1E,UAAM,OAAO,gBAAgB,YAAY;AACzC,mCAAU,kBAAAJ,QAAK,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACjD,uCAAc,MAAM,KAAK,UAAUI,OAAM,MAAM,CAAC,CAAC;AAAA,EACrD,QAAQ;AAAA,EAER;AACJ;AAeO,SAAS,6BAA6B,cAA4B;AACrE,QAAM,oBAAoB,kBAAAC,QAAK,KAAK,cAAc,WAAW,qBAAqB;AAElF,MAAI;AACA,YAAI,4BAAW,iBAAiB,GAAG;AAC/B,sCAAW,iBAAiB;AAAA,IAChC;AAAA,EACJ,QAAQ;AAAA,EAER;AACJ;AAEA,eAAsB,sBAAsB,MAA6C;AACrF,QAAM,EAAE,SAAS,MAAM,MAAM,UAAU,MAAM,SAAS,MAAM,OAAO,SAAS,IAAI;AAChF,QAAM,MAAM,QAAQ,IAAI;AAIxB,MAAI,eAAoC;AACxC,MAAI,UAAU;AACV,QAAI;AACA,qBAAe,YAAY,UAAU,GAAG;AAAA,IAC5C,SAAS,KAAK;AACV,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI;AAAA,WAAS,GAAG;AAAA,CAAI,CAAC;AACzC,cAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ,WAAW,SAAS,YAAa,KAAK,eAAe,KAAK,YAAY,SAAS,GAAI;AAC/E,YAAQ,MAAM,cAAM,IAAI,mEAA8D,CAAC;AACvF,YAAQ,KAAK,CAAC;AAAA,EAClB;AAIA,MAAI,qBAA+B,CAAC;AACpC,MAAI,gBAAgB,KAAK,eAAe,KAAK,YAAY,SAAS,GAAG;AACjE,UAAM,QAAQ,qBAAqB,KAAK,WAAW;AACnD,QAAI,MAAM,cAAc;AACpB,cAAQ,MAAM,cAAM,IAAI;AAAA,WAAS,MAAM,YAAY;AAAA,CAAI,CAAC;AACxD,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,eAAW,KAAK,MAAM,UAAU;AAC5B,cAAQ,OAAO,MAAM,cAAM,OAAO,YAAO,CAAC;AAAA,CAAI,CAAC;AAAA,IACnD;AACA,yBAAqB,MAAM;AAAA,EAC/B;AAGA,QAAM,kBAAkB,YAAY,GAAG;AACvC,QAAM,eAAe,gBAAgB,GAAG;AACxC,MAAI,CAAC,mBAAmB,CAAC,cAAc;AACnC,YAAQ,MAAM,cAAM,IAAI,0CAAqC,CAAC;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAClB;AAGA,MAAI,oBAAoB,cAAc;AAClC,YAAQ,MAAM,cAAM,IAAI,mFAA8E,CAAC;AACvG,YAAQ,MAAM,cAAM,IAAI,uBAAuB,eAAe,EAAE,CAAC;AACjE,YAAQ,MAAM,cAAM,IAAI,sBAAsB,YAAY,EAAE,CAAC;AAC7D,YAAQ,MAAM,cAAM,IAAI,kBAAkB,CAAC;AAC3C,YAAQ,MAAM,cAAM,IAAI,qCAAqC,CAAC;AAC9D,YAAQ,MAAM,cAAM,IAAI,yEAAyE,CAAC;AAClG,YAAQ,MAAM,cAAM,IAAI,iEAAiE,CAAC;AAC1F,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,QAAM,cAAc,kBAAAA,QAAK,SAAS,YAAY;AAG9C,QAAM,OAAO,QAAQ,WAAW,CAAC;AAGjC,QAAM,eAAe,GAAG,WAAW,OAAO,OAAO,IAAI,IAAI;AACzD,QAAM,eAAe,kBAAAA,QAAK,KAAK,cAAc,SAAS,aAAa,YAAY;AAG/E,QAAM,aAAa,MAAM,IAAI;AAE7B,UAAQ,IAAI,cAAM,KAAK;AAAA,cAAiB,OAAO,UAAU,CAAC;AAC1D,UAAQ,IAAI,cAAM,IAAI,eAAe,YAAY,EAAE,CAAC;AACpD,UAAQ,IAAI,cAAM,IAAI,eAAe,UAAU;AAAA,CAAI,CAAC;AAIpD,UAAI,4BAAW,YAAY,GAAG;AAC1B,YAAQ,MAAM,cAAM,IAAI,+EAA0E,CAAC;AACnG,YAAQ,MAAM,cAAM,IAAI,WAAW,YAAY,EAAE,CAAC;AAClD,YAAQ,MAAM,cAAM,IAAI,kBAAkB,CAAC;AAC3C,YAAQ,MAAM,cAAM,IAAI,wBAAwB,CAAC;AACjD,YAAQ,MAAM,cAAM,IAAI,yCAAyC,CAAC;AAClE,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,QAAM,eAAW,qCAAU,MAAM,CAAC,YAAY,UAAU,cAAc,YAAY,UAAU,GAAG;AAAA,IAC3F,KAAK;AAAA,IAAc,OAAO;AAAA,EAC9B,CAAC;AAED,MAAI,SAAS,SAAS,SAAS,WAAW,GAAG;AAEzC,QAAI,SAAS,WAAW,KAAK,CAAC,SAAS,OAAO;AAC1C,cAAQ,IAAI,cAAM,IAAI,gEAAgE,CAAC;AAAA,IAC3F;AACA,UAAM,mBAAe,qCAAU,OAAO,CAAC,aAAa,YAAY,UAAU,GAAG;AAAA,MACzE,KAAK;AAAA,MAAc,OAAO;AAAA,IAC9B,CAAC,EAAE,WAAW;AAEd,UAAM,UAAU,eACV,CAAC,YAAY,OAAO,cAAc,UAAU,IAC5C,CAAC,YAAY,OAAO,MAAM,YAAY,YAAY;AAExD,UAAM,gBAAY,qCAAU,OAAO,SAAS,EAAE,KAAK,cAAc,OAAO,UAAU,CAAC;AACnF,QAAI,UAAU,WAAW,GAAG;AACxB,cAAQ,MAAM,cAAM,IAAI;AAAA,wCAAsC,YAAY;AAAA,CAAI,CAAC;AAC/E,cAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ;AAIA,2BAAyB,YAAY;AAYrC,MAAI;AACA,gCAAO,kBAAAA,QAAK,KAAK,cAAc,QAAQ,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAC1E,yBAAqB,cAAc,QAAQ;AAAA,EAC/C,QAAQ;AAAA,EAER;AAEA,mBAAiB,cAAc,OAAO;AACtC,UAAQ,IAAI,cAAM,MAAM;AAAA,2CAAoC,OAAO;AAAA,CAAO,CAAC;AAC3E,UAAQ,IAAI,cAAM,IAAI,iGAAiG,CAAC;AACxH,UAAQ,IAAI,cAAM,IAAI,6IAA8I,CAAC;AAUrK,MAAI,YAAY,UAAU;AACtB,UAAM,YAAY,kBAAAA,QAAK,KAAK,cAAc,SAAS;AAGnD,QAAI;AACA,UAAI,sBAAsB,KAAK,CAAC,4BAA4B,YAAY,GAAG;AACvE,4BAAoB;AAAA,MACxB,OAAO;AACH,cAAM,0BAA0B,YAAY;AAAA,MAChD;AAAA,IACJ,SAASC,SAAO;AACZ,YAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,cAAQ,IAAI,cAAM,IAAI,kDAAkD,OAAO,GAAG,CAAC;AAAA,IACvF;AAIA,QAAI;AACA,gCAA0B,cAAc,YAAY;AAAA,IACxD,SAASA,SAAO;AACZ,YAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,cAAQ,IAAI,cAAM,IAAI,0DAA0D,OAAO,GAAG,CAAC;AAAA,IAC/F;AAIA,UAAM,gBAAyC,CAAC;AAChD,UAAM,iBAAiB,wBAAwB,YAAY;AAC3D,QAAI,gBAAgB;AAChB,oBAAc,aAAa;AAAA,QACvB,MAAM;AAAA,QACN,SAAS,QAAQ,KAAK,UAAU,cAAc,CAAC;AAAA,QAC/C,SAAS;AAAA,MACb;AAAA,IACJ;AAEA,UAAM,oBAAoB,kBAAAD,QAAK,KAAK,WAAW,qBAAqB;AACpE,QAAI,OAAO,KAAK,aAAa,EAAE,SAAS,GAAG;AACvC,UAAI;AACA,uCAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AACxC,2CAAc,mBAAmB,KAAK,UAAU,eAAe,MAAM,CAAC,CAAC;AAAA,MAC3E,QAAQ;AAAA,MAAkB;AAAA,IAC9B;AAAA,EACJ;AAEA,MAAI,YAAY,MAAM;AAClB,UAAM,qBAAqB,cAAc,KAAK;AAAA,EAClD;AAMA,MAAI,cAAc;AACd,UAAM,sBAAsB;AAAA,MACxB;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,aAAa;AAAA,MACb,YAAY,KAAK;AAAA,MACjB,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,IAChB,CAAC;AACD;AAAA,EACJ;AAGA,QAAM,aAAa,YAAY,WAAW,WAAW;AACrD,QAAM,cAAc,YAAY,WAAW,CAAC,gCAAgC,IAAI,CAAC;AACjF,QAAM,mBAAe,qCAAU,YAAY,aAAa;AAAA,IACpD,KAAK;AAAA,IACL,OAAO;AAAA,EACX,CAAC;AAED,UAAQ,KAAK,aAAa,UAAU,CAAC;AACzC;AAQA,SAAS,qBAAqB,QAA+B;AACzD,MAAI,UAAU,KAAK,MAAM,EAAG,QAAO;AACnC,QAAM,QAAI,qCAAU,QAAQ,CAAC,mBAAmB,MAAM,MAAM,QAAQ,eAAe,GAAG;AAAA,IAClF,OAAO;AAAA,IAAQ,UAAU;AAAA,EAC7B,CAAC;AACD,MAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,QAAM,OAAO,EAAE,UAAU,IAAI,KAAK;AAClC,SAAO,OAAO;AAClB;AAOA,SAAS,sBAAsB,QAAsC;AACjE,QAAM,SAAS,QAAQ,IAAI,gBACpB,kBAAAA,QAAK,KAAK,gBAAAE,QAAG,QAAQ,GAAG,UAAU,OAAO,qBAAqB;AACrE,MAAI,KAAC,4BAAW,MAAM,EAAG;AACzB,QAAM,SAAS,OAAO,QAAQ,MAAM,EAC/B,OAAO,CAAC,CAAC,EAAE,CAAC,MAAM,MAAM,MAAM,KAAK,IAAI,EACvC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAChC,2CAAU,QAAQ,CAAC,OAAO,QAAQ,uBAAuB,GAAG,MAAM,GAAG;AAAA,IACjE,OAAO;AAAA,EACX,CAAC;AACL;AAEA,eAAe,sBAAsB,MAalB;AACf,QAAM;AAAA,IACF;AAAA,IAAS;AAAA,IAAM;AAAA,IAAM;AAAA,IAAQ;AAAA,IAAc;AAAA,IAAe;AAAA,IAAkB;AAAA,IAC5E;AAAA,IAAY;AAAA,IAAQ;AAAA,IAAO;AAAA,EAC/B,IAAI;AAEJ,QAAM,aAAa,QAAQ,QAAQ,IAAI,IAAI;AAM3C,QAAM,kBAAkB,cAAc,CAAC;AAKvC,MAAI,mBAAmB,CAAC,QAAQ;AAC5B,YAAQ,OAAO,MAAM,cAAM;AAAA,MACvB;AAAA;AAAA;AAAA,IACJ,CAAC;AACD,YAAQ,KAAK,CAAC;AAAA,EAClB;AAIA,MAAI;AACJ,MAAI,QAAQ;AACR,UAAM,WAAW,qBAAqB,MAAM;AAC5C,QAAI,CAAC,UAAU;AACX,cAAQ,OAAO,MAAM,cAAM;AAAA,QACvB;AAAA,qBAAmB,MAAM;AAAA;AAAA,MAC7B,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,sBAAkB;AAAA,EACtB,WAAW,OAAO;AAGd,sBAAkB,qBAAqB;AAAA,EAC3C,OAAO;AACH,sBAAkB,qBAAqB;AAAA,EAC3C;AAIA,QAAM,aAAa,kBAAAF,QAAK;AAAA,IACpB;AAAA,IACA;AAAA,IACA,QAAQ,kBAAkB,KAAK,IAAI,CAAC;AAAA,EACxC;AACA,iCAAU,kBAAAA,QAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACvD,qCAAc,YAAY,KAAK,YAAY;AAE3C,QAAM,OAAO,kBAAkB;AAAA,IAC3B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,KAAK;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAED,QAAM,WAAW,cAAc,EAAE,MAAM,MAAM,KAAK,MAAM,YAAY,gBAAgB,CAAC;AAErF,MAAI,iBAAiB;AAIjB,UAAMG,iBAAY,qCAAU,QAAQ,CAAC,mBAAmB,MAAM,YAAY,GAAG;AAAA,MACzE,OAAO;AAAA,MAAQ,UAAU;AAAA,IAC7B,CAAC;AACD,UAAMC,WAAUD,WAAU,UAAU,IAAI,KAAK;AAC7C,QAAI,CAACC,SAAQ;AACT,cAAQ,OAAO,MAAM,cAAM,IAAI,gDAA2C,CAAC;AAC3E,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,eAAW,EAAE,KAAK,MAAM,KAAK,KAAK,aAAa;AAC3C,+CAAU,QAAQ,CAAC,cAAc,MAAM,MAAMA,SAAQ,KAAK,KAAK,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,IACvF;AAEA,0BAAsB;AAAA,MAClB,MAAMA;AAAA,MACN,SAAS,qBAAqB;AAAA,MAC9B,MAAM,QAAQ;AAAA,MACd,MAAM,KAAK;AAAA,MACX,QAAQ;AAAA,MACR,UAAU;AAAA,IACd,CAAC;AAED,UAAM,eAAW,qCAAU,KAAK,YAAY,KAAK,aAAa;AAAA,MAC1D,KAAK;AAAA,MACL,OAAO;AAAA,MACP,KAAK,EAAE,GAAG,QAAQ,KAAK,GAAG,SAAS;AAAA,IACvC,CAAC;AACD,YAAQ,KAAK,SAAS,UAAU,CAAC;AAAA,EACrC;AAUA,QAAM,gBAAgB,CAAC,SAA0B;AAC7C,UAAM,QAAI,qCAAU,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,GAAG,EAAE,OAAO,OAAO,CAAC;AAChF,WAAO,EAAE,WAAW;AAAA,EACxB;AACA,MAAI,cAAc,KAAK,WAAW,GAAG;AACjC,QAAI,OAAO;AAIP,YAAMD,iBAAY,qCAAU,QAAQ;AAAA,QAChC;AAAA,QAAc;AAAA,QAAM,KAAK;AAAA,QAAa;AAAA,QAAM;AAAA,MAChD,GAAG,EAAE,OAAO,QAAQ,UAAU,OAAO,CAAC;AACtC,YAAM,gBAAgBA,WAAU,UAAU,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,KAAK;AACvE,UAAI,CAAC,QAAQ;AACT,gBAAQ,OAAO,MAAM,GAAG,KAAK,WAAW,IAAI,YAAY;AAAA,CAAI;AAC5D,gBAAQ,KAAK,CAAC;AAAA,MAClB;AACA,YAAME,aAAY,oBAAoB,KAAK,aAAa,UAAU;AAClE,YAAMC,oBAAe,qCAAU,QAAQD,YAAW,EAAE,OAAO,UAAU,CAAC;AACtE,cAAQ,KAAKC,cAAa,UAAU,CAAC;AAAA,IACzC;AAIA,QAAI,WAAW,KAAK;AACpB,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AACzB,YAAM,YAAY,GAAG,KAAK,WAAW,IAAI,WAAW,CAAC,CAAC;AACtD,UAAI,CAAC,cAAc,SAAS,GAAG;AAC3B,mBAAW;AACX,gBAAQ;AACR;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,CAAC,OAAO;AACR,cAAQ,OAAO,MAAM,cAAM;AAAA,QACvB;AAAA,2DAAyD,KAAK,WAAW;AAAA;AAAA,MAC7E,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,SAAK,cAAc;AAAA,EACvB;AAIA,QAAM,UAAoB,CAAC;AAC3B,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC3C,YAAQ,KAAK,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;AAAA,EAClC;AAEA,QAAM,cAAU,qCAAU,QAAQ;AAAA,IAC9B;AAAA,IAAe;AAAA,IACf;AAAA,IAAM,KAAK;AAAA,IACX;AAAA,IAAM;AAAA,IACN,GAAG;AAAA,IACH,KAAK;AAAA,EACT,GAAG,EAAE,OAAO,QAAQ,UAAU,OAAO,CAAC;AACtC,MAAI,QAAQ,WAAW,GAAG;AACtB,UAAM,UAAU,QAAQ,UAAU,IAAI,KAAK,KAAK;AAChD,YAAQ,OAAO,MAAM,cAAM,IAAI;AAAA,oCAAkC,MAAM;AAAA,CAAI,CAAC;AAC5E,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,QAAM,gBAAY,qCAAU,QAAQ;AAAA,IAChC;AAAA,IAAc;AAAA,IAAM,KAAK;AAAA,IAAa;AAAA,IAAM;AAAA,EAChD,GAAG,EAAE,OAAO,QAAQ,UAAU,OAAO,CAAC;AACtC,QAAM,UAAU,UAAU,UAAU,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,KAAK;AACjE,MAAI,CAAC,QAAQ;AACT,YAAQ,OAAO,MAAM,cAAM,IAAI,wDAAmD,CAAC;AACnF,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,aAAW,EAAE,KAAK,MAAM,KAAK,KAAK,aAAa;AAC3C,6CAAU,QAAQ,CAAC,cAAc,MAAM,MAAM,QAAQ,KAAK,KAAK,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,EACvF;AAEA,wBAAsB;AAAA,IAClB,MAAM;AAAA,IACN,SAAS,KAAK;AAAA,IACd,MAAM,QAAQ;AAAA,IACd,MAAM,KAAK;AAAA,IACX,QAAQ;AAAA,IACR,UAAU;AAAA,EACd,CAAC;AAED,MAAI,CAAC,QAAQ;AAET,YAAQ,OAAO,MAAM,GAAG,KAAK,WAAW,IAAI,MAAM;AAAA,CAAI;AACtD,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,QAAM,YAAY,oBAAoB,KAAK,aAAa,UAAU;AAClE,QAAM,mBAAe,qCAAU,QAAQ,WAAW;AAAA,IAC9C,OAAO;AAAA,EACX,CAAC;AACD,UAAQ,KAAK,aAAa,UAAU,CAAC;AACzC;;;AuFlgCA;AACA,qBAAoB;AAQpB,SAAS,oBAA6B;AAClC,SAAO,QAAQ,QAAQ,OAAO,SAAS,QAAQ,MAAM,KAAK;AAC9D;AAEA,SAAS,gBAAyB;AAC9B,SAAO,QAAQ,QAAQ,IAAI,UAAU,QAAQ,IAAI,aAAa,MAAM;AACxE;AAEA,eAAsB,yBAAyB,MAAwD;AACnG,MAAI,KAAK,IAAK,QAAO;AAErB,MAAI,CAAC,kBAAkB,KAAK,CAAC,cAAc,GAAG;AAC1C,YAAQ,MAAM,cAAM;AAAA,MAChB;AAAA,IAEJ,CAAC;AACD,WAAO;AAAA,EACX;AAEA,QAAM,EAAE,QAAQ,IAAI,UAAM,eAAAC,SAAQ;AAAA,IAC9B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS,KAAK;AAAA,IACd,SAAS,KAAK,WAAW;AAAA,EAC7B,CAAC;AAED,SAAO,QAAQ,OAAO;AAC1B;;;AC7BA,IAAAC,wBAA0B;AAC1B,IAAAC,qBAAiB;AACjB;AAoCA,IAAM,0BAA0B,CAAC,UAAU,UAAU;AACrD,IAAM,uBAAuB;AAE7B,IAAM,eAAoC;AAAA,EACtC;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,WAAW,EAAE,CAAC;AAAA,IAClE;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,QAAQ,CAAC,EAAE,KAAK,QAAQ,MAAM,CAAC,WAAW,MAAM,EAAE,CAAC;AAAA,MACnD,SAAS;AAAA,QACL;AAAA,UACI,KAAK;AAAA,UACL,MAAM,CAAC,MAAM,oFAAoF;AAAA,UACjG,MAAM;AAAA,QACV;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS;AAAA,QACL;AAAA,UACI,KAAK;AAAA,UACL,MAAM,CAAC,MAAM,wGAAwG;AAAA,QACzH;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,OAAO,EAAE,CAAC;AAAA,IAC9D;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,MAAM,EAAE,CAAC;AAAA,IAC7D;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,UAAU,EAAE,CAAC;AAAA,IACjE;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,oBAAoB,EAAE,CAAC;AAAA,IAC3E;AAAA,EACJ;AAAA,EACA;AAAA,IACI,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,UAAU;AAAA,IACV,SAAS;AAAA,MACL,SAAS,CAAC,EAAE,KAAK,OAAO,MAAM,CAAC,WAAW,MAAM,MAAM,EAAE,CAAC;AAAA,IAC7D;AAAA,EACJ;AACJ;AAsBA,IAAM,oBAAoB;AAAA,EACtB,GAAG,QAAQ,IAAI,QAAQ,EAAE;AAAA,EACzB;AAAA,EACA;AACJ,EAAE,OAAO,OAAO;AAAA,CAEf,SAAS,iBAAuB;AAC7B,QAAM,cAAc,QAAQ,IAAI,QAAQ;AACxC,QAAM,WAAW,IAAI,IAAI,YAAY,MAAM,mBAAAC,QAAK,SAAS,CAAC;AAC1D,QAAM,YAAY,kBAAkB,OAAO,SAAO,CAAC,SAAS,IAAI,GAAG,CAAC;AACpE,MAAI,UAAU,SAAS,GAAG;AACtB,YAAQ,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,mBAAAA,QAAK,SAAS;AAAA,EACtF;AACJ,GAAG;AAEH,SAAS,SAAS,KAA0C;AACxD,QAAM,aAAS,iCAAU,IAAI,KAAK,CAAC,IAAI,WAAW,GAAG;AAAA,IACjD,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACb,CAAC;AAED,MAAI,OAAO,WAAW,GAAG;AACrB,WAAO,EAAE,KAAK,WAAW,MAAM;AAAA,EACnC;AAEA,QAAMC,YAAW,OAAO,UAAU,IAAI,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,GAAG,KAAK;AAClE,SAAO,EAAE,KAAK,WAAW,MAAM,SAASA,YAAW,OAAU;AACjE;AAEO,SAAS,gBAA+B;AAC3C,QAAM,OAAO,aAAa,IAAI,QAAQ;AACtC,QAAM,kBAAkB,KAAK,OAAO,OAAK,CAAC,EAAE,aAAa,EAAE,IAAI,QAAQ;AACvE,QAAM,qBAAqB,KAAK,OAAO,OAAK,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,QAAQ;AAE3E,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,gBAAgB,WAAW;AAAA,IAC/C,YAAY,KAAK,MAAM,OAAK,EAAE,SAAS;AAAA,EAC3C;AACJ;AAIO,SAAS,oBAAoB,MAA2B;AAC3D,UAAQ,IAAI,cAAM,KAAK,uBAAuB,CAAC;AAC/C,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,aAAW,UAAU,KAAK,MAAM;AAC5B,UAAM,EAAE,KAAK,WAAW,SAAAA,SAAQ,IAAI;AACpC,UAAM,OAAO,YAAY,cAAM,MAAM,UAAK,IAAK,IAAI,WAAW,cAAM,OAAO,KAAK,IAAI,cAAM,IAAI,UAAK;AACnG,UAAM,QAAQ,IAAI,YAAY,OAAO,EAAE;AACvC,UAAM,MAAM,IAAI,WAAW,KAAK,cAAM,IAAI,gBAAgB;AAE1D,QAAI,WAAW;AACX,YAAM,MAAMA,WAAU,cAAM,IAAI,IAAIA,QAAO,EAAE,IAAI;AACjD,cAAQ,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,GAAG,EAAE;AAAA,IACxC,OAAO;AACH,cAAQ,IAAI,GAAG,IAAI,IAAI,KAAK,GAAG,cAAM,MAAM,cAAc,CAAC,GAAG,GAAG,EAAE;AAAA,IACtE;AAAA,EACJ;AAEA,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,QAAM,EAAE,iBAAiB,mBAAmB,IAAI;AAChD,MAAI,gBAAgB,WAAW,KAAK,mBAAmB,WAAW,GAAG;AACjE,YAAQ,IAAI,EAAE,QAAQ,+BAA+B,CAAC;AAAA,EAC1D,OAAO;AACH,UAAM,QAAkB,CAAC;AACzB,QAAI,gBAAgB,SAAS,GAAG;AAC5B,YAAM,KAAK,GAAG,gBAAgB,MAAM,WAAW;AAAA,IACnD;AACA,QAAI,mBAAmB,SAAS,GAAG;AAC/B,YAAM,KAAK,GAAG,mBAAmB,MAAM,cAAc;AAAA,IACzD;AACA,YAAQ,IAAI,cAAM,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,CAAe,CAAC;AAAA,EAC/D;AACJ;AAiBA,SAAS,gBAAgB,KAAuC;AAC5D,MAAI,QAAQ,aAAa,YAAY,IAAI,QAAQ,QAAQ;AACrD,WAAO,IAAI,QAAQ;AAAA,EACvB;AACA,SAAO,IAAI,QAAQ;AACvB;AAEO,SAAS,iBAAiB,MAAqB,OAAoB,CAAC,GAAoB;AAC3F,QAAM,EAAE,qBAAqB,MAAM,SAAS,MAAM,IAAI;AACtD,QAAM,SAA0B,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAE;AAEzE,QAAM,YAAY,KAAK,KAAK,OAAO,OAAK;AACpC,QAAI,EAAE,UAAW,QAAO;AACxB,QAAI,EAAE,IAAI,SAAU,QAAO;AAC3B,WAAO;AAAA,EACX,CAAC;AAED,MAAI,UAAU,WAAW,EAAG,QAAO;AAEnC,UAAQ,IAAI,cAAM,KAAK,gCAAgC,CAAC;AAExD,aAAW,UAAU,WAAW;AAC5B,UAAM,EAAE,IAAI,IAAI;AAChB,UAAM,QAAQ,gBAAgB,GAAG;AAEjC,QAAI,QAAQ;AACR,iBAAW,QAAQ,OAAO;AACtB,cAAM,SAAS,KAAK,OAAO,UAAU;AACrC,gBAAQ,IAAI,cAAM,IAAI,eAAe,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;AAAA,MACpF;AACA,aAAO,QAAQ,KAAK,IAAI,EAAE;AAC1B;AAAA,IACJ;AAEA,YAAQ,IAAI,cAAM,IAAI;AAAA,eAAkB,IAAI,WAAW,KAAK,CAAC;AAE7D,QAAIC,MAAK;AACT,eAAW,QAAQ,OAAO;AACtB,YAAM,MAAM,KAAK,QAAQ,QAAQ,aAAa,WAAW,SAAS,KAAK;AACvE,YAAM,OAAO,KAAK,QAAQ,QAAQ,aAAa,WACzC,CAAC,KAAK,KAAK,GAAG,KAAK,IAAI,IACvB,KAAK;AAEX,YAAM,QAAI,iCAAU,KAAK,MAAM,EAAE,OAAO,UAAU,CAAC;AACnD,UAAI,EAAE,WAAW,GAAG;AAChB,QAAAA,MAAK;AACL;AAAA,MACJ;AAAA,IACJ;AAEA,QAAIA,KAAI;AACJ,cAAQ,IAAI,EAAE,QAAQ,YAAO,IAAI,WAAW,YAAY,CAAC;AACzD,aAAO,UAAU,KAAK,IAAI,EAAE;AAAA,IAChC,OAAO;AACH,YAAM,cAAc,MAAM,IAAI,OAAK,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,CAAC,EAAE,EAAE,KAAK,MAAM;AAC9E,cAAQ,IAAI,cAAM,OAAO,8BAAyB,IAAI,WAAW,mBAAmB,WAAW,EAAE,CAAC;AAClG,aAAO,OAAO,KAAK,IAAI,EAAE;AAAA,IAC7B;AAAA,EACJ;AAGA,aAAW,KAAK,KAAK,MAAM;AACvB,QAAI,CAAC,EAAE,aAAa,CAAC,UAAU,KAAK,CAAAC,OAAKA,GAAE,IAAI,OAAO,EAAE,IAAI,EAAE,GAAG;AAC7D,aAAO,QAAQ,KAAK,EAAE,IAAI,EAAE;AAAA,IAChC;AAAA,EACJ;AAEA,SAAO;AACX;AAIO,SAAS,kBAAiC;AAC7C,QAAM,OAAO,cAAc;AAE3B,MAAI,KAAK,YAAY;AACjB,YAAQ,IAAI,EAAE,QAAQ,iDAA4C,CAAC;AAAA,EACvE,WAAW,KAAK,oBAAoB;AAChC,UAAM,UAAU,KAAK,mBAAmB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AAC7E,YAAQ,IAAI,EAAE,QAAQ,gDAA2C,CAAC;AAClE,YAAQ,IAAI,cAAM,IAAI,uCAAkC,OAAO;AAAA,CAAI,CAAC;AAAA,EACxE,OAAO;AACH,UAAM,UAAU,KAAK,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AAC1E,YAAQ,IAAI,cAAM,OAAO;AAAA,0CAAwC,OAAO,EAAE,CAAC;AAC3E,YAAQ,IAAI,cAAM,IAAI,uCAAuC,CAAC;AAAA,EAClE;AAEA,SAAO;AACX;AAEA,SAAS,oBAAoB,MAAsB;AAC/C,QAAM,UAAU,KAAK,KAAK;AAC1B,MAAI,CAAC,SAAS;AACV,WAAO;AAAA,EACX;AAEA,MAAI,QAAQ,WAAW,GAAG,GAAG;AACzB,WAAO;AAAA,EACX;AAEA,QAAM,UAAU,QAAQ,QAAQ,GAAG;AACnC,SAAO,YAAY,KAAK,UAAU,QAAQ,MAAM,GAAG,OAAO;AAC9D;AAEA,SAAS,+BAAmD;AACxD,QAAM,iBAAa,iCAAU,UAAU,CAAC,UAAU,QAAQ,QAAQ,GAAG;AAAA,IACjE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACb,CAAC;AAED,MAAI,WAAW,WAAW,GAAG;AACzB,WAAO;AAAA,EACX;AAEA,MAAI;AACJ,MAAI;AACA,aAAS,KAAK,MAAM,WAAW,UAAU,IAAI;AAAA,EACjD,QAAQ;AACJ,WAAO;AAAA,EACX;AAEA,MAAI,CAAC,MAAM,QAAQ,MAAM,GAAG;AACxB,WAAO;AAAA,EACX;AAEA,QAAM,iBAAiB,oBAAI,IAAY;AACvC,aAAW,SAAS,QAAQ;AACxB,UAAM,UAAU,OAAO,UAAU,WAC3B,QACC,SAAS,OAAO,UAAU,YAAY,UAAU,SAAS,OAAQ,MAA4B,SAAS,WAClG,MAA2B,OAC5B;AAEV,UAAM,aAAa,oBAAoB,OAAO;AAC9C,QAAI,YAAY;AACZ,qBAAe,IAAI,UAAU;AAAA,IACjC;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,4BAAkC;AAGvC,QAAM,iBAAa,iCAAU,UAAU,CAAC,UAAU,eAAe,MAAM,GAAG;AAAA,IACtE,UAAU;AAAA,IAAQ,OAAO;AAAA,IAAQ,SAAS;AAAA,EAC9C,CAAC;AAED,QAAM,SAAS,WAAW,UAAU;AACpC,MAAI,OAAO,SAAS,oBAAoB,EAAG;AAE3C,uCAAU,UAAU;AAAA,IAChB;AAAA,IAAU;AAAA,IAAe;AAAA,IACzB;AAAA,EACJ,GAAG,EAAE,OAAO,WAAW,SAAS,KAAO,CAAC;AAC5C;AAEA,SAAS,yBAAyB,YAA6B;AAC3D,QAAM,oBAAgB,iCAAU,UAAU,CAAC,UAAU,WAAW,YAAY,WAAW,MAAM,GAAG,EAAE,OAAO,UAAU,CAAC;AACpH,MAAI,cAAc,WAAW,GAAG;AAC5B,WAAO;AAAA,EACX;AAEA,QAAM,uBAAuB,GAAG,UAAU,IAAI,oBAAoB;AAClE,QAAM,yBAAqB,iCAAU,UAAU,CAAC,UAAU,WAAW,sBAAsB,WAAW,MAAM,GAAG,EAAE,OAAO,UAAU,CAAC;AACnI,SAAO,mBAAmB,WAAW;AACzC;AAEA,SAAS,sBAAsB,QAAuB;AAClD,QAAM,YAAY,6BAA6B;AAC/C,MAAI,CAAC,WAAW;AACZ,YAAQ,IAAI,cAAM,OAAO,2FAAsF,CAAC;AAChH;AAAA,EACJ;AAEA,QAAM,UAAU,wBAAwB,OAAO,gBAAc,CAAC,UAAU,IAAI,UAAU,CAAC;AACvF,MAAI,QAAQ,WAAW,GAAG;AACtB,YAAQ,IAAI,cAAM,IAAI,sEAAiE,CAAC;AACxF;AAAA,EACJ;AAEA,UAAQ,IAAI,cAAM,KAAK,yCAAyC,CAAC;AACjE,4BAA0B;AAE1B,aAAW,cAAc,SAAS;AAC9B,QAAI,QAAQ;AACR,cAAQ,IAAI,cAAM,IAAI,qCAAqC,UAAU,eAAe,CAAC;AACrF;AAAA,IACJ;AAEA,YAAQ,IAAI,cAAM,IAAI,gBAAgB,UAAU,KAAK,CAAC;AACtD,UAAM,cAAc,yBAAyB,UAAU;AACvD,QAAI,aAAa;AACb,cAAQ,IAAI,EAAE,QAAQ,YAAO,UAAU,YAAY,CAAC;AAAA,IACxD,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,8BAAyB,UAAU,gCAAgC,UAAU,IAAI,oBAAoB,EAAE,CAAC;AAAA,IACrI;AAAA,EACJ;AACJ;AAMA,eAAsB,yBAAyB,OAA6B,CAAC,GAA6B;AACtG,QAAM,OAAO,cAAc;AAC3B,sBAAoB,IAAI;AAExB,MAAI,KAAK,YAAY;AACjB,0BAAsB,KAAK,UAAU,KAAK;AAC1C,WAAO,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAE;AAAA,EACpD;AAEA,QAAM,SAAS,iBAAiB,MAAM;AAAA,IAClC,oBAAoB;AAAA,IACpB,QAAQ,KAAK;AAAA,EACjB,CAAC;AAED,MAAI,CAAC,KAAK,QAAQ;AACd,oBAAgB;AAAA,EACpB;AAEA,wBAAsB,KAAK,UAAU,KAAK;AAE1C,SAAO;AACX;AAsBO,SAAS,gBAAyB;AACrC,SAAO,SAAS,aAAa,KAAK,OAAK,EAAE,OAAO,OAAO,CAAE,EAAE;AAC/D;AAEO,SAAS,kBAA2B;AACvC,SAAO,SAAS,aAAa,KAAK,OAAK,EAAE,OAAO,MAAM,CAAE,EAAE;AAC9D;;;A/F9fA,SAAS,uBAAuB,UAA0B;AACtD,SAAO,mBAAAC,QAAK,KAAK,UAAU,WAAW,eAAe;AACzD;AAEA,SAAS,kBAAkB,cAA+B;AACtD,MAAI,CAAC,kBAAAC,QAAG,WAAW,YAAY,EAAG,QAAO;AAEzC,MAAI;AACA,UAAM,OAAO,kBAAAA,QAAG,aAAa,YAAY;AAIzC,UAAM,SAAS,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC;AAC7C,eAAW,YAAY,QAAQ;AAC3B,iBAAW,WAAW,UAAU;AAC5B,mBAAW,QAAQ,QAAQ,SAAS,CAAC,GAAG;AACpC,cAAI,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,SAAS,cAAc,GAAG;AAC3E,mBAAO;AAAA,UACX;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACA,WAAO;AAAA,EACX,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEO,SAAS,sBAA+B;AAC3C,QAAM,MAAM,IAAI,QAAQ,QAAQ,EAC3B,YAAY,+EAA+E,EAC3F,SAAS,UAAU,2EAAsE,EACzF,OAAO,iBAAiB,yLAAoL,EAC5M,OAAO,eAAe,yFAAyF,EAC/G,OAAO,eAAe,iGAAiG,EACvH,OAAO,kBAAkB,wFAAwF,EACjH,OAAO,sBAAsB,sHAAiH,EAC9I,OAAO,iBAAiB,qHAAqH,EAC7I,OAAO,QAAQ,yBAAyB,EACxC,OAAO,qBAAqB,mHAAmH,EAC/I,OAAO,WAAW,0GAAsG,EACxH,OAAO,WAAW,4JAA4J,EAC9K,mBAAmB,IAAI,EACvB,YAAY,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAW7B,EACQ,OAAO,OAAO,MAA0B,SAWnC;AAIF,QAAI,KAAK,UAAU;AACf,cAAQ,MAAM,cAAM;AAAA,QAChB,2EAAsE,KAAK,QAAQ;AAAA,MACvF,CAAC;AAAA,IACL;AACA,UAAM,UAAU,QAAQ,KAAK,QAAQ,IAAI;AACzC,UAAM,cAAc,WAAW,IAAI,QAAQ,KAAK,MAAM,UAAU,CAAC,IAAI,CAAC;AACtE,UAAM,sBAAsB;AAAA,MACxB,SAAS;AAAA,MACT;AAAA,MACA,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,YAAY,QAAQ,KAAK,cAAc,KAAK,EAAE;AAAA,MAC9C,QAAQ,KAAK;AAAA,MACb,OAAO,QAAQ,KAAK,KAAK;AAAA,MACzB,OAAO,QAAQ,KAAK,KAAK;AAAA,MACzB;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAEL,MAAI,QAAQ,SAAS,EAChB,YAAY,0EAA0E,EACtF,OAAO,aAAa,kCAAkC,KAAK,EAC3D,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,OAAO,SAA4C;AACvD,QAAI,CAAC,KAAK,QAAQ;AACd,YAAM,YAAY,MAAM,yBAAyB;AAAA,QAC7C,KAAK,KAAK;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,MACb,CAAC;AACD,UAAI,CAAC,WAAW;AACZ,gBAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,aAAa;AACpC,UAAM,0BAA0B,EAAE,UAAU,QAAQ,KAAK,QAAQ,UAAU,MAAM,CAAC;AAAA,EACtF,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,MAAM,WAAW,EACjB,YAAY,2DAA2D,EACvE,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,OAAO,SAA2B;AACtC,UAAM,YAAY,MAAM,yBAAyB;AAAA,MAC7C,KAAK,KAAK;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACb,CAAC;AACD,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,aAAa;AACpC,UAAM,0BAA0B,EAAE,UAAU,QAAQ,OAAO,UAAU,MAAM,CAAC;AAAA,EAChF,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,YAAY,sDAAsD,EAClE,OAAO,YAAY;AAChB,YAAQ,IAAI,EAAE,KAAK,0BAA0B,CAAC;AAE9C,QAAI;AACA,YAAMC,eAAU,qCAAS,oBAAoB,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC,EAAE,KAAK;AACvF,cAAQ,IAAI,EAAE,QAAQ,wBAAmBA,QAAO,EAAE,CAAC;AAAA,IACvD,QAAQ;AACJ,cAAQ,IAAI,cAAM,IAAI,+BAA0B,CAAC;AACjD,cAAQ,IAAI,EAAE;AACd;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,aAAa;AACpC,UAAM,eAAe,uBAAuB,QAAQ;AACpD,QAAI,kBAAkB,YAAY,GAAG;AACjC,cAAQ,IAAI,EAAE,QAAQ,gCAA2B,YAAY,GAAG,CAAC;AAAA,IACrE,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,kEAAwD,CAAC;AAAA,IACtF;AAEA,QAAI;AACA,+CAAS,gBAAgB,EAAE,OAAO,SAAS,CAAC;AAC5C,cAAQ,IAAI,EAAE,QAAQ,+BAA0B,CAAC;AAAA,IACrD,QAAQ;AACJ,cAAQ,IAAI,cAAM,IAAI,mCAA8B,CAAC;AAAA,IACzD;AAEA,YAAQ,IAAI,EAAE;AAAA,EAClB,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,YAAY,4CAA4C,EACxD,OAAO,YAAY;AAChB,YAAQ,IAAI,EAAE,KAAK,0BAA0B,CAAC;AAE9C,QAAI,QAAQ;AAEZ,QAAI;AACA,+CAAS,oBAAoB,EAAE,OAAO,SAAS,CAAC;AAChD,cAAQ,IAAI,EAAE,QAAQ,+BAA0B,CAAC;AAAA,IACrD,QAAQ;AACJ,cAAQ,IAAI,cAAM,IAAI,0DAAgD,CAAC;AACvE,cAAQ;AAAA,IACZ;AAEA,UAAM,WAAW,MAAM,aAAa;AACpC,UAAM,eAAe,uBAAuB,QAAQ;AACpD,QAAI,kBAAkB,YAAY,GAAG;AACjC,cAAQ,IAAI,EAAE,QAAQ,yDAAoD,CAAC;AAAA,IAC/E,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,8DAAoD,CAAC;AAC9E,cAAQ;AAAA,IACZ;AAGA,UAAM,OAAO,cAAc;AAC3B,wBAAoB,IAAI;AAExB,QAAI,CAAC,KAAK,mBAAoB,SAAQ;AAEtC,YAAQ,IAAI,EAAE;AACd,QAAI,OAAO;AACP,cAAQ,IAAI,EAAE,UAAU,8BAAyB,CAAC;AAAA,IACtD,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,gDAAsC,CAAC;AAAA,IACpE;AAAA,EACJ,CAAC;AAEL,SAAO;AACX;;;AgGvNA;AACA,IAAAC,eAAiB;AACjB,IAAAC,6BAA0B;AAC1B,IAAAC,kBAAwB;AACxB,IAAAC,oBAAe;;;ACIf;AACA,IAAAC,eAAiB;AACjB,IAAAC,6BAA0B;AAC1B,IAAAC,kBAA0C;AAC1C,IAAAC,kBAAwB;AAKxB,IAAMC,gBAAe,QAAQ,IAAI,gBAAgB,aAAAC,QAAK,SAAK,yBAAQ,GAAG,OAAO,OAAO;AAEpF,SAAS,WAAW,QAAuB;AACvC,MAAI,gBAAgB,GAAG;AACnB,UAAM,QAAI,sCAAU,QAAQ,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC9E,YAAQ,IAAI,EAAE,QAAQ,iBAAY,EAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC;AACtE;AAAA,EACJ;AACA,UAAQ,IAAI,cAAM,OAAO,+CAA0C,CAAC;AACpE,MAAI,QAAQ;AACR,YAAQ,IAAI,cAAM,IAAI,iCAAiC,CAAC;AACxD;AAAA,EACJ;AACA,QAAM,QAAI,sCAAU,OAAO,CAAC,WAAW,MAAM,MAAM,GAAG,EAAE,OAAO,UAAU,CAAC;AAC1E,MAAI,EAAE,WAAW,GAAG;AAChB,YAAQ,IAAI,cAAM,OAAO,2DAAsD,CAAC;AAAA,EACpF,OAAO;AACH,YAAQ,IAAI,EAAE,QAAQ,yBAAoB,CAAC;AAAA,EAC/C;AACJ;AASA,eAAsB,aAAa,SAAkB,OAAO,WAAoB,OAAO,aAAqC;AACxH,MAAI,CAAC,aAAa;AACd,UAAM,QAAI,sCAAU,OAAO,CAAC,aAAa,iBAAiB,GAAG;AAAA,MACzD,KAAK,QAAQ,IAAI;AAAA,MAAG,UAAU;AAAA,MAAQ,OAAO;AAAA,IACjD,CAAC;AACD,kBAAc,EAAE,WAAW,KAAK,EAAE,UAAU,IAAI,KAAK,IAAI,QAAQ,IAAI;AAAA,EACzE;AAEA,UAAQ,IAAI,EAAE,KAAK,sCAAiC,CAAC;AAGrD,MAAI,CAAC,cAAc,GAAG;AAClB,YAAQ,IAAI,cAAM,OAAO,oDAA+C,CAAC;AACzE,QAAI,CAAC,QAAQ;AACT,YAAM,QAAI,sCAAU,OAAO,CAAC,WAAW,MAAM,OAAO,GAAG,EAAE,OAAO,UAAU,CAAC;AAC3E,UAAI,EAAE,WAAW,GAAG;AAChB,gBAAQ,MAAM,cAAM,IAAI,+DAA0D,CAAC;AACnF;AAAA,MACJ;AAAA,IACJ,OAAO;AACH,cAAQ,IAAI,cAAM,IAAI,kCAAkC,CAAC;AAAA,IAC7D;AACA,YAAQ,IAAI,EAAE,QAAQ,uBAAkB,CAAC;AAAA,EAC7C,OAAO;AACH,UAAM,QAAI,sCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,UAAU,OAAO,CAAC;AAC7D,YAAQ,IAAI,EAAE,QAAQ,eAAU,EAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC;AAAA,EACxE;AAEA,aAAW,MAAM;AAGjB,QAAM,iBAAiB,EAAE,QAAQ,UAAU,YAAY,CAAC;AAGxD,uBAAqB,MAAM;AAG3B,QAAM,cAAc,CAAC,eAAe,aAAa,eAAe;AAChE,QAAM,gBAAgB,YAAY,OAAO,OAAK,CAAC,QAAQ,IAAI,EAAE,WAAW,aAAAA,QAAK,KAAKD,eAAc,CAAC,CAAC,CAAC;AACnG,MAAI,cAAc,SAAS,GAAG;AAC1B,YAAQ,IAAI,cAAM,OAAO;AAAA,gDAA8C,cAAc,KAAK,IAAI,CAAC,GAAG,CAAC;AACnG,YAAQ,IAAI,cAAM,OAAO,6DAA6D,CAAC;AACvF,YAAQ,IAAI,cAAM,IAAI,mDAAmD,CAAC;AAAA,EAC9E,OAAO;AACH,YAAQ,IAAI,EAAE;AAAA,EAClB;AACJ;AAcA,SAAS,qBAAqB,QAAuB;AACjD,QAAM,UAAU,aAAAC,QAAK,SAAK,yBAAQ,GAAG,OAAO,kBAAkB;AAC9D,UAAI,4BAAW,OAAO,EAAG;AACzB,MAAI,QAAQ;AACR,YAAQ,IAAI,cAAM,IAAI,oBAAoB,OAAO,yBAAyB,CAAC;AAC3E;AAAA,EACJ;AACA,MAAI;AACA,uCAAc,SAAS,GAAG,KAAK,UAAU,EAAE,aAAa,MAAM,GAAG,MAAM,CAAC,CAAC;AAAA,CAAI;AAC7E,YAAQ,IAAI,cAAM,IAAI,YAAY,OAAO,uBAAuB,CAAC;AAAA,EACrE,QAAQ;AAAA,EAER;AACJ;;;AC7GA;AACA,IAAAC,kBAAoB;AACpB,IAAAC,oBAAe;AACf,IAAAC,eAAiB;AACjB,IAAAC,6BAA0B;AAC1B,IAAAC,kBAAwB;AAMxB,IAAMC,gBAAe,QAAQ,IAAI,gBAAgB,aAAAC,QAAK,SAAK,yBAAQ,GAAG,OAAO,OAAO;AAkB7E,SAAS,aAAa,UAAkB,QAAwC;AACnF,SAAO,SAAS,QAAQ,kBAAkB,CAAC,GAAG,QAAQ,OAAO,GAAG,KAAK,EAAE;AAC3E;AAEO,SAAS,qBAAqB,YAA4C;AAC7E,QAAM,SAAiC,CAAC;AACxC,MAAI;AACA,UAAM,OAAO,KAAK,MAAM,QAAQ,IAAI,EAAE,aAAa,aAAAC,QAAK,KAAK,YAAY,WAAW,GAAG,MAAM,CAAC;AAC9F,QAAI,MAAM,WAAW,IAAK,QAAO,mBAAmB,IAAI,KAAK,UAAU;AACvE,QAAI,MAAM,KAAK,IAAK,QAAO,aAAa,IAAI,KAAK,IAAI;AAAA,EACzD,QAAQ;AAAA,EAAsC;AAC9C,MAAI;AACA,UAAM,SAAS,KAAK,MAAM,QAAQ,IAAI,EAAE,aAAa,aAAAA,QAAK,KAAK,YAAY,aAAa,GAAG,MAAM,CAAC;AAClG,QAAI,CAAC,OAAO,mBAAmB,KAAK,QAAQ,WAAW,WAAW,QAAQ;AACtE,aAAO,mBAAmB,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7D;AAAA,EACJ,QAAQ;AAAA,EAAsC;AAC9C,SAAO;AACX;AAEA,SAASC,cAAmB;AACxB,MAAI,gBAAgB,GAAG;AACnB,UAAM,QAAI,sCAAU,QAAQ,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC9E,YAAQ,IAAI,EAAE,QAAQ,iBAAY,EAAE,OAAO,KAAK,CAAC,oBAAoB,CAAC;AACtE;AAAA,EACJ;AACA,UAAQ,IAAI,cAAM,OAAO,iDAA4C,CAAC;AACtE,QAAM,QAAI,sCAAU,OAAO,CAAC,WAAW,MAAM,MAAM,GAAG,EAAE,OAAO,UAAU,CAAC;AAC1E,MAAI,EAAE,WAAW,GAAG;AAChB,YAAQ,IAAI,cAAM,OAAO,2DAAsD,CAAC;AAAA,EACpF,OAAO;AACH,YAAQ,IAAI,EAAE,QAAQ,yBAAoB,CAAC;AAAA,EAC/C;AACJ;AAEO,SAAS,yBAAkC;AAC9C,QAAM,MAAM,IAAI,QAAQ,IAAI;AAC5B,MACK,YAAY,sEAAsE,EAClF,OAAO,aAAa,6BAA6B,KAAK,EACtD,OAAO,WAAW,+DAA+D,KAAK,EACtF,OAAO,WAAW,kDAAkD,KAAK,EACzE,OAAO,OAAO,SAAS;AACpB,UAAM,EAAE,KAAK,OAAAC,QAAO,MAAM,IAAI;AAC9B,UAAM,WAAW,MAAM,aAAa;AACpC,UAAM,cAAc,aAAAF,QAAK,KAAK,UAAU,UAAU,IAAI;AAGtD,QAAIE,QAAO;AACP,YAAMC,aAAY,oCAAoC;AACtD,YAAMC,aAAY,aAAAJ,QAAK,KAAKK,eAAc,YAAY;AAEtD,UAAI,CAACF,YAAW;AACZ,gBAAQ,IAAI,cAAM,IAAI,gEAAgE,CAAC;AACvF;AAAA,MACJ;AAEA,YAAM,OAAO,MAAM,mBAAmBA,YAAWC,UAAS;AAC1D,0BAAoB,IAAI;AAExB,YAAM,WAAW,KAAK,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS,KAAK,KAAK,mBAAmB,SAAS;AAC1H,UAAI,UAAU;AACV,gBAAQ,MAAM,cAAM,IAAI,8DAAyD,CAAC;AAClF,gBAAQ,KAAK,CAAC;AAAA,MAClB;AACA;AAAA,IACJ;AAGA,QAAI,SAAS,CAAC,kBAAAE,QAAG,WAAW,aAAAN,QAAK,KAAKK,eAAc,WAAW,CAAC,GAAG;AAC/D,cAAQ,IAAI,EAAE,KAAK,6BAA6B,CAAC;AAGjD,UAAI,CAAC,cAAc,GAAG;AAClB,gBAAQ,IAAI,cAAM,OAAO,sDAAiD,CAAC;AAC3E,cAAM,QAAI,sCAAU,OAAO,CAAC,WAAW,MAAM,OAAO,GAAG,EAAE,OAAO,UAAU,CAAC;AAC3E,YAAI,EAAE,WAAW,GAAG;AAChB,kBAAQ,MAAM,cAAM,IAAI,0DAA0D,CAAC;AACnF,kBAAQ,KAAK,CAAC;AAAA,QAClB;AACA,gBAAQ,IAAI,EAAE,QAAQ,yBAAoB,CAAC;AAAA,MAC/C,OAAO;AACH,cAAM,QAAI,sCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,UAAU,OAAO,CAAC;AAC7D,gBAAQ,IAAI,EAAE,QAAQ,eAAU,EAAE,OAAO,KAAK,CAAC;AAAA,CAAsB,CAAC;AAAA,MAC1E;AAGA,cAAQ,IAAI,EAAE,KAAK,UAAU,CAAC;AAC9B,MAAAJ,YAAW;AAGX,YAAMM,UAAwB,MAAM,kBAAAD,QAAG,SAAS,aAAAN,QAAK,KAAK,aAAa,qBAAqB,CAAC;AAC7F,YAAM,WAAW,qBAAqBK,aAAY;AAClD,YAAM,SAAiC,EAAE,GAAG,SAAS;AAErD,cAAQ,IAAI,EAAE,KAAK,gBAAgB,CAAC;AACpC,iBAAW,SAASE,QAAO,QAAQ;AAC/B,YAAI,SAAS,MAAM,GAAG,GAAG;AACrB,kBAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,EAAE,IAAI,MAAM,KAAK,gBAAgB,CAAC;AACnE;AAAA,QACJ;AACA,YAAI,CAAC,MAAM,YAAY,CAAC,KAAK;AACzB,gBAAM,EAAE,QAAQ,IAAI,UAAM,gBAAAC,SAAQ;AAAA,YAC9B,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,eAAe,MAAM,KAAK;AAAA,YACnC,SAAS;AAAA,UACb,CAAC;AACD,cAAI,CAAC,QAAS;AAAA,QAClB;AACA,cAAM,EAAE,MAAM,IAAI,UAAM,gBAAAA,SAAQ;AAAA,UAC5B,MAAM,MAAM,SAAS,aAAa;AAAA,UAClC,MAAM;AAAA,UACN,SAAS,KAAK,MAAM,KAAK;AAAA,UACzB,MAAM,MAAM;AAAA,UACZ,UAAU,CAAC,MAAe,MAAM,YAAY,CAAC,IAAK,aAAa;AAAA,QACnE,CAAC;AACD,YAAI,MAAO,QAAO,MAAM,GAAG,IAAI;AAAA,MACnC;AAGA,YAAM,kBAAAF,QAAG,UAAUD,aAAY;AAC/B,cAAQ,IAAI,EAAE,MAAM;AAAA,sBAAyBA,aAAY,EAAE,CAAC;AAE5D,iBAAW,QAAQ,CAAC,eAAe,aAAa,eAAe,GAAG;AAC9D,cAAM,WAAW,aAAAL,QAAK,KAAKK,eAAc,IAAI;AAC7C,YAAI,SAAS,eAAe,MAAM,kBAAAC,QAAG,WAAW,QAAQ,KAAK,CAAC,KAAK;AAC/D,gBAAM,EAAE,UAAU,IAAI,UAAM,gBAAAE,SAAQ;AAAA,YAChC,MAAM;AAAA,YACN,MAAM;AAAA,YACN,SAAS,KAAK,IAAI;AAAA,YAClB,SAAS;AAAA,UACb,CAAC;AACD,cAAI,CAAC,WAAW;AACZ,oBAAQ,IAAI,EAAE,MAAM,eAAe,IAAI,EAAE,CAAC;AAC1C;AAAA,UACJ;AAAA,QACJ;AACA,cAAM,MAAM,MAAM,kBAAAF,QAAG,SAAS,aAAAN,QAAK,KAAK,aAAa,GAAG,IAAI,WAAW,GAAG,MAAM;AAChF,cAAM,kBAAAM,QAAG,UAAU,UAAU,aAAa,KAAK,MAAM,GAAG,MAAM;AAC9D,gBAAQ,IAAI,EAAE,QAAQ,OAAO,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;AAAA,MAClD;AAAA,IACJ;AAGA,UAAM,YAAY,oCAAoC;AACtD,UAAM,YAAY,aAAAN,QAAK,KAAKK,eAAc,YAAY;AAEtD,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,cAAM,IAAI,gEAAgE,CAAC;AAAA,IAC3F,OAAO;AACH,YAAM,OAAO,MAAM,mBAAmB,WAAW,SAAS;AAC1D,0BAAoB,IAAI;AAExB,UAAI,CAAC,KAAK,YAAY;AAClB,cAAM,SAAS,MAAM,cAAc,MAAM,WAAW,WAAW;AAAA,UAC3D,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,gBAAgB;AAAA,UAChB,KAAK,CAAC,QAAQ,QAAQ,IAAI,cAAM,IAAI,OAAO,GAAG,EAAE,CAAC;AAAA,QACrD,CAAC;AAED,cAAM,QAAQ,OAAO,gBAAgB,SAAS,OAAO,kBAAkB,SAAS,OAAO,kBAAkB;AACzG,YAAI,QAAQ,GAAG;AACX,kBAAQ,IAAI,EAAE,QAAQ;AAAA,MAAS,IAAI,EAAE,WAAW,KAAK,QAAQ,CAAC;AAAA,QAClE;AAAA,MACJ;AAAA,IACJ;AAGA,YAAQ,IAAI,EAAE,KAAK,4BAA4B,CAAC;AAChD,UAAM,SAAwB,MAAM,kBAAAC,QAAG,SAAS,aAAAN,QAAK,KAAK,aAAa,qBAAqB,CAAC;AAC7F,eAAW,YAAY,OAAO,iBAAiB;AAC3C,cAAQ,IAAI,EAAE,MAAM,OAAO,SAAS,GAAG,KAAK,SAAS,WAAW,EAAE,CAAC;AAAA,IACvE;AAEA,YAAQ,IAAI,EAAE,UAAU,yBAAyB,CAAC;AAAA,EACtD,CAAC;AAEL,SAAO;AACX;;;AFvMA,IAAMS,gBAAe,QAAQ,IAAI,gBAAgB,aAAAC,QAAK,SAAK,yBAAQ,GAAG,OAAO,OAAO;AAQpF,SAAS,qBAA6B;AAClC,QAAM,gBAAY,sCAAU,OAAO,CAAC,aAAa,iBAAiB,GAAG;AAAA,IACjE,KAAK,QAAQ,IAAI;AAAA,IAAG,UAAU;AAAA,IAAQ,OAAO;AAAA,EACjD,CAAC;AACD,SAAO,UAAU,WAAW,KAAK,UAAU,UAAU,IAAI,KAAK,IAAI,QAAQ,IAAI;AAClF;AAEA,SAAS,iBAAiB,SAAkB,eAAgC;AACxE,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO;AACpC,SAAO,QAAQ,KAAK,CAAC,UAAU;AAC3B,QAAI,OAAO,UAAU,SAAU,QAAO;AACtC,WAAO,MAAM,QAAQ,OAAO,GAAG,MAAM;AAAA,EACzC,CAAC;AACL;AAEA,eAAe,oBAAoB,aAAgD;AAC/E,QAAM,eAAe,aAAAA,QAAK,KAAK,aAAa,OAAO,eAAe;AAClE,QAAM,kBAAkB,MAAM,kBAAAC,QAAG,WAAW,YAAY;AAExD,MAAI,CAAC,iBAAiB;AAClB,WAAO,EAAE,oBAAoB,OAAO,4BAA4B,OAAO,wBAAwB,MAAM;AAAA,EACzG;AAEA,MAAI;AACA,UAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAC/C,UAAM,iBAAiB,MAAM,QAAQ,SAAS,QAAQ,IAChD,SAAS,SAAS,OAAO,CAAC,UAA2B,OAAO,UAAU,QAAQ,IAC9E,CAAC;AAEP,WAAO;AAAA,MACH,oBAAoB;AAAA,MACpB,4BAA4B,eAAe,SAAS,+BAA+B;AAAA,MACnF,wBAAwB,iBAAiB,SAAS,YAAY,qBAAqB;AAAA,IACvF;AAAA,EACJ,QAAQ;AACJ,WAAO,EAAE,oBAAoB,MAAM,4BAA4B,OAAO,wBAAwB,MAAM;AAAA,EACxG;AACJ;AAEO,SAAS,kBAA2B;AACvC,QAAM,MAAM,IAAI,QAAQ,IAAI,EACvB,YAAY,uEAAuE,EACnF,SAAS,UAAU,2EAAsE,EACzF,OAAO,iBAAiB,wHAAwH,EAChJ,OAAO,eAAe,yFAAyF,EAC/G,OAAO,eAAe,iGAAiG,EACvH,OAAO,kBAAkB,oFAAoF,EAC7G,OAAO,sBAAsB,iGAAiG,EAC9H,OAAO,iBAAiB,qHAAqH,EAC7I,OAAO,QAAQ,yBAAyB,EACxC,OAAO,qBAAqB,mHAAmH,EAC/I,OAAO,WAAW,0GAAsG,EACxH,OAAO,WAAW,4JAA4J,EAC9K,mBAAmB,IAAI,EACvB,YAAY,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAW7B,EACQ,OAAO,OAAO,MAA0B,SAWnC;AAIF,UAAM,UAAU,QAAQ,KAAK,QAAQ,IAAI;AACzC,UAAM,cAAc,WAAW,IAAI,QAAQ,KAAK,MAAM,UAAU,CAAC,IAAI,CAAC;AACtE,UAAM,sBAAsB;AAAA,MACxB,SAAS;AAAA,MACT;AAAA,MACA,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK;AAAA,MACb,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,YAAY,QAAQ,KAAK,cAAc,KAAK,EAAE;AAAA,MAC9C,QAAQ,KAAK;AAAA,MACb,OAAO,QAAQ,KAAK,KAAK;AAAA,MACzB,OAAO,QAAQ,KAAK,KAAK;AAAA,MACzB;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAGL,QAAM,UAAU,uBAAuB;AACvC,UAAQ,KAAK,OAAO;AACpB,UAAQ,YAAY,0EAA0E;AAC9F,MAAI,WAAW,OAAO;AAEtB,MAAI,QAAQ,QAAQ,EACf,YAAY,iDAAiD,EAC7D,OAAO,YAAY;AAChB,YAAQ,IAAI,EAAE,KAAK,yBAAyB,CAAC;AAE7C,UAAM,eAAW,sCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACnF,QAAI,SAAS,WAAW,GAAG;AACvB,cAAQ,IAAI,EAAE,QAAQ,eAAU,SAAS,OAAO,KAAK,CAAC,YAAY,CAAC;AAAA,IACvE,OAAO;AACH,cAAQ,IAAI,cAAM,IAAI,+CAAqC,CAAC;AAC5D,cAAQ,IAAI,EAAE;AACd;AAAA,IACJ;AAEA,UAAM,cAAc,mBAAmB;AACvC,UAAM,UAAU,MAAM,oBAAoB,WAAW;AAErD,UAAM,aAAa,MAAM,aAAa;AACtC,UAAM,YAAY,oCAAoC,UAAU;AAChE,UAAM,kBAAkB,aAAAD,QAAK,KAAKD,eAAc,YAAY;AAE5D,QAAI,CAAC,aAAa,CAAC,MAAM,kBAAAE,QAAG,WAAW,SAAS,GAAG;AAC/C,cAAQ,IAAI,cAAM,IAAI,2DAAsD,CAAC;AAC7E;AAAA,IACJ;AAEA,UAAM,OAAO,MAAM,mBAAmB,WAAW,eAAe;AAChE,UAAM,QAAQ,KAAK,SAAS,OAAO,OAAK,EAAE,SAAS,EAAE;AACrD,UAAM,gBAAgB,QAAQ,8BAA8B,QAAQ;AAEpE,QAAI,eAAe;AACf,cAAQ,IAAI,cAAM,IAAI,uBAAuB,CAAC;AAC9C,cAAQ,IAAI,cAAM,IAAI,4DAA4D,QAAQ,6BAA6B,KAAK,UAAU,GAAG,CAAC;AAAA,IAC9I,OAAO;AACH,cAAQ,IAAI,cAAM,IAAI,sBAAsB,CAAC;AAC7C,YAAM,QAAQ,KAAK,WAAW,OAAO,OAAK,EAAE,aAAa,CAAC,EAAE,KAAK,EAAE;AACnE,cAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,IAAI,KAAK,WAAW,MAAM,aAAa,CAAC;AAAA,IACxF;AAEA,YAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,IAAI,KAAK,SAAS,MAAM,YAAY,CAAC;AAEjF,QAAI,KAAK,gBAAgB,SAAS,GAAG;AACjC,YAAM,QAAQ,KAAK,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AACxE,cAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,IACtD;AAEA,QAAI,CAAC,eAAe;AAChB,UAAI,KAAK,kBAAkB,SAAS,GAAG;AACnC,cAAM,QAAQ,KAAK,kBAAkB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AAC1E,gBAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,MACtD;AACA,UAAI,KAAK,gBAAgB,SAAS,GAAG;AACjC,cAAM,QAAQ,KAAK,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW,EAAE,KAAK,IAAI;AACxE,gBAAQ,IAAI,cAAM,OAAO,iBAAiB,KAAK,EAAE,CAAC;AAAA,MACtD;AACA,UAAI,KAAK,mBAAmB,SAAS,GAAG;AACpC,gBAAQ,IAAI,cAAM,IAAI,iBAAiB,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,MAChF;AAAA,IACJ;AAEA,UAAM,0BAA0B,CAAC,QAAQ,sBAAsB,CAAC,QAAQ;AACxE,UAAM,iBAAiB,CAAC,iBAAiB,CAAC,KAAK;AAC/C,UAAM,kBAAkB,KAAK,gBAAgB,SAAS;AAEtD,QAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,iBAAiB;AACjE,cAAQ,IAAI,EAAE,QAAQ,qDAAgD,CAAC;AACvE;AAAA,IACJ;AAEA,QAAI,yBAAyB;AACzB,cAAQ,IAAI,cAAM,OAAO,qFAAqF,CAAC;AAAA,IACnH;AAEA,YAAQ,IAAI,cAAM,IAAI,gCAA2B,CAAC;AAAA,EACtD,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,YAAY,6FAA6F,EACzG,OAAO,YAAY;AAChB,YAAQ,IAAI,EAAE,KAAK,iBAAiB,CAAC;AAErC,QAAI,QAAQ;AAEZ,UAAM,eAAW,sCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACnF,QAAI,SAAS,WAAW,GAAG;AACvB,cAAQ,IAAI,EAAE,QAAQ,eAAU,SAAS,OAAO,KAAK,CAAC,YAAY,CAAC;AAAA,IACvE,OAAO;AACH,cAAQ,IAAI,cAAM,IAAI,+CAAqC,CAAC;AAC5D,cAAQ;AAAA,IACZ;AAEA,UAAM,iBAAa,sCAAU,QAAQ,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACvF,QAAI,WAAW,WAAW,GAAG;AACzB,cAAQ,IAAI,EAAE,QAAQ,iBAAY,WAAW,OAAO,KAAK,CAAC,YAAY,CAAC;AAAA,IAC3E,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,yBAAoB,CAAC;AAC9C,cAAQ;AAAA,IACZ;AAEA,UAAM,cAAc,CAAC,eAAe,aAAa,eAAe;AAChE,UAAM,gBAAgB,YAAY,OAAO,OAAK,CAAC,kBAAAA,QAAG,WAAW,aAAAD,QAAK,KAAKD,eAAc,CAAC,CAAC,CAAC;AACxF,QAAI,cAAc,WAAW,GAAG;AAC5B,cAAQ,IAAI,EAAE,QAAQ,+BAA0B,CAAC;AAAA,IACrD,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,4BAAuB,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC;AAC3E,cAAQ;AAAA,IACZ;AAEA,UAAM,cAAc,mBAAmB;AACvC,UAAM,UAAU,MAAM,oBAAoB,WAAW;AACrD,UAAM,aAAa,MAAM,aAAa;AACtC,UAAM,YAAY,oCAAoC,UAAU;AAChE,UAAM,gBAAgB,8BAA8B,UAAU;AAC9D,UAAM,kBAAkB,aAAAC,QAAK,KAAKD,eAAc,YAAY;AAE5D,QAAI;AACA,YAAM,gBAAgB,MAAM,mCAAmC,KAAK;AACpE,UAAI,cAAc,SAAS,cAAc,YAAY;AACjD,gBAAQ,IAAI,EAAE,QAAQ,uEAAkE,CAAC;AAAA,MAC7F,WAAW,cAAc,OAAO;AAC5B,gBAAQ,IAAI,cAAM,OAAO,wEAAmE,CAAC;AAC7F,gBAAQ;AAAA,MACZ,OAAO;AACH,gBAAQ,IAAI,EAAE,QAAQ,+CAA0C,CAAC;AAAA,MACrE;AAAA,IACJ,SAASG,SAAO;AACZ,cAAQ,IAAI,cAAM,OAAO,yDAAoDA,OAAK,EAAE,CAAC;AACrF,cAAQ;AAAA,IACZ;AAEA,QAAI;AACA,YAAM,aAAa,gBACb,MAAM,yBAAyB,eAAe,aAAa,KAAK,IAChE;AACN,UAAI,eAAe,cAAc,eAAe,WAAW;AACvD,gBAAQ,IAAI,EAAE,QAAQ,uEAAkE,CAAC;AAAA,MAC7F,WAAW,eAAe,MAAM;AAC5B,gBAAQ,IAAI,EAAE,QAAQ,2CAAsC,CAAC;AAAA,MACjE,WAAW,eAAe,kBAAkB;AACxC,gBAAQ,IAAI,cAAM,IAAI,2DAAsD,CAAC;AAAA,MACjF;AAAA,IACJ,SAASA,SAAO;AACZ,cAAQ,IAAI,cAAM,OAAO,oDAA+CA,OAAK,EAAE,CAAC;AAChF,cAAQ;AAAA,IACZ;AAEA,QAAI,CAAC,aAAa,CAAC,MAAM,kBAAAD,QAAG,WAAW,SAAS,GAAG;AAC/C,cAAQ,IAAI,cAAM,IAAI,yDAAoD,CAAC;AAAA,IAC/E,OAAO;AACH,YAAM,OAAO,MAAM,mBAAmB,WAAW,eAAe;AAEhE,YAAM,gBAAgB,QAAQ,8BAA8B,QAAQ;AACpE,UAAI,CAAC,QAAQ,oBAAoB;AAC7B,gBAAQ,IAAI,cAAM,OAAO,uFAAkF,CAAC;AAC5G,gBAAQ;AAAA,MACZ,WAAW,eAAe;AACtB,YAAI,QAAQ,4BAA4B;AACpC,kBAAQ,IAAI,EAAE,QAAQ,6DAAwD,CAAC;AAAA,QACnF,OAAO;AACH,kBAAQ,IAAI,cAAM,OAAO,iFAA4E,CAAC;AACtG,kBAAQ;AAAA,QACZ;AAAA,MACJ,WAAW,KAAK,kBAAkB,WAAW,KAAK,KAAK,gBAAgB,WAAW,KAAK,KAAK,mBAAmB,WAAW,GAAG;AACzH,gBAAQ,IAAI,EAAE,QAAQ,wCAAmC,KAAK,WAAW,MAAM,GAAG,CAAC;AAAA,MACvF,OAAO;AACH,YAAI,KAAK,kBAAkB,SAAS,KAAK,KAAK,gBAAgB,SAAS,GAAG;AACtE,kBAAQ,IAAI,cAAM,OAAO,6BAAwB,KAAK,kBAAkB,MAAM,aAAa,KAAK,gBAAgB,MAAM,SAAS,CAAC;AAChI,kBAAQ;AAAA,QACZ;AACA,YAAI,KAAK,mBAAmB,SAAS,GAAG;AACpC,kBAAQ,IAAI,cAAM,IAAI,iCAA4B,KAAK,mBAAmB,KAAK,IAAI,CAAC,EAAE,CAAC;AACvF,kBAAQ;AAAA,QACZ;AAAA,MACJ;AAEA,UAAI,KAAK,gBAAgB,WAAW,GAAG;AACnC,gBAAQ,IAAI,EAAE,QAAQ,gCAA2B,KAAK,SAAS,MAAM,GAAG,CAAC;AAAA,MAC7E,OAAO;AACH,gBAAQ,IAAI,cAAM,OAAO,YAAO,KAAK,gBAAgB,MAAM,qBAAqB,CAAC;AACjF,gBAAQ;AAAA,MACZ;AAAA,IACJ;AAEA,YAAQ,IAAI,EAAE;AACd,QAAI,OAAO;AACP,cAAQ,IAAI,EAAE,UAAU,8BAAyB,CAAC;AAAA,IACtD,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,wDAA8C,CAAC;AAAA,IAC5E;AAAA,EACJ,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,YAAY,qEAAqE,EACjF,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,OAAO,SAA2B;AACtC,UAAM,YAAY,MAAM,yBAAyB;AAAA,MAC7C,KAAK,KAAK;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACb,CAAC;AACD,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,UAAM,aAAa,OAAO,OAAO,mBAAmB,CAAC;AAAA,EACzD,CAAC;AAEL,SAAO;AACX;;;AGrVA;AACA,IAAAE,gBAAiB;AACjB,IAAAC,oBAAe;AACf,IAAAC,kBAAoB;AACpB,IAAAC,wBAA0B;;;ACL1B;AACA,IAAAC,oBAAe;AACf,IAAAC,eAAiB;AACjB,IAAAC,sBAAmB;;;ACHnB,IAAAC,sBAAmB;AACnB,IAAAC,qBAAiB;AACjB,IAAAC,oBAAe;AAwBf,SAAS,QAAQ,OAAuB;AACpC,SAAO,MAAM,MAAM,mBAAAC,QAAK,GAAG,EAAE,KAAK,GAAG;AACzC;AAEA,SAAS,gBAAgB,WAA2B;AAChD,SAAO,UAAU,QAAQ,cAAc,EAAE;AAC7C;AAEA,SAAS,sBAAsB,WAAmB,UAA0B;AACxE,SAAO,QAAQ,mBAAAA,QAAK,MAAM,KAAK,gBAAgB,SAAS,GAAG,QAAQ,CAAC;AACxE;AAEA,eAAe,SAAS,UAAmC;AACvD,QAAM,UAAU,MAAM,kBAAAC,QAAG,SAAS,QAAQ;AAC1C,SAAO,oBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AACnE;AAEA,eAAsB,WAClB,cACA,aACA,eACoB;AACpB,QAAMC,YAAW,MAAM,kBAAAF,QAAG,SAAS,YAAY;AAE/C,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAqB,CAAC;AAC5B,QAAM,UAAoB,CAAC;AAE3B,aAAW,CAAC,UAAU,KAAK,KAAK,OAAO,QAAQE,UAAS,MAAM,GAAG;AAC7D,UAAM,YAAY,gBAAgB,QAAQ;AAC1C,eAAW,CAAC,UAAU,KAAK,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AACzD,YAAM,eAAe,sBAAsB,MAAM,YAAY,QAAQ;AACrE,YAAM,eAAe,YACf,mBAAAH,QAAK,KAAK,WAAW,QAAQ,IAC7B,mBAAAA,QAAK,KAAK,aAAa,YAAY;AAEzC,UAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACpC,gBAAQ,KAAK,YAAY;AACzB;AAAA,MACJ;AAEA,YAAM,WAAW,MAAM,SAAS,YAAY;AAC5C,UAAI,aAAa,MAAM,MAAM;AACzB,iBAAS,KAAK,YAAY;AAAA,MAC9B,OAAO;AACH,gBAAQ,KAAK,YAAY;AAAA,MAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,SAAS,QAAQ,KAAK;AAAA,IACtB,UAAU,SAAS,KAAK;AAAA,IACxB,SAAS,QAAQ,KAAK;AAAA,EAC1B;AACJ;;;AD3CA,SAAS,qBAAqB,gBAA2C;AACrE,SAAO,eAAe,IAAI,gBAAc,gBAAW,UAAU,EAAE,KAAK,IAAI;AAC5E;AAEO,IAAM,mBAAsC;AAAA,EAC/C;AAAA,EACA;AACJ;AAEO,SAAS,gBAAgB,cAA+B;AAC3D,SAAO,iBAAiB,KAAK,mBAAiB,cAAc,SAAS,GAAG,IAClE,aAAa,WAAW,aAAa,IACrC,iBAAiB,aAAa;AACxC;AAEO,SAASG,sBAA6B;AACzC,QAAM,aAAa;AAAA,IACf,aAAAC,QAAK,QAAQ,WAAW,OAAO;AAAA,IAC/B,aAAAA,QAAK,QAAQ,WAAW,UAAU;AAAA,EACtC;AAEA,aAAW,aAAa,YAAY;AAChC,QAAI,kBAAAC,QAAG,WAAW,aAAAD,QAAK,KAAK,WAAW,SAAS,eAAe,CAAC,GAAG;AAC/D,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,IAAI,MAAM,+DAA+D;AACnF;AAEO,SAASE,SAAQ,OAAuB;AAC3C,SAAO,MAAM,QAAQ,OAAO,GAAG;AACnC;AAEO,SAASC,iBAAgB,WAA2B;AACvD,SAAO,UAAU,QAAQ,cAAc,EAAE;AAC7C;AAEO,SAAS,mBAAmB,WAAmB,UAA0B;AAC5E,SAAOD,SAAQ,aAAAF,QAAK,MAAM,KAAKG,iBAAgB,SAAS,GAAG,QAAQ,CAAC;AACxE;AAEO,SAAS,oBAAoB,cAA+B;AAC/D,SAAO,aAAa,WAAW,iBAAiB;AACpD;AAEA,SAAS,qBAAqB,aAAqB,cAAsB,eAAgD;AACrH,MAAI,aAAa,WAAW,iBAAiB,GAAG;AAC5C,UAAM,aAAa,eAAe;AAClC,QAAI,YAAY;AAGZ,aAAO,aAAAH,QAAK,KAAK,YAAY,aAAa,MAAM,kBAAkB,MAAM,CAAC;AAAA,IAC7E;AAAA,EACJ;AAEA,MAAI,aAAa,WAAW,kBAAkB,GAAG;AAC7C,UAAM,qBAAqB,eAAe;AAC1C,QAAI,oBAAoB;AAGpB,aAAO,aAAAA,QAAK,KAAK,oBAAoB,aAAa,MAAM,mBAAmB,MAAM,CAAC;AAAA,IACtF;AAAA,EACJ;AAIA,SAAO,aAAAA,QAAK,KAAK,aAAa,YAAY;AAC9C;AAEA,eAAsBI,UAAS,UAAmC;AAC9D,QAAM,UAAU,MAAM,kBAAAH,QAAG,SAAS,QAAQ;AAC1C,SAAO,oBAAAI,QAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AACnE;AAEA,eAAsB,iCAAiC,QAI1B;AACzB,QAAM,EAAE,aAAa,aAAa,OAAO,IAAI;AAC7C,QAAM,YAAY,aAAAL,QAAK,KAAK,aAAa,SAAS,UAAU,SAAS;AACrE,QAAM,YAAY,aAAAA,QAAK,KAAK,aAAa,UAAU,SAAS;AAE5D,MAAI,sBAAsB,GAAG;AACzB,UAAM,mBAAmB,wBAAwB;AACjD,UAAM,gBAAgB,MAAM,kBAAAC,QAAG,WAAW,aAAAD,QAAK,KAAK,kBAAkB,SAAS,CAAC,KACzE,MAAM,kBAAAC,QAAG,WAAW,aAAAD,QAAK,KAAK,kBAAkB,UAAU,CAAC;AAClE,QAAI,eAAe;AACf,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,OAAO,MAAM,kBAAAC,QAAG,MAAM,SAAS,EAAE,MAAM,MAAM,IAAI;AACvD,MAAI,MAAM;AACN,QAAI,KAAK,eAAe,GAAG;AACvB,YAAM,CAAC,gBAAgB,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,QACvD,kBAAAA,QAAG,SAAS,SAAS,EAAE,MAAM,MAAM,IAAI;AAAA,QACvC,kBAAAA,QAAG,SAAS,SAAS,EAAE,MAAM,MAAM,IAAI;AAAA,MAC3C,CAAC;AAED,UAAI,kBAAkB,kBAAkB,mBAAmB,gBAAgB;AACvE,eAAO;AAAA,MACX;AAEA,UAAI,QAAQ;AACR,eAAO;AAAA,MACX;AAGA,YAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,IAC7B,OAAO;AACH,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,MAAI,QAAQ;AACR,WAAO;AAAA,EACX;AAEA,QAAM,kBAAAA,QAAG,UAAU,aAAAD,QAAK,QAAQ,SAAS,CAAC;AAC1C,QAAM,kBAAAC,QAAG,KAAK,WAAW,SAAS;AAClC,SAAO;AACX;AAEA,SAAS,qBAAqB,OAA4C;AACtE,SAAO,MAAM,iBAAiB;AAClC;AAEO,SAAS,gCAAgCK,WAAyC;AACrF,QAAM,QAAQ,oBAAI,IAAY;AAC9B,aAAW,SAAS,OAAO,OAAOA,UAAS,MAAM,GAAG;AAChD,QAAI,MAAM,eAAe,uBAAwB;AACjD,eAAW,YAAY,OAAO,KAAK,MAAM,KAAK,GAAG;AAC7C,YAAM,QAAQ,SAAS,MAAM,GAAG,EAAE,CAAC;AACnC,UAAI,MAAO,OAAM,IAAI,KAAK;AAAA,IAC9B;AAAA,EACJ;AACA,SAAO;AACX;AAEA,eAAe,UAAU,WAAmB,WAAiD;AACzF,MAAI,UAAU,YAAY,EAAG,QAAO;AACpC,MAAI,CAAC,UAAU,eAAe,EAAG,QAAO;AACxC,QAAM,WAAW,MAAM,kBAAAL,QAAG,KAAK,SAAS,EAAE,MAAM,MAAM,IAAI;AAC1D,SAAO,QAAQ,UAAU,YAAY,CAAC;AAC1C;AAEA,eAAsB,0BAA0B,QAKb;AAC/B,QAAM,EAAE,aAAa,UAAAK,WAAU,QAAQ,cAAc,IAAI;AAIzD,QAAM,cAAc,eAAe,UAAU,aAAAN,QAAK,KAAK,aAAa,UAAU,SAAS;AAEvF,QAAM,WAAW,MAAM,kBAAAC,QAAG,MAAM,WAAW,EAAE,MAAM,MAAM,IAAI;AAC7D,MAAI,CAAC,YAAY,SAAS,eAAe,KAAK,CAAC,SAAS,YAAY,GAAG;AACnE,WAAO,EAAE,SAAS,CAAC,EAAE;AAAA,EACzB;AAEA,QAAM,eAAe,gCAAgCK,SAAQ;AAC7D,MAAI,aAAa,SAAS,GAAG;AAGzB,WAAO,EAAE,SAAS,CAAC,EAAE;AAAA,EACzB;AAEA,QAAM,SAAS,MAAM,kBAAAL,QAAG,QAAQ,WAAW;AAC3C,QAAM,UAAoB,CAAC;AAE3B,aAAW,QAAQ,QAAQ;AACvB,QAAI,aAAa,IAAI,IAAI,EAAG;AAG5B,UAAM,YAAY,aAAAD,QAAK,KAAK,aAAa,IAAI;AAC7C,UAAM,YAAY,MAAM,kBAAAC,QAAG,MAAM,SAAS,EAAE,MAAM,MAAM,IAAI;AAC5D,QAAI,CAAC,UAAW;AAChB,QAAI,CAAE,MAAM,UAAU,WAAW,SAAS,EAAI;AAE9C,YAAQ,KAAK,IAAI;AACjB,QAAI,CAAC,QAAQ;AACT,YAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,IAC7B;AAAA,EACJ;AAKA,QAAM,aAAa,aAAAD,QAAK,KAAK,aAAa,UAAU,QAAQ;AAC5D,QAAM,aAAa,MAAM,kBAAAC,QAAG,MAAM,UAAU,EAAE,MAAM,MAAM,IAAI;AAC9D,MAAI,YAAY,YAAY,KAAK,CAAC,WAAW,eAAe,GAAG;AAE3D,UAAM,sBAAsB,aAAAD,QAAK,QAAQ,WAAW;AACpD,eAAW,QAAQ,SAAS;AAExB,YAAM,cAAc,aAAAA,QAAK,KAAK,YAAY,IAAI;AAC9C,YAAM,WAAW,MAAM,kBAAAC,QAAG,MAAM,WAAW,EAAE,MAAM,MAAM,IAAI;AAC7D,UAAI,CAAC,YAAY,CAAC,SAAS,eAAe,EAAG;AAC7C,YAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,WAAW,EAAE,MAAM,MAAM,IAAI;AAClE,UAAI,CAAC,WAAY;AAEjB,YAAM,iBAAiB,aAAAD,QAAK,QAAQ,aAAAA,QAAK,QAAQ,WAAW,GAAG,UAAU;AAEzE,UAAI,mBAAmB,aAAAA,QAAK,KAAK,qBAAqB,IAAI,GAAG;AACzD,YAAI,CAAC,QAAQ;AACT,gBAAM,kBAAAC,QAAG,OAAO,WAAW;AAAA,QAC/B;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO,EAAE,QAAQ;AACrB;AAEA,eAAe,0BAA0B,OAAe,OAA8B;AAClF,QAAM,UAAU,aAAAD,QAAK,KAAK,aAAAA,QAAK,QAAQ,wBAAwB,CAAC,GAAG,QAAQ,wBAAwB;AACnG,QAAM,kBAAAC,QAAG,UAAU,aAAAD,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU;AAAA,IAC3C,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACJ,CAAC,CAAC;AAAA,CAAI;AACV;AAEA,SAAS,8BAA8BK,WAA8C;AACjF,MAAI,CAAC,sBAAsB,GAAG;AAC1B,WAAOA;AAAA,EACX;AAEA,QAAM,SAAS,OAAO;AAAA,IAClB,OAAO,QAAQA,UAAS,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,qBAAqB,KAAK,MAAM,QAAQ;AAAA,EAClG;AAEA,SAAO;AAAA,IACH,GAAGA;AAAA,IACH;AAAA,EACJ;AACJ;AAEO,SAAS,oBAAoBA,WAAiD;AACjF,QAAM,WAAW,oBAAI,IAAoB;AAEzC,aAAW,SAAS,OAAO,OAAOA,UAAS,MAAM,GAAG;AAChD,eAAW,CAAC,UAAU,SAAS,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAC7D,eAAS,IAAI,mBAAmB,MAAM,YAAY,QAAQ,GAAG,UAAU,IAAI;AAAA,IAC/E;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,eAAsB,oBAAoB,QAShB;AACtB,QAAM,EAAE,aAAa,UAAAA,WAAU,aAAa,QAAQ,OAAO,KAAK,iBAAiB,OAAO,cAAc,IAAI;AAC1G,QAAM,eAAe,aAAAN,QAAK,KAAK,aAAa,SAAS,eAAe;AAEpE,QAAM,QAAQ,MAAM,WAAW,cAAc,aAAa,aAAa;AACvE,QAAM,iBAAiB,oBAAoBM,SAAQ;AAEnD,QAAM,aAAa,IAAI,IAAI,MAAM,OAAO;AACxC,QAAM,cAAc,IAAI,IAAI,MAAM,QAAQ;AAC1C,QAAM,aAAa,IAAI,IAAI,MAAM,OAAO;AAExC,MAAI,CAAC,OAAO;AACR,UAAM,gBAAgB,MAAM,QAAQ,OAAO,mBAAmB;AAC9D,QAAI,cAAc,SAAS,GAAG;AAC1B,cAAQ,IAAI,cAAM,OAAO,sFAAiF,CAAC;AAC3G,iBAAW,gBAAgB,cAAc,MAAM,GAAG,EAAE,GAAG;AACnD,cAAM,eAAe,qBAAqB,aAAa,cAAc,aAAa;AAClF,cAAM,aAAa,MAAMF,UAAS,YAAY;AAC9C,cAAM,eAAe,eAAe,IAAI,YAAY,KAAK;AACzD,gBAAQ,IAAI,cAAM,OAAO,cAAS,YAAY,EAAE,CAAC;AACjD,gBAAQ,IAAI,cAAM,IAAI,kBAAkB,aAAa,MAAM,GAAG,EAAE,CAAC,kBAAa,WAAW,MAAM,GAAG,EAAE,CAAC,QAAG,CAAC;AAAA,MAC7G;AAAA,IACJ;AAEA,UAAM,kBAAkB,MAAM,QAAQ,OAAO,kBAAgB,CAAC,oBAAoB,YAAY,CAAC;AAC/F,QAAI,gBAAgB,SAAS,GAAG;AAC5B,UAAI,cAAc,WAAW,GAAG;AAC5B,gBAAQ,IAAI,cAAM,OAAO,sFAAiF,CAAC;AAAA,MAC/G;AACA,iBAAW,gBAAgB,gBAAgB,MAAM,GAAG,EAAE,GAAG;AACrD,cAAM,eAAe,qBAAqB,aAAa,cAAc,aAAa;AAClF,cAAM,aAAa,MAAMA,UAAS,YAAY;AAC9C,cAAM,eAAe,eAAe,IAAI,YAAY,KAAK;AACzD,gBAAQ,IAAI,cAAM,OAAO,cAAS,YAAY,EAAE,CAAC;AACjD,gBAAQ,IAAI,cAAM,IAAI,kBAAkB,aAAa,MAAM,GAAG,EAAE,CAAC,kBAAa,WAAW,MAAM,GAAG,EAAE,CAAC,QAAG,CAAC;AAAA,MAC7G;AAAA,IACJ;AAEA,QAAI,MAAM,QAAQ,SAAS,IAAI;AAC3B,cAAQ,IAAI,cAAM,IAAI,kBAAa,MAAM,QAAQ,SAAS,EAAE,OAAO,CAAC;AAAA,IACxE;AAAA,EACJ;AAEA,MAAI,SAAS,MAAM,QAAQ,SAAS,KAAK,CAAC,KAAK;AAC3C,UAAM,YAAY,MAAM,yBAAyB;AAAA,MAC7C;AAAA,MACA,SAAS,aAAa,MAAM,QAAQ,MAAM;AAAA,MAC1C,SAAS;AAAA,IACb,CAAC;AAED,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC7C,aAAO;AAAA,QACH,WAAW;AAAA,QACX,UAAU,MAAM,SAAS;AAAA,QACzB,gBAAgB,MAAM,QAAQ;AAAA,QAC9B,QAAQ;AAAA,QACR,kBAAkB;AAAA,QAClB,sBAAsB;AAAA,MAC1B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,YAAY;AAChB,MAAI,SAAS;AACb,MAAI,mBAAmB;AACvB,MAAI,uBAAuB;AAC3B,QAAM,iBAA2B,CAAC;AAElC,aAAW,CAAC,UAAU,KAAK,KAAK,OAAO,QAAQE,UAAS,MAAM,GAAG;AAC7D,UAAM,eAAe,qBAAqB,KAAK;AAC/C,UAAM,kBAAkB,sBAAsB,KAAK,iBAAiB;AACpE,UAAM,YAAY,gBAAgB,QAAQ;AAE1C,QAAI,iBAAiB;AACjB,YAAM,0BAA0B,UAAU,OAAO,KAAK,MAAM,KAAK,EAAE,MAAM;AAAA,IAC7E;AAEA,eAAW,CAAC,QAAQ,KAAK,OAAO,QAAQ,MAAM,KAAK,GAAG;AAClD,YAAM,eAAe,mBAAmB,MAAM,YAAY,QAAQ;AAClE,YAAM,aAAa,aAAAN,QAAK,KAAK,aAAa,MAAM,YAAY,QAAQ;AACpE,YAAM,aAAa,YAGb,aAAAA,QAAK,KAAK,WAAW,QAAQ,IAG7B,aAAAA,QAAK,KAAK,aAAa,YAAY;AAEzC,UAAI,gBAAgB,YAAY,GAAG;AAC/B;AAAA,MACJ;AAEA,UAAI,YAAY,IAAI,YAAY,GAAG;AAC/B;AAAA,MACJ;AAEA,YAAM,YAAY,WAAW,IAAI,YAAY;AAC7C,YAAM,YAAY,WAAW,IAAI,YAAY;AAE7C,UAAI,CAAC,aAAa,CAAC,WAAW;AAC1B;AAAA,MACJ;AAEA,UAAI,aAAa,CAAC,OAAO;AACrB;AAAA,MACJ;AAEA,UAAI,aAAa,OAAO;AACpB,kBAAU;AAAA,MACd;AAEA,0BAAoB;AAEpB,YAAM,eAAe,MAAM,kBAAAC,QAAG,WAAW,UAAU;AACnD,UAAI,CAAC,cAAc;AACf,gCAAwB;AACxB,cAAM,gBAAgBC,SAAQ,aAAAF,QAAK,SAAS,aAAa,UAAU,CAAC;AACpE,uBAAe,KAAK,aAAa;AACjC,gBAAQ,IAAI,cAAM,OAAO,0CAAqC,aAAa,EAAE,CAAC;AAC9E;AAAA,MACJ;AAEA,UAAI,QAAQ;AACR,cAAM,SAAS,YAAY,cAAc;AACzC,gBAAQ,IAAI,cAAM,IAAI,qBAAqB,MAAM,IAAI,YAAY,EAAE,CAAC;AACpE,qBAAa;AACb;AAAA,MACJ;AAEA,YAAM,kBAAAC,QAAG,UAAU,aAAAD,QAAK,QAAQ,UAAU,CAAC;AAC3C,YAAM,kBAAAC,QAAG,KAAK,YAAY,YAAY,EAAE,WAAW,KAAK,CAAC;AACzD,mBAAa;AAAA,IACjB;AAAA,EACJ;AAEA,MAAI,kBAAkB,eAAe,SAAS,GAAG;AAC7C,UAAM,IAAI,MAAM;AAAA,MACZ;AAAA,MACA,qBAAqB,cAAc;AAAA,IACvC,EAAE,KAAK,IAAI,CAAC;AAAA,EAChB;AAOA,MAAI,CAAC,QAAQ;AACT,UAAM,kBAAAA,QAAG,UAAU,WAAW;AAI9B,UAAM,qBAAqB,aAAAD,QAAK,KAAK,aAAa,eAAe;AACjE,UAAM,kBAAAC,QAAG,UAAU,oBAAoB,8BAA8BK,SAAQ,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC7F,UAAM,kBAAAL,QAAG,WAAW,oBAAoB,IAAI;AAAA,EAChD;AAEA,SAAO;AAAA,IACH;AAAA,IACA,UAAU,YAAY;AAAA,IACtB,gBAAgB,QAAQ,IAAI,WAAW;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;;;AEvdA;AACA,IAAAM,oBAAe;AACf,IAAAC,aAAe;AACf,IAAAC,eAAiB;AAmCjB,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAE9B,IAAM,6BAA4D;AAAA,EAChE,EAAE,WAAW,kBAAkB,UAAU,yBAAyB;AAAA,EAClE,EAAE,WAAW,0BAA0B,UAAU,sBAAsB;AACzE;AAEA,IAAM,uCAAsE;AAAA,EAC1E,EAAE,WAAW,IAAI,UAAU,yBAAyB;AACtD;AAEA,IAAM,wCAAuE;AAAA,EAC3E,EAAE,WAAW,IAAI,UAAU,sBAAsB;AACnD;AAEA,IAAM,6BAA6B,oBAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAED,IAAM,4BAAkF;AAAA,EACtF,EAAE,YAAY,oBAAoB,eAAe,aAAAC,QAAK,KAAK,SAAS,UAAU,YAAY,EAAE;AAAA,EAC5F,EAAE,YAAY,qBAAqB,eAAe,aAAAA,QAAK,KAAK,SAAS,SAAS,mBAAmB,EAAE;AAAA,EACnG,EAAE,YAAY,oBAAoB,eAAe,aAAAA,QAAK,KAAK,SAAS,SAAS,kBAAkB,EAAE;AAAA,EACjG,EAAE,YAAY,4BAA4B,eAAe,aAAAA,QAAK,KAAK,SAAS,SAAS,0BAA0B,EAAE;AAAA,EACjH,EAAE,YAAY,iCAAiC,eAAe,aAAAA,QAAK,KAAK,SAAS,SAAS,+BAA+B,EAAE;AAC7H;AAEO,IAAM,uBAAuB;AAAA,EAClC,yBAAyB;AAAA,EACzB,uBAAuB;AAAA,EACvB,uBAAuB;AAAA,EACvB,gBAAgB,MAAM,KAAK,0BAA0B;AAAA,EACrD,wBAAwB,0BAA0B,IAAI,CAAC,UAAU,MAAM,UAAU;AACnF;AAEA,eAAsB,oBAAoB,OAAmC,CAAC,GAA2B;AACvG,QAAM,SAAS,KAAK,UAAU;AAC9B,QAAM,MAAM,KAAK,OAAO;AACxB,QAAM,QAAQ,KAAK,SAAS;AAC5B,QAAM,WAAW,KAAK,YAAY,QAAQ,IAAI;AAE9C,QAAM,SAAS,cAAc,KAAK;AAClC,QAAM,qBAAqB,MAAM,0BAA0B,QAAQ;AAEnE,QAAM,aAAa,MAAM,sBAAsB;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,WAAW,WAAW,GAAG;AAC3B,YAAQ,IAAI,cAAM,IAAI,8CAAyC,CAAC;AAChE,WAAO;AAAA,MACL;AAAA,MACA,iBAAiB;AAAA,MACjB,SAAS,CAAC;AAAA,MACV,cAAc,CAAC;AAAA,MACf,iBAAiB,CAAC;AAAA,IACpB;AAAA,EACF;AAEA,UAAQ,IAAI,cAAM,KAAK,kCAAkC,CAAC;AAC1D,mBAAiB,YAAY,MAAM;AAEnC,QAAM,eAAyB,CAAC;AAChC,QAAM,kBAA4B,CAAC;AAEnC,aAAW,gBAAgB,QAAQ;AACjC,UAAM,kBAAkB,WAAW,OAAO,CAAC,cAAc,UAAU,UAAU,YAAY;AACzF,QAAI,gBAAgB,WAAW,GAAG;AAChC;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ;AACX,YAAM,YAAY,MAAM,yBAAyB;AAAA,QAC/C;AAAA,QACA,SAAS;AAAA,QACT,SAAS,gCAAgC,YAAY;AAAA,MACvD,CAAC;AAED,UAAI,CAAC,WAAW;AACd,gBAAQ,IAAI,cAAM,OAAO,oBAAe,YAAY,yBAAyB,CAAC;AAC9E;AAAA,MACF;AAAA,IACF;AAEA,eAAW,aAAa,iBAAiB;AACvC,UAAI,UAAU,SAAS,eAAe;AACpC,YAAI,CAAC,QAAQ;AACX,gBAAM,kBAAAC,QAAG,OAAO,UAAU,UAAU;AAAA,QACtC;AACA,qBAAa,KAAK,UAAU,UAAU;AAAA,MACxC;AAEA,UAAI,UAAU,SAAS,2BAA2B;AAChD,YAAI,CAAC,QAAQ;AACX,gBAAM,qBAAqB,UAAU,YAAY,UAAU,mBAAmB,CAAC,CAAC;AAAA,QAClF;AACA,wBAAgB,KAAK,UAAU,UAAU;AAAA,MAC3C;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,IACjB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAA0D;AAC/E,MAAI,UAAU,OAAO;AACnB,WAAO,CAAC,UAAU,SAAS;AAAA,EAC7B;AACA,SAAO,CAAC,KAAK;AACf;AAEA,eAAe,sBAAsB,QAIL;AAC9B,QAAM,aAAiC,CAAC;AAExC,MAAI,OAAO,OAAO,SAAS,QAAQ,GAAG;AACpC,eAAW,KAAK,GAAG,MAAM,qBAAqB,OAAO,kBAAkB,CAAC;AAAA,EAC1E;AAEA,MAAI,OAAO,OAAO,SAAS,SAAS,GAAG;AACrC,eAAW,KAAK,GAAG,MAAM,sBAAsB,OAAO,QAAQ,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEA,eAAe,qBAAqB,oBAAsE;AACxG,QAAM,aAAiC,CAAC;AAExC,QAAM,YAAY,aAAAD,QAAK,KAAK,WAAAE,QAAG,QAAQ,GAAG,SAAS;AACnD,QAAM,YAAY,aAAAF,QAAK,KAAK,WAAW,SAAS;AAChD,QAAM,qBAAqB,aAAAA,QAAK,KAAK,WAAW,eAAe;AAE/D,QAAM,oBAAoB,aAAAA,QAAK,KAAK,WAAW,QAAQ,uBAAuB;AAC9E,MAAI,MAAM,kBAAAC,QAAG,WAAW,iBAAiB,GAAG;AAC1C,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,qBAAqB,aAAAD,QAAK,KAAK,WAAW,SAAS,YAAY;AACrE,MAAI,MAAM,kBAAAC,QAAG,WAAW,kBAAkB,GAAG;AAC3C,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,2BAA2B,aAAAD,QAAK,KAAK,WAAW,gBAAgB,YAAY;AAClF,MAAI,MAAM,kBAAAC,QAAG,WAAW,wBAAwB,GAAG;AACjD,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,QAAM,uBAAuB,aAAAD,QAAK,KAAK,WAAW,wBAAwB;AAC1E,MAAI,MAAM,kBAAkB,sBAAsB,oCAAoC,GAAG;AACvF,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,QAAM,wBAAwB,aAAAA,QAAK,KAAK,WAAW,yBAAyB;AAC5E,MAAI,MAAM,kBAAkB,uBAAuB,qCAAqC,GAAG;AACzF,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,kBAAkB,oBAAoB,0BAA0B,GAAG;AAC3E,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,aAAAA,QAAK,KAAK,WAAAE,QAAG,QAAQ,GAAG,OAAO,SAAS,YAAY;AAC5E,aAAW,KAAK,GAAG,MAAM,iCAAiC;AAAA,IACxD,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,IACd,aAAa;AAAA,EACf,CAAC,CAAC;AAEF,SAAO;AACT;AAEA,eAAe,sBAAsB,UAA+C;AAClF,QAAM,aAAiC,CAAC;AAExC,QAAM,qBAAqB,aAAAF,QAAK,KAAK,UAAU,WAAW,eAAe;AACzE,MAAI,MAAM,kBAAkB,oBAAoB,0BAA0B,GAAG;AAC3E,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,iBAAiB;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,QAAM,kBAAkB,aAAAA,QAAK,KAAK,UAAU,WAAW,OAAO;AAC9D,aAAW,EAAE,YAAY,cAAc,KAAK,2BAA2B;AACrE,UAAM,aAAa,aAAAA,QAAK,KAAK,iBAAiB,UAAU;AACxD,UAAM,gBAAgB,aAAAA,QAAK,KAAK,UAAU,aAAa;AAEvD,QAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAG;AACpC;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,kBAAAA,QAAG,WAAW,aAAa,GAAG;AACvC;AAAA,IACF;AAEA,eAAW,KAAK;AAAA,MACd,OAAO;AAAA,MACP,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,OAAO,iBAAiB,UAAU;AAAA,IACpC,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,eAAe,iCAAiC,QAKhB;AAC9B,MAAI,CAAC,MAAM,kBAAAA,QAAG,WAAW,OAAO,OAAO,GAAG;AACxC,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,OAAO,OAAO;AAC/C,SAAO,QACJ,OAAO,CAAC,UAAU,OAAO,aAAa,IAAI,KAAK,CAAC,EAChD,IAAI,CAAC,WAAW;AAAA,IACf,OAAO,OAAO;AAAA,IACd,MAAM;AAAA,IACN,YAAY,aAAAD,QAAK,KAAK,OAAO,SAAS,KAAK;AAAA,IAC3C,OAAO,GAAG,OAAO,WAAW,GAAG,KAAK;AAAA,EACtC,EAAE;AACN;AAEA,SAAS,iBAAiB,YAAgC,QAAuB;AAC/E,QAAM,UAAoE;AAAA,IACxE,QAAQ,CAAC;AAAA,IACT,SAAS,CAAC;AAAA,EACZ;AAEA,aAAW,aAAa,YAAY;AAClC,YAAQ,UAAU,KAAK,EAAE,KAAK,SAAS;AAAA,EACzC;AAEA,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,OAAO,GAAgE;AACxH,QAAI,SAAS,WAAW,GAAG;AACzB;AAAA,IACF;AAEA,YAAQ,IAAI,cAAM,KAAK,KAAK,SAAS,GAAG,CAAC;AACzC,eAAW,aAAa,UAAU;AAChC,YAAM,SAAS,UAAU,SAAS,4BAA4B,WAAW;AACzE,YAAM,SAAS,SAAS,oBAAoB;AAC5C,cAAQ,IAAI,cAAM,IAAI,cAAS,MAAM,IAAI,MAAM,IAAI,UAAU,KAAK,EAAE,CAAC;AAAA,IACvE;AAAA,EACF;AACA,UAAQ,IAAI,EAAE;AAChB;AAEA,eAAe,kBAAkB,UAAkB,SAA0D;AAC3G,QAAMG,UAAS,MAAM,eAAe,QAAQ;AAC5C,MAAI,CAACA,SAAQ;AACX,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,KAAK,CAAC,EAAE,WAAW,SAAS,MAAM,gBAAgBA,SAAQ,WAAW,QAAQ,CAAC;AAC/F;AAEA,SAAS,gBAAgBA,SAAiC,WAAmB,UAA2B;AACtG,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,YAAYA;AAAA,EACrB;AAEA,QAAM,SAASA,QAAO,SAAS;AAC/B,MAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE,WAAO;AAAA,EACT;AAEA,SAAO,YAAa;AACtB;AAEA,eAAe,qBAAqB,UAAkB,SAAuD;AAC3G,QAAMA,UAAS,MAAM,eAAe,QAAQ;AAC5C,MAAI,CAACA,SAAQ;AACX;AAAA,EACF;AAEA,MAAI,UAAU;AAEd,aAAW,EAAE,WAAW,SAAS,KAAK,SAAS;AAC7C,QAAI,UAAU,WAAW,GAAG;AAC1B,UAAI,YAAYA,SAAQ;AACtB,eAAOA,QAAO,QAAQ;AACtB,kBAAU;AAAA,MACZ;AACA;AAAA,IACF;AAEA,UAAM,SAASA,QAAO,SAAS;AAC/B,QAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,GAAG;AAClE;AAAA,IACF;AAEA,UAAM,eAAe;AACrB,QAAI,EAAE,YAAY,eAAe;AAC/B;AAAA,IACF;AAEA,WAAO,aAAa,QAAQ;AAC5B,cAAU;AAEV,QAAI,OAAO,KAAK,YAAY,EAAE,WAAW,GAAG;AAC1C,aAAOA,QAAO,SAAS;AAAA,IACzB;AAAA,EACF;AAEA,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,QAAM,kBAAAF,QAAG,UAAU,aAAAD,QAAK,QAAQ,QAAQ,CAAC;AACzC,QAAM,kBAAAC,QAAG,UAAU,UAAUE,SAAQ,EAAE,QAAQ,EAAE,CAAC;AACpD;AAEA,eAAe,eAAe,UAA2D;AACvF,MAAI,CAAC,MAAM,kBAAAF,QAAG,WAAW,QAAQ,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,SAAS,MAAM,kBAAAA,QAAG,SAAS,QAAQ;AACzC,QAAI,UAAU,OAAO,WAAW,YAAY,CAAC,MAAM,QAAQ,MAAM,GAAG;AAClE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,eAAe,0BAA0B,UAAwC;AAC/E,QAAM,aAAa;AAAA,IACjB,aAAAD,QAAK,KAAK,UAAU,SAAS,UAAU,SAAS;AAAA,IAChD,aAAAA,QAAK,QAAQ,WAAW,MAAM,MAAM,SAAS,UAAU,SAAS;AAAA,IAChE,aAAAA,QAAK,QAAQ,WAAW,MAAM,MAAM,MAAM,SAAS,UAAU,SAAS;AAAA,EACxE;AAEA,aAAW,aAAa,YAAY;AAClC,QAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG;AACnC;AAAA,IACF;AAEA,UAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,SAAS;AAC1C,UAAM,UAAU,oBAAI,IAAY;AAEhC,eAAW,SAAS,SAAS;AAC3B,YAAM,YAAY,aAAAD,QAAK,KAAK,WAAW,KAAK;AAC5C,WAAK,MAAM,kBAAAC,QAAG,KAAK,SAAS,GAAG,YAAY,GAAG;AAC5C,gBAAQ,IAAI,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,QAAI,QAAQ,OAAO,GAAG;AACpB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO,oBAAI,IAAY;AACzB;;;AC/cA,IAAAG,sBAAmB;AACnB,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AA4BjB,IAAMC,eAAc,CAAC,eAAgC,CAAC,WAAW,SAAS,aAAa;AAEvF,SAAS,SAAS,OAAuB;AACvC,SAAO,oBAAAC,QAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK;AAC/D;AAEA,SAAS,cAAc,UAA0B;AAC/C,QAAM,aAAa,mBAAAC,QAAK,QAAQ,QAAQ;AACxC,QAAM,aAAa,mBAAAA,QAAK,QAAQ,mBAAAA,QAAK,KAAK,mBAAAA,QAAK,QAAQ,wBAAwB,CAAC,GAAG,IAAI,CAAC;AACxF,SAAO,WAAW,WAAW,UAAU,IAAI,aAAa,UAAU,SAAS,UAAU,CAAC;AACxF;AAEA,eAAe,UAAU,OAAyC;AAChE,QAAM,UAAU,mBAAAA,QAAK,KAAK,mBAAAA,QAAK,QAAQ,wBAAwB,CAAC,GAAG,QAAQ,wBAAwB;AACnG,QAAM,kBAAAC,QAAG,UAAU,mBAAAD,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,CAAI;AAC3D;AAEA,eAAsB,oBAAoB,QAIxB;AAChB,QAAM,UAAU;AAAA,IACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,SAAS,OAAO;AAAA,IAChB,KAAK,OAAO;AAAA,IACZ,YAAY,OAAO;AAAA,EACrB,CAAC;AACH;AAEA,eAAe,iBAAiB,MAA+B;AAC7D,QAAM,OAAO,MAAM,kBAAAA,QAAG,MAAM,IAAI,EAAE,MAAM,MAAM,IAAI;AAClD,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,KAAK,YAAY,GAAG;AACvB,WAAO,KAAK,OAAO,IAAI,IAAI;AAAA,EAC7B;AAEA,MAAI,QAAQ;AACZ,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,MAAM,EAAE,eAAe,KAAK,CAAC;AAC9D,aAAW,SAAS,SAAS;AAC3B,QAAI,MAAM,SAAS,eAAe;AAChC;AAAA,IACF;AAEA,aAAS,MAAM,iBAAiB,mBAAAD,QAAK,KAAK,MAAM,MAAM,IAAI,CAAC;AAAA,EAC7D;AAEA,SAAO;AACT;AAEA,eAAe,SAAS,YAAoB,YAAqC;AAC/E,QAAM,kBAAAC,QAAG,OAAO,UAAU;AAC1B,QAAM,kBAAAA,QAAG,KAAK,YAAY,YAAY,EAAE,QAAQH,aAAY,CAAC;AAC7D,SAAO,iBAAiB,UAAU;AACpC;AAEA,eAAsB,+BAA+B,SAAiB,OAAyB,CAAC,GAA6B;AAC3H,QAAM,cAAc,mBAAAE,QAAK,KAAK,SAAS,cAAc;AACrD,QAAM,UAAU,MAAM,kBAAAC,QAAG,SAAS,WAAW;AAC7C,QAAM,mBAAmB,QAAQ;AAEjC,MAAI,CAAC,kBAAkB;AACrB,UAAM,IAAI,MAAM,uCAAuC,WAAW,GAAG;AAAA,EACvE;AAEA,QAAM,mBAAmB,wBAAwB;AACjD,QAAM,YAAY,qBAAqB,gBAAgB;AACvD,QAAM,aAAa,mBAAAD,QAAK,KAAK,SAAS,SAAS,QAAQ;AACvD,QAAM,aAAa;AACnB,QAAM,YAAY,KAAK,IAAI;AAE3B,QAAM,UAAU;AAAA,IACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,QAAQ,cAAc,UAAU;AAAA,IAChC,QAAQ,cAAc,UAAU;AAAA,IAChC,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,EACX,CAAC;AAED,MAAI;AACF,UAAM,eAAe,MAAM,gBAAgB,gBAAgB;AAC3D,QAAI,CAAC,KAAK,SAAS,aAAa,qBAAqB,kBAAkB;AACrE,YAAM,UAAU;AAAA,QACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,YAAY;AAAA,QACZ,QAAQ,cAAc,UAAU;AAAA,QAChC,QAAQ,cAAc,UAAU;AAAA,QAChC,aAAa;AAAA,QACb,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB,SAAS;AAAA,MACX,CAAC;AACD,aAAO,EAAE,kBAAkB,SAAS,MAAM;AAAA,IAC5C;AAEA,QAAI,cAAc;AAClB,eAAW,SAAS,CAAC,WAAW,UAAU,GAAY;AACpD,YAAM,cAAc,mBAAAA,QAAK,KAAK,YAAY,KAAK;AAC/C,YAAM,cAAc,mBAAAA,QAAK,KAAK,YAAY,KAAK;AAC/C,YAAM,iBAAiB,KAAK,IAAI;AAChC,YAAM,SAAS,MAAM,SAAS,aAAa,WAAW;AACtD,qBAAe;AAEf,YAAM,UAAU;AAAA,QACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,WAAW;AAAA,QACX,OAAO,kBAAkB,KAAK;AAAA,QAC9B,YAAY;AAAA,QACZ,QAAQ,cAAc,WAAW;AAAA,QACjC,QAAQ,cAAc,WAAW;AAAA,QACjC,aAAa;AAAA,QACb,YAAY,KAAK,IAAI,IAAI;AAAA,QACzB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,UAAM,kBAAAC,QAAG,OAAO,mBAAAD,QAAK,KAAK,kBAAkB,QAAQ,CAAC;AAErD,UAAM,0BAA0B,MAAM,gBAAgB,gBAAgB;AACtE,UAAM,kBAAAC,QAAG,UAAU,WAAW;AAAA,MAC5B,eAAe;AAAA,MACf,cAAc,wBAAwB;AAAA,MACtC,cAAc,wBAAwB;AAAA,MACtC;AAAA,MACA,eAAe,cAAc,OAAO;AAAA,MACpC,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,IACtC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChB,UAAM,kBAAAA,QAAG,WAAW,WAAW,IAAI;AAEnC,UAAM,UAAU;AAAA,MACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ,cAAc,UAAU;AAAA,MAChC,QAAQ,cAAc,UAAU;AAAA,MAChC;AAAA,MACA,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,SAAS;AAAA,IACX,CAAC;AAED,WAAO,EAAE,kBAAkB,SAAS,KAAK;AAAA,EAC3C,SAASC,SAAO;AACd,UAAM,UAAU;AAAA,MACd,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,QAAQ,cAAc,UAAU;AAAA,MAChC,QAAQ,cAAc,UAAU;AAAA,MAChC,aAAa;AAAA,MACb,YAAY,KAAK,IAAI,IAAI;AAAA,MACzB,SAAS;AAAA,IACX,CAAC;AACD,UAAMA;AAAA,EACR;AACF;;;ACrMA,IAAAC,oBAAe;AACf,IAAAC,kBAAe;AACf,IAAAC,qBAAiB;AAWjB,eAAsB,uBAAuB,OAA6B,CAAC,GAA0C;AACnH,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,eAAe,mBAAAC,QAAK,KAAK,gBAAAC,QAAG,QAAQ,GAAG,OAAO,SAAS,eAAe;AAC5E,QAAM,cAAc,MAAM,sBAAsB,6BAA6B,CAAC;AAC9E,QAAM,iBAAiB,6BAA6B,YAAY,SAAS,CAAC,GAAG,uBAAuB,CAAC;AAErG,QAAM,cAAc;AAAA,IAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ,UAAU,YAAY;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY;AAAA,EACd,CAAC;AAED,QAAM,kBAAkB,MAAM,mBAAmB,YAAY;AAC7D,QAAM,SAAS,MAAM,2BAA2B,iBAAiB,gBAAgB,EAAE,OAAO,CAAC;AAE3F,MAAI,CAAC,OAAO,SAAS;AACnB,UAAM,cAAc;AAAA,MAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,QAAQ,UAAU,YAAY;AAAA,MAC9B,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,KAAK,IAAI,IAAI;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,cAAc,SAAS,OAAO,cAAc,OAAO,aAAa;AAAA,EAC3E;AAEA,MAAI,CAAC,QAAQ;AACX,UAAM,gBAAgB,cAAc,OAAO,QAAQ;AAAA,EACrD;AAEA,QAAM,cAAc;AAAA,IAClB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,QAAQ,UAAU,YAAY;AAAA,IAC9B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,KAAK,IAAI,IAAI;AAAA,EAC3B,CAAC;AAED,SAAO,EAAE,cAAc,SAAS,CAAC,QAAQ,cAAc,OAAO,aAAa;AAC7E;AAEA,eAAe,mBAAmB,cAAyD;AACzF,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACtC,WAAO,CAAC;AAAA,EACV;AAEA,MAAI;AACF,WAAO,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAAA,EACvC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;;;ACxEA,IAAAC,6BAA0B;AAC1B,IAAAC,qBAAiB;AACjB,IAAAC,oBAAe;AAkBf,IAAM,YAAY,mBAAAC,QAAK,KAAK,SAAS,UAAU,QAAQ,OAAO;AAC9D,IAAM,iBAAiB,mBAAAA,QAAK,KAAK,SAAS,QAAQ;AAClD,IAAM,eAAe,mBAAAA,QAAK,KAAK,SAAS,UAAU,WAAW,kBAAkB,WAAW,oBAAoB;AAC9G,IAAM,gBAAgB,mBAAAA,QAAK,KAAK,SAAS,UAAU,WAAW,kBAAkB,WAAW,2BAA2B;AAatH,eAAe,iBAAiB,UAAkB,UAAkD;AAClG,QAAM,UAAU,MAAM,kBAAAC,QAAG,QAAQ,UAAU,EAAE,eAAe,KAAK,CAAC;AAClE,QAAM,SAAmB,CAAC;AAC1B,aAAW,SAAS,SAAS;AAC3B,QAAI,CAAC,MAAM,YAAY,EAAG;AAC1B,QAAI,MAAM,kBAAAA,QAAG,WAAW,mBAAAD,QAAK,KAAK,UAAU,MAAM,MAAM,UAAU,CAAC,EAAG,QAAO,KAAK,MAAM,IAAI;AAAA,EAC9F;AACA,WAAS,SAAS,OAAO,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AACxE,QAAM,kBAAAC,QAAG,UAAU,mBAAAD,QAAK,KAAK,UAAU,WAAW,GAAG,UAAU,EAAE,QAAQ,EAAE,CAAC;AAC9E;AAEA,eAAe,kBAAkB,aAAwC;AACvE,QAAM,YAAY,CAAC,mBAAAA,QAAK,KAAK,aAAa,SAAS,GAAG,mBAAAA,QAAK,KAAK,aAAa,cAAc,CAAC;AAC5F,QAAM,QAAQ,oBAAI,IAAY;AAC9B,aAAW,aAAa,WAAW;AACjC,QAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,SAAS,EAAG;AACrC,UAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AACnE,eAAW,SAAS,SAAS;AAC3B,UAAI,CAAC,MAAM,YAAY,KAAK,oBAAoB,IAAI,MAAM,IAAI,EAAG;AACjE,YAAM,WAAW,mBAAAD,QAAK,KAAK,WAAW,MAAM,IAAI;AAChD,YAAM,sBAAsB,MAAM,kBAAAC,QAAG,WAAW,mBAAAD,QAAK,KAAK,UAAU,kBAAkB,uBAAuB,CAAC;AAC9G,YAAM,kBAAkB,MAAM,kBAAAC,QAAG,WAAW,mBAAAD,QAAK,KAAK,UAAU,uBAAuB,CAAC;AACxF,UAAI,uBAAuB,gBAAiB,OAAM,IAAI,MAAM,IAAI;AAAA,IAClE;AAAA,EACF;AACA,SAAO,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AACnE;AAGA,eAAsB,mBAAmB,aAAuC;AAC9E,OAAK,MAAM,kBAAkB,WAAW,GAAG,SAAS,GAAG;AACrD,WAAO;AAAA,EACT;AACA,SAAQ,MAAM,kBAAAC,QAAG,WAAW,mBAAAD,QAAK,KAAK,aAAa,uBAAuB,CAAC,KACrE,MAAM,kBAAAC,QAAG,WAAW,mBAAAD,QAAK,KAAK,aAAa,WAAW,UAAU,uBAAuB,CAAC;AAChG;AAEA,eAAsB,oBACpB,aACA,MACoC;AACpC,QAAM,QAAkB,CAAC;AACzB,QAAM,gBAA0B,CAAC;AAEjC,QAAM,QAAQ,MAAM,kBAAkB,WAAW;AACjD,QAAM,aAAa,MAAM,SAAS,KAAK,MAAM,mBAAmB,WAAW;AAC3E,MAAI,CAAC,YAAY;AAEf,WAAO,EAAE,YAAY,OAAO,eAAe,gBAAgB,MAAM,MAAM;AAAA,EACzE;AAEA,QAAM,WAAW,mBAAAA,QAAK,KAAK,aAAa,YAAY;AACpD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAClC,UAAM,KAAK,0GAAqG;AAChH,WAAO,EAAE,YAAY,MAAM,eAAe,gBAAgB,MAAM,MAAM;AAAA,EACxE;AAEA,MAAI,CAAC,KAAK,OAAO;AACf,UAAM,KAAK,6DAA6D,MAAM,KAAK,IAAI,KAAK,wBAAwB,GAAG;AACvH,WAAO,EAAE,YAAY,MAAM,eAAe,gBAAgB,MAAM,MAAM;AAAA,EACxE;AAEA,QAAM,WAAW,mBAAAD,QAAK,SAAS,WAAW;AAC1C,QAAM,cAAc,MAAM,SAAS,IAAI,QAAQ,CAAC,EAAE;AAClD,aAAW,QAAQ,aAAa;AAC9B,UAAM,WAAW,OAAO,mBAAAA,QAAK,KAAK,aAAa,WAAW,IAAI,IAAI;AAClE,UAAM,eAAe,WAAW,mBAAAA,QAAK,KAAK,UAAU,WAAW,IAAI;AACnE,UAAM,uBAAuB,gBAAgB,MAAM,kBAAAC,QAAG,WAAW,YAAY,IACzE,MAAM,kBAAAA,QAAG,SAAS,YAAY,EAAE,MAAM,MAAM,IAAI,IAChD;AAEJ,UAAMC,WAAM,sCAAU,WAAW,CAAC,UAAU,QAAQ,GAAG;AAAA,MACrD,KAAK;AAAA,MACL,UAAU;AAAA;AAAA;AAAA,MAGV,KAAK;AAAA,QACH,GAAG,QAAQ;AAAA,QACX,oBAAoB;AAAA,QACpB,GAAI,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;AAAA,MACpC;AAAA,IACF,CAAC;AACD,UAAM,SAAS,GAAGA,KAAI,UAAU,EAAE,GAAGA,KAAI,UAAU,EAAE;AACrD,QAAIA,KAAI,WAAW,GAAG;AACpB,YAAM,KAAK,yBAAyB,IAAI,+BAA0BA,KAAI,UAAU,IAAI,KAAK,CAAC,EAAE;AAC5F;AAAA,IACF;AACA,QAAIA,KAAI,WAAW,KAAK,YAAY,wBAAwB,CAAC,MAAM,QAAQ,oBAAoB,GAAG;AAChG,YAAM,iBAAiB,UAAU,oBAAoB;AACrD,YAAM,KAAK,yCAAyC,IAAI,IAAI;AAAA,IAC9D;AACA,UAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,QAAI,MAAM,KAAK,UAAQ,KAAK,WAAW,WAAW,CAAC,GAAG;AACpD,oBAAc,KAAK,QAAQ,QAAQ;AAAA,IACrC;AACA,eAAW,QAAQ,OAAO;AACxB,UAAI,KAAK,WAAW,WAAW,KAAK,KAAK,WAAW,WAAW,KAAK,KAAK,WAAW,WAAW,KAAK,KAAK,SAAS,SAAS,GAAG;AAC5H,cAAM,KAAK,mBAAmB,KAAK,KAAK,CAAC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,cAAc,SAAS,EAAG,OAAM,KAAK,+DAA+D;AAKxG,QAAM,yBAAyB,aAAa,KAAK;AAEjD,SAAO,EAAE,YAAY,MAAM,eAAe,gBAAgB,cAAc,WAAW,GAAG,MAAM;AAC9F;AAOA,eAAe,yBAAyB,aAAqB,OAAgC;AAC3F,QAAM,YAAY,mBAAAF,QAAK,KAAK,aAAa,aAAa;AACtD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG;AACnC;AAAA,EACF;AAEA,QAAMC,WAAM,sCAAU,WAAW,CAAC,WAAW,cAAc,GAAG;AAAA,IAC5D,KAAK;AAAA,IACL,UAAU;AAAA,IACV,KAAK,EAAE,GAAG,QAAQ,KAAK,oBAAoB,YAAY;AAAA,EACzD,CAAC;AACD,MAAIA,KAAI,WAAW,GAAG;AACpB,UAAM,KAAK,gEAA2DA,KAAI,UAAU,IAAI,KAAK,KAAK,iBAAiB,EAAE;AAAA,EACvH;AACF;;;AC9JA,IAAAC,wBAA0B;AAC1B,IAAAC,oBAAe;AACf;AACA,IAAAC,aAAe;AACf,IAAAC,eAAiB;;;ACdjB,IAAAC,oBAAe;AACf,IAAAC,mBAAe;AACf,IAAAC,qBAAiB;AAgBV,SAAS,wBAAwB,SAAkD;AACxF,SAAO,QAAQ,UAAU,WAAW,uBAAuB,wBAAwB,CAAC,IAAI;AAC1F;AAEA,eAAe,SAAS,MAAc,QAAkC;AACtE,QAAM,OAAO,MAAM,kBAAAC,QAAG,MAAM,IAAI,EAAE,MAAM,MAAM,IAAI;AAClD,MAAI,CAAC,MAAM,eAAe,EAAG,QAAO;AACpC,SAAO,mBAAAC,QAAK,QAAQ,mBAAAA,QAAK,QAAQ,IAAI,GAAG,MAAM,kBAAAD,QAAG,SAAS,IAAI,CAAC,MAAM,mBAAAC,QAAK,QAAQ,MAAM,KAAK,MAAM,kBAAAD,QAAG,WAAW,MAAM;AACzH;AAEA,eAAe,gBAAgB,KAA+B;AAC5D,QAAM,OAAO,MAAM,kBAAAA,QAAG,MAAM,GAAG,EAAE,MAAM,MAAM,IAAI;AACjD,SAAO,QAAQ,MAAM,YAAY,KAAK,CAAC,KAAK,eAAe,CAAC;AAC9D;AAEA,eAAe,eAAe,aAAqB,SAA4C;AAC7F,QAAM,QAAQ,MAAM,gBAAgB,kBAAkB,WAAW,CAAC;AAClE,QAAM,MAAM,mBAAAC,QAAK,KAAK,aAAa,YAAY,WAAW,YAAY,OAAO,QAAQ;AACrF,aAAW,CAAC,MAAM,cAAc,KAAK,OAAO,QAAQ,MAAM,aAAa,OAAO,CAAC,GAAG;AAChF,UAAM,WAAW,mBAAAA,QAAK,KAAK,KAAK,IAAI;AACpC,UAAM,OAAO,MAAM,kBAAAD,QAAG,MAAM,QAAQ,EAAE,MAAM,MAAM,IAAI;AACtD,QAAI,CAAC,MAAM,eAAe,EAAG,QAAO;AACpC,UAAM,eAAe,mBAAAC,QAAK,QAAQ,mBAAAA,QAAK,QAAQ,QAAQ,GAAG,MAAM,kBAAAD,QAAG,SAAS,QAAQ,CAAC;AACrF,UAAM,iBAAiB,mBAAAC,QAAK,QAAQ,aAAa,cAAc;AAC/D,QAAI,iBAAiB,kBAAkB,CAAC,MAAM,kBAAAD,QAAG,WAAW,cAAc,EAAG,QAAO;AAAA,EACtF;AACA,SAAO;AACT;AAEA,eAAsB,wBAAwB,aAAsD;AAClG,QAAM,gBAAgB,uBAAuB,wBAAwB,CAAC;AACtE,QAAM,2BAA2B,MAAM,SAAS,mBAAAC,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,WAAW,QAAQ,GAAG,aAAa;AAC3G,QAAM,uBAAuB,MAAM,SAAS,mBAAAD,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,OAAO,SAAS,QAAQ,GAAG,aAAa;AAC5G,QAAM,2BAA2B,MAAM,gBAAgB,mBAAAD,QAAK,KAAK,aAAa,WAAW,QAAQ,CAAC,KAAK,MAAM,eAAe,aAAa,QAAQ;AACjJ,QAAM,uBAAuB,MAAM,gBAAgB,mBAAAA,QAAK,KAAK,aAAa,OAAO,QAAQ,CAAC,KAAK,MAAM,eAAe,aAAa,IAAI;AACrI,QAAM,4BAA4B,2BAA2B,UAAU;AACvE,QAAM,wBAAwB,uBAAuB,UAAU;AAC/D,SAAO;AAAA,IACL,aAAa,4BAA4B;AAAA,IACzC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,CAAC;AAAA,IAChB;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAsB,yBAAyB,aAAqB,UAAoC,CAAC,GAAkB;AACzH,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAME,SAAQ,MAAM,wBAAwB,WAAW;AACvD,QAAM,WAAqB,CAAC;AAC5B,OAAK,UAAU,YAAY,UAAU,WAAW,CAACA,OAAM,yBAA0B,UAAS,KAAK,qCAAqC,wBAAwB,EAAE,OAAO,SAAS,CAAC,CAAC,EAAE;AAClL,OAAK,UAAU,YAAY,UAAU,WAAW,CAACA,OAAM,qBAAsB,UAAS,KAAK,uCAAuC,wBAAwB,EAAE,OAAO,SAAS,CAAC,CAAC,EAAE;AAChL,OAAK,UAAU,aAAa,UAAU,WAAW,CAACA,OAAM,yBAA0B,UAAS,KAAK,mDAAmD;AACnJ,OAAK,UAAU,aAAa,UAAU,WAAW,CAACA,OAAM,qBAAsB,UAAS,KAAK,+CAA+C;AAC3I,MAAI,SAAS,SAAS,EAAG,OAAM,IAAI,MAAM,qCAAqC,SAAS,KAAK,IAAI,CAAC,EAAE;AACrG;;;ADVA,SAAS,yBAAwC;AAC7C,SAAO,cAAc;AACzB;AAEA,SAAS,kBAAkB,OAA8C;AACrE,MAAI,QAAQ;AAEZ,aAAW,YAAY,OAAO,OAAO,KAAK,GAAG;AACzC,eAAW,WAAW,UAAU;AAC5B,eAAS,QAAQ,OAAO,UAAU;AAAA,IACtC;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,mBAAmB,OAA+C;AACvE,aAAW,YAAY,OAAO,OAAO,KAAK,GAAG;AACzC,eAAW,WAAW,UAAU;AAC5B,iBAAW,QAAQ,QAAQ,SAAS,CAAC,GAAG;AACpC,YAAI,KAAK,SAAS,UAAW;AAC7B,YAAI,OAAO,KAAK,YAAY,SAAU;AACtC,cAAM,oBAAoB,KAAK,QAAQ,QAAQ,OAAO,GAAG;AACzD,YAAI,kBAAkB,SAAS,eAAe,EAAG,QAAO;AAAA,MAC5D;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,+BAA+B,cAKtC;AACE,MAAI;AACA,UAAM,WAAW,kBAAAC,QAAG,aAAa,YAAY;AAC7C,UAAM,QAAQ,SAAS,SAAS,CAAC;AACjC,UAAM,cAAc,OAAO,KAAK,KAAK,EAAE;AACvC,UAAM,eAAe,kBAAkB,KAAK;AAC5C,UAAM,aAAa,cAAc,KAAK,eAAe,KAAK,mBAAmB,KAAK;AAElF,WAAO;AAAA,MACH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,EACJ,QAAQ;AACJ,WAAO;AAAA,MACH,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,SAAS,oBAAoB,aAK3B;AACE,QAAM,sBAAsB,aAAAC,QAAK,KAAK,aAAa,WAAW,eAAe;AAC7E,QAAM,uBAAuB,aAAAA,QAAK,KAAK,WAAAC,QAAG,QAAQ,GAAG,WAAW,eAAe;AAC/E,QAAM,iBAAiB,wBAAwB,uBACzC,CAAC,mBAAmB,IACpB,CAAC,qBAAqB,oBAAoB;AAEhD,MAAI,iBAAiB;AAAA,IACjB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,cAAc;AAAA,IACd,cAAc;AAAA,EAClB;AAEA,aAAW,gBAAgB,gBAAgB;AACvC,QAAI,CAAC,kBAAAF,QAAG,eAAe,YAAY,GAAG;AAClC;AAAA,IACJ;AAEA,UAAM,SAAS,+BAA+B,YAAY;AAC1D,QAAI,OAAO,YAAY;AACnB,aAAO;AAAA,IACX;AAEA,QAAI,OAAO,eAAe,eAAe,gBAAgB,OAAO,cAAc,eAAe,aAAa;AACtG,uBAAiB;AAAA,IACrB;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,eAAe,gBAAgB,aAA6C;AACxE,QAAM,YAAY,oCAAoC;AAEtD,MAAI,CAAC,aAAa,CAAC,MAAM,kBAAAA,QAAG,WAAW,SAAS,GAAG;AAE/C,WAAO;AAAA,MACH,YAAY,CAAC;AAAA,MACb,UAAU,CAAC;AAAA,MACX,mBAAmB,CAAC;AAAA,MACpB,iBAAiB,CAAC;AAAA,MAClB,oBAAoB,CAAC;AAAA,MACrB,iBAAiB,CAAC;AAAA,MAClB,oBAAoB;AAAA,MACpB,YAAY;AAAA,IAChB;AAAA,EACJ;AAKA,OAAK;AACL,SAAO,MAAM,mBAAmB,WAAW,SAAS;AACxD;AAEA,SAAS,uBAAuB,aAA2G;AACvI,QAAM,mBAAmB,kBAAAA,QAAG,eAAe,aAAAC,QAAK,KAAK,aAAa,QAAQ,CAAC;AAE3E,QAAM,eAAW,iCAAU,YAAY,CAAC,QAAQ,GAAG,EAAE,KAAK,aAAa,UAAU,QAAQ,SAAS,IAAK,CAAC;AACxG,QAAM,SAAS,GAAG,SAAS,UAAU,EAAE;AAAA,EAAK,SAAS,UAAU,EAAE,GAAG,YAAY;AAChF,QAAM,kBAAkB,SAAS,WAAW,KACxC,CAAC,OAAO,SAAS,OAAO,KACxB,CAAC,OAAO,SAAS,aAAa,KAC9B,CAAC,OAAO,SAAS,SAAS;AAE9B,QAAM,WAAW,kBAAAD,QAAG,eAAe,aAAAC,QAAK,KAAK,aAAa,WAAW,CAAC;AACtE,QAAM,WAAW,kBAAAD,QAAG,eAAe,aAAAC,QAAK,KAAK,aAAa,WAAW,CAAC;AACtE,QAAM,qBAAqB,YAAY;AAEvC,SAAO,EAAE,kBAAkB,iBAAiB,mBAAmB;AACnE;AAIA,eAAsB,oBAAoB,aAAkD;AACxF,QAAM,cAAc,uBAAuB;AAC3C,QAAM,eAAe,oBAAoB,WAAW;AACpD,QAAM,SAAS,MAAM,gBAAgB,WAAW;AAChD,QAAM,gBAAgB,uBAAuB,WAAW;AACxD,QAAM,sBAAsB,MAAM,wBAAwB,WAAW;AAErE,QAAM,YACF,YAAY,sBACZ,aAAa,cACb,OAAO,sBACP,oBAAoB,eACpB,oBAAoB,4BACpB,oBAAoB,wBACpB,oBAAoB,8BAA8B,aAClD,oBAAoB,0BAA0B,aAC9C,cAAc;AAElB,SAAO;AAAA,IACH,kBAAkB;AAAA,MACd,oBAAoB,YAAY;AAAA,MAChC,iBAAiB,YAAY,gBAAgB,IAAI,OAAK,EAAE,IAAI,WAAW;AAAA,IAC3E;AAAA,IACA,eAAe;AAAA,IACf,WAAW;AAAA,MACP,oBAAoB,OAAO;AAAA,MAC3B,mBAAmB,OAAO,kBAAkB,OAAO,OAAK,EAAE,IAAI,QAAQ,EAAE,IAAI,OAAK,EAAE,IAAI,WAAW;AAAA,MAClG,iBAAiB,OAAO,gBAAgB,OAAO,OAAK,EAAE,IAAI,QAAQ,EAAE,IAAI,OAAK,EAAE,IAAI,WAAW;AAAA,IAClG;AAAA,IACA,eAAe;AAAA,MACX,aAAa,oBAAoB;AAAA,MACjC,0BAA0B,oBAAoB;AAAA,MAC9C,sBAAsB,oBAAoB;AAAA,MAC1C,2BAA2B,oBAAoB;AAAA,MAC/C,uBAAuB,oBAAoB;AAAA,IAE/C;AAAA,IACA,kBAAkB;AAAA,IAClB;AAAA,EACJ;AACJ;AAIO,SAAS,0BAA0B,QAAkC;AACxE,UAAQ,IAAI,cAAM,KAAK,0BAA0B,CAAC;AAClD,UAAQ,IAAI,cAAM,IAAI,OAAO,SAAI,OAAO,EAAE,CAAC,CAAC;AAG5C,QAAM,SAAS,OAAO,iBAAiB,qBAAqB,IAAI,KAAK,IAAI;AACzE,QAAM,UAAU;AAChB,MAAI,OAAO,iBAAiB,oBAAoB;AAC5C,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,EAAE;AAAA,EACxC,OAAO;AACH,UAAM,UAAU,OAAO,iBAAiB,gBAAgB,KAAK,IAAI;AACjE,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,oBAAe,OAAO,EAAE;AAAA,EAC9D;AAGA,QAAM,SAAS,OAAO,cAAc,aAAa,IAAI,KAAK,IAAI;AAC9D,QAAM,UAAU;AAChB,MAAI,OAAO,cAAc,YAAY;AACjC,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,EAAE;AAAA,EACxC,OAAO;AACH,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,yCAAoC,OAAO,cAAc,YAAY,EAAE;AAAA,EAC7G;AAGA,QAAM,SAAS,OAAO,UAAU,qBAAqB,IAAI,KAAK,IAAI;AAClE,QAAM,UAAU;AAChB,MAAI,OAAO,UAAU,oBAAoB;AACrC,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,EAAE;AAAA,EACxC,OAAO;AACH,UAAM,QAAkB,CAAC;AACzB,QAAI,OAAO,UAAU,kBAAkB,SAAS,GAAG;AAC/C,YAAM,KAAK,eAAe,OAAO,UAAU,kBAAkB,KAAK,IAAI,CAAC,EAAE;AAAA,IAC7E;AACA,QAAI,OAAO,UAAU,gBAAgB,SAAS,GAAG;AAC7C,YAAM,KAAK,aAAa,OAAO,UAAU,gBAAgB,KAAK,IAAI,CAAC,EAAE;AAAA,IACzE;AACA,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,WAAM,MAAM,KAAK,IAAI,CAAC,EAAE;AAAA,EAC9D;AAGA,QAAM,cAAwB,CAAC;AAC/B,MAAI,CAAC,OAAO,cAAc,YAAa,aAAY,KAAK,QAAQ;AAChE,MAAI,CAAC,OAAO,cAAc,yBAA0B,aAAY,KAAK,0BAA0B;AAC/F,MAAI,CAAC,OAAO,cAAc,qBAAsB,aAAY,KAAK,4BAA4B;AAC7F,MAAI,OAAO,cAAc,8BAA8B,UAAW,aAAY,KAAK,wBAAwB;AAC3G,MAAI,OAAO,cAAc,0BAA0B,UAAW,aAAY,KAAK,6BAA6B;AAC5G,QAAM,SAAS,YAAY,WAAW,IAAI,IAAI,KAAK,IAAI;AACvD,MAAI,YAAY,WAAW,GAAG;AAC1B,YAAQ,IAAI,KAAK,MAAM,iBAAiB;AAAA,EAC5C,OAAO;AACH,YAAQ,IAAI,KAAK,MAAM,sCAAiC,YAAY,KAAK,IAAI,CAAC,EAAE;AAAA,EACpF;AAIA,QAAM,UAAoB,CAAC;AAC3B,MAAI,CAAC,OAAO,iBAAiB,iBAAkB,SAAQ,KAAK,OAAO;AACnE,MAAI,CAAC,OAAO,iBAAiB,gBAAiB,SAAQ,KAAK,UAAU;AACrE,MAAI,CAAC,OAAO,iBAAiB,mBAAoB,SAAQ,KAAK,SAAS;AACvE,QAAM,SAAS,QAAQ,WAAW,IAAI,IAAI,KAAK,IAAI;AACnD,QAAM,UAAU;AAChB,MAAI,QAAQ,WAAW,GAAG;AACtB,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,EAAE;AAAA,EACxC,OAAO;AACH,YAAQ,IAAI,KAAK,MAAM,IAAI,OAAO,uBAAkB,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,EAC5E;AAEA,UAAQ,IAAI,cAAM,IAAI,OAAO,SAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,MAAI,OAAO,WAAW;AAClB,YAAQ,IAAI,EAAE,QAAQ,gDAA2C,CAAC;AAAA,EACtE,OAAO;AACH,YAAQ,IAAI,EAAE,QAAQ,iEAA4D,CAAC;AAAA,EACvF;AACJ;;;AEpUA,IAAAE,oBAAe;AACf,IAAAC,qBAAiB;AAEjB,IAAM,uBAAuB;AAC7B,IAAM,0BAA0B;AAChC,IAAM,mBAAmB;AACzB,IAAM,sBAAsB,mBAAAC,QAAK,KAAK,OAAO,UAAU;AA6BvD,SAAS,qBAAqB,QAA0D;AACpF,QAAM,UAAU,OAAO,QAAQ,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,WAAW,GAAG,CAAC;AAC7E,SAAO,OAAO,YAAY,OAAO;AACrC;AAEA,SAAS,eAAeC,SAAqC;AACzD,MAAI,CAACA,QAAO,cAAc,OAAOA,QAAO,eAAe,UAAU;AAC7D,WAAO,CAAC;AAAA,EACZ;AAEA,SAAO,OAAO,QAAQA,QAAO,UAAU,EAAE,OAAqB,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;AAClF,QAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAC7D,aAAO;AAAA,IACX;AACA,QAAI,IAAI,IAAI,qBAAqB,KAAgC;AACjE,WAAO;AAAA,EACX,GAAG,CAAC,CAAC;AACT;AAEA,SAAS,sBAAsB,MAAoBC,WAAsC;AACrF,QAAM,SAAuB,EAAE,GAAG,KAAK;AAEvC,aAAW,CAAC,MAAM,MAAM,KAAK,OAAO,QAAQA,SAAQ,GAAG;AACnD,QAAI,EAAE,QAAQ,SAAS;AACnB,aAAO,IAAI,IAAI;AAAA,IACnB;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,mBAAmB,OAA0B;AAClD,MAAI,OAAO,UAAU,UAAU;AAC3B,UAAM,UAAU,MAAM,SAAS,qBAAqB;AACpD,WAAO,MAAM,KAAK,SAAS,CAAC,UAAU,MAAM,CAAC,CAAC;AAAA,EAClD;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACtB,WAAO,MAAM,QAAQ,CAAC,SAAS,mBAAmB,IAAI,CAAC;AAAA,EAC3D;AAEA,MAAI,SAAS,OAAO,UAAU,UAAU;AACpC,WAAO,OAAO,OAAO,KAAK,EAAE,QAAQ,CAAC,SAAS,mBAAmB,IAAI,CAAC;AAAA,EAC1E;AAEA,SAAO,CAAC;AACZ;AAEA,SAAS,sBAAsB,SAAiC;AAC5D,QAAM,WAAqB,CAAC;AAE5B,aAAW,CAAC,MAAMD,OAAM,KAAK,OAAO,QAAQ,OAAO,GAAG;AAClD,UAAM,eAAe,MAAM,KAAK,IAAI,IAAI,mBAAmBA,OAAM,CAAC,CAAC;AACnE,UAAM,cAAc,aAAa,OAAO,CAAC,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC;AAE1E,QAAI,YAAY,WAAW,EAAG;AAE9B,aAAS,KAAK,GAAG,IAAI,aAAa,YAAY,KAAK,IAAI,CAAC,EAAE;AAAA,EAC9D;AAEA,SAAO;AACX;AAEA,eAAsB,qBAAqB,aAAqB,UAAiC,CAAC,GAAkC;AAChI,QAAM,EAAE,SAAS,OAAO,uBAAuB,MAAM,IAAI;AACzD,QAAM,gBAAgB,mBAAAD,QAAK,KAAK,aAAa,SAAS,QAAQ;AAC9D,QAAM,iBAAiB,mBAAAA,QAAK,KAAK,eAAe,oBAAoB;AACpE,QAAM,gBAAgB,mBAAAA,QAAK,KAAK,aAAa,gBAAgB;AAE7D,MAAI,CAAC,MAAM,kBAAAG,QAAG,WAAW,cAAc,GAAG;AACtC,WAAO;AAAA,MACH,cAAc,CAAC;AAAA,MACf,oBAAoB,CAAC,qCAAqC,cAAc,EAAE;AAAA,MAC1E,WAAW;AAAA,MACX,aAAa;AAAA,MACb,uBAAuB;AAAA,MACvB,SAAS;AAAA,IACb;AAAA,EACJ;AAEA,QAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,cAAc;AAGnD,QAAM,iBAAgC,EAAE,YAAY,CAAC,EAAE;AAEvD,QAAM,mBAAmB,sBAAsB,eAAe,UAAU,GAAG,eAAe,cAAc,CAAC;AAEzG,QAAM,iBAAiB,MAAM,kBAAAA,QAAG,WAAW,aAAa;AACxD,MAAI,kBAAkB,sBAAsB;AACxC,WAAO;AAAA,MACH,cAAc,CAAC;AAAA,MACf,oBAAoB,CAAC;AAAA,MACrB,WAAW;AAAA,MACX,aAAa;AAAA,MACb,uBAAuB;AAAA,MACvB,SAAS;AAAA,IACb;AAAA,EACJ;AAEA,QAAM,qBAAqB,sBAAsB,gBAAgB;AACjE,QAAM,iBAAiB,iBAChB,MAAM,kBAAAA,QAAG,SAAS,aAAa,IAChC,CAAC;AAEP,QAAM,kBAAkB,eAAe,cAAc,OAAO,eAAe,eAAe,WACpF,eAAe,aACf,CAAC;AAEP,QAAM,eAAe,OAAO,KAAK,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,gBAAgB;AAC9F,QAAM,gBAA8B;AAAA,IAChC,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAEA,QAAM,eAAiC;AAAA,IACnC,GAAG;AAAA,IACH,YAAY;AAAA,EAChB;AAEA,QAAM,YAAY,aAAa,SAAS,KAAK,CAAC;AAE9C,MAAI,CAAC,UAAU,WAAW;AACtB,UAAM,kBAAAA,QAAG,UAAU,eAAe,cAAc,EAAE,QAAQ,EAAE,CAAC;AAAA,EACjE;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd,uBAAuB;AAAA,IACvB,SAAS;AAAA,EACb;AACJ;AAEA,eAAsB,gBAAgB,aAAqB,UAAiC,CAAC,GAAkC;AAC3H,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,gBAAgB,mBAAAH,QAAK,KAAK,aAAa,SAAS,QAAQ;AAC9D,QAAM,iBAAiB,mBAAAA,QAAK,KAAK,eAAe,uBAAuB;AACvE,QAAM,gBAAgB,mBAAAA,QAAK,KAAK,aAAa,mBAAmB;AAEhE,MAAI,CAAC,MAAM,kBAAAG,QAAG,WAAW,cAAc,GAAG;AACtC,WAAO;AAAA,MACH,cAAc,CAAC;AAAA,MACf,oBAAoB,CAAC,qCAAqC,cAAc,EAAE;AAAA,MAC1E,WAAW;AAAA,MACX,aAAa;AAAA,MACb,uBAAuB;AAAA,MACvB,SAAS;AAAA,IACb;AAAA,EACJ;AAEA,QAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,cAAc;AACnD,QAAM,mBAAmB,eAAe,UAAU;AAClD,QAAM,qBAAqB,sBAAsB,gBAAgB;AAEjE,QAAM,iBAAiB,MAAM,kBAAAA,QAAG,WAAW,aAAa;AACxD,QAAM,iBAAiB,iBAChB,MAAM,kBAAAA,QAAG,SAAS,aAAa,IAChC,CAAC;AAEP,QAAM,kBAAkB,eAAe,cAAc,OAAO,eAAe,eAAe,WACpF,eAAe,aACf,CAAC;AAEP,QAAM,eAAe,OAAO,KAAK,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,gBAAgB;AAC9F,QAAM,gBAA8B;AAAA,IAChC,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAEA,QAAM,eAAiC;AAAA,IACnC,GAAG;AAAA,IACH,YAAY;AAAA,EAChB;AAEA,QAAM,YAAY,aAAa,SAAS,KAAK,CAAC;AAE9C,MAAI,CAAC,UAAU,WAAW;AACtB,UAAM,kBAAAA,QAAG,UAAU,mBAAAH,QAAK,QAAQ,aAAa,CAAC;AAC9C,UAAM,kBAAAG,QAAG,UAAU,eAAe,cAAc,EAAE,QAAQ,EAAE,CAAC;AAAA,EACjE;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa,CAAC;AAAA,IACd,uBAAuB;AAAA,IACvB,SAAS;AAAA,EACb;AACJ;;;AClOA,IAAAC,aAAe;AACf,IAAAC,gBAAiB;AACjB,IAAAC,oBAAe;;;ACDf,IAAAC,oBAAkC;AAClC,IAAAC,uBAAoB;AACpB,IAAAC,kBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,sBAAmB;AACnB,yBAAmB;;;ACNnB,IAAMC,YAAW,WAAS;AACzB,QAAM,OAAO,OAAO;AACpB,SAAO,UAAU,SAAS,SAAS,YAAY,SAAS;AACzD;AAIA,IAAM,iBAAiB,oBAAI,IAAI;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAED,IAAM,SAAS,IAAI,IAAI,YAAY;AAEnC,SAAS,gBAAgBC,QAAM;AAC9B,QAAM,QAAQ,CAAC;AACf,MAAI,iBAAiB;AACrB,MAAI,cAAc;AAClB,MAAI,aAAa;AAEjB,aAAW,aAAaA,QAAM;AAC7B,YAAQ,WAAW;AAAA,MAClB,KAAK,MAAM;AACV,YAAI,gBAAgB,SAAS;AAC5B,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QAChD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACnD;AAEA,YAAI,YAAY;AACf,4BAAkB;AAAA,QACnB;AAEA,sBAAc;AACd,qBAAa,CAAC;AACd;AAAA,MACD;AAAA,MAEA,KAAK,KAAK;AACT,YAAI,gBAAgB,SAAS;AAC5B,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QAChD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,wBAAc;AACd;AAAA,QACD;AAEA,YAAI,YAAY;AACf,uBAAa;AACb,4BAAkB;AAClB;AAAA,QACD;AAEA,YAAI,eAAe,IAAI,cAAc,GAAG;AACvC,iBAAO,CAAC;AAAA,QACT;AAEA,cAAM,KAAK,cAAc;AACzB,yBAAiB;AACjB,sBAAc;AACd;AAAA,MACD;AAAA,MAEA,KAAK,KAAK;AACT,YAAI,gBAAgB,SAAS;AAC5B,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QAChD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,wBAAc;AACd;AAAA,QACD;AAEA,YAAI,YAAY;AACf,uBAAa;AACb,4BAAkB;AAClB;AAAA,QACD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,cAAI,eAAe,IAAI,cAAc,GAAG;AACvC,mBAAO,CAAC;AAAA,UACT;AAEA,gBAAM,KAAK,cAAc;AACzB,2BAAiB;AAAA,QAClB;AAEA,sBAAc;AACd;AAAA,MACD;AAAA,MAEA,KAAK,KAAK;AACT,YAAI,gBAAgB,SAAS;AAC5B,gBAAM,KAAK,OAAO,SAAS,gBAAgB,EAAE,CAAC;AAC9C,2BAAiB;AACjB,wBAAc;AACd;AAAA,QACD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACnD;AAAA,MAGD;AAAA,MAEA,SAAS;AACR,YAAI,gBAAgB,WAAW,CAAC,OAAO,IAAI,SAAS,GAAG;AACtD,gBAAM,IAAI,MAAM,+BAA+B;AAAA,QAChD;AAEA,YAAI,gBAAgB,YAAY;AAC/B,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACnD;AAEA,YAAI,gBAAgB,SAAS;AAC5B,wBAAc;AAAA,QACf;AAEA,YAAI,YAAY;AACf,uBAAa;AACb,4BAAkB;AAAA,QACnB;AAEA,0BAAkB;AAAA,MACnB;AAAA,IACD;AAAA,EACD;AAEA,MAAI,YAAY;AACf,sBAAkB;AAAA,EACnB;AAEA,UAAQ,aAAa;AAAA,IACpB,KAAK,YAAY;AAChB,UAAI,eAAe,IAAI,cAAc,GAAG;AACvC,eAAO,CAAC;AAAA,MACT;AAEA,YAAM,KAAK,cAAc;AAEzB;AAAA,IACD;AAAA,IAEA,KAAK,SAAS;AACb,YAAM,IAAI,MAAM,sBAAsB;AAAA,IACvC;AAAA,IAEA,KAAK,SAAS;AACb,YAAM,KAAK,EAAE;AAEb;AAAA,IACD;AAAA,EAED;AAEA,SAAO;AACR;AAEA,SAAS,cAAcC,SAAQ,KAAK;AACnC,MAAI,OAAO,QAAQ,YAAY,MAAM,QAAQA,OAAM,GAAG;AACrD,UAAM,QAAQ,OAAO,SAAS,KAAK,EAAE;AACrC,WAAO,OAAO,UAAU,KAAK,KAAKA,QAAO,KAAK,MAAMA,QAAO,GAAG;AAAA,EAC/D;AAEA,SAAO;AACR;AAEA,SAAS,qBAAqBA,SAAQ,KAAK;AAC1C,MAAI,cAAcA,SAAQ,GAAG,GAAG;AAC/B,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC1C;AACD;AAEO,SAAS,YAAYA,SAAQD,QAAM,OAAO;AAChD,MAAI,CAACE,UAASD,OAAM,KAAK,OAAOD,WAAS,UAAU;AAClD,WAAO,UAAU,SAAYC,UAAS;AAAA,EACvC;AAEA,QAAM,YAAY,gBAAgBD,MAAI;AACtC,MAAI,UAAU,WAAW,GAAG;AAC3B,WAAO;AAAA,EACR;AAEA,WAAS,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;AACtD,UAAM,MAAM,UAAU,KAAK;AAE3B,QAAI,cAAcC,SAAQ,GAAG,GAAG;AAC/B,MAAAA,UAAS,UAAU,UAAU,SAAS,IAAI,SAAY;AAAA,IACvD,OAAO;AACN,MAAAA,UAASA,QAAO,GAAG;AAAA,IACpB;AAEA,QAAIA,YAAW,UAAaA,YAAW,MAAM;AAM5C,UAAI,UAAU,UAAU,SAAS,GAAG;AACnC,eAAO;AAAA,MACR;AAEA;AAAA,IACD;AAAA,EACD;AAEA,SAAOA,YAAW,SAAY,QAAQA;AACvC;AAEO,SAAS,YAAYA,SAAQD,QAAM,OAAO;AAChD,MAAI,CAACE,UAASD,OAAM,KAAK,OAAOD,WAAS,UAAU;AAClD,WAAOC;AAAA,EACR;AAEA,QAAM,OAAOA;AACb,QAAM,YAAY,gBAAgBD,MAAI;AAEtC,WAAS,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;AACtD,UAAM,MAAM,UAAU,KAAK;AAE3B,yBAAqBC,SAAQ,GAAG;AAEhC,QAAI,UAAU,UAAU,SAAS,GAAG;AACnC,MAAAA,QAAO,GAAG,IAAI;AAAA,IACf,WAAW,CAACC,UAASD,QAAO,GAAG,CAAC,GAAG;AAClC,MAAAA,QAAO,GAAG,IAAI,OAAO,UAAU,QAAQ,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC;AAAA,IAChE;AAEA,IAAAA,UAASA,QAAO,GAAG;AAAA,EACpB;AAEA,SAAO;AACR;AAEO,SAAS,eAAeA,SAAQD,QAAM;AAC5C,MAAI,CAACE,UAASD,OAAM,KAAK,OAAOD,WAAS,UAAU;AAClD,WAAO;AAAA,EACR;AAEA,QAAM,YAAY,gBAAgBA,MAAI;AAEtC,WAAS,QAAQ,GAAG,QAAQ,UAAU,QAAQ,SAAS;AACtD,UAAM,MAAM,UAAU,KAAK;AAE3B,yBAAqBC,SAAQ,GAAG;AAEhC,QAAI,UAAU,UAAU,SAAS,GAAG;AACnC,aAAOA,QAAO,GAAG;AACjB,aAAO;AAAA,IACR;AAEA,IAAAA,UAASA,QAAO,GAAG;AAEnB,QAAI,CAACC,UAASD,OAAM,GAAG;AACtB,aAAO;AAAA,IACR;AAAA,EACD;AACD;AAEO,SAAS,YAAYA,SAAQD,QAAM;AACzC,MAAI,CAACE,UAASD,OAAM,KAAK,OAAOD,WAAS,UAAU;AAClD,WAAO;AAAA,EACR;AAEA,QAAM,YAAY,gBAAgBA,MAAI;AACtC,MAAI,UAAU,WAAW,GAAG;AAC3B,WAAO;AAAA,EACR;AAEA,aAAW,OAAO,WAAW;AAC5B,QAAI,CAACE,UAASD,OAAM,KAAK,EAAE,OAAOA,YAAW,cAAcA,SAAQ,GAAG,GAAG;AACxE,aAAO;AAAA,IACR;AAEA,IAAAA,UAASA,QAAO,GAAG;AAAA,EACpB;AAEA,SAAO;AACR;;;AC5RA,IAAAE,qBAAiB;AACjB,IAAAC,mBAAe;AACf,0BAAoB;AAEpB,IAAMC,WAAU,iBAAAC,QAAG,QAAQ;AAC3B,IAAM,SAAS,iBAAAA,QAAG,OAAO;AACzB,IAAM,EAAC,IAAG,IAAI,oBAAAC;AAEd,IAAM,QAAQ,UAAQ;AACrB,QAAM,UAAU,mBAAAC,QAAK,KAAKH,UAAS,SAAS;AAE5C,SAAO;AAAA,IACN,MAAM,mBAAAG,QAAK,KAAK,SAAS,uBAAuB,IAAI;AAAA,IACpD,QAAQ,mBAAAA,QAAK,KAAK,SAAS,eAAe,IAAI;AAAA,IAC9C,OAAO,mBAAAA,QAAK,KAAK,SAAS,UAAU,IAAI;AAAA,IACxC,KAAK,mBAAAA,QAAK,KAAK,SAAS,QAAQ,IAAI;AAAA,IACpC,MAAM,mBAAAA,QAAK,KAAK,QAAQ,IAAI;AAAA,EAC7B;AACD;AAEA,IAAM,UAAU,UAAQ;AACvB,QAAM,UAAU,IAAI,WAAW,mBAAAA,QAAK,KAAKH,UAAS,WAAW,SAAS;AACtE,QAAM,eAAe,IAAI,gBAAgB,mBAAAG,QAAK,KAAKH,UAAS,WAAW,OAAO;AAE9E,SAAO;AAAA;AAAA,IAEN,MAAM,mBAAAG,QAAK,KAAK,cAAc,MAAM,MAAM;AAAA,IAC1C,QAAQ,mBAAAA,QAAK,KAAK,SAAS,MAAM,QAAQ;AAAA,IACzC,OAAO,mBAAAA,QAAK,KAAK,cAAc,MAAM,OAAO;AAAA,IAC5C,KAAK,mBAAAA,QAAK,KAAK,cAAc,MAAM,KAAK;AAAA,IACxC,MAAM,mBAAAA,QAAK,KAAK,QAAQ,IAAI;AAAA,EAC7B;AACD;AAGA,IAAM,QAAQ,UAAQ;AACrB,QAAM,WAAW,mBAAAA,QAAK,SAASH,QAAO;AAEtC,SAAO;AAAA,IACN,MAAM,mBAAAG,QAAK,KAAK,IAAI,iBAAiB,mBAAAA,QAAK,KAAKH,UAAS,UAAU,OAAO,GAAG,IAAI;AAAA,IAChF,QAAQ,mBAAAG,QAAK,KAAK,IAAI,mBAAmB,mBAAAA,QAAK,KAAKH,UAAS,SAAS,GAAG,IAAI;AAAA,IAC5E,OAAO,mBAAAG,QAAK,KAAK,IAAI,kBAAkB,mBAAAA,QAAK,KAAKH,UAAS,QAAQ,GAAG,IAAI;AAAA;AAAA,IAEzE,KAAK,mBAAAG,QAAK,KAAK,IAAI,kBAAkB,mBAAAA,QAAK,KAAKH,UAAS,UAAU,OAAO,GAAG,IAAI;AAAA,IAChF,MAAM,mBAAAG,QAAK,KAAK,QAAQ,UAAU,IAAI;AAAA,EACvC;AACD;AAEe,SAAR,SAA0B,MAAM,EAAC,SAAS,SAAQ,IAAI,CAAC,GAAG;AAChE,MAAI,OAAO,SAAS,UAAU;AAC7B,UAAM,IAAI,UAAU,0BAA0B,OAAO,IAAI,EAAE;AAAA,EAC5D;AAEA,MAAI,QAAQ;AAEX,YAAQ,IAAI,MAAM;AAAA,EACnB;AAEA,MAAI,oBAAAD,QAAQ,aAAa,UAAU;AAClC,WAAO,MAAM,IAAI;AAAA,EAClB;AAEA,MAAI,oBAAAA,QAAQ,aAAa,SAAS;AACjC,WAAO,QAAQ,IAAI;AAAA,EACpB;AAEA,SAAO,MAAM,IAAI;AAClB;;;AClEA,yBAAqB;AACrB,IAAAE,kBAAkC;AAClC,IAAAC,qBAAiB;AACjB,yBAAyB;;;ACHzB,IAAAC,kBAAe;AACf,uBAA0B;;;ACA1B,IAAM,kBAAkB,CAAC,IAAI,YAAY;AACrC,QAAM,EAAE,QAAQ,IAAI;AACpB,SAAO,SAAS,gBAAgB,MAAM;AAClC,WAAO,GAAG,MAAM,QAAW,IAAI,EAAE,MAAM,OAAO;AAAA,EAClD;AACJ;AAEA,IAAO,2BAAQ;;;ACPf,IAAM,iBAAiB,CAAC,IAAI,YAAY;AACpC,QAAM,EAAE,QAAQ,IAAI;AACpB,SAAO,SAAS,gBAAgB,MAAM;AAClC,QAAI;AACA,aAAO,GAAG,MAAM,QAAW,IAAI;AAAA,IACnC,SACOC,SAAO;AACV,aAAO,QAAQA,OAAK;AAAA,IACxB;AAAA,EACJ;AACJ;AAEA,IAAO,0BAAQ;;;ACbf,IAAM,iBAAiB;;;ACEvB,IAAM,gBAAgB,CAAC,IAAI,YAAY;AACnC,QAAM,EAAE,YAAY,IAAI;AACxB,SAAO,SAAS,WAAWC,UAAS;AAChC,UAAM,EAAE,QAAQ,IAAIA;AACpB,UAAM,WAAWA,SAAQ,YAAY;AACrC,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,WAAO,SAAS,WAAW,MAAM;AAC7B,aAAO,GAAG,MAAM,QAAW,IAAI,EAAE,MAAM,CAACC,YAAU;AAC9C,YAAI,CAAC,YAAYA,OAAK;AAClB,gBAAMA;AACV,YAAI,KAAK,IAAI,KAAK;AACd,gBAAMA;AACV,cAAMC,SAAQ,KAAK,MAAM,WAAW,KAAK,OAAO,CAAC;AACjD,YAAIA,SAAQ,GAAG;AACX,gBAAM,eAAe,IAAI,QAAQ,CAAAC,aAAW,WAAWA,UAASD,MAAK,CAAC;AACtE,iBAAO,aAAa,KAAK,MAAM,QAAQ,MAAM,QAAW,IAAI,CAAC;AAAA,QACjE,OACK;AACD,iBAAO,QAAQ,MAAM,QAAW,IAAI;AAAA,QACxC;AAAA,MACJ,CAAC;AAAA,IACL;AAAA,EACJ;AACJ;AAEA,IAAO,yBAAQ;;;AC1Bf,IAAM,eAAe,CAAC,IAAI,YAAY;AAClC,QAAM,EAAE,YAAY,IAAI;AACxB,SAAO,SAAS,WAAWE,UAAS;AAChC,UAAM,EAAE,QAAQ,IAAIA;AACpB,UAAM,YAAY,KAAK,IAAI,IAAI;AAC/B,WAAO,SAAS,WAAW,MAAM;AAC7B,aAAO,MAAM;AACT,YAAI;AACA,iBAAO,GAAG,MAAM,QAAW,IAAI;AAAA,QACnC,SACOC,SAAO;AACV,cAAI,CAAC,YAAYA,OAAK;AAClB,kBAAMA;AACV,cAAI,KAAK,IAAI,KAAK;AACd,kBAAMA;AACV;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,IAAO,wBAAQ;;;ACvBf,IAAAC,uBAAoB;;;ACEpB,IAAM,WAAW;AAAA;AAAA,EAEb,iBAAiB,CAACC,YAAU;AACxB,QAAI,CAAC,SAAS,YAAYA,OAAK;AAC3B,aAAO;AACX,UAAM,EAAE,KAAK,IAAIA;AACjB,QAAI,SAAS;AACT,aAAO;AACX,QAAI,CAAC,iBAAiB,SAAS,YAAY,SAAS;AAChD,aAAO;AACX,WAAO;AAAA,EACX;AAAA,EACA,aAAa,CAACA,YAAU;AACpB,WAAQA,mBAAiB;AAAA,EAC7B;AAAA,EACA,kBAAkB,CAACA,YAAU;AACzB,QAAI,CAAC,SAAS,YAAYA,OAAK;AAC3B,aAAO;AACX,UAAM,EAAE,KAAK,IAAIA;AACjB,QAAI,SAAS,YAAY,SAAS,YAAY,SAAS,YAAY,SAAS,WAAW,SAAS,aAAa,SAAS,YAAY,SAAS,WAAW,SAAS;AAC3J,aAAO;AACX,WAAO;AAAA,EACX;AAAA,EACA,eAAe,CAACA,YAAU;AACtB,QAAI,CAAC,SAAS,YAAYA,OAAK;AAC3B,YAAMA;AACV,QAAI,SAAS,gBAAgBA,OAAK;AAC9B;AACJ,UAAMA;AAAA,EACV;AACJ;AAEA,IAAO,mBAAQ;;;AD/Bf,IAAM,kCAAkC;AAAA,EACpC,SAAS,iBAAS;AACtB;AACA,IAAM,0BAA0B;AAAA,EAC5B,SAAS,MAAM;AACnB;AACA,IAAM,eAAgB,qBAAAC,QAAQ,SAAS,CAAC,qBAAAA,QAAQ,OAAO,IAAI;AAC3D,IAAM,mBAAmB;AAAA,EACrB,aAAa,iBAAS;AAC1B;;;ANNA,IAAM,KAAK;AAAA,EACP,SAAS;AAAA;AAAA,IAEL,OAAO,6BAAgB,4BAAU,gBAAAC,QAAG,KAAK,GAAG,+BAA+B;AAAA,IAC3E,OAAO,6BAAgB,4BAAU,gBAAAA,QAAG,KAAK,GAAG,+BAA+B;AAAA,IAC3E,OAAO,6BAAgB,4BAAU,gBAAAA,QAAG,KAAK,GAAG,uBAAuB;AAAA,IACnE,OAAO,6BAAgB,4BAAU,gBAAAA,QAAG,KAAK,GAAG,uBAAuB;AAAA,IACnE,OAAO,6BAAgB,4BAAU,gBAAAA,QAAG,KAAK,GAAG,uBAAuB;AAAA,IACnE,UAAU,6BAAgB,4BAAU,gBAAAA,QAAG,QAAQ,GAAG,uBAAuB;AAAA,IACzE,MAAM,6BAAgB,4BAAU,gBAAAA,QAAG,IAAI,GAAG,uBAAuB;AAAA,IACjE,QAAQ,6BAAgB,4BAAU,gBAAAA,QAAG,MAAM,GAAG,uBAAuB;AAAA;AAAA,IAErE,WAAW,wBAAe,gBAAAA,QAAG,WAAW,+BAA+B;AAAA,IACvE,WAAW,wBAAe,gBAAAA,QAAG,WAAW,+BAA+B;AAAA,IACvE,WAAW,wBAAe,gBAAAA,QAAG,WAAW,uBAAuB;AAAA,IAC/D,YAAY,wBAAe,gBAAAA,QAAG,YAAY,uBAAuB;AAAA,IACjE,WAAW,wBAAe,gBAAAA,QAAG,OAAO,uBAAuB;AAAA,IAC3D,WAAW,wBAAe,gBAAAA,QAAG,WAAW,uBAAuB;AAAA,IAC/D,cAAc,wBAAe,gBAAAA,QAAG,cAAc,uBAAuB;AAAA,IACrE,UAAU,wBAAe,gBAAAA,QAAG,UAAU,uBAAuB;AAAA,IAC7D,YAAY,wBAAe,gBAAAA,QAAG,YAAY,uBAAuB;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;AAAA,IAEH,OAAO,2BAAc,4BAAU,gBAAAA,QAAG,KAAK,GAAG,gBAAgB;AAAA,IAC1D,OAAO,2BAAc,4BAAU,gBAAAA,QAAG,KAAK,GAAG,gBAAgB;AAAA,IAC1D,MAAM,2BAAc,4BAAU,gBAAAA,QAAG,IAAI,GAAG,gBAAgB;AAAA,IACxD,UAAU,2BAAc,4BAAU,gBAAAA,QAAG,QAAQ,GAAG,gBAAgB;AAAA,IAChE,QAAQ,2BAAc,4BAAU,gBAAAA,QAAG,MAAM,GAAG,gBAAgB;AAAA,IAC5D,MAAM,2BAAc,4BAAU,gBAAAA,QAAG,IAAI,GAAG,gBAAgB;AAAA,IACxD,OAAO,2BAAc,4BAAU,gBAAAA,QAAG,KAAK,GAAG,gBAAgB;AAAA,IAC1D,WAAW,2BAAc,4BAAU,gBAAAA,QAAG,SAAS,GAAG,gBAAgB;AAAA;AAAA,IAElE,WAAW,sBAAa,gBAAAA,QAAG,WAAW,gBAAgB;AAAA,IACtD,WAAW,sBAAa,gBAAAA,QAAG,WAAW,gBAAgB;AAAA,IACtD,UAAU,sBAAa,gBAAAA,QAAG,UAAU,gBAAgB;AAAA,IACpD,cAAc,sBAAa,gBAAAA,QAAG,cAAc,gBAAgB;AAAA,IAC5D,YAAY,sBAAa,gBAAAA,QAAG,YAAY,gBAAgB;AAAA,IACxD,UAAU,sBAAa,gBAAAA,QAAG,UAAU,gBAAgB;AAAA,IACpD,WAAW,sBAAa,gBAAAA,QAAG,WAAW,gBAAgB;AAAA,IACtD,eAAe,sBAAa,gBAAAA,QAAG,eAAe,gBAAgB;AAAA,EAClE;AACJ;AAEA,IAAO,eAAQ;;;AQlDf,IAAAC,uBAAoB;AAEpB,IAAM,mBAAmB;AACzB,IAAM,oBAAoB;AAC1B,IAAM,sBAAsB;AAE5B,IAAM,wBAAwB,CAAC;AAC/B,IAAM,mBAAmB,qBAAAC,QAAQ,UAAU,qBAAAA,QAAQ,QAAQ,IAAI;AAC/D,IAAM,mBAAmB,qBAAAA,QAAQ,UAAU,qBAAAA,QAAQ,QAAQ,IAAI;AAG/D,IAAM,uBAAuB;AAC7B,IAAM,WAAW,CAAC,CAAC,qBAAAC,QAAQ;AAC3B,IAAMC,gBAAe,qBAAAD,QAAQ,SAAS,CAAC,qBAAAA,QAAQ,OAAO,IAAI;AAC1D,IAAM,wBAAwB;;;ACb9B,IAAM,cAAc,CAAC,UAAU;AAC3B,SAAQ,iBAAiB,SAAW,UAAU;AAClD;AAIA,IAAM,WAAW,CAAC,UAAU;AACxB,SAAQ,OAAO,UAAU;AAC7B;AACA,IAAM,cAAc,CAAC,UAAU;AAC3B,SAAQ,UAAU;AACtB;;;ACZA,IAAAE,qBAAiB;;;ACAjB,IAAAC,uBAAoB;;;ACApB,IAAAC,uBAAoB;AAEpB,IAAM,WAAY,qBAAAC,QAAQ,aAAa;AACvC,IAAM,aAAc,qBAAAA,QAAQ,aAAa;;;ACAzC,IAAM,UAAU,CAAC,UAAU,UAAU,SAAS;AAC9C,IAAI,CAAC,YAAY;AACb,UAAQ,KAAK,WAAW,WAAW,aAAa,WAAW,WAAW,WAAW,WAAW,UAAU,WAAW,QAAQ;AAC7H;AACA,IAAI,UAAU;AACV,UAAQ,KAAK,SAAS,WAAW,UAAU,WAAW;AAC1D;AAEA,IAAO,kBAAQ;;;AFPf,IAAM,cAAN,MAAkB;AAAA;AAAA,EAEd,cAAc;AAEV,SAAK,YAAY,oBAAI,IAAI;AACzB,SAAK,SAAS;AAEd,SAAK,OAAO,CAAC,WAAW;AACpB,UAAI,KAAK;AACL;AACJ,WAAK,SAAS;AACd,iBAAW,YAAY,KAAK,WAAW;AACnC,iBAAS;AAAA,MACb;AACA,UAAI,QAAQ;AACR,YAAI,eAAe,WAAW,YAAY,WAAW,aAAa,WAAW,YAAY;AACrF,+BAAAC,QAAQ,KAAK,qBAAAA,QAAQ,KAAK,SAAS;AAAA,QACvC,OACK;AACD,+BAAAA,QAAQ,KAAK,qBAAAA,QAAQ,KAAK,MAAM;AAAA,QACpC;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,OAAO,MAAM;AACd,2BAAAA,QAAQ,KAAK,QAAQ,MAAM,KAAK,KAAK,CAAC;AACtC,iBAAW,UAAU,iBAAS;AAC1B,YAAI;AACA,+BAAAA,QAAQ,KAAK,QAAQ,MAAM,KAAK,KAAK,MAAM,CAAC;AAAA,QAChD,QACM;AAAA,QAEN;AAAA,MACJ;AAAA,IACJ;AACA,SAAK,WAAW,CAAC,aAAa;AAC1B,WAAK,UAAU,IAAI,QAAQ;AAC3B,aAAO,MAAM;AACT,aAAK,UAAU,OAAO,QAAQ;AAAA,MAClC;AAAA,IACJ;AACA,SAAK,KAAK;AAAA,EACd;AACJ;AAEA,IAAO,sBAAQ,IAAI,YAAY;;;AG9C/B,IAAM,WAAW,oBAAY;AAE7B,IAAO,eAAQ;;;AJEf,IAAM,OAAO;AAAA;AAAA,EAET,OAAO,CAAC;AAAA;AAAA;AAAA,EAER,QAAQ,CAAC,aAAa;AAClB,UAAM,aAAa,SAAS,KAAK,MAAM,KAAK,OAAO,IAAI,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM,EAAE;AACxF,UAAM,YAAY,KAAK,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG;AACjD,UAAM,SAAS;AACf,UAAM,SAAS,IAAI,MAAM,GAAG,SAAS,GAAG,UAAU;AAClD,UAAM,WAAW,GAAG,QAAQ,GAAG,MAAM;AACrC,WAAO;AAAA,EACX;AAAA,EACA,KAAK,CAAC,UAAU,SAAS,QAAQ,SAAS;AACtC,UAAM,WAAW,KAAK,SAAS,QAAQ,QAAQ,CAAC;AAChD,QAAI,YAAY,KAAK;AACjB,aAAO,KAAK,IAAI,UAAU,SAAS,KAAK;AAC5C,SAAK,MAAM,QAAQ,IAAI;AACvB,UAAM,WAAW,MAAM,OAAO,KAAK,MAAM,QAAQ;AACjD,WAAO,CAAC,UAAU,QAAQ;AAAA,EAC9B;AAAA,EACA,OAAO,CAAC,aAAa;AACjB,QAAI,CAAC,KAAK,MAAM,QAAQ;AACpB;AACJ,WAAO,KAAK,MAAM,QAAQ;AAC1B,iBAAG,QAAQ,OAAO,QAAQ;AAAA,EAC9B;AAAA,EACA,WAAW,CAAC,aAAa;AACrB,QAAI,CAAC,KAAK,MAAM,QAAQ;AACpB;AACJ,WAAO,KAAK,MAAM,QAAQ;AAC1B,iBAAG,QAAQ,WAAW,QAAQ;AAAA,EAClC;AAAA,EACA,cAAc,MAAM;AAChB,eAAW,YAAY,KAAK,OAAO;AAC/B,WAAK,UAAU,QAAQ;AAAA,IAC3B;AAAA,EACJ;AAAA,EACA,UAAU,CAAC,aAAa;AACpB,UAAMC,YAAW,mBAAAC,QAAK,SAAS,QAAQ;AACvC,QAAID,UAAS,UAAU;AACnB,aAAO;AACX,UAAM,YAAY,yDAAyD,KAAKA,SAAQ;AACxF,QAAI,CAAC;AACD,aAAO;AACX,UAAM,mBAAmBA,UAAS,SAAS;AAC3C,WAAO,GAAG,SAAS,MAAM,GAAG,CAACA,UAAS,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,gBAAgB,CAAC,GAAG,UAAU,CAAC,CAAC;AAAA,EAC1H;AACJ;AAEA,aAAS,KAAK,YAAY;AAE1B,IAAO,eAAQ;;;AXqEf,SAASE,eAAc,UAAU,MAAM,UAAU,uBAAuB;AACpE,MAAI,SAAS,OAAO;AAChB,WAAOA,eAAc,UAAU,MAAM,EAAE,UAAU,QAAQ,CAAC;AAC9D,QAAM,UAAU,QAAQ,WAAW;AACnC,QAAM,eAAe,EAAE,QAAQ;AAC/B,MAAI,eAAe;AACnB,MAAI,WAAW;AACf,MAAI,KAAK;AACT,MAAI;AACA,UAAM,eAAe,aAAG,QAAQ,aAAa,QAAQ;AACrD,UAAM,iBAAiB,CAAC,CAAC;AACzB,eAAW,gBAAgB;AAC3B,KAAC,UAAU,YAAY,IAAI,aAAK,IAAI,UAAU,QAAQ,aAAa,aAAK,QAAQ,EAAE,QAAQ,aAAa,MAAM;AAC7G,UAAM,eAAe,YAAY,YAAY,QAAQ,KAAK;AAC1D,UAAM,cAAc,YAAY,QAAQ,IAAI;AAC5C,QAAI,mBAAmB,gBAAgB,cAAc;AACjD,YAAM,QAAQ,aAAG,QAAQ,SAAS,QAAQ;AAC1C,UAAI,OAAO;AACP,kBAAU,EAAE,GAAG,QAAQ;AACvB,YAAI,cAAc;AACd,kBAAQ,QAAQ,EAAE,KAAK,MAAM,KAAK,KAAK,MAAM,IAAI;AAAA,QACrD;AACA,YAAI,aAAa;AACb,kBAAQ,OAAO,MAAM;AAAA,QACzB;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,CAAC,gBAAgB;AACjB,YAAM,aAAa,mBAAAC,QAAK,QAAQ,QAAQ;AACxC,mBAAG,QAAQ,UAAU,YAAY;AAAA,QAC7B,MAAM;AAAA,QACN,WAAW;AAAA,MACf,CAAC;AAAA,IACL;AACA,SAAK,aAAG,MAAM,SAAS,YAAY,EAAE,UAAU,KAAK,QAAQ,QAAQ,iBAAiB;AACrF,QAAI,QAAQ,YAAY;AACpB,cAAQ,WAAW,QAAQ;AAAA,IAC/B;AACA,QAAI,SAAS,IAAI,GAAG;AAChB,mBAAG,MAAM,UAAU,YAAY,EAAE,IAAI,MAAM,GAAG,QAAQ,YAAY,gBAAgB;AAAA,IACtF,WACS,CAAC,YAAY,IAAI,GAAG;AACzB,mBAAG,MAAM,UAAU,YAAY,EAAE,IAAI,MAAM,GAAG,KAAK,QAAQ,CAAC;AAAA,IAChE;AACA,QAAI,QAAQ,UAAU,OAAO;AACzB,UAAI,QAAQ,cAAc,OAAO;AAC7B,qBAAG,MAAM,UAAU,YAAY,EAAE,EAAE;AAAA,MACvC,OACK;AACD,qBAAG,QAAQ,MAAM,EAAE;AAAA,MACvB;AAAA,IACJ;AACA,iBAAG,MAAM,UAAU,YAAY,EAAE,EAAE;AACnC,SAAK;AACL,QAAI,QAAQ,UAAU,QAAQ,MAAM,QAAQ,oBAAoB,QAAQ,MAAM,QAAQ,mBAAmB;AACrG,mBAAG,QAAQ,UAAU,UAAU,QAAQ,MAAM,KAAK,QAAQ,MAAM,GAAG;AAAA,IACvE;AACA,QAAI,QAAQ,QAAQ,QAAQ,SAAS,mBAAmB;AACpD,mBAAG,QAAQ,UAAU,UAAU,QAAQ,IAAI;AAAA,IAC/C;AACA,QAAI;AACA,mBAAG,MAAM,WAAW,YAAY,EAAE,UAAU,QAAQ;AAAA,IACxD,SACOC,SAAO;AACV,UAAI,CAAC,YAAYA,OAAK;AAClB,cAAMA;AACV,UAAIA,QAAM,SAAS;AACf,cAAMA;AACV,mBAAG,MAAM,WAAW,YAAY,EAAE,UAAU,aAAK,SAAS,QAAQ,CAAC;AAAA,IACvE;AACA,iBAAa;AACb,eAAW;AAAA,EACf,UACA;AACI,QAAI;AACA,mBAAG,QAAQ,UAAU,EAAE;AAC3B,QAAI;AACA,mBAAK,MAAM,QAAQ;AAAA,EAC3B;AACJ;;;AHpMA,iBAAsB;AACtB,yBAA6B;;;AmBX7B,IAAM,eAAe,CAAC,IAAI,MAAM,UAAU,0BAA0B;AAGnE,MAAI,aAAa,YAAY,aAAa,aAAa;AACtD;AAAA,EACD;AAGA,MAAI,aAAa,eAAe,aAAa,UAAU;AACtD;AAAA,EACD;AAEA,QAAM,eAAe,OAAO,yBAAyB,IAAI,QAAQ;AACjE,QAAM,iBAAiB,OAAO,yBAAyB,MAAM,QAAQ;AAErE,MAAI,CAAC,gBAAgB,cAAc,cAAc,KAAK,uBAAuB;AAC5E;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,UAAU,cAAc;AACnD;AAKA,IAAM,kBAAkB,SAAU,cAAc,gBAAgB;AAC/D,SAAO,iBAAiB,UAAa,aAAa,gBACjD,aAAa,aAAa,eAAe,YACzC,aAAa,eAAe,eAAe,cAC3C,aAAa,iBAAiB,eAAe,iBAC5C,aAAa,YAAY,aAAa,UAAU,eAAe;AAElE;AAEA,IAAM,kBAAkB,CAAC,IAAI,SAAS;AACrC,QAAM,gBAAgB,OAAO,eAAe,IAAI;AAChD,MAAI,kBAAkB,OAAO,eAAe,EAAE,GAAG;AAChD;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,aAAa;AACxC;AAEA,IAAM,kBAAkB,CAAC,UAAU,aAAa,cAAc,QAAQ;AAAA,EAAO,QAAQ;AAErF,IAAM,qBAAqB,OAAO,yBAAyB,SAAS,WAAW,UAAU;AACzF,IAAM,eAAe,OAAO,yBAAyB,SAAS,UAAU,UAAU,MAAM;AAKxF,IAAM,iBAAiB,CAAC,IAAI,MAAM,SAAS;AAC1C,QAAM,WAAW,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC;AACvD,QAAM,cAAc,gBAAgB,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC;AAExE,SAAO,eAAe,aAAa,QAAQ,YAAY;AACvD,SAAO,eAAe,IAAI,YAAY,EAAC,GAAG,oBAAoB,OAAO,YAAW,CAAC;AAClF;AAEe,SAAR,cAA+B,IAAI,MAAM,EAAC,wBAAwB,MAAK,IAAI,CAAC,GAAG;AACrF,QAAM,EAAC,KAAI,IAAI;AAEf,aAAW,YAAY,QAAQ,QAAQ,IAAI,GAAG;AAC7C,iBAAa,IAAI,MAAM,UAAU,qBAAqB;AAAA,EACvD;AAEA,kBAAgB,IAAI,IAAI;AACxB,iBAAe,IAAI,MAAM,IAAI;AAE7B,SAAO;AACR;;;ACpEA,IAAM,aAAa,CAAC,eAAe,UAAU,CAAC,MAAM;AACnD,MAAI,OAAO,kBAAkB,YAAY;AACxC,UAAM,IAAI,UAAU,uDAAuD,OAAO,aAAa,IAAI;AAAA,EACpG;AAEA,QAAM;AAAA,IACL,OAAO;AAAA,IACP,UAAU,OAAO;AAAA,IACjB,SAAS;AAAA,IACT,QAAQ;AAAA,EACT,IAAI;AAEJ,MAAI,CAAC,UAAU,CAAC,OAAO;AACtB,UAAM,IAAI,MAAM,mEAAoE;AAAA,EACrF;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI;AAEJ,QAAM,oBAAoB,YAAa,YAAY;AAClD,UAAM,UAAU;AAEhB,UAAM,QAAQ,MAAM;AACnB,gBAAU;AAEV,UAAI,YAAY;AACf,qBAAa,UAAU;AACvB,qBAAa;AAAA,MACd;AAEA,UAAI,OAAO;AACV,iBAAS,cAAc,MAAM,SAAS,UAAU;AAAA,MACjD;AAAA,IACD;AAEA,UAAM,WAAW,MAAM;AACtB,mBAAa;AAEb,UAAI,SAAS;AACZ,qBAAa,OAAO;AACpB,kBAAU;AAAA,MACX;AAEA,UAAI,OAAO;AACV,iBAAS,cAAc,MAAM,SAAS,UAAU;AAAA,MACjD;AAAA,IACD;AAEA,UAAM,gBAAgB,UAAU,CAAC;AACjC,iBAAa,OAAO;AACpB,cAAU,WAAW,OAAO,IAAI;AAEhC,QAAI,UAAU,KAAK,YAAY,OAAO,qBAAqB,CAAC,YAAY;AACvE,mBAAa,WAAW,UAAU,OAAO;AAAA,IAC1C;AAEA,QAAI,eAAe;AAClB,eAAS,cAAc,MAAM,SAAS,UAAU;AAAA,IACjD;AAEA,WAAO;AAAA,EACR;AAEA,gBAAQ,mBAAmB,aAAa;AAExC,oBAAkB,SAAS,MAAM;AAChC,QAAI,SAAS;AACZ,mBAAa,OAAO;AACpB,gBAAU;AAAA,IACX;AAEA,QAAI,YAAY;AACf,mBAAa,UAAU;AACvB,mBAAa;AAAA,IACd;AAAA,EACD;AAEA,SAAO;AACR;AAEA,IAAO,sBAAQ;;;ApBtEf,oBAAmB;;;AqBbnB,IAAM,iBAAiB,OAAO,UAAU;AAEjC,SAAS,aAAa,OAAO;AACnC,SAAO,SAAS,eAAe,KAAK,KAAK,MAAM;AAChD;AAEO,SAAS,iBAAiB,OAAO;AACvC,MAAI,CAAC,aAAa,KAAK,GAAG;AACzB,UAAM,IAAI,UAAU,kCAAkC,OAAO,KAAK,IAAI;AAAA,EACvE;AACD;AAEO,SAAS,kBAAkB,QAAQ,aAAa;AACtD,MAAI,OAAO,WAAW,GAAG;AACxB,WAAO,IAAI,WAAW,CAAC;AAAA,EACxB;AAEA,kBAAgB,OAAO,OAAO,CAAC,aAAa,iBAAiB,cAAc,aAAa,QAAQ,CAAC;AAEjG,QAAM,cAAc,IAAI,WAAW,WAAW;AAE9C,MAAI,SAAS;AACb,aAAWC,UAAS,QAAQ;AAC3B,qBAAiBA,MAAK;AACtB,gBAAY,IAAIA,QAAO,MAAM;AAC7B,cAAUA,OAAM;AAAA,EACjB;AAEA,SAAO;AACR;AAqDO,SAAS,mBAAmBC,QAAO;AACzC,mBAAiBA,MAAK;AACtB,SAAQ,IAAI,WAAW,YAAY,EAAG,OAAOA,MAAK;AACnD;AAEA,SAAS,aAAa,OAAO;AAC5B,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,UAAU,8BAA8B,OAAO,KAAK,IAAI;AAAA,EACnE;AACD;AAEO,SAAS,mBAAmBC,SAAQ;AAC1C,eAAaA,OAAM;AACnB,SAAQ,IAAI,WAAW,YAAY,EAAG,OAAOA,OAAM;AACpD;AAwBA,IAAM,uBAAuB,MAAM,KAAK,EAAC,QAAQ,IAAG,GAAG,CAAC,GAAG,UAAU,MAAM,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC;;;ArBxGxG,IAAM,MAAM,WAAAC,QAAU;AACtB,IAAM,aAAa,mBAAAC,QAAiB;AACpC,IAAM,sBAAsB;AAC5B,IAAM,oBAAoB,MAAM,uBAAO,OAAO,IAAI;AAClD,IAAM,UAAU,CAAC,SAAS,SAAS,UAAa,SAAS;AACzD,IAAM,iBAAiB,CAAC,KAAK,UAAU;AACnC,QAAM,eAAe,oBAAI,IAAI;AAAA,IACzB;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,QAAM,OAAO,OAAO;AACpB,MAAI,aAAa,IAAI,IAAI,GAAG;AACxB,UAAM,IAAI,UAAU,6BAA6B,IAAI,gBAAgB,GAAG,iDAAiD;AAAA,EAC7H;AACJ;AACA,IAAM,eAAe;AACrB,IAAM,gBAAgB,GAAG,YAAY;AACrC,IAAqB,OAArB,MAA0B;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB,CAAC;AAAA,EAClB,YAAY,iBAAiB,CAAC,GAAG;AAC7B,UAAM,UAAU;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,eAAe;AAAA,MACf,oBAAoB;AAAA,MACpB,+BAA+B;AAAA,MAC/B,gBAAgB;AAAA,MAChB,GAAG;AAAA,IACP;AACA,QAAI,CAAC,QAAQ,KAAK;AACd,UAAI,CAAC,QAAQ,aAAa;AACtB,cAAM,IAAI,MAAM,0CAA0C;AAAA,MAC9D;AACA,cAAQ,MAAM,SAAS,QAAQ,aAAa,EAAE,QAAQ,QAAQ,cAAc,CAAC,EAAE;AAAA,IACnF;AACA,SAAK,WAAW;AAChB,QAAI,QAAQ,QAAQ;AAChB,UAAI,OAAO,QAAQ,WAAW,UAAU;AACpC,cAAM,IAAI,UAAU,wCAAwC;AAAA,MAChE;AACA,YAAM,MAAM,IAAI,IAAI;AAAA,QAChB,WAAW;AAAA,QACX,aAAa;AAAA,MACjB,CAAC;AACD,iBAAW,GAAG;AACd,YAAM,SAAS;AAAA,QACX,MAAM;AAAA,QACN,YAAY,QAAQ;AAAA,MACxB;AACA,WAAK,aAAa,IAAI,QAAQ,MAAM;AACpC,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,QAAQ,MAAM,GAAG;AACvD,YAAI,OAAO,SAAS;AAChB,eAAK,eAAe,GAAG,IAAI,MAAM;AAAA,QACrC;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,QAAQ,UAAU;AAClB,WAAK,iBAAiB;AAAA,QAClB,GAAG,KAAK;AAAA,QACR,GAAG,QAAQ;AAAA,MACf;AAAA,IACJ;AACA,QAAI,QAAQ,WAAW;AACnB,WAAK,aAAa,QAAQ;AAAA,IAC9B;AACA,QAAI,QAAQ,aAAa;AACrB,WAAK,eAAe,QAAQ;AAAA,IAChC;AACA,SAAK,SAAS,IAAI,YAAY;AAC9B,SAAK,iBAAiB,QAAQ;AAC9B,UAAM,gBAAgB,QAAQ,gBAAgB,IAAI,QAAQ,aAAa,KAAK;AAC5E,SAAK,OAAO,mBAAAC,QAAK,QAAQ,QAAQ,KAAK,GAAG,QAAQ,cAAc,QAAQ,GAAG,aAAa,EAAE;AACzF,UAAM,YAAY,KAAK;AACvB,UAAM,QAAQ,OAAO,OAAO,kBAAkB,GAAG,QAAQ,UAAU,SAAS;AAC5E,SAAK,UAAU,KAAK;AACpB,QAAI;AACA,yBAAAC,QAAO,UAAU,WAAW,KAAK;AAAA,IACrC,QACM;AACF,WAAK,QAAQ;AAAA,IACjB;AACA,QAAI,QAAQ,OAAO;AACf,WAAK,OAAO;AAAA,IAChB;AACA,QAAI,QAAQ,YAAY;AACpB,UAAI,CAAC,QAAQ,gBAAgB;AACzB,cAAM,IAAI,MAAM,6CAA6C;AAAA,MACjE;AACA,WAAK,SAAS,QAAQ,YAAY,QAAQ,gBAAgB,QAAQ,mBAAmB;AAAA,IACzF;AAAA,EACJ;AAAA,EACA,IAAI,KAAK,cAAc;AACnB,QAAI,KAAK,SAAS,+BAA+B;AAC7C,aAAO,KAAK,KAAK,KAAK,YAAY;AAAA,IACtC;AACA,UAAM,EAAE,MAAM,IAAI;AAClB,WAAO,OAAO,QAAQ,MAAM,GAAG,IAAI;AAAA,EACvC;AAAA,EACA,IAAI,KAAK,OAAO;AACZ,QAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU;AACpD,YAAM,IAAI,UAAU,gEAAgE,OAAO,GAAG,EAAE;AAAA,IACpG;AACA,QAAI,OAAO,QAAQ,YAAY,UAAU,QAAW;AAChD,YAAM,IAAI,UAAU,gCAAgC;AAAA,IACxD;AACA,QAAI,KAAK,qBAAqB,GAAG,GAAG;AAChC,YAAM,IAAI,UAAU,wBAAwB,YAAY,+DAA+D;AAAA,IAC3H;AACA,UAAM,EAAE,MAAM,IAAI;AAClB,UAAMC,OAAM,CAACC,MAAKC,WAAU;AACxB,qBAAeD,MAAKC,MAAK;AACzB,UAAI,KAAK,SAAS,+BAA+B;AAC7C,oBAAY,OAAOD,MAAKC,MAAK;AAAA,MACjC,OACK;AACD,cAAMD,IAAG,IAAIC;AAAA,MACjB;AAAA,IACJ;AACA,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAMC,UAAS;AACf,iBAAW,CAACF,MAAKC,MAAK,KAAK,OAAO,QAAQC,OAAM,GAAG;AAC/C,QAAAH,KAAIC,MAAKC,MAAK;AAAA,MAClB;AAAA,IACJ,OACK;AACD,MAAAF,KAAI,KAAK,KAAK;AAAA,IAClB;AACA,SAAK,QAAQ;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,IAAI,KAAK;AACL,QAAI,KAAK,SAAS,+BAA+B;AAC7C,aAAO,YAAY,KAAK,OAAO,GAAG;AAAA,IACtC;AACA,WAAO,OAAO,KAAK;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,SAAS,MAAM;AACX,eAAW,OAAO,MAAM;AACpB,UAAI,QAAQ,KAAK,eAAe,GAAG,CAAC,GAAG;AACnC,aAAK,IAAI,KAAK,KAAK,eAAe,GAAG,CAAC;AAAA,MAC1C;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,OAAO,KAAK;AACR,UAAM,EAAE,MAAM,IAAI;AAClB,QAAI,KAAK,SAAS,+BAA+B;AAC7C,qBAAe,OAAO,GAAG;AAAA,IAC7B,OACK;AAED,aAAO,MAAM,GAAG;AAAA,IACpB;AACA,SAAK,QAAQ;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ;AACJ,SAAK,QAAQ,kBAAkB;AAC/B,eAAW,OAAO,OAAO,KAAK,KAAK,cAAc,GAAG;AAChD,WAAK,MAAM,GAAG;AAAA,IAClB;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,YAAY,KAAK,UAAU;AACvB,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAM,IAAI,UAAU,kDAAkD,OAAO,GAAG,EAAE;AAAA,IACtF;AACA,QAAI,OAAO,aAAa,YAAY;AAChC,YAAM,IAAI,UAAU,yDAAyD,OAAO,QAAQ,EAAE;AAAA,IAClG;AACA,WAAO,KAAK,cAAc,MAAM,KAAK,IAAI,GAAG,GAAG,QAAQ;AAAA,EAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,eAAe,UAAU;AACrB,QAAI,OAAO,aAAa,YAAY;AAChC,YAAM,IAAI,UAAU,yDAAyD,OAAO,QAAQ,EAAE;AAAA,IAClG;AACA,WAAO,KAAK,cAAc,MAAM,KAAK,OAAO,QAAQ;AAAA,EACxD;AAAA,EACA,IAAI,OAAO;AACP,WAAO,OAAO,KAAK,KAAK,KAAK,EAAE;AAAA,EACnC;AAAA,EACA,IAAI,QAAQ;AACR,QAAI;AACA,YAAM,OAAO,gBAAAI,QAAG,aAAa,KAAK,MAAM,KAAK,iBAAiB,OAAO,MAAM;AAC3E,YAAM,aAAa,KAAK,aAAa,IAAI;AACzC,YAAM,mBAAmB,KAAK,aAAa,UAAU;AACrD,WAAK,UAAU,gBAAgB;AAC/B,aAAO,OAAO,OAAO,kBAAkB,GAAG,gBAAgB;AAAA,IAC9D,SACOC,SAAO;AACV,UAAIA,SAAO,SAAS,UAAU;AAC1B,aAAK,iBAAiB;AACtB,eAAO,kBAAkB;AAAA,MAC7B;AACA,UAAI,KAAK,SAAS,sBAAsBA,QAAM,SAAS,eAAe;AAClE,eAAO,kBAAkB;AAAA,MAC7B;AACA,YAAMA;AAAA,IACV;AAAA,EACJ;AAAA,EACA,IAAI,MAAM,OAAO;AACb,SAAK,iBAAiB;AACtB,SAAK,UAAU,KAAK;AACpB,SAAK,OAAO,KAAK;AACjB,SAAK,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,EACjD;AAAA,EACA,EAAE,OAAO,QAAQ,IAAI;AACjB,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,KAAK,GAAG;AACnD,YAAM,CAAC,KAAK,KAAK;AAAA,IACrB;AAAA,EACJ;AAAA,EACA,aAAa,MAAM;AACf,QAAI,CAAC,KAAK,gBAAgB;AACtB,aAAO,OAAO,SAAS,WAAW,OAAO,mBAAmB,IAAI;AAAA,IACpE;AAEA,QAAI;AACA,YAAM,uBAAuB,KAAK,MAAM,GAAG,EAAE;AAC7C,YAAM,WAAW,oBAAAC,QAAO,WAAW,KAAK,gBAAgB,qBAAqB,SAAS,GAAG,KAAO,IAAI,QAAQ;AAC5G,YAAM,WAAW,oBAAAA,QAAO,iBAAiB,qBAAqB,UAAU,oBAAoB;AAC5F,YAAM,QAAQ,KAAK,MAAM,EAAE;AAC3B,YAAM,aAAa,OAAO,UAAU,WAAW,mBAAmB,KAAK,IAAI;AAC3E,aAAO,mBAAmB,kBAAkB,CAAC,SAAS,OAAO,UAAU,GAAG,SAAS,MAAM,CAAC,CAAC,CAAC;AAAA,IAChG,QACM;AAAA,IAAE;AACR,WAAO,KAAK,SAAS;AAAA,EACzB;AAAA,EACA,cAAc,QAAQ,UAAU;AAC5B,QAAI,eAAe,OAAO;AAC1B,UAAM,WAAW,MAAM;AACnB,YAAM,WAAW;AACjB,YAAM,WAAW,OAAO;AACxB,cAAI,qCAAkB,UAAU,QAAQ,GAAG;AACvC;AAAA,MACJ;AACA,qBAAe;AACf,eAAS,KAAK,MAAM,UAAU,QAAQ;AAAA,IAC1C;AACA,SAAK,OAAO,iBAAiB,UAAU,QAAQ;AAC/C,WAAO,MAAM;AACT,WAAK,OAAO,oBAAoB,UAAU,QAAQ;AAAA,IACtD;AAAA,EACJ;AAAA,EACA,eAAe,WAAS,KAAK,MAAM,KAAK;AAAA,EACxC,aAAa,WAAS,KAAK,UAAU,OAAO,QAAW,GAAI;AAAA,EAC3D,UAAU,MAAM;AACZ,QAAI,CAAC,KAAK,YAAY;AAClB;AAAA,IACJ;AACA,UAAM,QAAQ,KAAK,WAAW,IAAI;AAClC,QAAI,SAAS,CAAC,KAAK,WAAW,QAAQ;AAClC;AAAA,IACJ;AACA,UAAM,SAAS,KAAK,WAAW,OAC1B,IAAI,CAAC,EAAE,cAAc,UAAU,GAAG,MAAM,KAAK,aAAa,MAAM,CAAC,CAAC,MAAM,OAAO,EAAE;AACtF,UAAM,IAAI,MAAM,8BAA8B,OAAO,KAAK,IAAI,CAAC;AAAA,EACnE;AAAA,EACA,mBAAmB;AAEf,oBAAAF,QAAG,UAAU,mBAAAN,QAAK,QAAQ,KAAK,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAAA,EAC7D;AAAA,EACA,OAAO,OAAO;AACV,QAAI,OAAO,KAAK,WAAW,KAAK;AAChC,QAAI,KAAK,gBAAgB;AACrB,YAAM,uBAAuB,oBAAAQ,QAAO,YAAY,EAAE;AAClD,YAAM,WAAW,oBAAAA,QAAO,WAAW,KAAK,gBAAgB,qBAAqB,SAAS,GAAG,KAAO,IAAI,QAAQ;AAC5G,YAAM,SAAS,oBAAAA,QAAO,eAAe,qBAAqB,UAAU,oBAAoB;AACxF,aAAO,kBAAkB,CAAC,sBAAsB,mBAAmB,GAAG,GAAG,OAAO,OAAO,mBAAmB,IAAI,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;AAAA,IACrI;AAGA,QAAI,qBAAAC,QAAQ,IAAI,MAAM;AAClB,sBAAAH,QAAG,cAAc,KAAK,MAAM,MAAM,EAAE,MAAM,KAAK,SAAS,eAAe,CAAC;AAAA,IAC5E,OACK;AACD,UAAI;AACA,QAAAI,eAAoB,KAAK,MAAM,MAAM,EAAE,MAAM,KAAK,SAAS,eAAe,CAAC;AAAA,MAC/E,SACOH,SAAO;AAIV,YAAIA,SAAO,SAAS,SAAS;AACzB,0BAAAD,QAAG,cAAc,KAAK,MAAM,MAAM,EAAE,MAAM,KAAK,SAAS,eAAe,CAAC;AACxE;AAAA,QACJ;AACA,cAAMC;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AAAA,EACA,SAAS;AACL,SAAK,iBAAiB;AACtB,QAAI,CAAC,gBAAAD,QAAG,WAAW,KAAK,IAAI,GAAG;AAC3B,WAAK,OAAO,kBAAkB,CAAC;AAAA,IACnC;AACA,QAAI,qBAAAG,QAAQ,aAAa,SAAS;AAC9B,sBAAAH,QAAG,MAAM,KAAK,MAAM,EAAE,YAAY,MAAM,GAAG,oBAAW,MAAM;AAExD,aAAK,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,MACjD,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC;AAAA,IACrB,OACK;AACD,sBAAAA,QAAG,UAAU,KAAK,MAAM,EAAE,YAAY,MAAM,GAAG,oBAAW,MAAM;AAC5D,aAAK,OAAO,cAAc,IAAI,MAAM,QAAQ,CAAC;AAAA,MACjD,GAAG,EAAE,MAAM,IAAK,CAAC,CAAC;AAAA,IACtB;AAAA,EACJ;AAAA,EACA,SAAS,YAAY,kBAAkB,qBAAqB;AACxD,QAAI,0BAA0B,KAAK,KAAK,eAAe,OAAO;AAC9D,UAAM,gBAAgB,OAAO,KAAK,UAAU,EACvC,OAAO,sBAAoB,KAAK,wBAAwB,kBAAkB,yBAAyB,gBAAgB,CAAC;AACzH,QAAI,cAAc,EAAE,GAAG,KAAK,MAAM;AAClC,eAAWK,YAAW,eAAe;AACjC,UAAI;AACA,YAAI,qBAAqB;AACrB,8BAAoB,MAAM;AAAA,YACtB,aAAa;AAAA,YACb,WAAWA;AAAA,YACX,cAAc;AAAA,YACd,UAAU;AAAA,UACd,CAAC;AAAA,QACL;AACA,cAAM,YAAY,WAAWA,QAAO;AACpC,oBAAY,IAAI;AAChB,aAAK,KAAK,eAAeA,QAAO;AAChC,kCAA0BA;AAC1B,sBAAc,EAAE,GAAG,KAAK,MAAM;AAAA,MAClC,SACOJ,SAAO;AACV,aAAK,QAAQ;AACb,cAAM,IAAI,MAAM,yHAAyHA,OAAK,EAAE;AAAA,MACpJ;AAAA,IACJ;AACA,QAAI,KAAK,wBAAwB,uBAAuB,KAAK,CAAC,cAAAK,QAAO,GAAG,yBAAyB,gBAAgB,GAAG;AAChH,WAAK,KAAK,eAAe,gBAAgB;AAAA,IAC7C;AAAA,EACJ;AAAA,EACA,qBAAqB,KAAK;AACtB,QAAI,OAAO,QAAQ,UAAU;AACzB,YAAM,UAAU,OAAO,KAAK,GAAG,EAAE,CAAC;AAClC,UAAI,YAAY,cAAc;AAC1B,eAAO;AAAA,MACX;AAAA,IACJ;AACA,QAAI,OAAO,QAAQ,UAAU;AACzB,aAAO;AAAA,IACX;AACA,QAAI,KAAK,SAAS,+BAA+B;AAC7C,UAAI,IAAI,WAAW,GAAG,YAAY,GAAG,GAAG;AACpC,eAAO;AAAA,MACX;AACA,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EACA,wBAAwBD,UAAS;AAC7B,WAAO,cAAAC,QAAO,MAAMD,QAAO,MAAM;AAAA,EACrC;AAAA,EACA,wBAAwB,kBAAkB,yBAAyB,kBAAkB;AACjF,QAAI,KAAK,wBAAwB,gBAAgB,GAAG;AAChD,UAAI,4BAA4B,WAAW,cAAAC,QAAO,UAAU,yBAAyB,gBAAgB,GAAG;AACpG,eAAO;AAAA,MACX;AACA,aAAO,cAAAA,QAAO,UAAU,kBAAkB,gBAAgB;AAAA,IAC9D;AACA,QAAI,cAAAA,QAAO,IAAI,kBAAkB,uBAAuB,GAAG;AACvD,aAAO;AAAA,IACX;AACA,QAAI,cAAAA,QAAO,GAAG,kBAAkB,gBAAgB,GAAG;AAC/C,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA,EACA,KAAK,KAAK,cAAc;AACpB,WAAO,YAAY,KAAK,OAAO,KAAK,YAAY;AAAA,EACpD;AAAA,EACA,KAAK,KAAK,OAAO;AACb,UAAM,EAAE,MAAM,IAAI;AAClB,gBAAY,OAAO,KAAK,KAAK;AAC7B,SAAK,QAAQ;AAAA,EACjB;AACJ;;;ADxaA;AAoBA,IAAIC,UAAmC;AAEvC,SAAS,YAA+B;AACpC,MAAI,CAACA,SAAQ;AACT,IAAAA,UAAS,IAAI,KAAkB;AAAA,MAC3B,aAAa;AAAA,MACb,UAAU;AAAA,QACN,UAAU;AAAA,MACd;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAOA;AACX;AAMO,SAAS,kBAAkB,WAAoB,OAAO,aAA8D;AACvH,QAAM,OAAO,WAAAC,QAAG,QAAQ;AACxB,QAAM,WAAW,YAAY,CAAC,cACxB,cAAAC,QAAK,KAAK,MAAM,OAAO,IACvB,cAAAA,QAAK,KAAK,aAAa,OAAO;AACpC,QAAM,YAAY,WAAW,YAAY;AAEzC,SAAO,CAAC,EAAE,OAAO,WAAW,MAAM,SAAS,CAAC;AAChD;AAEA,eAAsB,WAAW,UAA6B,CAAC,GAAqB;AAChF,QAAM,EAAE,oBAAoB,MAAM,WAAW,OAAO,YAAY,IAAI;AACpE,QAAM,aAAa,kBAAkB,UAAU,WAAW;AAC1D,QAAM,eAAe,UAAU;AAC/B,QAAM,gBAAgB,WAAW,IAAI,OAAK,EAAE,IAAI;AAEhD,MAAI,mBAAmB;AACnB,eAAW,UAAU,eAAe;AAChC,YAAM,kBAAAC,QAAG,UAAU,MAAM;AAAA,IAC7B;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,SAAS;AAAA,IACT,UAAU,aAAa,IAAI,UAAU;AAAA,IACrC,QAAQ;AAAA,EACZ;AACJ;AACO,SAAS,eAAqB;AACjC,YAAU,EAAE,MAAM;AAClB,UAAQ,IAAI,cAAM,OAAO,wBAAwB,CAAC;AACtD;;;AuB3EA,IAAAC,gBAAgC;AAChC,IAAAC,oBAAe;;;ACDf,oBAA2B;AAC3B,IAAAC,oBAAe;AACf,IAAAC,gBAAqB;AAErB,eAAsBC,UAAS,UAAmC;AAC9D,QAAM,UAAU,MAAM,kBAAAC,QAAG,SAAS,QAAQ;AAC1C,aAAO,0BAAW,KAAK,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AACzD;AAEA,eAAsB,cAAc,SAAkC;AAClE,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,OAAO,EAAI,QAAO;AAC5C,QAAM,QAAQ,MAAM,kBAAAA,QAAG,KAAK,OAAO;AAEnC,MAAI,CAAC,MAAM,YAAY,GAAG;AACtB,WAAOD,UAAS,OAAO;AAAA,EAC3B;AAEA,QAAM,WAAW,MAAM,kBAAAC,QAAG,QAAQ,OAAO;AACzC,QAAM,cAAc,MAAM,QAAQ;AAAA,IAC9B,SAAS,KAAK,EAAE,IAAI,OAAO,UAAU;AACjC,YAAM,IAAI,MAAM,kBAAc,oBAAK,SAAS,KAAK,CAAC;AAClD,aAAO,GAAG,KAAK,IAAI,CAAC;AAAA,IACxB,CAAC;AAAA,EACL;AACA,aAAO,0BAAW,KAAK,EAAE,OAAO,YAAY,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK;AACvE;AAEA,eAAsB,eAAe,YAAqC;AACtE,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,UAAU,EAAI,QAAO;AAE/C,QAAM,QAAQ,MAAM,kBAAAA,QAAG,KAAK,UAAU;AACtC,MAAI,UAAU;AAEd,MAAI,MAAM,YAAY,GAAG;AACrB,UAAM,WAAW,MAAM,kBAAAA,QAAG,QAAQ,UAAU;AAC5C,eAAW,SAAS,UAAU;AAC1B,YAAM,YAAY,MAAM,mBAAe,oBAAK,YAAY,KAAK,CAAC;AAC9D,UAAI,YAAY,QAAS,WAAU;AAAA,IACvC;AAAA,EACJ;AACA,SAAO;AACX;;;ACzCA,IAAAC,gBAAqB;;;ACed,IAAe,cAAf,MAA2B;AAalC;;;ADzBO,IAAM,gBAAN,cAA4B,YAAY;AAAA,EAClC,WAAW;AAAA,EACX,cAAc;AAAA,EACd;AAAA,EAET,YAAY,SAAiB;AACzB,UAAM;AACN,SAAK,SAAS,EAAE,MAAM,KAAK,UAAU,SAAS,aAAa,KAAK,YAAY;AAAA,EAChF;AAAA,EAEA,eAAuB;AACnB,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEA,eAAuB;AACnB,eAAO,oBAAK,KAAK,OAAO,SAAS,QAAQ;AAAA,EAC7C;AAAA,EAEA,cAAsB;AAClB,eAAO,oBAAK,KAAK,OAAO,SAAS,OAAO;AAAA,EAC5C;AAAA,EAEA,iBAAyB;AACrB,eAAO,oBAAK,KAAK,OAAO,SAAS,UAAU;AAAA,EAC/C;AAAA,EAEA,kBAAuC;AACnC,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK;AAAA,MACL,UAAU;AAAA;AAAA,IACd;AAAA,EACJ;AACJ;;;AE1BO,SAAS,cAAc,YAAwC;AAElE,QAAM,aAAa,WAAW,QAAQ,OAAO,GAAG,EAAE,YAAY;AAE9D,MAAI,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,SAAS,GAAG;AAClE,WAAO,IAAI,cAAc,UAAU;AAAA,EACvC;AAEA,SAAO;AACX;;;AJbA,IAAM,gBAAgB,oBAAI,IAAI,CAAC,eAAe,aAAa,aAAa,YAAY,cAAc,CAAC;AAE5F,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC1C,YAAYC,QAAc;AACtB,UAAM,eAAeA,MAAI,+DAA0D;AACnF,SAAK,OAAO;AAAA,EAChB;AACJ;AAEA,eAAsB,cAAc,UAAkB,YAAoB,YAAqB,OAA2B;AACtH,QAAM,UAAU,cAAc,UAAU;AACxC,QAAM,WAAW,SAAS,aAAa;AAEvC,QAAM,YAAuB;AAAA,IACzB,QAAQ,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,IAC3D,OAAO,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,IAC1D,QAAQ,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,IAC3D,UAAU,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,EAAE;AAAA,EACjE;AAGA,QAAM,mBAAe,oBAAK,YAAY,6BAA6B;AACnE,MAAI,kBAAiD;AACrD,MAAI;AACA,QAAI,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACnC,YAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAC/C,UAAI,SAAS,cAAc,OAAO,SAAS,eAAe,UAAU;AAChE,0BAAkB,SAAS;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ,QAAQ;AAAA,EAER;AAGA,QAAM,UAAU,CAAC,UAAU,OAAO;AAClC,MAAI,CAAC,SAAU,SAAQ,KAAK,UAAU;AAEtC,aAAW,YAAY,SAAS;AAC5B,UAAM,eAAW,oBAAK,UAAU,QAAQ;AACxC,UAAM,iBAAa,oBAAK,YAAY,QAAQ;AAE5C,QAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,QAAQ,EAAI;AAEtC,UAAM,SAAS,MAAM,kBAAAA,QAAG,QAAQ,QAAQ,GAAG,OAAO,OAAK,CAAC,cAAc,IAAI,CAAC,CAAC;AAC5E,IAAC,UAAU,QAA2B,EAAU,QAAQ,MAAM;AAE9D,eAAW,QAAQ,OAAO;AACtB,YAAM;AAAA,QACF;AAAA,QACA;AAAA,YACA,oBAAK,UAAU,IAAI;AAAA,YACnB,oBAAK,YAAY,IAAI;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,gBAAgB;AAAA,IAClB,iBAAiB,EAAE,MAAM,wBAAwB,KAAK,gBAAgB;AAAA,EAC1E;AAEA,aAAW,CAAC,MAAM,KAAK,KAAK,OAAO,QAAQ,aAAa,GAAG;AAGvD,QAAI,SAAS,mBAAmB,YAAY,KAAM;AAElD,UAAM,mBAAe,oBAAK,UAAU,MAAM,IAAI;AAC9C,UAAM,qBAAiB,oBAAK,YAAY,MAAM,GAAG;AAEjD,QAAI,MAAM,kBAAAA,QAAG,WAAW,YAAY,GAAG;AACnC,YAAM,YAAY,UAAU,MAAM,cAAc,gBAAgB,WAAW,OAAO,eAAe;AAAA,IACrG;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,eAAe,YACX,UACA,MACA,UACA,YACA,WACA,YAAqB,OACrB,kBAAiD,MACpC;AACb,QAAM,MAAM,UAAU,QAAQ;AAE9B,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,UAAU,GAAI;AACpC,QAAI,QAAQ,KAAK,IAAI;AACrB;AAAA,EACJ;AAEA,QAAM,WAAW,MAAM,cAAc,QAAQ;AAG7C,MAAI;AACJ,MAAI;AACA,iBAAa,MAAM,cAAc,UAAU;AAAA,EAC/C,SAASC,SAAO;AACZ,QAAI,WAAW;AACX,YAAM,IAAI,mBAAmB,UAAU;AAAA,IAC3C;AAEA,QAAI,QAAQ,KAAK,IAAI;AACrB;AAAA,EACJ;AAEA,MAAI,aAAa,YAAY;AACzB,UAAM,cAAc,GAAG,QAAQ,IAAI,IAAI;AACvC,UAAM,gBAAgB,kBAAkB,WAAW;AAEnD,QAAI,kBAAkB,QAAW;AAE7B,UAAI,eAAe,eAAe;AAE9B,YAAI,QAAQ,KAAK,IAAI;AAAA,MACzB,OAAO;AAEH,YAAI,SAAS,KAAK,IAAI;AAAA,MAC1B;AAAA,IACJ,OAAO;AAEH,YAAM,YAAY,MAAM,eAAe,QAAQ;AAC/C,YAAM,cAAc,MAAM,eAAe,UAAU;AAEnD,UAAI,cAAc,YAAY,KAAM;AAChC,YAAI,QAAQ,KAAK,IAAI;AAAA,MACzB,OAAO;AACH,YAAI,SAAS,KAAK,IAAI;AAAA,MAC1B;AAAA,IACJ;AAAA,EACJ;AACJ;;;AKhJA,IAAAC,6BAA0B;AAC1B,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,kBAAiB;AAajB,IAAM,gBAAgB;AACtB,IAAM,cAAc;AAAA;AAAA;AAAA;AAAA,EAIlB,aAAa;AAAA;AAGf,SAAS,gBAAgB,KAAsC;AAC7D,QAAM,SAAS,IAAI,KAAK,IAAI,YAAAC,QAAK,MAAM,GAAG,IAAI,CAAC;AAC/C,MAAI,CAAC,UAAU,OAAO,WAAW,YAAY,MAAM,QAAQ,MAAM,EAAG,QAAO,CAAC;AAC5E,SAAO;AACT;AAEA,eAAe,2BAA2B,UAAkB,OAA8E;AACxI,QAAM,WAAW,mBAAAC,QAAK,KAAK,UAAU,QAAQ;AAC7C,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,QAAQ,EAAG,QAAO,EAAE,SAAS,OAAO,OAAO,iBAAiB;AAErF,QAAM,aAAa,mBAAAD,QAAK,KAAK,UAAU,aAAa;AACpD,QAAM,MAAM,MAAM,kBAAAC,QAAG,WAAW,UAAU,IAAI,MAAM,kBAAAA,QAAG,SAAS,YAAY,MAAM,IAAI;AACtF,QAAMC,UAAS,gBAAgB,GAAG;AAElC,MAAIA,QAAO,gBAAgB,MAAM,MAAO,QAAO,EAAE,SAAS,OAAO,OAAO,mBAAmB;AAC3F,MAAI,CAAC,MAAO,QAAO,EAAE,SAAS,MAAM,OAAO,UAAU;AAErD,QAAM,kBAAAD,QAAG,UAAU,QAAQ;AAC3B,QAAM,kBAAAA,QAAG,UAAU,YAAY,YAAAF,QAAK,UAAU,EAAE,GAAGG,SAAQ,kBAAkB,MAAM,CAAC,GAAG,MAAM;AAC7F,SAAO,EAAE,SAAS,MAAM,OAAO,UAAU;AAC3C;AAEA,SAAS,UAAU,UAAkB,MAA+B;AAClE,QAAM,aAAS,sCAAU,OAAO,MAAM;AAAA,IACpC,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACX,CAAC;AACD,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,UAAQ,OAAO,UAAU,IAAI,KAAK;AACpC;AAEA,SAAS,gBAAgB,UAA2D;AAClF,QAAM,YAAY,UAAU,UAAU,CAAC,UAAU,SAAS,gBAAgB,CAAC;AAC3E,QAAM,sBAAsB,WAAW,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAE5E,MAAI,WAAW;AACb,UAAM,WAAW,mBAAAF,QAAK,WAAW,SAAS,IAAI,YAAY,mBAAAA,QAAK,KAAK,UAAU,SAAS;AACvF,UAAM,WAAW,mBAAAA,QAAK,KAAK,UAAU,YAAY;AACjD,QAAI,wBAAwB,wBAAwB,kBAAkB,oBAAoB,SAAS,eAAe,IAAI;AACpH,UAAI,kBAAAC,QAAG,WAAW,QAAQ,EAAG,QAAO,EAAE,SAAS;AAC/C,aAAO;AAAA,QACL,SAAS,4BAA4B,SAAS;AAAA,MAChD;AAAA,IACF;AACA,WAAO,EAAE,SAAS;AAAA,EACpB;AAEA,QAAM,kBAAkB,UAAU,UAAU,CAAC,aAAa,kBAAkB,CAAC;AAC7E,MAAI,CAAC,gBAAiB,QAAO,EAAE,SAAS,wCAAwC;AAChF,QAAM,eAAe,mBAAAD,QAAK,WAAW,eAAe,IAChD,kBACA,mBAAAA,QAAK,KAAK,UAAU,eAAe;AACvC,SAAO,EAAE,UAAU,mBAAAA,QAAK,KAAK,cAAc,SAAS,YAAY,EAAE;AACpE;AAEA,eAAe,gBAAgB,UAAkB,OAAmH;AAClK,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,mBAAAD,QAAK,KAAK,UAAU,QAAQ,CAAC,GAAG;AACvD,WAAO,EAAE,SAAS,OAAO,OAAO,kBAAkB,UAAU,CAAC,EAAE;AAAA,EACjE;AAEA,QAAM,WAAW,gBAAgB,QAAQ;AACzC,MAAI,CAAC,SAAS,UAAU;AACtB,WAAO,EAAE,SAAS,OAAO,OAAO,4BAA4B,UAAU,CAAC,SAAS,WAAW,uCAAuC,EAAE;AAAA,EACtI;AAEA,QAAM,WAAW,MAAM,kBAAAC,QAAG,WAAW,SAAS,QAAQ,IAAI,MAAM,kBAAAA,QAAG,SAAS,SAAS,UAAU,MAAM,IAAI;AACzG,MAAI,SAAS,SAAS,aAAa,GAAG;AACpC,WAAO,EAAE,SAAS,OAAO,OAAO,mBAAmB,UAAU,SAAS,UAAU,UAAU,CAAC,EAAE;AAAA,EAC/F;AAEA,MAAI,CAAC,OAAO;AACV,WAAO,EAAE,SAAS,MAAM,OAAO,WAAW,UAAU,SAAS,UAAU,UAAU,CAAC,EAAE;AAAA,EACtF;AAEA,QAAM,OAAO,SAAS,KAAK,EAAE,SAAS,IAClC,SAAS,QAAQ,QAAQ,MAAM,IAC/B;AACJ,QAAM,kBAAAA,QAAG,UAAU,mBAAAD,QAAK,QAAQ,SAAS,QAAQ,CAAC;AAClD,QAAM,kBAAAC,QAAG,UAAU,SAAS,UAAU,GAAG,IAAI,GAAG,WAAW;AAAA,GAAM,MAAM;AACvE,QAAM,kBAAAA,QAAG,MAAM,SAAS,UAAU,GAAK;AACvC,SAAO,EAAE,SAAS,MAAM,OAAO,WAAW,UAAU,SAAS,UAAU,UAAU,CAAC,EAAE;AACtF;AAEA,eAAsB,uBAAuB,UAAkB,OAAiD;AAC9G,QAAMC,UAAS,MAAM,2BAA2B,UAAU,KAAK;AAC/D,QAAM,OAAO,MAAM,gBAAgB,UAAU,KAAK;AAElD,SAAO;AAAA,IACL,SAASA,QAAO,WAAW,KAAK;AAAA,IAChC,QAAQA,QAAO;AAAA,IACf,MAAM,KAAK;AAAA,IACX,UAAU,KAAK;AAAA,IACf,UAAU,KAAK;AAAA,EACjB;AACF;AAEO,SAAS,0BAA0B,QAAwC;AAChF,QAAM,QAAQ,CAAC,sBAAsB,OAAO,MAAM,IAAI,oBAAoB,OAAO,IAAI,EAAE;AACvF,MAAI,OAAO,SAAU,OAAM,KAAK,QAAQ,OAAO,QAAQ,EAAE;AACzD,MAAI,OAAO,SAAS,SAAS,EAAG,OAAM,KAAK,YAAY,OAAO,SAAS,MAAM,EAAE;AAC/E,SAAO,MAAM,KAAK,IAAI;AACxB;;;AC/HA,IAAAC,6BAA0B;AAC1B,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB;AA2BA,IAAM,QAAQ;AAAA,EACZ,EAAE,IAAI,MAAe,KAAK,MAAM,aAAa,aAAa,aAAa,CAAC,WAAW,EAAE;AAAA,EACrF,EAAE,IAAI,YAAqB,KAAK,YAAY,aAAa,YAAY,aAAa,CAAC,WAAW,EAAE;AAClG;AAEA,SAASC,KAAI,SAAiB,MAAgB,KAAa,UAAU,KAAqC;AACxG,aAAO,sCAAU,SAAS,MAAM;AAAA,IAC9B;AAAA,IACA,UAAU;AAAA,IACV,OAAO;AAAA,IACP;AAAA,EACF,CAAC;AACH;AAEA,SAAS,eAAe,MAAkC;AACxD,SAAO,KAAK,MAAM,sCAAsC,IAAI,CAAC;AAC/D;AAEA,SAAS,MAAMC,UAAsC;AACnD,MAAI,CAACA,SAAS,QAAO;AACrB,QAAM,SAAS,OAAOA,SAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAC3C,SAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAC5C;AAEA,SAAS,gBAAgB,WAAoB,QAAqE;AAChH,MAAI,CAAC,UAAW,QAAO,EAAE,OAAO,WAAW,cAAc,MAAM;AAC/D,MAAI,CAAC,OAAQ,QAAO,EAAE,OAAO,WAAW,cAAc,MAAM;AAC5D,MAAI,cAAc,OAAQ,QAAO,EAAE,OAAO,WAAW,cAAc,MAAM;AAEzE,QAAM,iBAAiB,MAAM,SAAS;AACtC,QAAM,cAAc,MAAM,MAAM;AAChC,SAAO;AAAA,IACL,OAAO,cAAc,SAAS,YAAY;AAAA,IAC1C,cAAc,mBAAmB,UAAa,gBAAgB,UAAa,cAAc;AAAA,EAC3F;AACF;AAEA,IAAM,qBAAqB,oBAAI,IAAgC;AAE/D,SAAS,qBAAqB,aAAqB,KAAiC;AAClF,MAAI,mBAAmB,IAAI,WAAW,EAAG,QAAO,mBAAmB,IAAI,WAAW;AAClF,QAAM,SAASD,KAAI,OAAO,CAAC,QAAQ,aAAa,SAAS,GAAG,KAAK,GAAI;AACrE,QAAMC,WAAU,OAAO,WAAW,IAAI,eAAe,OAAO,OAAO,UAAU,EAAE,CAAC,IAAI;AACpF,qBAAmB,IAAI,aAAaA,QAAO;AAC3C,SAAOA;AACT;AAEA,SAAS,UAAU,MAA4B,KAAoC;AACjF,QAAM,YAAYD,KAAI,KAAK,KAAK,KAAK,aAAa,KAAK,GAAI;AAC3D,QAAM,mBAAmB,UAAU,WAAW,IAC1C,eAAe,GAAG,UAAU,UAAU,EAAE;AAAA,EAAK,UAAU,UAAU,EAAE,EAAE,IACrE;AAEJ,QAAM,gBAAgB,qBAAqB,KAAK,aAAa,GAAG;AAChE,QAAM,aAAa,gBAAgB,kBAAkB,aAAa;AAElE,SAAO;AAAA,IACL,IAAI,KAAK;AAAA,IACT,KAAK,KAAK;AAAA,IACV,aAAa,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,IACA,OAAO,WAAW;AAAA,IAClB,cAAc,WAAW;AAAA,IACzB,SAAS,gBAAgB,SAAY;AAAA,EACvC;AACF;AAGA,SAAS,YAAY,MAA6B,KAAoC;AACpF,MAAI,KAAK,UAAU,aAAa,KAAK,UAAU,WAAY,QAAO;AAClE,MAAI,KAAK,cAAc;AACrB,WAAO,EAAE,GAAG,MAAM,OAAO,WAAW,SAAS,+CAA+C;AAAA,EAC9F;AAEA,QAAM,UAAUA,KAAI,OAAO,CAAC,WAAW,MAAM,KAAK,WAAW,GAAG,KAAK,IAAM;AAC3E,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO;AAAA,MACP,SAAS,GAAG,QAAQ,UAAU,QAAQ,UAAU,sBAAsB,QAAQ,MAAM,EAAE,GAAG,KAAK;AAAA,IAChG;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,KAAK,eAAa,UAAU,OAAO,KAAK,EAAE;AAClE,SAAO,YAAY,UAAU,WAAW,GAAG,IAAI,EAAE,GAAG,MAAM,OAAO,UAAU;AAC7E;AAEA,SAAS,YAAY,UAAkB,OAA0D;AAC/F,MAAI,CAAC,kBAAAE,QAAG,eAAe,mBAAAC,QAAK,KAAK,UAAU,QAAQ,CAAC,EAAG,QAAO,EAAE,OAAO,WAAW,SAAS,sBAAsB;AACjH,QAAM,OAAO,QAAQ,CAAC,UAAU,SAAS,OAAO,IAAI,CAAC,UAAU,WAAW;AAC1E,QAAM,SAASH,KAAI,MAAM,MAAM,UAAU,GAAK;AAC9C,MAAI,OAAO,MAAO,QAAO,EAAE,OAAO,UAAU,SAAS,OAAO,MAAM,QAAQ;AAC1E,MAAI,OAAO,WAAW,EAAG,QAAO,EAAE,OAAO,QAAQ,YAAY,UAAU;AACvE,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS,GAAG,OAAO,UAAU,OAAO,UAAU,oBAAoB,OAAO,MAAM,EAAE,GAAG,KAAK;AAAA,EAC3F;AACF;AAEA,SAAS,kBAAkB,UAAkB,OAA+D;AAC1G,QAAM,SAASA,KAAI,YAAY,CAAC,QAAQ,GAAG,UAAU,GAAK;AAC1D,MAAI,OAAO,MAAO,QAAO,EAAE,OAAO,WAAW,SAAS,OAAO,MAAM,QAAQ;AAE3E,QAAM,OAAO,GAAG,OAAO,UAAU,EAAE;AAAA,EAAK,OAAO,UAAU,EAAE,GAAG,YAAY;AAC1E,QAAM,eAAe,OAAO,WAAW,KAAK,KAAK,SAAS,OAAO,KAAK,KAAK,SAAS,aAAa,KAAK,KAAK,SAAS,SAAS,KAAK,KAAK,SAAS,QAAQ;AACxJ,MAAI,CAAC,aAAc,QAAO,EAAE,OAAO,UAAU;AAC7C,MAAI,CAAC,MAAO,QAAO,EAAE,OAAO,YAAY,SAAS,+BAA+B;AAEhF,QAAM,UAAUA,KAAI,YAAY,CAAC,SAAS,GAAG,UAAU,IAAM;AAC7D,MAAI,QAAQ,WAAW,EAAG,QAAO,EAAE,OAAO,UAAU;AACpD,SAAO;AAAA,IACL,OAAO;AAAA,IACP,SAAS,GAAG,QAAQ,UAAU,QAAQ,UAAU,2BAA2B,QAAQ,MAAM,EAAE,GAAG,KAAK;AAAA,EACrG;AACF;AAEA,eAAsB,yBAAyB,UAAkB,OAAuD;AACtH,QAAM,eAAe,MAAM,IAAI,UAAQ,UAAU,MAAM,QAAQ,CAAC;AAChE,QAAM,QAAQ,QAAQ,aAAa,IAAI,UAAQ,YAAY,MAAM,QAAQ,CAAC,IAAI;AAC9E,SAAO;AAAA,IACL;AAAA,IACA,UAAU,YAAY,UAAU,KAAK;AAAA,IACrC,eAAe,kBAAkB,UAAU,KAAK;AAAA,EAClD;AACF;AAEO,SAAS,kCAAkC,SAA6C;AAC7F,UAAQ,IAAI,cAAM,KAAK,4BAA4B,CAAC;AACpD,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAE5C,aAAW,QAAQ,QAAQ,OAAO;AAChC,UAAM,WAAW,CAAC,KAAK,oBAAoB,WAAW,KAAK,gBAAgB,UAAU,KAAK,aAAa,KAAK,gBAAgB,EAAE,KAAK,KAAK;AACxI,UAAMI,SAAQ,KAAK,eAAe,oDAAoD;AACtF,YAAQ,IAAI,KAAK,KAAK,GAAG,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,OAAO,CAAC,CAAC,IAAI,cAAM,IAAI,QAAQ,CAAC,GAAG,cAAM,OAAOA,MAAK,CAAC,EAAE;AAAA,EAC3G;AAEA,UAAQ,IAAI,KAAK,YAAY,OAAO,CAAC,CAAC,IAAI,QAAQ,SAAS,KAAK,GAAG,QAAQ,SAAS,UAAU,cAAM,IAAI,WAAM,QAAQ,SAAS,OAAO,EAAE,IAAI,EAAE,EAAE;AAChJ,UAAQ,IAAI,KAAK,WAAW,OAAO,CAAC,CAAC,IAAI,QAAQ,cAAc,KAAK,GAAG,QAAQ,cAAc,UAAU,cAAM,IAAI,WAAM,QAAQ,cAAc,OAAO,EAAE,IAAI,EAAE,EAAE;AAChK;;;AvCtIA,IAAI;AAEJ,SAAS,iBAAyB;AAC9B,wBAAsBC,oBAAmB;AACzC,SAAO;AACX;AAMA,SAAS,qBAA6B;AAClC,SAAO,cAAAC,QAAK,KAAK,eAAe,GAAG,SAAS,UAAU,cAAc;AACxE;AAEA,IAAM,mBAAmB;AACzB,IAAM,iBAAiB;AAkBvB,SAAS,qBAAqB,SAA2B;AACrD,QAAM,QAAQ,QAAQ,MAAM,IAAI;AAChC,QAAM,WAAW,oBAAI,IAAY;AAEjC,MAAI,aAAa;AACjB,aAAW,QAAQ,OAAO;AACtB,UAAM,MAAM,KAAK,QAAQ,OAAO,MAAM;AAEtC,QAAI,CAAC,YAAY;AACb,UAAI,iBAAiB,KAAK,GAAG,GAAG;AAC5B,qBAAa;AAAA,MACjB;AACA;AAAA,IACJ;AAEA,QAAI,iBAAiB,KAAK,GAAG,KAAK,CAAC,iBAAiB,KAAK,GAAG,GAAG;AAC3D;AAAA,IACJ;AAEA,UAAM,eAAe,IAAI,MAAM,sCAAsC;AACrE,QAAI,cAAc;AACd,eAAS,IAAI,aAAa,CAAC,CAAC;AAAA,IAChC;AAAA,EACJ;AAEA,SAAO,CAAC,GAAG,QAAQ;AACvB;AAEA,eAAsB,sBAAsB,aAAsD;AAC9F,QAAM,gBAAgB,MAAM,kBAAAC,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,eAAe,CAAC;AAEjF,QAAM,YACF,MAAM,kBAAAD,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,gBAAgB,CAAC,KAC5D,MAAM,kBAAAD,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,UAAU,CAAC,KACtD,MAAM,kBAAAD,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,kBAAkB,CAAC;AAElE,QAAM,oBAAoB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AAEA,QAAM,iBAAiB,oBAAI,IAAY;AACvC,aAAW,eAAe,mBAAmB;AACzC,UAAM,cAAc,cAAAA,QAAK,KAAK,aAAa,WAAW;AACtD,QAAI,CAAC,MAAM,kBAAAD,QAAG,WAAW,WAAW,EAAG;AAEvC,QAAI;AACA,YAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,aAAa,MAAM;AACrD,iBAAW,WAAW,qBAAqB,OAAO,GAAG;AACjD,uBAAe,IAAI,OAAO;AAAA,MAC9B;AAAA,IACJ,QAAQ;AAAA,IAER;AAAA,EACJ;AAEA,QAAM,gBAAgB,MAAM,kBAAAA,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,YAAY,CAAC;AAC9E,MAAI,iBAAiB,eAAe,SAAS,GAAG;AAC5C,mBAAe,IAAI,cAAAA,QAAK,SAAS,WAAW,CAAC;AAAA,EACjD;AAEA,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,gBAAgB,CAAC,GAAG,cAAc;AAAA,IAClC,mBAAmB;AAAA,EACvB;AACJ;AA0IO,SAAS,mBACZ,aACA,WACA,cAAsB,kBACtB,YAAoB,gBACd;AACN,QAAM,iBAAiB,UAAU,KAAK;AACtC,QAAM,eAAe,GAAG,WAAW;AAAA,EAAK,cAAc;AAAA,EAAK,SAAS;AACpE,QAAM,eAAe,YAAY,QAAQ,wBAAwB,MAAM;AACvE,QAAM,aAAa,UAAU,QAAQ,wBAAwB,MAAM;AAUnE,QAAM,uBAAuB,IAAI,OAAO,GAAG,YAAY,YAAY,UAAU,IAAI,GAAG;AAEpF,MAAI,qBAAqB,KAAK,WAAW,GAAG;AACxC,WAAO,YAAY,QAAQ,sBAAsB,YAAY;AAAA,EACjE;AAEA,QAAM,UAAU,YAAY,UAAU;AACtC,MAAI,CAAC,QAAS,QAAO,GAAG,YAAY;AAAA;AACpC,SAAO,GAAG,YAAY;AAAA;AAAA,EAAO,OAAO;AACxC;AAEA,eAAsB,gCAAgC,aAAoC;AACtF,QAAM,UAAU;AAAA,IACZ,EAAE,QAAQ,aAAa,UAAU,gBAAgB;AAAA,IACjD,EAAE,QAAQ,aAAa,UAAU,gBAAgB;AAAA,EACrD;AAEA,UAAQ,IAAI,cAAM,KAAK,6CAA6C,CAAC;AAErE,aAAW,UAAU,SAAS;AAC1B,UAAM,eAAe,cAAAC,QAAK,KAAK,mBAAmB,GAAG,OAAO,QAAQ;AACpE,QAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACpC,cAAQ,IAAI,cAAM,OAAO,8BAAyB,OAAO,QAAQ,EAAE,CAAC;AACpE;AAAA,IACJ;AAEA,UAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,cAAc,MAAM;AACvD,UAAM,aAAa,cAAAD,QAAK,KAAK,aAAa,OAAO,MAAM;AACvD,UAAM,WAAW,MAAM,kBAAAC,QAAG,WAAW,UAAU,IAAI,MAAM,kBAAAA,QAAG,SAAS,YAAY,MAAM,IAAI;AAC3F,UAAM,OAAO,mBAAmB,UAAU,QAAQ;AAElD,QAAI,SAAS,UAAU;AACnB,cAAQ,IAAI,cAAM,IAAI,YAAO,OAAO,MAAM,qBAAqB,CAAC;AAChE;AAAA,IACJ;AAEA,UAAM,kBAAAA,QAAG,UAAU,YAAY,KAAK,SAAS,IAAI,IAAI,OAAO,GAAG,IAAI;AAAA,GAAM,MAAM;AAC/E,YAAQ,IAAI,GAAG,cAAM,MAAM,UAAK,CAAC,YAAY,OAAO,MAAM,EAAE;AAAA,EAChE;AACJ;AA4LA,eAAe,aAAa,aAAqB,MAA2C;AAExF,MAAI;AACJ,MAAI;AACA,eAAW,MAAM,aAAa;AAAA,EAClC,SAASC,SAAO;AACZ,UAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,UAAM,IAAI,MAAM,uBAAuB,OAAO,EAAE;AAAA,EACpD;AAGA,QAAM,gBAAgB,cAAc;AAIpC,MAAI,gBAAgB;AACpB,MAAI;AACA,UAAM,MAAM,MAAM,WAAW;AAAA,MACzB,mBAAmB;AAAA,MACnB,UAAU,KAAK;AAAA,MACf;AAAA;AAAA,IACJ,CAAC;AACD,eAAW,UAAU,IAAI,SAAS;AAC9B,UAAI;AACA,cAAM,YAAY,MAAM,cAAc,UAAU,QAAQ,KAAK;AAC7D,yBAAiB,OAAO,OAAO,SAAS,EAAE;AAAA,UACtC,CAAC,KAAK,MAAW,MAAM,EAAE,QAAQ,SAAS,EAAE,SAAS;AAAA,UAAQ;AAAA,QACjE;AAAA,MACJ,QAAQ;AAAA,MAA+C;AAAA,IAC3D;AAAA,EACJ,QAAQ;AAAA,EAAqC;AAG7C,QAAM,cAAc,CAAC,MAAM,kBAAAC,QAAG,WAAW,cAAAC,QAAK,KAAK,aAAa,QAAQ,CAAC;AAEzE,QAAM,qBAAiB,iCAAU,YAAY,CAAC,QAAQ,GAAG;AAAA,IACrD,KAAK;AAAA,IAAa,UAAU;AAAA,IAAQ,SAAS;AAAA,EACjD,CAAC;AACD,QAAM,SAAS,GAAG,eAAe,UAAU,EAAE;AAAA,EAAK,eAAe,UAAU,EAAE,GAAG,YAAY;AAC5F,QAAM,gBAAgB,eAAe,WAAW,KAC5C,OAAO,SAAS,OAAO,KAAK,OAAO,SAAS,aAAa,KAAK,OAAO,SAAS,SAAS;AAE3F,QAAM,WAAW,MAAM,sBAAsB,WAAW;AACxD,QAAM,eAAyB;AAAA,IAC3B,GAAI,SAAS,gBAAgB,CAAC,YAAY,IAAI,CAAC;AAAA,IAC/C,GAAI,SAAS,YAAY,CAAC,QAAQ,IAAI,CAAC;AAAA,EAC3C;AAEA,SAAO,EAAE,aAAa,eAAe,eAAe,aAAa,eAAe,aAAa;AACjG;AASA,SAAS,eAAe,WAAgC;AACpD,QAAM,EAAE,eAAe,eAAe,aAAa,eAAe,aAAa,IAAI;AAEnF,UAAQ,IAAI,cAAM,KAAK,wCAAmC,CAAC;AAC3D,UAAQ,IAAI,cAAM,IAAI,OAAO,SAAI,OAAO,EAAE,CAAC,CAAC;AAG5C,sBAAoB,aAAa;AAGjC,iCAA+B;AAG/B,UAAQ,IAAI,cAAM,KAAK,gBAAgB,CAAC;AACxC,UAAQ,IAAI,cAAM,IAAI,sCAAiC,CAAC;AACxD,UAAQ,IAAI,cAAM,IAAI,yFAAoF,CAAC;AAG3G,UAAQ,IAAI,cAAM,KAAK,YAAY,CAAC;AACpC,MAAI,gBAAgB,GAAG;AACnB,YAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,KAAK,aAAa,UAAU,kBAAkB,IAAI,MAAM,EAAE,UAAU;AAAA,EACxG,OAAO;AACH,YAAQ,IAAI,cAAM,IAAI,8BAAyB,CAAC;AAAA,EACpD;AAGA,UAAQ,IAAI,cAAM,KAAK,uBAAuB,CAAC;AAC/C,QAAM,cAAc;AAAA,IAChB,cAAc,8CAAyC;AAAA,IACvD,gBAAgB,6CAAwC;AAAA,IACxD;AAAA,EACJ,EAAE,OAAO,OAAO;AAChB,aAAW,UAAU,aAAa;AAC9B,YAAQ,IAAI,GAAG,cAAM,KAAK,UAAK,CAAC,KAAK,MAAM,EAAE;AAAA,EACjD;AAGA,UAAQ,IAAI,cAAM,KAAK,kBAAkB,CAAC;AAC1C,UAAQ,IAAI,cAAM,IAAI,2CAAsC,CAAC;AAE7D,MAAI,aAAa,SAAS,GAAG;AACzB,YAAQ,IAAI,cAAM,IAAI;AAAA,cAAiB,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EACrE;AAEA,UAAQ,IAAI,cAAM,IAAI,SAAS,SAAI,OAAO,EAAE,IAAI,IAAI,CAAC;AACzD;AAKA,eAAe,gBAAgB,KAAgC;AAC3D,SAAO,yBAAyB;AAAA,IAC5B;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,EACb,CAAC;AACL;AAMA,eAAe,oBAAoB,aAAqB,WAAmC;AACvF,MAAI,WAAW;AACX,UAAM,oBAAoB,WAAW;AAAA,EACzC;AACA,QAAM,gCAAgC,WAAW;AACjD,MAAI,WAAW;AACX,UAAM,0BAA0B,WAAW;AAAA,EAC/C;AAEA,QAAM,gBAAgB,MAAM,oBAAoB,aAAa,EAAE,OAAO,KAAK,CAAC;AAC5E,aAAW,QAAQ,cAAc,OAAO;AACpC,YAAQ,IAAI,KAAK,IAAI,EAAE;AAAA,EAC3B;AAEJ;AAEA,SAASC,qBAA6B;AAClC,SAAO,QAAQ,QAAQ,OAAO,SAAS,QAAQ,MAAM,KAAK;AAC9D;AAEA,eAAe,uBAAuB,KAAsF;AACxH,QAAM,MAAM,cAAAD,QAAK,QAAQ,QAAQ,IAAI,CAAC;AAEtC,MAAI;AACJ,MAAI;AACA,cAAU,eAAe;AAAA,EAC7B,QAAQ;AACJ,YAAQ,IAAI,cAAM,OAAO,+FAAqF,CAAC;AAC/G,YAAQ,IAAI,cAAM,IAAI,kDAAkD,CAAC;AACzE,WAAO,EAAE,aAAa,KAAK,WAAW,OAAO,SAAS,MAAM;AAAA,EAChE;AAEA,QAAM,kBAAkB,cAAAA,QAAK,QAAQ,OAAO;AAC5C,MAAI,oBAAoB,KAAK;AACzB,WAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,MAAM;AAAA,EAC3E;AAEA,UAAQ,IAAI,cAAM,OAAO,qCAAgC,CAAC;AAC1D,UAAQ,IAAI,cAAM,IAAI,iBAAiB,GAAG,EAAE,CAAC;AAC7C,UAAQ,IAAI,cAAM,IAAI,iBAAiB,eAAe,EAAE,CAAC;AAEzD,MAAI,KAAK;AACL,YAAQ,IAAI,cAAM,IAAI,qDAAqD,CAAC;AAC5E,WAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,MAAM;AAAA,EAC3E;AAEA,MAAI,CAACC,mBAAkB,GAAG;AACtB,YAAQ,IAAI,cAAM,IAAI,0DAA0D,CAAC;AACjF,YAAQ,IAAI,cAAM,IAAI,2FAA2F,CAAC;AAClH,WAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,KAAK;AAAA,EAC1E;AAEA,QAAM,EAAE,OAAO,IAAI,UAAM,gBAAAC,SAAQ;AAAA,IAC7B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACL,EAAE,OAAO,+BAA+B,OAAO,QAAQ;AAAA,MACvD,EAAE,OAAO,8CAA8C,OAAO,WAAW;AAAA,MACzE,EAAE,OAAO,0CAA0C,OAAO,UAAU;AAAA,IACxE;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AAED,MAAI,WAAW,YAAY;AACvB,UAAM,iBAAa,iCAAU,OAAO,CAAC,MAAM,GAAG;AAAA,MAC1C;AAAA,MACA,UAAU;AAAA,MACV,SAAS;AAAA,IACb,CAAC;AAED,QAAI,WAAW,WAAW,GAAG;AACzB,UAAI,WAAW,OAAQ,SAAQ,OAAO,MAAM,WAAW,MAAM;AAC7D,UAAI,WAAW,OAAQ,SAAQ,OAAO,MAAM,WAAW,MAAM;AAC7D,cAAQ,IAAI,cAAM,IAAI,wDAAmD,CAAC;AAC1E,cAAQ,IAAI,cAAM,IAAI,iDAAiD,CAAC;AACxE,aAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,KAAK;AAAA,IAC1E;AAEA,QAAI;AACA,YAAM,mBAAmB,eAAe;AACxC,cAAQ,IAAI,cAAM,MAAM,yCAAoC,gBAAgB,EAAE,CAAC;AAC/E,aAAO,EAAE,aAAa,cAAAF,QAAK,QAAQ,gBAAgB,GAAG,WAAW,MAAM,SAAS,MAAM;AAAA,IAC1F,QAAQ;AACJ,cAAQ,IAAI,cAAM,IAAI,oEAA+D,CAAC;AACtF,cAAQ,IAAI,cAAM,IAAI,6CAA6C,CAAC;AACpE,aAAO,EAAE,aAAa,KAAK,WAAW,MAAM,SAAS,KAAK;AAAA,IAC9D;AAAA,EACJ;AAEA,MAAI,WAAW,WAAW;AACtB,YAAQ,IAAI,cAAM,IAAI,8CAA8C,CAAC;AACrE,WAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,MAAM;AAAA,EAC3E;AAEA,UAAQ,IAAI,cAAM,IAAI,qBAAqB,CAAC;AAC5C,UAAQ,IAAI,cAAM,IAAI,sDAAsD,GAAG,cAAc,CAAC;AAC9F,UAAQ,IAAI,cAAM,IAAI,0CAA0C,eAAe;AAAA,CAAiB,CAAC;AACjG,SAAO,EAAE,aAAa,iBAAiB,WAAW,MAAM,SAAS,KAAK;AAC1E;AAcA,eAAsB,eAAe,OAAoB,CAAC,GAAkB;AACxE,QAAM,EAAE,SAAS,OAAO,MAAM,MAAM,IAAI;AACxC,QAAM,eAAe,OAAO,QAAQ,KAAK,SAAS,OAAO,KAAK,QAAQ,KAAK,SAAS,IAAI;AAExF,QAAM,iBAAiB,MAAM,uBAAuB,YAAY;AAChE,MAAI,eAAe,SAAS;AACxB;AAAA,EACJ;AAEA,QAAM,cAAc,eAAe;AACnC,QAAM,YAAY,eAAe;AAGjC,QAAM,YAAY,MAAM,aAAa,aAAa,IAAI;AAGtD,iBAAe,SAAS;AAExB,MAAI,QAAQ;AACR,YAAQ,IAAI,cAAM,IAAI,uCAAkC,CAAC;AACzD;AAAA,EACJ;AAGA,QAAMG,MAAK,MAAM,gBAAgB,YAAY;AAC7C,MAAI,CAACA,KAAI;AACL,YAAQ,IAAI,cAAM,IAAI,qBAAqB,CAAC;AAC5C;AAAA,EACJ;AAKA,QAAM,yBAAyB,EAAE,QAAQ,MAAM,CAAC;AAGhD,QAAM,0BAA0B,EAAE,UAAU,aAAa,QAAQ,OAAO,UAAU,MAAM,CAAC;AAGzF,QAAM,cAAc,eAAe;AACnC,QAAM,UAAU,MAAM,kBAAAJ,QAAG,SAAS,cAAAC,QAAK,KAAK,aAAa,cAAc,CAAC;AACxE,QAAM,oBAAoB;AAAA,IACtB,SAAS;AAAA,IACT,KAAK,QAAQ,IAAI;AAAA,IACjB,YAAY,QAAQ,WAAW;AAAA,EACnC,CAAC;AACD,QAAM,+BAA+B,aAAa,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AACnF,MAAI,qBAAqB,GAAG;AACxB,UAAM,8BAA8B,aAAa,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAClF,UAAM,2BAA2B;AACjC,UAAM,uBAAuB;AAAA,EACjC;AACA,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB,mBAAmB;AAAA,IACnB,UAAU,KAAK;AAAA,IACf;AAAA,EACJ,CAAC;AACD,QAAM,cAAc,IAAI,QAAQ,CAAC;AACjC,QAAM,eAAe,cAAAA,QAAK,KAAK,aAAa,SAAS,eAAe;AACpE,QAAMI,YAAW,MAAM,kBAAAL,QAAG,SAAS,YAAY;AAE/C,QAAM,uBAAuB,MAAM,oBAAoB;AAAA,IACnD;AAAA,IACA,UAAAK;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,eAAe,6BAA6B;AAAA,EAChD,CAAC;AACD,MAAI,qBAAqB,uBAAuB,GAAG;AAC/C,YAAQ,IAAI,cAAM,OAAO,8CAAyC,qBAAqB,oBAAoB,uBAAuB,qBAAqB,yBAAyB,IAAI,KAAK,GAAG,GAAG,CAAC;AAChM,YAAQ,IAAI,cAAM,OAAO,8FAA8F,CAAC;AAAA,EAC5H;AAEA,QAAM,iCAAiC,EAAE,aAAa,aAAa,QAAQ,MAAM,CAAC;AAElF,QAAM,UAAU,MAAM,qBAAqB,aAAa,EAAE,sBAAsB,KAAK,CAAC;AACtF,MAAI,QAAQ,WAAW;AACnB,UAAM,OAAO,QAAQ,cAAc,YAAY;AAC/C,YAAQ,IAAI,cAAM,IAAI,YAAO,IAAI,IAAI,QAAQ,OAAO,MAAM,QAAQ,aAAa,MAAM,UAAU,QAAQ,aAAa,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACnJ,WAAW,QAAQ,uBAAuB;AACtC,YAAQ,IAAI,cAAM,IAAI,+BAA0B,QAAQ,OAAO,EAAE,CAAC;AAAA,EACtE,OAAO;AACH,YAAQ,IAAI,cAAM,IAAI,YAAO,QAAQ,OAAO,qBAAqB,CAAC;AAAA,EACtE;AACA,aAAW,WAAW,QAAQ,oBAAoB;AAC9C,YAAQ,IAAI,cAAM,OAAO,uBAAkB,OAAO,EAAE,CAAC;AAAA,EACzD;AAGA,MAAI,KAAK,OAAO;AACZ,UAAM,oBAAoB;AAAA,MACtB,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACd,CAAC;AAAA,EACL;AAGA,QAAM,YAAY,MAAM,gBAAgB,WAAW;AACnD,MAAI,UAAU,WAAW;AACrB,UAAM,OAAO,UAAU,cAAc,YAAY;AACjD,YAAQ,IAAI,cAAM,IAAI,YAAO,IAAI,IAAI,UAAU,OAAO,MAAM,UAAU,aAAa,MAAM,UAAU,UAAU,aAAa,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACzJ,OAAO;AACH,YAAQ,IAAI,cAAM,IAAI,YAAO,UAAU,OAAO,qBAAqB,CAAC;AAAA,EACxE;AACA,aAAW,WAAW,UAAU,oBAAoB;AAChD,YAAQ,IAAI,cAAM,OAAO,0BAAqB,OAAO,EAAE,CAAC;AAAA,EAC5D;AAEA,QAAM,aAAa,OAAO,QAAQ,KAAK,MAAM,GAAG,WAAW;AAG3D,MAAI,KAAK,OAAO;AACZ,UAAM,8BAA8B,EAAE,OAAO,KAAK,CAAC;AAAA,EACvD,OAAO;AACH,UAAM,8BAA8B;AAAA,EACxC;AACA,QAAM,mBAAmB,KAAK,QACxB,MAAM,0BAA0B,aAAa,EAAE,OAAO,KAAK,CAAC,IAC5D,MAAM,0BAA0B,WAAW;AACjD,MAAI,iBAAiB,0BAA0B,iBAAiB,mBAAmB;AAC/E,YAAQ,IAAI,cAAM,MAAM,uBAAkB,iBAAiB,qBAAqB,iBAAiB,CAAC;AAAA,EACtG,OAAO;AACH,YAAQ,IAAI,cAAM,MAAM,mDAAyC,iBAAiB,qBAAqB,QAAQ,iBAAiB,iBAAiB,EAAE,CAAC;AAAA,EACxJ;AACA,QAAM,yBAAyB,aAAa,EAAE,OAAO,OAAO,CAAC;AAK7D,QAAM,oBAAoB,aAAa,SAAS;AAKhD,QAAM,wBAAwB,MAAM,yBAAyB,aAAa,IAAI;AAC9E,oCAAkC,qBAAqB;AAIvD,QAAM,eAAe,MAAM,oBAAoB,WAAW;AAC1D,4BAA0B,YAAY;AAGtC,MAAI,aAAa,WAAW;AACxB,YAAQ,IAAI,cAAM,KAAK,eAAe,CAAC;AACvC,YAAQ,IAAI,cAAM,MAAM,8CAAyC,CAAC;AAClE,YAAQ,IAAI,cAAM,MAAM,mEAA8D,CAAC;AACvF,QAAI,UAAU,aAAa,SAAS,GAAG;AACnC,cAAQ,IAAI,cAAM,MAAM,6BAAwB,UAAU,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,IACxF;AAAA,EACJ,OAAO;AACH,YAAQ,IAAI,cAAM,KAAK,oBAAoB,CAAC;AAC5C,YAAQ,IAAI,cAAM,MAAM,0DAAqD,CAAC;AAC9E,YAAQ,IAAI,cAAM,MAAM,mFAA8E,CAAC;AAAA,EAC3G;AACA,UAAQ,IAAI,EAAE;AAClB;AAEA,eAAe,oBAAoB,aAAoC;AAEnE,UAAQ,IAAI,cAAM,KAAK,2CAA2C,CAAC;AAEnE,QAAM,aAAS,iCAAU,MAAM,CAAC,MAAM,GAAG;AAAA,IACrC,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AAED,MAAI,OAAO,OAAO;AACd,YAAQ,IAAI,cAAM,OAAO,mCAA8B,OAAO,MAAM,OAAO,GAAG,CAAC;AAC/E;AAAA,EACJ;AAEA,MAAI,OAAO,WAAW,GAAG;AACrB,UAAM,OAAO,GAAG,OAAO,UAAU,EAAE;AAAA,EAAK,OAAO,UAAU,EAAE,GAAG,YAAY;AAC1E,QAAI,KAAK,SAAS,qBAAqB,GAAG;AACtC,cAAQ,IAAI,cAAM,IAAI,8CAAyC,CAAC;AAChE,YAAMC,SAAQ,MAAM,uBAAuB,aAAa,IAAI;AAC5D,cAAQ,IAAI,cAAM,IAAI,YAAO,0BAA0BA,MAAK,CAAC,EAAE,CAAC;AAChE,iBAAW,WAAWA,OAAM,UAAU;AAClC,gBAAQ,IAAI,cAAM,OAAO,YAAO,OAAO,EAAE,CAAC;AAAA,MAC9C;AACA;AAAA,IACJ;AACA,QAAI,OAAO,OAAQ,SAAQ,OAAO,MAAM,OAAO,MAAM;AACrD,QAAI,OAAO,OAAQ,SAAQ,OAAO,MAAM,OAAO,MAAM;AACrD,YAAQ,IAAI,cAAM,OAAO,qCAAgC,OAAO,MAAM,EAAE,CAAC;AACzE;AAAA,EACJ;AAEA,MAAI,OAAO,OAAQ,SAAQ,OAAO,MAAM,OAAO,MAAM;AACrD,MAAI,OAAO,OAAQ,SAAQ,OAAO,MAAM,OAAO,MAAM;AAErD,QAAM,QAAQ,MAAM,uBAAuB,aAAa,IAAI;AAC5D,UAAQ,IAAI,cAAM,IAAI,YAAO,0BAA0B,KAAK,CAAC,EAAE,CAAC;AAChE,aAAW,WAAW,MAAM,UAAU;AAClC,YAAQ,IAAI,cAAM,OAAO,YAAO,OAAO,EAAE,CAAC;AAAA,EAC9C;AACJ;AAEA,eAAe,0BAA0B,aAAoC;AACzE,QAAM,oBAAgB,iCAAU,YAAY,CAAC,WAAW,GAAG;AAAA,IACvD,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AAED,MAAI,cAAc,WAAW,GAAG;AAC5B,YAAQ,IAAI,cAAM,OAAO,uDAAkD,CAAC;AAC5E,YAAQ,IAAI,cAAM,IAAI,2CAA2C,CAAC;AAClE;AAAA,EACJ;AAGA,QAAM,iBAAa,iCAAU,OAAO,CAAC,aAAa,MAAM,GAAG;AAAA,IACvD,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AACD,MAAI,WAAW,WAAW,GAAG;AACzB,YAAQ,IAAI,cAAM,OAAO,0DAAgD,CAAC;AAC1E,YAAQ,IAAI,cAAM,IAAI,4DAA4D,CAAC;AACnF;AAAA,EACJ;AAEA,UAAQ,IAAI,cAAM,KAAK,mCAAmC,CAAC;AAE3D,QAAM,aAAS,iCAAU,YAAY,CAAC,QAAQ,GAAG;AAAA,IAC7C,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AAED,QAAM,aAAa,GAAG,OAAO,UAAU,EAAE;AAAA,EAAK,OAAO,UAAU,EAAE,GAAG,YAAY;AAChF,QAAM,eAAe,OAAO,WAAW,KACnC,WAAW,SAAS,OAAO,KAC3B,WAAW,SAAS,aAAa,KACjC,WAAW,SAAS,SAAS;AAEjC,MAAI,CAAC,cAAc;AACf,YAAQ,IAAI,cAAM,IAAI,kCAA6B,CAAC;AACpD;AAAA,EACJ;AAEA,UAAQ,IAAI,cAAM,KAAK,iDAAiD,CAAC;AACzE,QAAM,cAAU,iCAAU,YAAY,CAAC,SAAS,GAAG;AAAA,IAC/C,KAAK;AAAA,IACL,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AAED,MAAI,QAAQ,WAAW,GAAG;AAYtB,UAAM,wBAAwB,cAAAL,QAAK,KAAK,aAAa,WAAW,UAAU,UAAU;AACpF,QAAI;AACA,wBAAAD,QAAG,WAAW,qBAAqB;AAAA,IACvC,QAAQ;AAAA,IAGR;AACA,YAAQ,IAAI,cAAM,MAAM,iCAA4B,CAAC;AACrD;AAAA,EACJ;AAEA,MAAI,QAAQ,OAAQ,SAAQ,OAAO,MAAM,QAAQ,MAAM;AACvD,MAAI,QAAQ,OAAQ,SAAQ,OAAO,MAAM,QAAQ,MAAM;AACvD,UAAQ,IAAI,cAAM,OAAO,8CAAyC,QAAQ,MAAM,EAAE,CAAC;AACvF;AAEA,SAAS,iBAAyB;AAC9B,QAAM,aAAS,iCAAU,OAAO,CAAC,aAAa,iBAAiB,GAAG;AAAA,IAC9D,UAAU;AAAA,IACV,SAAS;AAAA,EACb,CAAC;AACD,MAAI,OAAO,WAAW,GAAG;AACrB,UAAM,IAAI,MAAM,mFAAmF;AAAA,EACvG;AACA,SAAO,cAAAC,QAAK,QAAQ,OAAO,OAAO,KAAK,CAAC;AAC5C;;;AwCthCA;AAEA,IAAAM,kBAAoB;;;ACHpB,IAAAC,gBAAiB;AACjB,IAAAC,oBAAe;AACf;;;ACFA,IAAAC,sBAA2B;AAC3B,IAAAC,oBAAe;AAEf,0BAAiC;AAQjC,IAAM,iBAAiB;AAAA,EACnB;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AACJ;AAcO,SAAS,iBAAiB,SAA0B;AACvD,SAAO,eAAe;AAAA,IAAK,mBACvB,YAAY,iBAAiB,QAAQ,WAAW,gBAAgB,GAAG;AAAA,EACvE;AACJ;AAEA,SAAS,oBAAoB,SAAwB;AACjD,MAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,QAAQ,KAAK,EAAG,QAAO,CAAC;AACvD,SAAO,QAAQ,MACV,IAAI,CAAC,MAAW,GAAG,OAAO,EAC1B,OAAO,CAAC,MAAwB,OAAO,MAAM,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC;AACrF;AAEA,SAAS,WAAW,SAAyB;AACzC,QAAM,IAAI,QAAQ,MAAM,8EAA8E;AACtG,SAAO,IAAI,CAAC,KAAK,QAAQ,KAAK;AAClC;AAKA,SAAS,UAAU,SAAgC;AAG/C,QAAM,IAAI,QAAQ,MAAM,+CAA+C;AACvE,MAAI,EAAG,QAAO,EAAE,CAAC;AAGjB,QAAM,KAAK,QAAQ,MAAM,6EAA6E;AACtG,SAAO,KAAK,CAAC,KAAK;AACtB;AAKA,SAAS,wBAAwB,eAAiC;AAC9D,QAAM,UAAU,oBAAI,IAAY;AAChC,MAAI,CAAC,iBAAiB,OAAO,kBAAkB,SAAU,QAAO;AAEhE,aAAW,YAAY,OAAO,OAAO,aAAa,GAAG;AACjD,QAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG;AAC9B,eAAW,WAAW,UAAU;AAC5B,YAAM,WAAW,oBAAoB,OAAO;AAC5C,iBAAW,OAAO,UAAU;AACxB,cAAM,SAAS,UAAU,GAAG;AAC5B,YAAI,OAAQ,SAAQ,IAAI,MAAM;AAAA,MAClC;AAAA,IACJ;AAAA,EACJ;AACA,SAAO;AACX;AAMA,SAAS,mBAAmB,UAAiB,kBAAqE;AAC9G,MAAI,iBAAiB,SAAS,GAAG;AAC7B,WAAO,EAAE,QAAQ,UAAU,SAAS,CAAC,EAAE;AAAA,EAC3C;AAEA,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAgB,CAAC;AAEvB,aAAW,WAAW,UAAU;AAC5B,QAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,GAAG;AAC/B,aAAO,KAAK,OAAO;AACnB;AAAA,IACJ;AAEA,UAAM,YAAmB,CAAC;AAC1B,eAAW,QAAQ,QAAQ,OAAO;AAC9B,YAAM,MAAM,MAAM;AAClB,UAAI,OAAO,QAAQ,UAAU;AACzB,kBAAU,KAAK,IAAI;AACnB;AAAA,MACJ;AAGA,YAAM,gBAAgB,YAAY,KAAK,GAAG;AAC1C,UAAI,CAAC,eAAe;AAChB,kBAAU,KAAK,IAAI;AACnB;AAAA,MACJ;AACA,YAAM,SAAS,UAAU,GAAG;AAE5B,UAAI,CAAC,UAAU,iBAAiB,IAAI,MAAM,GAAG;AACzC,kBAAU,KAAK,IAAI;AAAA,MACvB,OAAO;AACH,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,IACJ;AAEA,QAAI,UAAU,SAAS,GAAG;AACtB,aAAO,KAAK,EAAE,GAAG,SAAS,OAAO,UAAU,CAAC;AAAA,IAChD;AAAA,EACJ;AAEA,SAAO,EAAE,QAAQ,QAAQ;AAC7B;AAEA,SAAS,aAAa,iBAAyB,iBAAiC;AAC5E,QAAM,QAAQ;AAAA,IACV,GAAG,gBAAgB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAc,EAAE,KAAK,CAAC;AAAA,IACzD,GAAG,gBAAgB,MAAM,GAAG,EAAE,IAAI,CAAC,MAAc,EAAE,KAAK,CAAC;AAAA,EAC7D,EAAE,OAAO,OAAO;AAChB,SAAO,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,GAAG;AAC9C;AAEA,SAAS,kBAAkB,UAAiB,UAAwB;AAChE,QAAM,SAAS,SAAS,IAAI,CAAC,OAAY,EAAE,GAAG,EAAE,EAAE;AAElD,aAAW,mBAAmB,UAAU;AACpC,UAAM,mBAAmB,oBAAoB,eAAe;AAC5D,QAAI,iBAAiB,WAAW,GAAG;AAC/B,aAAO,KAAK,eAAe;AAC3B;AAAA,IACJ;AAEA,UAAM,eAAe,IAAI,IAAI,iBAAiB,IAAI,UAAU,CAAC;AAC7D,UAAM,iBAAiB,IAAI;AAAA,MACvB,OAAO,gBAAgB,YAAY,WAC7B,gBAAgB,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,MAAc,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO,IAC9E,CAAC;AAAA,IACX;AAEA,UAAM,gBAAgB,OAAO,UAAU,CAACC,qBAAyB;AAC7D,YAAM,mBAAmB,oBAAoBA,gBAAe;AAC5D,UAAI,CAAC,iBAAiB,KAAK,CAAC,MAAc,aAAa,IAAI,WAAW,CAAC,CAAC,CAAC,EAAG,QAAO;AAKnF,UACI,OAAOA,iBAAgB,YAAY,YACnC,OAAO,gBAAgB,YAAY,YACnC,eAAe,OAAO,GACxB;AACE,cAAM,iBAAiBA,iBAAgB,QAClC,MAAM,GAAG,EAAE,IAAI,CAAC,MAAc,EAAE,KAAK,CAAC,EAAE,OAAO,OAAO;AAC3D,cAAM,aAAa,eAAe,KAAK,CAACC,OAAc,eAAe,IAAIA,EAAC,CAAC;AAC3E,YAAI,CAAC,WAAY,QAAO;AAAA,MAC5B;AAEA,aAAO;AAAA,IACX,CAAC;AAED,QAAI,kBAAkB,IAAI;AACtB,aAAO,KAAK,eAAe;AAC3B;AAAA,IACJ;AAEA,UAAM,kBAAkB,OAAO,aAAa;AAC5C,QACI,OAAO,gBAAgB,YAAY,YACnC,OAAO,gBAAgB,YAAY,UACrC;AACE,sBAAgB,UAAU,aAAa,gBAAgB,SAAS,gBAAgB,OAAO;AAAA,IAC3F;AAEA,QAAI,MAAM,QAAQ,gBAAgB,KAAK,KAAK,MAAM,QAAQ,gBAAgB,KAAK,GAAG;AAC9E,YAAM,gBAAgB,IAAI,IAAI,gBAAgB,MACzC,IAAI,CAAC,MAAW,GAAG,OAAO,EAC1B,OAAO,CAAC,MAAwB,OAAO,MAAM,QAAQ,EACrD,IAAI,UAAU,CAAC;AACpB,iBAAW,QAAQ,gBAAgB,OAAO;AACtC,cAAM,MAAM,MAAM;AAClB,YAAI,OAAO,QAAQ,YAAY,CAAC,cAAc,IAAI,WAAW,GAAG,CAAC,GAAG;AAChE,0BAAgB,MAAM,KAAK,IAAI;AAAA,QACnC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAMA,SAAS,mBAAmB,eAAoB,eAAyB;AACrE,QAAM,SAAc,CAAC;AACrB,QAAM,mBAAmB,wBAAwB,aAAa;AAG9D,aAAW,CAAC,OAAO,gBAAgB,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,GAAG;AACzE,QAAI,CAAC,MAAM,QAAQ,gBAAgB,GAAG;AAAE,aAAO,KAAK,IAAI;AAAkB;AAAA,IAAU;AACpF,QAAI,UAAU,iBAAiB,CAAC,GAAI;AACpC,UAAM,EAAE,OAAO,IAAI,mBAAmB,kBAAkB,gBAAgB;AACxE,QAAI,OAAO,SAAS,EAAG,QAAO,KAAK,IAAI;AAAA,EAC3C;AAGA,aAAW,CAAC,OAAO,gBAAgB,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,GAAG;AACzE,UAAM,mBAA0B,MAAM,QAAQ,gBAAgB,KAAK,CAAC,IAAI,cAAc,KAAK,IAAI,CAAC;AAChG,UAAM,YAAY,iBAAiB,OAAO,CAAC,YAAiB;AACxD,UAAI,CAAC,MAAM,QAAQ,QAAQ,KAAK,EAAG,QAAO;AAC1C,aAAO,QAAQ,MAAM,MAAM,CAAC,MAAW;AACnC,cAAM,MAAM,GAAG;AACf,eAAO,OAAO,QAAQ,YAAY,CAAC,YAAY,KAAK,GAAG;AAAA,MAC3D,CAAC;AAAA,IACL,CAAC;AACD,WAAO,KAAK,IAAI,CAAC,GAAI,MAAM,QAAQ,gBAAgB,IAAI,mBAAmB,CAAC,GAAI,GAAG,SAAS;AAAA,EAC/F;AAEA,SAAO;AACX;AAEA,SAAS,iBAAiB,eAAoB,eAAyB;AAEnE,QAAM,mBAAmB,wBAAwB,aAAa;AAG9D,QAAM,SAAc,CAAC;AACrB,aAAW,CAAC,OAAO,gBAAgB,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,GAAG;AACzE,QAAI,CAAC,MAAM,QAAQ,gBAAgB,GAAG;AAClC,aAAO,KAAK,IAAI;AAChB;AAAA,IACJ;AACA,UAAM,EAAE,OAAO,IAAI,mBAAmB,kBAAkB,gBAAgB;AACxE,QAAI,OAAO,SAAS,GAAG;AACnB,aAAO,KAAK,IAAI;AAAA,IACpB;AAAA,EACJ;AAGA,aAAW,CAAC,OAAO,gBAAgB,KAAK,OAAO,QAAQ,iBAAiB,CAAC,CAAC,GAAG;AACzE,UAAM,mBAAmB,MAAM,QAAQ,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC;AACzE,UAAM,gBAAgB,MAAM,QAAQ,gBAAgB,IAAI,mBAAmB,CAAC;AAC5E,WAAO,KAAK,IAAI,kBAAkB,kBAAkB,aAAa;AAAA,EACrE;AACA,SAAO;AACX;AAKO,SAAS,wBAAwB,UAAe,SAAc,cAAsB,IAAI,OAAiC,CAAC,GAAQ;AACrI,QAAM,SAAS,EAAE,GAAG,SAAS;AAE7B,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAChD,UAAM,UAAU,cAAc,GAAG,WAAW,IAAI,GAAG,KAAK;AAGxD,QACI,QAAQ,WACR,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,SAAS,GAAG,MAAM,YACzB,SAAS,GAAG,MAAM,MACpB;AACE,aAAO,GAAG,IAAI,KAAK,aACb,mBAAmB,SAAS,GAAG,GAAG,KAAK,IACvC,iBAAiB,SAAS,GAAG,GAAG,KAAK;AAC3C;AAAA,IACJ;AAGA,QAAI,iBAAiB,OAAO,KAAK,SAAS,eAAe,GAAG,GAAG;AAC3D;AAAA,IACJ;AAGA,QAAI,QAAQ,gBAAgB,OAAO,UAAU,YAAY,UAAU,QAC/D,OAAO,SAAS,GAAG,MAAM,YAAY,SAAS,GAAG,MAAM,MAAM;AAE7D,aAAO,GAAG,IAAI,EAAE,GAAG,SAAS,GAAG,EAAE;AAGjC,iBAAW,CAAC,YAAY,YAAY,KAAK,OAAO,QAAQ,KAAK,GAAG;AAC5D,YAAI,CAAC,OAAO,GAAG,EAAE,eAAe,UAAU,GAAG;AACzC,iBAAO,GAAG,EAAE,UAAU,IAAI;AAAA,QAC9B;AAAA,MACJ;AAAA,IACJ,WACI,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAO,SAAS,GAAG,MAAM,YACzB,SAAS,GAAG,MAAM,QAClB,CAAC,MAAM,QAAQ,SAAS,GAAG,CAAC,GAC9B;AAEE,aAAO,GAAG,IAAI,wBAAwB,SAAS,GAAG,GAAG,OAAO,SAAS,IAAI;AAAA,IAC7E,OAAO;AAEH,aAAO,GAAG,IAAI;AAAA,IAClB;AAAA,EACJ;AAEA,SAAO;AACX;AAWA,eAAsB,YAAY,UAAkB,MAAW,UAA8B,CAAC,GAAkB;AAC5G,QAAM;AAAA,IACF,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,eAAe;AAAA,EACnB,IAAI;AAEJ,QAAM,eAAe,GAAG,QAAQ,YAAQ,gCAAW,CAAC;AAEpD,MAAI;AACA,QAAI;AACJ,QAAI,kBAAkB;AAClB,oBAAU,+BAAU,MAAM,MAAM,CAAC;AAAA,IACrC,OAAO;AACH,gBAAU,KAAK,UAAU,MAAM,MAAM,CAAC;AAAA,IAC1C;AAEA,UAAM,kBAAAC,QAAG,UAAU,cAAc,SAAS,MAAM;AAEhD,UAAM,YAAY,MAAM,kBAAAA,QAAG,KAAK,YAAY;AAC5C,QAAI,UAAU,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IAC5D;AAEA,QAAI,mBAAmB,MAAM,kBAAAA,QAAG,WAAW,QAAQ,GAAG;AAClD,YAAM,aAAa,GAAG,QAAQ,GAAG,YAAY;AAC7C,YAAM,kBAAAA,QAAG,KAAK,UAAU,UAAU;AAAA,IACtC;AAEA,UAAM,kBAAAA,QAAG,OAAO,cAAc,QAAQ;AAAA,EAC1C,SAASC,SAAO;AACZ,QAAI;AACA,UAAI,MAAM,kBAAAD,QAAG,WAAW,YAAY,GAAG;AACnC,cAAM,kBAAAA,QAAG,OAAO,YAAY;AAAA,MAChC;AAAA,IACJ,SAAS,cAAc;AAAA,IAAE;AACzB,UAAMC;AAAA,EACV;AACJ;AAKA,eAAsB,eAAe,UAAgC;AACjE,MAAI;AACA,QAAI,CAAE,MAAM,kBAAAD,QAAG,WAAW,QAAQ,GAAI;AAClC,aAAO,CAAC;AAAA,IACZ;AAEA,UAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,UAAU,MAAM;AAElD,QAAI;AACA,iBAAO,2BAAM,OAAO;AAAA,IACxB,SAAS,YAAY;AACjB,aAAO,KAAK,MAAM,OAAO;AAAA,IAC7B;AAAA,EACJ,SAASC,SAAY;AACjB,QAAIA,QAAM,SAAS,SAAU,QAAO,CAAC;AACrC,UAAM,IAAI,MAAM,+BAA+BA,QAAM,OAAO,EAAE;AAAA,EAClE;AACJ;AAkBA,eAAsB,gBAAgB,iBAAyB,YAAiB,UAAwB,CAAC,GAAyB;AAC9H,QAAM;AAAA,IACF,mBAAmB;AAAA,IACnB,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,sBAAsB;AAAA,IACtB,aAAa;AAAA,EACjB,IAAI;AAEJ,QAAM,cAAc,uBAAuB,MAAM,eAAe,eAAe;AAC/E,QAAM,UAAoB,CAAC;AAE3B,MAAI,YAAY,cAAc,OAAO,YAAY,eAAe,UAAU;AACtE,UAAM,mBAAmB,OAAO,KAAK,YAAY,UAAU;AAC3D,QAAI,iBAAiB,SAAS,GAAG;AAC7B,cAAQ,KAAK,aAAa,iBAAiB,MAAM,sBAAsB,iBAAiB,KAAK,IAAI,CAAC,EAAE;AAAA,IACxG;AAAA,EACJ;AAEA,MAAI,WAAW,cAAc,OAAO,WAAW,eAAe,UAAU;AACpE,UAAM,kBAAkB,OAAO,KAAK,WAAW,UAAU;AACzD,UAAM,iBAAiB,gBAAgB;AAAA,MAAO,UAC1C,CAAC,YAAY,cAAc,CAAC,YAAY,WAAW,eAAe,IAAI;AAAA,IAC1E;AAEA,QAAI,eAAe,SAAS,GAAG;AAC3B,cAAQ,KAAK,SAAS,eAAe,MAAM,oDAAoD,eAAe,KAAK,IAAI,CAAC,EAAE;AAAA,IAC9H;AAAA,EACJ;AAEA,QAAM,eAAe,wBAAwB,aAAa,YAAY,IAAI,EAAE,WAAW,CAAC;AACxF,QAAM,kBAAkB,KAAK,UAAU,WAAW,MAAM,KAAK,UAAU,YAAY;AAEnF,MAAI,CAAC,mBAAmB,CAAC,QAAQ;AAC7B,UAAM,YAAY,iBAAiB,cAAc;AAAA,MAC7C;AAAA,MACA;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AAAA,IACH,SAAS,CAAC;AAAA,IACV;AAAA,EACJ;AACJ;;;AC9cA,IAAAC,gBAAiB;AACjB,IAAAC,aAAe;AASR,IAAM,gBAAN,MAAoB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,YAAoB;AAC5B,SAAK,aAAa;AAClB,SAAK,UAAU,WAAAC,QAAG,QAAQ;AAC1B,SAAK,WAAW,cAAAC,QAAK,KAAK,KAAK,YAAY,OAAO;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBAAiB,gBAA0B;AACvC,QAAI,CAAC,eAAgB,QAAO,CAAC;AAE7B,UAAM,cAAc,KAAK,MAAM,KAAK,UAAU,cAAc,CAAC;AAC7D,SAAK,mBAAmB,WAAW;AACnC,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB,aAAwB;AACvC,QAAI,YAAY,OAAO;AACnB,iBAAW,CAAC,OAAO,KAAK,KAAK,OAAO,QAAQ,YAAY,KAAK,GAAG;AAC5D,YAAI,MAAM,QAAQ,KAAK,GAAG;AAGtB,sBAAY,MAAM,KAAK,IAAI,MAAM,IAAI,CAAC,SAAc;AAChD,gBAAI,KAAK,QAAQ;AACb,oBAAM,qBAAqB,KAAK,YAAY,cAAAA,QAAK,KAAK,KAAK,UAAU,KAAK,MAAM,CAAC;AACjF,oBAAM,UAAU,KAAK,mBAAmB,KAAK,QAAQ,kBAAkB;AACvE,oBAAM,YAAiB,EAAE,MAAM,WAAW,QAAQ;AAClD,kBAAI,KAAK,QAAS,WAAU,UAAU,KAAK;AAE3C,oBAAM,UAAe,EAAE,OAAO,CAAC,SAAS,EAAE;AAC1C,kBAAI,KAAK,QAAS,SAAQ,UAAU,KAAK;AACzC,qBAAO;AAAA,YACX;AACA,mBAAO;AAAA,UACX,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AACA,QAAI,YAAY,cAAc,YAAY,WAAW,QAAQ;AACzD,YAAM,qBAAqB,KAAK,YAAY,cAAAA,QAAK,KAAK,KAAK,UAAU,YAAY,WAAW,MAAM,CAAC;AACnG,YAAM,UAAU,KAAK,mBAAmB,YAAY,WAAW,QAAQ,kBAAkB;AACzF,kBAAY,aAAa,EAAE,MAAM,WAAW,QAAQ;AAAA,IACxD;AAAA,EACJ;AAAA,EAEA,mBAAmB,YAAoB,cAA8B;AACjE,UAAM,MAAM,cAAAA,QAAK,QAAQ,UAAU,EAAE,YAAY;AACjD,QAAI,QAAQ,SAAS,QAAQ,UAAU,QAAQ,QAAQ;AACnD,aAAO,SAAS,YAAY;AAAA,IAChC,WAAW,QAAQ,OAAO;AACtB,aAAO,SAAS,YAAY;AAAA,IAChC,OAAO;AACH,YAAM,YAAY,QAAQ,aAAa,UAAU,WAAW;AAC5D,aAAO,GAAG,SAAS,KAAK,YAAY;AAAA,IACxC;AAAA,EACJ;AAAA,EAEA,YAAY,GAAmB;AAC3B,QAAI,CAAC,KAAK,OAAO,MAAM,SAAU,QAAO;AACxC,QAAI,WAAW,EAAE,QAAQ,QAAQ,KAAK,UAAU,GAAG,EAAE,QAAQ,aAAa,KAAK,OAAO;AAGtF,QAAI,QAAQ,aAAa,SAAS;AAC9B,iBAAW,SAAS,QAAQ,OAAO,GAAG;AAAA,IAC1C;AAEA,WAAO;AAAA,EACX;AACJ;;;ACzFA,IAAAC,wBAA+B;AAC/B,IAAAC,eAA0B;AAI1B;;;ACJA,IAAAC,gBAAiB;AACjB,IAAAC,aAAe;AACf;AACA,oBAAmB;AAKnB,IAAM,aAAa,cAAAC,QAAK,KAAK,WAAAC,QAAG,QAAQ,GAAG,WAAW,qBAAqB;AAC3E,IAAM,WAAW,cAAAD,QAAK,KAAK,YAAY,MAAM;AAC7C,IAAM,mBAAmB,cAAAA,QAAK,KAAK,YAAY,cAAc;;;ADT7D,IAAM,gBAAY,wBAAU,0BAAI;;;AEFhC,IAAAE,oBAAe;AAQf,eAAsB,aAAa,UAAuC;AACtE,QAAM,YAAY,KAAK,IAAI;AAC3B,QAAM,aAAa,GAAG,QAAQ,WAAW,SAAS;AAElD,MAAI,MAAM,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAC/B,UAAM,kBAAAA,QAAG,KAAK,UAAU,UAAU;AAAA,EACtC;AAEA,SAAO;AAAA,IACH,cAAc;AAAA,IACd;AAAA,IACA,WAAW,oBAAI,KAAK;AAAA,EACxB;AACJ;AAEA,eAAsB,cAAc,QAAmC;AACnE,MAAI,MAAM,kBAAAA,QAAG,WAAW,OAAO,UAAU,GAAG;AACxC,UAAM,kBAAAA,QAAG,KAAK,OAAO,YAAY,OAAO,cAAc,EAAE,WAAW,KAAK,CAAC;AAAA,EAC7E;AACJ;AAEA,eAAsB,cAAc,QAAmC;AACnE,QAAM,kBAAAA,QAAG,OAAO,OAAO,UAAU;AACrC;;;ALrBA,IAAM,yBAAyB,oBAAI,IAAI,CAAC,cAAc,aAAa,CAAC;AACpE,IAAM,yBAAyB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AACA,IAAM,0BAA0B;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,eAAe,6BAA6B,cAAsB,UAAqC;AACnG,MAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,YAAY,EAAI,QAAO;AAEjD,QAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAC/C,QAAM,QAAQ,UAAU,aAAa;AACrC,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO;AAElC,QAAM,YAAY,MAAM;AAAA,IAAK,CAAC,UAC1B,OAAO,UAAU,YAAY,uBAAuB,IAAI,KAAK;AAAA,EACjE;AACA,MAAI,CAAC,UAAW,QAAO;AAEvB,QAAM,gBAAgB,MAAM;AAAA,IAAO,CAAC,UAChC,EAAE,OAAO,UAAU,YAAY,uBAAuB,IAAI,KAAK;AAAA,EACnE;AAEA,QAAM,cAAc,CAAC,GAAG,wBAAwB,GAAG,uBAAuB;AAC1E,aAAW,SAAS,aAAa;AAC7B,QAAI,CAAC,cAAc,SAAS,KAAK,EAAG,eAAc,KAAK,KAAK;AAAA,EAChE;AAEA,MAAI,UAAU;AACV,YAAQ,IAAI,cAAM,IAAI,uEAAuE,CAAC;AAC9F,WAAO;AAAA,EACX;AAEA,WAAS,YAAY,QAAQ;AAC7B,QAAM,kBAAAA,QAAG,UAAU,cAAc,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxD,UAAQ,IAAI,cAAM,IAAI,kEAAkE,CAAC;AACzF,SAAO;AACX;AA+CA,SAAS,uBAAuB,SAAgC;AAC5D,QAAM,SAAS,QAAQ,MAAM,WAAW;AACxC,MAAI,SAAS,CAAC,EAAG,QAAO,OAAO,CAAC;AAEhC,QAAM,eAAe,QAAQ,MAAM,WAAW;AAC9C,MAAI,eAAe,CAAC,EAAG,QAAO,aAAa,CAAC;AAE5C,QAAM,OAAO,QAAQ,KAAK,EAAE,MAAM,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,KAAK;AACjE,SAAO,QAAQ;AACnB;AAEA,eAAe,8BAA8B,aAAgC;AACzE,MAAI,CAAC,eAAe,OAAO,gBAAgB,YAAY,CAAC,YAAY,OAAO;AACvE,WAAO;AAAA,EACX;AAEA,aAAW,CAAC,OAAO,QAAQ,KAAK,OAAO,QAAQ,YAAY,KAAK,GAAG;AAC/D,QAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG;AAE9B,UAAM,eAAsB,CAAC;AAC7B,eAAW,WAAW,UAAU;AAC5B,UAAI,CAAC,WAAW,CAAC,MAAM,QAAQ,QAAQ,KAAK,EAAG;AAE/C,YAAM,YAAmB,CAAC;AAC1B,iBAAW,SAAS,QAAQ,OAAO;AAC/B,cAAM,UAAU,OAAO;AACvB,YAAI,OAAO,YAAY,YAAY,CAAC,QAAQ,KAAK,EAAG;AAEpD,cAAM,aAAa,uBAAuB,OAAO;AACjD,YAAI,CAAC,WAAY;AAEjB,YAAI,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAG;AACjC,oBAAU,KAAK,KAAK;AAAA,QACxB;AAAA,MACJ;AAEA,UAAI,UAAU,SAAS,GAAG;AACtB,qBAAa,KAAK,EAAE,GAAG,SAAS,OAAO,UAAU,CAAC;AAAA,MACtD;AAAA,IACJ;AAEA,gBAAY,MAAM,KAAK,IAAI;AAAA,EAC/B;AAEA,SAAO;AACX;AAEA,eAAsB,YAClB,UACA,YACA,WACA,MACA,YACA,WAAoB,OACpB,SACe;AACf,QAAM,aAAqC,CAAC,UAAU,SAAS,QAAQ;AAEvE,MAAI,QAAQ;AACZ,QAAM,UAAU,IAAI,cAAc,UAAU;AAC5C,QAAM,UAAwB,CAAC;AAC/B,QAAM,YAAoC,CAAC;AAE3C,MAAI;AAEA,eAAW,YAAY,YAAY;AAC/B,YAAM,iBAA2B,CAAC;AAElC,UAAI,eAAe,QAAQ;AACvB,cAAM,MAAM,UAAU,QAAQ;AAC9B,uBAAe,KAAK,GAAG,IAAI,OAAO;AAClC,uBAAe,KAAK,GAAG,IAAI,QAAQ;AAEnC,YAAI,SAAS,OAAO;AAChB,yBAAe,KAAK,GAAG,IAAI,OAAO;AAAA,QACtC;AAEA,YAAI,SAAS,SAAS;AAClB,qBAAW,gBAAgB,IAAI,WAAW,CAAC,GAAG;AAC1C,kBAAM,OAAO,cAAAC,QAAK,KAAK,YAAY,UAAU,YAAY;AACzD,oBAAQ,IAAI,cAAM,IAAI,iBAAiB,QAAQ,IAAI,YAAY,EAAE,CAAC;AAClE,gBAAI,CAAC,UAAU;AACX,kBAAI,MAAM,kBAAAD,QAAG,WAAW,IAAI,GAAG;AAC3B,wBAAQ,KAAK,MAAM,aAAa,IAAI,CAAC;AACrC,sBAAM,kBAAAA,QAAG,OAAO,IAAI;AAAA,cACxB;AAAA,YACJ;AACA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,WAAW,eAAe,YAAY;AAClC,cAAM,MAAM,UAAU,QAAQ;AAC9B,uBAAe,KAAK,GAAG,IAAI,OAAO;AAAA,MACtC;AAEA,iBAAW,QAAQ,gBAAgB;AAC/B,YAAI,KAAa;AAEjB,YAAI,aAAa,YAAY,SAAS,mBAAmB,eAAe,QAAQ;AAC5E,gBAAM,cAAAC,QAAK,KAAK,UAAU,UAAU,eAAe;AACnD,iBAAO,cAAAA,QAAK,KAAK,YAAY,eAAe;AAE5C,kBAAQ,IAAI,cAAM,KAAK,4BAA4B,CAAC;AAEpD,cAAI,CAAC,YAAY,MAAM,kBAAAD,QAAG,WAAW,IAAI,GAAG;AACxC,oBAAQ,KAAK,MAAM,aAAa,IAAI,CAAC;AAAA,UACzC;AAEA,gBAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,GAAG;AACxC,cAAI,kBAAkB,mBAAmB,YAAY,UAAU;AAE/D,gBAAM,WAAW,cAAAC,QAAK,KAAK,UAAU,UAAU,YAAY;AAC3D,cAAI,MAAM,kBAAAD,QAAG,WAAW,QAAQ,GAAG;AAC/B,kBAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,QAAQ;AAC3C,kBAAM,eAAe,MAAM,8BAA8B,QAAQ,iBAAiB,QAAQ,CAAC;AAC3F,gBAAI,aAAa,OAAO;AAGpB,8BAAgB,QAAQ,aAAa;AACrC,kBAAI,CAAC,SAAU,SAAQ,IAAI,cAAM,IAAI,wBAAwB,CAAC;AAAA,YAClE;AACA,gBAAI,aAAa,YAAY;AACzB,8BAAgB,aAAa,aAAa;AAAA,YAC9C;AAAA,UACJ;AAEA,cAAI,kBAAAA,QAAG,WAAW,IAAI,GAAG;AACrB,kBAAM,cAAc,MAAM,kBAAAA,QAAG,SAAS,IAAI;AAC1C,kBAAM,sBAAsB,mBAAmB,aAAa,UAAU;AAEtE,gBAAI,SAAS,SAAS;AAClB,kBAAI,YAAY,cAAc,gBAAgB,YAAY;AACtD,sBAAM,mBAAmB,IAAI,IAAI,OAAO,KAAK,gBAAgB,UAAU,CAAC;AACxE,2BAAW,cAAc,OAAO,KAAK,YAAY,UAAU,GAAG;AAC1D,sBAAI,CAAC,iBAAiB,IAAI,UAAU,GAAG;AACnC,2BAAO,YAAY,WAAW,UAAU;AACxC,wBAAI,CAAC,SAAU,SAAQ,IAAI,cAAM,IAAI,mCAAmC,UAAU,GAAG,CAAC;AAAA,kBAC1F;AAAA,gBACJ;AAAA,cACJ;AAAA,YACJ;AAEA,gBAAI,SAAS,WAAW,CAAC,UAAU;AAC/B,sBAAQ,IAAI,cAAM,IAAI,4DAA4D,CAAC;AAAA,YACvF;AAEA,kBAAM,cAAc,MAAM,gBAAgB,MAAM,iBAAiB;AAAA,cAC7D,iBAAiB;AAAA,cACjB,kBAAkB;AAAA,cAClB,QAAQ;AAAA,cACR;AAAA,cACA,YAAY,SAAS;AAAA,YACzB,CAAC;AAED,gBAAI,YAAY,SAAS;AACrB,sBAAQ,IAAI,cAAM,KAAK,qCAAqC,CAAC;AAAA,YACjE;AAEA,kBAAM,6BAA6B,MAAM,QAAQ;AAAA,UACrD,OAAO;AACH,gBAAI,CAAC,UAAU;AACX,oBAAM,kBAAAA,QAAG,UAAU,cAAAC,QAAK,QAAQ,IAAI,CAAC;AACrC,oBAAM,kBAAAD,QAAG,UAAU,MAAM,iBAAiB,EAAE,QAAQ,EAAE,CAAC;AAAA,YAC3D;AACA,oBAAQ,IAAI,cAAM,MAAM,mCAAmC,CAAC;AAAA,UAChE;AACA;AACA;AAAA,QACJ;AAEA,cAAM,WAAW,cAAAC,QAAK,KAAK,UAAU,QAAQ;AAC7C,cAAM,aAAa,cAAAA,QAAK,KAAK,YAAY,QAAQ;AAEjD,YAAI,eAAe,YAAY;AAC3B,gBAAM,cAAAA,QAAK,KAAK,YAAY,IAAI;AAChC,iBAAO,cAAAA,QAAK,KAAK,UAAU,IAAI;AAAA,QACnC,OAAO;AACH,gBAAM,cAAAA,QAAK,KAAK,UAAU,IAAI;AAC9B,iBAAO,cAAAA,QAAK,KAAK,YAAY,IAAI;AAAA,QACrC;AAEA,gBAAQ,IAAI,cAAM,KAAK,KAAK,eAAe,aAAa,QAAQ,KAAK,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;AAE5F,YAAI,CAAC,YAAY,eAAe,UAAU,MAAM,kBAAAD,QAAG,WAAW,IAAI,GAAG;AACjE,kBAAQ,KAAK,MAAM,aAAa,IAAI,CAAC;AAAA,QACzC;AAEA,YAAI,SAAS,aAAa,eAAe,UAAU,aAAa,UAAU;AACtE,cAAI,CAAC,UAAU;AACX,gBAAI,QAAQ,aAAa,SAAS;AAC9B,sBAAQ,IAAI,cAAM,OAAO,kFAAwE,CAAC;AAClG,oBAAM,kBAAAA,QAAG,OAAO,IAAI;AACpB,oBAAM,kBAAAA,QAAG,KAAK,KAAK,IAAI;AAAA,YAC3B,OAAO;AACH,oBAAM,kBAAAA,QAAG,OAAO,IAAI;AACpB,oBAAM,kBAAAA,QAAG,cAAc,KAAK,IAAI;AAAA,YACpC;AAAA,UACJ;AAAA,QACJ,OAAO;AACH,cAAI,CAAC,UAAU;AACX,kBAAM,kBAAAA,QAAG,OAAO,IAAI;AACpB,kBAAM,kBAAAA,QAAG,KAAK,KAAK,IAAI;AAAA,UAC3B;AAAA,QACJ;AAIA,YAAI,CAAC,YAAY,eAAe,QAAQ;AACpC,oBAAU,GAAG,QAAQ,IAAI,IAAI,EAAE,IAAI,MAAM,cAAc,GAAG;AAAA,QAC9D;AAEA;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,CAAC,YAAY,eAAe,QAAQ;AACpC,YAAM,eAAe,cAAAC,QAAK,KAAK,YAAY,6BAA6B;AACxE,YAAM,WAAW,MAAM,kBAAAD,QAAG,WAAW,YAAY,IAC3C,MAAM,kBAAAA,QAAG,SAAS,YAAY,IAC9B,CAAC;AACP,YAAM,kBAAAA,QAAG,UAAU,cAAc;AAAA,QAC7B,GAAG;AAAA,QACH,WAAU,oBAAI,KAAK,GAAE,YAAY;AAAA,QACjC;AAAA,QACA,OAAO;AAAA,QACP,YAAY,EAAE,GAAI,SAAS,cAAc,CAAC,GAAI,GAAG,UAAU;AAAA,MAC/D,GAAG,EAAE,QAAQ,EAAE,CAAC;AAAA,IACpB;AAEA,eAAW,UAAU,SAAS;AAC1B,YAAM,cAAc,MAAM;AAAA,IAC9B;AAEA,WAAO;AAAA,EAEX,SAASE,SAAY;AACjB,YAAQ,MAAM,cAAM,IAAI;AAAA,4BAA+B,QAAQ,MAAM,aAAa,CAAC;AACnF,eAAW,UAAU,SAAS;AAC1B,UAAI;AACA,cAAM,cAAc,MAAM;AAAA,MAC9B,UAAE;AACE,cAAM,cAAc,MAAM;AAAA,MAC9B;AAAA,IACJ;AACA,UAAMA;AAAA,EACV;AACJ;AAIA,SAAS,mBAAmBC,SAAa,WAAwB;AAC7D,QAAM,YAAY,KAAK,MAAM,KAAK,UAAUA,OAAM,CAAC;AAEnD,WAAS,iBAAiB,KAAU;AAChC,eAAW,OAAO,KAAK;AACnB,UAAI,OAAO,IAAI,GAAG,MAAM,UAAU;AAC9B,YAAI,MAAM,IAAI,GAAG;AAGjB,YAAI,CAAC,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,WAAW,GAAG,GAAG;AAC9C,cAAI,IAAI,MAAM,qBAAqB,GAAG;AAClC,kBAAM,WAAW,cAAAF,QAAK,KAAK,WAAW,OAAO;AAC7C,gBAAI,iBAAiB,GAAG,QAAQ;AAChC,gBAAI,QAAQ,aAAa,SAAS;AAC9B,+BAAiB,eAAe,QAAQ,OAAO,GAAG;AAAA,YACtD;AACA,gBAAI,GAAG,IAAI,IAAI,QAAQ,0BAA0B,cAAc;AAAA,UACnE;AAAA,QACJ;AAAA,MACJ,WAAW,OAAO,IAAI,GAAG,MAAM,YAAY,IAAI,GAAG,MAAM,MAAM;AAC1D,yBAAiB,IAAI,GAAG,CAAC;AAAA,MAC7B;AAAA,IACJ;AAAA,EACJ;AAEA,mBAAiB,SAAS;AAC1B,SAAO;AACX;;;AM9XA,IAAAG,gBAAqB;;;ACCd,IAAM,iBAAiB,iBAAE,KAAK,CAAC,QAAQ,WAAW,OAAO,CAAC;AAG1D,IAAM,qBAAqB,iBAAE,aAAa;AAAA,EAC/C,OAAO,iBAAE,OAAO,EAAE,OAAO,2BAA2B,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,2BAA2B,CAAC;AAAA,EACnG,MAAM,iBAAE,OAAO,EAAE,OAAO,0BAA0B,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,0BAA0B,CAAC;AAAA,EAChG,QAAQ,iBAAE,QAAQ,EAAE,OAAO,uCAAuC,CAAC;AACrE,CAAC;AAGM,IAAM,0BAA0B,iBAAE,aAAa;AAAA,EACpD,SAAS,iBAAE,MAAM,iBAAE,OAAO,GAAG,EAAE,OAAO,uCAAuC,CAAC;AAAA,EAC9E,UAAU,iBAAE,MAAM,iBAAE,OAAO,GAAG,EAAE,OAAO,wCAAwC,CAAC;AAAA,EAChF,SAAS,iBAAE,MAAM,iBAAE,OAAO,GAAG,EAAE,OAAO,uCAAuC,CAAC;AAAA,EAC9E,OAAO,iBAAE,OAAO,EAAE,OAAO,kCAAkC,CAAC;AAC9D,CAAC;AAGM,IAAM,kBAAkB,iBAAE,aAAa;AAAA,EAC5C,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,UAAU;AACZ,CAAC;AAGM,IAAM,iBAAiB,iBAAE,aAAa;AAAA,EAC3C,MAAM;AAAA,EACN,SAAS,iBAAE,MAAM,iBAAE,OAAO,GAAG,EAAE,OAAO,sCAAsC,CAAC;AAC/E,CAAC;AAGM,IAAM,qBAAqB,iBAAE,aAAa;AAAA,EAC/C,MAAM,iBAAE,KAAK,CAAC,SAAS,QAAQ,UAAU,SAAS,CAAC;AAAA,EACnD,MAAM,iBAAE,OAAO,EAAE,OAAO,iCAAiC,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,iCAAiC,CAAC;AAAA,EAC9G,MAAM,iBAAE,OAAO,EAAE,OAAO,iCAAiC,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,iCAAiC,CAAC;AAAA,EAC9G,UAAU,iBAAE,OAAO,EAAE,OAAO,qCAAqC,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,qCAAqC,CAAC;AAAA,EAC1H,QAAQ,iBAAE,OAAO,EAAE,OAAO,mCAAmC,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,mCAAmC,CAAC;AACtH,CAAC;AAGM,IAAM,iBAAiB,iBAAE,aAAa;AAAA,EAC3C,SAAS,iBAAE,OAAO,EAAE,OAAO,oCAAoC,CAAC,EAAE,SAAS,EAAE,QAAQ,GAAG;AAAA,EACxF,UAAU,iBAAE,OAAO,EAAE,OAAO,gCAAgC,CAAC,EAAE,IAAI,GAAG,EAAE,OAAO,gCAAgC,CAAC;AAAA,EAChH,OAAO,iBAAE,OAAO,EAAE,OAAO,uCAAuC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC;AACzF,CAAC;;;AD3CD,IAAM,gBAAgB;AAEf,SAAS,gBAAgB,YAA4B;AACxD,aAAO,oBAAK,YAAY,aAAa;AACzC;;;APCA,IAAAC,oBAAe;AACf,IAAAC,gBAAiB;AAIjB,SAAS,kBAAkB,QAAwB;AAC/C,QAAM,aAAa,OAAO,QAAQ,OAAO,GAAG,EAAE,YAAY;AAC1D,MAAI,WAAW,SAAS,QAAQ,KAAK,WAAW,SAAS,SAAS,EAAG,QAAO;AAC5E,MAAI,WAAW,SAAS,UAAU,KAAK,WAAW,SAAS,WAAW,EAAG,QAAO;AAChF,SAAO,cAAAC,QAAK,SAAS,MAAM;AAC/B;AAEA,SAAS,mBAAmB,WAA2B;AACnD,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,OAAO,MAAM;AAEnB,QAAM,UAAU,KAAK,MAAM,OAAO,GAAK;AACvC,QAAM,QAAQ,KAAK,MAAM,OAAO,IAAO;AACvC,QAAM,OAAO,KAAK,MAAM,OAAO,KAAQ;AAEvC,MAAI,UAAU,EAAG,QAAO;AACxB,MAAI,UAAU,GAAI,QAAO,GAAG,OAAO,UAAU,UAAU,IAAI,MAAM,EAAE;AACnE,MAAI,QAAQ,GAAI,QAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAC3D,SAAO,GAAG,IAAI,OAAO,OAAO,IAAI,MAAM,EAAE;AAC5C;AAEO,SAAS,sBAA+B;AAC3C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,qDAAqD,EACjE,OAAO,UAAU,gCAAgC,KAAK,EACtD,OAAO,WAAW,yCAAyC,KAAK,EAChE,OAAO,OAAO,SAAS;AACpB,UAAM,EAAE,MAAAC,OAAM,OAAAC,OAAM,IAAI;AAExB,UAAM,WAAW,MAAM,aAAa;AAGpC,UAAM,aAAa,kBAAkB;AACrC,UAAM,UAAoB,CAAC;AAC3B,eAAW,KAAK,YAAY;AACxB,UAAI,MAAM,kBAAAC,QAAG,WAAW,EAAE,IAAI,EAAG,SAAQ,KAAK,EAAE,IAAI;AAAA,IACxD;AACA,QAAI,QAAQ,WAAW,GAAG;AACtB,cAAQ,IAAI,cAAM,OAAO,yDAAyD,CAAC;AACnF;AAAA,IACJ;AAUA,UAAM,UAA0B,CAAC;AAEjC,eAAW,UAAU,SAAS;AAC1B,YAAM,eAAe,gBAAgB,MAAM;AAC3C,UAAI,WAA0B;AAC9B,UAAI;AACA,YAAI,MAAM,kBAAAA,QAAG,WAAW,YAAY,GAAG;AACnC,gBAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAC/C,cAAI,SAAS,SAAU,YAAW,SAAS;AAAA,QAC/C;AAAA,MACJ,QAAQ;AAAA,MAAe;AAEvB,YAAM,YAAY,MAAM,cAAc,UAAU,MAAM;AACtD,YAAM,eAAe,OAAO,OAAO,SAAS,EAAE;AAAA,QAC1C,CAAC,KAAa,MAAW,MAAM,EAAE,QAAQ,SAAS,EAAE,SAAS,SAAS,EAAE,QAAQ;AAAA,QAAQ;AAAA,MAC5F;AAEA,cAAQ,KAAK,EAAE,MAAM,QAAQ,MAAM,kBAAkB,MAAM,GAAG,UAAU,SAAS,WAAkB,aAAa,CAAC;AAAA,IACrH;AAGA,QAAIF,OAAM;AACN,cAAQ,IAAI,KAAK,UAAU,EAAE,SAAS,QAAQ,GAAG,MAAM,CAAC,CAAC;AACzD;AAAA,IACJ;AAIA,UAAMG,SAAQ;AAEd,UAAM,QAAQ,IAAIA,OAAM;AAAA,MACpB,MAAM;AAAA,QACF,cAAM,KAAK,QAAQ;AAAA,QACnB,cAAM,KAAK,cAAM,MAAM,OAAO,CAAC;AAAA,QAC/B,cAAM,KAAK,cAAM,OAAO,eAAU,CAAC;AAAA,QACnC,cAAM,KAAK,cAAM,IAAI,SAAS,CAAC;AAAA,QAC/B,cAAM,KAAK,WAAW;AAAA,MAC1B;AAAA,MACA,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,IAClC,CAAC;AAED,eAAW,KAAK,SAAS;AACrB,YAAM,UAAW,OAAO,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAW,MAAW,IAAI,EAAE,QAAQ,QAAS,CAAC;AAChG,YAAM,WAAW,OAAO,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAW,MAAW,IAAI,EAAE,SAAS,QAAQ,CAAC;AAChG,YAAM,UAAW,OAAO,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,GAAW,MAAW,IAAI,EAAE,QAAQ,QAAS,CAAC;AAEhG,YAAM,cAAc,EAAE,WAChB,cAAM,KAAK,mBAAmB,IAAI,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAC7D,cAAM,KAAK,OAAO;AAExB,YAAM,KAAK;AAAA,QACP,EAAE,eAAe,IAAI,cAAM,KAAK,EAAE,IAAI,IAAI,EAAE;AAAA,QAC5C,UAAW,IAAI,cAAM,MAAM,OAAO,OAAO,CAAC,IAAK,cAAM,KAAK,QAAG;AAAA,QAC7D,WAAW,IAAI,cAAM,OAAO,OAAO,QAAQ,CAAC,IAAI,cAAM,KAAK,QAAG;AAAA,QAC9D,UAAW,IAAI,cAAM,IAAI,OAAO,OAAO,CAAC,IAAO,cAAM,KAAK,QAAG;AAAA,QAC7D;AAAA,MACJ,CAAC;AAAA,IACL;AAEA,YAAQ,IAAI,OAAO,MAAM,SAAS,CAAC;AAEnC,UAAM,eAAe,QAAQ,OAAO,CAAC,GAAG,MAAM,IAAI,EAAE,cAAc,CAAC;AAEnE,QAAI,iBAAiB,GAAG;AACpB,cAAQ,IAAI,cAAM,MAAM,0CAAqC,CAAC;AAC9D;AAAA,IACJ;AAEA,UAAM,UAAU,QAAQ,OAAO,OAAK,EAAE,eAAe,CAAC;AACtD,YAAQ,IAAI,cAAM,OAAO;AAAA,YAAU,YAAY,kBAAkB,iBAAiB,IAAI,MAAM,EAAE,WAAW,QAAQ,MAAM,eAAe,QAAQ,WAAW,IAAI,MAAM,EAAE;AAAA,CAAI,CAAC;AAE1K,QAAIF,UAAS,CAAC,QAAQ,MAAM,OAAO;AAC/B,cAAQ,IAAI,cAAM,KAAK,sCAAsC,CAAC;AAC9D;AAAA,IACJ;AAGA,UAAM,EAAE,SAAS,IAAI,UAAM,gBAAAG,SAAQ;AAAA,MAC/B,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,QAAQ,IAAI,QAAM;AAAA,QACvB,OAAO,GAAG,EAAE,IAAI,KAAK,cAAM,KAAK,IAAI,EAAE,YAAY,UAAU,EAAE,iBAAiB,IAAI,MAAM,EAAE,GAAG,CAAC;AAAA,QAC/F,OAAO,EAAE;AAAA,QACT,UAAU;AAAA,MACd,EAAE;AAAA,MACF,MAAM;AAAA,MACN,cAAc;AAAA,IAClB,CAAC;AAED,QAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AACpC,cAAQ,IAAI,cAAM,KAAK,8CAA8C,CAAC;AACtE;AAAA,IACJ;AAEA,UAAM,SAAS,QAAQ,OAAO,OAAK,SAAS,SAAS,EAAE,IAAI,CAAC;AAG5D,UAAM,QAAQ,IAAI,KAAK,EAAE,aAAa,eAAe,CAAC;AACtD,UAAM,WAAY,MAAM,IAAI,UAAU,KAAgB;AAEtD,QAAI,cAAc;AAClB,eAAW,KAAK,QAAQ;AACpB,cAAQ,IAAI,cAAM,KAAK;AAAA,WAAS,EAAE,IAAI,EAAE,CAAC;AACzC,YAAM,QAAQ,MAAM,YAAY,UAAU,EAAE,MAAM,EAAE,SAAgB,UAAiB,QAAQ,KAAK;AAClG,qBAAe;AACf,cAAQ,IAAI,cAAM,MAAM,YAAO,KAAK,QAAQ,UAAU,IAAI,MAAM,EAAE,SAAS,CAAC;AAAA,IAChF;AAEA,YAAQ,IAAI,cAAM,KAAK,EAAE,MAAM;AAAA,qBAAc,WAAW,QAAQ,gBAAgB,IAAI,MAAM,EAAE;AAAA,CAAW,CAAC;AAAA,EAC5G,CAAC;AACT;;;AS9KA;AAIO,SAAS,qBAA8B;AAC1C,SAAO,IAAI,QAAQ,OAAO,EACrB,YAAY,kEAAkE,EAC9E,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,OAAO,SAA2B;AACtC,UAAM,YAAY,MAAM,yBAAyB;AAAA,MAC7C,KAAK,KAAK;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACb,CAAC;AACD,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,iBAAa;AACb,YAAQ,IAAI,cAAM,MAAM,4DAAuD,CAAC;AAAA,EACpF,CAAC;AACT;;;ACrBA,SAAS,QAAQ,OAAe,OAAyB;AACrD,SAAO,CAAC,OAAO,GAAG,OAAO,EAAE,EAAE,KAAK,IAAI;AAC1C;AAEO,SAAS,oBAA6B;AACzC,SAAO,IAAI,QAAQ,MAAM,EACpB,YAAY,2CAA2C,EACvD,OAAO,YAAY;AAChB,UAAM,SAAmB,CAAC;AAE1B,WAAO,KAAK,QAAQ,YAAY;AAAA,MAC5B;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,SAAS;AAAA,MACzB;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,iBAAiB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,oBAAoB;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,oBAAoB;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,qBAAqB;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,iBAAiB;AAAA,MACjC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,WAAO,KAAK,QAAQ,SAAS;AAAA,MACzB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ,CAAC,CAAC;AAEF,YAAQ,OAAO,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,EAC1C,CAAC;AACT;;;ACtKA;AACA,IAAAC,oBAAe;AACf,IAAAC,gBAAiB;AACjB,IAAAC,aAAwB;AAMxB,IAAM,kBAAkB,oBAAI,IAAI;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AACJ,CAAC;AASD,IAAMC,iBAAgB,oBAAI,IAAI;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,CAAC;AAQD,eAAe,WAAW,QAAkE;AACxF,QAAM,WAAW,cAAAC,QAAK,SAAK,oBAAQ,GAAG,WAAW,OAAO;AACxD,QAAM,UAAoB,CAAC;AAC3B,QAAM,QAAkB,CAAC;AAEzB,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAChC,WAAO,EAAE,SAAS,MAAM;AAAA,EAC5B;AAEA,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,QAAQ;AAEzC,aAAW,SAAS,SAAS;AAEzB,QAAIF,eAAc,IAAI,KAAK,GAAG;AAC1B,UAAI,CAAC,QAAQ;AACT,cAAMG,YAAW,cAAAF,QAAK,KAAK,UAAU,KAAK;AAC1C,cAAM,kBAAAC,QAAG,OAAOC,SAAQ;AAAA,MAC5B;AACA,YAAM,KAAK,KAAK;AAChB;AAAA,IACJ;AAGA,QAAI,gBAAgB,IAAI,KAAK,GAAG;AAC5B;AAAA,IACJ;AAGA,UAAM,WAAW,cAAAF,QAAK,KAAK,UAAU,KAAK;AAC1C,UAAM,OAAO,MAAM,kBAAAC,QAAG,KAAK,QAAQ;AAGnC,QAAI,KAAK,OAAO,KAAM,KAAK,YAAY,KAAKF,eAAc,IAAI,KAAK,GAAI;AACnE,UAAI,CAAC,QAAQ;AACT,cAAM,kBAAAE,QAAG,OAAO,QAAQ;AAAA,MAC5B;AACA,cAAQ,KAAK,KAAK;AAAA,IACtB;AAAA,EACJ;AAEA,SAAO,EAAE,SAAS,MAAM;AAC5B;AAEA,eAAe,YAAY,QAAoC;AAC3D,QAAM,UAAoB,CAAC;AAC3B,QAAM,aAAa,cAAAD,QAAK,SAAK,oBAAQ,GAAG,SAAS,QAAQ;AAGzD,QAAM,aAAa,cAAAA,QAAK,KAAK,YAAY,QAAQ;AACjD,MAAI,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAG;AACjC,UAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,UAAU;AAC3C,eAAW,SAAS,SAAS;AACzB,UAAIF,eAAc,IAAI,KAAK,GAAG;AAC1B;AAAA,MACJ;AAEA,YAAM,YAAY,cAAAC,QAAK,KAAK,YAAY,KAAK;AAC7C,YAAM,OAAO,MAAM,kBAAAC,QAAG,MAAM,SAAS,EAAE,MAAM,MAAM,IAAI;AACvD,UAAI,CAAC,MAAM;AACP;AAAA,MACJ;AAEA,UAAI,CAAC,KAAK,eAAe,GAAG;AACxB,YAAI,CAAC,QAAQ;AACT,gBAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,QAC7B;AACA,gBAAQ,KAAK,UAAU,KAAK,gBAAgB;AAC5C;AAAA,MACJ;AAEA,YAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,SAAS,EAAE,MAAM,MAAM,IAAI;AAChE,UAAI,CAAC,YAAY;AACb,YAAI,CAAC,QAAQ;AACT,gBAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,QAC7B;AACA,gBAAQ,KAAK,UAAU,KAAK,gBAAgB;AAC5C;AAAA,MACJ;AAEA,YAAM,iBAAiB,cAAAD,QAAK,QAAQ,cAAAA,QAAK,QAAQ,SAAS,GAAG,UAAU;AACvE,UAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,cAAc,GAAG;AACtC,YAAI,CAAC,QAAQ;AACT,gBAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,QAC7B;AACA,gBAAQ,KAAK,UAAU,KAAK,aAAa;AAAA,MAC7C;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,eAAe,yBAAyB,QAAiB,UAA4C;AACjG,QAAM,eAAe,cAAAD,QAAK,SAAK,oBAAQ,GAAG,WAAW,eAAe;AACpE,QAAM,UAAoB,CAAC;AAE3B,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACpC,WAAO;AAAA,EACX;AAEA,MAAI,WAAgB,CAAC;AACrB,MAAI;AACA,eAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAAA,EAC7C,QAAQ;AACJ,WAAO;AAAA,EACX;AAEA,MAAI,CAAC,SAAS,SAAS,OAAO,SAAS,UAAU,UAAU;AACvD,WAAO;AAAA,EACX;AAGA,QAAM,mBAAmB,oBAAI,IAAY;AACzC,aAAW,QAAQ,iBAAiB;AAChC,QAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,MAAM,KAAK,KAAK,SAAS,KAAK,GAAG;AAChG,uBAAiB,IAAI,IAAI;AAAA,IAC7B;AAAA,EACJ;AACA,mBAAiB,IAAI,4BAA4B;AAIjD,QAAM,sBAAsB,oBAAI,IAAyB;AACzD,MAAI,UAAU;AACV,UAAM,gBAAgB,cAAAD,QAAK,KAAK,UAAU,UAAU,YAAY;AAChE,QAAI;AACA,UAAI,MAAM,kBAAAC,QAAG,WAAW,aAAa,GAAG;AACpC,cAAM,YAAY,MAAM,kBAAAA,QAAG,SAAS,aAAa;AACjD,mBAAW,CAAC,OAAO,OAAO,KAAK,OAAO,QAAQ,UAAU,SAAS,CAAC,CAAC,GAAG;AAClE,qBAAW,SAAS,SAAkB;AAClC,kBAAM,SAAiB,MAAM;AAC7B,gBAAI,CAAC,OAAQ;AACb,kBAAM,MAAM,GAAG,KAAK,MAAM,MAAM,WAAW,MAAM;AACjD,gBAAI,CAAC,oBAAoB,IAAI,MAAM,EAAG,qBAAoB,IAAI,QAAQ,oBAAI,IAAI,CAAC;AAC/E,gCAAoB,IAAI,MAAM,EAAG,IAAI,GAAG;AAAA,UAC5C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,QAAQ;AAAA,IAA+C;AAAA,EAC3D;AAGA,MAAI,WAAW;AACf,aAAW,CAAC,OAAO,QAAQ,KAAK,OAAO,QAAQ,SAAS,KAAK,GAAG;AAC5D,QAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG;AAE9B,UAAM,eAAsB,CAAC;AAC7B,eAAW,WAAW,UAAU;AAC5B,YAAM,aAAa,QAAQ,SAAS,CAAC,OAAO;AAC5C,YAAM,YAAmB,CAAC;AAE1B,iBAAW,QAAQ,YAAY;AAC3B,cAAM,MAAM,MAAM,WAAW;AAC7B,cAAM,IAAI,IAAI,MAAM,+CAA+C;AACnE,cAAM,SAAS,IAAI,CAAC;AAEpB,YAAI,CAAC,UAAU,iBAAiB,IAAI,MAAM,GAAG;AACzC,oBAAU,KAAK,IAAI;AAAA,QACvB,OAAO;AACH,kBAAQ,KAAK,GAAG,KAAK,IAAI,MAAM,EAAE;AACjC,qBAAW;AAAA,QACf;AAAA,MACJ;AAEA,UAAI,UAAU,SAAS,GAAG;AAEtB,YAAI,oBAAoB,OAAO,GAAG;AAC9B,gBAAM,WAAmB,UAAU,CAAC,GAAG,WAAW;AAClD,gBAAM,KAAK,SAAS,MAAM,+CAA+C;AACzE,gBAAM,SAAS,KAAK,CAAC;AAErB,cAAI,UAAU,iBAAiB,IAAI,MAAM,GAAG;AACxC,kBAAM,YAAY,oBAAoB,IAAI,MAAM;AAChD,kBAAM,YAAY,GAAG,KAAK,MAAO,QAAQ,WAAkC,MAAM;AACjF,gBAAI,aAAa,CAAC,UAAU,IAAI,SAAS,GAAG;AACxC,sBAAQ,KAAK,GAAG,KAAK,IAAI,MAAM,iBAAiB;AAChD,yBAAW;AACX;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,QAAQ,OAAO;AACf,uBAAa,KAAK,EAAE,GAAG,SAAS,OAAO,UAAU,CAAC;AAAA,QACtD,WAAW,UAAU,WAAW,GAAG;AAC/B,uBAAa,KAAK,UAAU,CAAC,CAAC;AAAA,QAClC;AAAA,MACJ;AAAA,IACJ;AAEA,QAAI,aAAa,SAAS,GAAG;AACzB,eAAS,MAAM,KAAK,IAAI;AAAA,IAC5B,OAAO;AACH,aAAO,SAAS,MAAM,KAAK;AAC3B,iBAAW;AAAA,IACf;AAAA,EACJ;AAEA,MAAI,YAAY,CAAC,QAAQ;AACrB,UAAM,kBAAAA,QAAG,UAAU,cAAc,UAAU,EAAE,QAAQ,EAAE,CAAC;AAAA,EAC5D;AAEA,SAAO;AACX;AAEO,SAAS,qBAA8B;AAC1C,SAAO,IAAI,QAAQ,OAAO,EACrB,YAAY,kEAAkE,EAC9E,OAAO,aAAa,wDAAwD,KAAK,EACjF,OAAO,gBAAgB,iCAAiC,KAAK,EAC7D,OAAO,iBAAiB,iCAAiC,KAAK,EAC9D,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,OAAO,SAAS;AACpB,UAAM,EAAE,QAAQ,WAAW,YAAY,IAAI,IAAI;AAE/C,YAAQ,IAAI,EAAE,KAAK,oDAA+C,CAAC;AAEnE,QAAI,QAAQ;AACR,cAAQ,IAAI,cAAM,OAAO,4CAAuC,CAAC;AAAA,IACrE;AAEA,QAAI,CAAC,QAAQ;AACT,YAAM,YAAY,MAAM,yBAAyB;AAAA,QAC7C;AAAA,QACA,SAAS;AAAA,QACT,SAAS;AAAA,MACb,CAAC;AACD,UAAI,CAAC,WAAW;AACZ,gBAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,SAAsB;AAAA,MACxB,cAAc,CAAC;AAAA,MACf,eAAe,CAAC;AAAA,MAChB,cAAc,CAAC;AAAA,IACnB;AAGA,QAAI,CAAC,YAAY;AACb,cAAQ,IAAI,cAAM,KAAK,gCAAgC,CAAC;AACxD,YAAM,EAAE,SAAS,MAAM,IAAI,MAAM,WAAW,MAAM;AAClD,aAAO,eAAe;AACtB,aAAO,eAAe;AAEtB,UAAI,QAAQ,SAAS,GAAG;AACpB,mBAAW,KAAK,SAAS;AACrB,kBAAQ,IAAI,cAAM,IAAI,cAAS,CAAC,EAAE,CAAC;AAAA,QACvC;AAAA,MACJ,OAAO;AACH,gBAAQ,IAAI,cAAM,IAAI,oCAA+B,CAAC;AAAA,MAC1D;AAEA,UAAI,MAAM,SAAS,GAAG;AAClB,gBAAQ,IAAI,cAAM,IAAI,sBAAiB,MAAM,MAAM,uBAAuB,CAAC;AAAA,MAC/E;AAGA,cAAQ,IAAI,cAAM,KAAK,yDAAyD,CAAC;AACjF,UAAI,WAA0B;AAC9B,UAAI;AAAE,mBAAW,MAAM,aAAa;AAAA,MAAG,QAAQ;AAAA,MAA4B;AAC3E,YAAM,kBAAkB,MAAM,yBAAyB,QAAQ,QAAQ;AACvE,UAAI,gBAAgB,SAAS,GAAG;AAC5B,mBAAW,SAAS,iBAAiB;AACjC,kBAAQ,IAAI,cAAM,IAAI,cAAS,KAAK,EAAE,CAAC;AAAA,QAC3C;AAAA,MACJ,OAAO;AACH,gBAAQ,IAAI,cAAM,IAAI,2CAAsC,CAAC;AAAA,MACjE;AAAA,IACJ;AAGA,QAAI,CAAC,WAAW;AACZ,cAAQ,IAAI,cAAM,KAAK,wCAAwC,CAAC;AAChE,aAAO,gBAAgB,MAAM,YAAY,MAAM;AAE/C,UAAI,OAAO,cAAc,SAAS,GAAG;AACjC,mBAAW,KAAK,OAAO,eAAe;AAClC,kBAAQ,IAAI,cAAM,IAAI,cAAS,CAAC,GAAG,CAAC;AAAA,QACxC;AAAA,MACJ,OAAO;AACH,gBAAQ,IAAI,cAAM,IAAI,qCAAgC,CAAC;AAAA,MAC3D;AAAA,IACJ;AAGA,UAAM,eAAe,OAAO,aAAa,SAAS,OAAO,cAAc,SAAS,OAAO,aAAa;AAEpG,QAAI,iBAAiB,GAAG;AACpB,cAAQ,IAAI,EAAE,UAAU,mEAAyD,CAAC;AAClF;AAAA,IACJ;AAEA,YAAQ,IAAI,cAAM,KAAK,cAAc,CAAC;AACtC,QAAI,OAAO,aAAa,SAAS,GAAG;AAChC,cAAQ,IAAI,cAAM,IAAI,OAAO,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAAA,IAC/E;AACA,QAAI,OAAO,cAAc,SAAS,GAAG;AACjC,cAAQ,IAAI,cAAM,IAAI,OAAO,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAAA,IACjF;AACA,QAAI,OAAO,aAAa,SAAS,GAAG;AAChC,cAAQ,IAAI,cAAM,IAAI,OAAO,OAAO,aAAa,MAAM,wBAAwB,CAAC;AAAA,IACpF;AAEA,QAAI,CAAC,QAAQ;AACT,cAAQ,IAAI,EAAE,UAAU,+BAA0B,CAAC;AACnD,cAAQ,IAAI,cAAM,IAAI,iEAAiE,CAAC;AAAA,IAC5F,OAAO;AACH,cAAQ,IAAI,cAAM,OAAO,oEAA0D,CAAC;AAAA,IACxF;AAAA,EACJ,CAAC;AACT;;;AC9WA;AACA,IAAAE,6BAA0B;AAC1B,IAAAC,kBAA+C;AAC/C,IAAAC,qBAAmD;AAmBnD,SAAS,IAAI,MAAgB,KAAwD;AACjF,QAAM,QAAI,sCAAU,OAAO,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACzE,SAAO,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,EAAE;AAC5F;AAEA,SAAS,GAAG,MAAgB,KAA2C;AACnE,QAAM,QAAI,sCAAU,MAAM,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACxE,SAAO,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,EAAE;AAC9D;AAEA,SAAS,IAAI,MAAgB,KAAwD;AACjF,QAAM,QAAI,sCAAU,OAAO,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACzE,SAAO,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,EAAE;AAC5F;AAEA,SAAS,oBAAoB,KAAqB;AAC9C,QAAM,kBAAkB,IAAI,CAAC,aAAa,kBAAkB,GAAG,GAAG;AAClE,MAAI,gBAAgB,MAAM,gBAAgB,KAAK;AAC3C,UAAM,gBAAY,+BAAW,gBAAgB,GAAG,IAC1C,gBAAgB,UAChB,4BAAQ,KAAK,gBAAgB,GAAG;AACtC,WAAO,UAAU,SAAS,OAAO,KAAK,UAAU,SAAS,QAAQ,QAC3D,4BAAQ,SAAS,IACjB;AAAA,EACV;AAEA,QAAM,WAAW,IAAI,CAAC,aAAa,iBAAiB,GAAG,GAAG;AAC1D,SAAO,SAAS,MAAM,SAAS,MAAM,SAAS,MAAM;AACxD;AAEA,SAAS,qBAAqB,UAAwB;AAClD,MAAI;AACA,UAAM,gBAAY,yBAAK,UAAU,SAAS,kBAAkB;AAC5D,YAAI,4BAAW,SAAS,EAAG,iCAAW,SAAS;AAAA,EACnD,QAAQ;AAAA,EAER;AACJ;AAQA,SAAS,oBAAoB,cAAsB,UAAyC;AACxF,QAAM,WAAqB,CAAC;AAC5B,QAAM,mBAAe;AAAA,IACjB;AAAA,IACA,CAAC,YAAY,UAAU,cAAc,SAAS;AAAA,IAC9C,EAAE,KAAK,UAAU,UAAU,QAAQ,OAAO,OAAO;AAAA,EACrD;AAEA,MAAI,aAAa,WAAW,GAAG;AAC3B,UAAM,aAAa,aAAa,UAAU,IAAI,KAAK;AACnD,QAAI,UAAW,UAAS,KAAK,SAAS;AAAA,EAC1C;AAEA,QAAM,kBAAc,sCAAU,OAAO,CAAC,YAAY,SAAS,YAAY,KAAK,GAAG;AAAA,IAC3E,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO;AAAA,EACX,CAAC;AACD,MAAI,YAAY,WAAW,MAAM,YAAY,UAAU,IAAI,KAAK,GAAG;AAC/D,aAAS,MAAM,YAAY,UAAU,IAAI,KAAK,CAAC;AAAA,EACnD;AAEA,QAAM,YAAY,KAAC,4BAAW,YAAY;AAC1C,MAAI,WAAW;AACX,WAAO;AAAA,MACH,SAAS;AAAA,MACT,gBAAgB,aAAa,WAAW;AAAA,MACxC;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI;AACA,gCAAO,cAAc,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EACzD,SAASC,SAAO;AACZ,UAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,aAAS,KAAK,8BAA8B,YAAY,KAAK,OAAO,EAAE;AAAA,EAC1E;AAEA,SAAO;AAAA,IACH,SAAS,KAAC,4BAAW,YAAY;AAAA,IACjC,gBAAgB;AAAA,IAChB;AAAA,EACJ;AACJ;AAGA,IAAM,sBAAsB,oBAAI,IAAI;AAAA,EAChC;AAAA,EAAQ;AAAA,EAAO;AAAA,EAAS;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAS;AAAA,EAAY;AAAA,EAC7D;AAAA,EAAQ;AAAA,EAAM;AAAA,EAAS;AAAA,EAAU;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAO;AAAA,EAAM;AAAA,EAC7D;AAAA,EAAS;AAAA,EAAU;AAAA,EAAO;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAO;AAAA,EAAS;AAC9D,CAAC;AAGD,SAAS,gBAAgB,WAA6B;AAElD,QAAM,UAAU,UAAU,SAAS,+CAA+C;AAClF,SAAO,CAAC,GAAG,IAAI;AAAA,IACX,CAAC,GAAG,OAAO,EACN,IAAI,OAAK,EAAE,CAAC,EAAE,YAAY,CAAC,EAC3B,OAAO,QAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;AAAA,EAClD,CAAC;AACL;AAEA,SAAS,iBAAiB,OAAuB;AAC7C,QAAM,UAAU,MAAM,KAAK,EAAE,QAAQ,YAAY,EAAE;AACnD,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC;AAC5D;AAEA,SAAS,iBAAiB,OAAwB;AAC9C,SAAO,gEAAgE,KAAK,MAAM,KAAK,CAAC;AAC5F;AAGA,SAAS,6BAA6B,WAAmB,cAAgC;AAErF,QAAM,cAAc,UAAU,MAAM,IAAI,EAAE,CAAC,GAAG,QAAQ,eAAe,EAAE,EAAE,KAAK,KAAK;AACnF,MAAI,eAAe,CAAC,iBAAiB,WAAW,GAAG;AAC/C,WAAO,iBAAiB,WAAW;AAAA,EACvC;AAGA,QAAM,SAAS,aAAa,KAAK,OAAK,EAAE,WAAW,UAAU,CAAC;AAC9D,QAAM,WAAW,aAAa,KAAK,OAAK,EAAE,WAAW,WAAW,CAAC;AACjE,QAAM,WAAW,aAAa,KAAK,OAAK,EAAE,WAAW,QAAQ,CAAC;AAC9D,QAAM,YAAY,aAAa,KAAK,OAAK,EAAE,WAAW,SAAS,CAAC;AAChE,QAAM,UAAU,aAAa,KAAK,OAAK,EAAE,WAAW,OAAO,KAAK,MAAM,eAAe,MAAM,eAAe;AAC1G,QAAM,YAAY,aAAa,KAAK,OAAK,EAAE,WAAW,SAAS,CAAC;AAEhE,MAAI,UAAU,SAAU,QAAO;AAC/B,MAAI,UAAU,SAAU,QAAO;AAC/B,MAAI,OAAQ,QAAO;AACnB,MAAI,SAAU,QAAO;AACrB,MAAI,UAAW,QAAO;AACtB,MAAI,QAAS,QAAO;AACpB,MAAI,UAAW,QAAO;AAEtB,SAAO;AACX;AAGA,SAAS,aAAa,QAAoB,cAAwB,WAA2B;AACzF,MAAI,OAAO,WAAW,EAAG,QAAO,6BAA6B,WAAW,YAAY;AAEpF,MAAI,OAAO,WAAW,GAAG;AACrB,UAAM,SAAS,iBAAiB,OAAO,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,UAAU,OAAO,CAAC,EAAE,EAAE;AACnF,WAAO,iBAAiB,MAAM,IAAI,6BAA6B,WAAW,YAAY,IAAI;AAAA,EAC9F;AAGA,QAAM,QAAQ,iBAAiB,OAAO,CAAC,EAAE,SAAS,OAAO,CAAC,EAAE,UAAU,OAAO,CAAC,EAAE,EAAE;AAClF,SAAO,iBAAiB,KAAK,IACvB,6BAA6B,WAAW,YAAY,IACpD,GAAG,KAAK,MAAM,OAAO,SAAS,CAAC;AACzC;AAEA,SAAS,yBAAyB,KAAa,eAAuB,UAA6B;AAC/F,QAAM,OAAO,CAAC,QAAQ,eAAe,UAAU,aAAa,QAAQ;AACpE,MAAI,SAAU,MAAK,KAAK,MAAM,QAAQ;AACtC,QAAM,SAAS,IAAI,MAAM,GAAG;AAC5B,SAAO,OAAO,IAAI,MAAM,IAAI,EAAE,IAAI,UAAQ,KAAK,KAAK,CAAC,EAAE,OAAO,OAAO;AACzE;AAEA,SAAS,oBAAoB,KAAa,eAA6B;AACnE,QAAM,oBAAoB,yBAAyB,KAAK,eAAe,UAAU;AACjF,MAAI,kBAAkB,WAAW,EAAG;AAEpC,UAAQ,IAAI,cAAM,IAAI,iEAA4D,CAAC;AACnF,QAAM,cAAc,IAAI,CAAC,OAAO,SAAS,eAAe,OAAO,kBAAkB,GAAG,GAAG;AACvF,MAAI,CAAC,YAAY,IAAI;AACjB,UAAM,UAAU,CAAC,YAAY,KAAK,YAAY,GAAG,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAC5E,YAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,EAE9B,UAAU;AAAA,EACV,OAAO;AAAA,IACL,EAAE,EAAE,CAAC;AACD,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,MAAI,CAAC,OAAO,UAAU,GAAG,GAAG;AAC5B,QAAM,aAAa,IAAI,CAAC,QAAQ,YAAY,eAAe,MAAM,WAAW,GAAG,GAAG,EAAE,IAC/E,MAAM,IAAI,EACV,IAAI,UAAQ,KAAK,KAAK,CAAC,EACvB,OAAO,OAAO;AAEnB,MAAI,WAAW,WAAW,GAAG;AACzB,YAAQ,IAAI,EAAE,QAAQ,sCAAiC,CAAC;AACxD;AAAA,EACJ;AAEA,QAAM,eAAe,IAAI,CAAC,UAAU,MAAM,0CAA0C,GAAG,GAAG;AAC1F,MAAI,CAAC,aAAa,IAAI;AAClB,YAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,IAE5B,aAAa,GAAG;AAAA,CACnB,CAAC;AACM,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,UAAQ,IAAI,EAAE,QAAQ,2CAAsC,WAAW,MAAM,UAAU,CAAC;AAC5F;AAeO,SAAS,8BAA8B,KAAa,UAA4B;AACnF,QAAM,kBAAkB,CAAC,WAAW,eAAe;AACnD,QAAM,aAAa,IAAI,CAAC,QAAQ,SAAS,GAAG,QAAQ,UAAU,MAAM,GAAG,eAAe,GAAG,GAAG;AAC5F,MAAI,CAAC,WAAW,IAAI;AAChB,YAAQ,KAAK,cAAM,OAAO,2FAAsF,CAAC;AACjH,WAAO,CAAC;AAAA,EACZ;AAEA,SAAO,CAAC,GAAG,IAAI;AAAA,IACX,WAAW,IACN,MAAM,IAAI,EACV,IAAI,UAAQ,KAAK,KAAK,CAAC,EACvB,OAAO,OAAO,EACd,QAAQ,UAAQ;AACb,YAAM,QAAQ,KAAK,MAAM,gFAAgF;AACzG,UAAI,CAAC,MAAO,QAAO,CAAC;AACpB,YAAM,kBAAkB,MAAM,CAAC;AAC/B,YAAMC,SAAO,MAAM,CAAC;AACpB,UAAI,oBAAoB,SAAU,QAAO,CAAC;AAC1C,aAAO,gBAAgB,KAAK,OAAKA,OAAK,WAAW,CAAC,CAAC,IAAI,CAACA,MAAI,IAAI,CAAC;AAAA,IACrE,CAAC;AAAA,EACT,CAAC;AACL;AAEA,SAAS,4BAA4B,OAAiB,UAAwB;AAC1E,UAAQ,MAAM,cAAM,IAAI,0EAAqE,CAAC;AAC9F,aAAWA,UAAQ,OAAO;AACtB,YAAQ,MAAM,cAAM,IAAI,OAAOA,MAAI,EAAE,CAAC;AAAA,EAC1C;AAIA,QAAM,mBAAmB,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,OAAK,EAAE,MAAM,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC;AAC3E,QAAM,iBAAiB,iBAAiB,KAAK,GAAG;AAChD,UAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,2BACD,QAAQ,OAAO,cAAc;AAAA;AAAA,CAA2B,CAAC;AACpF;AAGA,SAAS,YACL,QACA,WACA,UACA,QACM;AACN,QAAM,QAAkB,CAAC;AAEzB,QAAM,KAAK,SAAS;AACpB,MAAI,OAAO,SAAS,GAAG;AACnB,eAAWC,UAAS,QAAQ;AACxB,YAAM,KAAK,OAAOA,OAAM,EAAE,OAAOA,OAAM,KAAK,EAAE;AAC9C,UAAIA,OAAM,YAAa,OAAM,KAAK,KAAKA,OAAM,YAAY,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE;AAAA,IAC7E;AAAA,EACJ,OAAO;AACH,UAAM,KAAK,qBAAqB,MAAM,IAAI;AAAA,EAC9C;AAEA,MAAI,OAAO,KAAK,OAAK,EAAE,MAAM,GAAG;AAC5B,UAAM,KAAK,IAAI,QAAQ;AACvB,eAAWA,UAAS,QAAQ;AACxB,UAAIA,OAAM,OAAQ,OAAM,KAAK,KAAKA,OAAM,EAAE,KAAKA,OAAM,MAAM,EAAE;AAAA,IACjE;AAAA,EACJ;AAEA,MAAI,WAAW;AACX,UAAM,KAAK,IAAI,YAAY;AAC3B,UAAM,UAAU,UAAU,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE;AACjD,UAAM,KAAK,GAAG,QAAQ,IAAI,OAAK,KAAK,CAAC,EAAE,CAAC;AACxC,QAAI,UAAU,MAAM,IAAI,EAAE,SAAS,GAAI,OAAM,KAAK,mBAAmB;AAAA,EACzE;AAEA,MAAI,UAAU;AACV,UAAM,KAAK,IAAI,kBAAkB;AACjC,UAAM,KAAK,KAAK;AAChB,UAAM,KAAK,QAAQ;AACnB,UAAM,KAAK,KAAK;AAAA,EACpB;AAEA,MAAI,OAAO,SAAS,GAAG;AACnB,UAAM,KAAK,IAAI,WAAW,OAAO,IAAI,OAAK,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE;AAAA,EAC/D;AAEA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEO,SAAS,mBAA4B;AACxC,SAAO,IAAI,QAAQ,KAAK,EACnB,YAAY,4EAA4E,EACxF,OAAO,WAAW,oBAAoB,KAAK,EAC3C,OAAO,UAAU,qDAAqD,KAAK,EAC3E,OAAO,aAAa,6BAA6B,KAAK,EACtD,OAAO,aAAa,4EAA4E,KAAK,EACrG,OAAO,OAAO,SAAqB;AAChC,UAAM,MAAM,QAAQ,IAAI;AAGxB,UAAM,eAAe,IAAI,CAAC,aAAa,gBAAgB,MAAM,GAAG,GAAG;AACnE,UAAM,SAAS,aAAa;AAE5B,QAAI,CAAC,OAAO,WAAW,KAAK,GAAG;AAC3B,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,kDAAgD,MAAM;AAAA;AAAA;AAAA,MAE1D,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,eAAe,IAAI,CAAC,UAAU,aAAa,GAAG,GAAG;AACvD,QAAI,aAAa,IAAI,SAAS,GAAG;AAC7B,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MACJ,CAAC;AACD,cAAQ,MAAM,cAAM,IAAI,aAAa,GAAG,CAAC;AACzC,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,YAAQ,IAAI,EAAE,KAAK;AAAA,qCAAmC,MAAM;AAAA,CAAI,CAAC;AAGjE,QAAI,gBAAgB;AACpB,UAAM,SAAS,IAAI,CAAC,gBAAgB,4BAA4B,SAAS,GAAG,GAAG;AAC/E,QAAI,OAAO,MAAM,OAAO,KAAK;AACzB,sBAAgB,OAAO,IAAI,QAAQ,WAAW,EAAE;AAAA,IACpD,WAAW,IAAI,CAAC,aAAa,YAAY,eAAe,GAAG,GAAG,EAAE,IAAI;AAChE,sBAAgB;AAAA,IACpB;AAGA,UAAM,YAAY,IAAI,CAAC,OAAO,UAAU,aAAa,UAAU,WAAW,GAAG,GAAG;AAChF,UAAM,WAAW,gBAAgB,UAAU,GAAG;AAE9C,UAAM,SAAqB,CAAC;AAC5B,eAAW,MAAM,UAAU;AACvB,YAAM,cAAc,GAAG,CAAC,SAAS,MAAM,EAAE,IAAI,SAAS,QAAQ,GAAG,GAAG;AACpE,UAAI,YAAY,IAAI;AAChB,YAAI;AACA,gBAAM,OAAO,KAAK,MAAM,YAAY,GAAG;AACvC,gBAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,KAAK,CAAC,IAAI;AAC9C,cAAI,OAAO;AACP,mBAAO,KAAK;AAAA,cACR;AAAA,cACA,OAAO,MAAM,SAAS;AAAA,cACtB,aAAa,MAAM,eAAe;AAAA,cAClC,QAAQ,MAAM,gBAAgB;AAAA,YAClC,CAAC;AACD;AAAA,UACJ;AAAA,QACJ,QAAQ;AAAA,QAER;AAAA,MACJ;AACA,aAAO,KAAK,EAAE,IAAI,OAAO,IAAI,aAAa,IAAI,QAAQ,GAAG,CAAC;AAAA,IAC9D;AAEA,QAAI,OAAO,SAAS,GAAG;AACnB,cAAQ,IAAI,EAAE,QAAQ,kBAAa,OAAO,MAAM,qBAAqB,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,IAC/F,WAAW,SAAS,SAAS,GAAG;AAC5B,cAAQ,IAAI,cAAM,OAAO,+EAA0E,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,IAC7H,OAAO;AACH,cAAQ,IAAI,cAAM,IAAI,8CAAyC,CAAC;AAAA,IACpE;AAGA,QAAI,KAAK,QAAQ;AACb,YAAMC,WAAU,IAAI,CAAC,OAAO,UAAU,aAAa,UAAU,WAAW,GAAG,GAAG,EAAE;AAChF,YAAMC,YAAW,IAAI,CAAC,QAAQ,UAAU,aAAa,IAAI,QAAQ,GAAG,GAAG,EAAE;AACzE,YAAMC,gBAAe,IAAI,CAAC,QAAQ,UAAU,aAAa,IAAI,aAAa,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO;AAChH,YAAMC,WAAU,aAAa,QAAQD,eAAcF,QAAO;AAC1D,YAAMI,UAAS,YAAY,QAAQJ,UAASC,WAAU,MAAM;AAE5D,cAAQ,IAAI,EAAE,KAAK,4BAA4B,CAAC;AAChD,cAAQ,IAAI,KAAK,cAAM,KAAK,QAAQ,CAAC,IAAIE,QAAO,EAAE;AAClD,UAAI,OAAO,SAAS,GAAG;AACnB,gBAAQ,IAAI,KAAK,cAAM,KAAK,SAAS,CAAC,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE;AAAA,MACnE;AACA,cAAQ,IAAI;AAAA,IAAO,cAAM,KAAK,OAAO,CAAC,EAAE;AACxC,iBAAW,QAAQC,QAAO,MAAM,IAAI,GAAG;AACnC,gBAAQ,IAAI,KAAK,cAAM,IAAI,IAAI,CAAC,EAAE;AAAA,MACtC;AACA,cAAQ,IAAI,EAAE,OAAO,uFAAkF,CAAC;AACxG;AAAA,IACJ;AAGA,YAAQ,IAAI,cAAM,IAAI,qBAAqB,aAAa,KAAK,CAAC;AAC9D,QAAI,CAAC,SAAS,UAAU,aAAa,GAAG,GAAG;AAG3C,YAAQ,IAAI,cAAM,IAAI,0BAA0B,aAAa,KAAK,CAAC;AACnE,UAAM,eAAe,IAAI,CAAC,UAAU,UAAU,aAAa,EAAE,GAAG,GAAG;AACnE,QAAI,CAAC,aAAa,IAAI;AAClB,YAAM,YAAY,IAAI,CAAC,QAAQ,eAAe,iBAAiB,GAAG,GAAG,EAAE;AACvE,cAAQ,MAAM,cAAM,IAAI,yCAAoC,CAAC;AAC7D,UAAI,WAAW;AACX,mBAAW,KAAK,UAAU,MAAM,IAAI,EAAG,SAAQ,MAAM,cAAM,OAAO,OAAO,CAAC,EAAE,CAAC;AAAA,MACjF;AACA,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MAGJ,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,YAAQ,IAAI,EAAE,QAAQ,gCAA2B,aAAa,EAAE,CAAC;AAGjE,wBAAoB,KAAK,aAAa;AAGtC,UAAM,oBAAoB,8BAA8B,KAAK,UAAU,aAAa,EAAE;AACtF,QAAI,kBAAkB,SAAS,GAAG;AAC9B,kCAA4B,mBAAmB,UAAU,aAAa,EAAE;AACxE,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,gBAAgB,MAAM,yBAAyB;AAAA,MACjD,KAAK,KAAK;AAAA,MACV,SAAS,cAAc,MAAM;AAAA,MAC7B,SAAS;AAAA,IACb,CAAC;AACD,QAAI,CAAC,eAAe;AAChB,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,YAAQ,IAAI,cAAM,IAAI,qBAAqB,CAAC;AAC5C,UAAM,aAAa,IAAI,CAAC,QAAQ,UAAU,QAAQ,oBAAoB,GAAG,GAAG;AAC5E,QAAI,CAAC,WAAW,IAAI;AAChB,cAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,IAAyB,WAAW,GAAG;AAAA,CAAI,CAAC;AACpE,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,YAAQ,IAAI,EAAE,QAAQ,mBAAc,MAAM,EAAE,CAAC;AAG7C,UAAM,UAAU,IAAI,CAAC,OAAO,UAAU,aAAa,UAAU,WAAW,GAAG,GAAG,EAAE;AAChF,UAAM,WAAW,IAAI,CAAC,QAAQ,UAAU,aAAa,IAAI,QAAQ,GAAG,GAAG,EAAE;AACzE,UAAM,eAAe,IAAI,CAAC,QAAQ,UAAU,aAAa,IAAI,aAAa,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO;AAChH,UAAM,UAAU,aAAa,QAAQ,cAAc,OAAO;AAC1D,UAAM,SAAS,YAAY,QAAQ,SAAS,UAAU,MAAM;AAG5D,YAAQ,IAAI,cAAM,IAAI,kBAAkB,CAAC;AACzC,UAAM,SAAS,CAAC,MAAM,UAAU,WAAW,SAAS,UAAU,MAAM;AACpE,QAAI,KAAK,MAAO,QAAO,KAAK,SAAS;AAErC,UAAM,eAAW,sCAAU,MAAM,QAAQ,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACjF,QAAI,SAAS,WAAW,GAAG;AACvB,cAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,IAAgC,SAAS,QAAQ,KAAK,CAAC;AAAA,CAAI,CAAC;AACpF,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,UAAM,QAAQ,SAAS,OAAO,KAAK;AACnC,YAAQ,IAAI,EAAE,QAAQ,wBAAmB,KAAK,EAAE,CAAC;AAGjD,eAAWL,UAAS,QAAQ;AACxB,SAAG,CAAC,UAAUA,OAAM,IAAI,WAAW,OAAO,KAAK,EAAE,GAAG,GAAG;AAAA,IAC3D;AACA,QAAI,OAAO,SAAS,GAAG;AACnB,cAAQ,IAAI,EAAE,QAAQ,yBAAoB,OAAO,MAAM,WAAW,CAAC;AAAA,IACvE;AAGA,QAAI,CAAC,KAAK,MAAM;AACZ,YAAM,WAAW,MAAM,yBAAyB;AAAA,QAC5C,KAAK,KAAK;AAAA,QACV,SAAS,4BAA4B,GAAG;AAAA,QACxC,SAAS;AAAA,MACb,CAAC;AAED,UAAI,UAAU;AACV,cAAM,WAAW,oBAAoB,GAAG;AACxC,cAAM,UAAU,oBAAoB,KAAK,QAAQ;AAEjD,YAAI,QAAQ,SAAS;AACjB,uCAA6B,GAAG;AAChC,+BAAqB,QAAQ;AAC7B,cAAI,QAAQ,gBAAgB;AACxB,oBAAQ,IAAI,EAAE,QAAQ,8DAAyD,CAAC;AAAA,UACpF,OAAO;AACH,oBAAQ,IAAI,EAAE,QAAQ,2BAAsB,CAAC;AAAA,UACjD;AAAA,QACJ,OAAO;AACH,kBAAQ,IAAI,cAAM,OAAO,0EAAgE,CAAC;AAC1F,kBAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,oBAAoB,GAAG,UAAU,CAAC;AAC9E,kBAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,8BAA8B,CAAC;AAAA,QAC/E;AAEA,mBAAW,WAAW,QAAQ,UAAU;AACpC,kBAAQ,IAAI,cAAM,IAAI,OAAO,OAAO,EAAE,CAAC;AAAA,QAC3C;AAAA,MACJ;AAAA,IACJ;AAEA,YAAQ,IAAI,EAAE,UAAU,6BAAwB,CAAC;AACjD,YAAQ,IAAI,cAAM,IAAI,SAAS,KAAK,EAAE,CAAC;AACvC,YAAQ,IAAI,cAAM,IAAI,8CAA8C,CAAC;AAAA,EACzE,CAAC;AACT;;;AC7hBA;AACA,IAAAM,8BAA0B;AAC1B,IAAAC,kBAAoF;AACpF,IAAAC,qBAAwD;AA8IxD,SAASC,KAAI,MAAgB,KAAwD;AACjF,QAAM,QAAI,uCAAU,OAAO,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACzE,SAAO;AAAA,IACH,IAAI,EAAE,WAAW;AAAA,IACjB,MAAM,EAAE,UAAU,IAAI,KAAK;AAAA,IAC3B,MAAM,EAAE,UAAU,IAAI,KAAK;AAAA,EAC/B;AACJ;AAEA,SAAS,qBAAqB,UAAqC;AAC/D,QAAM,IAAIA,KAAI,CAAC,YAAY,QAAQ,aAAa,GAAG,QAAQ;AAC3D,MAAI,CAAC,EAAE,GAAI,QAAO,CAAC;AAEnB,QAAM,YAA+B,CAAC;AACtC,MAAI,UAAoC,CAAC;AAEzC,aAAW,QAAQ,EAAE,IAAI,MAAM,IAAI,GAAG;AAClC,QAAI,KAAK,WAAW,WAAW,GAAG;AAC9B,UAAI,QAAQ,MAAM;AACd,kBAAU,KAAK;AAAA,UACX,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,UAChB,MAAM,QAAQ;AAAA,UACd,UAAU,QAAQ,QAAQ,QAAQ;AAAA,QACtC,CAAC;AAAA,MACL;AACA,gBAAU,EAAE,MAAM,KAAK,MAAM,YAAY,MAAM,GAAG,UAAU,MAAM;AAClE;AAAA,IACJ;AAEA,QAAI,KAAK,WAAW,OAAO,GAAG;AAC1B,cAAQ,OAAO,KAAK,MAAM,QAAQ,MAAM;AACxC;AAAA,IACJ;AAEA,QAAI,KAAK,WAAW,SAAS,GAAG;AAC5B,cAAQ,SAAS,KAAK,MAAM,UAAU,MAAM;AAC5C;AAAA,IACJ;AAEA,QAAI,SAAS,YAAY;AACrB,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ;AAEA,MAAI,QAAQ,MAAM;AACd,cAAU,KAAK;AAAA,MACX,MAAM,QAAQ;AAAA,MACd,QAAQ,QAAQ;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd,UAAU,QAAQ,QAAQ,QAAQ;AAAA,IACtC,CAAC;AAAA,EACL;AAEA,SAAO;AACX;AAEA,SAAS,oBAAoB,OAAsC;AAC/D,QAAM,SAAS,oBAAI,IAAoB;AACvC,QAAM,SAAS,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM;AAE5D,aAAW,aAAa,QAAQ;AAC5B,eAAW,cAAc,QAAQ;AAC7B,UAAI,cAAc,WAAY;AAC9B,UAAI,UAAU,WAAW,GAAG,UAAU,GAAG,sBAAG,EAAE,GAAG;AAC7C,eAAO,IAAI,WAAW,UAAU;AAChC;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAGO,SAAS,gBAAgB,UAAkC;AAC9D,QAAM,eAAe,qBAAqB,QAAQ;AAClD,QAAM,cAAc,aAAa,OAAO,QAAM,GAAG,QAAQ,WAAW,gBAAgB,CAAC;AACrF,QAAM,gBAAgB,oBAAoB,YAAY,IAAI,QAAM,GAAG,IAAI,CAAC;AAExE,QAAM,YAA4B,YAAY,IAAI,SAAO;AAAA,IACrD,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG,UAAU;AAAA,IACrB,MAAM,GAAG,QAAQ;AAAA,IACjB,UAAU,GAAG;AAAA,IACb,cAAc,cAAc,IAAI,GAAG,IAAI;AAAA,EAC3C,EAAE;AAGF,aAAW,MAAM,WAAW;AACxB,QAAI;AACA,YAAM,eAAW,gCAAW,yBAAK,GAAG,MAAM,SAAS,mBAAmB,CAAC,QACjE,yBAAK,GAAG,MAAM,SAAS,mBAAmB,QAC1C,yBAAK,GAAG,MAAM,oBAAoB;AACxC,YAAM,UAAM,8BAAa,UAAU,MAAM;AACzC,YAAMC,QAAO,KAAK,MAAM,GAAG;AAC3B,SAAG,UAAUA,MAAK;AAClB,SAAG,aAAaA,MAAK;AAAA,IACzB,QAAQ;AAAA,IAER;AAEA,UAAM,WAAO,uCAAU,OAAO,CAAC,OAAO,MAAM,mBAAsB,MAAM,GAAG;AAAA,MACvE,KAAK,GAAG;AAAA,MACR,UAAU;AAAA,MACV,OAAO;AAAA,IACX,CAAC;AAED,QAAI,KAAK,WAAW,KAAK,KAAK,OAAO,KAAK,GAAG;AACzC,YAAM,SAAS,KAAK,OAAO,KAAK,EAAE,QAAQ,GAAM;AAChD,UAAI,WAAW,IAAI;AACf,WAAG,cAAc,IAAI,KAAK,KAAK,OAAO,MAAM,GAAG,MAAM,EAAE,KAAK,CAAC;AAC7D,WAAG,aAAa,KAAK,OAAO,MAAM,SAAS,CAAC,EAAE,KAAK;AAAA,MACvD;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAEA,SAAS,uBAAuB,UAA0B;AACtD,aAAO,yBAAK,UAAU,SAAS,WAAW;AAC9C;AAEA,SAAS,sBAAsB,UAA4B;AACvD,QAAM,cAAc,uBAAuB,QAAQ;AACnD,MAAI,KAAC,4BAAW,WAAW,EAAG,QAAO,CAAC;AAEtC,QAAM,cAAc,IAAI,IAAI,qBAAqB,QAAQ,EAAE,IAAI,YAAM,4BAAQ,GAAG,IAAI,CAAC,CAAC;AACtF,QAAM,UAAoB,CAAC;AAE3B,aAAW,aAAS,6BAAY,WAAW,GAAG;AAC1C,UAAM,eAAW,yBAAK,aAAa,KAAK;AACxC,QAAI,cAAc;AAClB,QAAI;AACA,wBAAc,0BAAS,QAAQ,EAAE,YAAY;AAAA,IACjD,QAAQ;AACJ;AAAA,IACJ;AAEA,QAAI,CAAC,YAAa;AAClB,QAAI,CAAC,YAAY,QAAI,4BAAQ,QAAQ,CAAC,GAAG;AACrC,cAAQ,KAAK,QAAQ;AAAA,IACzB;AAAA,EACJ;AAEA,SAAO,QAAQ,KAAK;AACxB;AAEA,SAAS,oBAAoB,UAAoD;AAC7E,QAAM,QAAQD,KAAI,CAAC,YAAY,SAAS,YAAY,KAAK,GAAG,QAAQ;AACpE,SAAO;AAAA,IACH,IAAI,MAAM;AAAA,IACV,SAAS,MAAM,KAAK,uCAAuC,MAAM,OAAO;AAAA,EAC5E;AACJ;AAGA,SAAS,iBAAiB,QAAgB,UAA2B;AACjE,QAAM,cAAc,OAAO,QAAQ,eAAe,EAAE;AACpD,QAAM,QAAI,uCAAU,OAAO,CAAC,UAAU,YAAY,eAAe,UAAU,WAAW,GAAG;AAAA,IACrF,KAAK;AAAA,IAAU,UAAU;AAAA,IAAQ,OAAO;AAAA,EAC5C,CAAC;AACD,UAAQ,EAAE,UAAU,IAAI,SAAS,WAAW;AAChD;AAEA,SAAS,oBAAoB,QAAwB;AACjD,SAAO,OAAO,QAAQ,eAAe,EAAE;AAC3C;AAEA,SAAS,cAAc,OAAuB;AAC1C,SAAO,MACF,QAAQ,4BAA4B,kBAAkB,EACtD,QAAQ,6CAA6C,eAAe,EACpE,KAAK,EACL,MAAM,GAAG,GAAG;AACrB;AAEA,SAAS,eAAe,gBAA0C;AAC9D,UAAQ,gBAAgB;AAAA,IACpB,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,EACf;AACJ;AAEO,SAAS,iBACZ,OACA,kBACA,WACgB;AAChB,QAAM,kBAAkB,OAAO,YAAY,KAAK;AAChD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,MAAI,oBAAoB,YAAY,oBAAoB,SAAU,QAAO;AACzE,MAAI,oBAAoB,OAAQ,QAAO;AAEvC,QAAM,aAAa,kBAAkB,YAAY,KAAK;AACtD,UAAQ,YAAY;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,aAAO;AAAA,EACf;AAEA,QAAM,sBAAsB,WAAW,YAAY,KAAK;AACxD,MAAI,wBAAwB,YAAa,QAAO;AAChD,MAAI,wBAAwB,cAAe,QAAO;AAElD,SAAO;AACX;AAEA,SAAS,eAAe,UAAkB,aAAuD;AAC7F,MAAI,CAAC,YAAa,QAAO;AACzB,QAAM,YAAYA,KAAI,CAAC,aAAa,UAAU,WAAW,EAAE,GAAG,QAAQ;AACtE,SAAO,UAAU,MAAM,UAAU,MAAM,UAAU,MAAM;AAC3D;AAEA,SAAS,cAAc,QAAgB,IAAyB,UAAkBE,SAA0B;AACxG,QAAM,cAAc,oBAAoB,MAAM;AAE9C,MAAIA,SAAO;AACP,WAAO;AAAA,MACH,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,aAAa,eAAe,SAAS;AAAA,MACrC,OAAAA;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,CAAC,IAAI;AACL,WAAO;AAAA,MACH,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,aAAa,eAAe,OAAO;AAAA,IACvC;AAAA,EACJ;AAEA,QAAM,QAAQ,GAAG,OAAO,YAAY,KAAK;AACzC,QAAM,aAAa,GAAG,kBAAkB,YAAY,KAAK;AACzD,QAAM,iBAAiB,iBAAiB,OAAO,YAAY,GAAG,SAAS;AACvE,QAAM,UAAU,GAAG,cAAc,eAAe,UAAU,GAAG,WAAW;AAExE,SAAO;AAAA,IACH,WAAW;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,IACA,aAAa;AAAA,IACb;AAAA,IACA,SAAS;AAAA,IACT,GAAI,GAAG,MAAM,EAAE,QAAQ,GAAG,IAAI,IAAI,CAAC;AAAA,IACnC,GAAI,OAAO,GAAG,WAAW,WAAW,EAAE,WAAW,GAAG,OAAO,IAAI,CAAC;AAAA,IAChE,GAAI,GAAG,aAAa,EAAE,UAAU,GAAG,WAAW,IAAI,CAAC;AAAA,IACnD,GAAI,UAAU,EAAE,UAAU,QAAQ,IAAI,CAAC;AAAA,IACvC,GAAI,GAAG,cAAc,EAAE,UAAU,GAAG,YAAY,IAAI,CAAC;AAAA,IACrD,aAAa,eAAe,cAAc;AAAA,EAC9C;AACJ;AAGO,SAAS,YAAY,QAAgB,UAA4B;AACpE,QAAM,cAAc,oBAAoB,MAAM;AAC9C,QAAM,QAAI,uCAAU,MAAM;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,GAAG;AAAA,IACC,KAAK;AAAA,IAAU,UAAU;AAAA,IAAQ,OAAO;AAAA,EAC5C,CAAC;AAED,MAAI,EAAE,WAAW,GAAG;AAChB,WAAO,cAAc,aAAa,MAAM,UAAU,cAAc,EAAE,UAAU,mBAAmB,CAAC;AAAA,EACpG;AAEA,MAAI;AACA,UAAM,OAAO,KAAK,MAAM,EAAE,UAAU,IAAI;AACxC,QAAI,CAAC,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,EAAG,QAAO,cAAc,aAAa,MAAM,QAAQ;AAC/F,WAAO,cAAc,aAAa,KAAK,CAAC,KAAK,MAAM,QAAQ;AAAA,EAC/D,SAASA,SAAO;AACZ,UAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,WAAO,cAAc,aAAa,MAAM,UAAU,cAAc,OAAO,CAAC;AAAA,EAC5E;AACJ;AAGA,SAAS,mBAAmB,QAA0B;AAClD,UAAQ,OAAO,gBAAgB;AAAA,IAC3B,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,EACf;AACJ;AAEA,SAAS,qBAAqB,UAAkB,QAA0B;AACtE,QAAM,SAAS,OAAO;AACtB,QAAM,QAAQ,OAAO,YAAY,OAAO,OAAO,SAAS,IAAI,OAAO;AAEnE,UAAQ,OAAO,gBAAgB;AAAA,IAC3B,KAAK,gBAAgB;AACjB,YAAM,UAAU,OAAO,YAAY;AACnC,aAAO,UAAU,QAAQ,aAAa,MAAM,cAAc,QAAQ,kBAAkB,OAAO,cAAc,QAAQ;AAAA,IACrH;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AACD,aAAO,QAAQ,cAAc,KAAK,WAAW,qBAAqB,MAAM;AAAA,IAC5E,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO,qBAAqB,MAAM;AAAA,IACtC,KAAK;AACD,aAAO,uBAAuB,MAAM;AAAA,IACxC,KAAK;AACD,aAAO;AAAA,EACf;AACJ;AAEA,SAAS,sBAAwD;AAC7D,SAAO;AAAA,IACH,SAAS;AAAA,IACT,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,EACb;AACJ;AAEO,SAAS,iBAAiB,UAAkB,cAAc,KAAK,IAAI,GAAkB;AACxF,QAAM,WAAW,gBAAgB,QAAQ,EAAE,IAAI,CAAC,OAAuB;AACnE,UAAM,SAAS,YAAY,GAAG,QAAQ,QAAQ;AAC9C,WAAO;AAAA,MACH,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,OAAO;AAAA,MACf,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,MACjD,GAAI,OAAO,OAAO,cAAc,WAAW,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,MAC9E,OAAO,OAAO;AAAA,MACd,aAAa,OAAO;AAAA,MACpB,gBAAgB,OAAO;AAAA,MACvB,SAAS,OAAO;AAAA,MAChB,kBAAkB,mBAAmB,MAAM;AAAA,MAC3C,oBAAoB,qBAAqB,UAAU,MAAM;AAAA,MACzD,eAAe;AAAA,MACf,GAAI,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,IAClD;AAAA,EACJ,CAAC;AAED,QAAM,UAAU,oBAAoB;AACpC,aAAW,WAAW,UAAU;AAC5B,YAAQ,QAAQ,cAAc,KAAK;AAAA,EACvC;AAEA,SAAO;AAAA,IACH,WAAW;AAAA,IACX,MAAM;AAAA,IACN,eAAe;AAAA,IACf;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,SAAS,mBAAmB,SAAkC;AAC1D,SAAO,CAAC,gBAAgB,cAAc,WAAW,SAAS,EAAE,SAAS,QAAQ,cAAc;AAC/F;AAEA,SAAS,kBAAkB,QAA6B;AACpD,UAAQ,IAAI,EAAE,KAAK,4BAA4B,CAAC;AAChD,UAAQ,IAAI,cAAM,IAAI,WAAW,OAAO,IAAI,EAAE,CAAC;AAC/C,UAAQ,IAAI,cAAM,IAAI,oBAAoB,OAAO,aAAa,EAAE,CAAC;AACjE,UAAQ,IAAI,cAAM,IAAI,wBAAwB,OAAO,SAAS,MAAM,EAAE,CAAC;AAEvE,QAAM,YAAY,OAAO,SAAS,OAAO,kBAAkB;AAC3D,UAAQ,IAAI,cAAM,IAAI,yBAAyB,UAAU,MAAM,EAAE,CAAC;AAElE,MAAI,OAAO,SAAS,WAAW,GAAG;AAC9B,YAAQ,IAAI,cAAM,IAAI,6BAA6B,CAAC;AACpD;AAAA,EACJ;AAEA,aAAW,WAAW,OAAO,UAAU;AACnC,UAAM,SAAS,mBAAmB,OAAO,IAAI,cAAM,OAAO,GAAG,IAAI,cAAM,MAAM,QAAG;AAChF,UAAM,KAAK,QAAQ,SAAS,IAAI,cAAM,IAAI,QAAQ,MAAM,CAAC,KAAK;AAC9D,YAAQ,IAAI;AAAA,IAAO,MAAM,IAAI,cAAM,KAAK,QAAQ,MAAM,CAAC,IAAI,QAAQ,cAAc,GAAG,EAAE,EAAE;AACxF,QAAI,QAAQ,YAAa,SAAQ,IAAI,cAAM,IAAI,oBAAoB,QAAQ,WAAW,EAAE,CAAC;AACzF,YAAQ,IAAI,cAAM,IAAI,eAAe,QAAQ,gBAAgB,EAAE,CAAC;AAChE,YAAQ,IAAI,cAAM,IAAI,gBAAgB,QAAQ,kBAAkB,EAAE,CAAC;AACnE,QAAI,QAAQ,MAAO,SAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,KAAK,EAAE,CAAC;AAAA,EAC3E;AAEA,UAAQ,IAAI,EAAE;AAClB;AAGA,SAAS,0BAA0B,OAAqC;AACpE,QAAM,YAAY,SAAS,OACtB,MAAM,GAAG,EACT,IAAI,YAAU,OAAO,KAAK,CAAC,EAC3B,OAAO,OAAO,EACd,IAAI,YAAU,OAAO,SAAS,GAAG,KAAK,OAAO,SAAS,GAAG,IAAI,OAAO,QAAQ,OAAO,EAAE,IAAI,GAAG,MAAM,GAAG;AAE1G,SAAO,SAAS,SAAS,IAAI,CAAC,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK;AAChE;AAEA,SAAS,oBAAoB,UAAkB,UAA8B;AACzE,QAAM,WAAWF,KAAI,CAAC,gBAAgB,6BAA6B,YAAY,GAAG,QAAQ;AAC1F,MAAI,CAAC,SAAS,GAAI,QAAO,CAAC;AAE1B,SAAO,SAAS,IACX,MAAM,IAAI,EACV,IAAI,UAAQ,KAAK,KAAK,CAAC,EACvB,OAAO,OAAO,EACd,OAAO,YAAU,SAAS,KAAK,YAAU,OAAO,WAAW,MAAM,CAAC,CAAC,EACnE,KAAK;AACd;AAEA,SAAS,mBAAmB,UAA+B;AACvD,SAAO,IAAI,IAAI,qBAAqB,QAAQ,EACvC,IAAI,QAAM,GAAG,SAAS,oBAAoB,GAAG,MAAM,IAAI,IAAI,EAC3D,OAAO,CAAC,WAA6B,QAAQ,MAAM,CAAC,CAAC;AAC9D;AAEA,SAAS,eAAe,QAAkB,cAA+B;AACrE,MAAI,aAAc,QAAO;AACzB,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,MAAI,OAAO,UAAU,SAAU,QAAO;AAEtC,UAAQ,OAAO,gBAAgB;AAAA,IAC3B,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO;AAAA,IACX,KAAK;AACD,aAAO,OAAO,QAAQ,qBAAqB,OAAO,KAAK,KAAK;AAAA,IAChE,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,aAAO,iBAAiB,OAAO,cAAc;AAAA,EACrD;AACJ;AAEA,SAAS,qBAAqB,UAAkB,QAAgB,QAAkB,aAAqB,cAAwC;AAC3I,QAAM,eAAe,CAAC,iBAAiB,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,mBAAmB;AAE3H,SAAO;AAAA,IACH,WAAW;AAAA,IACX,MAAM;AAAA,IACN;AAAA,IACA,UAAU,OAAO;AAAA,IACjB,gBAAgB,OAAO;AAAA,IACvB,QAAQ,eAAe,WAAW;AAAA,IAClC,QAAQ,eAAe,QAAQ,YAAY;AAAA,IAC3C,SAAS,eAAe,YAAY;AAAA,IACpC,eAAe;AAAA,IACf,GAAI,eAAe,EAAE,SAAS,UAAU,QAAQ,cAAc,MAAM,GAAG,IAAI,CAAC;AAAA,IAC5E,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IACjD,GAAI,OAAO,OAAO,cAAc,WAAW,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,IAC9E,GAAI,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,EAClD;AACJ;AAEA,SAAS,kBAAkB,UAAwD;AAC/E,SAAO;AAAA,IACH,QAAQ,SAAS,OAAO,aAAW,QAAQ,WAAW,QAAQ,EAAE;AAAA,IAChE,MAAM,SAAS,OAAO,aAAW,QAAQ,WAAW,MAAM,EAAE;AAAA,IAC5D,SAAS,SAAS,OAAO,aAAW,QAAQ,YAAY,SAAS,EAAE;AAAA,IACnE,QAAQ,SAAS,OAAO,aAAW,QAAQ,YAAY,QAAQ,EAAE;AAAA,EACrE;AACJ;AAEO,SAAS,aAAa,UAAkB,UAAoB,cAAc,KAAK,IAAI,GAAmB;AACzG,QAAM,aAAa,mBAAmB,QAAQ;AAC9C,QAAM,WAAW,oBAAoB,UAAU,QAAQ,EAAE,IAAI,YAAU;AACnE,UAAM,SAAS,YAAY,QAAQ,QAAQ;AAC3C,WAAO,qBAAqB,UAAU,QAAQ,QAAQ,aAAa,WAAW,IAAI,MAAM,CAAC;AAAA,EAC7F,CAAC;AAED,SAAO;AAAA,IACH,WAAW;AAAA,IACX,MAAM;AAAA,IACN,eAAe;AAAA,IACf,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,SAAS,kBAAkB,QAAQ;AAAA,EACvC;AACJ;AAEA,SAAS,cAAc,QAAwC;AAC3D,QAAM,WAAW,OAAO,SAAS,IAAI,aAAW;AAC5C,QAAI,QAAQ,WAAW,SAAU,QAAO;AAExC,UAAM,SAASA,KAAI,CAAC,UAAU,MAAM,QAAQ,MAAM,GAAG,OAAO,IAAI;AAChE,QAAI,OAAO,IAAI;AACX,aAAO,EAAE,GAAG,SAAS,SAAS,UAAmB;AAAA,IACrD;AAEA,WAAO;AAAA,MACH,GAAG;AAAA,MACH,SAAS;AAAA,MACT,OAAO,cAAc,OAAO,OAAO,oBAAoB,QAAQ,MAAM,EAAE;AAAA,IAC3E;AAAA,EACJ,CAAC;AAED,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,IACN;AAAA,IACA,SAAS,kBAAkB,QAAQ;AAAA,EACvC;AACJ;AAEA,SAAS,mBAAmB,QAA8B;AACtD,UAAQ,IAAI,EAAE,KAAK,6BAA6B,CAAC;AACjD,UAAQ,IAAI,cAAM,IAAI,WAAW,OAAO,IAAI,EAAE,CAAC;AAC/C,UAAQ,IAAI,cAAM,IAAI,WAAW,OAAO,IAAI,EAAE,CAAC;AAC/C,UAAQ,IAAI,cAAM,IAAI,eAAe,OAAO,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;AAClE,UAAQ,IAAI,cAAM,IAAI,uBAAuB,OAAO,SAAS,MAAM,EAAE,CAAC;AACtE,UAAQ,IAAI,cAAM,IAAI,wBAAwB,OAAO,QAAQ,MAAM,EAAE,CAAC;AAEtE,MAAI,OAAO,SAAS,WAAW,GAAG;AAC9B,YAAQ,IAAI,cAAM,IAAI,iCAAiC,CAAC;AACxD;AAAA,EACJ;AAEA,aAAW,WAAW,OAAO,UAAU;AACnC,UAAM,SAAS,QAAQ,WAAW,WAAW,cAAM,OAAO,QAAQ,IAAI,cAAM,IAAI,MAAM;AACtF,UAAM,UAAU,QAAQ,YAAY,YAAY,YAAY,QAAQ;AACpE,YAAQ,IAAI;AAAA,IAAO,MAAM,IAAI,cAAM,KAAK,QAAQ,MAAM,CAAC,IAAI,cAAM,IAAI,IAAI,OAAO,GAAG,CAAC,EAAE;AACtF,YAAQ,IAAI,cAAM,IAAI,iBAAiB,QAAQ,YAAY,MAAM,oBAAoB,QAAQ,cAAc,EAAE,CAAC;AAC9G,YAAQ,IAAI,cAAM,IAAI,eAAe,QAAQ,MAAM,EAAE,CAAC;AACtD,QAAI,QAAQ,QAAS,SAAQ,IAAI,cAAM,IAAI,gBAAgB,QAAQ,OAAO,EAAE,CAAC;AAC7E,QAAI,QAAQ,MAAO,SAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,KAAK,EAAE,CAAC;AAAA,EAC3E;AAEA,MAAI,OAAO,SAAS,aAAa,OAAO,QAAQ,SAAS,GAAG;AACxD,YAAQ,IAAI,cAAM,OAAO,2FAAsF,CAAC;AAAA,EACpH,OAAO;AACH,YAAQ,IAAI,EAAE;AAAA,EAClB;AACJ;AAGA,SAAS,2BAAoE;AACzE,SAAO;AAAA,IACH,wBAAwB;AAAA,IACxB,qBAAqB;AAAA,IACrB,2BAA2B;AAAA,IAC3B,gBAAgB;AAAA,IAChB,oBAAoB;AAAA,EACxB;AACJ;AAEA,SAAS,oBACL,UACA,aACA,SACmB;AACnB,SAAO;AAAA,IACH,WAAW;AAAA,IACX,MAAM;AAAA,IACN,eAAe;AAAA,IACf,GAAG;AAAA,EACP;AACJ;AAEA,SAAS,4BAA4B,gBAA2C;AAC5E,SAAO,CAAC,gBAAgB,cAAc,WAAW,SAAS,EAAE,SAAS,cAAc;AACvF;AAEO,SAAS,aAAa,UAAkB,UAAoB,cAAc,KAAK,IAAI,GAAuB;AAC7G,QAAM,WAAkC,CAAC;AACzC,QAAM,YAAY,gBAAgB,QAAQ;AAC1C,QAAM,mBAAmB,oBAAI,IAA0B;AAEvD,aAAW,MAAM,WAAW;AACxB,UAAM,SAAS,oBAAoB,GAAG,MAAM;AAC5C,qBAAiB,IAAI,QAAQ,EAAE;AAE/B,QAAI,GAAG,UAAU;AACb,eAAS,KAAK,oBAAoB,UAAU,aAAa;AAAA,QACrD,eAAe,GAAG;AAAA,QAClB;AAAA,QACA,mBAAmB;AAAA,QACnB,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,oBAAoB,UAAU,QAAQ;AAAA,MAC1C,CAAC,CAAC;AAAA,IACN;AAAA,EACJ;AAEA,aAAW,cAAc,sBAAsB,QAAQ,GAAG;AACtD,aAAS,KAAK,oBAAoB,UAAU,aAAa;AAAA,MACrD,eAAe;AAAA,MACf,QAAQ;AAAA,MACR,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,IACxB,CAAC,CAAC;AAAA,EACN;AAEA,aAAW,UAAU,oBAAoB,UAAU,QAAQ,GAAG;AAC1D,UAAM,SAAS,YAAY,QAAQ,QAAQ;AAC3C,UAAM,KAAK,iBAAiB,IAAI,MAAM;AACtC,UAAM,aAAa;AAAA,MACf,eAAe,IAAI,QAAQ;AAAA,MAC3B;AAAA,MACA,mBAAmB,OAAO;AAAA,MAC1B,GAAI,OAAO,SAAS,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,MACjD,GAAI,OAAO,OAAO,cAAc,WAAW,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,MAC9E,GAAI,OAAO,QAAQ,EAAE,OAAO,OAAO,MAAM,IAAI,CAAC;AAAA,IAClD;AAEA,QAAI,CAAC,IAAI;AACL,eAAS,KAAK,oBAAoB,UAAU,aAAa;AAAA,QACrD,GAAG;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,oBAAoB,kCAAkC,SAAS,KAAK,GAAG,CAAC;AAAA,MAC5E,CAAC,CAAC;AAAA,IACN;AAEA,QAAI,4BAA4B,OAAO,cAAc,GAAG;AACpD,eAAS,KAAK,oBAAoB,UAAU,aAAa;AAAA,QACrD,GAAG;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB,mBAAmB,MAAM;AAAA,QAC3C,oBAAoB,qBAAqB,UAAU,MAAM;AAAA,MAC7D,CAAC,CAAC;AAAA,IACN;AAEA,QAAI,OAAO,mBAAmB,UAAU;AACpC,eAAS,KAAK,oBAAoB,UAAU,aAAa;AAAA,QACrD,GAAG;AAAA,QACH,cAAc;AAAA,QACd,kBAAkB,KACZ,mEACA;AAAA,QACN,oBAAoB,KAAK,gCAAgC,kCAAkC,SAAS,KAAK,GAAG,CAAC;AAAA,MACjH,CAAC,CAAC;AAAA,IACN;AAAA,EACJ;AAEA,QAAM,UAAU,yBAAyB;AACzC,aAAW,WAAW,UAAU;AAC5B,YAAQ,QAAQ,YAAY,KAAK;AAAA,EACrC;AAEA,SAAO;AAAA,IACH,WAAW;AAAA,IACX,MAAM;AAAA,IACN,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACJ;AACJ;AAEA,SAAS,uBAAuB,QAAkC;AAC9D,UAAQ,IAAI,EAAE,KAAK,iCAAiC,CAAC;AACrD,UAAQ,IAAI,cAAM,IAAI,WAAW,OAAO,IAAI,EAAE,CAAC;AAC/C,UAAQ,IAAI,cAAM,IAAI,oBAAoB,OAAO,aAAa,EAAE,CAAC;AACjE,UAAQ,IAAI,cAAM,IAAI,eAAe,OAAO,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;AAClE,UAAQ,IAAI,cAAM,IAAI,eAAe,OAAO,SAAS,MAAM,EAAE,CAAC;AAE9D,MAAI,OAAO,SAAS,WAAW,GAAG;AAC9B,YAAQ,IAAI,EAAE,QAAQ,iDAA4C,CAAC;AACnE;AAAA,EACJ;AAEA,aAAW,WAAW,OAAO,UAAU;AACnC,YAAQ,IAAI;AAAA,IAAO,cAAM,OAAO,GAAG,CAAC,IAAI,cAAM,KAAK,QAAQ,YAAY,CAAC,EAAE;AAC1E,YAAQ,IAAI,cAAM,IAAI,eAAe,QAAQ,UAAU,MAAM,EAAE,CAAC;AAChE,YAAQ,IAAI,cAAM,IAAI,sBAAsB,QAAQ,iBAAiB,MAAM,EAAE,CAAC;AAC9E,YAAQ,IAAI,cAAM,IAAI,0BAA0B,QAAQ,qBAAqB,MAAM,EAAE,CAAC;AACtF,YAAQ,IAAI,cAAM,IAAI,eAAe,QAAQ,gBAAgB,EAAE,CAAC;AAChE,YAAQ,IAAI,cAAM,IAAI,gBAAgB,QAAQ,kBAAkB,EAAE,CAAC;AACnE,QAAI,QAAQ,MAAO,SAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,KAAK,EAAE,CAAC;AAAA,EAC3E;AAEA,UAAQ,IAAI,EAAE;AAClB;AAEA,SAAS,oBAAoB,UAAkB,cAAwD;AACnG,QAAM,SAASA,KAAI,CAAC,YAAY,UAAU,cAAc,SAAS,GAAG,QAAQ;AAC5E,MAAI,CAAC,OAAO,IAAI;AACZ,WAAO,EAAE,IAAI,OAAO,SAAS,OAAO,OAAO,oBAAoB,YAAY,GAAG;AAAA,EAClF;AAEA,+BAA6B,YAAY;AACzC,EAAAG,sBAAqB,QAAQ;AAC7B,SAAO,EAAE,IAAI,MAAM,SAAS,WAAW,YAAY,GAAG;AAC1D;AAEO,SAAS,YAAY,KAAqB;AAC7C,QAAM,kBAAkBH,KAAI,CAAC,aAAa,kBAAkB,GAAG,GAAG;AAClE,MAAI,gBAAgB,MAAM,gBAAgB,KAAK;AAC3C,UAAM,gBAAY,+BAAW,gBAAgB,GAAG,IAC1C,gBAAgB,UAChB,4BAAQ,KAAK,gBAAgB,GAAG;AACtC,WAAO,UAAU,SAAS,OAAO,KAAK,UAAU,SAAS,QAAQ,QAC3D,4BAAQ,SAAS,IACjB;AAAA,EACV;AAEA,QAAM,WAAWA,KAAI,CAAC,aAAa,iBAAiB,GAAG,GAAG;AAC1D,SAAO,SAAS,MAAM,SAAS,MAAM,SAAS,MAAM;AACxD;AAEO,SAAS,wBAAiC;AAC7C,QAAM,MAAM,IAAI,QAAQ,UAAU,EAC7B,YAAY,6BAA6B;AAE9C,MAAI,QAAQ,MAAM,EACb,YAAY,4CAA4C,EACxD,OAAO,YAAY;AAChB,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,YAAY,gBAAgB,QAAQ;AAE1C,QAAI,UAAU,WAAW,GAAG;AACxB,cAAQ,IAAI,cAAM,IAAI,6BAA6B,CAAC;AACpD;AAAA,IACJ;AAEA,YAAQ,IAAI,EAAE,KAAK;AAAA,kBAAqB,UAAU,MAAM;AAAA,CAAK,CAAC;AAC9D,eAAW,MAAM,WAAW;AACxB,YAAM,SAAS,GAAG,OAAO,QAAQ,eAAe,EAAE;AAClD,YAAM,OAAO,OAAO,QAAQ,OAAO,EAAE;AACrC,YAAM,SAAS,iBAAiB,GAAG,QAAQ,QAAQ;AACnD,YAAM,SAAS,SAAS,cAAM,MAAM,QAAQ,IAAI,cAAM,OAAO,MAAM;AACnE,YAAM,WAAW,GAAG,WAAW,cAAM,IAAI,aAAa,IAAI;AAC1D,YAAM,eAAe,GAAG,UAAU,cAAM,KAAK,KAAK,GAAG,OAAO,GAAG,IAAI;AACnE,YAAM,cAAc,GAAG,eAAe,cAAM,IAAI,WAAW,IAAI;AAC/D,YAAM,UAAU,GAAG,cACb,cAAM,IAAI,GAAG,YAAY,eAAe,CAAC,IACzC,GAAG,aACC,cAAM,IAAI,IAAI,KAAK,GAAG,UAAU,EAAE,eAAe,CAAC,IAClD;AACV,YAAM,UAAU,GAAG,aAAa,cAAM,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI;AAEpE,cAAQ,IAAI,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,IAAI,cAAM,KAAK,MAAM,CAAC,GAAG,QAAQ,EAAE;AACvF,UAAI,QAAS,SAAQ,IAAI,sBAAsB,OAAO,GAAG,OAAO,EAAE;AAClE,cAAQ,IAAI,cAAM,IAAI,aAAa,GAAG,IAAI,EAAE,CAAC;AAC7C,cAAQ,IAAI,cAAM,IAAI,yBAAyB,IAAI,EAAE,CAAC;AACtD,UAAI,GAAG,cAAc;AACjB,gBAAQ,IAAI,cAAM,IAAI,qBAAqB,GAAG,YAAY,EAAE,CAAC;AAC7D,gBAAQ,IAAI,cAAM,IAAI,wDAAwD,CAAC;AAAA,MACnF;AACA,cAAQ,IAAI,EAAE;AAAA,IAClB;AAAA,EACJ,CAAC;AAEL,MAAI,QAAQ,WAAW,EAClB,YAAY,4EAA4E,EACxF,OAAO,UAAU,uCAAuC,KAAK,EAC7D,OAAO,CAAC,SAA4B;AACjC,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,SAAS,iBAAiB,QAAQ;AAExC,QAAI,KAAK,MAAM;AACX,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACJ;AAEA,sBAAkB,MAAM;AAAA,EAC5B,CAAC;AAEL,MAAI,QAAQ,WAAW,EAClB,YAAY,8EAA8E,EAC1F,OAAO,uBAAuB,0DAA0D,KAAK,EAC7F,OAAO,WAAW,0CAA0C,KAAK,EACjE,OAAO,aAAa,yCAAyC,KAAK,EAClE,OAAO,UAAU,2CAA2C,KAAK,EACjE,OAAO,OAAO,SAA0E;AACrF,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,WAAW,0BAA0B,KAAK,MAAM;AACtD,QAAI,SAAS,aAAa,UAAU,QAAQ;AAE5C,QAAI,KAAK,SAAS,OAAO,QAAQ,SAAS,GAAG;AACzC,YAAM,WAAW,MAAM,yBAAyB;AAAA,QAC5C,KAAK,KAAK;AAAA,QACV,SAAS,UAAU,OAAO,QAAQ,MAAM;AAAA,QACxC,SAAS;AAAA,MACb,CAAC;AAED,UAAI,UAAU;AACV,iBAAS,cAAc,MAAM;AAAA,MACjC;AAAA,IACJ;AAEA,QAAI,KAAK,MAAM;AACX,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACJ;AAEA,uBAAmB,MAAM;AAAA,EAC7B,CAAC;AAEL,MAAI,QAAQ,eAAe,EACtB,YAAY,8EAA8E,EAC1F,OAAO,uBAAuB,0DAA0D,KAAK,EAC7F,OAAO,UAAU,+CAA+C,KAAK,EACrE,OAAO,CAAC,SAA4C;AACjD,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,WAAW,0BAA0B,KAAK,MAAM;AACtD,UAAM,SAAS,aAAa,UAAU,QAAQ;AAE9C,QAAI,KAAK,MAAM;AACX,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACJ;AAEA,2BAAuB,MAAM;AAAA,EACjC,CAAC;AAEL,MAAI,QAAQ,QAAQ,EACf,YAAY,uEAAuE,EACnF,OAAO,MAAM;AACV,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,cAAc,gBAAgB,QAAQ;AAC5C,UAAM,aAAa,sBAAsB,QAAQ;AACjD,UAAM,WAAW,YAAY,OAAO,QAAM,GAAG,QAAQ;AACrD,UAAM,SAAS,YAAY,OAAO,QAAM,QAAQ,GAAG,YAAY,CAAC;AAEhE,YAAQ,IAAI,EAAE,KAAK,0BAA0B,CAAC;AAC9C,YAAQ,IAAI,cAAM,IAAI,WAAW,QAAQ,EAAE,CAAC;AAC5C,YAAQ,IAAI,cAAM,IAAI,0BAA0B,YAAY,MAAM,EAAE,CAAC;AACrE,YAAQ,IAAI,cAAM,IAAI,0BAA0B,SAAS,MAAM,EAAE,CAAC;AAClE,YAAQ,IAAI,cAAM,IAAI,0BAA0B,OAAO,MAAM,EAAE,CAAC;AAChE,YAAQ,IAAI,cAAM,IAAI,0BAA0B,WAAW,MAAM,EAAE,CAAC;AAEpE,QAAI,OAAO,SAAS,GAAG;AACnB,cAAQ,IAAI,cAAM,IAAI,qCAAqC,CAAC;AAC5D,iBAAW,MAAM,QAAQ;AACrB,gBAAQ,IAAI,cAAM,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;AACzC,YAAI,GAAG,aAAc,SAAQ,IAAI,cAAM,IAAI,iBAAiB,GAAG,YAAY,EAAE,CAAC;AAAA,MAClF;AAAA,IACJ;AAEA,QAAI,WAAW,SAAS,GAAG;AACvB,cAAQ,IAAI,cAAM,OAAO,2CAA2C,CAAC;AACrE,iBAAW,UAAU,YAAY;AAC7B,gBAAQ,IAAI,cAAM,OAAO,SAAS,MAAM,EAAE,CAAC;AAAA,MAC/C;AAAA,IACJ;AAEA,QAAI,OAAO,WAAW,KAAK,WAAW,WAAW,KAAK,SAAS,WAAW,GAAG;AACzE,cAAQ,IAAI,EAAE,QAAQ,gDAA2C,CAAC;AAClE;AAAA,IACJ;AAEA,YAAQ,IAAI,cAAM,KAAK,kBAAkB,CAAC;AAC1C,YAAQ,IAAI,cAAM,IAAI,2CAA2C,CAAC;AAClE,YAAQ,IAAI,cAAM,IAAI,uCAAuC,CAAC;AAC9D,YAAQ,IAAI,cAAM,IAAI,cAAc,QAAQ,8BAA8B,CAAC;AAC3E,YAAQ,IAAI,EAAE;AAAA,EAClB,CAAC;AAEL,MAAI,QAAQ,OAAO,EACd,YAAY,+EAA+E,EAC3F,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,aAAa,mDAAmD,KAAK,EAC5E,OAAO,aAAa,iFAAiF,KAAK,EAC1G,OAAO,OAAO,SAA8D;AACzE,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,YAAY,gBAAgB,QAAQ;AAC1C,UAAM,SAAS,UAAU;AAAA,MAAO,QAC5B,iBAAiB,GAAG,QAAQ,QAAQ,KACpC,YAAY,GAAG,QAAQ,QAAQ,EAAE,UAAU;AAAA,IAC/C;AACA,UAAM,aAAa,KAAK,UAAU,sBAAsB,QAAQ,IAAI,CAAC;AAErE,QAAI,OAAO,WAAW,KAAK,WAAW,WAAW,KAAK,CAAC,KAAK,SAAS;AACjE,cAAQ,IAAI,cAAM,IAAI,uCAAuC,CAAC;AAC9D;AAAA,IACJ;AAEA,QAAI,OAAO,WAAW,KAAK,WAAW,WAAW,KAAK,KAAK,SAAS;AAChE,cAAQ,IAAI,cAAM,IAAI,yDAAyD,CAAC;AAChF,cAAQ,IAAI,cAAM,IAAI,wDAAwD,CAAC;AAC/E,UAAI,KAAK,OAAQ;AAAA,IACrB;AAEA,YAAQ,IAAI,EAAE,KAAK,yBAAyB,CAAC;AAE7C,QAAI,OAAO,SAAS,GAAG;AACnB,cAAQ,IAAI,cAAM,KAAK,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChE,iBAAW,MAAM,QAAQ;AACrB,gBAAQ,IAAI,cAAM,IAAI,SAAS,GAAG,IAAI,KAAK,GAAG,OAAO,QAAQ,eAAe,EAAE,CAAC,GAAG,CAAC;AAAA,MACvF;AAAA,IACJ;AAEA,QAAI,KAAK,SAAS;AACd,cAAQ,IAAI,cAAM,KAAK;AAAA,IAAO,WAAW,MAAM,oCAAoC,CAAC;AACpF,iBAAW,UAAU,YAAY;AAC7B,gBAAQ,IAAI,cAAM,IAAI,SAAS,MAAM,EAAE,CAAC;AAAA,MAC5C;AACA,cAAQ,IAAI,cAAM,IAAI,uCAAuC,CAAC;AAAA,IAClE;AAEA,QAAI,KAAK,QAAQ;AACb,cAAQ,IAAI,cAAM,OAAO,gDAAsC,CAAC;AAChE;AAAA,IACJ;AAEA,UAAM,eAAe,OAAO,SAAS,WAAW;AAChD,UAAM,WAAW,MAAM,yBAAyB;AAAA,MAC5C,KAAK,KAAK;AAAA,MACV,SAAS,qBAAqB,YAAY;AAAA,MAC1C,SAAS;AAAA,IACb,CAAC;AAED,QAAI,CAAC,UAAU;AACX,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,QAAI,eAAe;AAEnB,eAAW,MAAM,QAAQ;AACrB,YAAM,SAAS,oBAAoB,UAAU,GAAG,IAAI;AACpD,UAAI,OAAO,IAAI;AACX,wBAAgB;AAChB,gBAAQ,IAAI,EAAE,QAAQ,YAAO,OAAO,OAAO,EAAE,CAAC;AAAA,MAClD,OAAO;AACH,gBAAQ,IAAI,cAAM,OAAO,YAAO,OAAO,OAAO,EAAE,CAAC;AAAA,MACrD;AAAA,IACJ;AAEA,QAAI,KAAK,SAAS;AACd,iBAAW,UAAU,YAAY;AAC7B,YAAI;AACA,sCAAO,QAAQ,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAC/C,0BAAgB;AAChB,uCAA6B,MAAM;AACnC,kBAAQ,IAAI,EAAE,QAAQ,qCAAgC,MAAM,EAAE,CAAC;AAAA,QACnE,SAASE,SAAO;AACZ,gBAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,kBAAQ,IAAI,cAAM,OAAO,6BAAwB,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,QAC1E;AAAA,MACJ;AAEA,YAAM,cAAc,oBAAoB,QAAQ;AAChD,UAAI,YAAY,IAAI;AAChB,gBAAQ,IAAI,EAAE,QAAQ,YAAO,YAAY,OAAO,EAAE,CAAC;AAAA,MACvD,OAAO;AACH,gBAAQ,IAAI,cAAM,OAAO,YAAO,YAAY,OAAO,EAAE,CAAC;AAAA,MAC1D;AAAA,IACJ;AAEA,QAAI,iBAAiB,GAAG;AACpB,cAAQ,IAAI,cAAM,OAAO,kCAA6B,CAAC;AACvD;AAAA,IACJ;AAEA,YAAQ,IAAI,EAAE,UAAU;AAAA,6BAA2B,YAAY;AAAA,CAAqB,CAAC;AAAA,EACzF,CAAC;AAEL,MAAI,QAAQ,eAAe,EACtB,YAAY,+DAA+D,EAC3E,OAAO,aAAa,qBAAqB,KAAK,EAC9C,OAAO,OAAO,MAAc,SAA2B;AACpD,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,YAAY,gBAAgB,QAAQ;AAC1C,UAAM,SAAS,UAAU;AAAA,MAAK,QAC1B,GAAG,SAAS,QACZ,GAAG,WAAW,cAAc,IAAI,MAChC,GAAG,WAAW,iBAAiB,IAAI;AAAA,IACvC;AAEA,QAAI,CAAC,QAAQ;AACT,cAAQ,MAAM,cAAM,IAAI;AAAA,0CAAwC,IAAI;AAAA,CAAK,CAAC;AAC1E,cAAQ,IAAI,cAAM,IAAI,2BAA2B,CAAC;AAClD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,WAAW,MAAM,yBAAyB;AAAA,MAC5C,KAAK,KAAK;AAAA,MACV,SAAS,UAAU,OAAO,IAAI;AAAA,MAC9B,SAAS;AAAA,IACb,CAAC;AAED,QAAI,CAAC,UAAU;AACX,cAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,IACJ;AAEA,UAAM,SAAS,oBAAoB,UAAU,OAAO,IAAI;AACxD,QAAI,CAAC,OAAO,IAAI;AACZ,cAAQ,MAAM,cAAM,IAAI;AAAA,mBAAiB,OAAO,OAAO;AAAA,CAAI,CAAC;AAC5D,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,YAAQ,IAAI,EAAE,QAAQ;AAAA,WAAS,OAAO,OAAO;AAAA,CAAI,CAAC;AAAA,EACtD,CAAC;AAEL,SAAO;AACX;AAGA,SAASC,sBAAqB,UAAwB;AAClD,MAAI;AACA,UAAM,gBAAY,yBAAK,UAAU,SAAS,kBAAkB;AAC5D,YAAI,4BAAW,SAAS,EAAG,iCAAW,SAAS;AAAA,EACnD,QAAQ;AAAA,EAER;AACJ;;;AC7qCA;AACA,IAAAC,kBAAoB;AACpB,IAAAC,8BAA0B;AAKnB,SAAS,sBAA+B;AAC3C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,0EAA0E,EACtF,SAAS,UAAU,sEAAsE,EACzF,OAAO,OAAO,SAA6B;AACxC,UAAM,WAAW,YAAY,QAAQ,IAAI,CAAC;AAC1C,UAAM,YAAY,gBAAgB,QAAQ;AAE1C,QAAI,UAAU,WAAW,GAAG;AACxB,cAAQ,IAAI,cAAM,IAAI,8DAAyD,CAAC;AAChF;AAAA,IACJ;AAEA,QAAI,SAAS,UAAU,CAAC;AAExB,QAAI,MAAM;AACN,YAAM,OAAO,KAAK,WAAW,KAAK,IAAI,cAAc,IAAI,KAAK,iBAAiB,IAAI;AAClF,YAAM,QAAQ,UAAU;AAAA,QAAK,QACzB,GAAG,KAAK,SAAS,IAAI,KACrB,GAAG,WAAW,QACd,GAAG,WAAW,cAAc,IAAI;AAAA,MACpC;AACA,UAAI,CAAC,OAAO;AACR,gBAAQ,MAAM,cAAM,IAAI;AAAA,0CAAwC,IAAI;AAAA,CAAK,CAAC;AAC1E,gBAAQ,IAAI,cAAM,IAAI,2BAA2B,CAAC;AAClD,gBAAQ,KAAK,CAAC;AAAA,MAClB;AACA,eAAS;AAAA,IACb,WAAW,UAAU,SAAS,GAAG;AAE7B,YAAM,UAAU,UAAU,IAAI,QAAM;AAChC,cAAMC,UAAS,GAAG,OAAO,QAAQ,eAAe,EAAE;AAClD,cAAM,OAAOA,QAAO,QAAQ,OAAO,EAAE;AACrC,cAAMC,WAAU,GAAG,UAAU,KAAK,GAAG,OAAO,MAAM;AAClD,cAAMC,QAAO,GAAG,cACV,GAAG,YAAY,eAAe,IAC9B,GAAG,aACC,IAAI,KAAK,GAAG,UAAU,EAAE,eAAe,IACvC;AACV,cAAM,MAAM,GAAG,aAAa,MAAM,GAAG,WAAW,MAAM,GAAG,EAAE,CAAC,MAAM;AAClE,eAAO;AAAA,UACH,OAAO,GAAGF,OAAM,GAAGC,QAAO,aAAQC,KAAI,GAAG,GAAG;AAAA,UAC5C,OAAO;AAAA,QACX;AAAA,MACJ,CAAC;AAED,YAAM,EAAE,OAAO,IAAI,UAAM,gBAAAC,SAAQ;AAAA,QAC7B,MAAM;AAAA,QACN,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,MACJ,CAAC;AAED,UAAI,CAAC,QAAQ;AACT,gBAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,MACJ;AAEA,eAAS,UAAU,KAAK,QAAM,GAAG,OAAO,SAAS,IAAI,MAAM,EAAE,CAAC,KAAK;AAAA,IACvE;AAEA,UAAM,SAAS,OAAO,OAAO,QAAQ,eAAe,EAAE;AACtD,UAAM,UAAU,OAAO,WAAW,MAAM,YAAY;AAEpD,UAAM,aAAa,YAAY,WACzB,CAAC,cAAc,gCAAgC,IAC/C,CAAC,IAAI;AAEX,YAAQ,IAAI,EAAE,KAAK;AAAA,iBAAoB,MAAM,EAAE,CAAC;AAChD,YAAQ,IAAI,cAAM,IAAI,cAAc,OAAO,sBAAsB,CAAC;AAClE,YAAQ,IAAI,cAAM,IAAI,cAAc,OAAO,IAAI;AAAA,CAAI,CAAC;AAEpD,QAAI,YAAY,MAAM;AAClB,UAAI;AACA,cAAM,qBAAqB,OAAO,MAAM,KAAK;AAAA,MACjD,SAASC,SAAO;AACZ,cAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,gBAAQ,IAAI,cAAM,IAAI,0CAA0C,OAAO,GAAG,CAAC;AAAA,MAC/E;AAAA,IACJ;AAEA,UAAM,aAAS,uCAAU,SAAS,YAAY;AAAA,MAC1C,KAAK,OAAO;AAAA,MACZ,OAAO;AAAA,IACX,CAAC;AAED,YAAQ,KAAK,OAAO,UAAU,CAAC;AAAA,EACnC,CAAC;AACT;AAEA,eAAe,cAAwC;AACnD,QAAM,EAAE,QAAQ,IAAI,UAAM,gBAAAD,SAAQ;AAAA,IAC9B,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS;AAAA,MACL,EAAE,OAAO,UAAU,OAAO,SAAS;AAAA,MACnC,EAAE,OAAO,MAAM,OAAO,KAAK;AAAA,IAC/B;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AACD,SAAO,WAAW;AACtB;;;AC7GA;AACA,IAAAE,oBAAe;AACf,IAAAC,gBAAiB;;;ACHjB,IAAAC,oBAAe;AACf,IAAAC,gBAAiB;AA0BV,SAAS,iBAAiB,SAAqC;AAClE,QAAM,QAAQ,QAAQ,MAAM,6BAA6B;AACzD,MAAI,CAAC,MAAO,QAAO;AAEnB,QAAM,KAAkB,CAAC;AACzB,aAAW,QAAQ,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG;AACrC,UAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,QAAI,UAAU,GAAI;AAClB,UAAM,MAAM,KAAK,MAAM,GAAG,KAAK,EAAE,KAAK;AACtC,UAAM,QAAQ,KAAK,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,gBAAgB,EAAE;AACrE,QAAI,IAAK,IAAG,GAAG,IAAI;AAAA,EACvB;AAIA,QAAM,mBAAmB,QAAQ,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAU,EAAE;AAC5E,QAAM,WAAW,iBAAiB,QAAQ,oBAAoB,EAAE,EAAE,UAAU;AAC5E,QAAM,YAAY,SAAS,MAAM,YAAY,EAAE,CAAC,EAAE,QAAQ,UAAU,GAAG,EAAE,KAAK;AAC9E,MAAI,aAAa,CAAC,UAAU,WAAW,GAAG,GAAG;AACzC,OAAG,UAAU,UAAU,MAAM,GAAG,GAAG;AAAA,EACvC;AAEA,SAAO;AACX;AAIA,IAAM,cAAc,oBAAI,IAAI,CAAC,gBAAgB,QAAQ,QAAQ,OAAO,CAAC;AAErE,SAAS,uBAAuB,SAA2B;AACvD,SAAO,QACF,MAAM,IAAI,EACV,IAAI,OAAK,EAAE,KAAK,CAAC,EACjB,OAAO,OAAK,KAAK,CAAC,EAAE,WAAW,GAAG,CAAC;AAC5C;AAEA,SAAS,iBAAiB,cAAsB,UAA6B;AACzE,QAAM,aAAa,aAAa,QAAQ,OAAO,GAAG;AAClD,QAAMC,YAAW,WAAW,MAAM,GAAG,EAAE,IAAI,KAAK;AAEhD,aAAW,OAAO,UAAU;AACxB,UAAM,IAAI,IAAI,SAAS,GAAG,IAAI,IAAI,MAAM,GAAG,EAAE,IAAI;AAEjD,QAAI,EAAE,SAAS,GAAG,GAAG;AAEjB,YAAMC,SAAQ,IAAI,OAAO,MAAM,EAAE,QAAQ,OAAO,KAAK,EAAE,QAAQ,OAAO,OAAO,IAAI,GAAG;AACpF,UAAIA,OAAM,KAAK,UAAU,KAAKA,OAAM,KAAKD,SAAQ,EAAG,QAAO;AAAA,IAC/D,OAAO;AAEH,UAAI,eAAe,KAAK,WAAW,WAAW,IAAI,GAAG,KAAKA,cAAa,EAAG,QAAO;AAAA,IACrF;AAAA,EACJ;AACA,SAAO;AACX;AAIA,eAAsB,aAAa,UAAkB,UAAuB,CAAC,GAAwB;AACjG,QAAM,EAAE,KAAK,SAAS,QAAQ,YAAY,KAAK,IAAI;AAEnD,MAAI,oBAA8B,CAAC;AACnC,MAAI;AACA,UAAM,MAAM,MAAM,kBAAAE,QAAG,SAAS,cAAAC,QAAK,KAAK,UAAU,YAAY,GAAG,MAAM;AACvE,wBAAoB,uBAAuB,GAAG;AAAA,EAClD,QAAQ;AAAA,EAAwC;AAEhD,QAAM,UAAsB,CAAC;AAC7B,QAAM,WAAW,MAAM,cAAAA,QAAK,KAAK,UAAU,GAAG,IAAI;AAElD,iBAAeC,MAAK,SAAgC;AAChD,QAAI;AACJ,QAAI;AACA,gBAAU,MAAO,kBAAAF,QAAG,QAAgB,SAAS,EAAE,eAAe,KAAK,CAAC;AAAA,IACxE,QAAQ;AAAE;AAAA,IAAQ;AAElB,eAAW,SAAS,SAAS;AACzB,YAAM,WAAW,cAAAC,QAAK,KAAK,SAAS,MAAM,IAAI;AAC9C,YAAM,UAAU,cAAAA,QAAK,SAAS,UAAU,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAEpE,UAAI,MAAM,YAAY,GAAG;AACrB,YAAI,YAAY,IAAI,MAAM,IAAI,EAAG;AACjC,YAAI,iBAAiB,SAAS,iBAAiB,EAAG;AAClD,YAAI,UAAW,OAAMC,MAAK,QAAQ;AAClC;AAAA,MACJ;AAEA,UAAI,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,KAAK,EAAG;AACpD,UAAI,iBAAiB,SAAS,iBAAiB,EAAG;AAGlD,UAAI,OAAO,CAAC,QAAQ,WAAW,IAAI,QAAQ,OAAO,GAAG,CAAC,EAAG;AAGzD,UAAI,WAAW,CAAC,MAAM,KAAK,SAAS,OAAO,EAAG;AAE9C,UAAI;AACJ,UAAI;AACA,cAAM,OAAO,MAAM,kBAAAF,QAAG,KAAK,QAAQ;AACnC,cAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,UAAU,MAAM;AAClD,cAAM,cAAc,iBAAiB,OAAO;AAG5C,YAAI,WAAW,CAAC,eAAe,YAAY,OAAO,KAAK,MAAM,OAAO,OAAQ;AAE5E,mBAAW;AAAA,UACP,UAAU;AAAA,UACV,cAAc;AAAA,UACd;AAAA,UACA,WAAW,KAAK;AAAA,UAChB,cAAc,KAAK;AAAA,QACvB;AAAA,MACJ,SAAS,KAAU;AACf,YAAI,OAAQ;AACZ,mBAAW;AAAA,UACP,UAAU;AAAA,UACV,cAAc;AAAA,UACd,aAAa;AAAA,UACb,WAAW;AAAA,UACX,cAAc,oBAAI,KAAK,CAAC;AAAA,UACxB,YAAY,IAAI;AAAA,QACpB;AAAA,MACJ;AAEA,cAAQ,KAAK,QAAQ;AAAA,IACzB;AAAA,EACJ;AAEA,QAAME,MAAK,QAAQ;AACnB,SAAO;AACX;;;AC5JA,IAAAC,oBAAe;AACf,IAAAC,gBAAiB;AAGjB,IAAM,aAAa,cAAAC,QAAK,KAAK,SAAS,SAAS,gBAAgB;AAC/D,IAAM,iBAAiB;AAQvB,eAAsB,UAAU,UAA4C;AACxE,MAAI;AACA,UAAM,MAAM,MAAM,kBAAAC,QAAG,SAAS,cAAAD,QAAK,KAAK,UAAU,UAAU,GAAG,MAAM;AACrE,UAAM,SAAS,KAAK,MAAM,GAAG;AAE7B,WAAO,UAAU,OAAO,QAAQ,IAAI,QAAM;AAAA,MACtC,GAAG;AAAA,MACH,cAAc,IAAI,KAAK,EAAE,YAAY;AAAA,IACzC,EAAE;AACF,WAAO;AAAA,EACX,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,eAAsB,WAAW,UAAkB,SAAoC;AACnF,QAAM,YAAY,cAAAA,QAAK,KAAK,UAAU,UAAU;AAChD,QAAM,kBAAAC,QAAG,UAAU,cAAAD,QAAK,QAAQ,SAAS,CAAC;AAC1C,QAAM,QAAkB;AAAA,IACpB,WAAW,KAAK,IAAI;AAAA,IACpB;AAAA,IACA;AAAA,EACJ;AACA,QAAM,kBAAAC,QAAG,UAAU,WAAW,KAAK,UAAU,OAAO,MAAM,CAAC,GAAG,MAAM;AACxE;AAEO,SAAS,aAAa,OAAiB,SAAqB,QAAgB,gBAAyB;AACxG,MAAI,KAAK,IAAI,IAAI,MAAM,YAAY,MAAO,QAAO;AACjD,aAAW,SAAS,SAAS;AACzB,QAAI,MAAM,aAAa,QAAQ,IAAI,MAAM,UAAW,QAAO;AAAA,EAC/D;AACA,SAAO;AACX;;;AC7CA;AACA,IAAAC,8BAA0B;AAGnB,SAAS,gBAAyB;AACrC,aAAO,uCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,OAAO,QAAQ,UAAU,OAAO,CAAC,EAAE,WAAW;AAC1F;AAEO,SAAS,eAAe,UAAkB,MAAsB;AACnE,MAAI,CAAC,cAAc,GAAG;AAClB,YAAQ,IAAI,cAAM,OAAO,sFAA4E,CAAC;AACtG,WAAO,CAAC;AAAA,EACZ;AAEA,QAAM,QAAI,uCAAU,MAAM;AAAA,IACtB;AAAA,IAAM;AAAA,IACN;AAAA,IAAW;AAAA,IACX;AAAA,IAAW;AAAA,IACX;AAAA,IAAU;AAAA,EACd,GAAG,EAAE,OAAO,QAAQ,UAAU,QAAQ,KAAK,SAAS,CAAC;AAErD,MAAI,EAAE,WAAW,GAAG;AAChB,YAAQ,IAAI,cAAM,OAAO,kDAAwC,CAAC;AAClE,WAAO,CAAC;AAAA,EACZ;AACA,MAAI,EAAE,WAAW,GAAG;AAChB,YAAQ,IAAI,cAAM,OAAO,oCAA+B,EAAE,MAAM,2BAAsB,CAAC;AACvF,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI;AACJ,MAAI;AACA,UAAM,KAAK,MAAM,EAAE,MAAM;AAAA,EAC7B,QAAQ;AACJ,YAAQ,IAAI,cAAM,OAAO,oEAA0D,CAAC;AACpF,WAAO,CAAC;AAAA,EACZ;AAEA,QAAM,SAAS,KAAK,IAAI,IAAI,OAAO;AACnC,SAAO,IAAI,OAAO,QAAM,GAAG,YAAY,IAAI,KAAK,GAAG,QAAQ,EAAE,QAAQ,KAAK,MAAM;AACpF;;;ACxCA,IAAAC,8BAA0B;AAC1B;AAKA,IAAI,eAA+B;AAM5B,SAAS,gBAAyB;AACrC,MAAI,iBAAiB,KAAM,QAAO;AAClC,QAAM,QAAI,uCAAU,MAAM,CAAC,WAAW,GAAG,EAAE,OAAO,QAAQ,UAAU,OAAO,CAAC;AAC5E,iBAAe,EAAE,WAAW;AAC5B,SAAO;AACX;AAIA,SAAS,aAAa,SAAuB;AACzC,UAAQ,MAAM,cAAM,OAAO,QAAQ,OAAO,EAAE,CAAC;AACjD;AAmBO,SAAS,oBAAoB,MAAyB;AACzD,MAAI,CAAC,cAAc,GAAG;AAClB,iBAAa,iEAAiE;AAC9E,WAAO,CAAC;AAAA,EACZ;AAGA,QAAM,QAAI,uCAAU,MAAM;AAAA,IACtB;AAAA,IACA,6BAA6B,IAAI;AAAA,IACjC;AAAA,EACJ,GAAG;AAAA,IACC,UAAU;AAAA,IACV,OAAO;AAAA,EACX,CAAC;AAED,MAAI,EAAE,WAAW,GAAG;AAChB,UAAM,OAAO,EAAE,QAAQ,KAAK,KAAK,aAAa,EAAE,MAAM;AACtD,iBAAa,yCAAyC,IAAI,GAAG;AAC7D,WAAO,CAAC;AAAA,EACZ;AAEA,MAAI;AACA,UAAM,OAAO,KAAK,MAAM,EAAE,UAAU,IAAI;AAGxC,WAAO,KAAK,IAAI,CAAAC,YAAU;AAAA,MACtB,IAAIA,OAAM;AAAA,MACV,OAAOA,OAAM;AAAA,MACb,QAAQA,OAAM;AAAA,MACd,MAAMA,OAAM;AAAA,MACZ,UAAUA,OAAM;AAAA,IACpB,EAAE;AAAA,EACN,SAAS,GAAG;AACR,iBAAa,2CAA2C,aAAa,QAAQ,EAAE,UAAU,eAAe,GAAG;AAC3G,WAAO,CAAC;AAAA,EACZ;AACJ;;;ACnEO,SAAS,gBACZ,MACA,KACA,OACmB;AACnB,QAAM,WAAgC,CAAC;AAEvC,aAAW,OAAO,MAAM;AAEpB,QAAI,IAAI,WAAY;AAEpB,UAAM,UAAU,IAAI;AAGpB,UAAM,cAAc,IAAI,OAAO,QAAM;AACjC,UAAI,CAAC,GAAG,SAAU,QAAO;AACzB,aAAO,IAAI,KAAK,GAAG,QAAQ,IAAI;AAAA,IACnC,CAAC;AAED,QAAI,YAAY,SAAS,GAAG;AACxB,eAAS,KAAK;AAAA,QACV,UAAU;AAAA,QACV,MAAM;AAAA,QACN,SAAS,IAAI;AAAA,QACb,SAAS,yBAAyB,YAAY,MAAM,MAAM,YAAY,SAAS,IAAI,MAAM,EAAE;AAAA,QAC3F,QAAQ,YAAY,MAAM,GAAG,CAAC,EAAE,IAAI,QAAM,IAAI,GAAG,MAAM,KAAK,GAAG,KAAK,EAAE,EAAE,KAAK,IAAI;AAAA,MACrF,CAAC;AAAA,IACL;AAGA,UAAM,eAAe,IAAI,aAAa;AACtC,QAAI,cAAc;AACd,YAAM,YAAY,IAAI,KAAK,YAAY;AACvC,UAAI,CAAC,MAAM,UAAU,QAAQ,CAAC,GAAG;AAC7B,cAAM,WAAW,KAAK,IAAI,QAAQ,QAAQ,IAAI,UAAU,QAAQ,CAAC,IAAI;AACrE,YAAI,WAAW,GAAG;AACd,mBAAS,KAAK;AAAA,YACV,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,IAAI;AAAA,YACb,SAAS,qDAAqD,KAAK,MAAM,QAAQ,CAAC;AAAA,UACtF,CAAC;AAAA,QACL;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAKA,IAAM,oBAAoB;AAQnB,SAAS,mBACZ,MACA,UACA,aACmB;AACnB,QAAM,WAAgC,CAAC;AAGvC,QAAM,iBAAiB,SAAS;AAAA,IAC5B,CAAAC,WAASA,OAAM,WAAW,aAAaA,OAAM,SAAS,aAAaA,OAAM,SAAS;AAAA,EACtF;AAEA,MAAI,eAAe,WAAW,EAAG,QAAO;AAGxC,QAAM,eAAe,oBAAI,IAAY;AACrC,aAAW,OAAO,MAAM;AAEpB,UAAM,QAAQ,KAAK,UAAU,IAAI,eAAe,CAAC,CAAC;AAClD,eAAW,SAAS,MAAM,SAAS,iBAAiB,GAAG;AACnD,mBAAa,IAAI,MAAM,CAAC,EAAE,YAAY,CAAC;AAAA,IAC3C;AAGA,UAAM,UAAU,YAAY,IAAI,IAAI,YAAY,KAAK;AACrD,eAAW,SAAS,QAAQ,SAAS,iBAAiB,GAAG;AACrD,mBAAa,IAAI,MAAM,CAAC,EAAE,YAAY,CAAC;AAAA,IAC3C;AAAA,EACJ;AAGA,aAAWA,UAAS,gBAAgB;AAChC,UAAM,eAAeA,OAAM,GAAG,YAAY;AAC1C,QAAI,CAAC,aAAa,IAAI,YAAY,GAAG;AACjC,eAAS,KAAK;AAAA,QACV,UAAU;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,iBAAiBA,OAAM,EAAE;AAAA,QAClC,QAAQA,OAAM;AAAA,MAClB,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,SAAO;AACX;AAUO,SAAS,wBACZ,MACA,UACA,aACmB;AACnB,QAAM,WAAgC,CAAC;AAGvC,QAAM,cAAc,oBAAI,IAAoB;AAC5C,aAAWA,UAAS,UAAU;AAC1B,gBAAY,IAAIA,OAAM,GAAG,YAAY,GAAGA,OAAM,MAAM;AAAA,EACxD;AAEA,aAAW,OAAO,MAAM;AACpB,UAAM,UAAU,YAAY,IAAI,IAAI,YAAY,KAAK;AACrD,UAAM,UAAU,oBAAI,IAAY;AAEhC,eAAW,SAAS,QAAQ,SAAS,iBAAiB,GAAG;AACrD,YAAM,KAAK,MAAM,CAAC,EAAE,YAAY;AAChC,UAAI,QAAQ,IAAI,EAAE,EAAG;AACrB,cAAQ,IAAI,EAAE;AAEd,YAAM,SAAS,YAAY,IAAI,EAAE;AACjC,UAAI,UAAU,WAAW,UAAU;AAC/B,iBAAS,KAAK;AAAA,UACV,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS,IAAI;AAAA,UACb,SAAS,yBAAyB,EAAE;AAAA,QACxC,CAAC;AAAA,MACL;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;AAIA,IAAM,iBAAyC;AAAA,EAC3C,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AACV;AAOO,SAAS,YACZ,UACA,aACgB;AAChB,QAAM,SAAS,CAAC,GAAG,QAAQ,EAAE;AAAA,IACzB,CAAC,GAAG,OAAO,eAAe,EAAE,QAAQ,KAAK,MAAM,eAAe,EAAE,QAAQ,KAAK;AAAA,EACjF;AAEA,SAAO;AAAA,IACH;AAAA,IACA,eAAe,OAAO;AAAA,IACtB,UAAU;AAAA,IACV,cAAa,oBAAI,KAAK,GAAE,YAAY;AAAA,EACxC;AACJ;;;ALnLA,IAAM,kBAAkB,oBAAI,IAAI,CAAC,SAAS,QAAQ,UAAU,cAAc,SAAS,CAAC;AAGpF,eAAe,gBAAgB,UAAkB,eAA6C;AAC1F,QAAM,aAAuB,CAAC;AAG9B,QAAM,UAAU,cAAAC,QAAK,KAAK,UAAU,MAAM;AAC1C,MAAI,MAAM,kBAAAC,QAAG,WAAW,OAAO,GAAG;AAC9B,UAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,OAAO;AACxC,eAAW,SAAS,SAAS;AACzB,UAAI,MAAM,SAAS,KAAK,EAAG,YAAW,KAAK,cAAAD,QAAK,KAAK,SAAS,KAAK,CAAC;AAAA,IACxE;AAAA,EACJ;AAEA,QAAM,UAAsB,CAAC;AAC7B,aAAW,YAAY,YAAY;AAC/B,UAAM,MAAM,cAAAA,QAAK,SAAS,UAAU,QAAQ;AAG5C,QAAI,iBAAiB,CAAC,IAAI,SAAS,aAAa,KAAK,CAAC,cAAAA,QAAK,SAAS,QAAQ,EAAE,SAAS,aAAa,GAAG;AACnG;AAAA,IACJ;AAEA,QAAI;AACJ,QAAI;AACA,YAAM,OAAO,MAAM,kBAAAC,QAAG,KAAK,QAAQ;AACnC,YAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,UAAU,MAAM;AAClD,YAAM,cAAc,iBAAiB,OAAO;AAC5C,cAAQ;AAAA,QACJ;AAAA,QACA,cAAc;AAAA,QACd;AAAA,QACA,WAAW,KAAK;AAAA,QAChB,cAAc,KAAK;AAAA,MACvB;AAAA,IACJ,SAAS,KAAU;AACf,cAAQ;AAAA,QACJ;AAAA,QACA,cAAc;AAAA,QACd,aAAa;AAAA,QACb,WAAW;AAAA,QACX,cAAc,oBAAI,KAAK,CAAC;AAAA,QACxB,YAAY,IAAI;AAAA,MACpB;AAAA,IACJ;AACA,YAAQ,KAAK,KAAK;AAAA,EACtB;AAEA,SAAO;AACX;AAEA,SAAS,WAAW,OAAuB;AACvC,MAAI,QAAQ,KAAM,QAAO,GAAG,KAAK;AACjC,SAAO,IAAI,QAAQ,MAAM,QAAQ,CAAC,CAAC;AACvC;AAEA,SAAS,WAAW,GAAiB;AACjC,SAAO,EAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AACtC;AAEA,SAAS,WAAW,OAAiB,KAAoB;AACrD,QAAM,SAAS,cAAM,KAAK,EAAE,MAAM,MAAM,YAAY;AACpD,QAAMC,QAAO,cAAM,KAAK,KAAK,WAAW,MAAM,SAAS,CAAC,cAAc,WAAW,MAAM,YAAY,CAAC,EAAE;AACtG,UAAQ,IAAI;AAAA,EAAK,MAAM,GAAGA,KAAI,EAAE;AAEhC,MAAI,MAAM,YAAY;AAClB,YAAQ,IAAI,cAAM,IAAI,gCAA2B,MAAM,UAAU,EAAE,CAAC;AACpE;AAAA,EACJ;AAEA,MAAI,CAAC,MAAM,eAAe,OAAO,KAAK,MAAM,WAAW,EAAE,WAAW,GAAG;AACnE,YAAQ,IAAI,cAAM,KAAK,oBAAoB,CAAC;AAC5C;AAAA,EACJ;AAEA,MAAI,KAAK;AACL,YAAQ,IAAI,cAAM,KAAK,OAAO,CAAC;AAC/B,eAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,WAAW,GAAG;AACpD,cAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAAA,IAC9B;AACA,YAAQ,IAAI,cAAM,KAAK,OAAO,CAAC;AAC/B;AAAA,EACJ;AAEA,aAAW,CAAC,GAAG,CAAC,KAAK,OAAO,QAAQ,MAAM,WAAW,GAAG;AACpD,UAAM,SAAS,gBAAgB,IAAI,CAAC,IAC9B,cAAM,KAAK,EAAE,OAAO,EAAE,CAAC,IACvB,cAAM,KAAK,EAAE,OAAO,EAAE,CAAC;AAC7B,UAAM,SAAS,KAAK;AACpB,YAAQ,IAAI,KAAK,MAAM,KAAK,MAAM,EAAE;AAAA,EACxC;AACJ;AAGA,SAAS,sBAAsB,UAA+B,aAAqB,OAAqB;AACpG,UAAQ,IAAI,EAAE,KAAK;AAAA;AAAA,CAAwB,CAAC;AAC5C,UAAQ,IAAI,cAAM,KAAK,KAAK,WAAW,kBAAkB,KAAK,WAAW,UAAU,IAAI,MAAM,EAAE;AAAA,CAAI,CAAC;AAEpG,MAAI,SAAS,WAAW,GAAG;AACvB,YAAQ,IAAI,KAAK,IAAI,EAAE;AAAA,CAAqB;AAC5C;AAAA,EACJ;AAGA,QAAM,aAAa;AAAA,IACf,UAAU,SAAS,OAAO,OAAK,EAAE,aAAa,UAAU;AAAA,IACxD,SAAS,SAAS,OAAO,OAAK,EAAE,aAAa,SAAS;AAAA,IACtD,MAAM,SAAS,OAAO,OAAK,EAAE,aAAa,MAAM;AAAA,EACpD;AAGA,aAAW,KAAK,WAAW,UAAU;AACjC,YAAQ,IAAI,KAAK,cAAM,IAAI,QAAG,CAAC,IAAI,cAAM,IAAI,EAAE,WAAW,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;AAC3F,QAAI,EAAE,OAAQ,SAAQ,IAAI,cAAM,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAAA,EAC7D;AAGA,aAAW,KAAK,WAAW,SAAS;AAChC,YAAQ,IAAI,KAAK,cAAM,OAAO,QAAG,CAAC,IAAI,cAAM,OAAO,EAAE,WAAW,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE;AACjG,QAAI,EAAE,OAAQ,SAAQ,IAAI,cAAM,KAAK,SAAS,EAAE,MAAM,EAAE,CAAC;AAAA,EAC7D;AAGA,aAAW,KAAK,WAAW,MAAM;AAC7B,YAAQ,IAAI,KAAK,cAAM,KAAK,QAAG,CAAC,IAAI,cAAM,KAAK,EAAE,OAAO,CAAC,KAAK,cAAM,KAAK,EAAE,OAAO,CAAC,EAAE;AAAA,EACzF;AAGA,QAAM,QAAkB,CAAC;AACzB,MAAI,WAAW,SAAS,SAAS,EAAG,OAAM,KAAK,cAAM,IAAI,GAAG,WAAW,SAAS,MAAM,WAAW,CAAC;AAClG,MAAI,WAAW,QAAQ,SAAS,EAAG,OAAM,KAAK,cAAM,OAAO,GAAG,WAAW,QAAQ,MAAM,WAAW,WAAW,QAAQ,SAAS,IAAI,MAAM,EAAE,EAAE,CAAC;AAC7I,MAAI,WAAW,KAAK,SAAS,EAAG,OAAM,KAAK,cAAM,KAAK,GAAG,WAAW,KAAK,MAAM,OAAO,CAAC;AAEvF,UAAQ,IAAI,cAAM,KAAK;AAAA,IAAO,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI,CAAC;AACvD;AAEO,SAAS,oBAA6B;AACzC,QAAM,OAAO,IAAI,QAAQ,MAAM,EAC1B,YAAY,mDAAmD;AAEpE,OACK,QAAQ,eAAe,EACvB,YAAY,6DAA6D,EACzE,OAAO,SAAS,+BAA+B,KAAK,EACpD,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,QAA4B,SAA0C;AACjF,UAAM,WAAW,MAAM,gBAAgB;AACvC,UAAM,UAAU,MAAM,gBAAgB,UAAU,MAAM;AAEtD,QAAI,QAAQ,WAAW,GAAG;AACtB,cAAQ,IAAI,cAAM,OAAO,qCAAqC,CAAC;AAC/D;AAAA,IACJ;AAEA,QAAI,KAAK,MAAM;AACX,YAAM,SAAS,QAAQ,IAAI,QAAM;AAAA,QAC7B,MAAM,EAAE;AAAA,QACR,WAAW,EAAE;AAAA,QACb,cAAc,EAAE,aAAa,YAAY;AAAA,QACzC,aAAa,EAAE;AAAA,QACf,YAAY,EAAE,cAAc;AAAA,MAChC,EAAE;AACF,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACJ;AAEA,eAAW,SAAS,SAAS;AACzB,iBAAW,OAAO,KAAK,GAAG;AAAA,IAC9B;AAEA,UAAM,UAAU,QAAQ,OAAO,OAAK,CAAC,EAAE,eAAe,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE;AAC/F,YAAQ;AAAA,MACJ;AAAA,IAAO,IAAI,EAAE,IAAI,QAAQ,MAAM,QAAQ,QAAQ,WAAW,IAAI,MAAM,EAAE,MACrE,UAAU,IAAI,cAAM,KAAK,MAAM,OAAO,uBAAuB,IAAI,MAClE;AAAA,IACJ;AAAA,EACJ,CAAC;AAEL,OACK,QAAQ,MAAM,EACd,YAAY,8EAA8E,EAC1F,OAAO,gBAAgB,sCAAsC,EAC7D,OAAO,oBAAoB,8BAA8B,EACzD,OAAO,0BAA0B,yDAAyD,EAC1F,OAAO,UAAU,qBAAqB,KAAK,EAC3C,OAAO,cAAc,mCAAmC,EACxD,OAAO,OAAO,SAA6F;AACxG,UAAM,WAAW,MAAM,gBAAgB;AAGvC,QAAI;AACJ,QAAI,KAAK,QAAQ;AACb,YAAMC,OAAM,KAAK,OAAO,QAAQ,GAAG;AACnC,UAAIA,SAAQ,IAAI;AACZ,mBAAW,EAAE,OAAO,KAAK,OAAO,MAAM,GAAGA,IAAG,GAAG,OAAO,KAAK,OAAO,MAAMA,OAAM,CAAC,EAAE;AAAA,MACrF;AAAA,IACJ;AAEA,UAAM,WAAW,EAAE,KAAK,KAAK,OAAO,QAAQ,SAAS,KAAK,SAAS,QAAQ,UAAU,WAAW,MAAM;AAGtG,QAAI,UAAsB,CAAC;AAC3B,QAAI,YAAY;AAEhB,QAAI,KAAK,UAAU,OAAO;AACtB,YAAMC,UAAS,MAAM,UAAU,QAAQ;AACvC,YAAM,QAAQ,MAAM,aAAa,UAAU,QAAQ;AACnD,UAAIA,WAAU,aAAaA,SAAQ,KAAK,GAAG;AACvC,kBAAU;AACV,oBAAY;AAAA,MAChB,OAAO;AACH,kBAAU;AACV,cAAM,WAAW,UAAU,KAAK;AAAA,MACpC;AAAA,IACJ,OAAO;AACH,gBAAU,MAAM,aAAa,UAAU,QAAQ;AAAA,IACnD;AAEA,QAAI,QAAQ,WAAW,GAAG;AACtB,cAAQ,IAAI,cAAM,OAAO,qCAAqC,CAAC;AAC/D;AAAA,IACJ;AAEA,QAAI,KAAK,MAAM;AACX,YAAM,SAAS,QAAQ,IAAI,QAAM;AAAA,QAC7B,MAAM,EAAE;AAAA,QACR,WAAW,EAAE;AAAA,QACb,cAAc,EAAE,aAAa,YAAY;AAAA,QACzC,aAAa,EAAE;AAAA,QACf,YAAY,EAAE,cAAc;AAAA,MAChC,EAAE;AACF,cAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC3C;AAAA,IACJ;AAEA,UAAMC,SAAQ;AACd,UAAM,QAAQ,IAAIA,OAAM;AAAA,MACpB,MAAM;AAAA,QACF,cAAM,KAAK,MAAM;AAAA,QACjB,cAAM,KAAK,MAAM;AAAA,QACjB,cAAM,KAAK,UAAU;AAAA,QACrB,cAAM,KAAK,OAAO;AAAA,QAClB,cAAM,KAAK,MAAM;AAAA,MACrB;AAAA,MACA,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,IAClC,CAAC;AAED,QAAI,YAAY;AAChB,eAAW,KAAK,SAAS;AACrB,YAAM,QAAQ,EAAE,eAAe,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS;AACnE,UAAI,CAAC,MAAO;AACZ,YAAM,MAAM;AAAA,QACR,QAAQ,EAAE,eAAe,cAAM,KAAK,EAAE,YAAY;AAAA,QAClD,cAAM,IAAI,WAAW,EAAE,SAAS,CAAC;AAAA,QACjC,cAAM,IAAI,WAAW,EAAE,YAAY,CAAC;AAAA,QACpC,QAAS,EAAE,aAAa,SAAS,cAAM,KAAK,QAAG,IAAK,cAAM,KAAK,QAAG;AAAA,QAClE,QAAS,EAAE,aAAa,QAAQ,cAAM,KAAK,QAAG,IAAK,cAAM,KAAK,QAAG;AAAA,MACrE;AACA,YAAM,KAAK,GAAG;AAAA,IAClB;AAEA,YAAQ,IAAI,OAAO,MAAM,SAAS,CAAC;AAEnC,UAAM,YAAY,YAAY,cAAM,IAAI,YAAY,IAAI;AACxD,UAAM,cAAc,YAAY,IAAI,cAAM,KAAK,MAAM,SAAS,uBAAuB,IAAI;AACzF,YAAQ,IAAI;AAAA,IAAO,IAAI,EAAE,IAAI,QAAQ,MAAM,QAAQ,QAAQ,WAAW,IAAI,MAAM,EAAE,GAAG,WAAW,GAAG,SAAS;AAAA,CAAI;AAAA,EACpH,CAAC;AAGL,OACK,QAAQ,aAAa,EACrB,YAAY,+EAA+E,EAC3F,OAAO,cAAc,4BAA4B,IAAI,EACrD,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,SAA0C;AACrD,QAAI;AACA,YAAM,OAAO,SAAS,KAAK,MAAM,EAAE,KAAK;AACxC,YAAM,WAAW,MAAM,gBAAgB;AAGvC,YAAM,OAAO,cAAc;AAC3B,YAAM,OAAO,cAAc;AAE3B,UAAI,CAAC,MAAM;AACP,gBAAQ,MAAM,cAAM,OAAO,sDAAsD,CAAC;AAAA,MACtF;AACA,UAAI,CAAC,MAAM;AACP,gBAAQ,MAAM,cAAM,OAAO,qDAAqD,CAAC;AAAA,MACrF;AAGA,YAAM,aAAa,MAAM,gBAAgB,QAAQ;AAGjD,YAAM,cAAc,oBAAI,IAAoB;AAC5C,iBAAW,OAAO,YAAY;AAC1B,YAAI;AACA,gBAAM,UAAU,MAAM,kBAAAJ,QAAG,SAAS,IAAI,UAAU,MAAM;AACtD,sBAAY,IAAI,IAAI,cAAc,OAAO;AAAA,QAC7C,QAAQ;AAAA,QAER;AAAA,MACJ;AAGA,YAAM,CAAC,KAAK,MAAM,IAAI,MAAM,QAAQ,IAAI;AAAA,QACpC,QAAQ,QAAQ,eAAe,UAAU,IAAI,CAAC;AAAA,QAC9C,QAAQ,QAAQ,oBAAoB,IAAI,CAAC;AAAA,MAC7C,CAAC;AAGD,YAAM,gBAAgB,gBAAgB,YAAY,KAAK,IAAI;AAC3D,YAAM,cAAc,mBAAmB,YAAY,QAAQ,WAAW;AACtE,YAAM,cAAc,wBAAwB,YAAY,QAAQ,WAAW;AAG3E,YAAM,SAAS,YAAY,CAAC,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,MAAM;AAGhG,UAAI,KAAK,MAAM;AACX,gBAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,MAC/C,OAAO;AACH,8BAAsB,OAAO,UAAU,OAAO,aAAa,OAAO,aAAa;AAAA,MACnF;AAAA,IACJ,SAAS,KAAK;AACV,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI,8BAAyB,GAAG,EAAE,CAAC;AACvD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAAA,EACJ,CAAC;AAGL,OACK,QAAQ,iBAAiB,EACzB,YAAY,wEAAwE,EACpF,OAAO,SAAS,mDAAmD,KAAK,EACxE,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,QAA4B,SAA0C;AACjF,UAAM,WAAW,MAAM,gBAAgB;AACvC,UAAM,UAAU,MAAM,gBAAgB,UAAU,MAAM;AAEtD,QAAI,QAAQ,WAAW,GAAG;AACtB,cAAQ,IAAI,cAAM,OAAO,qCAAqC,CAAC;AAC/D;AAAA,IACJ;AAEA,UAAM,kBAAkB,CAAC,SAAS,eAAe,YAAY;AAC7D,UAAM,cAAc,oBAAI,IAAI,CAAC,OAAO,gBAAgB,SAAS,YAAY,QAAQ,WAAW,CAAC;AAS7F,UAAM,WAA4B,CAAC;AACnC,UAAM,YAAsB,CAAC;AAG7B,UAAM,aAAa,IAAI,IAAI,QAAQ,IAAI,OAAK,EAAE,YAAY,CAAC;AAE3D,eAAW,SAAS,SAAS;AACzB,YAAM,MAAM,MAAM;AAElB,UAAI,MAAM,YAAY;AAClB,iBAAS,KAAK,EAAE,UAAU,SAAS,MAAM,KAAK,SAAS,gBAAgB,MAAM,UAAU,GAAG,CAAC;AAC3F;AAAA,MACJ;AAEA,YAAM,KAAK,MAAM;AAGjB,iBAAW,SAAS,iBAAiB;AACjC,YAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG;AACnB,cAAI,KAAK,OAAO,UAAU,cAAc;AACpC,gBAAI;AACA,oBAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,MAAM,UAAU,MAAM;AACxD,oBAAM,SAAQ,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAClD,kBAAI;AACJ,kBAAI,QAAQ,WAAW,KAAK,GAAG;AAC3B,wBAAQ,QAAQ,QAAQ,wBAAwB,iBAAiB,KAAK;AAAA,GAAM;AAAA,cAChF,OAAO;AACH,wBAAQ;AAAA,cAAoB,KAAK;AAAA;AAAA;AAAA,EAAY,OAAO;AAAA,cACxD;AACA,oBAAM,kBAAAA,QAAG,UAAU,MAAM,UAAU,OAAO,MAAM;AAChD,wBAAU,KAAK,GAAG,GAAG,uBAAuB,KAAK,EAAE;AAAA,YACvD,QAAQ;AACJ,uBAAS,KAAK,EAAE,UAAU,SAAS,MAAM,KAAK,SAAS,2BAA2B,KAAK,GAAG,CAAC;AAAA,YAC/F;AAAA,UACJ,OAAO;AACH,qBAAS,KAAK;AAAA,cACV,UAAU;AAAA,cACV,MAAM;AAAA,cACN,SAAS,2BAA2B,KAAK;AAAA,cACzC,KAAK,UAAU,eAAe,0CAA0C;AAAA,YAC5E,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ;AAGA,UAAI,IAAI,YAAY;AAChB,cAAM,SAAS,IAAI,KAAK,GAAG,UAAU;AACrC,cAAM,QAAQ,MAAM;AACpB,cAAM,YAAY,MAAM,QAAQ,IAAI,OAAO,QAAQ,MAAM,MAAO,KAAK,KAAK;AAC1E,YAAI,CAAC,MAAM,OAAO,QAAQ,CAAC,KAAK,WAAW,GAAG;AAC1C,mBAAS,KAAK;AAAA,YACV,UAAU;AAAA,YACV,MAAM;AAAA,YACN,SAAS,eAAe,GAAG,UAAU,+BAA+B,WAAW,KAAK,CAAC;AAAA,YACrF,KAAK,wBAAwB,WAAW,KAAK,CAAC;AAAA,UAClD,CAAC;AAAA,QACL;AAAA,MACJ;AAGA,UAAI,IAAI,QAAQ,CAAC,YAAY,IAAI,GAAG,IAAI,GAAG;AACvC,iBAAS,KAAK;AAAA,UACV,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS,kBAAkB,GAAG,IAAI,mBAAc,CAAC,GAAG,WAAW,EAAE,KAAK,IAAI,CAAC;AAAA,QAC/E,CAAC;AAAA,MACL;AAGA,UAAI;AACA,cAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,MAAM,UAAU,MAAM;AACxD,cAAM,SAAS;AACf,YAAI;AACJ,gBAAQ,IAAI,OAAO,KAAK,OAAO,OAAO,MAAM;AACxC,gBAAM,OAAO,EAAE,CAAC;AAChB,cAAI,KAAK,WAAW,GAAG,KAAK,KAAK,WAAW,MAAM,KAAK,KAAK,WAAW,SAAS,EAAG;AACnF,gBAAM,SAAS,KAAK,MAAM,GAAG,EAAE,CAAC;AAChC,cAAI,CAAC,OAAO,SAAS,KAAK,EAAG;AAC7B,gBAAM,WAAW,cAAAD,QAAK,KAAK,cAAAA,QAAK,QAAQ,GAAG,GAAG,MAAM,EAAE,QAAQ,OAAO,GAAG;AACxE,cAAI,CAAC,WAAW,IAAI,QAAQ,GAAG;AAC3B,qBAAS,KAAK;AAAA,cACV,UAAU;AAAA,cACV,MAAM;AAAA,cACN,SAAS,0BAA0B,EAAE,CAAC,CAAC,KAAK,IAAI;AAAA,YACpD,CAAC;AAAA,UACL;AAAA,QACJ;AAAA,MACJ,QAAQ;AAAA,MAAsC;AAAA,IAClD;AAGA,QAAI,KAAK,MAAM;AACX,cAAQ,IAAI,KAAK,UAAU,EAAE,OAAO,QAAQ,QAAQ,WAAW,SAAS,GAAG,MAAM,CAAC,CAAC;AACnF,cAAQ,KAAK,SAAS,SAAS,IAAI,IAAI,CAAC;AAAA,IAC5C;AAEA,YAAQ,IAAI,EAAE,KAAK;AAAA;AAAA,CAAwB,CAAC;AAC5C,YAAQ,IAAI,cAAM,KAAK,KAAK,QAAQ,MAAM,QAAQ,QAAQ,WAAW,IAAI,MAAM,EAAE;AAAA,CAAY,CAAC;AAE9F,QAAI,UAAU,SAAS,GAAG;AACtB,cAAQ,IAAI,cAAM,MAAM,KAAK,IAAI,EAAE,eAAe,UAAU,MAAM,SAAS,UAAU,WAAW,IAAI,MAAM,EAAE,GAAG,CAAC;AAChH,iBAAW,OAAO,UAAW,SAAQ,IAAI,cAAM,IAAI,OAAO,GAAG,EAAE,CAAC;AAChE,cAAQ,IAAI,EAAE;AAAA,IAClB;AAEA,QAAI,SAAS,WAAW,GAAG;AACvB,cAAQ,IAAI,KAAK,IAAI,EAAE;AAAA,CAA2C;AAClE;AAAA,IACJ;AAEA,UAAM,SAAS,SAAS,OAAO,OAAK,EAAE,aAAa,OAAO;AAC1D,UAAM,WAAW,SAAS,OAAO,OAAK,EAAE,aAAa,SAAS;AAE9D,eAAW,KAAK,QAAQ;AACpB,cAAQ,IAAI,KAAK,cAAM,IAAI,QAAG,CAAC,IAAI,cAAM,IAAI,EAAE,IAAI,CAAC,EAAE;AACtD,cAAQ,IAAI,cAAM,KAAK,SAAS,EAAE,OAAO,EAAE,CAAC;AAC5C,UAAI,EAAE,IAAK,SAAQ,IAAI,cAAM,IAAI,gBAAW,EAAE,GAAG,EAAE,CAAC;AAAA,IACxD;AACA,eAAW,KAAK,UAAU;AACtB,cAAQ,IAAI,KAAK,cAAM,OAAO,QAAG,CAAC,IAAI,cAAM,OAAO,EAAE,IAAI,CAAC,EAAE;AAC5D,cAAQ,IAAI,cAAM,KAAK,SAAS,EAAE,OAAO,EAAE,CAAC;AAC5C,UAAI,EAAE,IAAK,SAAQ,IAAI,cAAM,IAAI,gBAAW,EAAE,GAAG,EAAE,CAAC;AAAA,IACxD;AAEA,UAAM,QAAkB,CAAC;AACzB,QAAI,OAAO,SAAS,EAAG,OAAM,KAAK,cAAM,IAAI,GAAG,OAAO,MAAM,SAAS,OAAO,WAAW,IAAI,MAAM,EAAE,EAAE,CAAC;AACtG,QAAI,SAAS,SAAS,EAAG,OAAM,KAAK,cAAM,OAAO,GAAG,SAAS,MAAM,WAAW,SAAS,WAAW,IAAI,MAAM,EAAE,EAAE,CAAC;AACjH,YAAQ,IAAI,cAAM,KAAK;AAAA,IAAO,MAAM,KAAK,IAAI,CAAC;AAAA,CAAI,CAAC;AAEnD,QAAI,OAAO,SAAS,EAAG,SAAQ,KAAK,CAAC;AAAA,EACzC,CAAC;AAEL,SAAO;AACX;;;AMvfA;AACA,IAAAM,8BAAiC;AACjC,IAAAC,kBAA2B;AAC3B,IAAAC,qBAAqB;AAEd,SAAS,sBAA+B;AAC3C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,yCAAyC,EACrD,WAAW,0BAA0B,CAAC;AAC/C;AAEA,SAAS,4BAAqC;AAC1C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,gFAAgF,EAC5F,OAAO,aAAa,gEAA2D,KAAK,EACpF,OAAO,cAAc,8CAA8C,KAAK,EACxE,OAAO,OAAO,SAA8C;AACzD,UAAM,MAAM,QAAQ,IAAI;AAGxB,UAAMC,aAAQ,uCAAU,eAAe,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACzF,QAAIA,OAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MAEJ,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,WAAO,uCAAU,eAAe,CAAC,QAAQ,QAAQ,GAAG,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AAClG,QAAI,KAAK,WAAW,GAAG;AACnB,UAAI;AACA,cAAM,cAAuC,KAAK,MAAM,KAAK,MAAM;AACnE,YAAI,CAAC,YAAY,KAAK,OAAK,EAAE,SAAS,kBAAkB,GAAG;AACvD,kBAAQ,MAAM,cAAM;AAAA,YAChB;AAAA,UAEJ,CAAC;AACD,kBAAQ,KAAK,CAAC;AAAA,QAClB;AAAA,MACJ,QAAQ;AAAA,MAA6D;AAAA,IACzE;AAEA,UAAM,SAAS,KAAK,SACd,6GACA;AAEN,UAAM,OAAO,CAAC,OAAO,oBAAoB,YAAY,MAAM;AAC3D,QAAI,CAAC,KAAK,MAAO,MAAK,KAAK,YAAY;AAEvC,UAAM,cAAU,yBAAK,KAAK,SAAS,WAAW;AAC9C,UAAM,cAAc,KAAK,SACnB,0BACA,OAAG,4BAAW,OAAO,IAAI,aAAa,UAAU;AAEtD,YAAQ,IAAI,cAAM,KAAK;AAAA,oBAAuB,KAAK,SAAS,eAAe,EAAE;AAAA,CAAI,CAAC;AAClF,YAAQ,IAAI,cAAM,IAAI,KAAK,WAAW;AAAA,CAAI,CAAC;AAI3C,UAAM,WAAW,MAAM,IAAI,QAAgB,CAACC,aAAY;AACpD,YAAM,WAAO,mCAAM,eAAe,MAAM,EAAE,KAAK,OAAO,UAAU,CAAC;AACjE,WAAK,GAAG,SAAS,CAAC,SAASA,SAAQ,QAAQ,CAAC,CAAC;AAAA,IACjD,CAAC;AAED,QAAI,aAAa,GAAG;AAChB,cAAQ,MAAM,cAAM,IAAI,uCAAkC,CAAC;AAAA,IAC/D;AAEA,YAAQ,KAAK,QAAQ;AAAA,EACzB,CAAC;AACT;;;ACxEA;AACA,IAAAC,8BAAiC;AACjC,IAAAC,mBAA4B;AAC5B,IAAAC,qBAAqB;AAGd,SAAS,qBAA8B;AAC1C,SAAO,IAAI,QAAQ,OAAO,EACrB,YAAY,kEAAkE,EAC9E,OAAO,aAAa,4CAA4C,KAAK,EACrE,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,cAAc,8CAA8C,KAAK,EACxE,OAAO,OAAO,SAA4D;AACvE,UAAM,MAAM,QAAQ,IAAI;AAGxB,UAAM,eAAW,uCAAU,OAAO,CAAC,aAAa,WAAW,GAAG,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACtG,QAAI,SAAS,WAAW,GAAG;AACvB,cAAQ,MAAM,cAAM,IAAI,2CAAsC,CAAC;AAC/D,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,aAAS,uCAAU,MAAM,CAAC,QAAQ,QAAQ,GAAG,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC3F,QAAI,OAAO,WAAW,GAAG;AACrB,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MAEJ,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAIA,UAAM,YAAQ,uCAAU,OAAO,CAAC,UAAU,eAAe,MAAM,aAAa,iBAAiB,GAAG,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACxI,QAAI,MAAM,OAAO,KAAK,EAAE,SAAS,GAAG;AAChC,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MAKJ,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAMC,aAAQ,uCAAU,eAAe,CAAC,WAAW,GAAG,EAAE,UAAU,QAAQ,OAAO,OAAO,CAAC;AACzF,QAAIA,OAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,cAAM;AAAA,QAChB;AAAA,MAEJ,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,WAAO,uCAAU,eAAe,CAAC,QAAQ,QAAQ,GAAG,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AAClG,QAAI,KAAK,WAAW,GAAG;AACnB,UAAI;AACA,cAAM,cAAuC,KAAK,MAAM,KAAK,MAAM;AACnE,YAAI,CAAC,YAAY,KAAK,OAAK,EAAE,SAAS,UAAU,GAAG;AAC/C,kBAAQ,MAAM,cAAM;AAAA,YAChB;AAAA,UAEJ,CAAC;AACD,kBAAQ,KAAK,CAAC;AAAA,QAClB;AAAA,MACJ,QAAQ;AAAA,MAA6D;AAAA,IACzE;AAEA,QAAI,CAAC,KAAK,QAAQ;AACd,YAAM,YAAY,MAAM,yBAAyB;AAAA,QAC7C,KAAK,KAAK;AAAA,QACV,SAAS;AAAA,QACT,SAAS;AAAA,MACb,CAAC;AACD,UAAI,CAAC,WAAW;AACZ,gBAAQ,IAAI,cAAM,IAAI,eAAe,CAAC;AACtC;AAAA,MACJ;AAAA,IACJ;AAEA,UAAM,SAAS,KAAK,SACd,sGACA;AAEN,UAAM,OAAO,CAAC,OAAO,YAAY,YAAY,MAAM;AACnD,QAAI,CAAC,KAAK,MAAO,MAAK,KAAK,YAAY;AAEvC,YAAQ,IAAI,cAAM,KAAK;AAAA,YAAe,KAAK,SAAS,eAAe,EAAE;AAAA,CAAI,CAAC;AAG1E,UAAM,cAAU,yBAAK,KAAK,gBAAgB,MAAM;AAChD,QAAI;AACJ,QAAI;AACA,mBAAa,IAAI;AAAA,YACb,8BAAY,SAAS,EAAE,eAAe,KAAK,CAAC,EACvC,OAAO,OAAK,EAAE,YAAY,CAAC,EAC3B,IAAI,OAAK,EAAE,IAAI;AAAA,MACxB;AAAA,IACJ,QAAQ;AACJ,mBAAa,oBAAI,IAAI;AAAA,IACzB;AAIA,UAAM,cAAU,mCAAM,eAAe,MAAM,EAAE,KAAK,UAAU,MAAM,OAAO,SAAS,CAAC;AACnF,YAAQ,MAAM;AAGd,UAAM,QAAQ,OAAO,YAAY;AAC7B,YAAM,WAAW,KAAK,IAAI,IAAI;AAC9B,aAAO,KAAK,IAAI,IAAI,UAAU;AAC1B,YAAI;AACA,gBAAM,cAAU,8BAAY,SAAS,EAAE,eAAe,KAAK,CAAC,EACvD,OAAO,OAAK,EAAE,YAAY,CAAC,EAC3B,IAAI,OAAK,EAAE,IAAI;AACpB,gBAAM,QAAQ,QAAQ,KAAK,QAAM,CAAC,WAAW,IAAI,EAAE,CAAC;AACpD,cAAI,MAAO,QAAO;AAAA,QACtB,QAAQ;AAAA,QAA4B;AACpC,cAAM,IAAI,QAAQ,OAAK,WAAW,GAAG,GAAG,CAAC;AAAA,MAC7C;AACA,aAAO;AAAA,IACX,GAAG;AAEH,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM,cAAM,IAAI,2DAAsD,CAAC;AAC/E,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,WAAO,uCAAU,eAAe,CAAC,QAAQ,SAAS,OAAO,UAAU,GAAG,EAAE,KAAK,OAAO,UAAU,CAAC;AACrG,QAAI,KAAK,WAAW,GAAG;AACnB,cAAQ,KAAK,KAAK,UAAU,CAAC;AAAA,IACjC;AAEA,UAAM,aAAS,uCAAU,eAAe,CAAC,UAAU,OAAO,QAAQ,GAAG,EAAE,KAAK,OAAO,UAAU,CAAC;AAC9F,YAAQ,KAAK,OAAO,UAAU,CAAC;AAAA,EACnC,CAAC;AACT;;;AC5IA;AACA,IAAAC,8BAA0B;AAC1B,IAAAC,mBAA2B;AAC3B,IAAAC,qBAA+B;AAqC/B,IAAM,iBAA4B,CAAC,YAA2B,YAAY,UAAU,UAAU;AAC9F,IAAM,iBAA0B,CAAC,MAAe,MAAM,UAAU,cAAM,IAAI,CAAC,IAAI,cAAM,KAAK,CAAC;AAG3F,IAAM,cAA4C;AAAA,EAChD,iBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,eAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,mBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,mBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,IAAO;AAAA,EAC/D,qBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,qBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,IAAO;AAAA,EAC/D,mBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,IAAO;AAAA,EAC/D,yBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,OAAO;AAAA,EAC/D,qBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,uBAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,IAAO;AAAA,EAC/D,cAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,KAAO;AAAA,EAC/D,aAAyB,EAAE,OAAO,SAAS,OAAO,cAAM,MAAO;AAAA,EAC/D,gBAAyB,EAAE,OAAO,gBAAgB,OAAO,eAAe;AAC1E;AAGA,IAAM,eAAuC;AAAA,EAC3C,MAAM;AAAA,EAAQ,MAAM;AAAA,EAAQ,uBAAuB;AAAA,EACnD,MAAM;AAAA,EAAQ,OAAO;AAAA,EAAQ,MAAM;AAAA,EAAQ,WAAW;AAAA,EAAQ,cAAc;AAAA,EAC5E,MAAM;AAAA,EAAQ,MAAM;AAAA,EACpB,UAAU;AAAA,EAAQ,WAAW;AAAA,EAC7B,OAAO;AAAA,EAAQ,MAAM;AAAA,EACrB,KAAK;AACP;AAEA,SAAS,WAAW,UAA0B;AAC5C,MAAI,aAAa,QAAQ,EAAG,QAAO,aAAa,QAAQ;AACxD,MAAI,SAAS,WAAW,eAAe,EAAK,QAAO;AACnD,MAAI,SAAS,WAAW,iBAAiB,EAAG,QAAO;AACnD,MAAI,SAAS,WAAW,iBAAiB,EAAG,QAAO;AACnD,MAAI,SAAS,WAAW,OAAO,EAAa,QAAO;AACnD,SAAO,SAAS,MAAM,GAAG,CAAC,EAAE,YAAY;AAC1C;AAEA,SAAS,SAAS,OAA0B;AAC1C,MAAI,MAAM,SAAS,aAAa;AAC9B,UAAM,SAAS,WAAW,MAAM,aAAa,EAAE,EAAE,OAAO,CAAC;AACzD,WAAO,MAAM,YAAY,UAAU,cAAM,IAAI,MAAM,IAAI,cAAM,IAAI,MAAM;AAAA,EACzE;AACA,QAAM,MAAM,YAAY,MAAM,IAAI;AAClC,MAAI,CAAC,KAAK;AAER,UAAM,OAAO,MAAM,KAAK,MAAM,GAAG,EAAE,IAAI,KAAK,QAAQ,MAAM,GAAG,CAAC,EAAE,YAAY;AAC5E,UAAM,QAAQ,GAAG,GAAG,GAAG,MAAM,YAAY,UAAU,MAAM,GAAG,GAAG,OAAO,CAAC;AACvE,WAAO,MAAM,YAAY,UAAU,cAAM,IAAI,KAAK,IAAI,cAAM,IAAI,KAAK;AAAA,EACvE;AAEA,MAAI,MAAM,SAAS,gBAAgB;AACjC,UAAM,QAAQ,MAAM,YAAY,UAAU,UAAU;AACpD,WAAO,MAAM,YAAY,UAAU,cAAM,IAAI,KAAK,IAAI,cAAM,KAAK,KAAK;AAAA,EACxE;AACA,SAAO,OAAO,IAAI,UAAU,cAAc,OAAO,IAAI,UAAU,WAC3D,IAAI,MAAM,IAAI,KAAK,IACnB,cAAM,IAAI,OAAO;AACvB;AAIA,IAAM,iBAA4B;AAAA,EAChC,cAAM;AAAA,EAAM,cAAM;AAAA,EAAO,cAAM;AAAA,EAAQ,cAAM;AAAA,EAAM,cAAM;AAC3D;AAEA,SAAS,cAAc,QAA2C;AAChE,QAAMC,OAAM,oBAAI,IAAqB;AACrC,aAAW,MAAM,QAAQ;AACvB,QAAI,CAACA,KAAI,IAAI,GAAG,UAAU,GAAG;AAC3B,MAAAA,KAAI,IAAI,GAAG,YAAY,eAAeA,KAAI,OAAO,eAAe,MAAM,CAAC;AAAA,IACzE;AAAA,EACF;AACA,SAAOA;AACT;AAEA,SAAS,eAAeA,MAA2B,QAA2B;AAC5E,aAAW,MAAM,QAAQ;AACvB,QAAI,CAACA,KAAI,IAAI,GAAG,UAAU,GAAG;AAC3B,MAAAA,KAAI,IAAI,GAAG,YAAY,eAAeA,KAAI,OAAO,eAAe,MAAM,CAAC;AAAA,IACzE;AAAA,EACF;AACF;AAIA,SAAS,QAAQ,IAAoB;AACnC,SAAO,IAAI,KAAK,EAAE,EAAE,mBAAmB,SAAS,EAAE,QAAQ,MAAM,CAAC;AACnE;AAEA,SAAS,YAAY,OAA0B;AAC7C,QAAM,QAAkB,CAAC;AAGzB,MAAI,IAAmC;AACvC,MAAI,MAAM,MAAM;AACd,QAAI;AAAE,UAAI,KAAK,MAAM,MAAM,IAAI;AAAA,IAAG,QAAQ;AAAA,IAAe;AAAA,EAC3D;AAEA,MAAI,MAAM,SAAS,aAAa;AAC9B,QAAI,GAAG,IAAS,OAAM,KAAK,cAAM,IAAI,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACxD,QAAI,GAAG,KAAS,OAAM,KAAK,cAAM,QAAI,6BAAS,EAAE,IAAI,CAAC,CAAC;AACtD,QAAI,GAAG,QAAS,OAAM,KAAK,cAAM,IAAI,IAAI,EAAE,OAAO,GAAG,CAAC;AACtD,QAAI,GAAG,IAAS,OAAM,KAAK,cAAM,IAAI,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;AACxD,QAAI,GAAG,MAAS,OAAM,KAAK,cAAM,IAAI,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;AAC1D,QAAI,GAAG,OAAS,OAAM,KAAK,cAAM,IAAI,EAAE,OAAO,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,EAC7D,OAAO;AACL,QAAI,MAAM,SAAW,OAAM,KAAK,cAAM,OAAO,MAAM,QAAQ,CAAC;AAC5D,QAAI,GAAG,KAAc,OAAM,KAAK,cAAM,QAAI,6BAAS,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAI,GAAG,YAAc,OAAM,KAAK,cAAM,IAAI,IAAI,EAAE,WAAW,GAAG,CAAC;AAC/D,QAAI,MAAM,SAAW,OAAM,KAAK,cAAM,IAAI,MAAM,MAAM,QAAQ,EAAE,CAAC;AAAA,EACnE;AAEA,SAAO,MAAM,KAAK,IAAI,KAAK,cAAM,IAAI,QAAG;AAC1C;AAEA,SAAS,WAAW,OAAkB,UAAwC;AAC5E,QAAMC,QAAU,cAAM,IAAI,QAAQ,MAAM,EAAE,CAAC;AAC3C,QAAM,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK,cAAM;AACxD,QAAM,UAAU,QAAQ,MAAM,WAAW,MAAM,GAAG,CAAC,CAAC;AACpD,QAAM,QAAU,SAAS,KAAK;AAC9B,QAAM,SAAU,YAAY,KAAK;AACjC,SAAO,GAAGA,KAAI,IAAI,KAAK,IAAI,OAAO,KAAK,MAAM;AAC/C;AAIA,SAAS,WAAW,KAA4B;AAC9C,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,YAAI,iCAAW,yBAAK,KAAK,QAAQ,CAAC,EAAG,YAAO,yBAAK,KAAK,SAAS,UAAU;AACzE,UAAM,aAAS,yBAAK,KAAK,IAAI;AAC7B,QAAI,WAAW,IAAK;AACpB,UAAM;AAAA,EACR;AACA,SAAO;AACT;AAEA,SAAS,WAAW,MAAoB,MAAsB;AAC5D,QAAM,UAAoB,CAAC;AAC3B,MAAI,KAAM,SAAQ,KAAK,IAAI;AAC3B,MAAI,KAAK,SAAS;AAChB,UAAM,IAAI,KAAK,QAAQ,QAAQ,MAAM,IAAI;AACzC,YAAQ,KAAK,oBAAoB,CAAC,IAAI;AAAA,EACxC;AACA,MAAI,KAAK,MAAM;AACb,UAAMC,KAAI,KAAK,KAAK,QAAQ,MAAM,IAAI;AACtC,YAAQ,KAAK,cAAcA,EAAC,kBAAkBA,EAAC,GAAG;AAAA,EACpD;AACA,SAAO,QAAQ,SAAS,QAAQ,KAAK,OAAO,IAAI;AAClD;AAEA,SAAS,YAAY,QAAgB,OAAe,OAA4B;AAC9E,QAAM,MAAM,wGAAwG,QAAQ,UAAU,KAAK,KAAK,EAAE,0BAA0B,KAAK;AAEjL,QAAM,aAAS,uCAAU,WAAW,CAAC,QAAQ,SAAS,GAAG,GAAG;AAAA,IAC1D,OAAO,CAAC,QAAQ,QAAQ,MAAM;AAAA,IAC9B,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AAED,MAAI,OAAO,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,EAAG,QAAO,CAAC;AAC1D,MAAI;AAAE,WAAO,KAAK,MAAM,OAAO,MAAM;AAAA,EAAG,QAAQ;AAAE,WAAO,CAAC;AAAA,EAAG;AAC/D;AAIA,SAAS,OAAO,QAAgB,MAA0B;AACxD,QAAM,UAAU,KAAK,IAAI,IAAI,IAAI,KAAK;AACtC,QAAM,UAAU,YAAY,QAAQ,WAAW,MAAM,SAAS,OAAO,EAAE,GAAG,GAAG;AAE7E,QAAM,WAAW,cAAc,OAAO;AACtC,MAAI,SAAS;AAEb,aAAW,MAAM,SAAS;AACxB,QAAI,GAAG,KAAK,OAAQ,UAAS,GAAG;AAChC,SAAK,OAAO,QAAQ,IAAI,KAAK,UAAU,EAAE,CAAC,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC;AAAA,EACpF;AAGA,QAAM,WAAW,YAAY,MAAM;AACjC,UAAM,SAAS,YAAY,QAAQ,WAAW,MAAM,QAAQ,MAAM,EAAE,GAAG,EAAE;AACzE,QAAI,OAAO,SAAS,GAAG;AACrB,qBAAe,UAAU,MAAM;AAC/B,iBAAW,MAAM,QAAQ;AACvB,YAAI,GAAG,KAAK,OAAQ,UAAS,GAAG;AAChC,aAAK,OAAO,QAAQ,IAAI,KAAK,UAAU,EAAE,CAAC,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC;AAAA,MACpF;AAAA,IACF;AAAA,EACF,GAAG,GAAI;AAEP,UAAQ,GAAG,UAAU,MAAM;AAAE,kBAAc,QAAQ;AAAG,YAAQ,KAAK,CAAC;AAAA,EAAG,CAAC;AAC1E;AAIO,SAAS,qBAA8B;AAC5C,SAAO,IAAI,QAAQ,OAAO,EACvB,YAAY,6DAA6D,EACzE,OAAO,gBAAqB,+BAA+B,KAAK,EAChE,OAAO,SAAqB,8BAA+B,KAAK,EAChE,OAAO,kBAAqB,qCAAqC,EACjE,OAAO,mBAAqB,8CAA8C,EAC1E,OAAO,UAAqB,yBAAyB,KAAK,EAC1D,OAAO,CAAC,SAAuB;AAC9B,UAAM,MAAS,QAAQ,IAAI;AAC3B,UAAM,SAAS,WAAW,GAAG;AAE7B,QAAI,CAAC,UAAU,KAAC,6BAAW,MAAM,EAAG;AAEpC,QAAI,KAAK,KAAK;AACZ,YAAM,SAAS,YAAY,QAAQ,WAAW,MAAM,EAAE,GAAG,GAAI;AAC7D,YAAM,WAAW,cAAc,MAAM;AACrC,iBAAW,MAAM,QAAQ;AACvB,aAAK,OAAO,QAAQ,IAAI,KAAK,UAAU,EAAE,CAAC,IAAI,QAAQ,IAAI,WAAW,IAAI,QAAQ,CAAC;AAAA,MACpF;AACA;AAAA,IACF;AAEA,WAAO,QAAQ,IAAI;AAAA,EACrB,CAAC;AACL;;;ACtQA;AACA,IAAAC,oBAAe;AACf,IAAAC,gBAAiB;AACjB,IAAAC,8BAA0B;AAG1B,SAASC,KAAI,KAAa,MAAgB,KAA2C;AACjF,QAAM,QAAI,uCAAU,KAAK,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AACvE,SAAO,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,UAAU,IAAI,KAAK,EAAE;AAC9D;AAEA,SAAS,oBAAoB,KAAqB;AAC9C,QAAM,SAASA,KAAI,OAAO,CAAC,gBAAgB,4BAA4B,SAAS,GAAG,GAAG;AACtF,MAAI,OAAO,MAAM,OAAO,IAAK,QAAO,OAAO,IAAI,QAAQ,WAAW,EAAE;AACpE,MAAIA,KAAI,OAAO,CAAC,aAAa,YAAY,eAAe,GAAG,GAAG,EAAE,GAAI,QAAO;AAC3E,SAAO;AACX;AAEA,SAAS,eAAe,KAAqB;AACzC,QAAM,IAAIA,KAAI,OAAO,CAAC,aAAa,WAAW,MAAM,GAAG,GAAG;AAC1D,SAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,EAAE,SAAS,EAAE;AAChD;AAEA,IAAM,uBAAuB;AAC7B,IAAM,sBAAsB;AAE5B,SAAS,YAAY,UAA2B;AAC5C,SAAO,SAAS,WAAW,eAAe,KACnC,SAAS,WAAW,aAAa,KACjC,SAAS,SAAS,WAAW;AACxC;AAEA,SAAS,eAAe,OAAiB,OAAuB;AAC5D,QAAM,eAAe,MAAM,OAAO,CAAAC,UAAQ,CAAC,YAAYA,KAAI,CAAC;AAC5D,QAAM,aAAa,MAAM,OAAO,WAAW;AAC3C,QAAM,sBAAsB,aAAa,MAAM,GAAG,oBAAoB;AAEtE,aAAWA,SAAQ,qBAAqB;AACpC,UAAM,KAAK,OAAOA,KAAI,IAAI;AAAA,EAC9B;AAEA,QAAM,qBAAqB,aAAa,SAAS,oBAAoB;AACrE,MAAI,qBAAqB,GAAG;AACxB,UAAM,KAAK,aAAa,kBAAkB,aAAa;AAAA,EAC3D;AAEA,MAAI,WAAW,SAAS,GAAG;AACvB,UAAM,KAAK,uBAAuB,WAAW,MAAM,wBAAwB;AAAA,EAC/E;AACJ;AAEA,SAAS,eAAe,SAAgC;AACpD,MAAI,YAAY,QAAQ,OAAO,MAAM,OAAO,KAAK,UAAU,EAAG,QAAO;AACrE,MAAI,UAAU,GAAI,QAAO,GAAG,OAAO;AACnC,QAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,QAAM,aAAa,UAAU;AAC7B,SAAO,GAAG,OAAO,KAAK,UAAU;AACpC;AAkBA,SAASC,iBAAgB,WAA6B;AAClD,QAAMC,uBAAsB,oBAAI,IAAI;AAAA,IAChC;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAS;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAS;AAAA,IAAY;AAAA,IAC7D;AAAA,IAAQ;AAAA,IAAM;AAAA,IAAS;AAAA,IAAU;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAM;AAAA,IAC7D;AAAA,IAAS;AAAA,IAAU;AAAA,IAAO;AAAA,IAAQ;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAS;AAAA,EAC9D,CAAC;AACD,QAAM,UAAU,UAAU,SAAS,+CAA+C;AAClF,SAAO,CAAC,GAAG,IAAI;AAAA,IACX,CAAC,GAAG,OAAO,EACN,IAAI,OAAK,EAAE,CAAC,EAAE,YAAY,CAAC,EAC3B,OAAO,QAAM,CAACA,qBAAoB,IAAI,EAAE,CAAC;AAAA,EAClD,CAAC;AACL;AAEA,SAAS,WAAW,IAAY,KAA4C;AACxE,QAAM,IAAIH,KAAI,MAAM,CAAC,SAAS,MAAM,EAAE,IAAI,SAAS,QAAQ,GAAG,GAAG;AACjE,MAAI,CAAC,EAAE,GAAI,QAAO;AAClB,MAAI;AACA,UAAM,OAAO,KAAK,MAAM,EAAE,GAAG;AAC7B,WAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,CAAC,IAAI;AAAA,EAC3C,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,oBAAoB,WAAmB,KAA4B;AACxE,QAAM,MAAME,iBAAgB,SAAS;AACrC,QAAM,SAAwB,CAAC;AAC/B,aAAW,MAAM,KAAK;AAClB,UAAM,OAAO,WAAW,IAAI,GAAG;AAC/B,WAAO,KAAK;AAAA,MACR;AAAA,MACA,OAAO,MAAM,SAAS;AAAA,MACtB,MAAM,MAAM,cAAc,MAAM,QAAQ;AAAA,MACxC,UAAU,OAAO,MAAM,YAAY,GAAG;AAAA,MACtC,cAAc,MAAM,gBAAgB;AAAA,IACxC,CAAC;AAAA,EACL;AACA,SAAO;AACX;AAEA,SAAS,kBAAkB,KAA0B;AAEjD,QAAM,SAAsB,CAAC;AAC7B,aAAW,UAAU,CAAC,eAAe,MAAM,GAAG;AAC1C,UAAM,IAAIF,KAAI,MAAM,CAAC,SAAS,UAAU,MAAM,IAAI,QAAQ,GAAG,GAAG;AAChE,QAAI,CAAC,EAAE,GAAI;AACX,QAAI;AACA,YAAM,QAAQ,KAAK,MAAM,EAAE,GAAG;AAC9B,UAAI,CAAC,MAAM,QAAQ,KAAK,EAAG;AAC3B,iBAAW,QAAQ,OAAO;AACtB,eAAO,KAAK;AAAA,UACR,IAAI,KAAK,MAAM;AAAA,UACf,OAAO,KAAK,SAAS;AAAA,UACrB,MAAM,KAAK,cAAc,KAAK,QAAQ;AAAA,UACtC,UAAU,OAAO,KAAK,YAAY,GAAG;AAAA,UACrC;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,QAAQ;AAAA,IAA0B;AAAA,EACtC;AACA,SAAO;AACX;AAYA,SAAS,YAAY,OAA+B;AAChD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACzE;AAEA,SAAS,sBAAsB,KAAa,gBAAyC;AACjF,QAAM,UAAU,cAAAI,QAAK,KAAK,KAAK,gBAAgB,MAAM;AACrD,MAAI,CAAC,kBAAAC,QAAG,eAAe,OAAO,EAAG,QAAO,CAAC;AAEzC,QAAM,OAAwB,CAAC;AAC/B,MAAI;AACA,UAAM,UAAU,kBAAAA,QAAG,YAAY,OAAO;AACtC,eAAW,SAAS,SAAS;AACzB,YAAM,SAAS,cAAAD,QAAK,KAAK,SAAS,KAAK;AACvC,UAAI,CAAC,kBAAAC,QAAG,SAAS,MAAM,EAAE,YAAY,EAAG;AAExC,YAAM,aAAa,cAAAD,QAAK,KAAK,QAAQ,aAAa;AAClD,UAAI,CAAC,kBAAAC,QAAG,eAAe,UAAU,EAAG;AAEpC,UAAI;AACA,cAAM,OAAO,KAAK,MAAM,kBAAAA,QAAG,aAAa,YAAY,MAAM,CAAC;AAC3D,cAAM,cAAc,YAAY,KAAK,aAAa,KAAK;AACvD,YAAI,cAAc,KAAK,cAAc,eAAgB;AAErD,cAAM,iBAAiB,YAAY,KAAK,SAAS,MACzC,MAAM;AACN,gBAAM,aAAa,YAAY,KAAK,WAAW;AAC/C,iBAAO,eAAe,OAAO,OAAO,KAAK,MAAM,aAAa,GAAI;AAAA,QACpE,GAAG;AAEP,aAAK,KAAK;AAAA,UACN,IAAI,OAAO,KAAK,MAAM,KAAK;AAAA,UAC3B,QAAQ,OAAO,KAAK,UAAU,KAAK,iBAAiB,SAAS;AAAA,UAC7D,YAAY,OAAO,KAAK,mBAAmB,KAAK,cAAc,SAAS;AAAA,UACvE,QAAQ,OAAO,KAAK,WAAW,EAAE;AAAA,UACjC,OAAO,OAAO,KAAK,SAAS,EAAE;AAAA,UAC9B;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL,QAAQ;AAAA,MAER;AAAA,IACJ;AAAA,EACJ,QAAQ;AAAA,EAER;AAEA,SAAO,KAAK,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,EAAE,WAAW;AAC5D;AAEA,SAAS,gBAAgB,KAAsD;AAE3E,QAAM,IAAIL,KAAI,MAAM,CAAC,UAAU,GAAG,GAAG;AACrC,MAAI,CAAC,EAAE,MAAM,CAAC,EAAE,IAAK,QAAO,CAAC;AAE7B,QAAM,WAAoD,CAAC;AAC3D,QAAM,QAAQ,EAAE,IAAI,MAAM,IAAI;AAC9B,aAAW,QAAQ,OAAO;AAEtB,UAAM,QAAQ,KAAK,MAAM,WAAW,KAAK,KAAK,MAAM,yBAAyB;AAC7E,QAAI,OAAO;AACP,eAAS,KAAK,EAAE,KAAK,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,KAAK,GAAG,CAAC;AAAA,IAC5D;AAAA,EACJ;AACA,SAAO;AACX;AAEA,SAAS,cAAc,MAWZ;AACP,QAAM,QAAkB,CAAC;AAGzB,QAAM,KAAK,KAAK;AAChB,QAAM,KAAK,iBAAiB,KAAK,IAAI,EAAE;AACvC,QAAM,KAAK,WAAW,KAAK,MAAM,EAAE;AACnC,QAAM,KAAK,YAAY,KAAK,WAAW,EAAE;AACzC,QAAM,KAAK,kBAAkB,KAAK,aAAa,MAAM,EAAE;AACvD,QAAM,KAAK,iBAAiB;AAC5B,QAAM,KAAK,0BAA0B,KAAK,eAAe,MAAM,EAAE;AACjE,QAAM,KAAK,iBAAiB;AAC5B,QAAM,KAAK,KAAK;AAChB,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,2BAAsB,KAAK,IAAI,EAAE;AAC5C,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,YAAY;AACvB,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,qHAAqH;AAChI,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,qBAAqB,KAAK,aAAa,MAAM,GAAG;AAC3D,QAAM,KAAK,EAAE;AACb,MAAI,KAAK,aAAa,SAAS,GAAG;AAC9B,UAAM,KAAK,sCAAsC;AACjD,UAAM,KAAK,qCAAqC;AAChD,eAAWM,UAAS,KAAK,cAAc;AACnC,YAAM,SAASA,OAAM,aAAa,MAAM,IAAI,EAAE,CAAC,KAAK;AACpD,YAAM,KAAK,KAAKA,OAAM,EAAE,MAAMA,OAAM,KAAK,MAAMA,OAAM,IAAI,MAAM,MAAM,IAAI;AAAA,IAC7E;AACA,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,kNAAkN;AAAA,EACjO,OAAO;AACH,UAAM,KAAK,2CAA2C;AACtD,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,gGAAgG;AAAA,EAC/G;AACA,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,iBAAiB;AAC5B,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,iCAAiC;AAC5C,QAAM,KAAK,iCAAiC;AAC5C,QAAM,KAAK,+IAA0I;AACrJ,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,0BAA0B;AACrC,QAAM,KAAK,EAAE;AACb,MAAI,KAAK,eAAe,SAAS,GAAG;AAChC,UAAM,eAAe,oBAAI,IAAoB;AAC7C,eAAW,OAAO,KAAK,gBAAgB;AACnC,YAAM,UAAU,aAAa,IAAI,IAAI,MAAM,KAAK;AAChD,mBAAa,IAAI,IAAI,QAAQ,UAAU,CAAC;AAAA,IAC5C;AACA,UAAM,gBAAgB,CAAC,GAAG,aAAa,QAAQ,CAAC,EAC3C,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EACvC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,GAAG,MAAM,IAAI,KAAK,EAAE,EAC7C,KAAK,IAAI;AAEd,UAAM,KAAK,4BAA4B,KAAK,eAAe,MAAM,OAAO,aAAa,GAAG;AACxF,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,wDAAwD;AACnE,UAAM,KAAK,uDAAuD;AAElE,UAAM,cAAc,KAAK,eAAe,MAAM,GAAG,mBAAmB;AACpE,eAAW,OAAO,aAAa;AAC3B,YAAM,KAAK,KAAK,IAAI,EAAE,MAAM,IAAI,UAAU,MAAM,IAAI,MAAM,MAAM,IAAI,UAAU,GAAG,MAAM,IAAI,SAAS,GAAG,MAAM,eAAe,IAAI,cAAc,CAAC,IAAI;AAAA,IACvJ;AAEA,QAAI,KAAK,eAAe,SAAS,YAAY,QAAQ;AACjD,YAAM,KAAK,wCAAwC,KAAK,eAAe,SAAS,YAAY,MAAM,UAAU;AAAA,IAChH;AAEA,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,qIAAqI;AAAA,EACpJ,OAAO;AACH,UAAM,KAAK,6DAA6D;AACxE,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,4HAA4H;AAAA,EAC3I;AACA,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,yBAAyB;AACpC,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,uCAAuC;AAClD,QAAM,KAAK,sCAAsC;AACjD,QAAM,KAAK,gMAA2L;AACtM,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,iBAAiB;AAC5B,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,oBAAoB;AAC/B,QAAM,KAAK,YAAY,KAAK,SAAS,MAAM,EAAE;AAC7C,QAAM,KAAK,eAAe,KAAK,cAAc,MAAM,EAAE;AACrD,QAAM,KAAK,cAAc,KAAK,aAAa,MAAM,EAAE;AACnD,QAAM,KAAK,EAAE;AAEb,MAAI,KAAK,SAAS,SAAS,GAAG;AAC1B,UAAM,KAAK,eAAe;AAC1B,mBAAe,OAAO,KAAK,QAAQ;AACnC,UAAM,KAAK,EAAE;AAAA,EACjB;AACA,MAAI,KAAK,cAAc,SAAS,GAAG;AAC/B,UAAM,KAAK,oBAAoB;AAC/B,mBAAe,OAAO,KAAK,aAAa;AACxC,UAAM,KAAK,EAAE;AAAA,EACjB;AACA,MAAI,KAAK,aAAa,SAAS,GAAG;AAC9B,UAAM,KAAK,mBAAmB;AAC9B,mBAAe,OAAO,KAAK,YAAY;AACvC,UAAM,KAAK,EAAE;AAAA,EACjB;AACA,QAAM,KAAK,0JAAqJ;AAChK,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,0BAA0B;AACrC,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,yGAAyG;AACpH,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,6BAA6B;AACxC,QAAM,KAAK,EAAE;AACb,MAAI,KAAK,WAAW,SAAS,GAAG;AAC5B,UAAM,KAAK,qDAAqD;AAChE,UAAM,KAAK,oDAAoD;AAC/D,eAAWA,UAAS,KAAK,YAAY;AACjC,YAAM,KAAK,KAAKA,OAAM,EAAE,OAAOA,OAAM,QAAQ,MAAMA,OAAM,KAAK,MAAMA,OAAM,MAAM,oBAAoB;AAAA,IACxG;AACA,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,gRAAgR;AAAA,EAC/R,OAAO;AACH,UAAM,KAAK,mBAAmB;AAAA,EAClC;AACA,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,mBAAmB;AAC9B,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,mBAAmB;AAC9B,QAAM,KAAK,mBAAmB;AAC9B,MAAI,KAAK,SAAS,SAAS,GAAG;AAC1B,eAAW,KAAK,KAAK,UAAU;AAC3B,YAAM,KAAK,KAAK,EAAE,GAAG,MAAM,EAAE,OAAO,IAAI;AAAA,IAC5C;AAAA,EACJ;AACA,QAAM,KAAK,4GAA4G;AACvH,QAAM,KAAK,EAAE;AAGb,QAAM,KAAK,4BAA4B;AACvC,QAAM,KAAK,EAAE;AACb,QAAM,KAAK,+KAA0K;AACrL,QAAM,KAAK,EAAE;AAEb,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEA,eAAe,eAAe,KAA8B;AACxD,QAAM,gBAAgB,oBAAoB,GAAG;AAC7C,QAAM,SAASN,KAAI,OAAO,CAAC,aAAa,gBAAgB,MAAM,GAAG,GAAG,EAAE,OAAO;AAC7E,QAAM,cAAc,eAAe,GAAG;AACtC,QAAMO,SAAO,oBAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAIjD,QAAM,cAAc,WAAW;AAC/B,QAAM,YAAY,cACZP,KAAI,OAAO,CAAC,OAAO,wBAAwB,eAAe,WAAW,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC,KAAK,YACnG,UAAU,aAAa;AAC7B,QAAM,QAAQ,cAAc,GAAG,SAAS,WAAW,UAAU,aAAa;AAG1E,QAAM,YAAYA,KAAI,OAAO,CAAC,OAAO,OAAO,WAAW,GAAG,GAAG,EAAE;AAC/D,QAAM,cAAc,YAAY,UAAU,MAAM,IAAI,EAAE,OAAO,OAAO,EAAE,SAAS;AAC/E,QAAM,WAAWA,KAAI,OAAO,CAAC,QAAQ,OAAO,eAAe,iBAAiB,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO;AAClH,QAAM,gBAAgBA,KAAI,OAAO,CAAC,QAAQ,OAAO,eAAe,iBAAiB,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO;AACvH,QAAM,eAAeA,KAAI,OAAO,CAAC,QAAQ,OAAO,eAAe,iBAAiB,GAAG,GAAG,EAAE,IAAI,MAAM,IAAI,EAAE,OAAO,OAAO;AAEtH,QAAM,oBAAoBA,KAAI,OAAO,CAAC,OAAO,OAAO,aAAa,cAAc,GAAG,GAAG,EAAE,IAClF,MAAM,IAAI,EACV,KAAK,OAAO;AACjB,QAAM,iBAAiB,oBACjB,OAAO,iBAAiB,IAAI,MAC5B,KAAK,IAAI,IAAK,KAAK,KAAK,KAAK;AAGnC,QAAM,eAAe,oBAAoB,WAAW,GAAG;AACvD,QAAM,aAAa,kBAAkB,GAAG;AAGxC,QAAM,iBAAiB,sBAAsB,KAAK,cAAc;AAGhE,QAAM,WAAW,gBAAgB,GAAG;AAGpC,QAAM,WAAW,cAAc;AAAA,IAC3B,MAAAO;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AAGD,QAAM,aAAa,cAAAH,QAAK,KAAK,KAAK,SAAS,SAAS;AACpD,QAAM,kBAAAC,QAAG,UAAU,UAAU;AAC7B,QAAM,WAAW,GAAGE,KAAI,IAAI,WAAW;AACvC,QAAM,WAAW,cAAAH,QAAK,KAAK,YAAY,QAAQ;AAC/C,QAAM,kBAAAC,QAAG,UAAU,UAAU,UAAU,MAAM;AAE7C,SAAO;AACX;AAEA,eAAe,WAAW,KAAa,QAAgC;AACnE,QAAM,aAAa,cAAAD,QAAK,KAAK,KAAK,SAAS,SAAS;AACpD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAG;AAClC,YAAQ,MAAM,cAAM,IAAI,0CAA0C,CAAC;AACnE,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,MAAI;AACJ,MAAI,QAAQ;AAER,QAAI,MAAM,kBAAAA,QAAG,WAAW,MAAM,GAAG;AAC7B,iBAAW;AAAA,IACf,OAAO;AACH,YAAM,YAAY,cAAAD,QAAK,KAAK,YAAY,OAAO,SAAS,KAAK,IAAI,SAAS,GAAG,MAAM,KAAK;AACxF,UAAI,MAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG;AAChC,mBAAW;AAAA,MACf,OAAO;AAEH,cAAM,SAAS,MAAM,kBAAAA,QAAG,QAAQ,UAAU,GAAG,OAAO,OAAK,EAAE,SAAS,KAAK,KAAK,EAAE,SAAS,MAAM,CAAC;AAChG,YAAI,MAAM,WAAW,GAAG;AACpB,kBAAQ,MAAM,cAAM,IAAI;AAAA,wBAA2B,MAAM;AAAA,CAAK,CAAC;AAC/D,kBAAQ,KAAK,CAAC;AAAA,QAClB;AACA,mBAAW,cAAAD,QAAK,KAAK,YAAY,MAAM,MAAM,SAAS,CAAC,CAAC;AAAA,MAC5D;AAAA,IACJ;AAAA,EACJ,OAAO;AAEH,UAAM,SAAS,MAAM,kBAAAC,QAAG,QAAQ,UAAU,GAAG,OAAO,OAAK,EAAE,SAAS,KAAK,CAAC,EAAE,KAAK;AACjF,QAAI,MAAM,WAAW,GAAG;AACpB,cAAQ,MAAM,cAAM,IAAI,wBAAwB,CAAC;AACjD,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,eAAW,cAAAD,QAAK,KAAK,YAAY,MAAM,MAAM,SAAS,CAAC,CAAC;AAAA,EAC5D;AAEA,QAAM,UAAU,MAAM,kBAAAC,QAAG,SAAS,UAAU,MAAM;AAClD,QAAM,MAAM,cAAAD,QAAK,SAAS,KAAK,QAAQ;AACvC,UAAQ,IAAI,cAAM,IAAI;AAAA,IAAO,GAAG;AAAA,CAAI,CAAC;AACrC,UAAQ,IAAI,OAAO;AACvB;AAEA,eAAe,YAAY,KAA4B;AACnD,QAAM,aAAa,cAAAA,QAAK,KAAK,KAAK,SAAS,SAAS;AACpD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAG;AAClC,YAAQ,IAAI,cAAM,IAAI,8CAA8C,CAAC;AACrE;AAAA,EACJ;AAEA,QAAM,SAAS,MAAM,kBAAAA,QAAG,QAAQ,UAAU,GAAG,OAAO,OAAK,EAAE,SAAS,KAAK,CAAC,EAAE,KAAK;AACjF,MAAI,MAAM,WAAW,GAAG;AACpB,YAAQ,IAAI,cAAM,IAAI,wBAAwB,CAAC;AAC/C;AAAA,EACJ;AAEA,UAAQ,IAAI,EAAE,KAAK;AAAA,qBAAwB,MAAM,MAAM;AAAA,CAAK,CAAC;AAC7D,aAAWJ,SAAQ,OAAO;AACtB,UAAM,WAAW,cAAAG,QAAK,KAAK,YAAYH,KAAI;AAC3C,UAAM,UAAU,MAAM,kBAAAI,QAAG,SAAS,UAAU,MAAM;AAGlD,UAAM,UAAU,QAAQ,MAAM,uBAAuB;AACrD,QAAI,UAAU;AACd,QAAI,SAAS;AACT,YAAM,KAAK,QAAQ,CAAC;AACpB,YAAM,UAAU,GAAG,MAAM,kBAAkB,IAAI,CAAC,KAAK;AACrD,YAAM,SAAS,GAAG,MAAM,wBAAwB,IAAI,CAAC,KAAK;AAC1D,YAAM,QAAQ,GAAG,MAAM,uBAAuB,IAAI,CAAC,KAAK;AACxD,YAAM,aAAa,GAAG,MAAM,gCAAgC,IAAI,CAAC,KAAK;AACtE,gBAAU,cAAM,IAAI,YAAY,OAAO,WAAW,MAAM,UAAU,KAAK,gBAAgB,UAAU,EAAE;AAAA,IACvG;AAEA,YAAQ,IAAI,KAAK,cAAM,MAAMJ,KAAI,CAAC,GAAG,OAAO,EAAE;AAAA,EAClD;AACA,UAAQ,IAAI,EAAE;AAClB;AAEA,eAAe,YAAY,KAAa,GAAW,GAA0B;AACzE,QAAM,aAAa,cAAAG,QAAK,KAAK,KAAK,SAAS,SAAS;AAEpD,QAAMI,WAAU,OAAO,QAAiC;AACpD,QAAI,MAAM,kBAAAH,QAAG,WAAW,GAAG,EAAG,QAAO;AACrC,UAAM,YAAY,cAAAD,QAAK,KAAK,YAAY,IAAI,SAAS,KAAK,IAAI,MAAM,GAAG,GAAG,KAAK;AAC/E,QAAI,MAAM,kBAAAC,QAAG,WAAW,SAAS,EAAG,QAAO;AAC3C,UAAM,SAAS,MAAM,kBAAAA,QAAG,QAAQ,UAAU,GAAG,OAAO,OAAK,EAAE,SAAS,KAAK,KAAK,EAAE,SAAS,GAAG,CAAC;AAC7F,QAAI,MAAM,SAAS,EAAG,QAAO,cAAAD,QAAK,KAAK,YAAY,MAAM,MAAM,SAAS,CAAC,CAAC;AAC1E,YAAQ,MAAM,cAAM,IAAI,yBAAyB,GAAG,GAAG,CAAC;AACxD,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,QAAM,QAAQ,MAAMI,SAAQ,CAAC;AAC7B,QAAM,QAAQ,MAAMA,SAAQ,CAAC;AAE7B,QAAM,SAASR,KAAI,QAAQ,CAAC,eAAe,kBAAkB,OAAO,KAAK,GAAG,GAAG;AAC/E,MAAI,CAAC,OAAO,KAAK;AACb,YAAQ,IAAI,cAAM,IAAI,6BAA6B,CAAC;AACpD;AAAA,EACJ;AACA,UAAQ,IAAI,OAAO,GAAG;AAC1B;AAEO,SAAS,sBAA+B;AAC3C,QAAM,MAAM,IAAI,QAAQ,QAAQ,EAC3B,YAAY,4DAAuD;AAExE,MAAI,QAAQ,UAAU,EACjB,YAAY,uEAAuE,EACnF,OAAO,YAAY;AAChB,UAAM,MAAM,QAAQ,IAAI;AACxB,YAAQ,IAAI,cAAM,IAAI,gCAAgC,CAAC;AACvD,UAAM,WAAW,MAAM,eAAe,GAAG;AACzC,UAAM,MAAM,cAAAI,QAAK,SAAS,KAAK,QAAQ;AACvC,YAAQ,IAAI,EAAE,QAAQ;AAAA,eAAkB,GAAG,EAAE,CAAC;AAC9C,YAAQ,IAAI,cAAM,IAAI,qEAAqE,CAAC;AAAA,EAChG,CAAC;AAEL,MAAI,QAAQ,eAAe,EACtB,YAAY,oCAAoC,EAChD,OAAO,OAAO,WAAoB;AAC/B,UAAM,WAAW,QAAQ,IAAI,GAAG,MAAM;AAAA,EAC1C,CAAC;AAEL,MAAI,QAAQ,MAAM,EACb,YAAY,0BAA0B,EACtC,OAAO,YAAY;AAChB,UAAM,YAAY,QAAQ,IAAI,CAAC;AAAA,EACnC,CAAC;AAEL,MAAI,QAAQ,cAAc,EACrB,YAAY,qBAAqB,EACjC,OAAO,OAAO,GAAW,MAAc;AACpC,UAAM,YAAY,QAAQ,IAAI,GAAG,GAAG,CAAC;AAAA,EACzC,CAAC;AAGL,MAAI,OAAO,MAAM,IAAI,KAAK,CAAC;AAE3B,SAAO;AACX;;;ACllBA,IAAAK,oBAAe;AACf,IAAAC,mBAAe;AACf,IAAAC,qBAAiB;AACjB;;;ACJA,IAAAC,uBAA2B;AAC3B,IAAAC,qBAAiB;AAsBjB,SAAS,WAAuC,SAA4B;AAC1E,SAAO,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AACjE;AAEA,eAAe,yBACb,aACA,kBAC4B;AAC5B,QAAM,iBAAiB,oBAAI,IAAyD;AAEpF,aAAW,QAAQ,aAAa;AAC9B,UAAM,gBAAgB,MAAM,kBAAkB,MAAM,UAAU;AAC9D,UAAM,YAAY,MAAM,kBAAkB,MAAM,MAAM;AACtD,eAAW,QAAQ,CAAC,GAAG,eAAe,GAAG,SAAS,GAAG;AACnD,UAAI,CAAC,eAAe,IAAI,KAAK,IAAI,GAAG;AAClC,uBAAe,IAAI,KAAK,MAAM,EAAE,MAAM,KAAK,MAAM,QAAQ,KAAK,OAAO,CAAC;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAEA,QAAM,gBAAmC,CAAC;AAC1C,aAAW,YAAY,kBAAkB;AACvC,UAAM,OAAO,eAAe,IAAI,QAAQ;AACxC,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,iBAAiB,QAAQ,wDAAwD;AAAA,IACnG;AACA,kBAAc,KAAK,GAAG,KAAK,MAAM;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,SAAS,0BAA0B,SAAwB,QAA0C;AACnG,QAAM,kBAAkB,oBAAI,IAAoB;AAEhD,aAAW,SAAS,WAAW,MAAM,GAAG;AACtC,UAAM,YAAY,gBAAgB,IAAI,MAAM,WAAW;AACvD,QAAI,WAAW;AACb,YAAM,IAAI;AAAA,QACR,yBAAyB,MAAM,WAAW,kBAAkB,OAAO,aAAa,SAAS,gBAAgB,MAAM,IAAI;AAAA,MACrH;AAAA,IACF;AAEA,oBAAgB,IAAI,MAAM,aAAa,MAAM,IAAI;AAAA,EACnD;AACF;AAEA,eAAsB,oBACpB,SACA,YACA,eACA,uBACgC;AAChC,QAAM,QAAQ,iBAAiB,MAAM,gBAAgB,UAAU;AAC/D,QAAM,eAAe,MAAM,aAAa,OAAO;AAE/C,QAAM,gBAAgB,MAAM,sBAAsB,UAAU;AAC5D,QAAM,gBAAgB,wBAAwB,CAAC,YAAY,GAAG,qBAAqB,IAAI,CAAC,UAAU;AAClG,QAAM,oBAAoB,MAAM,yBAAyB,eAAe,YAAY;AACpF,QAAM,YAAY,WAAW,CAAC,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAErE,4BAA0B,SAAS,SAAS;AAE5C,SAAO;AAAA,IACL;AAAA,IACA,cAAc,CAAC,GAAG,YAAY;AAAA,IAC9B,QAAQ;AAAA,EACV;AACF;;;ADnFA,SAAS,uBAA+B;AACtC,SAAO,mBAAAC,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,SAAS,QAAQ,oBAAoB;AACtE;AAEA,eAAe,gBAAgB,OAA+C;AAC5E,QAAM,UAAU,qBAAqB;AACrC,QAAM,kBAAAC,QAAG,UAAU,mBAAAF,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,kBAAAE,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU,EAAE,YAAW,oBAAI,KAAK,GAAE,YAAY,GAAG,GAAG,MAAM,CAAC,CAAC;AAAA,CAAI;AACvG;AAqCA,IAAM,oBAAoB;AAE1B,SAAS,aAAa,MAA6C,eAAsB,UAAiB;AACxG,MAAI,KAAK,UAAU,KAAK,OAAO;AAC7B,UAAM,IAAI,MAAM,+CAA+C;AAAA,EACjE;AAEA,MAAI,KAAK,OAAQ,QAAO;AACxB,MAAI,KAAK,MAAO,QAAO;AACvB,SAAO;AACT;AAEA,eAAe,iBAAiB,OAA+B;AAC7D,MAAI,UAAU,UAAU;AACtB,WAAO,iBAAAD,QAAG,QAAQ;AAAA,EACpB;AAEA,SAAO,gBAAgB;AACzB;AAEA,SAAS,sBAAsB,MAA2D;AACxF,MAAI,KAAK,UAAU,CAAC,KAAK,IAAI;AAC3B,WAAO,CAAC,QAAQ;AAAA,EAClB;AAEA,MAAI,KAAK,MAAM,CAAC,KAAK,QAAQ;AAC3B,WAAO,CAAC,IAAI;AAAA,EACd;AAEA,SAAO,CAAC,GAAG,eAAe;AAC5B;AAEA,eAAe,mBAAmB,YAAoB;AACpD,QAAM,YAAY,qBAAqB,UAAU;AACjD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,SAAS,GAAG;AACnC,WAAO,yBAAyB;AAAA,EAClC;AAEA,SAAO,gBAAgB,UAAU;AACnC;AAEA,eAAe,uBACb,YACA,OAEI,CAAC,GAC0B;AAC/B,QAAM,mBAAmB,IAAI,IAAI,KAAK,oBAAoB,CAAC,CAAC;AAC5D,QAAM,aAAa,MAAM,yBAAyB,UAAU;AAC5D,QAAM,qBAAqB,WAAW,OAAO,eAAa,CAAC,iBAAiB,IAAI,UAAU,IAAI,CAAC;AAE/F,MAAI,mBAAmB,SAAS,GAAG;AACjC,UAAM,UAAU,mBAAmB,IAAI,eAAa,GAAG,UAAU,IAAI,KAAK,UAAU,OAAO,EAAE,EAAE,KAAK,IAAI;AACxG,UAAM,IAAI,MAAM,6BAA6B,OAAO,EAAE;AAAA,EACxD;AAEA,SAAO,WAAW,OAAO,eAAa,iBAAiB,IAAI,UAAU,IAAI,CAAC;AAC5E;AAEA,eAAe,iBACb,YACA,UACA,OAMC;AACD,QAAM,mBAAmB,kBAAkB,iBAAAD,QAAG,QAAQ,CAAC;AACvD,QAAM,eAAe,UAAU,WAAW,eAAe;AACzD,QAAM,CAAC,aAAa,YAAY,qBAAqB,oBAAoB,qBAAqB,oBAAoB,iBAAiB,cAAc,IAAI,MAAM,QAAQ,IAAI;AAAA,IACrK,kBAAAC,QAAG,WAAW,qBAAqB,gBAAgB,CAAC,EAAE,KAAK,YAAU,SAAS,gBAAgB,gBAAgB,IAAI,yBAAyB,CAAC;AAAA,IAC5I,eAAe,mBAAmB,UAAU,IAAI;AAAA,IAChD,sBAAsB,gBAAgB;AAAA,IACtC,eAAe,sBAAsB,UAAU,IAAI;AAAA,IACnD,kBAAkB,kBAAkB,UAAU;AAAA,IAC9C,eAAe,kBAAkB,YAAY,UAAU,IAAI;AAAA,IAC3D,kBAAkB,gBAAgB;AAAA,IAClC,eAAe,kBAAkB,UAAU,IAAI;AAAA,EACjD,CAAC;AAED,QAAM,iBAAiB,gBAAgB,aACnC,aAAa,aAAa,UAAU,IACpC;AAEJ,QAAM,gBAAgB,gBAAgB,qBAClC,CAAC,GAAG,kBAAkB,IACtB;AACJ,QAAM,gBAAgB,gBAAgB,qBAClC,CAAC,GAAG,qBAAqB,GAAG,kBAAkB,IAC9C;AACJ,QAAM,YAAY,gBAAgB,iBAC9B,CAAC,GAAG,iBAAiB,GAAG,cAAc,IACtC;AAEJ,QAAM,cAAc,oBAAI,IAA8I;AACtK,aAAW,QAAQ,qBAAqB;AACtC,gBAAY,IAAI,KAAK,MAAM,EAAE,GAAG,MAAM,MAAM,YAAqB,QAAQ,SAAkB,CAAC;AAAA,EAC9F;AACA,aAAW,QAAQ,iBAAiB;AAClC,gBAAY,IAAI,KAAK,MAAM,EAAE,GAAG,MAAM,MAAM,QAAiB,QAAQ,SAAkB,CAAC;AAAA,EAC1F;AACA,MAAI,cAAc;AAChB,eAAW,QAAQ,sBAAsB,CAAC,GAAG;AAC3C,UAAI,YAAY,IAAI,KAAK,IAAI,GAAG;AAC9B,cAAM,WAAW,YAAY,IAAI,KAAK,IAAI;AAC1C,iBAAS,SAAS;AAAA,MACpB,OAAO;AACL,oBAAY,IAAI,KAAK,MAAM,EAAE,GAAG,MAAM,MAAM,YAAqB,QAAQ,QAAiB,CAAC;AAAA,MAC7F;AAAA,IACF;AACA,eAAW,QAAQ,kBAAkB,CAAC,GAAG;AACvC,UAAI,YAAY,IAAI,KAAK,IAAI,GAAG;AAC9B,cAAM,WAAW,YAAY,IAAI,KAAK,IAAI;AAC1C,iBAAS,SAAS;AAAA,MACpB,OAAO;AACL,oBAAY,IAAI,KAAK,MAAM,EAAE,GAAG,MAAM,MAAM,QAAiB,QAAQ,QAAiB,CAAC;AAAA,MACzF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEtF,QAAM,gBAAiC,CAAC;AACxC,aAAW,WAAW,UAAU;AAC9B,UAAM,WAAW,MAAM;AAAA,MACrB;AAAA,MACA,eAAe,aAAa;AAAA,MAC5B;AAAA,MACA,eAAe,CAAC,gBAAgB,IAAI;AAAA,IACtC;AACA,kBAAc,KAAK;AAAA,MACjB;AAAA,MACA,cAAc,SAAS;AAAA,MACvB,cAAc,SAAS,OAAO,IAAI,WAAS,MAAM,IAAI;AAAA,IACvD,CAAC;AAAA,EACH;AAEA,QAAM,QAAyB,SAAS,IAAI,UAAQ;AAClD,UAAM,gBAAgB,YAAY;AAClC,UAAM,eAAe,YAAY;AACjC,UAAM,YAA6B,CAAC;AAEpC,eAAW,WAAW,iBAAiB;AACrC,YAAM,WAAW,cAAc,OAAO,EAAE,SAAS,KAAK,IAAI;AAC1D,YAAM,UAAU,eAAe,OAAO,EAAE,SAAS,KAAK,IAAI;AAE1D,UAAI,YAAY,SAAS;AACvB,kBAAU,KAAK,OAAO;AAAA,MACxB;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,QAAQ,KAAK,OAAO,IAAI,WAAS,MAAM,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,MAC9E;AAAA,MACA,QAAQ,KAAK;AAAA,IACf;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,eAAe,cAAc,IAAI,WAAS,MAAM,IAAI;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,aAAa,aAAmE,YAAwH;AAC/M,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,QAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,QAAQ,GAAG,WAAW,aAAa,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,MAC/H,IAAI,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,YAAY,aAAa,IAAI,GAAG,WAAW,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,IACrH;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,YAAoB,MAMrC;AACP,QAAM,aAAa,KAAK,UAAU,WAAW,WAAW;AACxD,UAAQ,IAAI,cAAM,KAAK;AAAA,qBAAwB,KAAK,KAAK,EAAE,CAAC;AAC5D,UAAQ,IAAI,cAAM,KAAK,YAAY,UAAU,EAAE,CAAC;AAChD,UAAQ,IAAI,cAAM,KAAK,WAAW,UAAU,EAAE,CAAC;AAE/C,UAAQ,IAAI;AAAA,IAAO,cAAM,KAAK,gBAAgB,CAAC,KAAK,KAAK,cAAc,MAAM,GAAG;AAChF,MAAI,KAAK,cAAc,WAAW,GAAG;AACnC,YAAQ,IAAI,cAAM,OAAO,UAAU,CAAC;AAAA,EACtC,OAAO;AACL,eAAW,aAAa,KAAK,eAAe;AAC1C,cAAQ,IAAI,OAAO,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAEA,UAAQ,IAAI;AAAA,IAAO,cAAM,KAAK,OAAO,CAAC,KAAK,KAAK,MAAM,MAAM,GAAG;AAC/D,MAAI,KAAK,MAAM,WAAW,GAAG;AAC3B,YAAQ,IAAI,cAAM,OAAO,UAAU,CAAC;AAAA,EACtC,OAAO;AACL,eAAW,QAAQ,KAAK,OAAO;AAC7B,YAAM,cAAc,KAAK,UAAU,SAAS,IACxC,KAAK,UAAU,KAAK,IAAI,IACxB;AACJ,YAAM,cAAc,KAAK,UAAU,WAAW,KAAK,WAAW,WAAW,cACrE,KAAK,UAAU,WAAW,KAAK,WAAW,UAAU,aACpD,KAAK,UAAU,WAAW,KAAK,WAAW,SAAS,oBACnD;AACJ,cAAQ,IAAI,OAAO,cAAM,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,cAAc,WAAW,GAAG,WAAW,EAAE;AAAA,IACjG;AAAA,EACF;AAEA,UAAQ,IAAI;AAAA,IAAO,cAAM,KAAK,qBAAqB,CAAC,EAAE;AACtD,aAAW,WAAW,KAAK,eAAe;AACxC,YAAQ,IAAI,OAAO,QAAQ,OAAO,KAAK,QAAQ,aAAa,MAAM,kCAAkC,QAAQ,aAAa,MAAM,EAAE;AAAA,EACnI;AAEA,MAAI,KAAK,SAAS,SAAS,GAAG;AAC5B,YAAQ,IAAI;AAAA,IAAO,cAAM,KAAK,cAAM,OAAO,UAAU,CAAC,CAAC,KAAK,KAAK,SAAS,MAAM,GAAG;AACnF,eAAW,WAAW,KAAK,UAAU;AACnC,cAAQ,IAAI,OAAO,cAAM,OAAO,OAAO,CAAC,EAAE;AAAA,IAC5C;AAAA,EACF;AAEA,UAAQ,IAAI,EAAE;AAChB;AAEA,SAAS,oBAAoB,MAAoB;AAC/C,MAAI,CAAC,kBAAkB,KAAK,IAAI,GAAG;AACjC,UAAM,IAAI,MAAM,sBAAsB,IAAI,kDAAkD;AAAA,EAC9F;AACF;AAEA,eAAe,0BAA0B,YAAuC;AAC9E,QAAM,CAAC,eAAe,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,IACnD,kBAAkB,YAAY,UAAU;AAAA,IACxC,kBAAkB,UAAU;AAAA,EAC9B,CAAC;AAED,QAAM,QAAQ,CAAC,GAAG,eAAe,GAAG,SAAS,EAAE,IAAI,UAAQ,KAAK,IAAI;AACpE,SAAO,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC9D;AAEA,eAAe,sBACb,YACA,SACA,QACmB;AACnB,QAAM,YAAY,MAAM,0BAA0B,UAAU;AAE5D,MAAI,YAAY,OAAO;AACrB,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,SAAS,OAAO,GAAG;AAC/B,WAAO,CAAC,OAAO;AAAA,EACjB;AAEA,QAAM,qBAAqB,MAAM,sBAAsB,UAAU,GAAG,IAAI,WAAS,MAAM,IAAI;AAC3F,MAAI,kBAAkB,SAAS,OAAO,KAAK,WAAW,WAAW;AAC/D,UAAM,IAAI,MAAM,mBAAmB,OAAO,uCAAuC;AAAA,EACnF;AAEA,QAAM,IAAI,MAAM,SAAS,OAAO,oCAAoC;AACtE;AAEA,eAAe,YAAY,MAMxB;AACD,QAAM,EAAE,YAAY,QAAQ,SAAS,UAAU,MAAM,IAAI;AAGzD,MAAI,WAAW,aAAa,UAAU,SAAS;AAC7C,UAAM,mBAAmB,kBAAkB,iBAAAD,QAAG,QAAQ,CAAC;AACvD,UAAM,cAAc,MAAM,mBAAmB,gBAAgB;AAC7D,UAAM,oBAAoB,YAAY,aAAa,OAAO,SAAS,OAAO,KACrE,YAAY,aAAa,GAAG,SAAS,OAAO;AAEjD,QAAI,mBAAmB;AACrB,YAAM,IAAI;AAAA,QACR,SAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,iBAAiB,MAAM,sBAAsB,YAAY,SAAS,MAAM;AAC9E,QAAM,cAAc,MAAM,gBAAgB,UAAU;AAEpD,aAAW,WAAW,UAAU;AAC9B,UAAM,UAAU,IAAI,IAAI,YAAY,aAAa,OAAO,CAAC;AAEzD,QAAI,WAAW,UAAU;AACvB,iBAAW,YAAY,gBAAgB;AACrC,gBAAQ,IAAI,QAAQ;AAAA,MACtB;AAAA,IACF,WAAW,YAAY,OAAO;AAC5B,cAAQ,MAAM;AAAA,IAChB,OAAO;AACL,iBAAW,YAAY,gBAAgB;AACrC,gBAAQ,OAAO,QAAQ;AAAA,MACzB;AAAA,IACF;AAEA,UAAM,uBAAuB,YAAY,SAAS,CAAC,GAAG,OAAO,CAAC;AAAA,EAChE;AAEA,MAAI,UAAU,SAAS;AACrB,UAAM,0BAA0B,MAAM,gBAAgB,CAAC;AAAA,EACzD;AAEA,QAAM,aAAa,MAAM,gBAAgB,UAAU;AAEnD,aAAW,WAAW,UAAU;AAC9B,UAAM,gBAAgB;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA,QAAQ,YAAY,aAAa,OAAO;AAAA,MACxC,OAAO,WAAW,aAAa,OAAO;AAAA,IACxC,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA,WAAW;AAAA,IACX,eAAe;AAAA,IACf;AAAA,IACA,OAAO;AAAA,EACT;AACF;AAEA,eAAe,eAAe,YAAoB,UAA6C;AAC7F,sBAAoB,QAAQ;AAC5B,QAAM,eAAe,MAAM,0BAA0B,UAAU;AAC/D,MAAI,aAAa,SAAS,QAAQ,EAAG,OAAM,IAAI,MAAM,SAAS,QAAQ,mBAAmB;AAEzF,QAAM,WAAW,oBAAoB,YAAY,QAAQ;AACzD,MAAI,MAAM,kBAAAC,QAAG,WAAW,QAAQ,EAAG,OAAM,IAAI,MAAM,6BAA6B,QAAQ,EAAE;AAC1F,QAAM,kBAAAA,QAAG,UAAU,QAAQ;AAC3B,SAAO,EAAE,MAAM,SAAS;AAC1B;AAEO,SAAS,sBAA+B;AAC7C,QAAM,SAAS,IAAI,QAAQ,QAAQ,EAChC,YAAY,8CAA8C;AAE7D,SACG,QAAQ,MAAM,EACd,YAAY,+EAA+E,EAC3F,OAAO,YAAY,0CAA0C,KAAK,EAClE,OAAO,WAAW,oEAAoE,KAAK,EAC3F,OAAO,YAAY,4BAA4B,KAAK,EACpD,OAAO,QAAQ,wBAAwB,KAAK,EAC5C,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,SAAgG;AAC7G,QAAI;AACF,YAAM,QAAQ,aAAa,MAAM,QAAQ;AACzC,YAAM,YAAY,MAAM,iBAAiB,KAAK;AAC9C,YAAM,aAAa,kBAAkB,SAAS;AAC9C,YAAM,WAAW,sBAAsB,IAAI;AAE3C,UAAI,CAAC,MAAM,kBAAAA,QAAG,WAAW,UAAU,GAAG;AACpC,cAAM,QAAQ;AAAA,UACZ;AAAA,UACA;AAAA,UACA;AAAA,UACA,eAAe,CAAC;AAAA,UAChB,OAAO,CAAC;AAAA,UACR,eAAe,CAAC;AAAA,QAClB;AAEA,YAAI,KAAK,MAAM;AACb,kBAAQ,IAAI,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAC1C;AAAA,QACF;AAEA,gBAAQ,IAAI,cAAM,KAAK;AAAA,iBAAoB,CAAC;AAC5C,gBAAQ,IAAI,cAAM,KAAK,WAAW,UAAU,EAAE,CAAC;AAC/C,gBAAQ,IAAI,cAAM,OAAO,gDAAgD,CAAC;AAC1E;AAAA,MACF;AAEA,YAAM,oBAAoB,MAAM,uBAAuB,UAAU;AACjE,YAAM,WAAW,MAAM,iBAAiB,YAAY,UAAU,KAAK;AAEnE,YAAM,WAAW;AAAA,QACf,GAAG,kBAAkB,IAAI,eAAa,UAAU,OAAO;AAAA,MACzD;AAEA,UAAI,KAAK,MAAM;AACb,gBAAQ,IAAI,KAAK,UAAU;AAAA,UACzB;AAAA,UACA;AAAA,UACA;AAAA,UACA,eAAe,SAAS;AAAA,UACxB,OAAO,SAAS;AAAA,UAChB,eAAe,SAAS;AAAA,UACxB;AAAA,QACF,GAAG,MAAM,CAAC,CAAC;AACX;AAAA,MACF;AAEA,uBAAiB,YAAY;AAAA,QAC3B,GAAG;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI;AAAA,IAAO,IAAI,IAAI,IAAI,GAAG;AAAA,CAAI,CAAC;AACnD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,eAAe,EACvB,YAAY,yCAAyC,EACrD,OAAO,YAAY,0CAA0C,KAAK,EAClE,OAAO,WAAW,4CAA4C,KAAK,EACnE,OAAO,YAAY,yBAAyB,KAAK,EACjD,OAAO,QAAQ,qBAAqB,KAAK,EACzC,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,MAAc,SAAgG;AAC3H,QAAI;AACF,YAAM,QAAQ,aAAa,MAAM,QAAQ;AACzC,YAAM,YAAY,MAAM,iBAAiB,KAAK;AAC9C,YAAM,aAAa,kBAAkB,SAAS;AAC9C,YAAM,WAAW,sBAAsB,IAAI;AAE3C,YAAM,uBAAuB,UAAU;AACvC,YAAM,SAAS,MAAM,YAAY;AAAA,QAC/B;AAAA,QACA,QAAQ;AAAA,QACR,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MACF,CAAC;AAED,UAAI,KAAK,MAAM;AACb,gBAAQ,IAAI,KAAK,UAAU;AAAA,UACzB;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACL,GAAG,MAAM,CAAC,CAAC;AACX;AAAA,MACF;AAEA,cAAQ,IAAI;AAAA,IAAO,IAAI,EAAE,YAAY,OAAO,cAAc,MAAM,aAAa,OAAO,cAAc,KAAK,IAAI,KAAK,QAAQ,EAAE;AAC1H,cAAQ,IAAI,eAAe,OAAO,SAAS,KAAK,IAAI,CAAC;AAAA,CAAI;AAAA,IAC3D,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI;AAAA,IAAO,IAAI,IAAI,IAAI,GAAG;AAAA,CAAI,CAAC;AACnD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,gBAAgB,EACxB,YAAY,0CAA0C,EACtD,OAAO,YAAY,0CAA0C,KAAK,EAClE,OAAO,WAAW,4CAA4C,KAAK,EACnE,OAAO,YAAY,yBAAyB,KAAK,EACjD,OAAO,QAAQ,qBAAqB,KAAK,EACzC,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,MAAc,SAAgG;AAC3H,QAAI;AACF,YAAM,QAAQ,aAAa,MAAM,QAAQ;AACzC,YAAM,YAAY,MAAM,iBAAiB,KAAK;AAC9C,YAAM,aAAa,kBAAkB,SAAS;AAC9C,YAAM,WAAW,sBAAsB,IAAI;AAE3C,YAAM,uBAAuB,UAAU;AACvC,YAAM,SAAS,MAAM,YAAY;AAAA,QAC/B;AAAA,QACA,QAAQ;AAAA,QACR,SAAS;AAAA,QACT;AAAA,QACA;AAAA,MACF,CAAC;AAED,UAAI,KAAK,MAAM;AACb,gBAAQ,IAAI,KAAK,UAAU;AAAA,UACzB;AAAA,UACA;AAAA,UACA,GAAG;AAAA,QACL,GAAG,MAAM,CAAC,CAAC;AACX;AAAA,MACF;AAEA,cAAQ,IAAI;AAAA,IAAO,IAAI,EAAE,aAAa,OAAO,cAAc,MAAM,aAAa,OAAO,cAAc,KAAK,IAAI,KAAK,QAAQ,EAAE;AAC3H,cAAQ,IAAI,eAAe,OAAO,SAAS,KAAK,IAAI,CAAC;AAAA,CAAI;AAAA,IAC3D,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI;AAAA,IAAO,IAAI,IAAI,IAAI,GAAG;AAAA,CAAI,CAAC;AACnD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SACG,QAAQ,oBAAoB,EAC5B,YAAY,0EAA0E,EACtF,OAAO,YAAY,0CAA0C,KAAK,EAClE,OAAO,WAAW,4CAA4C,KAAK,EACnE,OAAO,UAAU,eAAe,KAAK,EACrC,OAAO,OAAO,MAAc,SAAgE;AAC3F,QAAI;AACF,YAAM,QAAQ,aAAa,MAAM,OAAO;AACxC,YAAM,YAAY,MAAM,iBAAiB,KAAK;AAC9C,YAAM,aAAa,kBAAkB,SAAS;AAE9C,YAAM,uBAAuB,UAAU;AACvC,YAAM,UAAU,MAAM,eAAe,YAAY,IAAI;AAErD,UAAI,KAAK,MAAM;AACb,gBAAQ,IAAI,KAAK,UAAU;AAAA,UACzB;AAAA,UACA;AAAA,UACA,MAAM;AAAA,UACN,MAAM,QAAQ;AAAA,QAChB,GAAG,MAAM,CAAC,CAAC;AACX;AAAA,MACF;AAEA,cAAQ,IAAI;AAAA,IAAO,IAAI,EAAE,kBAAkB,IAAI,GAAG;AAClD,cAAQ,IAAI,KAAK,cAAM,IAAI,QAAQ,IAAI,CAAC;AAAA,CAAI;AAAA,IAC9C,SAAS,KAAK;AACZ,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,cAAQ,MAAM,cAAM,IAAI;AAAA,IAAO,IAAI,IAAI,IAAI,GAAG;AAAA,CAAI,CAAC;AACnD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAAA,EACF,CAAC;AAEH,SAAO;AACT;;;AEnlBA,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,8BAAyB;AACzB;AA2BA,IAAM,cAAc;AAEpB,SAASC,kBAAiB,MAAsE;AAC9F,MAAI,CAAC,KAAK,WAAW,OAAO,GAAG;AAC7B,WAAO,EAAE,aAAa,CAAC,GAAG,MAAM,KAAK;AAAA,EACvC;AACA,QAAM,MAAM,KAAK,QAAQ,WAAW,CAAC;AACrC,MAAI,QAAQ,IAAI;AACd,WAAO,EAAE,aAAa,CAAC,GAAG,MAAM,KAAK;AAAA,EACvC;AACA,QAAM,SAAS,KAAK,MAAM,GAAG,GAAG;AAChC,QAAM,OAAO,KAAK,MAAM,MAAM,CAAC;AAC/B,QAAM,KAA8B,CAAC;AACrC,QAAM,QAAQ,OAAO,MAAM,IAAI;AAC/B,MAAI,cAA6B;AACjC,aAAW,QAAQ,OAAO;AACxB,QAAI,eAAe,KAAK,WAAW,MAAM,GAAG;AAC1C,YAAM,MAAO,GAAG,WAAW,KAAkB,CAAC;AAC9C,UAAI,KAAK,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC;AAC7B,SAAG,WAAW,IAAI;AAClB;AAAA,IACF;AACA,kBAAc;AACd,UAAM,IAAI,gCAAgC,KAAK,IAAI;AACnD,QAAI,CAAC,EAAG;AACR,UAAM,MAAM,EAAE,CAAC;AACf,UAAM,MAAM,EAAE,CAAC;AACf,QAAI,QAAQ,IAAI;AACd,SAAG,GAAG,IAAI,CAAC;AACX,oBAAc;AAAA,IAChB,OAAO;AACL,SAAG,GAAG,IAAI;AAAA,IACZ;AAAA,EACF;AACA,SAAO,EAAE,aAAa,IAAI,KAAK;AACjC;AAEA,SAAS,mBAA2B;AAClC,MAAI,MAAM;AACV,WAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAM,YAAY,mBAAAC,QAAK,KAAK,KAAK,aAAa,qBAAqB;AACnE,QAAI,kBAAAC,QAAG,WAAW,SAAS,EAAG,QAAO;AACrC,UAAM,SAAS,mBAAAD,QAAK,QAAQ,GAAG;AAC/B,QAAI,WAAW,IAAK;AACpB,UAAM;AAAA,EACR;AACA,QAAM,IAAI,MAAM,iIAAiI;AACnJ;AAEA,SAAS,gBAAuC;AAC9C,QAAM,MAAM,QAAQ,IAAI,sBAAsB,iBAAiB;AAC/D,QAAME,OAAM,oBAAI,IAAsB;AACtC,aAAWC,SAAQ,kBAAAF,QAAG,YAAY,GAAG,GAAG;AACtC,QAAI,CAACE,MAAK,SAAS,KAAK,EAAG;AAC3B,UAAM,OAAO,kBAAAF,QAAG,aAAa,mBAAAD,QAAK,KAAK,KAAKG,KAAI,GAAG,MAAM;AACzD,UAAM,EAAE,aAAa,KAAK,IAAIJ,kBAAiB,IAAI;AACnD,UAAM,OAAO,OAAO,YAAY,QAAQI,MAAK,QAAQ,SAAS,EAAE,CAAC;AACjE,UAAMC,WAAU,OAAO,YAAY,WAAW,OAAO;AACrD,UAAM,cAAc,OAAO,YAAY,eAAe,EAAE;AACxD,UAAM,eAAe,MAAM,QAAQ,YAAY,aAAa,IACvD,YAAY,gBACb,CAAC;AACL,IAAAF,KAAI,IAAI,MAAM,EAAE,MAAM,SAAAE,UAAS,aAAa,MAAM,KAAK,QAAQ,QAAQ,EAAE,GAAG,aAAa,CAAC;AAAA,EAC5F;AACA,SAAOF;AACT;AAEA,SAAS,oBAAoB,SAAmC;AAC9D,QAAM,MAAwB,CAAC;AAC/B,cAAY,YAAY;AACxB,MAAI;AACJ,UAAQ,IAAI,YAAY,KAAK,OAAO,OAAO,MAAM;AAC/C,UAAM,OAAO,EAAE,CAAC;AAChB,UAAME,WAAU,EAAE,CAAC;AACnB,UAAM,OAAO,EAAE,CAAC;AAChB,UAAM,YAAY,EAAE;AACpB,UAAM,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE;AAC/B,UAAM,YAAY,YAAY,qBAAqB,IAAI,YAAYA,QAAO;AAAA,EAAS;AACnF,UAAM,UAAU,YAAY,KAAK;AACjC,QAAI,KAAK,EAAE,MAAM,SAAAA,UAAS,MAAM,WAAW,SAAS,WAAW,QAAQ,CAAC;AAAA,EAC1E;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,MAAgB,KAA0B;AACpE,MAAI,MAAM,KAAK;AACf,aAAW,KAAK,KAAK,cAAc;AACjC,UAAM,MAAO,IAA0C,CAAC,KAAK;AAC7D,UAAM,IAAI,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG;AAAA,EACtC;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,KAA0B;AACnD,MAAI,WAAW,mBAAAJ,QAAK,SAAS,GAAG;AAChC,MAAI;AACF,UAAM,UAAM,sCAAS,iCAAiC,EAAE,KAAK,UAAU,QAAQ,OAAO,CAAC,UAAU,QAAQ,QAAQ,EAAE,CAAC,EAAE,KAAK;AAC3H,QAAI,IAAK,YAAW,mBAAAA,QAAK,SAAS,GAAG;AAAA,EACvC,QAAQ;AAAA,EAAqB;AAC7B,MAAI,YAAY;AAChB,QAAM,WAAW,mBAAAA,QAAK,KAAK,KAAK,aAAa,WAAW;AACxD,MAAI,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAC3B,QAAI;AACF,YAAMI,QAAO,KAAK,MAAM,kBAAAJ,QAAG,aAAa,UAAU,MAAM,CAAC;AACzD,YAAM,IAAII,MAAK,SAAS,CAAC;AACzB,YAAM,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB;AAC1D,YAAM,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,sBAAsB;AACnE,YAAM,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc;AAClE,kBAAY,GAAG,OAAO,aAAa,IAAI,mBAAmB,KAAK;AAAA,IACjE,QAAQ;AAAA,IAAe;AAAA,EACzB;AACA,SAAO,EAAE,WAAW,UAAU,YAAY,UAAU;AACtD;AAUA,SAASC,YAAW,SAAiB,WAAkC,KAAgC;AACrG,QAAM,WAAW,oBAAoB,OAAO;AAC5C,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,MAAoB,CAAC;AAC3B,aAAW,OAAO,UAAU;AAC1B,SAAK,IAAI,IAAI,IAAI;AACjB,UAAM,OAAO,UAAU,IAAI,IAAI,IAAI;AACnC,QAAI,CAAC,MAAM;AACT,UAAI,KAAK,EAAE,MAAM,IAAI,MAAM,MAAM,oBAAoB,gBAAgB,IAAI,SAAS,SAAS,IAAI,CAAC;AAChG;AAAA,IACF;AACA,QAAI,IAAI,YAAY,KAAK,SAAS;AAChC,UAAI,KAAK;AAAA,QACP,MAAM,IAAI;AAAA,QACV,MAAM;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,kBAAkB,KAAK;AAAA,QACvB,SAAS;AAAA,MACX,CAAC;AACD;AAAA,IACF;AACA,UAAM,WAAW,mBAAmB,MAAM,GAAG;AAC7C,QAAI,IAAI,SAAS,UAAU;AACzB,UAAI,KAAK;AAAA,QACP,MAAM,IAAI;AAAA,QACV,MAAM;AAAA,QACN,gBAAgB,IAAI;AAAA,QACpB,kBAAkB,KAAK;AAAA,QACvB,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WAAW,SAAiB,WAAkC,KAA0B;AAC/F,QAAM,WAAW,oBAAoB,OAAO;AAC5C,MAAI,SAAS,WAAW,EAAG,QAAO;AAClC,MAAI,MAAM;AACV,MAAI,SAAS;AACb,aAAW,OAAO,UAAU;AAC1B,WAAO,QAAQ,MAAM,QAAQ,IAAI,SAAS;AAC1C,UAAM,OAAO,UAAU,IAAI,IAAI,IAAI;AACnC,QAAI,CAAC,MAAM;AACT,aAAO,QAAQ,MAAM,IAAI,WAAW,IAAI,OAAO;AAAA,IACjD,OAAO;AACL,YAAM,OAAO,mBAAmB,MAAM,GAAG;AACzC,aAAO,qBAAqB,KAAK,IAAI,YAAY,KAAK,OAAO;AAAA,EAAS,IAAI;AAAA,oBAAuB,KAAK,IAAI;AAAA,IAC5G;AACA,aAAS,IAAI;AAAA,EACf;AACA,SAAO,QAAQ,MAAM,MAAM;AAC3B,SAAO;AACT;AAEA,SAAS,cAAc,GAAuB;AAC5C,UAAQ,EAAE,MAAM;AAAA,IACd,KAAK;AACH,aAAO,GAAG,cAAM,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,cAAc,OAAO,EAAE,gBAAgB;AAAA,IAC3F,KAAK;AACH,aAAO,GAAG,cAAM,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,MAAM,EAAE,cAAc,gBAAgB,EAAE,gBAAgB;AAAA,IACrG,KAAK;AACH,aAAO,GAAG,cAAM,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,cAAc;AAAA,IAChE,KAAK;AACH,aAAO,GAAG,cAAM,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI;AAAA,EAC5C;AACF;AAEA,SAAS,gBAAgB,KAAqB;AAC5C,QAAM,IAAI,mBAAAN,QAAK,KAAK,KAAK,WAAW;AACpC,MAAI,CAAC,kBAAAC,QAAG,WAAW,CAAC,GAAG;AACrB,UAAM,IAAI,MAAM,0BAA0B,CAAC,EAAE;AAAA,EAC/C;AACA,SAAO;AACT;AAEO,SAAS,0BAAmC;AACjD,QAAM,MAAM,IAAI,QAAQ,aAAa,EAClC,YAAY,6DAA6D,EACzE,OAAO,WAAW,oFAAoF,EACtG,OAAO,WAAW,mDAAmD,EACrE,OAAO,sBAAsB,gEAAgE,EAC7F,OAAO,UAAU,2CAA2C,EAC5D,OAAO,oBAAoB,0EAA0E,EACrG,OAAO,UAAU,qDAAqD,EACtE,OAAO,gBAAgB,iEAAiE,EACxF,OAAO,sBAAsB,uDAAuD,EACpF,OAAO,wBAAwB,wDAAwD,EACvF,OAAO,OAAO,SAUT;AACJ,UAAM,YAAY,cAAc;AAChC,UAAM,MAAM,mBAAAD,QAAK,QAAQ,KAAK,OAAO,QAAQ,IAAI,CAAC;AAElD,QAAI,KAAK,MAAM;AACb,UAAI,KAAK,MAAM;AACb,cAAM,MAAM,CAAC,GAAG,UAAU,OAAO,CAAC,EAAE,IAAI,QAAM;AAAA,UAC5C,MAAM,EAAE;AAAA,UACR,SAAS,EAAE;AAAA,UACX,aAAa,EAAE;AAAA,UACf,eAAe,EAAE;AAAA,QACnB,EAAE;AACF,gBAAQ,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AACxC;AAAA,MACF;AACA,cAAQ,IAAI,cAAM,KAAK,kCAAkC,CAAC;AAC1D,iBAAW,QAAQ,CAAC,GAAG,UAAU,OAAO,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC,GAAG;AACvF,cAAM,OAAO,KAAK,aAAa,SAAS,KAAK,cAAM,IAAI,UAAU,KAAK,aAAa,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK;AACtG,gBAAQ,IAAI,KAAK,cAAM,KAAK,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,cAAM,IAAI,KAAK,WAAW,CAAC,GAAG,IAAI,EAAE;AAAA,MAC7G;AACA;AAAA,IACF;AAEA,UAAM,WAAW,gBAAgB,GAAG;AACpC,UAAM,UAAU,kBAAAC,QAAG,aAAa,UAAU,MAAM;AAChD,UAAM,WAAW,kBAAkB,GAAG;AACtC,UAAM,MAAmB;AAAA,MACvB,WAAW,KAAK,YAAY,SAAS;AAAA,MACrC,YAAY,KAAK,aAAa,SAAS;AAAA,IACzC;AAEA,QAAI,KAAK,KAAK;AACZ,YAAM,OAAO,UAAU,IAAI,KAAK,GAAG;AACnC,UAAI,CAAC,MAAM;AACT,gBAAQ,MAAM,cAAM,IAAI,4BAAuB,KAAK,GAAG,EAAE,CAAC;AAC1D,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,YAAMM,YAAW,oBAAoB,OAAO;AAC5C,UAAIA,UAAS,KAAK,OAAK,EAAE,SAAS,KAAK,IAAI,GAAG;AAC5C,gBAAQ,MAAM,cAAM,OAAO,cAAc,KAAK,IAAI,mCAAmC,CAAC;AACtF;AAAA,MACF;AACA,YAAM,OAAO,mBAAmB,MAAM,GAAG;AACzC,YAAM,QAAQ;AAAA,oBAAuB,KAAK,IAAI,YAAY,KAAK,OAAO;AAAA,EAAS,IAAI;AAAA,oBAAuB,KAAK,IAAI;AAAA;AACnH,YAAM,OAAO,QAAQ,QAAQ,QAAQ,IAAI,IAAI;AAC7C,wBAAAN,QAAG,cAAc,UAAU,MAAM,MAAM;AACvC,cAAQ,IAAI,cAAM,MAAM,mBAAc,KAAK,IAAI,KAAK,KAAK,OAAO,OAAO,mBAAAD,QAAK,SAAS,KAAK,QAAQ,CAAC,EAAE,CAAC;AACtG;AAAA,IACF;AAEA,QAAI,KAAK,OAAO;AACd,UAAI,CAAC,KAAK,iBAAiB;AACzB,gBAAQ,MAAM,cAAM,IAAI,4CAAuC,CAAC;AAChE,gBAAQ,KAAK,CAAC;AAAA,MAChB;AACA,YAAM,OAAO,WAAW,SAAS,WAAW,GAAG;AAC/C,UAAI,SAAS,SAAS;AACpB,gBAAQ,IAAI,cAAM,MAAM,6BAAwB,mBAAAA,QAAK,SAAS,KAAK,QAAQ,CAAC,EAAE,CAAC;AAC/E;AAAA,MACF;AACA,wBAAAC,QAAG,cAAc,UAAU,MAAM,MAAM;AACvC,YAAMO,SAAQF,YAAW,SAAS,WAAW,GAAG;AAChD,cAAQ,IAAI,cAAM,MAAM,kBAAa,mBAAAN,QAAK,SAAS,KAAK,QAAQ,CAAC,KAAKQ,OAAM,MAAM,WAAWA,OAAM,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAC9H,iBAAW,KAAKA,OAAO,SAAQ,IAAI,KAAK,cAAc,CAAC,CAAC,EAAE;AAC1D;AAAA,IACF;AAGA,UAAM,QAAQF,YAAW,SAAS,WAAW,GAAG;AAChD,UAAM,WAAW,oBAAoB,OAAO;AAC5C,QAAI,KAAK,MAAM;AACb,YAAM,UAAU,SAAS,IAAI,QAAM;AAAA,QACjC,MAAM,EAAE;AAAA,QACR,SAAS,EAAE;AAAA,QACX,mBAAmB,UAAU,IAAI,EAAE,IAAI,GAAG,WAAW;AAAA,MACvD,EAAE;AACF,YAAM,aAAa,CAAC,GAAG,UAAU,OAAO,CAAC,EAAE,IAAI,OAAK,EAAE,IAAI;AAC1D,YAAM,MAAM;AAAA,QACV,WAAW;AAAA,QACX,cAAc;AAAA,QACd,kBAAkB;AAAA,QAClB,OAAO,MAAM,IAAI,QAAM;AAAA,UACrB,MAAM,EAAE;AAAA,UACR,MAAM,EAAE;AAAA,UACR,iBAAiB,EAAE,kBAAkB;AAAA,UACrC,mBAAmB,EAAE,oBAAoB;AAAA,QAC3C,EAAE;AAAA,QACF,iBAAiB;AAAA,MACnB;AACA,cAAQ,IAAI,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AACxC,UAAI,MAAM,SAAS,EAAG,SAAQ,KAAK,CAAC;AACpC;AAAA,IACF;AACA,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,IAAI,cAAM,MAAM,iBAAY,mBAAAN,QAAK,SAAS,KAAK,QAAQ,CAAC,MAAM,SAAS,MAAM,mBAAmB,SAAS,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAC5I;AAAA,IACF;AACA,YAAQ,IAAI,cAAM,OAAO,cAAc,mBAAAA,QAAK,SAAS,KAAK,QAAQ,CAAC;AAAA,CAAK,CAAC;AACzE,eAAW,KAAK,MAAO,SAAQ,IAAI,KAAK,cAAc,CAAC,CAAC,EAAE;AAC1D,YAAQ,IAAI,cAAM,IAAI;AAAA,+CAAkD,CAAC;AACzE,YAAQ,KAAK,CAAC;AAAA,EAChB,CAAC;AACH,SAAO;AACT;;;ACjWA,IAAAS,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,8BAA0B;AAC1B;AACA,wBAAkB;;;ACLlB,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,eAAiB;AAIjB,eAAsB,YAAY,UAAoC;AACpE,SAAO,kBAAAC,QAAG,WAAW,mBAAAC,QAAK,KAAK,UAAU,QAAQ,CAAC;AACpD;AAEA,eAAsB,+BAA+B,UAAkB,OAA8E;AACnJ,QAAM,WAAW,mBAAAA,QAAK,KAAK,UAAU,QAAQ;AAC7C,MAAI,CAAC,MAAM,kBAAAD,QAAG,WAAW,QAAQ,EAAG,QAAO,EAAE,SAAS,OAAO,OAAO,iBAAiB;AAErF,QAAM,aAAa,mBAAAC,QAAK,KAAK,UAAU,aAAa;AACpD,QAAM,MAAM,MAAM,kBAAAD,QAAG,WAAW,UAAU,IAAI,MAAM,kBAAAA,QAAG,SAAS,YAAY,MAAM,IAAI;AAGtF,QAAM,YAAY,IAAI,KAAK,IAAI,aAAAE,QAAK,MAAM,GAAG,IAAI,CAAC;AAClD,QAAM,SAAU,aAAa,OAAO,cAAc,YAAY,CAAC,MAAM,QAAQ,SAAS,IAClF,YACA,CAAC;AACL,QAAM,OAAS,OAAO,QAAgD,CAAC;AACvE,MAAI,KAAK,eAAe,MAAM,KAAM,QAAO,EAAE,SAAS,OAAO,OAAO,UAAU;AAE9E,MAAI,CAAC,MAAO,QAAO,EAAE,SAAS,MAAM,OAAO,UAAU;AAErD,QAAM,OAAO,EAAE,GAAG,QAAQ,MAAM,EAAE,GAAG,MAAM,iBAAiB,KAAK,EAAE;AACnE,QAAM,kBAAAF,QAAG,UAAU,QAAQ;AAC3B,QAAM,kBAAAA,QAAG,UAAU,YAAY,aAAAE,QAAK,UAAU,IAAI,CAAC;AACnD,SAAO,EAAE,SAAS,MAAM,OAAO,UAAU;AAC3C;;;AD4BA,SAAS,GAAG,KAAa;AAAE,UAAQ,IAAI,KAAK,cAAM,MAAM,QAAG,CAAC,IAAI,GAAG,EAAE;AAAG;AACxE,SAAS,KAAK,KAAa;AAAE,UAAQ,IAAI,KAAK,cAAM,OAAO,QAAG,CAAC,IAAI,GAAG,EAAE;AAAG;AAC3E,SAAS,IAAI,KAAa;AAAE,UAAQ,IAAI,OAAO,cAAM,IAAI,aAAQ,CAAC,IAAI,cAAM,OAAO,GAAG,CAAC,EAAE;AAAG;AAC5F,SAASC,SAAQ,OAAe;AAC9B,QAAM,OAAO,SAAI,OAAO,KAAK,IAAI,GAAG,KAAK,MAAM,MAAM,CAAC;AACtD,UAAQ,IAAI;AAAA,EAAK,cAAM,KAAK,gBAAM,KAAK,IAAI,IAAI,EAAE,CAAC,EAAE;AACtD;AAEA,SAAS,aAAa,KAA+B;AACnD,QAAM,WAAW,QAAQ,KAAK,CAAC;AAC/B,MAAI,CAAC,SAAU,QAAO;AACtB,QAAM,aAAS,uCAAU,QAAQ,UAAU,CAAC,UAAU,eAAe,WAAW,UAAU,SAAS,GAAG,GAAG;AAAA,IACvG,UAAU;AAAA,IACV,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,EAClC,CAAC;AACD,MAAI,OAAO,SAAS,CAAC,OAAO,OAAQ,QAAO;AAC3C,MAAI;AACF,WAAO,KAAK,MAAM,OAAO,MAAM;AAAA,EACjC,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,uBAAuB,KAAsB;AACpD,EAAAA,SAAQ,qBAAqB;AAC7B,QAAM,WAAW,mBAAAC,QAAK,KAAK,KAAK,WAAW;AAC3C,MAAI,CAAC,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAC5B,SAAK,+DAA0D;AAC/D,WAAO;AAAA,EACT;AACA,QAAM,SAAS,aAAa,GAAG;AAC/B,MAAI,CAAC,QAAQ;AACX,SAAK,qEAAgE;AACrE,WAAO;AAAA,EACT;AACA,QAAM,WAAW,OAAO,oBAAoB,CAAC;AAC7C,QAAM,QAAQ,OAAO,SAAS,CAAC;AAC/B,MAAI,SAAS,WAAW,GAAG;AACzB,SAAK,0EAAqE;AAC1E,QAAI,yDAAyD;AAC7D,WAAO;AAAA,EACT;AACA,QAAM,cAAc,IAAI,IAAI,MAAM,IAAI,OAAK,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACvD,MAAI,QAAQ;AACZ,aAAW,KAAK,UAAU;AACxB,UAAM,IAAI,YAAY,IAAI,EAAE,IAAI;AAChC,QAAI,CAAC,GAAG;AACN,SAAG,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,cAAc,EAAE,OAAO,GAAG;AACjD;AAAA,IACF;AACA,YAAQ;AACR,QAAI,EAAE,SAAS,oBAAoB;AACjC,WAAK,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,aAAa,EAAE,eAAe,gBAAgB,EAAE,iBAAiB,EAAE;AAC5F,UAAI,2CAA2C;AAAA,IACjD,WAAW,EAAE,SAAS,iBAAiB;AACrC,WAAK,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,kCAAkC,EAAE,iBAAiB,EAAE;AAChF,UAAI,2CAA2C;AAAA,IACjD,WAAW,EAAE,SAAS,oBAAoB;AACxC,WAAK,GAAG,EAAE,KAAK,OAAO,EAAE,CAAC,iCAAiC;AAAA,IAC5D;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAASC,iBAAgB,WAA2B;AAClD,SAAO,UAAU,QAAQ,cAAc,EAAE;AAC3C;AAEA,eAAe,sBAAsB,YAAuC;AAC1E,UAAQ,MAAM,sBAAsB,UAAU,GAAG,IAAI,WAAS,MAAM,IAAI;AAC1E;AAEA,eAAe,kBAAkB,WAAsC;AACrE,MAAI,CAAC,MAAM,kBAAAD,QAAG,WAAW,SAAS,EAAG,QAAO,CAAC;AAC7C,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,WAAW,EAAE,eAAe,KAAK,CAAC;AACnE,SAAO,QAAQ,OAAO,WAAS,MAAM,OAAO,CAAC,EAAE,IAAI,WAAS,MAAM,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC3G;AAEA,SAAS,qBAAqB,cAAsB,OAAgC;AAClF,MAAI,MAAM,SAAS,SAAS,YAAY,EAAG,QAAO;AAClD,MAAI,MAAM,QAAQ,SAAS,YAAY,EAAG,QAAO;AACjD,MAAI,MAAM,QAAQ,SAAS,YAAY,EAAG,QAAO;AACjD,SAAO;AACT;AAEA,eAAe,OAAOE,WAA4B,KAAa,SAAsB,OAAyC;AAC5H,QAAM,YAAY,YAAY,WAAW,WAAW;AACpD,QAAM,QAAQA,UAAS,OAAO,SAAS;AACvC,MAAI,CAAC,MAAO,QAAO,CAAC;AAEpB,QAAM,WAAW,oBAAI,IAAY;AACjC,QAAM,OAAmB,CAAC;AAE1B,aAAW,YAAY,OAAO,KAAK,MAAM,KAAK,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG;AAClF,UAAM,eAAe,mBAAAH,QAAK,MAAM,KAAKE,iBAAgB,MAAM,UAAU,GAAG,QAAQ;AAChF,aAAS,IAAI,YAAY;AACzB,SAAK,KAAK;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,qBAAqB,cAAc,KAAK;AAAA,IAClD,CAAC;AAAA,EACH;AAEA,QAAM,aAAa,YAAY,WAC3B,MAAM,sBAAsB,mBAAAF,QAAK,KAAK,KAAK,SAAS,QAAQ,CAAC,IAC7D,MAAM,kBAAkB,mBAAAA,QAAK,KAAK,KAAK,MAAM,UAAU,CAAC;AAE5D,aAAW,QAAQ,YAAY;AAC7B,UAAM,eAAe,YAAY,WAC7B,mBAAAA,QAAK,MAAM,KAAKE,iBAAgB,MAAM,UAAU,GAAG,MAAM,UAAU,IACnE,mBAAAF,QAAK,MAAM,KAAKE,iBAAgB,MAAM,UAAU,GAAG,IAAI;AAC3D,QAAI,SAAS,IAAI,YAAY,EAAG;AAChC,SAAK,KAAK;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAEA,SAAO,KAAK,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AACzD;AAEA,eAAe,aAAa,KAAwC;AAClE,SAAO,kBAAAD,QAAG,SAAS,mBAAAD,QAAK,KAAK,KAAK,SAAS,eAAe,CAAC;AAC7D;AAEA,eAAe,iBAAiB,SAAmC;AACjE,QAAM,MAAM,UAAU,mBAAAA,QAAK,QAAQ,OAAO,IAAI,MAAM,gBAAgB;AACpE,QAAM,eAAe,mBAAAA,QAAK,KAAK,KAAK,SAAS,eAAe;AAE5D,MAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAI;AACxC,UAAM,IAAI,MAAM,+BAA+B,GAAG,EAAE;AAAA,EACtD;AAEA,SAAO;AACT;AAEA,eAAe,0BAA0B,UAAqC;AAC5E,QAAM,aAAa,mBAAAD,QAAK,KAAK,UAAU,UAAU,QAAQ;AACzD,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,UAAU,EAAG,QAAO,CAAC;AAC9C,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,YAAY,EAAE,eAAe,KAAK,CAAC;AACpE,QAAM,QAAkB,CAAC;AACzB,aAAW,SAAS,SAAS;AAC3B,QAAI,CAAC,MAAM,YAAY,EAAG;AAC1B,QAAI,MAAM,kBAAAA,QAAG,WAAW,mBAAAD,QAAK,KAAK,YAAY,MAAM,MAAM,UAAU,CAAC,EAAG,OAAM,KAAK,MAAM,IAAI;AAAA,EAC/F;AACA,SAAO,MAAM,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAChD;AAEA,eAAe,8BAA8B,KAAgC;AAC3E,QAAM,cAAc,MAAM,sBAAsB,mBAAAA,QAAK,KAAK,KAAK,SAAS,QAAQ,CAAC;AACjF,QAAM,aAAa,IAAI,IAAI,YAAY,IAAI,CAAC,UAA2B,MAAM,IAAI,CAAC;AAClF,QAAM,WAAW,QAAQ,IAAI;AAC7B,MAAI,CAAC,SAAU,QAAO,CAAC;AAEvB,QAAM,mBAAmB,MAAM,0BAA0B,QAAQ;AACjE,SAAO,iBAAiB,OAAO,UAAQ,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAChG;AAEA,SAAS,aAAa,QAA4B;AAChD,UAAQ,QAAQ;AAAA,IACd,KAAK;AAAW,aAAO,cAAM,MAAM,SAAS;AAAA,IAC5C,KAAK;AAAW,aAAO,cAAM,IAAI,SAAS;AAAA,IAC1C,KAAK;AAAyB,aAAO,cAAM,OAAO,uBAAuB;AAAA,IACzE,KAAK;AAAuB,aAAO,cAAM,QAAQ,qBAAqB;AAAA,EACxE;AACF;AAEA,SAAS,kBAAkBI,QAAuC;AAChE,SAAO;AAAA,IACL,eAAeA,OAAM,WAAW;AAAA,IAChC,4BAA4BA,OAAM,wBAAwB;AAAA,IAC1D,wBAAwBA,OAAM,oBAAoB;AAAA,IAClD,6BAA6BA,OAAM,yBAAyB;AAAA,IAC5D,yBAAyBA,OAAM,qBAAqB;AAAA,EACtD,EAAE,KAAK,GAAG;AACZ;AAEA,eAAe,cAAcD,WAA4B,KAAa,OAAoB,aAAqC,YAAsB,wBAAmE;AACtN,QAAM,SAAS,MAAM,OAAOA,WAAU,KAAK,UAAU,KAAK;AAC1D,QAAM,QAAQ,MAAM,OAAOA,WAAU,KAAK,SAAS,KAAK;AACxD,QAAM,UAAU,CAAC,GAAG,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,KAAK,QAAQ;AACzD,QAAI,IAAI,WAAW,UAAW,KAAI,MAAM;AAAA,aAC/B,IAAI,WAAW,UAAW,KAAI,UAAU;AAAA,QAC5C,KAAI,YAAY;AACrB,WAAO;AAAA,EACT,GAAG,EAAE,IAAI,GAAG,UAAU,GAAG,QAAQ,EAAE,CAAC;AAEpC,MACE,CAAC,YAAY,eACV,CAAC,YAAY,4BACb,CAAC,YAAY,wBACb,YAAY,8BAA8B,aAC1C,YAAY,0BAA0B,WACzC;AACA,YAAQ,UAAU;AAAA,EACpB,OAAO;AACL,YAAQ,MAAM;AAAA,EAChB;AACA,MAAI,WAAW,SAAS,EAAG,SAAQ,UAAU;AAE7C,SAAO,EAAE,QAAQ,OAAO,aAAa,YAAY,wBAAwB,QAAQ;AACnF;AAEA,SAAS,WAAW,QAAwB;AAC1C,EAAAJ,SAAQ,qBAAgB;AACxB,QAAM,cAAc,IAAI,kBAAAM,QAAM;AAAA,IAC5B,MAAM,CAAC,cAAM,KAAK,MAAM,GAAG,cAAM,KAAK,QAAQ,CAAC;AAAA,IAC/C,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EAChC,CAAC;AACD,aAAW,OAAO,OAAO,OAAQ,aAAY,KAAK,CAAC,IAAI,MAAM,aAAa,IAAI,MAAM,CAAC,CAAC;AACtF,UAAQ,IAAI,YAAY,SAAS,CAAC;AAElC,EAAAN,SAAQ,oBAAe;AACvB,QAAM,aAAa,IAAI,kBAAAM,QAAM;AAAA,IAC3B,MAAM,CAAC,cAAM,KAAK,MAAM,GAAG,cAAM,KAAK,QAAQ,CAAC;AAAA,IAC/C,OAAO,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE;AAAA,EAChC,CAAC;AACD,aAAW,OAAO,OAAO,MAAO,YAAW,KAAK,CAAC,IAAI,MAAM,aAAa,IAAI,MAAM,CAAC,CAAC;AACpF,UAAQ,IAAI,WAAW,SAAS,CAAC;AAEjC,EAAAN,SAAQ,2BAAsB;AAC9B,UAAQ,IAAI,KAAK,kBAAkB,OAAO,WAAW,CAAC,EAAE;AACxD,UAAQ,IAAI,KAAK,OAAO,YAAY,4BAA4B,OAAO,YAAY,uBAAuB,cAAM,MAAM,QAAG,IAAI,cAAM,OAAO,QAAG,CAAC,2BAA2B,OAAO,YAAY,4BAA4B,OAAO,YAAY,uBAAuB,OAAO,SAAS,EAAE;AACpR,QAAM,sBAAsB,OAAO,YAAY,8BAA8B,aAAa,OAAO,YAAY,0BAA0B,YACnI,YACC,OAAO,YAAY,8BAA8B,aAAa,OAAO,YAAY,0BAA0B,YAAY,oBAAoB;AAChJ,UAAQ,IAAI,KAAK,wBAAwB,OAAO,cAAM,MAAM,QAAG,IAAI,cAAM,OAAO,QAAG,CAAC,4BAA4B,mBAAmB,EAAE;AAErI,EAAAA,SAAQ,wCAAmC;AAC3C,MAAI,OAAO,WAAW,WAAW,GAAG;AAClC,OAAG,4BAA4B;AAAA,EACjC,OAAO;AACL,SAAK,4BAA4B,OAAO,WAAW,MAAM,EAAE;AAC3D,eAAW,QAAQ,OAAO,WAAY,MAAK,cAAc,IAAI,EAAE;AAAA,EACjE;AACF;AAEA,SAAS,0BAA0B,QAAiD;AAClF,EAAAA,SAAQ,aAAa;AACrB,MAAI,OAAO,OAAO,WAAW,GAAG;AAC9B,OAAG,gDAAgD;AACnD,WAAO;AAAA,EACT;AAEA,aAAWO,UAAS,OAAO,SAAS;AAClC,SAAKA,OAAM,IAAI,YAAY,OAAO,EAAE,IAAI,UAAU;AAClD,QAAIA,OAAM,WAAW;AAAA,EACvB;AAEA,aAAWA,UAAS,OAAO,UAAU;AACnC,SAAKA,OAAM,IAAI,YAAY,OAAO,EAAE,IAAI,gBAAgBA,OAAM,oBAAoB,aAAa,cAASA,OAAM,mBAAmB,UAAU;AAC3I,QAAIA,OAAM,WAAW;AAAA,EACvB;AAEA,QAAMC,WAAU,OAAO,OAAO,OAAO,CAAAD,WAASA,OAAM,UAAU,iBAAiB;AAC/E,aAAWA,UAASC,UAAS;AAC3B,SAAKD,OAAM,IAAI,YAAY,OAAO,EAAE,IAAI,iDAAiD;AACzF,QAAIA,OAAM,WAAW;AAAA,EACvB;AAEA,UAAQ,IAAI,cAAM,IAAI,0EAA0E,CAAC;AACjG,SAAO;AACT;AAEA,SAAS,cAAc,QAA2B;AAChD,SAAO,OAAO,OAAO,KAAK,SAAO,IAAI,WAAW,SAAS,KACpD,OAAO,MAAM,KAAK,SAAO,IAAI,WAAW,SAAS,KACjD,CAAC,OAAO,YAAY,eACpB,CAAC,OAAO,YAAY,4BACpB,CAAC,OAAO,YAAY,wBACpB,OAAO,YAAY,8BAA8B,aACjD,OAAO,YAAY,0BAA0B,aAC7C,OAAO,WAAW,SAAS;AAClC;AAEO,SAAS,sBAA+B;AAC7C,SAAO,IAAI,QAAQ,QAAQ,EACxB,YAAY,mEAAmE,EAC/E,OAAO,gBAAgB,oDAAoD,EAC3E,OAAO,UAAU,gCAAgC,KAAK,EACtD,OAAO,iBAAiB,0DAA0D,EAClF,OAAO,OAAO,SAAiE;AAC9E,UAAM,MAAM,MAAM,iBAAiB,KAAK,GAAG;AAC3C,UAAMH,YAAW,MAAM,aAAa,GAAG;AACvC,UAAM,QAAQ,MAAM,WAAW,mBAAAH,QAAK,KAAK,KAAK,SAAS,eAAe,GAAG,mBAAAA,QAAK,KAAK,KAAK,OAAO,CAAC;AAChG,UAAM,cAAc,MAAM,wBAAwB,GAAG;AACrD,UAAM,aAAa,MAAM,8BAA8B,GAAG;AAC1D,UAAM,yBAA0B,MAAM,YAAY,GAAG,KAChD,MAAM,+BAA+B,KAAK,KAAK,GAAG,QACnD;AACJ,UAAM,OAAO,MAAM,cAAcG,WAAU,KAAK,OAAO,aAAa,YAAY,sBAAsB;AACtG,UAAM,aAAa,MAAM,kCAAkC;AAC3D,UAAM,aAAa,EAAE,MAAM,WAAW;AAEtC,QAAI,KAAK,MAAM;AACb,cAAQ,IAAI,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAC/C,UAAI,cAAc,IAAI,KAAM,KAAK,cAAc,WAAW,UAAY,SAAQ,WAAW;AACzF;AAAA,IACF;AAEA,YAAQ,IAAI;AAAA,EAAK,cAAM,KAAK,WAAW,CAAC;AAAA,CAAI;AAC5C,UAAM,cAAc,uBAAuB,GAAG;AAC9C,UAAM,eAAe,0BAA0B,UAAU;AACzD,eAAW,IAAI;AAEf,UAAM,SAAS,CAAC,eAAe,CAAC,gBAAgB,WAAW,aAAa,cAAc,IAAI;AAC1F,QAAI,QAAQ;AACV,cAAQ,IAAI,EAAE;AACd,cAAQ,IAAI,KAAK,cAAM,OAAO,QAAG,CAAC,IAAI,cAAM,KAAK,oBAAoB,CAAC,qCAAgC;AACtG,UAAI,KAAK,cAAc,OAAQ,SAAQ,WAAW;AAAA,IACpD,OAAO;AACL,cAAQ,IAAI,EAAE;AACd,cAAQ,IAAI,KAAK,cAAM,MAAM,QAAG,CAAC,IAAI,cAAM,KAAK,mBAAmB,CAAC,EAAE;AAAA,IACxE;AACA,YAAQ,IAAI,EAAE;AAAA,EAChB,CAAC;AACL;;;AEvXA;AACA,IAAAK,oBAAe;AACf,IAAAC,qBAAiB;AAaV,SAAS,yBAAkC;AAC9C,SAAO,IAAI,QAAQ,WAAW,EACzB,YAAY,kEAAkE,EAC9E,OAAO,WAAW,2DAA2D,KAAK,EAClF,OAAO,OAAO,SAA2B;AACtC,QAAI;AACA,YAAM,cAAcC,oBAAmB;AACvC,YAAM,UAAU,MAAM,kBAAAC,QAAG,SAAS,mBAAAC,QAAK,KAAK,aAAa,cAAc,CAAC;AACxE,YAAM,aAAa,QAAQ,WAAW;AACtC,YAAM,oBAAoB,EAAE,SAAS,aAAa,KAAK,QAAQ,IAAI,GAAG,WAAW,CAAC;AAElF,YAAM,SAAS,MAAM,+BAA+B,aAAa,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAClG,UAAI,qBAAqB,GAAG;AACxB,cAAM,8BAA8B,aAAa,KAAK,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAClF,cAAM,2BAA2B;AACjC,cAAM,uBAAuB;AAAA,MACjC;AACA,YAAM,mBAAmB,wBAAwB;AACjD,YAAM,YAAY,qBAAqB,gBAAgB;AACvD,YAAM,QAAQ,MAAM,kBAAAD,QAAG,SAAS,SAAS;AAEzC,UAAI,OAAO,SAAS;AAChB,gBAAQ,IAAI,cAAM,MAAM,+CAA0C,OAAO,gBAAgB,EAAE,CAAC;AAAA,MAChG,OAAO;AACH,gBAAQ,IAAI,cAAM,IAAI,gCAAgC,OAAO,gBAAgB,EAAE,CAAC;AAAA,MACpF;AAEA,cAAQ,IAAI,KAAK,UAAU;AAAA,QACvB,YAAY;AAAA,QACZ;AAAA,QACA,SAAS,OAAO;AAAA,QAChB;AAAA,MACJ,GAAG,MAAM,CAAC,CAAC;AACX,cAAQ,WAAW;AAAA,IACvB,SAASE,SAAO;AACZ,cAAQ,MAAM,cAAM,IAAI,UAAKA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK,CAAC,EAAE,CAAC;AACtF,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ,CAAC;AACT;;;ACtDA;AACA,IAAAC,8BAA0B;AAC1B,IAAAC,qBAAiB;AACjB,IAAAC,oBAAe;;;ACJf,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AAQjB,IAAM,YAAY,oBAAI,IAAI,CAAC,QAAQ,gBAAgB,cAAc,WAAW,CAAC;AAC7E,IAAM,WAAW;AACjB,IAAM,kBAAkB,mBAAAC,QAAK,KAAK,UAAU,eAAe;AA+B3D,eAAsB,cAAc,SAAwC;AACxE,QAAM,UAAU,oBAAI,IAAY;AAChC,QAAM,aAAa,oBAAI,IAAY;AACnC,QAAM,KAAK,SAAS,SAAS,UAAU;AACvC,SAAO;AAAA,IACH,SAAS,CAAC,GAAG,OAAO,EAAE,KAAK;AAAA,IAC3B,YAAY,CAAC,GAAG,UAAU,EAAE,KAAK;AAAA,EACrC;AACJ;AAEA,eAAe,KAAK,YAAoB,SAAsB,YAAwC;AAClG,QAAM,WAAW,mBAAAC,QAAK,KAAK,YAAY,QAAQ;AAC/C,MAAI,MAAM,kBAAAC,QAAG,WAAW,QAAQ,GAAG;AAC/B,UAAM,eAAe,mBAAAD,QAAK,KAAK,YAAY,eAAe;AAC1D,QAAI,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAG;AACnC,cAAQ,IAAI,UAAU;AAAA,IAC1B,OAAO;AACH,iBAAW,IAAI,UAAU;AAAA,IAC7B;AAAA,EACJ;AAEA,QAAM,UAAU,MAAM,kBAAAA,QAAG,QAAQ,YAAY,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC,CAAoD;AACvI,aAAW,SAAS,SAAS;AACzB,QAAI,CAAC,MAAM,YAAY,EAAG;AAC1B,QAAI,UAAU,IAAI,MAAM,IAAI,EAAG;AAC/B,UAAM,KAAK,mBAAAD,QAAK,KAAK,YAAY,MAAM,IAAI,GAAG,SAAS,UAAU;AAAA,EACrE;AACJ;;;ACpEA;AACA,IAAAE,oBAAe;AACf,IAAAC,gBAAiB;AA8CjB,SAAS,iBAAuB;AAC5B,QAAM,IAAI,CAAC,MAAc,cAAM,IAAI,CAAC;AACpC,QAAM,IAAI,CAAC,MAAc,cAAM,KAAK,CAAC;AAErC,UAAQ,IAAI,EAAE,gBAAgB,CAAC;AAE/B,UAAQ,IAAI,EAAE,oBAAoB,CAAC;AACnC,UAAQ,IAAI,mCAAmC,EAAE,2CAA2C,CAAC,EAAE;AAC/F,UAAQ,IAAI,mCAAmC,EAAE,yCAAyC,CAAC,EAAE;AAC7F,UAAQ,IAAI,mCAAmC,EAAE,oDAA+C,CAAC,EAAE;AACnG,UAAQ,IAAI,mCAAmC,EAAE,wCAAwC,CAAC,EAAE;AAC5F,UAAQ,IAAI,mCAAmC,EAAE,iBAAiB,CAAC,EAAE;AAErE,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,EAAE,sBAAsB,CAAC;AACrC,UAAQ,IAAI,mCAAmC,EAAE,4CAA4C,CAAC,EAAE;AAChG,UAAQ,IAAI,mCAAmC,EAAE,2CAA2C,CAAC,EAAE;AAC/F,UAAQ,IAAI,mCAAmC,EAAE,yCAAyC,CAAC,EAAE;AAE7F,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,EAAE,cAAc,CAAC;AAC7B,UAAQ,IAAI,mCAAmC,EAAE,yBAAyB,CAAC,EAAE;AAC7E,UAAQ,IAAI,mCAAmC,EAAE,0BAA0B,CAAC,EAAE;AAC9E,UAAQ,IAAI,EAAE;AAClB;AAEA,eAAe,kBAAkB,OAAqB,UAAkC;AACpF,QAAMC,UAAS,MAAM,6DAAiB;AAEtC,QAAM,QAAQ;AAAA,IACV,cAAM,KAAK,2BAAsB;AAAA,IACjC;AAAA,IACA,KAAK,EAAE,MAAM,mBAAmB,CAAC,IAAI,MAAM,gBAAgB;AAAA,IAC3D,KAAK,EAAE,MAAM,WAAW,CAAC,IAAI,MAAM,SAAS;AAAA,IAC5C,KAAK,EAAE,MAAM,YAAY,CAAC,IAAI,MAAM,QAAQ;AAAA,IAC5C,KAAK,EAAE,MAAM,eAAe,CAAC,IAAI,MAAM,cAAc;AAAA,IACrD,KAAK,EAAE,MAAM,QAAQ,CAAC,IAAI,MAAM,MAAM;AAAA,IACtC,KAAK,EAAE,MAAM,wBAAwB,CAAC,IAAI,MAAM,oBAAoB;AAAA,IACpE,GAAI,WAAW,CAAC,IAAI,cAAM,IAAI,qCAAgC,CAAC,IAAI,CAAC;AAAA,EACxE;AAEA,UAAQ,IAAI,OAAOA,OAAM,MAAM,KAAK,IAAI,GAAG;AAAA,IACvC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE;AAAA,IAChD,aAAa;AAAA,IACb,aAAa;AAAA,EACjB,CAAC,IAAI,IAAI;AACb;AA4BA,eAAsB,oBAAoB,OAA0B,CAAC,GAAkB;AACnF,QAAM,yBAAyB,EAAE,QAAQ,MAAM,CAAC;AACpD;AAEA,SAASC,kBAAyB;AAG9B,SAAO,uBAAuB,QAAQ,IAAI,CAAC;AAC/C;AAEO,SAAS,qBAAqB,MAA6C;AAC9E,SAAO,KAAK,kBAAkB,QAAQ,IAAI,yBAAyB;AACvE;AAEA,eAAsB,WAAW,OAAoB,CAAC,GAAkB;AACpE,QAAM;AAAA,IACF,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ,WAAW;AAAA,IACnB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,EAC5B,IAAI;AACJ,QAAM,iBAAiB,qBAAqB,IAAI;AAEhD,MAAI,UAAU;AACV,YAAQ,IAAI,cAAM,OAAO,2EAAsE,CAAC;AAChG;AAAA,EACJ;AAEA,QAAM,eAAe,OAAO,QAAQ,KAAK,SAAS,OAAO,KAAK,QAAQ,KAAK,SAAS,IAAI;AACxF,QAAM,cAAc,KAAK,eAAeC,oBAAmB;AAC3D,QAAM,cAAc,KAAK,eAAeD,gBAAe;AAEvD,MAAI,CAAC,sBAAsB;AACvB,UAAM,oBAAoB,EAAE,KAAK,aAAa,CAAC;AAAA,EACnD;AAEA,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB,mBAAmB,CAAC;AAAA,IACpB;AAAA,IACA;AAAA,EACJ,CAAC;AACD,QAAM,cAAc,IAAI,QAAQ,CAAC;AAGjC,QAAM,UAAU,MAAM,kBAAAE,QAAG,SAAS,cAAAC,QAAK,KAAK,aAAa,cAAc,CAAC;AACxE,QAAM,oBAAoB;AAAA,IACtB,SAAS;AAAA,IACT,KAAK,QAAQ,IAAI;AAAA,IACjB,YAAY,QAAQ,WAAW;AAAA,EACnC,CAAC;AACD,MAAI,CAAC,QAAQ;AACT,UAAM,+BAA+B,aAAa,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAC9E,QAAI,qBAAqB,GAAG;AACxB,YAAM,8BAA8B,aAAa,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;AAC7E,YAAM,2BAA2B;AACjC,YAAM,uBAAuB;AAAA,IACjC;AAAA,EACJ;AAGA,QAAM,eAAe,cAAAA,QAAK,KAAK,aAAa,SAAS,eAAe;AACpE,QAAMC,YAAW,MAAM,kBAAAF,QAAG,SAAS,YAAY;AAE/C,UAAQ,IAAI,cAAM,KAAK,oDAA+C,CAAC;AACvE,UAAQ,IAAI,cAAM,IAAI,sBAAiB,YAAY,EAAE,CAAC;AACtD,UAAQ,IAAI,cAAM,IAAI,oBAAe,WAAW,EAAE,CAAC;AAEnD,QAAM,iBAAiB,MAAM,iCAAiC;AAAA,IAC1D;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAC;AACD,MAAI,mBAAmB,QAAQ;AAC3B,YAAQ,IAAI,cAAM,IAAI,6DAAwD,CAAC;AAAA,EACnF;AAEA,QAAM,cAAc,MAAM,0BAA0B;AAAA,IAChD;AAAA,IACA,UAAAE;AAAA,IACA;AAAA,IACA,eAAe,6BAA6B;AAAA,EAChD,CAAC;AACD,MAAI,YAAY,QAAQ,SAAS,GAAG;AAChC,UAAM,OAAO,SAAS,iBAAiB;AACvC,YAAQ,IAAI,cAAM,IAAI,YAAO,IAAI,IAAI,YAAY,QAAQ,MAAM,8BAA8B,YAAY,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;AAAA,EAClI;AAEA,QAAM,QAAQ,MAAM,oBAAoB;AAAA,IACpC;AAAA,IACA,UAAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK;AAAA,IACL;AAAA,IACA,eAAe,6BAA6B;AAAA,EAChD,CAAC;AAED,MAAI,OAAO;AACP,UAAM,oBAAoB;AAAA,MACtB;AAAA,MACA,KAAK;AAAA,MACL,OAAO;AAAA,MACP,UAAU;AAAA,IACd,CAAC;AAAA,EACL;AAEA,QAAM,UAAU,MAAM,qBAAqB,aAAa,EAAE,OAAO,CAAC;AAClE,MAAI,QAAQ,WAAW;AACnB,UAAM,OAAO,QAAQ,cAAc,YAAY;AAC/C,YAAQ,IAAI,cAAM,IAAI,YAAO,IAAI,IAAI,QAAQ,OAAO,MAAM,QAAQ,aAAa,MAAM,UAAU,QAAQ,aAAa,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACnJ,OAAO;AACH,YAAQ,IAAI,cAAM,IAAI,YAAO,QAAQ,OAAO,qBAAqB,CAAC;AAAA,EACtE;AACA,aAAW,WAAW,QAAQ,oBAAoB;AAC9C,YAAQ,IAAI,cAAM,OAAO,uBAAkB,OAAO,EAAE,CAAC;AAAA,EACzD;AAEA,QAAM,YAAY,MAAM,gBAAgB,aAAa,EAAE,OAAO,CAAC;AAC/D,MAAI,UAAU,WAAW;AACrB,UAAM,OAAO,UAAU,cAAc,YAAY;AACjD,YAAQ,IAAI,cAAM,IAAI,YAAO,IAAI,IAAI,UAAU,OAAO,MAAM,UAAU,aAAa,MAAM,UAAU,UAAU,aAAa,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA,EACzJ,OAAO;AACH,YAAQ,IAAI,cAAM,IAAI,YAAO,UAAU,OAAO,qBAAqB,CAAC;AAAA,EACxE;AACA,aAAW,WAAW,UAAU,oBAAoB;AAChD,YAAQ,IAAI,cAAM,OAAO,0BAAqB,OAAO,EAAE,CAAC;AAAA,EAC5D;AAEA,MAAI,CAAC,uBAAuB;AACxB,UAAM,0BAA0B,EAAE,UAAU,aAAa,QAAQ,UAAU,MAAM,CAAC;AAAA,EACtF;AAEA,QAAM,aAAa,QAAQ,UAAU,WAAW;AAEhD,MAAI,CAAC,QAAQ;AACT,QAAI,OAAO;AACP,YAAM,8BAA8B,EAAE,OAAO,KAAK,CAAC;AACnD,YAAM,0BAA0B,aAAa,EAAE,OAAO,KAAK,CAAC;AAAA,IAChE,OAAO;AACH,YAAM,8BAA8B;AACpC,YAAM,0BAA0B,WAAW;AAAA,IAC/C;AACA,UAAM,yBAAyB,aAAa,EAAE,OAAO,sBAAsB,IAAI,WAAW,OAAO,CAAC;AAClG,UAAM,+BAA+B,aAAa,IAAI;AAAA,EAC1D;AAEA,QAAM,kBAAkB,OAAO,MAAM;AAErC,MAAI,MAAM,uBAAuB,GAAG;AAChC,UAAM,kBAAkB,6BAA6B,MAAM,oBAAoB,iBAAiB,MAAM,yBAAyB,IAAI,KAAK,GAAG;AAC3I,QAAI,gBAAgB;AAChB,YAAM,IAAI,MAAM,eAAe;AAAA,IACnC;AACA,YAAQ,IAAI,cAAM,OAAO,YAAO,eAAe,EAAE,CAAC;AAClD,YAAQ,IAAI,cAAM,OAAO,2GAA2G,CAAC;AACrI,YAAQ,IAAI,EAAE;AAAA,EAClB;AAEA,MAAI,CAAC,QAAQ;AACT,mBAAe;AAAA,EACnB;AACJ;;;ACjSA,IAAAC,oBAAe;AACf,IAAAC,mBAAe;AACf,IAAAC,qBAAiB;AAEjB,IAAM,gBAAgB,oBAAI,IAAY;AAEtC,SAAS,kBAAkB,KAAqB;AAC9C,SAAO,mBAAAC,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,SAAS,UAAU,GAAG,GAAG,OAAO;AACjE;AAEA,eAAsB,eAAe,KAAa,OAA4C;AAC5F,MAAI,cAAc,IAAI,GAAG,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,gBAAc,IAAI,GAAG;AACrB,UAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;AAE5B,QAAM,YAAY,kBAAkB,GAAG;AACvC,QAAM,kBAAAC,QAAG,UAAU,mBAAAF,QAAK,QAAQ,SAAS,CAAC;AAC1C,QAAM,kBAAAE,QAAG,UAAU,WAAW;AAAA,IAC5B;AAAA,IACA,UAAS,oBAAI,KAAK,GAAE,YAAY;AAAA,EAClC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAChB,QAAM,kBAAAA,QAAG,WAAW,WAAW,IAAI;AACnC,SAAO;AACT;;;AHwBA,eAAe,mBAAmB,MAAgF;AAC9G,MAAI,KAAK,KAAM,QAAO,EAAE,SAAS,CAAC,mBAAAC,QAAK,QAAQ,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE;AAC3E,MAAI,KAAK,UAAU;AACf,UAAM,QAAQ,CAAC,SAAS,YAAY,EAAE,IAAI,OAAK,EAAE,QAAQ,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;AACtF,UAAM,QAAQ,MAAM,QAAQ,IAAI,MAAM,IAAI,UAAQ,cAAc,mBAAAA,QAAK,QAAQ,IAAI,CAAC,EAAE,MAAM,OAAO,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AACnI,WAAO;AAAA,MACH,SAAS,CAAC,GAAG,IAAI,IAAI,MAAM,QAAQ,UAAQ,KAAK,OAAO,CAAC,CAAC;AAAA,MACzD,YAAY,CAAC,GAAG,IAAI,IAAI,MAAM,QAAQ,UAAQ,KAAK,UAAU,CAAC,CAAC;AAAA,IACnE;AAAA,EACJ;AACA,MAAI,KAAK,MAAM;AACX,UAAM,OAAO,MAAM,cAAc,mBAAAA,QAAK,QAAQ,KAAK,IAAI,CAAC;AACxD,WAAO,EAAE,SAAS,KAAK,SAAS,YAAY,KAAK,WAAW;AAAA,EAChE;AAKA,SAAO,EAAE,SAAS,CAAC,uBAAuB,QAAQ,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE;AAC9E;AAEA,eAAe,0BAA0B,UAAiC;AACtE,QAAM,oBAAoB,mBAAAA,QAAK,KAAK,UAAU,SAAS,UAAU,SAAS;AAC1E,QAAM,qBAAqB,mBAAAA,QAAK,KAAK,UAAU,SAAS,UAAU,UAAU;AAC5E,QAAM,yBAAyB,MAAM,kBAAAC,QAAG,WAAW,iBAAiB,KAAK,MAAM,kBAAAA,QAAG,WAAW,kBAAkB;AAE/G,MAAI,CAAC,wBAAwB;AACzB;AAAA,EACJ;AAEA,QAAM,eAAe,2BAA2B;AAAA,IAC5C,cAAM,OAAO,8HAAyH;AAAA,IACtI,cAAM,OAAO,+DAA+D;AAAA,IAC5E,cAAM,OAAO,kGAAkG;AAAA,EACnH,CAAC;AACL;AAEA,eAAe,WAAW,UAAkB,MAA6C;AACrF,QAAM,cAAcC,oBAAmB;AACvC,QAAM,eAAe,mBAAAF,QAAK,KAAK,aAAa,SAAS,eAAe;AACpE,QAAM,cAAc,mBAAAA,QAAK,KAAK,UAAU,OAAO;AAE/C,MAAI;AACA,QAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,YAAY,GAAI;AACtC,aAAO,EAAE,MAAM,UAAU,QAAQ,UAAU,QAAQ,+BAA+B,YAAY,GAAG;AAAA,IACrG;AAEA,UAAM,UAAU,MAAM,kBAAAA,QAAG,SAAS,mBAAAD,QAAK,KAAK,aAAa,cAAc,CAAC;AACxE,QAAI,KAAK,OAAO;AACZ,YAAM,oBAAoB;AAAA,QACtB,SAAS;AAAA,QACT,KAAK,QAAQ,IAAI;AAAA,QACjB,YAAY,QAAQ,WAAW;AAAA,MACnC,CAAC;AACD,YAAM,+BAA+B,WAAW;AAChD,YAAM,8BAA8B,EAAE,OAAO,KAAK,CAAC;AACnD,UAAI,qBAAqB,GAAG;AACxB,cAAM,8BAA8B,WAAW;AAC/C,cAAM,2BAA2B;AACjC,cAAM,uBAAuB;AAAA,MACjC;AACA,UAAI,sBAAsB,GAAG;AACzB,cAAM,0BAA0B,QAAQ;AAAA,MAC5C;AAAA,IACJ;AAEA,UAAM,QAAQ,MAAM,WAAW,cAAc,aAAa,KAAK,QAAQ,6BAA6B,IAAI,MAAS;AACjH,UAAM,WAAW,MAAM,YAAY,QAAQ;AAC3C,UAAM,eAAe,WACf,MAAM,+BAA+B,UAAU,KAAK,IACpD,EAAE,SAAS,OAAO,OAAO,iBAA0B;AACzD,UAAM,UAAU,WACV,MAAM,uBAAuB,UAAU,KAAK,IAC5C,EAAE,SAAS,OAAO,QAAQ,kBAA2B,MAAM,kBAA2B,UAAU,CAAC,EAAE;AACzG,UAAM,kBAAkB,MAAM,yBAAyB,UAAU,KAAK;AACtE,UAAM,wBAAwB,gBAAgB,SAAS,UAAU,YAC1D,gBAAgB,cAAc,UAAU,cACxC,gBAAgB,MAAM,KAAK,UAAQ,KAAK,UAAU,cAAc,KAAK,UAAU,SAAS;AAC/F,UAAM,kBAAkB,MAAM,QAAQ,SAAS,KAAK,MAAM,QAAQ,SAAS,KAAK,aAAa;AAC7F,UAAM,aAAa,mBAAmB,QAAQ,WAAW;AAEzD,QAAI,CAAC,KAAK,OAAO;AACb,aAAO;AAAA,QACH,MAAM;AAAA,QACN,QAAQ,aAAa,cAAc;AAAA,QACnC,QAAQ,aAAa,WAAW,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,MAAM,KAAK,0BAA0B,OAAO,CAAC,KAAK;AAAA,QACjI,aAAa;AAAA,MACjB;AAAA,IACJ;AAEA,QAAI,iBAAiB;AACjB,YAAM,WAAW;AAAA,QACb,OAAO;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,aAAa;AAAA,QACb,sBAAsB;AAAA,QACtB,uBAAuB;AAAA,QACvB,gBAAgB,qBAAqB,IAAI;AAAA,MAC7C,CAAC;AAAA,IACL;AAMA,UAAM,gBAAgB,MAAM,oBAAoB,UAAU,EAAE,OAAO,KAAK,CAAC;AACzE,UAAM,kBAAAC,QAAG,OAAO,mBAAAD,QAAK,KAAK,UAAU,SAAS,UAAU,QAAQ,CAAC;AAChE,UAAM,0BAA0B,QAAQ;AASxC,UAAM,WAAW,MAAM,4BAA4B,UAAU,EAAE,QAAQ,MAAM,CAAC;AAE9E,QAAI,CAAC,cAAc,cAAc,kBAAkB,CAAC,SAAS,SAAS;AAClE,aAAO,EAAE,MAAM,UAAU,QAAQ,mBAAmB,aAAa,gBAAgB;AAAA,IACrF;AAEA,UAAM,eAAe,WAAW,MAAM,uBAAuB,UAAU,IAAI,IAAI;AAC/E,UAAM,cAAc,MAAM,yBAAyB,UAAU,IAAI;AAEjE,UAAM,sBAAsB,cAAc,cAAc,SAAS,IAC3D,8BAA8B,cAAc,cAAc,KAAK,GAAG,CAAC,KACnE;AACN,UAAM,iBAAiB,SAAS,UAAU,2BAA2B;AACrE,WAAO;AAAA,MACH,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,WAAW,MAAM,QAAQ,MAAM,aAAa,MAAM,QAAQ,MAAM,KAAK,0BAA0B,YAAY,CAAC,GAAG,mBAAmB,GAAG,cAAc;AAAA,MAC3J;AAAA,IACJ;AAAA,EACJ,SAASG,SAAO;AACZ,WAAO;AAAA,MACH,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,QAAQ,mCAAmCA,SAAO,qBAAqB,IAAI,CAAC;AAAA,IAChF;AAAA,EACJ;AACJ;AAEA,SAAS,mCAAmCA,SAAgB,gBAAiC;AACzF,QAAM,UAAUA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AACrE,QAAM,SAAS;AACf,MAAI,CAAC,QAAQ,WAAW,MAAM,GAAG;AAC7B,WAAO;AAAA,EACX;AAEA,MAAI,kBAAkB,QAAQ,IAAI,UAAU,QAAQ;AAChD,WAAO;AAAA,EACX;AAEA,QAAM,QAAQ,QACT,MAAM,IAAI,EACV,MAAM,CAAC,EACP,IAAI,UAAQ,KAAK,KAAK,EAAE,QAAQ,SAAS,EAAE,CAAC,EAC5C,OAAO,OAAO;AACnB,QAAM,eAAe,MAAM,MAAM,GAAG,CAAC;AACrC,QAAM,YAAY,MAAM,SAAS,aAAa;AAC9C,SAAO,GAAG,MAAM,IAAI,aAAa,KAAK,IAAI,CAAC,GAAG,YAAY,IAAI,MAAM,SAAS,WAAW,EAAE;AAC9F;AAEA,SAAS,gBAAgB,kBAA+E;AACpG,MAAI,iBAAiB,QAAQ,WAAW,KAAK,iBAAiB,SAAS,WAAW,GAAG;AACjF;AAAA,EACJ;AAEA,UAAQ,IAAI,cAAM,KAAK,iBAAiB,CAAC;AACzC,UAAQ,IAAI,cAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;AAC5C,aAAW,UAAU,iBAAiB,UAAU;AAC5C,QAAI,OAAO,UAAU,UAAW;AAChC,YAAQ,IAAI,GAAG,OAAO,MAAM,OAAO,EAAE,CAAC,IAAI,OAAO,IAAI,WAAW,EAAE;AAAA,EACtE;AACJ;AAEA,SAAS,oBAAoB,UAA2D;AACpF,QAAM,SAAS,SAAS,UAAU,CAAC,UAAU,SAAS,CAAC;AACvD,MAAI,OAAO,WAAW,EAAG,QAAO,EAAE,IAAI,OAAO,SAAS,uBAAuB,OAAO,UAAU,OAAO,UAAU,IAAI,KAAK,CAAC,GAAG;AAC5H,MAAI,CAAC,OAAO,OAAO,KAAK,EAAG,QAAO;AAElC,QAAM,MAAM,SAAS,UAAU,CAAC,OAAO,IAAI,CAAC;AAC5C,MAAI,IAAI,WAAW,EAAG,QAAO,EAAE,IAAI,OAAO,SAAS,oBAAoB,IAAI,UAAU,IAAI,UAAU,IAAI,KAAK,CAAC,GAAG;AAEhH,QAAM,SAAS,SAAS,UAAU,CAAC,UAAU,MAAM,4DAA4D,CAAC;AAChH,MAAI,OAAO,WAAW,EAAG,QAAO,EAAE,IAAI,OAAO,SAAS,uBAAuB,OAAO,UAAU,OAAO,UAAU,IAAI,KAAK,CAAC,GAAG;AAC5H,QAAMC,QAAO,SAAS,UAAU,CAAC,aAAa,WAAW,MAAM,CAAC;AAChE,SAAO,EAAE,IAAI,MAAM,SAAS,aAAaA,MAAK,OAAO,KAAK,CAAC,GAAG;AAClE;AAEA,SAAS,SAAS,UAAkB,MAAgB;AAChD,aAAO,uCAAU,OAAO,MAAM;AAAA,IAC1B,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EACb,CAAC;AACL;AAEA,SAAS,WAAW,MAAgC;AAChD,QAAM,SAAS,KAAK,OAAO,CAAC,KAAK,SAAS;AAAA,IACtC,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,MAAM;AAAA,IACxC,QAAQ,KAAK,IAAI,IAAI,QAAQ,IAAI,OAAO,MAAM;AAAA,EAClD,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;AAE1B,UAAQ,IAAI,cAAM,KAAK,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC,KAAK,SAAS,OAAO,OAAO,MAAM,CAAC,UAAU,CAAC;AACpG,aAAW,OAAO,MAAM;AACpB,YAAQ,IAAI,GAAG,IAAI,KAAK,OAAO,OAAO,IAAI,CAAC,KAAK,IAAI,OAAO,OAAO,OAAO,MAAM,CAAC,KAAK,IAAI,UAAU,EAAE,EAAE;AAAA,EAC3G;AACJ;AAEO,SAAS,sBAA+B;AAC3C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,6MAA6M,EACzN,OAAO,WAAW,yCAAyC,KAAK,EAChE,OAAO,qBAAqB,qEAAqE,KAAK,EACtG,OAAO,gBAAgB,0DAA0D,EACjF,OAAO,eAAe,yHAAyH,KAAK,EACpJ,OAAO,iBAAiB,qCAAqC,EAC7D,OAAO,UAAU,qBAAqB,KAAK,EAC3C,OAAO,OAAO,SAAS;AACpB,UAAM,YAAY;AAClB,UAAM,EAAE,SAAS,WAAW,IAAI,MAAM,mBAAmB,SAAS;AAClE,UAAM,OAA2B,CAAC;AAClC,eAAW,QAAQ,SAAS;AACxB,YAAM,MAAM,MAAM,WAAW,MAAM,SAAS;AAC5C,UAAI,UAAU,YAAY,UAAU,SAAS,IAAI,WAAW,aAAa;AACrE,cAAM,eAAe,oBAAoB,IAAI;AAC7C,YAAI,cAAc;AACd,cAAI,SAAS,CAAC,IAAI,QAAQ,aAAa,OAAO,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AACzE,cAAI,CAAC,aAAa,GAAI,KAAI,SAAS;AAAA,QACvC;AAAA,MACJ;AACA,WAAK,KAAK,GAAG;AAAA,IACjB;AAIA,eAAW,QAAQ,YAAY;AAC3B,WAAK,KAAK;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,QACR,QAAQ;AAAA,MACZ,CAAC;AAAA,IACL;AAEA,UAAM,mBAAmB,MAAM,0BAA0B,QAAQ,UAAU,KAAK,CAAC;AAEjF,QAAI,KAAK,MAAM;AACX,cAAQ,IAAI,KAAK,UAAU,EAAE,OAAO,MAAM,UAAU,iBAAiB,GAAG,MAAM,CAAC,CAAC;AAAA,IACpF,OAAO;AACH,iBAAW,IAAI;AACf,iBAAW,OAAO,MAAM;AACpB,YAAI,IAAI,YAAa,mCAAkC,IAAI,WAAW;AAAA,MAC1E;AACA,sBAAgB,gBAAgB;AAAA,IACpC;AAEA,QAAI,KAAK,KAAK,SAAO,IAAI,WAAW,QAAQ,KAAK,iBAAiB,OAAO,SAAS,GAAG;AACjF,cAAQ,WAAW;AAAA,IACvB;AAAA,EACJ,CAAC;AACT;;;AI1TA;AACA,IAAAC,mBAA6B;AAC7B,IAAAC,8BAA0B;AAC1B,IAAAC,qBAAiB;;;ACJjB,IAAAC,mBAA0C;AAC1C,IAAAC,8BAA6B;AAC7B,IAAAC,qBAAiB;AAuBjB,IAAM,oBAAoB;AAC1B,IAAM,aAAa;AAEZ,SAAS,cAAc,KAAa,KAAqB;AAC9D,aAAO,0CAAa,OAAO,CAAC,OAAO,MAAM,gBAAgB,GAAG,GAAG;AAAA,IAC7D;AAAA,IACA,UAAU;AAAA,EACZ,CAAC,EAAE,KAAK;AACV;AAEA,SAAS,gBAAgB,SAA2B;AAClD,aAAO,8BAAY,mBAAAC,QAAK,KAAK,SAAS,UAAU,CAAC,EAC9C,OAAO,CAAC,UAAU,MAAM,SAAS,KAAK,CAAC,EACvC,KAAK,EACL,IAAI,CAAC,UAAU,mBAAAA,QAAK,KAAK,YAAY,KAAK,CAAC;AAChD;AAEA,SAAS,cAAcC,OAAc,OAAe,IAAqB;AACvE,SAAOA,SAAQ,SAASA,SAAQ;AAClC;AAEO,SAAS,cAAc,SAAiD;AAC7E,QAAM,UAAU,QAAQ,WAAW,QAAQ,IAAI;AAC/C,QAAM,YAAY,cAAc,QAAQ,OAAO,OAAO;AACtD,QAAM,SAAS,cAAc,QAAQ,IAAI,OAAO;AAEhD,SAAO,gBAAgB,OAAO,EAC3B,IAAI,CAAC,iBAAiB;AACrB,UAAMC,QAAO,mBAAAF,QAAK,SAAS,YAAY;AACvC,UAAMC,QAAOC,MAAK,MAAM,GAAG,EAAE;AAC7B,WAAO,EAAE,MAAM,cAAc,MAAAD,OAAM,OAAO,GAAG,SAAS,GAAG;AAAA,EAC3D,CAAC,EACA,OAAO,CAAC,WAAW,cAAc,OAAO,MAAM,WAAW,MAAM,CAAC,EAChE,IAAI,CAAC,WAAW;AACf,UAAM,cAAU,+BAAa,mBAAAD,QAAK,KAAK,SAAS,OAAO,IAAI,GAAG,MAAM;AACpE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,OAAO,OAAO,WAAW,SAAS,MAAM;AAAA,MACxC;AAAA,IACF;AAAA,EACF,CAAC;AACL;AAEO,SAAS,kBAAkB,SAA2B,WAAW,mBAAmC;AACzG,QAAM,WAA6B,CAAC;AACpC,QAAM,SAAmB,CAAC;AAC1B,MAAI,YAAY;AAEhB,aAAW,UAAU,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,UAAU,MAAM,KAAK,cAAc,KAAK,IAAI,CAAC,GAAG;AAC5F,UAAM,QAAQ,MAAM,OAAO,IAAI;AAAA;AAAA,EAAO,OAAO,QAAQ,KAAK,CAAC;AAAA;AAC3D,UAAM,aAAa,OAAO,WAAW,OAAO,MAAM;AAClD,QAAI,SAAS,SAAS,KAAK,YAAY,aAAa,SAAU;AAC9D,QAAI,SAAS,WAAW,KAAK,aAAa,UAAU;AAClD,eAAS,KAAK,MAAM;AACpB,aAAO,KAAK,KAAK;AACjB,mBAAa;AACb;AAAA,IACF;AACA,aAAS,KAAK,MAAM;AACpB,WAAO,KAAK,KAAK;AACjB,iBAAa;AAAA,EACf;AAEA,QAAM,SAAS,SAAS,SAAS,QAAQ;AACzC,QAAM,OAAO,SAAS,0BAA0B,QAAQ;AAAA;AAAA,IAAuC;AAE/F,SAAO;AAAA,IACL,SAAS;AAAA,IACT,QAAQ,GAAG,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,GAAG,QAAQ;AAAA,IAC9C;AAAA,IACA;AAAA,EACF;AACF;;;AD1FA,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAASG,KAAI,KAAa,MAAgB,KAAiE;AACzG,QAAM,aAAS,uCAAU,KAAK,MAAM,EAAE,KAAK,UAAU,QAAQ,OAAO,OAAO,CAAC;AAC5E,SAAO;AAAA,IACL,QAAQ,OAAO,UAAU;AAAA,IACzB,QAAQ,OAAO,UAAU;AAAA,IACzB,QAAQ,OAAO,UAAU;AAAA,EAC3B;AACF;AAEO,SAAS,aAAa,KAAqB;AAChD,QAAM,SAASA,KAAI,OAAO,CAAC,YAAY,UAAU,YAAY,GAAG,GAAG;AACnE,MAAI,OAAO,WAAW,KAAK,OAAO,OAAO,KAAK,EAAG,QAAO,OAAO,OAAO,KAAK;AAC3E,SAAO;AACT;AAEO,SAAS,kBAAkB,KAAqB;AACrD,SAAO,KAAK,UAAM,+BAAa,mBAAAC,QAAK,KAAK,KAAK,OAAO,cAAc,GAAG,MAAM,CAAC,EAAE;AACjF;AAEO,SAAS,cAAc,KAAqB;AACjD,SAAO,IAAI,kBAAkB,GAAG,CAAC;AACnC;AAEO,SAAS,qBAAqB,SAAoF;AACvH,SAAO;AAAA,IACL,gBAAgB,QAAQ,WAAW;AAAA,IACnC,SAAS,QAAQ,IAAI,KAAK,QAAQ,EAAE;AAAA,IACpC;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,EACV,EAAE,KAAK,IAAI;AACb;AAEO,SAAS,0BAA0B,KAAuB;AAC/D,QAAM,eAAe,oBAAoB,GAAG;AAC5C,SAAO,aAAa,OAAO,CAACC,UAAS,CAAC,uBAAuB,KAAK,CAAC,YAAY,QAAQ,KAAKA,KAAI,CAAC,CAAC;AACpG;AAEO,SAAS,wBAAwB,KAAmB;AACzD,QAAM,aAAa,0BAA0B,GAAG;AAChD,MAAI,WAAW,SAAS,GAAG;AACzB,YAAQ,MAAM,cAAM,IAAI;AAAA;AAAA;AAAA,IAA4H,WAAW,IAAI,CAACA,UAAS,KAAKA,KAAI,EAAE,EAAE,KAAK,MAAM,CAAC;AAAA,CAAI,CAAC;AAC3M,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,oBAAoB,KAAuB;AAClD,QAAM,UAAU;AAAA,IACdF,KAAI,OAAO,CAAC,QAAQ,aAAa,GAAG,GAAG,EAAE;AAAA,IACzCA,KAAI,OAAO,CAAC,QAAQ,eAAe,UAAU,GAAG,GAAG,EAAE;AAAA,IACrDA,KAAI,OAAO,CAAC,UAAU,aAAa,GAAG,GAAG,EAAE,OAAO,QAAQ,UAAU,EAAE;AAAA,EACxE;AACA,SAAO,CAAC,GAAG,IAAI,IAAI,QAAQ,QAAQ,CAAC,WAAW,OAAO,MAAM,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,EAAE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK;AACvH;AAEA,SAAS,sBAAsB,KAAa,UAAwB;AAClE,QAAM,SAASA,KAAI,MAAM,CAAC,UAAU,oBAAoB,eAAe,cAAc,QAAQ,GAAG,GAAG;AACnG,MAAI,OAAO,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,OAAO,MAAM;AAC5D,MAAI,OAAO,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,OAAO,MAAM;AAC5D,MAAI,OAAO,WAAW,EAAG,SAAQ,KAAK,OAAO,MAAM;AACrD;AAEO,SAAS,uBAAgC;AAC9C,SAAO,IAAI,QAAQ,SAAS,EACzB,YAAY,wDAAwD,EACpE,WAAW,4BAA4B,CAAC,EACxC,WAAW,4BAA4B,CAAC;AAC7C;AAEA,SAAS,8BAAuC;AAC9C,SAAO,IAAI,QAAQ,SAAS,EACzB,OAAO,WAAW,sBAAsB,KAAK,EAC7C,OAAO,WAAW,sBAAsB,KAAK,EAC7C,OAAO,WAAW,sBAAsB,KAAK,EAC7C,OAAO,gBAAgB,4BAA4B,EACnD,OAAO,cAAc,0BAA0B,EAC/C,OAAO,CAAC,SAAyF;AAChG,UAAM,MAAM,QAAQ,IAAI;AACxB,4BAAwB,GAAG;AAC3B,UAAM,OAAO,KAAK,QAAQ,aAAa,GAAG;AAC1C,UAAM,KAAK,KAAK,MAAM;AACtB,UAAM,cAAc,KAAK,QAAQ,UAAU,KAAK,QAAQ,UAAU;AAClE,UAAM,UAAU,cAAc,EAAE,OAAO,MAAM,IAAI,SAAS,IAAI,CAAC;AAC/D,UAAM,SAAS,kBAAkB,OAAO;AACxC,QAAI,OAAO,QAAQ,WAAW,GAAG;AAC/B,cAAQ,MAAM,cAAM,IAAI,sCAAiC,CAAC;AAC1D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,WAAW,qBAAqB,EAAE,MAAM,IAAI,QAAQ,OAAO,QAAQ,YAAY,CAAC;AACtF,0BAAsB,KAAK,QAAQ;AAAA,EACrC,CAAC;AACL;AAEA,SAAS,8BAAuC;AAC9C,SAAO,IAAI,QAAQ,SAAS,EACzB,OAAO,gBAAgB,wCAAwC,KAAK,EACpE,OAAO,CAAC,SAAiC;AACxC,UAAM,MAAM,QAAQ,IAAI;AACxB,4BAAwB,GAAG;AAC3B,UAAM,MAAM,cAAc,GAAG;AAE7B,UAAM,YAAYA,KAAI,OAAO,CAAC,OAAO,MAAM,KAAK,MAAM,YAAY,GAAG,EAAE,GAAG,GAAG;AAC7E,QAAI,UAAU,WAAW,GAAG;AAC1B,cAAQ,OAAO,MAAM,UAAU,UAAU,UAAU,MAAM;AACzD,cAAQ,KAAK,UAAU,MAAM;AAAA,IAC/B;AAEA,UAAM,aAAaA,KAAI,OAAO,CAAC,QAAQ,eAAe,GAAG,GAAG;AAC5D,QAAI,WAAW,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,WAAW,MAAM;AACpE,QAAI,WAAW,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,WAAW,MAAM;AACpE,QAAI,WAAW,WAAW,EAAG,SAAQ,KAAK,WAAW,MAAM;AAE3D,QAAI,KAAK,WAAW;AAClB,YAAM,WAAWA,KAAI,MAAM,CAAC,WAAW,UAAU,KAAK,kBAAkB,GAAG,GAAG;AAC9E,UAAI,SAAS,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,SAAS,MAAM;AAChE,UAAI,SAAS,OAAO,KAAK,EAAG,SAAQ,OAAO,MAAM,SAAS,MAAM;AAChE,UAAI,SAAS,WAAW,EAAG,SAAQ,KAAK,SAAS,MAAM;AAAA,IACzD;AAAA,EACF,CAAC;AACL;;;AErIA;AACA,IAAAG,oBAAe;AACf,IAAAC,qBAAiB;;;ACAV,IAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyCzB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyEtB,SAAS,YAAY,MAA4B;AACpD,SAAO,SAAS,SAAS,gBAAgB;AAC7C;AAQO,SAAS,eAAe,MAAoB,MAA4B;AAC3E,SAAO,YAAY,IAAI,EAClB,QAAQ,aAAa,KAAK,IAAI,EAC9B,QAAQ,cAAc,KAAK,KAAK,EAChC,QAAQ,oBAAoB,KAAK,UAAU;AACpD;;;AC/HO,SAASC,SAAQ,OAAuB;AAC3C,QAAM,aAAa,MACd,UAAU,MAAM,EAChB,QAAQ,UAAU,EAAE,EACpB,YAAY,EACZ,QAAQ,eAAe,GAAG,EAC1B,QAAQ,YAAY,EAAE;AAC3B,QAAM,YAAY,WAAW,MAAM,GAAG,EAAE,EAAE,QAAQ,OAAO,EAAE;AAC3D,SAAO,UAAU,SAAS,IAAI,YAAY;AAC9C;;;ACFO,SAAS,SAAS,QAAyB;AAC9C,QAAM,MAAK,oBAAI,KAAK,GAAE,YAAY;AAClC,QAAM,OAAO,KAAK,UAAU,EAAE,IAAI,WAAW,WAAW,GAAG,OAAO,CAAC;AACnE,UAAQ,OAAO,MAAM,OAAO,IAAI;AACpC;;;ACdO,IAAM,yBAAyB;AAEtC,IAAM,QAAQ,iBACT,OAAO,EACP,IAAI,CAAC,EACL,IAAI,EAAE,EACN,MAAM,qBAAqB,oCAAoC;AAEpE,IAAM,eAAe,iBAAE,KAAK,CAAC,OAAO,UAAU,QAAQ,UAAU,CAAC;AACjE,IAAM,aAAa,iBAAE,KAAK,CAAC,SAAS,aAAa,WAAW,UAAU,CAAC;AACvE,IAAM,YAAY,iBAAE,KAAK,CAAC,QAAQ,YAAY,SAAS,aAAa,CAAC;AACrE,IAAM,qBAAqB,iBAAE,KAAK,CAAC,QAAQ,eAAe,SAAS,OAAO,WAAW,CAAC;AAEtF,IAAM,oBAAoB,iBAAE,OAAO;AAAA,EAC/B,IAAI,iBAAE,OAAO,EAAE,MAAM,UAAU,oCAAoC;AAAA,EACnE,OAAO,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACvB,UAAU,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,YAAY,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAAA,EAC5C,YAAY,UAAU,SAAS;AAAA,EAC/B,UAAU,iBAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAClD,OAAO,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,SAAS;AACxC,CAAC;AAED,IAAM,uBAAuB,iBAAE,OAAO;AAAA,EAClC,MAAM;AAAA,EACN,QAAQ,iBAAE,OAAO,EAAE,IAAI,CAAC;AAC5B,CAAC;AAED,IAAM,mBAAmB,iBAAE,OAAO;AAAA,EAC9B,MAAM,iBAAE,OAAO,EAAE,MAAM,QAAQ;AAAA,EAC/B,UAAU,iBAAE,OAAO,EAAE,MAAM,QAAQ;AACvC,CAAC;AAED,IAAM,cAAc,iBAAE,OAAO;AAAA,EACzB,aAAa,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC5C,cAAc,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,MAAM,iBAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACrC,UAAU,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACxC,aAAa,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAEM,IAAM,eAAe,iBAAE,OAAO;AAAA,EACjC,gBAAgB,iBAAE,QAAQ,sBAAsB;AAAA,EAChD,IAAI;AAAA,EACJ,OAAO,iBAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAChC,QAAQ;AAAA,EACR,UAAU;AAAA,EAEV,SAAS,iBAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EACzB,SAAS,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAAA,EAEzC,OAAO,iBAAE,OAAO;AAAA,IACZ,SAAS,iBAAE,MAAM,iBAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAAA,IACzC,SAAS,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC3C,CAAC;AAAA,EAED,WAAW,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EACzC,aAAa,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAE3C,cAAc,iBAAE,MAAM,iBAAiB,EAAE,IAAI,CAAC;AAAA,EAC9C,YAAY,iBAAE,MAAM,oBAAoB,EAAE,QAAQ,CAAC,CAAC;AAAA,EACpD,cAAc,iBAAE,MAAM,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAAA,EAClD,gBAAgB,iBAAE,MAAM,iBAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;AAAA,EAE9C,OAAO,YAAY,QAAQ,EAAE,UAAU,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;AAChE,CAAC;;;AJ3DD,IAAAC,eAAmC;AAQ5B,SAAS,yBAAkC;AAC9C,SAAO,IAAI,QAAQ,OAAO,EACrB,YAAY,2DAA2D,EACvE,SAAS,iBAAiB,kDAAkD,EAC5E,OAAO,qBAAqB,mCAAmC,MAAM,EACrE,OAAO,gBAAgB,sDAAsD,EAC7E,OAAO,WAAW,0CAA0C,KAAK,EACjE,OAAO,OAAO,aAAqB,SAAuB;AACvD,UAAM,QAAQ,YAAY,KAAK;AAC/B,QAAI,CAAC,OAAO;AACR,cAAQ,MAAM,cAAM,IAAI,sCAAsC,CAAC;AAC/D,cAAQ,KAAK,EAAE;AAAA,IACnB;AACA,QAAI,KAAK,aAAa,aAAa,KAAK,aAAa,QAAQ;AACzD,cAAQ,MAAM,cAAM,IAAI,uDAAuD,KAAK,QAAQ,IAAI,CAAC;AACjG,cAAQ,KAAK,EAAE;AAAA,IACnB;AAEA,UAAM,OAAOC,SAAQ,KAAK;AAC1B,UAAM,UAAU,mBAAAC,QAAK,QAAQ,KAAK,OAAO,mBAAAA,QAAK,KAAK,cAAc,MAAM,WAAW,CAAC;AACnF,UAAM,SAAS,mBAAAA,QAAK,QAAQ,OAAO;AAEnC,QAAI,MAAM,kBAAAC,QAAG,WAAW,OAAO,KAAK,CAAC,KAAK,OAAO;AAC7C,cAAQ,MAAM,cAAM,IAAI,UAAU,OAAO,4CAA4C,CAAC;AACtF,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,kBAAAA,QAAG,UAAU,MAAM;AAGzB,UAAM,aAAa;AACnB,UAAM,UAAU,eAAe,KAAK,UAAU,EAAE,MAAM,OAAO,WAAW,CAAC;AAIzE,UAAM,aAAS,aAAAC,OAAU,OAAO;AAChC,UAAM,aAAa,aAAa,UAAU,MAAM;AAChD,QAAI,CAAC,WAAW,SAAS;AACrB,cAAQ,MAAM,cAAM,IAAI,oDAAoD,CAAC;AAC7E,cAAQ,MAAM,KAAK,UAAU,WAAW,MAAM,QAAQ,MAAM,CAAC,CAAC;AAC9D,cAAQ,KAAK,EAAE;AAAA,IACnB;AAEA,UAAM,kBAAAD,QAAG,UAAU,SAAS,SAAS,MAAM;AAC3C,aAAS,EAAE,OAAO,gBAAgB,SAAS,MAAM,MAAM,SAAS,UAAU,KAAK,SAAS,CAAC;AAEzF,YAAQ,IAAI,cAAM,MAAM,iBAAY,IAAI,OAAO;AAC/C,YAAQ,IAAI,cAAM,IAAI,0DAA0D,mBAAAD,QAAK,SAAS,QAAQ,IAAI,GAAG,OAAO,IAAI,GAAG,CAAC;AAAA,EAChI,CAAC;AACT;;;AKhEA;AACA,IAAAG,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,eAAmC;;;ACFnC,IAAM,iBAA6B,CAAC,OAAO,UAAU,QAAQ,UAAU;AAEhE,SAAS,KAAK,GAAqB;AACtC,SAAO,eAAe,QAAQ,CAAC;AACnC;AAEO,SAAS,cAAc,UAAoB,UAA8B;AAC5E,SAAO,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI,WAAW;AACxD;AAQA,IAAM,UAA6B;AAAA,EAC/B;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,WAAW,QAAQ,CAAC,GAAG,oEAAoE;AAAA,EAC5G;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,WAAW,QAAQ,CAAC,GAAG,+DAA+D;AAAA,EACvG;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,WAAW,QAAQ,CAAC,GAAG,kDAAkD;AAAA,EAC1F;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,EAAE,aAAa,SAAS;AAAA,EACzC;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,EAAE,eAAe,SAAS;AAAA,EAC3C;AAAA,EACA;AAAA,IACI,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM,CAAC,MAAM,EAAE,aAAa,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;AAAA,EACtE;AACJ;AAMO,SAAS,cAAc,MAAwB;AAClD,MAAI,QAAkB;AACtB,aAAW,OAAO,SAAS;AACvB,QAAI,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,GAAG;AACjD,cAAQ,IAAI;AAAA,IAChB;AAAA,EACJ;AACA,SAAO;AACX;AAMA,SAAS,QAAQ,MAAsB;AACnC,SAAO;AAAA,IACH,KAAK;AAAA,IACL,KAAK;AAAA,IACL,GAAG,KAAK;AAAA,IACR,GAAG,KAAK,MAAM;AAAA,IACd,GAAI,KAAK,MAAM,WAAW,CAAC;AAAA,IAC3B,GAAI,KAAK,aAAa,CAAC;AAAA,IACvB,GAAI,KAAK,eAAe,CAAC;AAAA,IACzB,GAAG,KAAK,aAAa,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,EAAE,YAAY,GAAI,EAAE,SAAS,CAAC,CAAE,CAAC;AAAA,IAC9F,GAAG,KAAK;AAAA,EACZ,EAAE,KAAK,MAAM;AACjB;AAEA,SAAS,WAAW,UAAkB,IAAqB;AACvD,SAAO,GAAG,KAAK,QAAQ;AAC3B;;;AC5EO,SAAS,YAAY,OAAmC;AAC3D,QAAM,SAAS,aAAa,UAAU,KAAK;AAC3C,MAAI,OAAO,QAAS,QAAO,EAAE,IAAI,MAAM,MAAM,OAAO,KAAK;AACzD,QAAM,SAA4B,OAAO,MAAM,OAAO,IAAI,CAACC,YAAW;AAAA,IAClE,MAAM;AAAA,IACN,YAAYA,OAAM,KAAK,SAASA,OAAM,KAAK,KAAK,GAAG,IAAI;AAAA,IACvD,UAAU;AAAA,IACV,SAASA,OAAM;AAAA,IACf,KAAK;AAAA,EACT,EAAE;AACF,SAAO,EAAE,IAAI,OAAO,OAAO;AAC/B;AAIA,IAAM,uBAAiC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,SAAS,mBAAmB,MAAiC;AAChE,QAAM,SAA4B,CAAC;AACnC,OAAK,MAAM,QAAQ,QAAQ,CAAC,OAAO,QAAQ;AACvC,UAAM,UAAU,MAAM,KAAK;AAC3B,UAAM,UACF,QAAQ,SAAS,KACjB,qBAAqB,KAAK,CAAC,MAAM,EAAE,KAAK,OAAO,CAAC,KAC/C,CAAC,QAAQ,SAAS,GAAG,KAAK,CAAC,QAAQ,SAAS,GAAG,KAAK,QAAQ,MAAM,KAAK,EAAE,UAAU;AACxF,QAAI,SAAS;AACT,aAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,YAAY,iBAAiB,GAAG;AAAA,QAChC,UAAU;AAAA,QACV,SAAS,gBAAgB,KAAK;AAAA,QAC9B,KAAK;AAAA,MACT,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAIA,IAAM,mBAAmB;AAAA,EACrB;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAU;AAAA,EAAW;AAAA,EAAe;AAAA,EACpD;AAAA,EAAO;AAAA,EAAa;AAAA,EAAc;AAAA,EAAY;AAClD;AAEO,SAAS,0BAA0B,MAAiC;AACvE,QAAM,SAA4B,CAAC;AACnC,OAAK,aAAa,QAAQ,CAAC,KAAK,SAAS;AACrC,QAAI,WAAW,QAAQ,CAAC,MAAM,SAAS;AACnC,YAAM,QAAQ,KAAK,YAAY;AAC/B,YAAM,MAAM,iBAAiB,KAAK,CAAC,MAAM,MAAM,SAAS,CAAC,CAAC;AAC1D,UAAI,KAAK;AACL,eAAO,KAAK;AAAA,UACR,MAAM;AAAA,UACN,YAAY,gBAAgB,IAAI,gBAAgB,IAAI;AAAA,UACpD,UAAU;AAAA,UACV,SAAS,yCAAyC,GAAG;AAAA,UACrD,KAAK;AAAA,QACT,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AACD,SAAO;AACX;AASA,IAAM,iBAA2D;AAAA,EAC7D,EAAE,OAAO,SAAS,SAAS,6DAA6D;AAAA,EACxF,EAAE,OAAO,YAAY,SAAS,8DAA8D;AAAA,EAC5F,EAAE,OAAO,eAAe,SAAS,qEAAqE;AAAA,EACtG,EAAE,OAAO,QAAQ,SAAS,8EAA8E;AAC5G;AAEA,SAAS,WAAW,KAAmD;AACnE,QAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,QAAQ,IAAI,IAAI,WAAW,KAAK,GAAG,CAAC;AACrE,aAAW,EAAE,OAAO,QAAQ,KAAK,gBAAgB;AAC7C,QAAI,QAAQ,KAAK,IAAI,EAAG,QAAO;AAAA,EACnC;AACA,SAAO;AACX;AAEO,SAAS,gBAAgB,MAAgC;AAC5D,QAAM,SAA4B,CAAC;AACnC,QAAM,iBAAwC,CAAC;AAC/C,OAAK,aAAa,QAAQ,CAAC,KAAK,QAAQ;AACpC,QAAI,IAAI,WAAY;AACpB,UAAM,WAAW,WAAW,GAAG;AAC/B,QAAI,UAAU;AACV,qBAAe,IAAI,EAAE,IAAI;AACzB,aAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,YAAY,gBAAgB,GAAG;AAAA,QAC/B,UAAU;AAAA,QACV,SAAS,0BAA0B,IAAI,EAAE,eAAe,QAAQ;AAAA,QAChE,KAAK,mBAAmB,QAAQ;AAAA,MACpC,CAAC;AAAA,IACL,OAAO;AACH,aAAO,KAAK;AAAA,QACR,MAAM;AAAA,QACN,YAAY,gBAAgB,GAAG;AAAA,QAC/B,UAAU;AAAA,QACV,SAAS,0BAA0B,IAAI,EAAE;AAAA,QACzC,KAAK;AAAA,MACT,CAAC;AAAA,IACL;AAAA,EACJ,CAAC;AACD,SAAO,EAAE,QAAQ,eAAe;AACpC;AAIO,SAAS,sBAAsB,MAAiC;AACnE,QAAM,SAAS,IAAI,IAAI,KAAK,aAAa,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AACzD,QAAM,QAAQ,KAAK,aAAa,OAAO,CAAC,MAAM,OAAO,IAAI,EAAE,IAAI,KAAK,OAAO,IAAI,EAAE,QAAQ,CAAC;AAE1F,QAAM,WAAW,oBAAI,IAAoB;AACzC,QAAM,MAAM,oBAAI,IAAsB;AACtC,aAAW,MAAM,QAAQ;AACrB,aAAS,IAAI,IAAI,CAAC;AAClB,QAAI,IAAI,IAAI,CAAC,CAAC;AAAA,EAClB;AACA,aAAW,KAAK,OAAO;AAEnB,QAAI,IAAI,EAAE,QAAQ,EAAG,KAAK,EAAE,IAAI;AAChC,aAAS,IAAI,EAAE,OAAO,SAAS,IAAI,EAAE,IAAI,KAAK,KAAK,CAAC;AAAA,EACxD;AAEA,QAAM,QAAQ,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,QAAQ,SAAS,IAAI,EAAE,KAAK,OAAO,CAAC;AACtE,MAAI,UAAU;AACd,SAAO,MAAM,QAAQ;AACjB,UAAM,OAAO,MAAM,MAAM;AACzB;AACA,eAAW,QAAQ,IAAI,IAAI,IAAI,KAAK,CAAC,GAAG;AACpC,eAAS,IAAI,OAAO,SAAS,IAAI,IAAI,KAAK,KAAK,CAAC;AAChD,UAAI,SAAS,IAAI,IAAI,MAAM,EAAG,OAAM,KAAK,IAAI;AAAA,IACjD;AAAA,EACJ;AAEA,MAAI,YAAY,OAAO,KAAM,QAAO,CAAC;AAErC,QAAM,QAAQ,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,QAAQ,SAAS,IAAI,EAAE,KAAK,KAAK,CAAC;AACpE,SAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS,wCAAwC,MAAM,KAAK,IAAI,CAAC;AAAA,MACjE,KAAK;AAAA,IACT;AAAA,EACJ;AACJ;AAIO,SAAS,kCACZ,MACA,WACiB;AACjB,MAAI,cAAc,UAAU,cAAc,WAAY,QAAO,CAAC;AAC9D,MAAI,KAAK,eAAe,WAAW,EAAG,QAAO,CAAC;AAC9C,SAAO;AAAA,IACH;AAAA,MACI,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS,0BAA0B,SAAS,SAAS,KAAK,eAAe,MAAM;AAAA,MAC/E,KAAK;AAAA,IACT;AAAA,EACJ;AACJ;;;AC5IO,SAASC,UAAS,OAAgB,OAAwB,CAAC,GAAqB;AACnF,QAAM,SAA4B,CAAC;AACnC,QAAM,WAA2B,CAAC;AAElC,QAAM,eAAe,YAAY,KAAK;AACtC,MAAI,CAAC,aAAa,IAAI;AAClB,WAAO;AAAA,MACH,IAAI;AAAA,MACJ,QAAQ,aAAa;AAAA,MACrB,UAAU,CAAC;AAAA,MACX;AAAA,IACJ;AAAA,EACJ;AACA,QAAM,OAAe,aAAa;AAElC,SAAO,KAAK,GAAG,mBAAmB,IAAI,CAAC;AACvC,SAAO,KAAK,GAAG,0BAA0B,IAAI,CAAC;AAE9C,QAAM,aAAa,gBAAgB,IAAI;AACvC,SAAO,KAAK,GAAG,WAAW,MAAM;AAChC,MAAI,OAAO,KAAK,WAAW,cAAc,EAAE,SAAS,GAAG;AACnD,aAAS,cAAc,WAAW;AAAA,EACtC;AAEA,SAAO,KAAK,GAAG,sBAAsB,IAAI,CAAC;AAE1C,QAAM,mBAAmB,cAAc,IAAI;AAC3C,QAAM,oBAAoB,cAAc,KAAK,UAAU,gBAAgB;AACvE,WAAS,WAAW;AAAA,IAChB,UAAU,KAAK;AAAA,IACf,UAAU;AAAA,IACV,WAAW;AAAA,EACf;AACA,MAAI,sBAAsB,KAAK,UAAU;AACrC,WAAO,KAAK;AAAA,MACR,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,SAAS,sBAAsB,KAAK,QAAQ,gBAAgB,iBAAiB;AAAA,MAC7E,KAAK,iBAAiB,iBAAiB;AAAA,IAC3C,CAAC;AAAA,EACL;AAEA,SAAO,KAAK,GAAG,kCAAkC,MAAM,iBAAiB,CAAC;AAEzE,QAAM,SAAS,OAAO,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO;AAC1D,QAAM,WAAW,OAAO,OAAO,CAAC,MAAM,EAAE,aAAa,SAAS;AAC9D,QAAMC,MAAK,OAAO,WAAW,MAAM,CAAC,KAAK,UAAU,SAAS,WAAW;AAEvE,SAAO,EAAE,IAAAA,KAAI,QAAQ,UAAU,SAAS;AAC5C;;;ACtGA;AAGO,SAAS,YAAY,QAA0B,YAA4B;AAC9E,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,cAAM,KAAK,qBAAqB,UAAU,EAAE,CAAC;AAExD,MAAI,OAAO,SAAS,UAAU;AAC1B,UAAM,IAAI,OAAO,SAAS;AAC1B,UAAM,QAAQ,EAAE,cAAc,EAAE,WAAW,KAAK,cAAM,OAAO,qBAAgB,EAAE,SAAS,EAAE;AAC1F,UAAM,KAAK,cAAM,IAAI,eAAe,EAAE,QAAQ,cAAc,EAAE,QAAQ,IAAI,KAAK,EAAE,CAAC;AAAA,EACtF;AAEA,MAAI,OAAO,OAAO,WAAW,KAAK,OAAO,SAAS,WAAW,GAAG;AAC5D,UAAM,KAAK,cAAM,MAAM,oBAAe,CAAC;AACvC,WAAO,MAAM,KAAK,IAAI;AAAA,EAC1B;AAEA,MAAI,OAAO,OAAO,SAAS,GAAG;AAC1B,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,cAAM,IAAI,KAAK,OAAO,OAAO,MAAM,SAAS,OAAO,OAAO,WAAW,IAAI,KAAK,GAAG,EAAE,CAAC;AAC/F,eAAW,KAAK,OAAO,OAAQ,OAAM,KAAK,GAAG,YAAY,GAAG,OAAO,CAAC;AAAA,EACxE;AACA,MAAI,OAAO,SAAS,SAAS,GAAG;AAC5B,UAAM,KAAK,EAAE;AACb,UAAM,KAAK,cAAM,OAAO,KAAK,OAAO,SAAS,MAAM,WAAW,OAAO,SAAS,WAAW,IAAI,KAAK,GAAG,EAAE,CAAC;AACxG,eAAW,KAAK,OAAO,SAAU,OAAM,KAAK,GAAG,YAAY,GAAG,SAAS,CAAC;AAAA,EAC5E;AACA,SAAO,MAAM,KAAK,IAAI;AAC1B;AAEA,SAAS,YAAYC,QAAwB,MAAqC;AAC9E,QAAM,MAAM,SAAS,UAAU,cAAM,IAAI,UAAK,IAAI,cAAM,OAAO,UAAK;AACpE,QAAM,MAAgB,CAAC;AACvB,MAAI,KAAK,GAAG,GAAG,IAAI,cAAM,KAAKA,OAAM,IAAI,CAAC,OAAO,cAAM,KAAKA,OAAM,UAAU,CAAC,EAAE;AAC9E,MAAI,KAAK,QAAQA,OAAM,OAAO,EAAE;AAChC,MAAIA,OAAM,IAAK,KAAI,KAAK,QAAQ,cAAM,IAAI,UAAUA,OAAM,GAAG,CAAC,EAAE;AAChE,SAAO;AACX;AAWO,SAAS,WAAW,QAA0B,YAAgC;AACjF,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,IAAI,OAAO;AAAA,IACX,QAAQ;AAAA,IACR,QAAQ,OAAO;AAAA,IACf,UAAU,OAAO;AAAA,IACjB,UAAU,OAAO;AAAA,EACrB;AACJ;;;AJ5CO,SAAS,4BAAqC;AACjD,SAAO,IAAI,QAAQ,UAAU,EACxB,YAAY,+DAA+D,EAC3E,SAAS,UAAU,mBAAmB,EACtC,OAAO,UAAU,uDAAuD,KAAK,EAC7E,OAAO,YAAY,4BAA4B,KAAK,EACpD,OAAO,OAAO,UAAkB,SAA6B;AAC1D,UAAM,UAAU,mBAAAC,QAAK,QAAQ,QAAQ;AACrC,QAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,OAAO,GAAI;AACjC,cAAQ,MAAM,cAAM,IAAI,UAAU,OAAO,YAAY,CAAC;AACtD,cAAQ,KAAK,EAAE;AAAA,IACnB;AAEA,UAAM,UAAU,KAAK,IAAI;AACzB,UAAM,MAAM,MAAM,kBAAAA,QAAG,SAAS,SAAS,MAAM;AAC7C,QAAI;AACJ,QAAI;AACA,mBAAS,aAAAC,OAAU,GAAG;AAAA,IAC1B,SAAS,KAAK;AACV,YAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC3D,UAAI,KAAK,MAAM;AACX,gBAAQ,OAAO,MAAM,KAAK,UAAU;AAAA,UAChC,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,QAAQ;AAAA,UACR,QAAQ,CAAC,EAAE,MAAM,oBAAoB,YAAY,UAAU,UAAU,SAAS,SAAS,IAAI,CAAC;AAAA,UAC5F,UAAU,CAAC;AAAA,UACX,UAAU,CAAC;AAAA,QACf,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,MACtB,OAAO;AACH,gBAAQ,MAAM,cAAM,IAAI,qBAAqB,GAAG,EAAE,CAAC;AAAA,MACvD;AACA,eAAS,EAAE,OAAO,kBAAkB,SAAS,MAAM,IAAI,OAAO,aAAa,GAAG,eAAe,GAAG,aAAa,KAAK,IAAI,IAAI,SAAS,aAAa,KAAK,CAAC;AACtJ,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,SAASC,UAAS,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC;AAEvD,QAAI,KAAK,MAAM;AACX,cAAQ,OAAO,MAAM,KAAK,UAAU,WAAW,QAAQ,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,IACpF,OAAO;AACH,cAAQ,OAAO,MAAM,YAAY,QAAQ,OAAO,IAAI,IAAI;AAAA,IAC5D;AAEA,UAAM,SAAU,UAAU,OAAO,WAAW,YAAY,QAAQ,SAAW,OAA4B,MAAM,OAAO;AACpH,aAAS;AAAA,MACL,OAAO;AAAA,MACP,SAAS;AAAA,MACT,IAAI,OAAO;AAAA,MACX,aAAa,OAAO,OAAO;AAAA,MAC3B,eAAe,OAAO,SAAS;AAAA,MAC/B,aAAa,KAAK,IAAI,IAAI;AAAA,IAC9B,CAAC;AAED,QAAI,CAAC,OAAO,GAAI,SAAQ,KAAK,CAAC;AAC9B,QAAI,OAAO,SAAS,SAAS,EAAG,SAAQ,KAAK,CAAC;AAC9C,YAAQ,KAAK,CAAC;AAAA,EAClB,CAAC;AACT;;;AKvEA;;;ACDA,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;;;ACqBV,IAAM,oBAAkC;AAAA,EAC3C;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AAAA,EACA;AAAA,IACI,KAAK;AAAA,IACL,OAAO;AAAA,IACP,cAAc;AAAA,IACd,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,QAAQ;AAAA,EACZ;AACJ;;;ADxEA,eAAsB,MAAM,UAAwC;AAChE,QAAM,UAAmC,CAAC;AAC1C,aAAW,cAAc,mBAAmB;AACxC,YAAQ,KAAK,MAAM,SAAS,YAAY,QAAQ,CAAC;AAAA,EACrD;AACA,QAAM,QAAQ,QAAQ,MAAM,CAAC,MAAM,EAAE,OAAO;AAC5C,SAAO,EAAE,QAAQ,wBAAwB,WAAW,UAAU,SAAS,MAAM;AACjF;AAEA,eAAe,SAAS,YAAwB,UAAkD;AAC9F,QAAM,aAAa,mBAAAC,QAAK,QAAQ,UAAU,WAAW,MAAM;AAC3D,MAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,UAAU,GAAI;AACpC,WAAO;AAAA,MACH;AAAA,MACA,SAAS;AAAA,MACT,QAAQ,qBAAqB,WAAW,MAAM;AAAA,IAClD;AAAA,EACJ;AACA,QAAM,OAAO,MAAM,kBAAAA,QAAG,SAAS,YAAY,MAAM;AACjD,QAAM,QAAQ,WAAW,OAAO,KAAK,IAAI;AACzC,MAAI,CAAC,OAAO;AACR,WAAO;AAAA,MACH;AAAA,MACA,SAAS;AAAA,MACT,QAAQ,UAAU,WAAW,OAAO,MAAM,gBAAgB,WAAW,MAAM;AAAA,IAC/E;AAAA,EACJ;AACA,SAAO;AAAA,IACH;AAAA,IACA,SAAS;AAAA,IACT,QAAQ,qBAAqB,MAAM,KAAK;AAAA,EAC5C;AACJ;;;ADrCO,SAAS,0BAAmC;AAC/C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,oEAAoE,EAChF,OAAO,UAAU,iCAAiC,KAAK,EACvD,OAAO,OAAO,SAAwB;AACnC,UAAM,WAAW,QAAQ,IAAI,qBACrB,MAAM,aAAa,EAAE,MAAM,MAAM,IAAI,KACtC,QAAQ,IAAI;AACnB,UAAM,SAAS,MAAM,MAAM,QAAQ;AAEnC,eAAW,KAAK,OAAO,SAAS;AAC5B,eAAS;AAAA,QACL,OAAO;AAAA,QACP,YAAY,EAAE,WAAW;AAAA,QACzB,SAAS,EAAE;AAAA,QACX,cAAc,EAAE,WAAW;AAAA,QAC3B,aAAa,EAAE,WAAW;AAAA,MAC9B,CAAC;AAAA,IACL;AAEA,QAAI,KAAK,MAAM;AACX,cAAQ,OAAO,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,IAAI;AAAA,IAC/D,OAAO;AACH,MAAAC,aAAY,MAAM;AAAA,IACtB;AAEA,YAAQ,KAAK,OAAO,QAAQ,IAAI,CAAC;AAAA,EACrC,CAAC;AACT;AAEA,SAASA,aAAY,QAAqJ;AACtK,UAAQ,IAAI,cAAM,KAAK,yEAAoE,CAAC;AAC5F,aAAW,KAAK,OAAO,SAAS;AAC5B,UAAM,OAAO,EAAE,UAAU,cAAM,MAAM,QAAG,IAAI,cAAM,IAAI,QAAG;AACzD,YAAQ,IAAI,KAAK,IAAI,IAAI,EAAE,WAAW,KAAK,EAAE;AAC7C,QAAI,CAAC,EAAE,SAAS;AACZ,cAAQ,IAAI,QAAQ,cAAM,IAAI,eAAe,EAAE,WAAW,YAAY,CAAC,EAAE;AACzE,cAAQ,IAAI,QAAQ,cAAM,IAAI,EAAE,MAAM,CAAC,EAAE;AAAA,IAC7C;AAAA,EACJ;AACA,MAAI,OAAO,OAAO;AACd,YAAQ,IAAI,cAAM,MAAM,qEAA2D,CAAC;AAAA,EACxF,OAAO;AACH,UAAM,UAAU,OAAO,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE;AACzD,YAAQ,IAAI,cAAM,IAAI;AAAA,SAAO,OAAO,sEAAiE,CAAC;AACtG,YAAQ,IAAI,cAAM,IAAI,oEAAoE,CAAC;AAAA,EAC/F;AACJ;;;AGxDA;AACA,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,8BAA0B;AAC1B,IAAAC,eAAmC;;;ACY5B,SAAS,KAAK,KAAa,UAA6C;AAC3E,SAAO,EAAE,KAAK,SAAS;AAC3B;AAMO,SAAS,OAAO,MAAe,SAAS,GAAW;AACtD,QAAM,MAAM,KAAK,OAAO,MAAM;AAC9B,MAAI,CAAC,KAAK,YAAY,KAAK,SAAS,WAAW,GAAG;AAC9C,WAAO,GAAG,GAAG,IAAI,KAAK,GAAG;AAAA,EAC7B;AACA,QAAMC,WAAU,KAAK,SAAS,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ;AAChE,MAAIA,UAAS;AACT,UAAM,OAAQ,KAAK,SAAsB,IAAIC,OAAM,EAAE,KAAK,EAAE,EAAE,KAAK;AACnE,QAAI,KAAK,WAAW,EAAG,QAAO,GAAG,GAAG,IAAI,KAAK,GAAG;AAChD,QAAI,CAAC,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI;AAC1C,aAAO,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,KAAK,GAAG;AAAA,IAClD;AACA,WAAO,GAAG,GAAG,IAAI,KAAK,GAAG;AAAA,EAAM,aAAa,MAAM,SAAS,CAAC,CAAC;AAAA,EAAK,GAAG,KAAK,KAAK,GAAG;AAAA,EACtF;AACA,QAAM,QAAQ,KAAK,SAAS,IAAI,CAAC,MAAM;AACnC,QAAI,OAAO,MAAM,SAAU,QAAO,aAAaA,QAAO,CAAC,GAAG,SAAS,CAAC;AACpE,WAAO,OAAO,GAAG,SAAS,CAAC;AAAA,EAC/B,CAAC,EAAE,KAAK,IAAI;AACZ,SAAO,GAAG,GAAG,IAAI,KAAK,GAAG;AAAA,EAAM,KAAK;AAAA,EAAK,GAAG,KAAK,KAAK,GAAG;AAC7D;AAEO,SAASA,QAAO,GAAmB;AACtC,SAAO,EACF,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ;AAC/B;AAEA,SAAS,aAAa,GAAW,aAA6B;AAC1D,QAAM,MAAM,KAAK,OAAO,WAAW;AACnC,SAAO,EACF,MAAM,IAAI,EACV,IAAI,CAAC,SAAU,KAAK,KAAK,EAAE,WAAW,IAAI,KAAK,MAAM,KAAK,KAAK,CAAE,EACjE,KAAK,IAAI;AAClB;AAGO,SAAS,QAAQ,OAA4B;AAChD,SAAO,MAAM,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC7C;;;ACrCO,SAAS,oBAAoB,QAAsC;AACtE,QAAM,OAAO,qBAAqB,MAAM;AACxC,SAAO,OAAO,IAAI,IAAI;AAC1B;AAEO,SAAS,qBAAqB,EAAE,MAAM,kBAAkB,GAAkC;AAC7F,QAAM,WAAW;AAAA,IACb,GAAG,KAAK,MAAM;AAAA,IACd,GAAG,KAAK;AAAA,EACZ;AAEA,QAAM,kBAAkB;AAAA,IACpB,GAAG,KAAK,aAAa;AAAA,MAAQ,CAAC,MAC1B,EAAE,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC,EAAE;AAAA,IAC3C;AAAA,IACA,GAAG,KAAK,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE,MAAM,EAAE;AAAA,EAC1D;AAEA,SAAO,KAAK,mBAAmB;AAAA,IAC3B,KAAK,WAAW,CAAC,KAAK,OAAO,CAAC;AAAA,IAC9B,KAAK,WAAW,QAAQ,KAAK,OAAO,CAAC;AAAA,IACrC,KAAK,YAAY,CAAC,iBAAiB,CAAC;AAAA,IACpC,KAAK,SAAS,QAAQ,KAAK,MAAM,OAAO,CAAC;AAAA,IACzC,KAAK,aAAa,QAAQ,QAAQ,CAAC;AAAA,IACnC,KAAK,eAAe,QAAQ,KAAK,WAAW,CAAC;AAAA,IAC7C,KAAK,cAAc,QAAQ,eAAe,CAAC;AAAA,IAC3C,KAAK,QAAQ;AAAA,EACjB,CAAC;AACL;;;ACzDA,IAAAC,8BAA0B;AAoBnB,SAAS,gBAAgB,eAAuB,OAAwB,CAAC,GAAmB;AAC/F,QAAM,KAAK,KAAK,YAAY,QAAQ,IAAI,qBAAqB;AAC7D,QAAM,QAAI,uCAAU,IAAI,CAAC,OAAO,WAAW,UAAU,eAAe,gBAAgB,QAAQ,GAAG;AAAA,IAC3F,UAAU;AAAA,EACd,CAAC;AACD,MAAI,EAAE,WAAW,GAAG;AAChB,WAAO,EAAE,IAAI,OAAO,QAAQ,EAAE,UAAU,EAAE,QAAQ,WAAW,EAAE,UAAU,EAAE;AAAA,EAC/E;AACA,MAAI;AACA,UAAM,SAAS,KAAK,MAAM,EAAE,MAAM;AAClC,UAAM,QAAQ,OAAO,UAAU,OAAO;AACtC,QAAI,OAAO,UAAU,UAAU;AAC3B,aAAO,EAAE,IAAI,OAAO,QAAQ,kCAAkC,EAAE,OAAO;AAAA,IAC3E;AACA,WAAO,EAAE,IAAI,MAAM,QAAQ,MAAM;AAAA,EACrC,QAAQ;AAEJ,UAAM,IAAI,gCAAgC,KAAK,EAAE,MAAM;AACvD,QAAI,EAAG,QAAO,EAAE,IAAI,MAAM,QAAQ,EAAE,CAAC,EAAE;AACvC,WAAO,EAAE,IAAI,OAAO,QAAQ,gCAAgC,EAAE,OAAO;AAAA,EACzE;AACJ;;;AH9BA;AAYA,IAAM,6BAA6B;AAE5B,SAAS,yBAAkC;AAC9C,SAAO,IAAI,QAAQ,OAAO,EACrB,YAAY,yFAAyF,EACrG,SAAS,UAAU,mBAAmB,EACtC,OAAO,gBAAgB,0DAA0D,KAAK,EACtF,OAAO,UAAU,+BAA+B,KAAK,EACrD,OAAO,aAAa,gEAAgE,KAAK,EACzF,OAAO,eAAe,kFAAkF,KAAK,EAC7G,OAAO,OAAO,UAAkB,SAAuB;AACpD,UAAM,UAAU,mBAAAC,QAAK,QAAQ,QAAQ;AACrC,QAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,OAAO,GAAI;AACjC,cAAQ,MAAM,cAAM,IAAI,UAAU,OAAO,YAAY,CAAC;AACtD,cAAQ,KAAK,EAAE;AAAA,IACnB;AAIA,QAAI,KAAK,WAAW;AAChB,YAAM,EAAE,gBAAAC,gBAAe,IAAI,MAAM;AACjC,YAAM,EAAE,WAAAC,WAAU,IAAI,MAAM;AAC5B,YAAMC,SAAQ,MAAMF,gBAAe,OAAO;AAC1C,UAAI,CAACE,QAAO;AACR,gBAAQ,MAAM,cAAM,IAAI,oDAAoD,IAAI,OAAO;AACvF,gBAAQ,MAAM,cAAM,IAAI,6EAA6E,CAAC;AACtG,gBAAQ,KAAK,CAAC;AAAA,MAClB;AACA,YAAM,SAAS,MAAMD,WAAU,SAASC,MAAK;AAC7C,UAAI,CAAC,OAAO,IAAI;AACZ,gBAAQ,MAAM,cAAM,IAAI,2BAAsB,IAAI,OAAO,KAAK;AAC9D,iBAAS,EAAE,OAAO,0BAA0B,OAAO,OAAO,OAAO,YAAY,OAAO,WAAW,CAAC;AAChG,gBAAQ,KAAK,CAAC;AAAA,MAClB;AACA,eAAS;AAAA,QACL,OAAO;AAAA,QACP,iBAAiBA,OAAM;AAAA,QACvB,SAAS,OAAO,eAAgB;AAAA,QAChC,gBAAgB,OAAO,eAAgB,SAAS;AAAA,QAChD,mBAAmB,OAAO,eAAgB,YAAY;AAAA,MAC1D,CAAC;AACD,YAAM,EAAE,wBAAAC,wBAAuB,IAAI,MAAM;AACzC,cAAQ,IAAIA,wBAAuB;AAAA,QAC/B,eAAeD,OAAM;AAAA,QACrB,cAAcA,OAAM;AAAA,QACpB,QAAQ,OAAO,eAAgB;AAAA,QAC/B,eAAe,OAAO,eAAgB,SAAS;AAAA,QAC/C,iBAAiB,OAAO,eAAgB,YAAY;AAAA,MACxD,CAAC,CAAC;AACF,eAAS;AAAA,QACL,OAAO;AAAA,QACP,SAAS,OAAO,eAAgB;AAAA,QAChC,cAAc,mBAAmB,OAAO,eAAgB,OAAO;AAAA,MACnE,CAAC;AACD,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,WAAW,QAAQ,IAAI,qBACrB,MAAM,aAAa,EAAE,MAAM,MAAM,IAAI,KACtC,QAAQ,IAAI;AAKnB,UAAM,cAAc,KAAK,SAAS,EAAE,OAAO,MAAM,SAAS,CAAC,EAA8D,IAAI,MAAM,MAAM,QAAQ;AACjJ,QAAI,CAAC,YAAY,OAAO;AACpB,YAAM,UAAU,YAAY,QAAQ,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG;AACzF,UAAI,KAAK,MAAM;AACX,gBAAQ,OAAO,MAAM,KAAK,UAAU;AAAA,UAChC,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,sBAAsB;AAAA,QAC1B,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,MACtB,OAAO;AACH,gBAAQ,MAAM,cAAM,IAAI,yEAA+D,CAAC;AACxF,gBAAQ,MAAM,cAAM,IAAI,wDAAwD,CAAC;AACjF,mBAAW,KAAK,QAAS,SAAQ,MAAM,cAAM,IAAI,mBAAmB,CAAC,CAAC;AAAA,MAC1E;AACA,eAAS,EAAE,OAAO,iBAAiB,QAAQ,aAAa,sBAAsB,QAAQ,CAAC;AACvF,cAAQ,KAAK,EAAE;AAAA,IACnB;AAEA,UAAM,MAAM,MAAM,kBAAAH,QAAG,SAAS,SAAS,MAAM;AAC7C,UAAM,aAAS,aAAAK,OAAU,GAAG;AAC5B,UAAM,KAAKC,UAAS,MAAM;AAC1B,QAAI,CAAC,GAAG,IAAI;AACR,UAAI,KAAK,MAAM;AACX,gBAAQ,OAAO,MAAM,KAAK,UAAU;AAAA,UAChC,QAAQ;AAAA,UACR,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,QAAQ,GAAG;AAAA,QACf,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,MACtB,OAAO;AACH,gBAAQ,MAAM,cAAM,IAAI,0DAAgD,CAAC;AACzE,mBAAW,KAAK,GAAG,OAAQ,SAAQ,MAAM,cAAM,IAAI,MAAM,EAAE,IAAI,OAAO,EAAE,UAAU,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,MACvG;AACA,eAAS,EAAE,OAAO,iBAAiB,QAAQ,YAAY,aAAa,GAAG,OAAO,OAAO,CAAC;AACtF,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,QAAI,KAAK,WAAW;AAChB,UAAI,KAAK,MAAM;AACX,gBAAQ,OAAO,MAAM,KAAK,UAAU,EAAE,QAAQ,oBAAoB,IAAI,MAAM,OAAO,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,MACtH,OAAO;AACH,gBAAQ,IAAI,cAAM,MAAM,sEAA4D,CAAC;AAAA,MACzF;AACA,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,OAAO,GAAG,OAAO,WAAW,KAAK,GAAG,SAAS,UAAU,IAAK,SAAuC;AAEzG,UAAM,oBAAoB,GAAG,SAAS,UAAU,aAAc,OAAgE;AAE9H,UAAM,MAAM,oBAAoB;AAAA,MAC5B,MAAM;AAAA,MACN;AAAA,MACA,YAAY;AAAA,IAChB,CAAC;AACD,UAAM,QAAQ,OAAO,WAAW,KAAK,MAAM;AAC3C,QAAI,QAAQ,4BAA4B;AACpC,cAAQ,MAAM,cAAM,IAAI,4DAAuD,KAAK,iBAAiB,0BAA0B,IAAI,CAAC;AACpI,cAAQ,MAAM,cAAM,IAAI,qEAAqE,CAAC;AAC9F,eAAS,EAAE,OAAO,iBAAiB,QAAQ,kBAAkB,MAAM,CAAC;AACpE,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,QAAI,KAAK,QAAQ;AACb,cAAQ,OAAO,MAAM,GAAG;AACxB,eAAS,EAAE,OAAO,iBAAiB,SAAU,OAA0B,IAAI,eAAe,MAAM,CAAC;AACjG,cAAQ,KAAK,CAAC;AAAA,IAClB;AAEA,UAAM,QAAQ,SAAU,OAA6B,KAAK;AAC1D,UAAM,UAAU,oBAAoB,EAAE,OAAO,aAAa,IAAI,CAAC;AAC/D,QAAI,CAAC,QAAQ,IAAI;AACb,cAAQ,MAAM,cAAM,IAAI,0BAAqB,CAAC;AAC9C,cAAQ,MAAM,QAAQ,MAAM;AAC5B,eAAS,EAAE,OAAO,oCAAoC,QAAQ,QAAQ,OAAO,CAAC;AAC9E,cAAQ,KAAK,QAAQ,YAAY,CAAC;AAAA,IACtC;AACA,aAAS;AAAA,MACL,OAAO;AAAA,MACP,SAAU,OAA0B;AAAA,MACpC,iBAAiB,QAAQ;AAAA,MACzB,eAAe;AAAA,IACnB,CAAC;AACD,YAAQ,IAAI,cAAM,MAAM,+BAA0B,IAAI,QAAQ,EAAE;AAGhE,UAAM,aAAa,gBAAgB,QAAQ,EAAG;AAC9C,QAAI,CAAC,WAAW,IAAI;AAChB,cAAQ,MAAM,cAAM,IAAI,4BAAuB,CAAC;AAChD,cAAQ,MAAM,WAAW,MAAM;AAC/B,eAAS;AAAA,QACL,OAAO;AAAA,QACP,iBAAiB,QAAQ;AAAA,QACzB,QAAQ,WAAW;AAAA,MACvB,CAAC;AACD,cAAQ,KAAK,WAAW,aAAa,CAAC;AAAA,IAC1C;AACA,UAAM,QAAQ;AAAA,MACV,QAAQ;AAAA,MACR,SAAU,OAA0B;AAAA,MACpC,WAAW;AAAA,MACX,iBAAiB,QAAQ;AAAA,MACzB,gBAAgB,WAAW;AAAA,MAC3B,gBAAe,oBAAI,KAAK,GAAE,YAAY;AAAA,IAC1C;AACA,UAAM,gBAAgB,SAAS,KAAK;AACpC,aAAS;AAAA,MACL,OAAO;AAAA,MACP,iBAAiB,QAAQ;AAAA,MACzB,gBAAgB,WAAW;AAAA,MAC3B,cAAc,YAAY,OAAO;AAAA,IACrC,CAAC;AACD,YAAQ,IAAI,cAAM,MAAM,6BAAwB,IAAI,WAAW,MAAM;AACrE,YAAQ,IAAI,cAAM,IAAI,YAAY,IAAI,WAAW,WAAW,MAAM,EAAE;AACpE,YAAQ,IAAI,cAAM,IAAI,sCAAsC,IAAI,iBAAiB,mBAAAP,QAAK,SAAS,QAAQ,IAAI,GAAG,OAAO,CAAC,cAAc;AACpI,YAAQ,IAAI,cAAM,IAAI,oEAA+D,CAAC;AAGtF,SAAK;AAAA,EACT,CAAC;AACT;AASA,SAAS,oBAAoB,MAA8D;AACvF,QAAMQ,MAAK,QAAQ,IAAI,qBAAqB;AAC5C,QAAM,QAAI;AAAA,IACNA;AAAA,IACA,CAAC,UAAU,UAAU,QAAQ,cAAc,KAAK,WAAW,KAAK,OAAO,iBAAiB,KAAK,aAAa,QAAQ;AAAA,IAClH,EAAE,UAAU,OAAO;AAAA,EACvB;AACA,MAAI,EAAE,WAAW,GAAG;AAChB,WAAO,EAAE,IAAI,OAAO,QAAQ,EAAE,UAAU,EAAE,QAAQ,UAAU,EAAE,UAAU,EAAE;AAAA,EAC9E;AACA,MAAI;AACA,UAAM,SAAS,KAAK,MAAM,EAAE,MAAM;AAClC,WAAO,EAAE,IAAI,MAAM,IAAI,OAAO,GAAG;AAAA,EACrC,QAAQ;AACJ,WAAO,EAAE,IAAI,OAAO,QAAQ,4CAA4C,EAAE,OAAO;AAAA,EACrF;AACJ;;;AIxOA;AACA,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,eAAmC;;;ACJnC,IAAAC,8BAA0B;AA2C1B,eAAsB,cAAc,MAAc,OAAsB,CAAC,GAA0B;AAC/F,QAAMC,MAAK,KAAK,YAAY,QAAQ,IAAI,qBAAqB;AAC7D,QAAM,OAAO,KAAK,MAAM,QAAQ;AAChC,QAAM,cAAc,KAAK,MAAM,gBAAgB;AAC/C,QAAM,MAAM;AAAA,IACR,GAAI,OAAO,CAAC,IAAI,IAAI,CAAC;AAAA,IACrB,GAAI,cAAc,CAAC,WAAW,IAAI,CAAC;AAAA,IACnC,GAAG,KAAK,MAAM;AAAA,IACd,GAAG,KAAK,MAAM;AAAA,EAClB;AAEA,QAAM,QAAsB,CAAC;AAC7B,MAAI,YAAY;AAChB,MAAI,cAAc;AAElB,aAAW,MAAM,KAAK;AAClB,UAAM,OAAO,OAAOA,KAAI,EAAE;AAC1B,QAAI,CAAC,MAAM;AACP,YAAM,KAAK,EAAE,MAAM,eAAe,IAAI,UAAU,SAAS,QAAQ,WAAW,EAAE,UAAU,CAAC;AACzF;AAAA,IACJ;AACA,QAAI,KAAK,WAAW,SAAU;AAAA,QACzB;AAAA,EACT;AAEA,MAAI,MAAM;AACN,UAAM,cAAc,eAAeA,KAAI,MAAM,KAAK,MAAM,QAAQ;AAChE,eAAW,MAAM,aAAa;AAC1B,YAAM,KAAK,EAAE,MAAM,aAAa,IAAI,UAAU,WAAW,QAAQ,YAAY,EAAE,gBAAgB,IAAI,+BAA+B,CAAC;AAAA,IACvI;AACA,UAAM,SAAS,SAASA,KAAI,IAAI;AAChC,eAAW,KAAK,QAAQ;AACpB,YAAM,KAAK,EAAE,MAAM,SAAS,IAAI,GAAG,UAAU,SAAS,QAAQ,4BAA4B,CAAC,GAAG,CAAC;AAAA,IACnG;AAAA,EACJ;AAEA,QAAM,WAAW,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa,OAAO,EAAE;AAC7D,QAAM,YAAY,MAAM,OAAO,CAAC,MAAM,EAAE,aAAa,SAAS,EAAE;AAChE,QAAMC,MAAK,aAAa;AACxB,QAAM,cAAcA,OAAM,YAAY;AAEtC,SAAO;AAAA,IACH,QAAQ;AAAA,IACR,SAAS,KAAK;AAAA,IACd,aAAa,KAAK;AAAA,IAClB,OAAO,EAAE,MAAM,cAAc,aAAa,UAAU,KAAK,MAAM,UAAU,aAAa,KAAK,MAAM,YAAY;AAAA,IAC7G,YAAY;AAAA,IACZ,cAAc;AAAA,IACd;AAAA,IACA,IAAAA;AAAA,IACA,cAAc;AAAA,EAClB;AACJ;AAEA,SAAS,OAAOD,KAAY,IAA2B;AACnD,QAAM,QAAI,uCAAUA,KAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AACpE,MAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,MAAI;AACA,WAAO,KAAK,MAAM,EAAE,MAAM;AAAA,EAC9B,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,eAAeA,KAAY,MAAc,eAAmC;AACjF,QAAM,QAAI,uCAAUA,KAAI,CAAC,YAAY,MAAM,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AAC1E,MAAI,EAAE,WAAW,EAAG,QAAO,CAAC;AAC5B,MAAI;AACA,UAAM,SAAS,KAAK,MAAM,EAAE,MAAM;AAClC,UAAM,OAAO,IAAI,IAAI,aAAa;AAClC,WAAO,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;AAAA,EAC/D,QAAQ;AACJ,WAAO,CAAC;AAAA,EACZ;AACJ;AAEA,SAAS,SAASA,KAAY,MAAwB;AAClD,QAAM,QAAI,uCAAUA,KAAI,CAAC,OAAO,UAAU,WAAW,MAAM,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AAC1F,MAAI,EAAE,WAAW,EAAG,QAAO,CAAC;AAC5B,MAAI;AACA,UAAM,SAAS,KAAK,MAAM,EAAE,MAAM;AAClC,QAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAC5C,aAAO,OAAO,IAAI,CAAC,MAAO,OAAO,MAAM,WAAW,IAAI,KAAK,UAAU,CAAC,CAAE;AAAA,IAC5E;AACA,WAAO,CAAC;AAAA,EACZ,QAAQ;AACJ,WAAO,CAAC;AAAA,EACZ;AACJ;;;ADtHO,SAAS,0BAAmC;AAC/C,SAAO,IAAI,QAAQ,QAAQ,EACtB,YAAY,mEAAmE,EAC/E,SAAS,UAAU,mBAAmB,EACtC,OAAO,UAAU,iCAAiC,KAAK,EACvD,OAAO,OAAO,UAAkB,SAAqB;AAClD,UAAM,UAAU,mBAAAE,QAAK,QAAQ,QAAQ;AACrC,QAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,OAAO,GAAI;AACjC,cAAQ,MAAM,cAAM,IAAI,UAAU,OAAO,YAAY,CAAC;AACtD,cAAQ,KAAK,EAAE;AAAA,IACnB;AACA,UAAM,aAAS,aAAAC,OAAU,MAAM,kBAAAD,QAAG,SAAS,SAAS,MAAM,CAAC;AAC3D,UAAM,QAAQ,aAAa,UAAU,MAAM;AAC3C,QAAI,CAAC,MAAM,SAAS;AAChB,cAAQ,MAAM,cAAM,IAAI,mEAAmE,UAAU,GAAG,CAAC;AACzG,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,UAAM,SAAS,MAAM,cAAc,MAAM,IAAI;AAC7C,QAAI,KAAK,MAAM;AACX,cAAQ,OAAO,MAAM,KAAK,UAAU,QAAQ,MAAM,CAAC,IAAI,IAAI;AAAA,IAC/D,OAAO;AACH,MAAAE,aAAY,MAAM;AAAA,IACtB;AACA,aAAS;AAAA,MACL,OAAO;AAAA,MACP,SAAS,MAAM,KAAK;AAAA,MACpB,YAAY,OAAO;AAAA,MACnB,cAAc,OAAO;AAAA,MACrB,YAAY,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,IAC9C,CAAC;AACD,QAAI,CAAC,OAAO,GAAI,SAAQ,KAAK,CAAC;AAC9B,QAAI,OAAO,aAAc,SAAQ,KAAK,CAAC;AACvC,YAAQ,KAAK,CAAC;AAAA,EAClB,CAAC;AACT;AAEA,SAASA,aAAY,QAA4B;AAC7C,UAAQ,IAAI,cAAM,KAAK,mBAAmB,OAAO,OAAO,EAAE,CAAC;AAC3D,UAAQ,IAAI,cAAM,IAAI,mBAAmB,OAAO,WAAW,EAAE,CAAC;AAC9D,UAAQ,IAAI,cAAM,IAAI,kBAAkB,OAAO,MAAM,QAAQ,MAAM,aAAa,OAAO,MAAM,gBAAgB,MAAM,cAAc,OAAO,MAAM,SAAS,MAAM,WAAW,OAAO,MAAM,YAAY,MAAM,EAAE,CAAC;AAC1M,UAAQ,IAAI,cAAM,IAAI,eAAe,OAAO,UAAU,UAAU,OAAO,YAAY,SAAS,CAAC;AAE7F,MAAI,OAAO,MAAM,WAAW,GAAG;AAC3B,YAAQ,IAAI,cAAM,MAAM,kBAAa,CAAC;AACtC;AAAA,EACJ;AACA,aAAW,KAAK,OAAO,OAAO;AAC1B,UAAM,MAAM,EAAE,aAAa,UAAU,cAAM,IAAI,UAAK,IAAI,cAAM,OAAO,UAAK;AAC1E,YAAQ,IAAI,GAAG,GAAG,IAAI,cAAM,KAAK,EAAE,IAAI,CAAC,IAAI,cAAM,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE;AAAA,EACpF;AACJ;;;AE9DA;AACA,IAAAC,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,eAAkD;;;ACJlD,IAAAC,8BAA0B;AAgC1B,eAAsB,iBAAiB,MAAc,OAAoB,CAAC,GAAwB;AAC9F,QAAMC,MAAK,KAAK,YAAY,QAAQ,IAAI,qBAAqB;AAC7D,QAAM,WAA0B,CAAC;AAEjC,MAAI,KAAK,WAAW,YAAY;AAC5B,aAAS,KAAK,EAAE,MAAM,oBAAoB,QAAQ,kCAAkC,CAAC;AACrF,WAAO,EAAE,IAAI,OAAO,SAAS;AAAA,EACjC;AACA,MAAI,KAAK,WAAW,WAAW;AAC3B,aAAS,KAAK,EAAE,MAAM,gBAAgB,QAAQ,uDAAuD,KAAK,MAAM,KAAK,CAAC;AAAA,EAC1H;AAEA,QAAM,OAAO,KAAK,MAAM;AACxB,MAAI,CAAC,MAAM;AACP,aAAS,KAAK,EAAE,MAAM,gBAAgB,QAAQ,4DAAuD,CAAC;AACtG,WAAO,EAAE,IAAI,SAAS,WAAW,GAAG,SAAS;AAAA,EACjD;AAEA,QAAM,aAAa,SAASA,KAAI,IAAI;AACpC,MAAI,eAAe,UAAU;AACzB,aAAS,KAAK,EAAE,MAAM,aAAa,QAAQ,QAAQ,IAAI,eAAe,cAAc,SAAS,oBAAoB,CAAC;AAAA,EACtH;AAEA,aAAW,MAAM,KAAK,MAAM,UAAU;AAClC,UAAM,IAAI,SAASA,KAAI,EAAE;AACzB,QAAI,MAAM,SAAU,UAAS,KAAK,EAAE,MAAM,cAAc,QAAQ,SAAS,EAAE,YAAY,KAAK,SAAS,IAAI,CAAC;AAAA,EAC9G;AACA,aAAW,MAAM,KAAK,MAAM,aAAa;AACrC,UAAM,IAAI,SAASA,KAAI,EAAE;AACzB,QAAI,MAAM,SAAU,UAAS,KAAK,EAAE,MAAM,aAAa,QAAQ,cAAc,EAAE,YAAY,KAAK,SAAS,IAAI,CAAC;AAAA,EAClH;AAEA,MAAI,KAAK,aAAa,UAAU,KAAK,aAAa,YAAY;AAC1D,UAAM,SAAS,KAAKA,KAAI,YAAY,IAAI,EAAE;AAC1C,QAAI,CAAC,QAAQ;AACT,eAAS,KAAK;AAAA,QACV,MAAM;AAAA,QACN,QAAQ,YAAY,KAAK,QAAQ,kCAAkC,IAAI;AAAA,MAC3E,CAAC;AAAA,IACL;AAAA,EACJ;AAEA,QAAM,SAAS,MAAM,cAAc,MAAM,EAAE,UAAUA,IAAG,CAAC;AACzD,MAAI,CAAC,OAAO,MAAM,OAAO,MAAM,SAAS,GAAG;AACvC,UAAM,aAAa,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,IAAI;AAC5D,aAAS,KAAK,EAAE,MAAM,iBAAiB,QAAQ,iCAAiC,cAAc,aAAa,GAAG,CAAC;AAAA,EACnH;AAEA,SAAO,EAAE,IAAI,SAAS,WAAW,GAAG,SAAS;AACjD;AAEA,SAAS,SAASA,KAAY,IAA2B;AACrD,QAAM,QAAI,uCAAUA,KAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG,EAAE,UAAU,OAAO,CAAC;AACpE,MAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,MAAI;AACA,WAAQ,KAAK,MAAM,EAAE,MAAM,EAA0B,UAAU;AAAA,EACnE,QAAQ;AACJ,WAAO;AAAA,EACX;AACJ;AAEA,SAAS,KAAKA,KAAY,KAA4B;AAClD,QAAM,QAAI,uCAAUA,KAAI,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE,UAAU,OAAO,CAAC;AAChE,MAAI,EAAE,WAAW,EAAG,QAAO;AAC3B,QAAM,QAAQ,EAAE,OAAO,KAAK;AAC5B,SAAO,MAAM,SAAS,IAAI,QAAQ;AACtC;;;ADrFO,SAAS,2BAAoC;AAChD,SAAO,IAAI,QAAQ,SAAS,EACvB,YAAY,6GAA6G,EACzH,SAAS,UAAU,mBAAmB,EACtC,OAAO,UAAU,iCAAiC,KAAK,EACvD,OAAO,OAAO,UAAkB,SAAsB;AACnD,UAAM,UAAU,mBAAAC,QAAK,QAAQ,QAAQ;AACrC,QAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,OAAO,GAAI;AACjC,cAAQ,MAAM,cAAM,IAAI,UAAU,OAAO,YAAY,CAAC;AACtD,cAAQ,KAAK,EAAE;AAAA,IACnB;AACA,UAAM,MAAM,MAAM,kBAAAA,QAAG,SAAS,SAAS,MAAM;AAC7C,UAAM,aAAS,aAAAC,OAAU,GAAG;AAC5B,UAAM,QAAQ,aAAa,UAAU,MAAM;AAC3C,QAAI,CAAC,MAAM,SAAS;AAChB,cAAQ,MAAM,cAAM,IAAI,mEAAmE,UAAU,GAAG,CAAC;AACzG,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,UAAM,OAAO,MAAM,iBAAiB,MAAM,IAAI;AAC9C,QAAI,CAAC,KAAK,IAAI;AACV,UAAI,KAAK,MAAM;AACX,gBAAQ,OAAO,MAAM,KAAK,UAAU,EAAE,QAAQ,sBAAsB,IAAI,OAAO,UAAU,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,IAAI;AAAA,MAC7H,OAAO;AACH,gBAAQ,MAAM,cAAM,IAAI,8CAAoC,CAAC;AAC7D,mBAAW,KAAK,KAAK,UAAU;AAC3B,kBAAQ,MAAM,cAAM,IAAI,KAAK,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM;AAAA,QACvD;AAAA,MACJ;AACA,eAAS,EAAE,OAAO,wBAAwB,SAAS,MAAM,KAAK,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;AAC3G,cAAQ,KAAK,CAAC;AAAA,IAClB;AAGA,UAAM,aAAa,mBAAAF,QAAK,KAAK,mBAAAA,QAAK,QAAQ,OAAO,GAAG,SAAS;AAC7D,UAAM,WAAW,mBAAAA,QAAK,KAAK,YAAY,GAAG,MAAM,KAAK,EAAE,OAAO;AAC9D,UAAM,kBAAAC,QAAG,UAAU,UAAU;AAC7B,QAAI,MAAM,kBAAAA,QAAG,WAAW,QAAQ,GAAG;AAC/B,cAAQ,MAAM,cAAM,IAAI,6CAA6C,QAAQ,EAAE,CAAC;AAChF,cAAQ,KAAK,CAAC;AAAA,IAClB;AACA,UAAM,kBAAAA,QAAG,UAAU,UAAU,KAAK,MAAM;AAGxC,UAAM,UAAM,4BAAc,GAAG;AAC7B,QAAI,IAAI,UAAU,UAAU;AAC5B,UAAM,MAAM,OAAO,GAAG;AACtB,UAAM,MAAM,GAAG,OAAO;AACtB,UAAM,kBAAAA,QAAG,UAAU,KAAK,IAAI,SAAS,IAAI,IAAI,MAAM,MAAM,MAAM,MAAM;AACrE,UAAM,kBAAAA,QAAG,OAAO,KAAK,OAAO;AAE5B,aAAS,EAAE,OAAO,iBAAiB,SAAS,MAAM,KAAK,IAAI,SAAS,CAAC;AACrE,YAAQ,IAAI,cAAM,MAAM,mBAAc,IAAI,mBAAAD,QAAK,SAAS,QAAQ,IAAI,GAAG,OAAO,CAAC;AAC/E,YAAQ,IAAI,cAAM,IAAI,cAAc,IAAI,mBAAAA,QAAK,SAAS,QAAQ,IAAI,GAAG,QAAQ,CAAC;AAC9E,YAAQ,KAAK,CAAC;AAAA,EAClB,CAAC;AACT;;;AE5DO,SAAS,oBAA6B;AACzC,QAAM,MAAM,IAAI,QAAQ,MAAM,EACzB,YAAY,kGAA6F;AAC9G,MAAI,WAAW,uBAAuB,CAAC;AACvC,MAAI,WAAW,0BAA0B,CAAC;AAC1C,MAAI,WAAW,wBAAwB,CAAC;AACxC,MAAI,WAAW,uBAAuB,CAAC;AACvC,MAAI,WAAW,wBAAwB,CAAC;AACxC,MAAI,WAAW,yBAAyB,CAAC;AACzC,SAAO;AACX;;;ACjBA;AACA,IAAAG,oBAAe;AACf,IAAAC,qBAAiB;AACjB,IAAAC,uBAAmB;AACnB,IAAAC,mBAAe;AACf,IAAAC,wBAA0B;;;ACN1B,IAAAC,oBAAe;AACf,IAAAC,mBAAe;AACf,IAAAC,qBAAiB;AAajB,SAAS,wBAAgC;AACvC,SAAO,mBAAAC,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,SAAS,kBAAkB;AAC5D;AAEA,eAAe,iBAA0C;AACvD,QAAM,iBAAiB,sBAAsB;AAC7C,MAAI,CAAC,MAAM,kBAAAC,QAAG,WAAW,cAAc,GAAG;AACxC,WAAO,EAAE,OAAO,CAAC,EAAE;AAAA,EACrB;AAEA,MAAI;AACF,UAAM,OAAO,MAAM,kBAAAA,QAAG,SAAS,cAAc;AAC7C,WAAO,EAAE,OAAO,KAAK,SAAS,CAAC,EAAE;AAAA,EACnC,QAAQ;AACN,WAAO,EAAE,OAAO,CAAC,EAAE;AAAA,EACrB;AACF;AAEA,eAAe,gBAAgB,MAAqC;AAClE,QAAM,iBAAiB,sBAAsB;AAC7C,QAAM,kBAAAA,QAAG,UAAU,mBAAAF,QAAK,QAAQ,cAAc,CAAC;AAC/C,QAAM,kBAAAE,QAAG,UAAU,gBAAgB,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtD,QAAM,kBAAAA,QAAG,WAAW,gBAAgB,IAAI;AAC1C;AAEA,eAAsB,iBACpB,UACA,MACe;AACf,QAAM,OAAO,MAAM,eAAe;AAClC,QAAM,iBAAiB,mBAAAF,QAAK,QAAQ,QAAQ;AAE5C,QAAM,WAAW,KAAK,MAAM,cAAc,KAAK;AAAA,IAC7C,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,IACnC,gBAAgB;AAAA,IAChB,eAAe;AAAA,EACjB;AAEA,OAAK,MAAM,cAAc,IAAI;AAAA,IAC3B,GAAG;AAAA,IACH,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,IACnC,gBAAgB,KAAK,kBAAkB,SAAS;AAAA,IAChD,eAAe,KAAK,iBAAiB,SAAS;AAAA,IAC9C,YAAY,KAAK,cAAc,SAAS;AAAA,EAC1C;AAEA,QAAM,gBAAgB,IAAI;AAC5B;AAEA,eAAsB,eACpB,UACA,MACkB;AAClB,QAAM,OAAO,MAAM,eAAe;AAClC,QAAM,iBAAiB,mBAAAA,QAAK,QAAQ,QAAQ;AAC5C,QAAM,QAAQ,KAAK,MAAM,cAAc;AAEvC,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,UAAU,CAAC,MAAM,gBAAgB;AACxC,WAAO;AAAA,EACT;AAEA,MAAI,KAAK,SAAS,CAAC,MAAM,eAAe;AACtC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ADzDA,SAAS,uBAAuB,YAA+C;AAC7E,QAAM,OAAO,mBAAAG,QAAK,SAAS,UAAU;AACrC,MAAI,KAAK,WAAW,SAAS,EAAG,QAAO;AACvC,MAAI,KAAK,WAAW,QAAQ,EAAG,QAAO;AACtC,SAAO;AACT;AAEA,eAAeC,eACb,UACA,YACA,MAC+D;AAC/D,MAAI,CAAC,mBAAAD,QAAK,WAAW,UAAU,KAAK,CAAC,WAAW,WAAW,GAAG,GAAG;AAC/D,UAAM,IAAI,MAAM,iDAAiD,UAAU,EAAE;AAAA,EAC/E;AACA,QAAM,iBAAiB,WAAW,WAAW,GAAG,IAC5C,mBAAAA,QAAK,KAAK,iBAAAE,QAAG,QAAQ,GAAG,WAAW,MAAM,CAAC,EAAE,QAAQ,OAAO,EAAE,CAAC,IAC9D;AAEJ,MAAI,CAAE,MAAM,kBAAAC,QAAG,WAAW,cAAc,GAAI;AAC1C,UAAM,IAAI,MAAM,qBAAqB,cAAc,EAAE;AAAA,EACvD;AAEA,QAAM,YAAY,uBAAuB,cAAc;AACvD,MAAI,CAAC,WAAW;AACd,UAAM,IAAI;AAAA,MACR,gFAAgF,mBAAAH,QAAK,SAAS,cAAc,CAAC;AAAA,IAC/G;AAAA,EACF;AAEA,QAAM,YAAY,mBAAAA,QAAK,KAAK,UAAU,SAAS,SAAS;AACxD,QAAM,iBAAiB,cAAc,WACjC,mBAAAA,QAAK,KAAK,WAAW,SAAS,IAC9B;AACJ,MAAI,MAAM,kBAAAG,QAAG,WAAW,cAAc,GAAG;AACvC,QAAI,CAAC,KAAK,OAAO;AACf,YAAM,IAAI;AAAA,QACR,0BAA0B,cAAc;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAEA,MAAI,KAAK,QAAQ;AACf,YAAQ,IAAI,cAAM,IAAI,mBAAmB,cAAc,EAAE,CAAC;AAC1D,YAAQ,IAAI,cAAM,IAAI,UAAU,mBAAAH,QAAK,KAAK,UAAU,OAAO,CAAC,EAAE,CAAC;AAC/D,WAAO,EAAE,WAAW,UAAU;AAAA,EAChC;AAEA,MAAI,MAAM,kBAAAG,QAAG,WAAW,SAAS,GAAG;AAClC,UAAM,kBAAAA,QAAG,OAAO,SAAS;AAAA,EAC3B;AAEA,QAAM,cAAc,mBAAAH,QAAK,KAAK,UAAU,OAAO;AAC/C,QAAM,kBAAAG,QAAG,UAAU,WAAW;AAE9B,QAAM,aAAS,iCAAU,OAAO,CAAC,QAAQ,gBAAgB,MAAM,WAAW,GAAG;AAAA,IAC3E,OAAO;AAAA,EACT,CAAC;AACD,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI;AAAA,MACR,6BAA6B,OAAO,OAAO,SAAS,KAAK,eAAe;AAAA,IAC1E;AAAA,EACF;AAEA,QAAM,kBAAkB,MAAM,kBAAAA,QAAG,SAAS,WAAW;AACrD,QAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,SAAS;AAC9C,QAAM,MAAM,mBAAAH,QAAK,SAAS,iBAAiB,UAAU;AACrD,MAAI,IAAI,WAAW,IAAI,KAAK,mBAAAA,QAAK,WAAW,GAAG,GAAG;AAChD,UAAM,IAAI;AAAA,MACR,oCAAoC,UAAU,YAAY,eAAe;AAAA,IAC3E;AAAA,EACF;AAEA,SAAO,EAAE,WAAW,UAAU;AAChC;AAEA,eAAe,uBAAuB,UAA0C;AAC9E,QAAM,UAAU,mBAAAA,QAAK,KAAK,UAAU,cAAc;AAClD,MAAI,MAAM,kBAAAG,QAAG,WAAW,OAAO,GAAG;AAChC,QAAI;AACF,YAAM,MAAM,MAAM,kBAAAA,QAAG,SAAS,OAAO;AACrC,UAAI,KAAK,SAAS,aAAc,QAAO;AAAA,IACzC,QAAQ;AAAA,IAA8C;AAAA,EACxD;AACA,MAAI,MAAM,kBAAAA,QAAG,WAAW,mBAAAH,QAAK,KAAK,UAAU,WAAW,kBAAkB,CAAC,GAAG;AAC3E,WAAO;AAAA,EACT;AACA,MAAI,MAAM,kBAAAG,QAAG,WAAW,mBAAAH,QAAK,KAAK,UAAU,WAAW,+BAA+B,CAAC,GAAG;AACxF,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAeA,SAASI,kBAAyB;AAChC,SAAO,mBAAAJ,QAAK,KAAK,iBAAAE,QAAG,QAAQ,GAAG,SAAS,QAAQ,wBAAwB;AAC1E;AAEA,eAAe,mBAAmB,OAAyC;AACzE,QAAM,UAAUE,gBAAe;AAC/B,QAAM,kBAAAD,QAAG,UAAU,mBAAAH,QAAK,QAAQ,OAAO,CAAC;AACxC,QAAM,kBAAAG,QAAG,WAAW,SAAS,GAAG,KAAK,UAAU,KAAK,CAAC;AAAA,CAAI;AAC3D;AAEA,SAASE,UAAS,UAA0B;AAC1C,QAAM,UAAU,kBAAAF,QAAG,aAAa,QAAQ;AACxC,SAAO,qBAAAG,QAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AACjE;AAMA,eAAe,oBACb,WACA,YACiB;AACjB,QAAM,aAAa,mBAAAC,QAAK,KAAK,iBAAAC,QAAG,QAAQ,GAAG,SAAS,mBAAmB;AACvE,QAAM,kBAAAC,QAAG,UAAU,UAAU;AAE7B,QAAM,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,SAAS,GAAG;AAC/D,QAAM,aAAa,mBAAAF,QAAK,KAAK,YAAY,GAAG,UAAU,IAAI,SAAS,MAAM;AAEzE,QAAM,iBAAiB,mBAAAA,QAAK,SAAS,SAAS;AAC9C,QAAM,YAAY,mBAAAA,QAAK,QAAQ,SAAS;AAExC,QAAM,aAAS,iCAAU,OAAO;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAG;AAAA,IACD,OAAO;AAAA,EACT,CAAC;AAED,MAAI,OAAO,WAAW,GAAG;AACvB,UAAM,IAAI;AAAA,MACR,oCAAoC,OAAO,OAAO,SAAS,KAAK,eAAe;AAAA,IACjF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,qBACb,gBACA,WAC0D;AAC1D,QAAM,mBAAmB,wBAAwB;AACjD,QAAM,iBACJ,cAAc,YACV,uBAAuB,gBAAgB,IACvC,wBAAwB,gBAAgB;AAE9C,QAAM,eACJ,cAAc,YACV,uBAAuB,cAAc,IACrC,wBAAwB,cAAc;AAE5C,QAAM,gBAA0B,CAAC;AAEjC,MAAI,CAAE,MAAM,kBAAAE,QAAG,WAAW,YAAY,GAAI;AACxC,WAAO,EAAE,WAAW,MAAM,eAAe,CAAC,EAAE;AAAA,EAC9C;AAEA,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,cAAc,GAAI;AAC1C,UAAM,aAAa,MAAM,QAAQ,YAAY;AAC7C,UAAMC,cAAa,cAAc,YAAY,aAAa;AAC1D,WAAO;AAAA,MACL,WAAW;AAAA,MACX,eAAe,WAAW,IAAI,CAAAC,UAAQ,GAAGD,WAAU,GAAG,mBAAAH,QAAK,SAAS,cAAcI,KAAI,CAAC,EAAE;AAAA,IAC3F;AAAA,EACF;AAEA,QAAM,YAAY,MAAM,QAAQ,YAAY;AAC5C,QAAM,cAAc,MAAM,QAAQ,cAAc;AAEhD,QAAM,cAAc,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,mBAAAJ,QAAK,SAAS,cAAc,CAAC,CAAC,CAAC;AAChF,QAAM,gBAAgB,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,mBAAAA,QAAK,SAAS,gBAAgB,CAAC,CAAC,CAAC;AAEtF,QAAM,aAAa,cAAc,YAAY,aAAa;AAE1D,aAAW,WAAW,aAAa;AACjC,UAAM,kBAAkB,aAAa;AACrC,QAAI,CAAC,cAAc,IAAI,OAAO,GAAG;AAC/B,oBAAc,KAAK,eAAe;AAClC;AAAA,IACF;AAEA,UAAM,eAAe,mBAAAA,QAAK,KAAK,cAAc,OAAO;AACpD,UAAM,iBAAiB,mBAAAA,QAAK,KAAK,gBAAgB,OAAO;AAExD,UAAM,WAAWK,UAAS,YAAY;AACtC,UAAM,aAAaA,UAAS,cAAc;AAE1C,QAAI,aAAa,YAAY;AAC3B,oBAAc,KAAK,eAAe;AAAA,IACpC;AAAA,EACF;AAEA,SAAO;AAAA,IACL,WAAW,cAAc,WAAW;AAAA,IACpC;AAAA,EACF;AACF;AAEA,eAAe,QAAQ,KAAgC;AACrD,QAAM,QAAkB,CAAC;AACzB,QAAM,UAAU,MAAM,kBAAAH,QAAG,QAAQ,KAAK,EAAE,eAAe,KAAK,CAAC;AAE7D,aAAW,SAAS,SAAS;AAC3B,UAAM,YAAY,mBAAAF,QAAK,KAAK,KAAK,MAAM,IAAI;AAC3C,QAAI,MAAM,YAAY,GAAG;AACvB,YAAM,KAAK,GAAI,MAAM,QAAQ,SAAS,CAAE;AAAA,IAC1C,OAAO;AACL,YAAM,KAAK,SAAS;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,oBACpB,UACA,MACe;AACf,QAAM,SAAS,KAAK,UAAU,KAAK,UAAU;AAC7C,QAAM,aAAa,mBAAAA,QAAK,KAAK,UAAU,SAAS,QAAQ;AACxD,QAAM,aAAa,mBAAAA,QAAK,KAAK,YAAY,QAAQ,OAAO;AACxD,QAAM,QAAmD,CAAC;AAC1D,QAAM,gBAAgB,MAAM,kBAAAE,QAAG,QAAQ,YAAY,EAAE,eAAe,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC,CAAgB;AACzG,QAAM,oBAAoB,cAAc,OAAO,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK,MAAM,eAAe,CAAC;AACxG,MAAI,kBAAkB,SAAS,GAAG;AAChC,UAAM,IAAI;AAAA,MACR,4EAA4E,kBAAkB,IAAI,CAAC,UAAU,MAAM,IAAI,EAAE,KAAK,IAAI,CAAC;AAAA,IACrI;AAAA,EACF;AAEA,aAAW,SAAS,eAAe;AACjC,QAAI,oBAAoB,IAAI,MAAM,IAAI,KAAK,MAAM,SAAS,gBAAgB;AACxE,YAAM,IAAI,MAAM,4DAA4D,MAAM,IAAI,wBAAwB;AAAA,IAChH;AACA,UAAM,SAAS,mBAAAF,QAAK,KAAK,YAAY,MAAM,IAAI;AAC/C,UAAM,SAAS,mBAAAA,QAAK,KAAK,YAAY,MAAM,IAAI;AAC/C,UAAM,KAAK,EAAE,QAAQ,OAAO,CAAC;AAAA,EAC/B;AAEA,aAAW,EAAE,QAAQ,OAAO,KAAK,OAAO;AACtC,QAAI,MAAM,kBAAAE,QAAG,WAAW,MAAM,GAAG;AAC/B,YAAM,IAAI,MAAM,wBAAwB,mBAAAF,QAAK,SAAS,MAAM,CAAC,+BAA+B,MAAM,GAAG;AAAA,IACvG;AAAA,EACF;AAEA,QAAM,aAAa,mBAAAA,QAAK,KAAK,YAAY,QAAQ;AACjD,QAAM,0BAAoC,CAAC;AAC3C,aAAW,cAAc,CAAC,kBAAkB,YAAY,GAAG;AACzD,UAAM,aAAa,mBAAAA,QAAK,KAAK,UAAU,UAAU;AACjD,UAAM,OAAO,MAAM,kBAAAE,QAAG,MAAM,UAAU,EAAE,MAAM,MAAM,IAAI;AACxD,QAAI,CAAC,MAAM,eAAe,EAAG;AAC7B,UAAM,aAAa,MAAM,kBAAAA,QAAG,SAAS,UAAU;AAC/C,UAAM,iBAAiB,mBAAAF,QAAK,QAAQ,mBAAAA,QAAK,QAAQ,UAAU,GAAG,UAAU;AACxE,QAAI,mBAAmB,WAAY,yBAAwB,KAAK,UAAU;AAAA,EAC5E;AACA,MAAI,MAAM,WAAW,KAAK,CAAC,MAAM,kBAAAE,QAAG,WAAW,UAAU,KAAK,wBAAwB,WAAW,GAAG;AAClG,YAAQ,IAAI,cAAM,IAAI,+BAA+B,CAAC;AACtD;AAAA,EACF;AAEA,aAAW,EAAE,QAAQ,OAAO,KAAK,OAAO;AACtC,QAAI,QAAQ;AACV,cAAQ,IAAI,cAAM,KAAK,+BAA+B,MAAM,WAAM,MAAM,EAAE,CAAC;AAC3E;AAAA,IACF;AACA,UAAM,kBAAAA,QAAG,OAAO,QAAQ,MAAM;AAC9B,UAAM,kBAAAA,QAAG,OAAO,mBAAAF,QAAK,KAAK,QAAQ,WAAW,CAAC;AAC9C,YAAQ,IAAI,cAAM,MAAM,0BAA0B,MAAM,WAAM,MAAM,EAAE,CAAC;AAAA,EACzE;AAEA,MAAI,QAAQ;AACV,QAAI,MAAM,kBAAAE,QAAG,WAAW,UAAU,EAAG,SAAQ,IAAI,cAAM,KAAK,iCAAiC,UAAU,EAAE,CAAC;AAC1G,eAAW,cAAc,yBAAyB;AAChD,cAAQ,IAAI,cAAM,KAAK,0CAA0C,mBAAAF,QAAK,SAAS,UAAU,UAAU,CAAC,UAAU,CAAC;AAAA,IACjH;AACA;AAAA,EACF;AAEA,MAAI,MAAM,kBAAAE,QAAG,WAAW,UAAU,GAAG;AACnC,UAAM,kBAAAA,QAAG,OAAO,UAAU;AAC1B,YAAQ,IAAI,cAAM,MAAM,4BAA4B,UAAU,EAAE,CAAC;AAAA,EACnE;AACA,QAAM,kBAAAA,QAAG,OAAO,UAAU;AAC1B,QAAM,kBAAAA,QAAG,OAAO,mBAAAF,QAAK,KAAK,YAAY,MAAM,CAAC;AAE7C,aAAW,cAAc,yBAAyB;AAChD,UAAM,kBAAAE,QAAG,OAAO,UAAU;AAC1B,YAAQ,IAAI,cAAM,MAAM,qCAAqC,mBAAAF,QAAK,SAAS,UAAU,UAAU,CAAC,UAAU,CAAC;AAAA,EAC7G;AACF;AAEA,eAAe,cACb,UACA,MAC8E;AAC9E,QAAM,iBAAiB,mBAAAA,QAAK,KAAK,UAAU,SAAS,QAAQ;AAC5D,QAAM,gBAA0B,CAAC;AAEjC,QAAM,kBAAkB,MAAM,eAAe,UAAU,EAAE,QAAQ,KAAK,CAAC;AACvE,MAAI,iBAAiB;AACnB,YAAQ,IAAI,cAAM,IAAI,4BAA4B,CAAC;AACnD,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,EAAE;AAAA,EACrE;AAEA,QAAM,sBAAsB,MAAM,qBAAqB,gBAAgB,SAAS;AAChF,QAAM,uBAAuB,MAAM,qBAAqB,gBAAgB,UAAU;AAElF,gBAAc,KAAK,GAAG,oBAAoB,aAAa;AACvD,gBAAc,KAAK,GAAG,qBAAqB,aAAa;AAExD,MAAI,cAAc,SAAS,GAAG;AAC5B,YAAQ;AAAA,MACN,cAAM;AAAA,QACJ,aAAa,cAAc,MAAM;AAAA,MACnC;AAAA,IACF;AACA,UAAM,mBAAmB;AAAA,MACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR;AAAA,MACA,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,CAAC,KAAK,UAAU,KAAK,OAAO;AAC9B,YAAM,aAAa,mBAAAA,QAAK;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AACA,YAAM,kBAAAE,QAAG,UAAU,UAAU;AAE7B,YAAMI,mBAAkB,uBAAuB,cAAc;AAC7D,YAAMC,oBAAmB,wBAAwB,cAAc;AAE/D,iBAAW,WAAW,eAAe;AACnC,cAAM,aAAa,QAAQ,WAAW,WAAW,IAAI,cAAc;AACnE,cAAM,aAAa,QAAQ,MAAM,WAAW,MAAM;AAElD,YAAI,mBAAAP,QAAK,SAAS,UAAU,MAAM,eAAe,CAAC,WAAW,SAAS,GAAG,EAAG;AAC5E,cAAM,aAAa,QAAQ,WAAW,WAAW,IAC7C,mBAAAA,QAAK,KAAKO,mBAAkB,UAAU,IACtC,mBAAAP,QAAK,KAAKM,kBAAiB,UAAU;AAEzC,cAAM,WAAW,mBAAAN,QAAK,KAAK,YAAY,UAAU;AACjD,YAAI,MAAM,kBAAAE,QAAG,WAAW,UAAU,GAAG;AACnC,gBAAM,kBAAAA,QAAG,UAAU,mBAAAF,QAAK,QAAQ,QAAQ,CAAC;AACzC,gBAAM,kBAAAE,QAAG,KAAK,YAAY,QAAQ;AAAA,QACpC;AAAA,MACF;AAAA,IAGF;AAAA,EACF;AAEA,QAAM,iBAA2B,CAAC;AAClC,QAAM,kBAAkB,uBAAuB,cAAc;AAC7D,QAAM,mBAAmB,wBAAwB,cAAc;AAE/D,MAAI,MAAM,kBAAAA,QAAG,WAAW,eAAe,GAAG;AACxC,mBAAe,KAAK,eAAe;AAAA,EACrC;AAEA,MAAI,MAAM,kBAAAA,QAAG,WAAW,gBAAgB,GAAG;AACzC,mBAAe,KAAK,gBAAgB;AAAA,EACtC;AAEA,MAAI,eAAe,WAAW,GAAG;AAC/B,YAAQ,IAAI,cAAM,IAAI,mDAAmD,CAAC;AAC1E,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,cAAc;AAAA,EACjE;AAEA,MAAI,KAAK,QAAQ;AACf,YAAQ,IAAI,cAAM,KAAK,yBAAyB,CAAC;AACjD,eAAW,KAAK,gBAAgB;AAC9B,cAAQ,IAAI,cAAM,KAAK,SAAS,CAAC,EAAE,CAAC;AAAA,IACtC;AACA,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,cAAc;AAAA,EACjE;AAEA,MAAI,CAAC,KAAK,OAAO;AACf,YAAQ,IAAI,cAAM,OAAO,4CAA4C,CAAC;AACtE,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,cAAc;AAAA,EACjE;AAEA,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,UAAU,mBAAAF,QAAK,SAAS,QAAQ,CAAC;AAAA,EACnC;AACA,UAAQ,IAAI,cAAM,MAAM,+BAA+B,UAAU,EAAE,CAAC;AAEpE,aAAW,KAAK,gBAAgB;AAC9B,UAAM,kBAAAE,QAAG,OAAO,CAAC;AACjB,YAAQ,IAAI,cAAM,MAAM,qBAAqB,CAAC,EAAE,CAAC;AAAA,EACnD;AAEA,QAAM,mBAAmB;AAAA,IACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA,cAAc;AAAA,IACd,SAAS;AAAA,EACX,CAAC;AAED,QAAM,iBAAiB,UAAU,EAAE,gBAAgB,MAAM,WAAW,CAAC;AAErE,SAAO,EAAE,UAAU,MAAM,YAAY,cAAc;AACrD;AAEA,eAAe,oBAAoB,UAA4E;AAC7G,QAAM,kBAAkB,uBAAuB;AAC/C,QAAM,gBAAgB,mBAAAF,QAAK,KAAK,UAAU,SAAS,OAAO;AAE1D,QAAM,gBAA0B,CAAC;AAEjC,MAAI,CAAE,MAAM,kBAAAE,QAAG,WAAW,aAAa,GAAI;AACzC,WAAO,EAAE,WAAW,MAAM,eAAe,CAAC,EAAE;AAAA,EAC9C;AAEA,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,eAAe,GAAI;AAC3C,WAAO,EAAE,WAAW,OAAO,eAAe,CAAC,EAAE;AAAA,EAC/C;AAEA,QAAM,YAAY,MAAM,QAAQ,aAAa;AAC7C,QAAM,cAAc,MAAM,QAAQ,eAAe;AAEjD,QAAM,cAAc,IAAI,IAAI,UAAU,IAAI,CAAC,MAAM,mBAAAF,QAAK,SAAS,eAAe,CAAC,CAAC,CAAC;AACjF,QAAM,gBAAgB,IAAI,IAAI,YAAY,IAAI,CAAC,MAAM,mBAAAA,QAAK,SAAS,iBAAiB,CAAC,CAAC,CAAC;AAEvF,aAAW,WAAW,aAAa;AACjC,QAAI,CAAC,cAAc,IAAI,OAAO,GAAG;AAC/B,oBAAc,KAAK,OAAO;AAC1B;AAAA,IACF;AAEA,UAAM,eAAe,mBAAAA,QAAK,KAAK,eAAe,OAAO;AACrD,UAAM,iBAAiB,mBAAAA,QAAK,KAAK,iBAAiB,OAAO;AAEzD,UAAM,WAAWK,UAAS,YAAY;AACtC,UAAM,aAAaA,UAAS,cAAc;AAE1C,QAAI,aAAa,YAAY;AAC3B,oBAAc,KAAK,OAAO;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AAAA,IACL,WAAW,cAAc,WAAW;AAAA,IACpC;AAAA,EACF;AACF;AAEA,eAAe,aACb,UACA,MACgG;AAChG,QAAM,gBAAgB,mBAAAL,QAAK,KAAK,UAAU,SAAS,OAAO;AAE1D,QAAM,kBAAkB,MAAM,eAAe,UAAU,EAAE,OAAO,KAAK,CAAC;AACtE,MAAI,iBAAiB;AACnB,YAAQ,IAAI,cAAM,IAAI,2BAA2B,CAAC;AAClD,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,GAAG,SAAS,MAAM;AAAA,EACrF;AAEA,QAAM,eAAe,MAAM,oBAAoB,QAAQ;AAEvD,MAAI,aAAa,cAAc,SAAS,GAAG;AACzC,YAAQ;AAAA,MACN,cAAM;AAAA,QACJ,YAAY,aAAa,cAAc,MAAM;AAAA,MAC/C;AAAA,IACF;AACA,UAAM,mBAAmB;AAAA,MACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,MAClC,WAAW;AAAA,MACX,OAAO;AAAA,MACP,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,eAAe,aAAa;AAAA,MAC5B,SAAS;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AACD,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,aAAa,eAAe,SAAS,KAAK;AAAA,EAC5G;AAEA,MAAI,CAAE,MAAM,kBAAAE,QAAG,WAAW,aAAa,GAAI;AACzC,YAAQ,IAAI,cAAM,IAAI,uCAAuC,CAAC;AAC9D,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,GAAG,SAAS,MAAM;AAAA,EACrF;AAEA,MAAI,KAAK,QAAQ;AACf,YAAQ,IAAI,cAAM,KAAK,wBAAwB,CAAC;AAChD,YAAQ,IAAI,cAAM,KAAK,SAAS,aAAa,EAAE,CAAC;AAChD,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,GAAG,SAAS,MAAM;AAAA,EACrF;AAEA,MAAI,CAAC,KAAK,OAAO;AACf,YAAQ,IAAI,cAAM,OAAO,2CAA2C,CAAC;AACrE,WAAO,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,GAAG,SAAS,MAAM;AAAA,EACrF;AAEA,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,IACA,SAAS,mBAAAF,QAAK,SAAS,QAAQ,CAAC;AAAA,EAClC;AACA,UAAQ,IAAI,cAAM,MAAM,8BAA8B,UAAU,EAAE,CAAC;AAEnE,QAAM,kBAAAE,QAAG,OAAO,aAAa;AAC7B,UAAQ,IAAI,cAAM,MAAM,oBAAoB,aAAa,EAAE,CAAC;AAE5D,QAAM,mBAAmB;AAAA,IACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,WAAW;AAAA,IACX,OAAO;AAAA,IACP,MAAM;AAAA,IACN,QAAQ;AAAA,IACR;AAAA,IACA,cAAc,CAAC,aAAa;AAAA,IAC5B,SAAS;AAAA,EACX,CAAC;AAED,QAAM,iBAAiB,UAAU,EAAE,eAAe,MAAM,WAAW,CAAC;AAEpE,SAAO,EAAE,UAAU,MAAM,YAAY,eAAe,CAAC,GAAG,SAAS,MAAM;AACzE;AAEA,SAAS,oBAAoB,iBAAiC;AAC5D,SAAO,GAAG,eAAe;AAC3B;AAEA,eAAe,yBACb,UACA,MACe;AACf,QAAM,qBAAqB,mBAAAF,QAAK,KAAK,UAAU,WAAW,eAAe;AACzE,QAAM,mBAA4C,CAAC;AAEnD,QAAM,sBAAsB,mBAAAA,QAAK,KAAK,UAAU,OAAO,SAAS,eAAe;AAC/E,aAAW,gBAAgB,CAAC,oBAAoB,mBAAmB,GAAG;AACpE,QAAI,CAAE,MAAM,kBAAAE,QAAG,WAAW,YAAY,GAAI;AACxC;AAAA,IACF;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,YAAY;AAC/C,YAAM,QAAQ,SAAS;AAEvB,UAAI,CAAC,OAAO;AACV;AAAA,MACF;AAEA,UAAI,UAAU;AACd,YAAM,eAA0C,CAAC;AAEjD,iBAAW,CAAC,OAAO,OAAO,KAAK,OAAO,QAAQ,KAAK,GAAG;AACpD,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,uBAAa,KAAK,IAAI;AACtB;AAAA,QACF;AAEA,cAAM,iBAAiB,QAAQ,OAAO,CAAC,UAAU;AAC/C,cAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,mBAAO;AAAA,UACT;AAEA,gBAAM,YAAY;AAClB,gBAAM,SAAS,UAAU;AACzB,gBAAM,OAAO,UAAU;AAEvB,cAAI,WAAW,eAAe;AAC5B,sBAAU;AACV,mBAAO;AAAA,UACT;AAEA,cAAI,QAAQ,OAAO,SAAS,YAAY,UAAU,MAAM;AACtD,sBAAU;AACV,mBAAO;AAAA,UACT;AAEA,iBAAO;AAAA,QACT,CAAC;AAED,qBAAa,KAAK,IAAI;AAAA,MACxB;AAEA,UAAI,SAAS;AACX,YAAI,KAAK,QAAQ;AACf,kBAAQ,IAAI,cAAM,KAAK,mDAAmD,mBAAAF,QAAK,SAAS,UAAU,YAAY,CAAC,EAAE,CAAC;AAAA,QACpH,WAAW,KAAK,OAAO;AACrB,2BAAiB,mBAAAA,QAAK,SAAS,UAAU,YAAY,CAAC,IAAI,KAAK,MAAM,KAAK,UAAU,QAAQ,CAAC;AAC7F,mBAAS,QAAQ;AACjB,gBAAM,kBAAAE,QAAG,UAAU,cAAc,UAAU,EAAE,QAAQ,EAAE,CAAC;AACxD,gBAAM,kBAAAA,QAAG,WAAW,cAAc,IAAI;AACtC,kBAAQ,IAAI,cAAM,MAAM,+CAA+C,mBAAAF,QAAK,SAAS,UAAU,YAAY,CAAC,EAAE,CAAC;AAAA,QACjH;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,MAAI,KAAK,SAAS,KAAK,mBAAmB,OAAO,KAAK,gBAAgB,EAAE,SAAS,GAAG;AAClF,UAAM,kBAAAE,QAAG,UAAU,oBAAoB,KAAK,eAAe,GAAG,kBAAkB,EAAE,QAAQ,EAAE,CAAC;AAC7F,UAAM,kBAAAA,QAAG,WAAW,oBAAoB,KAAK,eAAe,GAAG,IAAI;AAAA,EACrE;AACF;AAEA,eAAe,uBACb,UACA,iBACmB;AACnB,QAAM,UAAU,oBAAoB,eAAe;AACnD,MAAI,CAAE,MAAM,kBAAAA,QAAG,WAAW,OAAO,EAAI,QAAO,CAAC;AAC7C,QAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,OAAO;AAC1C,QAAM,gBAA0B,CAAC;AACjC,QAAM,WAAW,MAAM,kBAAAA,QAAG,SAAS,QAAQ;AAC3C,aAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC1D,UAAM,aAAa,mBAAAF,QAAK,KAAK,UAAU,OAAO;AAC9C,UAAM,YAAY,mBAAAA,QAAK,QAAQ,UAAU;AACzC,UAAM,kBAAAE,QAAG,UAAU,SAAS;AAC5B,UAAM,gBAAgB,MAAM,kBAAAA,QAAG,SAAS,SAAS;AACjD,UAAM,MAAM,mBAAAF,QAAK,SAAS,UAAU,aAAa;AACjD,QAAI,IAAI,WAAW,IAAI,KAAK,mBAAAA,QAAK,WAAW,GAAG,GAAG;AAChD,YAAM,IAAI,MAAM,4CAA4C,UAAU,EAAE;AAAA,IAC1E;AACA,UAAM,kBAAAE,QAAG,UAAU,YAAY,UAAU,EAAE,QAAQ,EAAE,CAAC;AACtD,UAAM,kBAAAA,QAAG,WAAW,YAAY,IAAI;AACpC,kBAAc,KAAK,OAAO;AAAA,EAC5B;AACA,SAAO;AACT;AAEO,SAAS,uBAAgC;AAC9C,SAAO,IAAI,QAAQ,SAAS,EACzB,YAAY,iEAAiE,EAC7E,SAAS,YAAY,0CAA0C,KAAK,EACpE,OAAO,aAAa,oDAAoD,KAAK,EAC7E,OAAO,WAAW,mCAAmC,KAAK,EAC1D,OAAO,iBAAiB,6DAA6D,EACrF,OAAO,aAAa,4BAA4B,KAAK,EACrD,OAAO,kBAAkB,wDAAwD,KAAK,EACtF,OAAO,sBAAsB,wDAAwD,EACrF,OAAO,WAAW,+CAA+C,KAAK,EACtE,OAAO,OAAO,QAAgB,SAAyB;AACtD,QAAI;AACF,YAAM,eAAe,CAAC,UAAU,SAAS,iBAAiB,KAAK;AAC/D,UAAI,CAAC,aAAa,SAAS,MAAM,GAAG;AAClC,gBAAQ;AAAA,UACN,cAAM;AAAA,YACJ,mBAAmB,MAAM,sBAAsB,aAAa,KAAK,IAAI,CAAC;AAAA,UACxE;AAAA,QACF;AACA,gBAAQ,WAAW;AACnB;AAAA,MACF;AAEA,UAAI,CAAC,KAAK,UAAU,CAAC,KAAK,OAAO;AAC/B,gBAAQ,IAAI,cAAM,OAAO,yDAAoD,CAAC;AAC9E,gBAAQ,IAAI,cAAM,OAAO,2CAA2C,CAAC;AACrE,aAAK,SAAS;AAAA,MAChB;AAEA,YAAM,WAAW,KAAK,OAAO,mBAAAF,QAAK,QAAQ,KAAK,IAAI,IAAI,QAAQ,IAAI;AAEnE,YAAM,UAAU,mBAAAA,QAAK,KAAK,UAAU,OAAO;AAC3C,UAAI,CAAE,MAAM,kBAAAE,QAAG,WAAW,OAAO,GAAI;AACnC,gBAAQ;AAAA,UACN,cAAM,IAAI,mCAAmC,QAAQ,EAAE;AAAA,QACzD;AACA,gBAAQ,WAAW;AACnB;AAAA,MACF;AAEA,UAAI,KAAK,SAAS,CAAC,KAAK,aAAa;AACnC,cAAM,eAAe,MAAM,uBAAuB,QAAQ;AAC1D,YAAI,cAAc;AAChB,kBAAQ;AAAA,YACN,cAAM;AAAA,cACJ,8CAA8C,QAAQ,KAAK,YAAY;AAAA,YACzE;AAAA,UACF;AACA,kBAAQ,WAAW;AACnB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,KAAK,SAAS;AAChB,YAAI,CAAC,KAAK,aAAa;AACrB,gBAAM,eAAe,MAAM,uBAAuB,QAAQ;AAC1D,cAAI,cAAc;AAChB,oBAAQ;AAAA,cACN,cAAM;AAAA,gBACJ,mDAAmD,QAAQ,KAAK,YAAY;AAAA,cAC9E;AAAA,YACF;AACA,oBAAQ,WAAW;AACnB;AAAA,UACF;AAAA,QACF;AACA,YAAI;AACF,gBAAM,EAAE,WAAW,UAAU,IAAI,MAAMM,eAAc,UAAU,KAAK,SAAS;AAAA,YAC3E,QAAQ,KAAK,UAAU;AAAA,YACvB,OAAO,KAAK,SAAS;AAAA,UACvB,CAAC;AACD,cAAI,KAAK,QAAQ;AACf,oBAAQ,IAAI,cAAM,MAAM;AAAA,qCAAmC,SAAS;AAAA,CAAK,CAAC;AAAA,UAC5E,OAAO;AACL,oBAAQ,IAAI,cAAM,MAAM,KAAK,SAAS,iBAAiB,SAAS,EAAE,CAAC;AACnE,gBAAI,cAAc,SAAS;AACzB,oBAAM,mBAAmB,MAAM,uBAAuB,UAAU,KAAK,OAAO;AAC5E,yBAAW,OAAO,kBAAkB;AAClC,wBAAQ,IAAI,cAAM,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAAA,cACxD;AAAA,YACF;AACA,kBAAM,iBAAiB,UAAU;AAAA,cAC/B,gBAAgB,cAAc,WAAW,QAAQ;AAAA,cACjD,eAAe,cAAc,UAAU,QAAQ;AAAA,YACjD,CAAC;AACD,kBAAM,mBAAmB;AAAA,cACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,cAClC,WAAW,cAAc,WAAW,qBAAqB;AAAA,cACzD,OAAO,GAAG,SAAS;AAAA,cACnB,MAAM;AAAA,cACN,YAAY,KAAK;AAAA,cACjB,SAAS;AAAA,YACX,CAAC;AACD,oBAAQ,IAAI,cAAM,MAAM;AAAA;AAAA,CAA0B,CAAC;AAAA,UACrD;AACA,kBAAQ,WAAW;AACnB;AAAA,QACF,SAASC,SAAO;AACd,kBAAQ;AAAA,YACN,cAAM,IAAI,0BAAqBA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK,CAAC,EAAE;AAAA,UACzF;AACA,kBAAQ,WAAW;AACnB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,WAAW,iBAAiB;AAC9B,YAAI,KAAK,SAAS,CAAC,KAAK,KAAK;AAC3B,kBAAQ,MAAM,cAAM,IAAI,iGAAiG,CAAC;AAC1H,kBAAQ,WAAW;AACnB;AAAA,QACF;AACA,cAAM,oBAAoB,UAAU;AAAA,UAClC,QAAQ,KAAK,UAAU;AAAA,UACvB,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC;AACD,gBAAQ,WAAW;AACnB;AAAA,MACF;AAEA,cAAQ,IAAI,cAAM,KAAK;AAAA,cAAiB,mBAAAT,QAAK,SAAS,QAAQ,CAAC,EAAE,CAAC;AAClE,cAAQ,IAAI,cAAM,IAAI,aAAa,MAAM,EAAE,CAAC;AAC5C,cAAQ,IAAI,cAAM,IAAI,WAAW,KAAK,SAAS,YAAY,OAAO,EAAE,CAAC;AACrE,cAAQ,IAAI,cAAM,IAAI,WAAW,QAAQ;AAAA,CAAI,CAAC;AAE9C,UAAI,CAAC,KAAK,UAAU,KAAK,SAAS,CAAC,KAAK,KAAK;AAC3C,cAAM,WAAW,MAAM,OAAO,UAAe;AAC7C,cAAM,KAAK,SAAS,gBAAgB;AAAA,UAClC,OAAO,QAAQ;AAAA,UACf,QAAQ,QAAQ;AAAA,QAClB,CAAC;AAED,cAAM,SAAS,MAAM,IAAI,QAAgB,CAACU,aAAY;AACpD,aAAG;AAAA,YACD,cAAM,OAAO,oEAA+D;AAAA,YAC5EA;AAAA,UACF;AAAA,QACF,CAAC;AACD,WAAG,MAAM;AAET,YAAI,OAAO,YAAY,MAAM,KAAK;AAChC,kBAAQ,IAAI,cAAM,IAAI,wBAAwB,CAAC;AAC/C,kBAAQ,WAAW;AACnB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,eAAoF,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,EAAE;AACpJ,UAAI,cAAqG,EAAE,UAAU,OAAO,YAAY,QAAW,eAAe,CAAC,GAAG,SAAS,MAAM;AAErL,UAAI,WAAW,YAAY,WAAW,OAAO;AAC3C,YAAI,CAAC,sBAAsB,GAAG;AAC5B,kBAAQ;AAAA,YACN,cAAM;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,uBAAe,MAAM,cAAc,UAAU;AAAA,UAC3C,QAAQ,KAAK,UAAU;AAAA,UACvB,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AAEA,UAAI,WAAW,WAAW,WAAW,OAAO;AAC1C,YAAI,CAAC,qBAAqB,GAAG;AAC3B,kBAAQ;AAAA,YACN,cAAM;AAAA,cACJ;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,sBAAc,MAAM,aAAa,UAAU;AAAA,UACzC,QAAQ,KAAK,UAAU;AAAA,UACvB,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AAEA,WAAK,WAAW,WAAW,WAAW,UAAU,YAAY,UAAU;AACpE,cAAM,yBAAyB,UAAU;AAAA,UACvC,QAAQ,KAAK,UAAU;AAAA,UACvB,OAAO,KAAK,SAAS;AAAA,UACrB,iBAAiB,YAAY;AAAA,QAC/B,CAAC;AAAA,MACH;AAEA,cAAQ,IAAI,cAAM,MAAM,iCAA4B,CAAC;AAErD,UAAI,KAAK,QAAQ;AACf,gBAAQ;AAAA,UACN,cAAM;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,cAAQ,WAAW;AAAA,IACrB,SAASD,SAAO;AACd,cAAQ;AAAA,QACN,cAAM,IAAI,4BAAuBA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK,CAAC,EAAE;AAAA,MAC3F;AACA,YAAM,mBAAmB;AAAA,QACvB,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,QAClC,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM,MAAM,QAAQ,QAAQ,IAAI;AAAA,QAChC,SAAS;AAAA,QACT,QAAQA,mBAAiB,QAAQA,QAAM,UAAU,OAAOA,OAAK;AAAA,MAC/D,CAAC;AACD,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF,CAAC;AACL;;;AEn4BA;AAGA,IAAM,MAAM;AAAA,EACR;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEA,IAAM,YAAY;AAClB,IAAM,UAAU;AAIhB,SAASE,SAAiB;AAAE,SAAO,QAAQ,QAAQ,OAAO,KAAK;AAAG;AAElE,SAAS,WAAoB;AACzB,MAAI,QAAQ,IAAI,aAAa,OAAW,QAAO;AAC/C,MAAI,QAAQ,IAAI,gBAAgB,OAAW,QAAO;AAClD,MAAI,QAAQ,IAAI,SAAS,OAAQ,QAAO;AACxC,SAAOA,OAAM;AACjB;AAEA,SAAS,OAAgB;AAAE,SAAO,QAAQ,QAAQ,IAAI,EAAE;AAAG;AAC3D,SAAS,SAAkB;AAAE,SAAO,QAAQ,IAAI,SAAS;AAAQ;AACjE,SAAS,UAAkB;AAAE,SAAO,QAAQ,OAAO,WAAW;AAAI;AAElE,SAAS,aAAsB;AAC3B,MAAI,QAAQ,aAAa,SAAS;AAC9B,WAAO,QAAQ,QAAQ,IAAI,cAAc,QAAQ,IAAI,YAAY;AAAA,EACrE;AACA,QAAM,QAAQ,QAAQ,IAAI,QAAQ,QAAQ,IAAI,UAAU,QAAQ,IAAI,YAAY,IAAI,YAAY;AAChG,SAAO,KAAK,SAAS,KAAK,KAAK,SAAS;AAC5C;AAEA,SAAS,eAAwB;AAC7B,QAAM,MAAM,QAAQ,IAAI,aAAa,IAAI,YAAY;AACrD,SAAO,OAAO,eAAe,OAAO;AACxC;AAMA,SAAS,aAAmB;AACxB,MAAI,CAACA,OAAM,KAAK,OAAO,KAAK,KAAK,EAAG,QAAO;AAC3C,MAAI,CAAC,SAAS,EAAG,QAAO;AACxB,MAAI,CAAC,WAAW,EAAG,QAAO;AAC1B,QAAM,OAAO,QAAQ;AACrB,MAAI,OAAO,GAAI,QAAO;AACtB,MAAI,OAAO,GAAI,QAAO;AACtB,MAAI,aAAa,EAAG,QAAO;AAC3B,SAAO;AACX;AAIA,SAAS,MAAM,IAA2B;AACtC,SAAO,IAAI,QAAQ,OAAK,WAAW,GAAG,EAAE,CAAC;AAC7C;AAEA,eAAe,kBAAkB,MAA6B;AAC1D,QAAM,aAAa;AACnB,QAAM,SAAS;AACf,QAAM,SAAS;AAEf,aAAW,QAAQ,KAAK,MAAM,IAAI,GAAG;AACjC,YAAQ,OAAO,MAAM,MAAM;AAC3B,eAAW,MAAM,MAAM;AACnB,cAAQ,OAAO,MAAM,EAAE;AACvB,YAAM,MAAM,UAAU;AAAA,IAC1B;AACA,YAAQ,OAAO,MAAM,SAAS,IAAI;AAAA,EACtC;AACJ;AAIA,IAAM,YAAY;AAClB,IAAM,UAAY;AAClB,IAAM,MAAY;AAClB,IAAM,MAAY;AAElB,SAAS,SAAS,GAAW,GAAW,GAAqC;AACzE,QAAM,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC;AAC/B,QAAM,IAAI,CAAC,MAAsB;AAC7B,UAAM,KAAK,IAAI,IAAI,MAAM;AACzB,WAAO,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;AAAA,EACzD;AACA,SAAO,CAAC,KAAK,MAAM,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK,MAAM,EAAE,CAAC,IAAI,GAAG,GAAG,KAAK,MAAM,EAAE,CAAC,IAAI,GAAG,CAAC;AAClF;AAEA,IAAM,QAAQ;AAEd,SAAS,aAAa,MAAsB;AACxC,MAAI,MAAM;AACV,QAAM,MAAM,KAAK;AACjB,WAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC1B,UAAMC,KAAI,MAAM,IAAI,KAAK,MAAM,KAAK;AACpC,UAAM,MAAM,YAAYA,MAAK,UAAU;AACvC,UAAM,CAAC,GAAG,GAAG,CAAC,IAAI,SAAS,KAAK,KAAK,GAAG;AACxC,WAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;AAAA,EAC/C;AACA,SAAO,MAAM;AACjB;AAIA,eAAe,YAAYC,UAAgC;AACvD,QAAM,OAAO,aAAa,SAAI,OAAO,YAAY,CAAC,IAAI;AAEtD,UAAQ,OAAO,MAAM,IAAI;AACzB,aAAW,QAAQ,KAAK;AACpB,YAAQ,OAAO,MAAM,aAAa,IAAI,IAAI,IAAI;AAAA,EAClD;AACA,UAAQ,OAAO,MAAM,OAAO,IAAI;AAChC,UAAQ,OAAO,MAAM,eAAeA,WAAU,WAAW;AACzD,QAAM,kBAAkB,OAAO;AACnC;AAEA,SAAS,YAAYA,UAAuB;AACxC,UAAQ,IAAI,EAAE;AACd,aAAW,QAAQ,KAAK;AAAE,YAAQ,IAAI,cAAM,KAAK,IAAI,CAAC;AAAA,EAAG;AACzD,UAAQ,IAAI,cAAM,IAAI,MAAM,SAAI,OAAO,YAAY,CAAC,CAAC,CAAC;AACtD,UAAQ,IAAI,cAAM,IAAI,QAAQA,QAAO,CAAC;AACtC,UAAQ;AAAA,IACJ,OAAO,cAAM,IAAI,QAAQ,IAAI,OAC7B,cAAM,KAAK,EAAE,MAAM,OAAO,IAC1B,OAAO,cAAM,IAAI,QAAQ;AAAA,EAC7B;AACA,UAAQ,IAAI,EAAE;AAClB;AAEA,SAAS,YAAYA,UAAuB;AACxC,UAAQ,IAAI,EAAE;AACd,UAAQ;AAAA,IACJ,cAAM,KAAK,YAAO,IAClB,cAAM,KAAK,EAAE,MAAM,YAAY,IAC/B,cAAM,IAAI,QAAQA,QAAO;AAAA,EAC7B;AACA,UAAQ,IAAI,cAAM,IAAI,QAAQ,OAAO,EAAE,CAAC;AACxC,UAAQ,IAAI,EAAE;AAClB;AAEA,SAAS,YAAYA,UAAuB;AACxC,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,cAAM,KAAK,cAAc,IAAI,cAAM,IAAI,OAAOA,QAAO,CAAC;AAClE,UAAQ,IAAI,cAAM,IAAI,KAAK,OAAO,EAAE,CAAC;AACrC,UAAQ,IAAI,EAAE;AAClB;AAEA,SAAS,YAAYA,UAAuB;AACxC,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,iBAAiBA,QAAO;AACpC,UAAQ,IAAI,OAAO;AACnB,UAAQ,IAAI,EAAE;AAClB;AAIA,eAAsB,YAAYA,UAAgC;AAC9D,QAAM,OAAO,WAAW;AACxB,UAAQ,MAAM;AAAA,IACV,KAAK;AAAG,YAAM,YAAYA,QAAO;AAAG;AAAA,IACpC,KAAK;AAAG,kBAAYA,QAAO;AAAG;AAAA,IAC9B,KAAK;AAAG,kBAAYA,QAAO;AAAG;AAAA,IAC9B,KAAK;AAAG,kBAAYA,QAAO;AAAG;AAAA,IAC9B,KAAK;AAAG,kBAAYA,QAAO;AAAG;AAAA,EAClC;AACJ;;;A1MrKA,IAAIC,WAAU;AACd,IAAI;AAAE,EAAAA,WAAU,KAAK,UAAM,mCAAa,4BAAQ,WAAW,iBAAiB,GAAG,MAAM,CAAC,EAAE;AAAS,QAAQ;AAAiB;AA2B1H,IAAMC,WAAU,IAAI,QAAQ;AAE5BA,SACK,KAAK,MAAM,EACX,YAAY,kFAAkF,EAC9F,QAAQD,QAAO;AAGpBC,SAAQ,aAAa,CAAC,QAAQ;AAC1B,MAAI,IAAI,SAAS,4BAA4B;AACzC,YAAQ,MAAM,cAAM,IAAI;AAAA;AAAA,CAA0C,CAAC;AACnE,YAAQ,KAAK,CAAC;AAAA,EAClB;AAEA,UAAQ,KAAK,IAAI,YAAY,CAAC;AAClC,CAAC;AAGDA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,gBAAgB,CAAC;AACpCA,SACK,QAAQ,MAAM,EACd,YAAY,sFAAuE,EACnF,OAAO,aAAa,oDAAoD,KAAK,EAC7E,OAAO,aAAa,6BAA6B,KAAK,EACtD,OAAO,YAAY,iEAAiE,KAAK,EACzF,OAAO,WAAW,0EAA0E,KAAK,EACjG,OAAO,OAAO,SAAS;AACpB,QAAM,eAAe,IAAI;AAC7B,CAAC;AACLA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,mBAAmB,CAAC;AACvCA,SAAQ,WAAW,mBAAmB,CAAC;AACvCA,SAAQ,WAAW,iBAAiB,CAAC;AACrCA,SAAQ,WAAW,sBAAsB,CAAC;AAC1CA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,kBAAkB,CAAC;AACtCA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,mBAAmB,CAAC;AACvCA,SAAQ,WAAW,mBAAmB,CAAC;AACvCA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,wBAAwB,CAAC;AAC5CA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,uBAAuB,CAAC;AAC3CA,SAAQ,WAAW,oBAAoB,CAAC;AACxCA,SAAQ,WAAW,qBAAqB,CAAC;AACzCA,SAAQ,WAAW,kBAAkB,CAAC;AACtCA,SAAQ,WAAW,qBAAqB,CAAC;AACzCA,SAAQ,WAAW,kBAAkB,CAAC;AAGtCA,SACK,OAAO,YAAY;AAChB,EAAAA,SAAQ,KAAK;AACjB,CAAC;AAGL,QAAQ,GAAG,qBAAqB,CAAC,QAAQ;AACrC,MAAK,IAAY,MAAM,WAAW,YAAY,GAAG;AAC7C;AAAA,EACJ;AACA,UAAQ,MAAM,cAAM,IAAI;AAAA,SAAO,IAAI,OAAO;AAAA,CAAI,CAAC;AAC/C,UAAQ,KAAK,CAAC;AAClB,CAAC;AAED,QAAQ,GAAG,sBAAsB,CAAC,WAAW;AACzC,UAAQ,MAAM,cAAM,IAAI;AAAA,SAAO,OAAO,MAAM,CAAC;AAAA,CAAI,CAAC;AAClD,UAAQ,KAAK,CAAC;AAClB,CAAC;AAGD,IAAM,kBAAkB,QAAQ,KAAK,KAAK,OAAK,MAAM,YAAY,MAAM,QAAQ,MAAM,eAAe,MAAM,IAAI;AAC9G,IAAM,iBAAiB,CAAC,QAAQ,WAAW,EAAE,SAAS,QAAQ,KAAK,CAAC,KAAK,EAAE;AAAA,CAE1E,YAAY;AACT,MAAI,CAAC,mBAAmB,gBAAgB;AACpC,UAAM,YAAYD,QAAO;AAAA,EAC7B;AACA,EAAAC,SAAQ,WAAW,QAAQ,IAAI;AACnC,GAAG;","names":["exports","CommanderError","InvalidArgumentError","exports","InvalidArgumentError","Argument","exports","Help","cmd","exports","InvalidArgumentError","Option","str","exports","exports","path","fs","process","Argument","CommanderError","Help","Option","Command","config","regex","unknown","promise","option","error","exports","Argument","Command","CommanderError","InvalidArgumentError","Help","Option","exports","resolve","exports","module","fs","path","err","err2","er","er2","_a","exports","module","fs","path","exports","module","clone","exports","module","fs","clone","queue","createWriteStream","path","options","cb","data","src","dest","flags","go$readdir","mode","elem","exports","fs","resolve","buffer","buffers","exports","module","path","error","exports","module","fs","exports","module","exports","module","fs","path","exports","module","fs","path","error","exports","module","fs","path","file","exports","module","promise","exports","module","fs","path","destStat","exports","module","fs","path","statSync","require_copy","exports","module","exports","module","fs","path","exports","module","fs","path","emptyDir","exports","module","path","fs","file","exports","module","path","fs","exports","module","path","fs","exists","exports","module","fs","exports","module","path","fs","exports","module","require_utils","exports","module","stringify","exports","module","stringify","file","fs","readFileSync","writeFileSync","require_jsonfile","exports","module","exports","module","fs","path","file","exports","module","stringify","file","exports","module","stringify","file","exports","module","exports","module","fs","path","exports","module","fs","path","require_move","exports","module","exports","module","exports","module","FORCE_COLOR","NODE_DISABLE_COLORS","TERM","$","init","run","chain","exports","module","exports","module","exports","module","exports","module","F","exports","module","exports","module","styles","render","symbol","aborted","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","resolve","error","exports","module","exports","module","exports","module","date","exports","module","exports","module","date","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","resolve","error","regex","date","exports","module","resolve","error","any","number","exports","module","cursor","exports","module","resolve","error","exports","module","cursor","exports","module","exports","module","exports","$","sep","exports","module","object","sym","F","resolve","error","prompts","override","question","answer","getFormattedAnswer","require_action","exports","module","require_strip","exports","module","require_clear","exports","module","require_figures","exports","module","require_style","exports","module","styles","render","symbol","aborted","require_lines","exports","module","require_wrap","exports","module","require_entriesToDisplay","exports","module","require_util","exports","module","require_prompt","exports","module","require_text","exports","module","require_select","exports","module","require_toggle","exports","module","require_datepart","exports","module","date","require_meridiem","exports","module","require_day","exports","module","date","require_hours","exports","module","require_milliseconds","exports","module","require_minutes","exports","module","require_month","exports","module","require_seconds","exports","module","require_year","exports","module","require_dateparts","exports","module","require_date","exports","module","regex","date","require_number","exports","module","any","number","require_multiselect","exports","module","cursor","require_autocomplete","exports","module","require_autocompleteMultiselect","exports","module","cursor","require_confirm","exports","module","require_elements","exports","module","require_prompts","exports","$","sep","require_lib","exports","module","prompts","override","question","answer","require_prompts","exports","module","exports","_a","stringify","getProperty","UsedValueState","exports","_a","exports","error","_a","hash","exports","mergeValues","Type","exports","exports","error","exports","exports","exports","_a","DataType","exports","t","exports","exports","exports","validate","_a","exports","exports","module","exports","module","exports","normalize","exports","t","exports","exports","env","_a","exports","validate","resolveRef","resolve","exports","module","require_utils","exports","module","hex","ipv6","path","exports","module","path","exports","module","normalize","parse","resolve","exports","exports","_a","Ajv","meta","t","regex","exports","env","exports","_a","exports","error","exports","error","exports","exports","error","exports","error","exports","error","exports","error","exports","error","exports","exports","error","t","exports","error","exports","error","exports","exports","error","exports","exports","exports","error","exports","error","exports","exports","hasProperty","error","exports","error","exports","exports","exports","exports","exports","error","exports","exports","error","exports","exports","exports","error","exports","exports","exports","exports","DiscrError","exports","error","_a","required","exports","exports","module","Ajv","exports","module","validate","exports","date","time","regex","exports","_a","stringify","getProperty","UsedValueState","exports","_a","exports","error","_a","hash","exports","mergeValues","Type","exports","exports","error","exports","exports","exports","_a","DataType","exports","t","exports","exports","exports","validate","_a","exports","exports","normalize","exports","t","exports","exports","env","_a","exports","validate","resolveRef","resolve","require_data","exports","module","exports","exports","_a","Ajv","meta","t","regex","exports","env","exports","_a","exports","error","exports","error","exports","exports","error","exports","error","exports","error","exports","error","exports","error","exports","exports","error","t","exports","error","exports","error","exports","exports","error","exports","exports","exports","error","exports","error","exports","exports","hasProperty","error","exports","error","exports","exports","exports","exports","exports","error","exports","exports","error","exports","exports","exports","error","exports","exports","exports","exports","DiscrError","exports","error","_a","required","exports","require_json_schema_draft_07","exports","module","Ajv","exports","module","error","exports","fs","_a","module","exports","exports","module","exports","module","exports","module","t","exports","module","exports","module","exports","module","t","version","exports","module","parse","version","exports","module","parse","version","exports","module","parse","version","exports","module","version","exports","module","parse","version2","exports","module","major","exports","module","exports","module","exports","module","parse","version","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","parse","t","version","major","exports","module","exports","module","cached","t","version","z","set","exports","module","t","version","exports","module","version","exports","module","exports","module","exports","module","exports","module","require_valid","exports","module","exports","module","version","exports","module","version","exports","module","version","exports","module","exports","module","set","version","exports","module","require_semver","exports","module","parse","major","exports","exports","path","exports","yaml","version","error","exports","error","exports","exports","res","exports","res","exports","anchors","exports","exports","t","map","node","exports","path","exports","exports","i","end","exports","json","literal","t","exports","t","stringify","exports","stringify","exports","warn","exports","merge","map","value","exports","merge","stringify","map","exports","exports","stringify","comment","str","exports","map","exports","map","exports","exports","seq","exports","string","exports","exports","exports","exports","exports","int","exports","map","_null","string","int","require_schema","exports","map","exports","exports","pairs","exports","map","omap","require_bool","exports","require_float","exports","require_int","exports","n","int","exports","set","map","exports","res","date","require_schema","exports","map","_null","string","int","merge","set","exports","map","_null","string","int","merge","set","tags","exports","map","string","merge","exports","stringify","exports","version","path","json","res","require_errors","exports","prettifyError","error","exports","exports","exports","exports","exports","map","sep","exports","exports","sep","exports","sep","map","exports","t","exports","value","end","sep","error","exports","sep","ok","exports","error","tag","exports","exports","error","exports","exports","error","exports","exports","stringify","sep","exports","path","exports","exports","i","ch","exports","exports","error","sep","map","start","fs","exports","lineCounter","parseDocument","parse","stringify","require_dist","exports","exports","module","parse","program","CommentHandler","JSXParser","hex","object","JSXClosingElement","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXIdentifier","JSXMemberExpression","JSXAttribute","JSXNamespacedName","JSXOpeningElement","JSXSpreadAttribute","JSXText","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AssignmentExpression","AssignmentPattern","AsyncArrowFunctionExpression","AsyncFunctionDeclaration","AsyncFunctionExpression","AwaitExpression","BinaryExpression","BlockStatement","BreakStatement","CallExpression","CatchClause","ClassBody","ClassDeclaration","ClassExpression","ComputedMemberExpression","ConditionalExpression","ContinueStatement","DebuggerStatement","Directive","DoWhileStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForInStatement","ForOfStatement","ForStatement","init","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportDeclaration","ImportDefaultSpecifier","ImportNamespaceSpecifier","ImportSpecifier","LabeledStatement","Literal","MetaProperty","meta","MethodDefinition","Module","NewExpression","ObjectExpression","ObjectPattern","Property","RegexLiteral","RestElement","ReturnStatement","Script","SequenceExpression","SpreadElement","StaticMemberExpression","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","WithStatement","YieldExpression","Parser","t","assert","ErrorHandler","error","Scanner","Reader","regex","check","Tokenizer","config","require_src","exports","module","t","array","exports","module","map","symbol","define","array","exports","module","symbol","array","i","map","require_parse","exports","module","define","transform","error","t","walk","array","parse","require_stringify","exports","module","join","stringify","require_src","exports","module","parse","stringify","hex","integer","process","env","os","version","import_node_process","import_node_os","tty","string","styles","object","chalk","string","string","init_utilities","init_utilities","exports","module","exports","module","fs","path","os","crypto","version","parse","error","config","require_debug","exports","module","exports","module","exports","module","ansiRegex","string","exports","module","exports","module","exports","module","stripAnsi","stringWidth","string","require_utils","exports","module","stringWidth","pad","url","exports","module","styles","exports","module","exports","module","os","hasFlag","env","translateLevel","supportsColor","version","exports","module","exports","module","text","options","exports","module","exports","module","exports","module","exports","module","exports","module","ansiStyles","stylize","builder","applyStyle","proto","styles","colors","style","init","sequencer","map","exports","module","exports","module","exports","module","warn","exports","module","Table","array","exports","module","string","string","exports","module","exports","module","cliBoxes","string","preserveConsecutiveUppercase","require_ansi_regex","exports","module","require_strip_ansi","exports","module","ansiRegex","string","require_is_fullwidth_code_point","exports","module","require_emoji_regex","exports","module","require_string_width","exports","module","stripAnsi","stringWidth","string","exports","module","stringWidth","ansiAlign","assembleStyles","styles","wrapAnsi16","wrapAnsi256","wrapAnsi16m","ANSI_BACKGROUND_OFFSET","hex","integer","modifierNames","foregroundColorNames","backgroundColorNames","colorNames","ansiStyles","ansi_styles_default","init_ansi_styles","string","columns","exec","init_ansi_styles","url","code","ansi_styles_default","import_node_process","import_cli_boxes","env","process","cliBoxes","ansiAlign","content","columns","path","fs","import_fs_extra","import_node_path","bd","fs","path","import_node_child_process","import_fs_extra","import_node_path","import_yaml","import_node_fs","import_node_path","commander","import_node_child_process","import_fs_extra","import_node_path","path","fs","import_node_crypto","import_fs_extra","import_path","import_child_process","import_node_crypto","import_fs_extra","import_node_path","import_fs_extra","path","fs","crypto","crypto","path","os","fs","error","settingsPath","path","os","fs","crypto","readInstalledVersion","fsSync","parse","import_node_os","import_node_path","import_node_fs","import_node_path","import_node_os","import_node_path","path","os","path","path","import_node_os","import_node_path","import_fs_extra","import_fs_extra","import_node_path","import_fs_extra","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","core_exports","cuid","cuid2","date","decode","decodeAsync","describe","e164","email","emoji","encode","encodeAsync","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","parse","parseAsync","safeDecode","safeDecodeAsync","safeEncode","safeEncodeAsync","safeParse","safeParseAsync","string","ulid","_undefined","uuid","_void","xid","core_exports","_emoji","_null","_undefined","process","initializer","init","proto","_a","array","set","object","path","t","Class","_a","config","base64","base64url","hex","error","issue","path","_a","version","regex","time","_a","inst","result","_a","checks","checkResult","canary","result","_","url","base64","t","r","isObject","allowsEval","results","map","left","right","keyResult","valueResult","output","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","t","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","number","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","error","issue","_a","meta","Class","_emoji","_undefined","_null","Class","issue","codec","process","_a","meta","id","schema","json","regex","file","process","registry","ctx","process","schemas_exports","_default","base64","base64url","bigint","boolean","_catch","cidrv4","cidrv6","cuid","cuid2","date","describe","e164","email","emoji","_enum","guid","hex","hostname","ipv4","ipv6","ksuid","mac","meta","nanoid","_null","nullish","number","string","ulid","_undefined","uuid","_void","xid","checks_exports","date","datetime","duration","time","datetime","date","time","duration","initializer","issue","issues","parse","parseAsync","safeParse","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","proto","parse","safeParse","parseAsync","safeParseAsync","encode","decode","encodeAsync","decodeAsync","safeEncode","safeDecode","safeEncodeAsync","safeDecodeAsync","def","meta","check","_default","_catch","json","_emoji","datetime","date","time","duration","string","email","guid","uuid","emoji","nanoid","cuid","cuid2","ulid","xid","ksuid","ipv4","mac","ipv6","cidrv4","cidrv6","base64","base64url","e164","hostname","hex","regex","number","boolean","bigint","_undefined","json","_null","json","_void","json","date","_enum","string","json","issue","output","nullish","_default","_catch","json","codec","json","describe","meta","string","number","boolean","_null","map","ZodFirstPartyTypeKind","schemas_exports","checks_exports","path","zodSchema","t","objectSchema","version","bigint","boolean","date","number","string","string","number","boolean","bigint","date","fs","import_fs_extra","import_node_path","path","fs","fs","path","import_fs_extra","import_node_path","import_node_crypto","path","fs","path","fs","fs","path","os","import_child_process","import_fs_extra","import_path","import_node_os","path","fs","status","pkg","path","fs","version","env","issue","ok","relTarget","error","alwaysGlobalInstallResult","path","os","map","env","meta","path","error","os","paneQuery","paneId","attachCmd","attachResult","prompts","import_child_process","import_node_path","path","version","ok","t","path","fs","version","import_path","import_node_child_process","import_node_os","import_fs_extra","import_path","import_node_child_process","import_node_fs","import_node_os","PI_AGENT_DIR","path","import_prompts","import_fs_extra","import_path","import_node_child_process","import_node_os","PI_AGENT_DIR","path","path","ensurePnpm","check","sourceDir","targetDir","PI_AGENT_DIR","fs","schema","prompts","PI_AGENT_DIR","path","fs","error","import_path","import_fs_extra","import_prompts","import_child_process","import_fs_extra","import_path","import_node_crypto","import_node_crypto","import_node_path","import_fs_extra","path","fs","crypto","registry","resolvePackageRoot","path","fs","toPosix","stripXtrmPrefix","hashFile","crypto","registry","import_fs_extra","import_os","import_path","path","fs","os","record","import_node_crypto","import_fs_extra","import_node_path","COPY_FILTER","crypto","path","fs","error","import_fs_extra","import_node_os","import_node_path","path","os","fs","import_node_child_process","import_node_path","import_fs_extra","path","fs","run","import_child_process","import_fs_extra","import_os","import_path","import_fs_extra","import_node_os","import_node_path","fs","path","os","check","fs","path","os","import_fs_extra","import_node_path","path","config","optional","fs","import_os","import_path","import_fs_extra","import_node_util","import_node_process","import_node_fs","import_node_path","import_node_crypto","isObject","path","object","isObject","import_node_path","import_node_os","homedir","os","process","path","import_node_fs","import_node_path","import_node_fs","error","options","error","delay","resolve","options","error","import_node_process","error","process","fs","import_node_process","process","process","IS_USER_ROOT","import_node_path","import_node_process","import_node_process","process","process","basename","path","writeFileSync","path","error","array","array","string","AjvModule","ajvFormatsModule","path","assert","set","key","value","object","fs","error","crypto","process","writeFileSync","version","semver","config","os","path","fs","import_path","import_fs_extra","import_fs_extra","import_path","hashFile","fs","import_path","path","fs","error","import_node_child_process","import_fs_extra","import_node_path","yaml","path","fs","config","import_node_child_process","import_fs_extra","import_node_path","run","version","fs","path","major","resolvePackageRoot","path","fs","path","path","fs","error","fs","path","hasInteractiveTTY","prompts","ok","registry","patch","import_prompts","import_path","import_fs_extra","import_node_crypto","import_fs_extra","existingWrapper","t","fs","error","import_path","import_os","os","path","import_child_process","import_util","import_path","import_os","path","os","import_fs_extra","fs","fs","fs","path","error","config","import_path","import_fs_extra","import_path","path","json","check","fs","Table","prompts","import_fs_extra","import_path","import_os","IGNORED_ITEMS","path","fs","fullPath","import_node_child_process","import_node_fs","import_node_path","error","path","issue","fullLog","diffStat","changedFiles","prTitle","prBody","import_node_child_process","import_node_fs","import_node_path","git","meta","error","clearStatuslineClaim","import_prompts","import_node_child_process","branch","runtime","time","prompts","error","import_fs_extra","import_path","import_fs_extra","import_path","basename","regex","fs","path","walk","import_fs_extra","import_path","path","fs","import_node_child_process","import_node_child_process","issue","issue","path","fs","meta","sep","cached","Table","import_node_child_process","import_node_fs","import_node_path","check","resolve","import_node_child_process","import_node_fs","import_node_path","check","import_node_child_process","import_node_fs","import_node_path","map","time","t","import_fs_extra","import_path","import_node_child_process","run","file","extractIssueIds","CONVENTIONAL_SCOPES","path","fs","issue","date","resolve","import_fs_extra","import_node_os","import_node_path","import_node_crypto","import_node_path","path","os","fs","import_fs_extra","import_node_path","import_node_child_process","parseFrontmatter","path","fs","map","file","version","meta","checkDrift","sections","drift","import_fs_extra","import_node_path","import_node_child_process","import_fs_extra","import_node_path","import_yaml","fs","path","yaml","section","path","fs","stripXtrmPrefix","registry","check","Table","issue","unknown","import_fs_extra","import_node_path","resolvePackageRoot","fs","path","error","import_node_child_process","import_node_path","import_fs_extra","import_fs_extra","import_node_path","path","path","fs","import_fs_extra","import_path","boxen","getProjectRoot","resolvePackageRoot","fs","path","registry","import_fs_extra","import_node_os","import_node_path","path","os","fs","path","fs","resolvePackageRoot","error","hash","import_node_fs","import_node_child_process","import_node_path","import_node_fs","import_node_child_process","import_node_path","path","date","file","run","path","file","import_fs_extra","import_node_path","slugify","import_yaml","slugify","path","fs","parseYaml","import_fs_extra","import_node_path","import_yaml","issue","validate","ok","issue","path","fs","parseYaml","validate","import_fs_extra","import_node_path","path","fs","renderHuman","import_fs_extra","import_node_path","import_node_child_process","import_yaml","allText","escape","import_node_child_process","path","fs","readApplyState","reconcile","state","renderReconcileHandoff","parseYaml","validate","bd","import_fs_extra","import_node_path","import_yaml","import_node_child_process","bd","ok","path","fs","parseYaml","renderHuman","import_fs_extra","import_node_path","import_yaml","import_node_child_process","bd","path","fs","parseYaml","import_fs_extra","import_node_path","import_node_crypto","import_node_os","import_child_process","import_fs_extra","import_node_os","import_node_path","path","os","fs","path","restoreBackup","os","fs","resolveLogPath","hashFile","crypto","path","os","fs","tierPrefix","file","hashFile","defaultTierRoot","optionalTierRoot","restoreBackup","error","resolve","isTTY","t","version","version","program"]}